circuschief 1.0.0 → 1.1.0

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 (89) hide show
  1. package/package.json +1 -1
  2. package/packages/server/src/agents/AgentGateway.js +2 -0
  3. package/packages/server/src/agents/adapters/GeminiAdapter.js +105 -0
  4. package/packages/server/src/agents/adapters/cliUtils.js +15 -0
  5. package/packages/server/src/agents/adapters/codexCliRunner.js +1 -8
  6. package/packages/server/src/agents/adapters/geminiCliRunner.js +183 -0
  7. package/packages/server/src/agents/adapters/geminiEventMapper.js +195 -0
  8. package/packages/server/src/db/ProviderRepository.js +4 -2
  9. package/packages/server/src/db/migrations/index.js +9 -0
  10. package/packages/server/src/db/migrations/providerMigrations.js +88 -3
  11. package/packages/server/src/db/seedBaselineData.js +23 -1
  12. package/packages/server/src/schema.sql +1 -1
  13. package/packages/server/src/services/e2eSpawnCapture.js +47 -6
  14. package/packages/server/src/services/geminiSpawnHelper.js +47 -0
  15. package/packages/server/src/services/gitDiff.js +22 -47
  16. package/packages/server/src/services/gitService.js +6 -2
  17. package/packages/server/src/services/providerTestService.js +59 -1
  18. package/packages/server/src/services/queryParamBuilder.js +33 -1
  19. package/packages/server/src/services/sessionExecution.js +4 -0
  20. package/packages/server/src/services/sessionPrompts.js +22 -0
  21. package/packages/server/src/services/sessionProvider.js +41 -1
  22. package/packages/shared/src/constants.js +1 -1
  23. package/packages/shared/src/contracts/providers.js +1 -1
  24. package/packages/shared/src/types.js +7 -0
  25. package/packages/web/dist/assets/{ActiveSessionsView-Cxh8mHmB.js → ActiveSessionsView-EdNxmPmZ.js} +1 -1
  26. package/packages/web/dist/assets/{AgentLogsView-xdfI2bR6.js → AgentLogsView-C2wX0JPP.js} +1 -1
  27. package/packages/web/dist/assets/{ArchiveConfirmModal-DXZYdzHR.js → ArchiveConfirmModal-DJERn5XO.js} +1 -1
  28. package/packages/web/dist/assets/{CommandButtonDetailView-D8xfqLAp.js → CommandButtonDetailView-CBPI8-US.js} +1 -1
  29. package/packages/web/dist/assets/EffortLevelSelector-PaBpUveC.js +1 -0
  30. package/packages/web/dist/assets/{GeneralSettingsView-sPXkLlLy.js → GeneralSettingsView-Dw-x83R0.js} +1 -1
  31. package/packages/web/dist/assets/{InputWithButton-B-o0DgMH.js → InputWithButton-CHHcpF4I.js} +1 -1
  32. package/packages/web/dist/assets/{InterpolationHelp-Dxn1li4l.js → InterpolationHelp-CLNPz8s8.js} +1 -1
  33. package/packages/web/dist/assets/MarkdownEditor-DYi1igfT.js +2 -0
  34. package/packages/web/dist/assets/ModelSelector-Cko_yTO5.js +1 -0
  35. package/packages/web/dist/assets/{ModelSelector-BNYKujL-.css → ModelSelector-Dtwe5xLH.css} +1 -1
  36. package/packages/web/dist/assets/{NewSessionView-BR_COfgW.js → NewSessionView-DwUfBg70.js} +1 -1
  37. package/packages/web/dist/assets/{ProjectEditView-WImU7sNd.js → ProjectEditView-CSbsea3U.js} +1 -1
  38. package/packages/web/dist/assets/{ProjectListView-CYmmAcBD.js → ProjectListView-CEc_LWZL.js} +1 -1
  39. package/packages/web/dist/assets/{ProjectNewView-DEhqw3Jv.js → ProjectNewView-D4U0uRlp.js} +1 -1
  40. package/packages/web/dist/assets/ProvidersView-2KCOiY6Q.css +1 -0
  41. package/packages/web/dist/assets/ProvidersView-CD1j8BOv.js +1 -0
  42. package/packages/web/dist/assets/{QuickResponsesPanel-BqmnTd-D.js → QuickResponsesPanel-Dp39f12o.js} +1 -1
  43. package/packages/web/dist/assets/ResizableTextarea-BWywIqOv.js +1 -0
  44. package/packages/web/dist/assets/ResizableTextarea-DERSH3Wz.css +1 -0
  45. package/packages/web/dist/assets/{SessionCard-Bw77-KwD.js → SessionCard-B6d5ijDW.js} +1 -1
  46. package/packages/web/dist/assets/{SessionDetailView-B59TEkr-.js → SessionDetailView-DWbXdx7A.js} +19 -19
  47. package/packages/web/dist/assets/{SessionDetailView-CKVBnR4T.css → SessionDetailView-ULeIkWS0.css} +1 -1
  48. package/packages/web/dist/assets/{SessionFormOptions-hqijxc0S.js → SessionFormOptions-Dz9ik4Fo.js} +1 -1
  49. package/packages/web/dist/assets/{SessionListView-DYXHM9I-.js → SessionListView-C129buBe.js} +1 -1
  50. package/packages/web/dist/assets/{SessionLogStream-5NfVr9pF.js → SessionLogStream-BvXUNNBZ.js} +1 -1
  51. package/packages/web/dist/assets/{SettingsView-DI8ncOAV.js → SettingsView-DW1NvpX_.js} +1 -1
  52. package/packages/web/dist/assets/SlashCommandWizard-DleYBxrE.js +1 -0
  53. package/packages/web/dist/assets/{SummarySettingsView-C2Qs35mm.js → SummarySettingsView-CLUfcWvf.js} +1 -1
  54. package/packages/web/dist/assets/{TemplateDetailView-zVkIvgtu.js → TemplateDetailView-Cukb205e.js} +1 -1
  55. package/packages/web/dist/assets/{commandButtons-CoU3G4zK.js → commandButtons-DejH0rVN.js} +1 -1
  56. package/packages/web/dist/assets/{index-CLRsVASf.js → index-BD7Y3rBE.js} +1 -1
  57. package/packages/web/dist/assets/{index-uySCcnA_.css → index-Bd20AzX1.css} +1 -1
  58. package/packages/web/dist/assets/{index-CslU0psO.js → index-BgJiarKe.js} +1 -1
  59. package/packages/web/dist/assets/{index-9yF1uCCA.js → index-Bk32fSSG.js} +1 -1
  60. package/packages/web/dist/assets/{index-CAGdsDh7.js → index-BkA6pF2Z.js} +1 -1
  61. package/packages/web/dist/assets/{index-DsjWqc6R.js → index-Cltr-Ldt.js} +1 -1
  62. package/packages/web/dist/assets/{index-DI4NxaWD.js → index-Co-46Tp3.js} +1 -1
  63. package/packages/web/dist/assets/{index-DUa7adFh.js → index-Cpykk857.js} +1 -1
  64. package/packages/web/dist/assets/{index-C7Ww2auW.js → index-CtABl0D1.js} +1 -1
  65. package/packages/web/dist/assets/{index-BKstCaYU.js → index-Cuqk5m9S.js} +1 -1
  66. package/packages/web/dist/assets/{index-C2QFVD7d.js → index-CvXApbVC.js} +15 -15
  67. package/packages/web/dist/assets/{index-BhbH7eOk.js → index-D2gN-xEH.js} +1 -1
  68. package/packages/web/dist/assets/{index-Bo7PdwM5.js → index-Dd3WpmyQ.js} +1 -1
  69. package/packages/web/dist/assets/{index-c99Bo3JV.js → index-Dk6--9rj.js} +1 -1
  70. package/packages/web/dist/assets/{index-BjuRttEY.js → index-MZf7MlPX.js} +3 -3
  71. package/packages/web/dist/assets/{index-CP-SxOlV.js → index-NShCcwfj.js} +1 -1
  72. package/packages/web/dist/assets/{index-rkQx2tso.js → index-hA3VEuSq.js} +1 -1
  73. package/packages/web/dist/assets/{index-DOzONENy.js → index-p0mp3nca.js} +1 -1
  74. package/packages/web/dist/assets/{index-mT1JpxDc.js → index-qntNa5r_.js} +1 -1
  75. package/packages/web/dist/assets/{index-DZBpETI5.js → index-qq9ceNSK.js} +1 -1
  76. package/packages/web/dist/assets/{projectDefaults-B8esIcYq.js → projectDefaults-D9xkp2XR.js} +1 -1
  77. package/packages/web/dist/assets/{projects-C-8PSxKi.js → projects-BvLADGKx.js} +1 -1
  78. package/packages/web/dist/assets/{providers-oXifvvqN.js → providers-DZ-fOa4G.js} +1 -1
  79. package/packages/web/dist/assets/{sessions-Nq5VafSf.js → sessions-DETEyjPI.js} +1 -1
  80. package/packages/web/dist/assets/{settings-DtpuiyT6.js → settings-TWfbahn5.js} +1 -1
  81. package/packages/web/dist/index.html +2 -2
  82. package/packages/web/dist/assets/EffortLevelSelector-D2Hdzc_8.js +0 -1
  83. package/packages/web/dist/assets/MarkdownEditor-D4Kbb-9l.js +0 -2
  84. package/packages/web/dist/assets/ModelSelector-72C7MUH4.js +0 -1
  85. package/packages/web/dist/assets/ProvidersView-XZh3jkmH.js +0 -1
  86. package/packages/web/dist/assets/ProvidersView-bZemq_Rv.css +0 -1
  87. package/packages/web/dist/assets/ResizableTextarea-BQNw5e0C.css +0 -1
  88. package/packages/web/dist/assets/ResizableTextarea-DpWdIAP6.js +0 -1
  89. package/packages/web/dist/assets/SlashCommandWizard-BQ_rMzn-.js +0 -1
@@ -1 +1 @@
1
- import{l as ve,C as je,z as I,E as Ge,G as Oe,n as R,H as Ze,I as et,_ as Ce,a as o,c as a,b as e,F as X,r as te,u as h,J as pe,t as M,i as E,x as oe,g as Re,w as ke,k as Me,o as Pe,m as V,v as ye,d as J,q as we,s as Fe,f as ae,j as me,h as Ke,e as qe,y as Ae,K as Le,A as tt,L as Ve,B as nt}from"./index-C2QFVD7d.js";import{u as Be}from"./projects-C-8PSxKi.js";import{u as $e}from"./sessions-Nq5VafSf.js";import{u as _e,a as He}from"./SessionLogStream-5NfVr9pF.js";import{a as xe}from"./ApiClient-DfbJwzpz.js";import{u as We}from"./commandButtons-CoU3G4zK.js";import{S as Qe}from"./SessionCard-Bw77-KwD.js";import{u as ze}from"./EffortLevelSelector-D2Hdzc_8.js";import{u as st}from"./providers-oXifvvqN.js";import{M as ot}from"./ModelSelector-72C7MUH4.js";import{I as Ye}from"./InterpolationHelp-Dxn1li4l.js";import{R as at}from"./ResizableTextarea-DpWdIAP6.js";import{S as lt}from"./SessionFormOptions-hqijxc0S.js";import{S as rt,a as it}from"./SlashCommandWizard-BQ_rMzn-.js";import{M as dt,A as ut}from"./ArchiveConfirmModal-DXZYdzHR.js";function ct(){const l=je({}),m=je({}),p=je({});async function f(c){const r=c.filter(y=>!l[y.id]&&!m[y.id]).map(y=>y.id);if(r.length!==0){for(const y of r)m[y]=!0,p[y]=!1;try{const y=await xe.getSessionSummariesBatch(r);for(const i of r)y[i]&&(l[i]=y[i]),m[i]=!1}catch(y){console.warn("Failed to fetch summaries batch:",y.message);for(const i of r)p[i]=!0,m[i]=!1}}}async function u(c){var r;m[c]=!0,p[c]=!1;try{const y=await xe.getSessionSummary(c);y&&(l[c]=y)}catch(y){((r=y.response)==null?void 0:r.status)!==404&&(console.warn(`Failed to fetch summary for session ${c}:`,y.message),p[c]=!0)}finally{m[c]=!1}}async function T(c){p[c]=!1,await u(c)}function j(c,r){l[c]=r,m[c]=!1,p[c]=!1}function _(c){delete l[c],delete m[c],delete p[c]}function k(c,r=400){let y=null;const i=ve(c,()=>{clearTimeout(y),y=setTimeout(()=>{const S=c();f(S)},r)});return()=>{clearTimeout(y),i()}}return{summaries:l,loadingSummaries:m,summaryErrors:p,fetchSummariesBatch:f,fetchSummary:u,retryFetchSummary:T,updateSummary:j,cleanupSummary:_,watchSessionsForSummaries:k}}function Je(){const l=$e();function m(c){l.statusFilter===c?l.setStatusFilter(null):l.setStatusFilter(c)}function p(c){l.starredFilter===c?l.setStarredFilter(null):l.setStarredFilter(c)}function f(){l.starredFilter===null?l.setStarredFilter("starred"):l.starredFilter==="starred"?l.setStarredFilter("unstarred"):l.setStarredFilter(null)}const u=I(()=>l.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":l.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred.");function T(){l.scheduledFilter===null?l.setScheduledFilter("scheduled"):l.scheduledFilter==="scheduled"?l.setScheduledFilter("not-scheduled"):l.setScheduledFilter(null)}const j=I(()=>l.scheduledFilter==="scheduled"?"Showing workflows with scheduled sessions. Click to filter non-scheduled.":l.scheduledFilter==="not-scheduled"?"Showing workflows without scheduled sessions. Click to show all.":"Showing all workflows. Click to filter by scheduled."),_=I(()=>{let c=l.groupedSessions;l.starredFilter==="starred"?c=c.filter(g=>g.parent.starred):l.starredFilter==="unstarred"&&(c=c.filter(g=>!g.parent.starred));const r=c.map(g=>({group:g,status:l.getWorkflowAggregatedStatus(g.parent.id)}));let y=r;l.scheduledFilter&&(y=r.filter(({status:g})=>{const $=g.scheduledCount>0;return l.scheduledFilter==="scheduled"?$:!$}));let i=0,S=0;for(const{status:g}of y)g.effectiveStatus==="running"?i++:S++;return{running:i,idle:S}}),k=I(()=>{const c=l.groupedSessions,r=new Map(c.map((i,S)=>[i.parent.id,S]));let y=c;return l.statusFilter&&(y=y.filter(i=>{const g=l.getWorkflowAggregatedStatus(i.parent.id).effectiveStatus;return l.statusFilter==="running"&&g==="running"||l.statusFilter==="idle"&&g==="idle"})),l.starredFilter==="starred"?y=y.filter(i=>i.parent.starred):l.starredFilter==="unstarred"&&(y=y.filter(i=>!i.parent.starred)),l.scheduledFilter&&(y=y.filter(i=>{const g=l.getWorkflowAggregatedStatus(i.parent.id).scheduledCount>0;return!!(l.scheduledFilter==="scheduled"&&g||l.scheduledFilter==="not-scheduled"&&!g)})),y.slice().sort((i,S)=>{const g=r.get(i.parent.id)??999999,$=r.get(S.parent.id)??999999;return g-$})});return{toggleFilter:m,toggleStarredFilter:p,toggleStarFilterIcon:f,starFilterTooltip:u,toggleScheduledFilterIcon:T,scheduledFilterTooltip:j,filteredGroupedSessions:k,statusFilterCounts:_}}function mt(l,m){const p=Be(),f=$e(),u=We(),T=_e(),{fetchSummariesBatch:j,updateSummary:_,cleanupSummary:k}=m,{onReconnect:c}=Ge();function r(s,v,L,O){var z;const G=u.runs[s],le=f.sessions.find(Y=>Y.id===v),ne=(z=le==null?void 0:le.latestCommandRuns)==null?void 0:z.find(Y=>Y.runId===s),Q=(G==null?void 0:G.startedAt)||(ne==null?void 0:ne.startedAt)||Date.now();u.runs[s]||(u.runs[s]={runId:s,buttonId:L,sessionId:v,status:"running",output:"",exitCode:null,startedAt:Q,outputTruncated:!1}),u.appendOutput(s,O),f.updateSessionCommandRun(v,L,{buttonId:L,status:"running",runId:s,startedAt:Q})}function y({runId:s,sessionId:v,buttonId:L,exitCode:O,output:G}){u.runs[s]||(u.runs[s]={runId:s,buttonId:L,sessionId:v,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),u.completeRun(s,O,G);const Z=O===0?"success":"error";f.updateSessionCommandRun(v,L,{buttonId:L,status:Z,exitCode:O,runId:s,completedAt:Date.now()})}function i(s,v,L,O){u.runs[s]||(u.runs[s]={runId:s,buttonId:L,sessionId:v,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),u.errorRun(s,O),f.updateSessionCommandRun(v,L,{buttonId:L,status:"error",runId:s,completedAt:Date.now()})}function S(s,v,L){const{onSessionCreated:O,onSessionUpdated:G,onSessionDeleted:Z,onSessionSummaryUpdated:le,onCommandRunOutput:ne,onCommandRunComplete:Q,onCommandRunError:z,onCommandRunDeleted:Y,onKanbanBoardUpdated:re,onKanbanCardMoved:ie,onKanbanCardAdded:de,onKanbanCardRemoved:ge}=s,x=[];return x.push(O(B=>{v.sessionsStore.addSessionToList(B)})),x.push(G(B=>{v.sessionsStore.updateSession(B)})),x.push(Z(B=>{v.sessionsStore.removeSessionFromList(B),L.cleanupSummary(B)})),x.push(le((B,d)=>{L.updateSummary(B,d)})),x.push(ne(r)),x.push(Q(y)),x.push(z(i)),x.push(Y((B,d,t)=>{v.commandButtonsStore.clearRun(B),v.sessionsStore.removeSessionCommandRun(d,t)})),x.push(re(B=>{v.kanbanStore.handleBoardUpdated(B)})),x.push(ie((B,d,t,n)=>{v.kanbanStore.handleCardMoved(B,d,t,n)})),x.push(de((B,d)=>{v.kanbanStore.handleCardAdded(B,d)})),x.push(ge((B,d)=>{v.kanbanStore.handleCardRemoved(B,d)})),x}const g=[];let $=null;const b=R(!1);let N=0;const H=3e4,w=async()=>{if(document.visibilityState!=="visible")return;const s=Date.now();if(s-N<H)return;N=s;const v=l.value;v&&(await f.fetchSessions(v,{silent:!0}),j(f.sessions))};return document.addEventListener("visibilitychange",w),ve(l,async s=>{if(!s)return;b.value=!1,g.forEach(x=>x()),g.length=0,$&&($(),$=null),await p.fetchProject(s),await f.fetchSessions(s),await u.fetchButtons(s),j(f.sessions),N=Date.now();const{subscribe:v,unsubscribe:L,onSessionCreated:O,onSessionUpdated:G,onSessionDeleted:Z,onSessionSummaryUpdated:le,onCommandRunOutput:ne,onCommandRunComplete:Q,onCommandRunError:z,onCommandRunDeleted:Y,onKanbanBoardUpdated:re,onKanbanCardMoved:ie,onKanbanCardAdded:de,onKanbanCardRemoved:ge}=Ze(s);$=L,v(),g.push(...S({onSessionCreated:O,onSessionUpdated:G,onSessionDeleted:Z,onSessionSummaryUpdated:le,onCommandRunOutput:ne,onCommandRunComplete:Q,onCommandRunError:z,onCommandRunDeleted:Y,onKanbanBoardUpdated:re,onKanbanCardMoved:ie,onKanbanCardAdded:de,onKanbanCardRemoved:ge},{sessionsStore:f,commandButtonsStore:u,kanbanStore:T},{updateSummary:_,cleanupSummary:k})),g.push(c(async()=>{const x=l.value;x&&(N=Date.now(),await f.fetchSessions(x,{silent:!0}),j(f.sessions))}))},{immediate:!0}),Oe(()=>{g.forEach(s=>s()),$&&$(),document.removeEventListener("visibilitychange",w)}),{archivedLoaded:b}}function pt(){const l=$e(),m=He(),p=R({}),f={},u=new Map,T=4;function j(i,S=0){fetch(`/api/sessions/${i}/streaming-state`).then(g=>g.ok?g.json():null).then(g=>{var $;if(g&&(($=g.workLogs)!=null&&$.length||g.partialText||g.thinking)){m.hydrateSessionState(i,g);const b=u.get(i);b&&(clearTimeout(b.timeout),u.delete(i))}else _(i,S)}).catch(()=>{_(i,S)})}function _(i,S=0){if(S>=T||!p.value[i])return;const g=l.sessions.find(N=>N.id===i);if(!g||!["running","starting"].includes(g.status))return;const $=1500*Math.pow(2,S),b=setTimeout(()=>{u.delete(i),j(i,S+1)},$);u.set(i,{count:S,timeout:b})}function k(i){if(p.value[i])return;const S=et(i),g=[];g.push(S.onWorkLog($=>{m.addSessionWorkLog(i,$)})),g.push(S.onPartial($=>{$&&m.setSessionPartialText(i,$)})),g.push(S.onThinkingPartial($=>{$&&m.setPartialThinking($,i)})),g.push(S.onChangesUpdate($=>{m.setSessionFileCount(i,$)})),g.push(S.onStatus($=>{["running","starting"].includes($)?f[i]&&(clearTimeout(f[i]),delete f[i]):f[i]=setTimeout(()=>{delete f[i],m.clearSessionEphemeralState(i)},2e3)})),S.subscribe(),p.value[i]={subscription:S,cleanup:()=>{g.forEach($=>$&&$()),S.unsubscribe()}},j(i)}function c(i){const S=p.value[i];S&&(S.cleanup(),delete p.value[i]),f[i]&&(clearTimeout(f[i]),delete f[i]);const g=u.get(i);g&&(clearTimeout(g.timeout),u.delete(i))}ve(()=>l.sessions.filter(i=>["running","starting"].includes(i.status)).map(i=>i.id),(i,S=[])=>{const g=i.filter(b=>!S.includes(b)),$=S.filter(b=>!i.includes(b));g.forEach(b=>k(b)),$.forEach(b=>c(b))},{immediate:!0});const{onReconnect:r}=Ge(),y=r(()=>{for(const i of Object.keys(p.value))j(i)});return Oe(()=>{Object.keys(p.value).forEach(i=>c(i)),y()}),{activeSubscriptions:p}}const vt={class:"filters-container"},ft={class:"status-filters"},ht=["aria-label","onClick"],bt={class:"filter-label"},gt={class:"filter-count"},yt=["title"],kt={key:0,class:"star-icon"},St={key:1,class:"star-icon star-crossed"},Ct={key:2,class:"star-icon"},$t=["title"],wt={key:0,class:"schedule-icon"},Et={key:1,class:"schedule-icon schedule-crossed"},Tt={key:2,class:"schedule-icon"},_t={__name:"SessionFiltersPanel",props:{showStatusFilters:{type:Boolean,default:!0},showScheduledFilter:{type:Boolean,default:!0}},setup(l){const m=$e(),{toggleFilter:p,toggleStarFilterIcon:f,starFilterTooltip:u,toggleScheduledFilterIcon:T,scheduledFilterTooltip:j,statusFilterCounts:_}=Je();return(k,c)=>(o(),a("div",vt,[e("div",ft,[l.showStatusFilters?(o(),a(X,{key:0},te(["running","idle"],r=>e("button",{key:r,class:pe(["filter-btn",{active:h(m).statusFilter===r,"filter-btn-empty":h(_)[r]===0}]),"aria-label":`${r} (${h(_)[r]})`,onClick:y=>h(p)(r)},[e("span",bt,M(r),1),e("span",gt,M(h(_)[r]),1)],10,ht)),64)):E("",!0),e("button",{class:pe(["filter-btn star-btn",{"star-filter-active":h(m).starredFilter==="starred","star-filter-unstarred":h(m).starredFilter==="unstarred","star-filter-all":h(m).starredFilter===null}]),title:h(u),onClick:c[0]||(c[0]=(...r)=>h(f)&&h(f)(...r))},[h(m).starredFilter==="starred"?(o(),a("span",kt,"⭐")):h(m).starredFilter==="unstarred"?(o(),a("span",St,"⭐")):(o(),a("span",Ct,"☆"))],10,yt),l.showScheduledFilter?(o(),a("button",{key:1,class:pe(["filter-btn schedule-btn",{"schedule-filter-active":h(m).scheduledFilter==="scheduled","schedule-filter-not-scheduled":h(m).scheduledFilter==="not-scheduled","schedule-filter-all":h(m).scheduledFilter===null}]),title:h(j),onClick:c[1]||(c[1]=(...r)=>h(T)&&h(T)(...r))},[h(m).scheduledFilter==="scheduled"?(o(),a("span",wt,"⏰")):h(m).scheduledFilter==="not-scheduled"?(o(),a("span",Et,"⏰")):(o(),a("span",Tt,"⏰"))],10,$t)):E("",!0)])]))}},Ne=Ce(_t,[["__scopeId","data-v-2c9a63d9"]]),jt={key:0,class:"skeleton-list"},Ft={key:1,class:"error-message"},Rt={key:2,class:"empty-state"},Mt={key:3,class:"session-list"},At={key:0,class:"load-more-container"},Lt=["disabled"],xt={key:0},Ot={key:1},Pt={__name:"ArchivedTabContent",props:{summaries:{type:Object,required:!0},loadingSummaries:{type:Object,required:!0},summaryErrors:{type:Object,required:!0}},emits:["retrySummary","unarchive","loadMore"],setup(l){const m=$e(),p=I(()=>{const{total:f,offset:u}=m.archivedPagination;return Math.max(0,f-u)});return(f,u)=>(o(),a("div",null,[h(m).archivedPagination.loading&&h(m).archivedSessions.length===0?(o(),a("div",jt,[(o(),a(X,null,te(3,T=>e("div",{key:T,class:"skeleton card",style:{height:"120px"}})),64))])):h(m).error?(o(),a("div",Ft,M(h(m).error),1)):h(m).archivedSessions.length===0?(o(),a("div",Rt,[...u[3]||(u[3]=[e("p",null,"No archived sessions. Archive completed sessions to keep your session list tidy.",-1)])])):(o(),a("div",Mt,[(o(!0),a(X,null,te(h(m).archivedSessions,T=>(o(),oe(Qe,{key:T.id,session:T,"show-summary":!0,summary:l.summaries[T.id],"summary-loading":l.loadingSummaries[T.id],"summary-error":l.summaryErrors[T.id],"show-unarchive":!0,"kanban-enabled":!1,"pr-url":T.prUrl,"pr-summary":l.summaries[T.id],onRetrySummary:u[0]||(u[0]=j=>f.$emit("retrySummary",j)),onUnarchive:u[1]||(u[1]=j=>f.$emit("unarchive",j))},null,8,["session","summary","summary-loading","summary-error","pr-url","pr-summary"]))),128)),h(m).archivedPagination.hasMore?(o(),a("div",At,[e("button",{class:"btn btn-secondary",disabled:h(m).archivedPagination.loading,onClick:u[2]||(u[2]=T=>f.$emit("loadMore"))},[h(m).archivedPagination.loading?(o(),a("span",xt,"Loading...")):(o(),a("span",Ot,"Load More ("+M(p.value)+" remaining)",1))],8,Lt)])):E("",!0)]))]))}},Bt=Ce(Pt,[["__scopeId","data-v-c0906664"]]),Ut={class:"template-header"},Dt={class:"template-name"},Vt={class:"template-prompt"},Nt={class:"template-meta"},It={key:0,class:"meta-badge meta-badge-global"},Gt={key:1,class:"meta-badge"},Kt={key:2,class:"meta-badge"},qt={key:3,class:"meta-badge"},Ht={key:4,class:"meta-badge"},Wt={key:5,class:"meta-badge meta-badge-chain"},Qt={key:6,class:"meta-badge"},zt={__name:"TemplateCard",props:{template:{type:Object,required:!0},projectId:{type:String,required:!0},isGlobal:{type:Boolean,default:!1},getModelName:{type:Function,required:!0},getTemplateName:{type:Function,required:!0}},setup(l){function m(p,f=100){return p.length<=f?p:`${p.substring(0,f)}...`}return(p,f)=>{const u=Re("router-link");return o(),oe(u,{to:`/projects/${l.projectId}/templates/${l.template.id}`,class:"template-card card","data-testid":`template-card-${l.template.id}`},{default:ke(()=>[e("div",Ut,[e("h4",Dt,M(l.template.name),1)]),e("p",Vt,M(m(l.template.prompt)),1),e("div",Nt,[l.isGlobal?(o(),a("span",It,"Global")):E("",!0),l.template.thinkingEnabled?(o(),a("span",Gt,"Thinking")):E("",!0),l.template.gitBranch?(o(),a("span",Kt,M(l.template.gitBranch),1)):E("",!0),l.template.model?(o(),a("span",qt,M(l.getModelName(l.template.model)),1)):E("",!0),l.template.mode?(o(),a("span",Ht,M(l.template.mode),1)):E("",!0),l.template.nextTemplateId?(o(),a("span",Wt," Chains to: "+M(l.getTemplateName(l.template.nextTemplateId)),1)):E("",!0),l.template.showInQuickResponses?(o(),a("span",Qt,"Quick Response")):E("",!0)])]),_:1},8,["to","data-testid"])}}},Ie=Ce(zt,[["__scopeId","data-v-22bb29b6"]]),Yt={class:"templates-panel"},Jt={class:"templates-header"},Xt={key:0,class:"template-form card","data-testid":"template-form"},Zt={class:"form-group"},en={class:"form-group"},tn={class:"form-group"},nn=["disabled"],sn={class:"form-group"},on=["value"],an={class:"form-group"},ln={class:"form-group"},rn={class:"form-group"},dn={class:"form-group"},un={class:"form-group"},cn={class:"form-check"},mn={class:"form-actions"},pn=["disabled"],vn={key:0,class:"loading-spinner"},fn={key:1,class:"loading-state"},hn={key:2},bn={key:0,class:"template-section"},gn={class:"templates-list"},yn={key:1,class:"template-section"},kn={class:"templates-list"},Sn={key:2,class:"empty-state"},Cn={__name:"TemplatesPanel",props:{projectId:{type:String,required:!0}},setup(l,{expose:m}){const p=l,f=ze(),u=Me(),T=st(),j=R(!1),_=R(!1),k=R({name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null,showInQuickResponses:!1}),c=I(()=>f.loading),r=I(()=>f.projectTemplates),y=I(()=>f.globalTemplates),i=I(()=>[...f.projectTemplates,...f.globalTemplates]);Pe(async()=>{T.providers.length===0&&await T.fetchProviders(),f.fetchProjectTemplates(p.projectId)}),ve(()=>p.projectId,w=>{f.fetchProjectTemplates(w)});function S(w){const s=f.getTemplateById(w);return(s==null?void 0:s.name)||"Unknown"}function g(w){var s;for(const v of T.providers){const L=(s=v.models)==null?void 0:s.find(O=>O.modelId===w);if(L)return v.isBuiltIn?L.displayName:L.modelId}return w}function $(){k.value={name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null,showInQuickResponses:!1}}function b(){j.value=!0}function N(){j.value=!1,$()}async function H(){if(!_.value){_.value=!0;try{const w={name:k.value.name,prompt:k.value.prompt,nextTemplateId:k.value.nextTemplateId||void 0,thinkingEnabled:k.value.thinkingEnabled,gitBranch:k.value.gitBranch||void 0,model:k.value.model,mode:k.value.mode,showInQuickResponses:k.value.showInQuickResponses};k.value.isGlobal?(await f.createGlobalTemplate(w),u.success("Global template created")):(await f.createProjectTemplate(p.projectId,w),u.success("Template created")),N()}catch(w){u.error(w.message)}finally{_.value=!1}}}return m({formData:k,getModelName:g,resetForm:$}),(w,s)=>(o(),a("div",Yt,[e("div",Jt,[s[9]||(s[9]=e("h2",null,"Session Templates",-1)),j.value?E("",!0):(o(),a("button",{key:0,class:"btn btn-primary btn-sm","data-testid":"new-template-btn",onClick:b}," New Template "))]),j.value?(o(),a("div",Xt,[s[25]||(s[25]=e("h3",null,"Create Template",-1)),e("form",{onSubmit:me(H,["prevent"])},[e("div",Zt,[s[10]||(s[10]=e("label",{class:"form-label"},"Name",-1)),V(e("input",{"onUpdate:modelValue":s[0]||(s[0]=v=>k.value.name=v),type:"text",class:"form-input",placeholder:"Template name",required:""},null,512),[[ye,k.value.name]])]),e("div",en,[s[11]||(s[11]=e("label",{class:"form-label"},"Prompt",-1)),V(e("textarea",{"onUpdate:modelValue":s[1]||(s[1]=v=>k.value.prompt=v),class:"form-input form-textarea",placeholder:"Session prompt. Use {{rootSession.summary}} to reference root session data.",rows:"4",required:""},null,512),[[ye,k.value.prompt]]),J(Ye)]),e("div",tn,[s[13]||(s[13]=e("label",{class:"form-label"},"Scope",-1)),V(e("select",{"onUpdate:modelValue":s[2]||(s[2]=v=>k.value.isGlobal=v),class:"form-input",disabled:w.editingTemplate},[...s[12]||(s[12]=[e("option",{value:!1}," Project Only ",-1),e("option",{value:!0}," Global (all projects) ",-1)])],8,nn),[[we,k.value.isGlobal]])]),e("div",sn,[s[15]||(s[15]=e("label",{class:"form-label"},"Next Template (Optional)",-1)),V(e("select",{"onUpdate:modelValue":s[3]||(s[3]=v=>k.value.nextTemplateId=v),class:"form-input"},[s[14]||(s[14]=e("option",{value:null}," None ",-1)),(o(!0),a(X,null,te(i.value,v=>(o(),a("option",{key:v.id,value:v.id},M(v.name)+" "+M(v.projectId?"":"(Global)"),9,on))),128))],512),[[we,k.value.nextTemplateId]]),s[16]||(s[16]=e("p",{class:"form-help"}," Chain another template to run after this one completes. ",-1))]),e("div",an,[s[17]||(s[17]=e("label",{class:"form-label"},"Model",-1)),J(ot,{modelValue:k.value.model,"onUpdate:modelValue":s[4]||(s[4]=v=>k.value.model=v),"allow-empty":!0,"empty-label":"Inherit from root session"},null,8,["modelValue"])]),e("div",ln,[s[19]||(s[19]=e("label",{class:"form-label",for:"create-mode"},"Mode",-1)),V(e("select",{id:"create-mode","onUpdate:modelValue":s[5]||(s[5]=v=>k.value.mode=v),class:"form-input","data-testid":"mode-select"},[...s[18]||(s[18]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:"plan"}," Plan ",-1),e("option",{value:"standard"}," Standard ",-1),e("option",{value:"yolo"}," YOLO ",-1)])],512),[[we,k.value.mode]])]),e("div",rn,[s[21]||(s[21]=e("label",{class:"form-label",for:"create-thinking"},"Extended Thinking",-1)),V(e("select",{id:"create-thinking","onUpdate:modelValue":s[6]||(s[6]=v=>k.value.thinkingEnabled=v),class:"form-input","data-testid":"thinking-select"},[...s[20]||(s[20]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:!0}," Enabled ",-1),e("option",{value:!1}," Disabled ",-1)])],512),[[we,k.value.thinkingEnabled]])]),e("div",dn,[s[22]||(s[22]=e("label",{class:"form-label"},"Git Branch (Optional)",-1)),V(e("input",{"onUpdate:modelValue":s[7]||(s[7]=v=>k.value.gitBranch=v),type:"text",class:"form-input",placeholder:"Leave empty to inherit from root session"},null,512),[[ye,k.value.gitBranch]])]),e("div",un,[e("label",cn,[V(e("input",{"onUpdate:modelValue":s[8]||(s[8]=v=>k.value.showInQuickResponses=v),type:"checkbox"},null,512),[[Fe,k.value.showInQuickResponses]]),s[23]||(s[23]=e("span",null,"Show in Quick Responses",-1))])]),e("div",mn,[e("button",{type:"button",class:"btn","data-testid":"cancel-btn",onClick:N}," Cancel "),e("button",{type:"submit",class:"btn btn-primary",disabled:_.value,"data-testid":"submit-btn"},[_.value?(o(),a("span",vn)):E("",!0),s[24]||(s[24]=ae(" Create ",-1))],8,pn)])],32)])):E("",!0),c.value?(o(),a("div",fn,[...s[26]||(s[26]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading templates... ",-1)])])):(o(),a("div",hn,[r.value.length>0?(o(),a("div",bn,[s[27]||(s[27]=e("h3",{class:"section-title"}," Project Templates ",-1)),e("div",gn,[(o(!0),a(X,null,te(r.value,v=>(o(),oe(Ie,{key:v.id,template:v,"project-id":l.projectId,"get-model-name":g,"get-template-name":S},null,8,["template","project-id"]))),128))])])):E("",!0),y.value.length>0?(o(),a("div",yn,[s[28]||(s[28]=e("h3",{class:"section-title"}," Global Templates ",-1)),e("div",kn,[(o(!0),a(X,null,te(y.value,v=>(o(),oe(Ie,{key:v.id,template:v,"project-id":l.projectId,"is-global":!0,"get-model-name":g,"get-template-name":S},null,8,["template","project-id"]))),128))])])):E("",!0),r.value.length===0&&y.value.length===0&&!j.value?(o(),a("div",Sn,[s[29]||(s[29]=e("p",null,"No templates yet. Create a template to automate session workflows.",-1)),e("button",{class:"btn btn-primary","data-testid":"create-template-btn",onClick:b}," Create Template ")])):E("",!0)]))]))}},$n=Ce(Cn,[["__scopeId","data-v-2c161e09"]]),wn={class:"command-buttons-panel"},En={class:"panel-header"},Tn={key:0,class:"loading-state"},_n={key:1,class:"error-message"},jn={key:2,class:"empty-state"},Fn={key:3,class:"buttons-table"},Rn=["onClick"],Mn={class:"col-label"},An={class:"col-command"},Ln={class:"col-order"},xn=["onClick"],On={class:"modal-body"},Pn={class:"modal-footer"},Bn={__name:"CommandButtonsPanel",props:{projectId:{type:String,required:!0}},setup(l){const m=l,p=Ke(),f=We(),u=R(null),T=c=>c.length>50?`${c.substring(0,50)}...`:c,j=c=>{p.push(`/projects/${m.projectId}/circus-commands/${c.id}`)},_=c=>{u.value=c},k=async()=>{if(u.value)try{await f.deleteButton(m.projectId,u.value.id),u.value=null}catch(c){console.error("Failed to delete button:",c)}};return(c,r)=>{const y=Re("router-link");return o(),a("div",wn,[e("div",En,[r[5]||(r[5]=e("h3",null,"Circus Commands",-1)),J(y,{to:`/projects/${l.projectId}/circus-commands/new`,class:"btn btn-primary btn-sm"},{default:ke(()=>[...r[4]||(r[4]=[ae(" + New Circus Command ",-1)])]),_:1},8,["to"])]),h(f).loading?(o(),a("div",Tn,[...r[6]||(r[6]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading Circus Commands... ",-1)])])):h(f).error?(o(),a("div",_n,M(h(f).error),1)):h(f).buttons.length===0?(o(),a("div",jn,[r[8]||(r[8]=e("p",null,"No Circus Commands configured yet.",-1)),J(y,{to:`/projects/${l.projectId}/circus-commands/new`,class:"btn btn-primary"},{default:ke(()=>[...r[7]||(r[7]=[ae(" Create First Button ",-1)])]),_:1},8,["to"])])):(o(),a("div",Fn,[r[9]||(r[9]=qe('<div class="table-header" data-v-cbd58f30><div class="col-label" data-v-cbd58f30> Label </div><div class="col-command" data-v-cbd58f30> Command </div><div class="col-order" data-v-cbd58f30> Sort Order </div><div class="col-actions" data-v-cbd58f30> Actions </div></div>',1)),(o(!0),a(X,null,te(h(f).buttons,i=>(o(),a("div",{key:i.id,class:"table-row",onClick:S=>j(i)},[e("div",Mn,M(i.label),1),e("div",An,[e("code",null,M(T(i.command)),1)]),e("div",Ln,M(i.sortOrder),1),e("div",{class:"col-actions",onClick:r[0]||(r[0]=me(()=>{},["stop"]))},[e("button",{class:"btn btn-sm btn-outline-danger",onClick:S=>_(i)}," Delete ",8,xn)])],8,Rn))),128))])),u.value?(o(),a("div",{key:4,class:"modal-overlay",onClick:r[3]||(r[3]=i=>u.value=null)},[e("div",{class:"modal-dialog",onClick:r[2]||(r[2]=me(()=>{},["stop"]))},[r[12]||(r[12]=e("div",{class:"modal-header"},[e("h4",null,"Delete Circus Command")],-1)),e("div",On,[e("p",null,[r[10]||(r[10]=ae('Are you sure you want to delete the Circus Command "',-1)),e("strong",null,M(u.value.label),1),r[11]||(r[11]=ae('"?',-1))])]),e("div",Pn,[e("button",{class:"btn btn-outline-secondary",onClick:r[1]||(r[1]=i=>u.value=null)}," Cancel "),e("button",{class:"btn btn-danger",onClick:k}," Delete ")])])])):E("",!0)])}}},Un=Ce(Bn,[["__scopeId","data-v-cbd58f30"]]),Dn={class:"modal-content"},Vn={class:"modal-header"},Nn={class:"modal-title"},In={class:"modal-body"},Gn={class:"form-group"},Kn={class:"sessions-list"},qn={key:0,class:"loading-state"},Hn={key:1,class:"empty-state"},Wn={key:0},Qn={key:1},zn=["onClick"],Yn={class:"session-info"},Jn={class:"session-name"},Xn={class:"session-meta"},Zn={key:0,class:"session-mode"},es=["title"],ts={class:"modal-footer"},ns=["disabled"],ss={__name:"AddSessionToLaneModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},laneId:{type:String,default:""},laneName:{type:String,default:""}},emits:["close","update:isOpen","added"],setup(l,{emit:m}){const p=l,f=m;$e();const u=_e(),T=Me(),j=R(!1),_=R(!1),k=R(""),c=R(null),r=R([]),y=I(()=>{let w=r.value.filter(s=>!u.isSessionOnBoard(s.id));if(w=w.filter(s=>!s.parentSessionId),k.value.trim()){const s=k.value.toLowerCase();w=w.filter(v=>{var L;return(L=v.name)==null?void 0:L.toLowerCase().includes(s)})}return w});function i(w){switch(w){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}}function S(w){return w?new Date(w).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function g(w){c.value=w}function $(){}function b(){f("update:isOpen",!1),f("close"),k.value="",c.value=null}async function N(){if(p.projectId){j.value=!0;try{const w=await xe.getProjectSessions(p.projectId,!1,null);r.value=Array.isArray(w)?w:(w==null?void 0:w.sessions)||[]}catch(w){console.error("Failed to load sessions:",w),T.error("Failed to load sessions"),r.value=[]}finally{j.value=!1}}}async function H(){if(!(!c.value||!p.laneId)){_.value=!0;try{await u.addSessionToBoard(p.projectId,c.value,p.laneId),T.success("Session added to board"),f("added",c.value),b()}catch(w){console.error("Failed to add session to board:",w),T.error(w.message||"Failed to add session to board")}finally{_.value=!1}}}return ve(()=>p.isOpen,w=>{w&&N()},{immediate:!0}),(w,s)=>l.isOpen?(o(),a("div",{key:0,class:"modal-backdrop",onClick:me(b,["self"])},[e("div",Dn,[e("div",Vn,[e("h2",Nn," Add Session to "+M(l.laneName),1),e("button",{class:"close-btn","aria-label":"Close",onClick:b}," × ")]),e("div",In,[e("div",Gn,[s[1]||(s[1]=e("label",{for:"session-search",class:"form-label"},"Search Sessions",-1)),V(e("input",{id:"session-search","onUpdate:modelValue":s[0]||(s[0]=v=>k.value=v),type:"text",class:"form-input",placeholder:"Search by name...",onInput:$},null,544),[[ye,k.value]])]),e("div",Kn,[j.value?(o(),a("div",qn,[...s[2]||(s[2]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading sessions... ",-1)])])):y.value.length===0?(o(),a("div",Hn,[k.value?(o(),a("p",Wn,' No sessions matching "'+M(k.value)+'" ',1)):(o(),a("p",Qn," No available sessions to add. "))])):(o(!0),a(X,{key:2},te(y.value,v=>(o(),a("div",{key:v.id,class:pe(["session-item",{selected:c.value===v.id}]),onClick:L=>g(v.id)},[e("div",{class:pe(["session-status",`status-${v.status}`])},M(i(v.status)),3),e("div",Yn,[e("div",Jn,M(v.name),1),e("div",Xn,[v.mode?(o(),a("span",Zn,M(v.mode),1)):E("",!0),e("span",{class:"session-date",title:v.lastActivityAt?"Last activity":"No activity yet"},M(S(v.lastActivityAt||v.updatedAt||v.createdAt)),9,es)])])],10,zn))),128))])]),e("div",ts,[e("button",{class:"btn btn-secondary",onClick:b}," Cancel "),e("button",{class:"btn btn-primary",disabled:!c.value||_.value,onClick:H},M(_.value?"Adding...":"Add to Lane"),9,ns)])])])):E("",!0)}},Xe=Ce(ss,[["__scopeId","data-v-ab9b7c57"]]),os={class:"modal-content"},as={class:"modal-body"},ls={class:"form-group"},rs={key:0,class:"form-group"},is={class:"lane-position-controls"},ds=["disabled"],us={class:"lane-position-label"},cs=["disabled"],ms={class:"form-group"},ps={class:"automation-options"},vs={class:"radio-option"},fs={class:"radio-option"},hs={class:"radio-option"},bs={key:1,class:"form-group"},gs={key:0,label:"Project Templates"},ys=["value"],ks={key:1,label:"Global Templates"},Ss=["value"],Cs={key:2,class:"form-group"},$s={class:"prompt-actions-row"},ws={key:4,class:"agent-settings-section"},Es={key:0,class:"agent-settings-body"},Ts={class:"form-group"},_s={class:"toggle-switch-row"},js={class:"toggle-switch"},Fs={key:0,class:"reschedule-settings"},Rs={class:"form-group"},Ms={class:"checkbox-option"},As={class:"checkbox-option"},Ls={class:"form-group"},xs={class:"form-group"},Os={class:"form-group"},Ps={class:"form-group"},Bs={class:"danger-zone"},Us=["disabled"],Ds={class:"modal-footer"},Vs=["disabled"],Ns={__name:"LaneSettingsModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},lane:{type:Object,default:null}},emits:["close","update:isOpen","updated","deleted"],setup(l,{emit:m}){const p=l,f=m,u=_e(),T=ze(),j=Me(),_=Be(),k=R(!1),c=R(!1),r=R("none"),y=R(!1),i=R(!1),S=R(null),g=R(-1),$=R(-1),b=je({name:"",onEnterTemplateId:null,onEnterPrompt:"",onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:Le,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}),N=I(()=>T.projectTemplates),H=I(()=>T.globalTemplates),w=I(()=>{const d=_.getProjectById(p.projectId);return(d==null?void 0:d.workingDirectory)||null}),s=I(()=>$.value),v=I(()=>{var d,t;return((t=(d=u.board)==null?void 0:d.lanes)==null?void 0:t.length)||0}),L=I(()=>!(!b.name.trim()||r.value==="template"&&!b.onEnterTemplateId||r.value==="prompt"&&!b.onEnterPrompt.trim()));function O(d){return{onEnterAutoRescheduleEnabled:d.onEnterAutoRescheduleEnabled||!1,onEnterRescheduleDelayMinutes:d.onEnterRescheduleDelayMinutes||Le,onEnterRescheduleOnTokenLimit:d.onEnterRescheduleOnTokenLimit??!0,onEnterRescheduleOnServiceError:d.onEnterRescheduleOnServiceError??!0,onEnterMaxRescheduleCount:d.onEnterMaxRescheduleCount||null,onEnterMaxTotalTokens:d.onEnterMaxTotalTokens||null,onEnterRescheduleAtTokenCount:d.onEnterRescheduleAtTokenCount||null}}function G(d){return{name:d.name||"",onEnterTemplateId:d.onEnterTemplateId||null,onEnterPrompt:d.onEnterPrompt||"",onEnterMode:d.onEnterMode||null,onEnterModel:d.onEnterModel||null,onEnterEffortLevel:d.onEnterEffortLevel||null,onEnterThinkingEnabled:d.onEnterThinkingEnabled??null,...O(d)}}function Z(d){return d.onEnterTemplateId?"template":d.onEnterPrompt?"prompt":"none"}function le(d){return!!(d.onEnterMode||d.onEnterModel||d.onEnterEffortLevel||d.onEnterThinkingEnabled!==null||d.onEnterAutoRescheduleEnabled)}function ne(){var d,t;if(p.lane){const n=G(p.lane);Object.assign(b,n),r.value=Z(p.lane),y.value=le(b);const W=((t=(d=u.board)==null?void 0:d.lanes)==null?void 0:t.findIndex(ue=>ue.id===p.lane.id))??-1;g.value=W,$.value=W}else{const n=G({});Object.assign(b,n),r.value="none",y.value=!1,g.value=-1,$.value=-1}}function Q(){$.value=g.value,f("update:isOpen",!1),f("close")}function z({text:d}){const t=S.value;if(t){const n=t.selectionStart,W=t.selectionEnd,ue=b.onEnterPrompt.substring(0,n),he=b.onEnterPrompt.substring(W);b.onEnterPrompt=ue+d+he,tt(()=>{t.selectionStart=t.selectionEnd=n+d.length,t.focus()})}}function Y(d){const t=$.value;t<0||t===d||($.value=d)}function re(){return{onEnterTemplateId:null,onEnterPrompt:null,onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:Le,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}}function ie(d){return{...re(),onEnterTemplateId:d.onEnterTemplateId,onEnterPrompt:null}}function de(d){return{onEnterTemplateId:null,onEnterPrompt:d.onEnterPrompt.trim(),onEnterMode:d.onEnterMode,onEnterModel:d.onEnterModel,onEnterEffortLevel:d.onEnterEffortLevel,onEnterThinkingEnabled:d.onEnterThinkingEnabled,onEnterAutoRescheduleEnabled:d.onEnterAutoRescheduleEnabled,onEnterRescheduleDelayMinutes:d.onEnterRescheduleDelayMinutes,onEnterRescheduleOnTokenLimit:d.onEnterRescheduleOnTokenLimit,onEnterRescheduleOnServiceError:d.onEnterRescheduleOnServiceError,onEnterMaxRescheduleCount:d.onEnterMaxRescheduleCount,onEnterMaxTotalTokens:d.onEnterMaxTotalTokens,onEnterRescheduleAtTokenCount:d.onEnterRescheduleAtTokenCount}}async function ge(d,t,n,W){var A;if(n===t||n<0)return;const ue=(A=u.board)==null?void 0:A.lanes;if(!ue||ue.length<=1)return;const he=ue.map(C=>C.id);he.splice(t,1),he.splice(n,0,d.id),await u.reorderLanes(W,he)}async function x(){if(!(!p.lane||!L.value)){k.value=!0;try{const d={name:b.name.trim()};r.value==="template"?Object.assign(d,ie(b)):r.value==="prompt"?Object.assign(d,de(b)):Object.assign(d,re()),await ge(p.lane,g.value,$.value,p.projectId),await u.updateLane(p.projectId,p.lane.id,d),j.success("Lane settings saved"),f("updated"),Q()}catch(d){console.error("Failed to save lane settings:",d),j.error(d.message||"Failed to save lane settings")}finally{k.value=!1}}}async function B(){if(p.lane&&confirm(`Are you sure you want to delete the "${p.lane.name}" lane? This cannot be undone.`)){c.value=!0;try{await u.deleteLane(p.projectId,p.lane.id),j.success("Lane deleted"),f("deleted"),Q()}catch(d){console.error("Failed to delete lane:",d),j.error(d.message||"Failed to delete lane")}finally{c.value=!1}}}return ve(()=>p.isOpen,d=>{d&&(ne(),p.projectId&&T.projectTemplates.length===0&&T.globalTemplates.length===0&&T.fetchProjectTemplates(p.projectId))},{immediate:!0}),ve(()=>p.lane,()=>{p.isOpen&&ne()}),ve(()=>{var d;return(d=u.board)==null?void 0:d.lanes},d=>{if(p.isOpen&&p.lane&&d){const t=d.findIndex(n=>n.id===p.lane.id);t>=0&&(g.value=t,$.value=t)}},{deep:!0}),(d,t)=>l.isOpen?(o(),a("div",{key:0,class:"modal-backdrop",onClick:me(Q,["self"])},[e("div",os,[e("div",{class:"modal-header"},[t[22]||(t[22]=e("h2",{class:"modal-title"}," Lane Settings ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:Q}," × ")]),e("div",as,[e("div",ls,[t[23]||(t[23]=e("label",{for:"lane-name",class:"form-label"},"Lane Name",-1)),V(e("input",{id:"lane-name","onUpdate:modelValue":t[0]||(t[0]=n=>b.name=n),type:"text",class:"form-input",placeholder:"Enter lane name"},null,512),[[ye,b.name]])]),v.value>1?(o(),a("div",rs,[t[26]||(t[26]=e("label",{class:"form-label"},"Position",-1)),e("div",is,[e("button",{class:"btn btn-icon",disabled:s.value<=0,title:"Move left",onClick:t[1]||(t[1]=n=>Y(s.value-1))},[...t[24]||(t[24]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,ds),e("span",us,M(s.value+1)+" of "+M(v.value),1),e("button",{class:"btn btn-icon",disabled:s.value>=v.value-1,title:"Move right",onClick:t[2]||(t[2]=n=>Y(s.value+1))},[...t[25]||(t[25]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,cs)])])):E("",!0),e("div",ms,[t[30]||(t[30]=e("label",{class:"form-label"},"On-Enter Automation",-1)),e("div",ps,[e("label",vs,[V(e("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>r.value=n),type:"radio",value:"none",name:"automation"},null,512),[[Ae,r.value]]),t[27]||(t[27]=e("span",null,"None",-1))]),e("label",fs,[V(e("input",{"onUpdate:modelValue":t[4]||(t[4]=n=>r.value=n),type:"radio",value:"template",name:"automation"},null,512),[[Ae,r.value]]),t[28]||(t[28]=e("span",null,"Run a template",-1))]),e("label",hs,[V(e("input",{"onUpdate:modelValue":t[5]||(t[5]=n=>r.value=n),type:"radio",value:"prompt",name:"automation"},null,512),[[Ae,r.value]]),t[29]||(t[29]=e("span",null,"Run a custom prompt",-1))])])]),r.value==="template"?(o(),a("div",bs,[t[32]||(t[32]=e("label",{for:"template-select",class:"form-label"},"Select Template",-1)),V(e("select",{id:"template-select","onUpdate:modelValue":t[6]||(t[6]=n=>b.onEnterTemplateId=n),class:"form-input"},[t[31]||(t[31]=e("option",{value:null}," Select a template... ",-1)),N.value.length?(o(),a("optgroup",gs,[(o(!0),a(X,null,te(N.value,n=>(o(),a("option",{key:n.id,value:n.id},M(n.name),9,ys))),128))])):E("",!0),H.value.length?(o(),a("optgroup",ks,[(o(!0),a(X,null,te(H.value,n=>(o(),a("option",{key:n.id,value:n.id},M(n.name),9,Ss))),128))])):E("",!0)],512),[[we,b.onEnterTemplateId]]),t[33]||(t[33]=e("p",{class:"form-help"}," When a session enters this lane, the selected template will automatically run. ",-1))])):E("",!0),r.value==="prompt"?(o(),a("div",Cs,[t[34]||(t[34]=e("label",{for:"custom-prompt",class:"form-label"},"Custom Prompt",-1)),J(at,{id:"custom-prompt",ref_key:"promptTextareaRef",ref:S,modelValue:b.onEnterPrompt,"onUpdate:modelValue":t[7]||(t[7]=n=>b.onEnterPrompt=n),class:"form-input form-textarea",placeholder:"Enter the prompt to run when a session enters this lane...",rows:"4","min-height":80},null,8,["modelValue"]),e("div",$s,[J(Ye),w.value?(o(),oe(rt,{key:0,onOpen:t[8]||(t[8]=n=>i.value=!0)})):E("",!0)])])):E("",!0),r.value==="prompt"?(o(),oe(it,{key:3,"is-open":i.value,"onUpdate:isOpen":t[9]||(t[9]=n=>i.value=n),"working-directory":w.value||"",mode:"insert","hide-builtin":!0,onInsert:z},null,8,["is-open","working-directory"])):E("",!0),r.value==="prompt"?(o(),a("div",ws,[e("button",{type:"button",class:"section-toggle",onClick:t[10]||(t[10]=n=>y.value=!y.value)},[e("span",{class:pe(["toggle-chevron",{open:y.value}])},"▶",2),t[35]||(t[35]=ae(" Session Settings ",-1))]),y.value?(o(),a("div",Es,[J(lt,{mode:b.onEnterMode||"standard",model:b.onEnterModel,"effort-level":b.onEnterEffortLevel,"thinking-enabled":b.onEnterThinkingEnabled??!1,"hide-start-immediately":!0,"onUpdate:mode":t[11]||(t[11]=n=>b.onEnterMode=n),"onUpdate:model":t[12]||(t[12]=n=>b.onEnterModel=n),"onUpdate:effortLevel":t[13]||(t[13]=n=>b.onEnterEffortLevel=n),"onUpdate:thinkingEnabled":t[14]||(t[14]=n=>b.onEnterThinkingEnabled=n)},null,8,["mode","model","effort-level","thinking-enabled"]),e("div",Ts,[e("label",_s,[e("label",js,[V(e("input",{"onUpdate:modelValue":t[15]||(t[15]=n=>b.onEnterAutoRescheduleEnabled=n),type:"checkbox"},null,512),[[Fe,b.onEnterAutoRescheduleEnabled]]),t[36]||(t[36]=e("span",{class:"toggle-slider"},null,-1))]),t[37]||(t[37]=e("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),b.onEnterAutoRescheduleEnabled?(o(),a("div",Fs,[e("div",Rs,[t[40]||(t[40]=e("p",{class:"settings-label"}," Reschedule Triggers ",-1)),e("label",Ms,[V(e("input",{"onUpdate:modelValue":t[16]||(t[16]=n=>b.onEnterRescheduleOnTokenLimit=n),type:"checkbox"},null,512),[[Fe,b.onEnterRescheduleOnTokenLimit]]),t[38]||(t[38]=e("span",null,"Token limit errors",-1))]),e("label",As,[V(e("input",{"onUpdate:modelValue":t[17]||(t[17]=n=>b.onEnterRescheduleOnServiceError=n),type:"checkbox"},null,512),[[Fe,b.onEnterRescheduleOnServiceError]]),t[39]||(t[39]=e("span",null,"Service unavailability",-1))])]),e("div",Ls,[t[42]||(t[42]=e("label",{class:"form-label"},"Reschedule Delay",-1)),V(e("select",{"onUpdate:modelValue":t[18]||(t[18]=n=>b.onEnterRescheduleDelayMinutes=n),class:"form-input"},[...t[41]||(t[41]=[e("option",{value:5}," 5 minutes ",-1),e("option",{value:15}," 15 minutes ",-1),e("option",{value:30}," 30 minutes ",-1),e("option",{value:60}," 1 hour ",-1),e("option",{value:120}," 2 hours ",-1)])],512),[[we,b.onEnterRescheduleDelayMinutes,void 0,{number:!0}]])]),e("div",xs,[t[43]||(t[43]=e("label",{class:"form-label"},"Max Reschedule Count",-1)),V(e("input",{"onUpdate:modelValue":t[19]||(t[19]=n=>b.onEnterMaxRescheduleCount=n),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,b.onEnterMaxRescheduleCount,void 0,{number:!0}]])]),e("div",Os,[t[44]||(t[44]=e("label",{class:"form-label"},"Max Total Tokens",-1)),V(e("input",{"onUpdate:modelValue":t[20]||(t[20]=n=>b.onEnterMaxTotalTokens=n),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,b.onEnterMaxTotalTokens,void 0,{number:!0}]])]),e("div",Ps,[t[45]||(t[45]=e("label",{class:"form-label"},"Reschedule At Token Count",-1)),V(e("input",{"onUpdate:modelValue":t[21]||(t[21]=n=>b.onEnterRescheduleAtTokenCount=n),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[ye,b.onEnterRescheduleAtTokenCount,void 0,{number:!0}]])])])):E("",!0)])):E("",!0)])):E("",!0),e("div",Bs,[t[46]||(t[46]=e("h4",{class:"danger-title"}," Danger Zone ",-1)),t[47]||(t[47]=e("p",{class:"danger-description"}," Deleting this lane will remove all cards from it. Sessions will remain in the project. ",-1)),e("button",{class:"btn btn-danger",disabled:c.value,onClick:B},M(c.value?"Deleting...":"Delete Lane"),9,Us)])]),e("div",Ds,[e("button",{class:"btn btn-secondary",onClick:Q}," Cancel "),e("button",{class:"btn btn-primary",disabled:k.value||!L.value,onClick:x},M(k.value?"Saving...":"Save Changes"),9,Vs)])])])):E("",!0)}},Is=Ce(Ns,[["__scopeId","data-v-0fd3a197"]]),Gs={class:"kanban-board"},Ks={key:0,class:"kanban-loading"},qs={key:1,class:"kanban-error"},Hs={key:2,class:"kanban-empty"},Ws={key:3,class:"kanban-lanes-container"},Qs=["onDragover","onDrop"],zs={class:"lane-header"},Ys={class:"lane-title-row"},Js={class:"lane-title"},Xs={key:0,class:"lane-automation-indicator",title:"Automation enabled"},Zs={class:"lane-header-actions"},eo={class:"lane-count"},to=["onClick"],no={class:"lane-cards"},so={key:0,class:"card-drop-indicator"},oo=["onDragstart","onDragover"],ao={class:"card-header"},lo={class:"card-title"},ro={class:"card-meta"},io={key:0,class:"card-mode"},uo={class:"card-reorder-arrows"},co=["onClick"],mo=["onClick"],po=["onClick"],vo=["onClick"],fo={key:0,class:"card-drop-indicator"},ho={key:1,class:"lane-empty"},bo={class:"lane-footer"},go={key:0,class:"lane-automation"},yo={key:1,class:"lane-automation"},ko=["onClick"],So={class:"add-lane-container"},Co={key:1,class:"add-lane-form"},$o={__name:"KanbanBoard",props:{projectId:{type:String,required:!0}},setup(l){const m=l,p=_e(),f=R(!1),u=R(""),T=R(null),j=R(null),_=R(null),k=R(-1),c=R(null),r=R(-1),y=R(!1),i=R(null),S=R(!1),g=R(null),$=R(!1),b=R(null),N=R(null),H=I(()=>p.board),w=I(()=>p.loading),s=I(()=>p.error),v=async()=>{try{await p.fetchBoard(m.projectId)}catch(A){console.error("Failed to fetch kanban board:",A)}},L=A=>{switch(A){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}},O=(A,C,K,D)=>{T.value="card",j.value=C,_.value=K,k.value=D;const q=A.dataTransfer;q.effectAllowed="move",q.setData("text/plain",C.id)},G=(A,C,K)=>{if(T.value!=="card")return;const D=A.currentTarget.getBoundingClientRect(),q=D.top+D.height/2,ee=A.clientY<q?K:K+1;C===_.value&&(ee===k.value||ee===k.value+1)?(c.value=null,r.value=-1):(c.value=C,r.value=ee)},Z=()=>{T.value=null,j.value=null,_.value=null,k.value=-1,c.value=null,r.value=-1},le=async(A,C,K)=>{var fe,se;const D=(se=(fe=H.value)==null?void 0:fe.lanes)==null?void 0:se.find(F=>F.id===A);if(!(D!=null&&D.cards))return;let q=K>=0?K:D.cards.length;if(q>C&&q--,q===C)return;const ee=D.cards.map(F=>F.id),[be]=ee.splice(C,1);ee.splice(q,0,be);try{await p.reorderCards(m.projectId,A,ee)}catch(F){console.error("Failed to reorder cards:",F)}},ne=async(A,C)=>{try{await p.moveCard(m.projectId,A,C,{runOnEnterTemplate:!0})}catch(K){console.error("Failed to move card:",K)}},Q=async(A,C)=>{if(A.preventDefault(),T.value!=="card"||!j.value){Z();return}const K=A.dataTransfer.getData("text/plain");if(!K){Z();return}_.value===C?await le(C,k.value,r.value):await ne(K,C),Z()},z=async(A,C,K)=>{var be,fe;const D=(fe=(be=H.value)==null?void 0:be.lanes)==null?void 0:fe.find(se=>se.id===A);if(!(D!=null&&D.cards))return;const q=D.cards.map(se=>se.id),[ee]=q.splice(C,1);q.splice(K,0,ee);try{await p.reorderCards(m.projectId,A,q)}catch(se){console.error("Failed to reorder cards:",se)}},Y=async A=>{if(confirm("Remove this session from the board?"))try{await p.removeCard(m.projectId,A)}catch(C){console.error("Failed to remove card:",C)}},re=async()=>{if(u.value.trim())try{await p.createLane(m.projectId,{name:u.value.trim()}),ie()}catch(A){console.error("Failed to add lane:",A)}},ie=()=>{f.value=!1,u.value=""},de=A=>{i.value=A,y.value=!0},ge=()=>{y.value=!1,i.value=null},x=()=>{},B=A=>{g.value=A,S.value=!0},d=()=>{S.value=!1,g.value=null},t=()=>{},n=()=>{d()},W=(A,C)=>{b.value=A,N.value=C,$.value=!0},ue=()=>{$.value=!1,b.value=null,N.value=null},he=()=>{ue()};return ve(()=>m.projectId,A=>{A&&v()},{immediate:!0}),Pe(()=>{m.projectId&&v()}),(A,C)=>{var D,q,ee,be,fe,se;const K=Re("router-link");return o(),a("div",Gs,[w.value?(o(),a("div",Ks,[...C[5]||(C[5]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading board... ",-1)])])):s.value?(o(),a("div",qs,[C[6]||(C[6]=e("span",{class:"error-icon"},"!",-1)),ae(" "+M(s.value)+" ",1),e("button",{class:"retry-btn",onClick:v}," Retry ")])):H.value?(o(),a("div",Ws,[(o(!0),a(X,null,te(H.value.lanes,F=>{var Ee,Te,P;return o(),a("div",{key:F.id,class:"kanban-lane",onDragover:me(U=>{var ce;return G(U,F.id,((ce=F.cards)==null?void 0:ce.length)||0)},["prevent"]),onDrop:U=>Q(U,F.id)},[e("div",zs,[e("div",Ys,[e("h3",Js,M(F.name),1),F.onEnterTemplateId||F.onEnterPrompt?(o(),a("span",Xs,[...C[8]||(C[8]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):E("",!0)]),e("div",Zs,[e("span",eo,M(((Ee=F.cards)==null?void 0:Ee.length)||0),1),e("button",{class:"lane-settings-btn",title:"Lane settings",onClick:U=>B(F)},[...C[9]||(C[9]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("circle",{cx:"12",cy:"12",r:"3"}),e("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})],-1)])],8,to)])]),e("div",no,[(o(!0),a(X,null,te(F.cards,(U,ce)=>{var Ue,De;return o(),a(X,{key:U.id},[T.value==="card"&&c.value===F.id&&r.value===ce?(o(),a("div",so)):E("",!0),e("div",{class:pe(["kanban-card",{dragging:T.value==="card"&&((Ue=j.value)==null?void 0:Ue.id)===U.id}]),draggable:"true",onDragstart:me(Se=>O(Se,U,F.id,ce),["stop"]),onDragover:me(Se=>G(Se,F.id,ce),["prevent","stop"]),onDragend:Z},[(De=U.sessions)!=null&&De[0]?(o(),oe(K,{key:0,to:`/sessions/${U.sessions[0].id}`,class:"card-link"},{default:ke(()=>[e("div",ao,[e("span",{class:pe(["card-status",`status-${U.sessions[0].status}`])},M(L(U.sessions[0].status)),3),e("h4",lo,M(U.sessions[0].name),1)]),e("div",ro,[U.sessions[0].mode?(o(),a("span",io,M(U.sessions[0].mode),1)):E("",!0)])]),_:2},1032,["to"])):E("",!0),e("div",uo,[ce>0?(o(),a("button",{key:0,class:"card-reorder-btn",title:"Move card up",onClick:me(Se=>z(F.id,ce,ce-1),["prevent"])},[...C[10]||(C[10]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"18 15 12 9 6 15"})],-1)])],8,co)):E("",!0),ce<F.cards.length-1?(o(),a("button",{key:1,class:"card-reorder-btn",title:"Move card down",onClick:me(Se=>z(F.id,ce,ce+1),["prevent"])},[...C[11]||(C[11]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"6 9 12 15 18 9"})],-1)])],8,mo)):E("",!0)]),e("button",{class:"card-move-btn",title:"Move to lane",onClick:me(Se=>W(U,F.id),["prevent"])},[...C[12]||(C[12]=[qe('<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 4 19 4 19 8"></polyline><line x1="14" y1="10" x2="19" y2="4"></line><polyline points="9 20 5 20 5 16"></polyline><line x1="10" y1="14" x2="5" y2="20"></line></svg>',1)])],8,po),e("button",{class:"card-remove-btn",title:"Remove from board",onClick:me(Se=>Y(U.id),["prevent"])}," × ",8,vo)],42,oo)],64)}),128)),T.value==="card"&&c.value===F.id&&r.value===(((Te=F.cards)==null?void 0:Te.length)||0)?(o(),a("div",fo)):E("",!0),(P=F.cards)!=null&&P.length?E("",!0):(o(),a("div",ho,[...C[13]||(C[13]=[e("span",null,"Drop sessions here",-1)])]))]),e("div",bo,[F.onEnterTemplateId?(o(),a("span",go," Auto: triggers template on entry ")):F.onEnterPrompt?(o(),a("span",yo," Auto: runs custom prompt on entry ")):E("",!0),e("button",{class:"add-session-btn",onClick:U=>de(F)}," + Add Session ",8,ko)])],40,Qs)}),128)),e("div",So,[f.value?(o(),a("div",Co,[V(e("input",{"onUpdate:modelValue":C[1]||(C[1]=F=>u.value=F),type:"text",placeholder:"Lane name...",class:"add-lane-input",onKeyup:[Ve(re,["enter"]),Ve(ie,["escape"])]},null,544),[[ye,u.value]]),e("div",{class:"add-lane-actions"},[e("button",{class:"add-lane-confirm",onClick:re}," Add "),e("button",{class:"add-lane-cancel",onClick:ie}," Cancel ")])])):(o(),a("button",{key:0,class:"add-lane-btn",onClick:C[0]||(C[0]=F=>f.value=!0)}," + Add Lane "))])])):(o(),a("div",Hs,[...C[7]||(C[7]=[e("p",null,"Kanban board is not available for this project.",-1)])])),J(Xe,{"is-open":y.value,"project-id":l.projectId,"lane-id":(D=i.value)==null?void 0:D.id,"lane-name":(q=i.value)==null?void 0:q.name,"onUpdate:isOpen":C[2]||(C[2]=F=>y.value=F),onClose:ge,onAdded:x},null,8,["is-open","project-id","lane-id","lane-name"]),J(Is,{"is-open":S.value,"project-id":l.projectId,lane:g.value,"onUpdate:isOpen":C[3]||(C[3]=F=>S.value=F),onClose:d,onUpdated:t,onDeleted:n},null,8,["is-open","project-id","lane"]),J(dt,{"is-open":$.value,"project-id":l.projectId,"card-id":(ee=b.value)==null?void 0:ee.id,"current-lane-id":N.value,"session-name":(se=(fe=(be=b.value)==null?void 0:be.sessions)==null?void 0:fe[0])==null?void 0:se.name,"onUpdate:isOpen":C[4]||(C[4]=F=>$.value=F),onClose:ue,onMoved:he},null,8,["is-open","project-id","card-id","current-lane-id","session-name"])])}}},wo={class:"container"},Eo={class:"page-header"},To={class:"project-title"},_o=["href"],jo={class:"tabs"},Fo={class:"tabs-desktop"},Ro={class:"tabs-left"},Mo={class:"tabs-mobile"},Ao=["value"],Lo={key:0,value:"kanban"},xo={key:2,class:"tab-spacer"},Oo={key:3},Po={key:0,class:"skeleton-list"},Bo={key:1,class:"error-message"},Uo={key:2,class:"empty-state"},Do={key:3,class:"empty-state"},Vo={key:4,class:"session-list"},No={key:5},Io={key:6},Go={class:"modal-content lane-selector-modal"},Ko={class:"modal-body"},qo={class:"modal-description"},Ho={class:"lane-options"},Wo=["onClick"],Qo={class:"lane-option-name"},zo={class:"lane-option-count"},Yo={key:0,class:"empty-lanes"},ma={__name:"SessionListView",setup(l){const m=nt(),p=Ke(),f=Be(),u=$e(),T=_e(),j=He();pt(),j.restoreCollapsedLogState();const _=I(()=>{switch(m.name){case"ArchivedSessions":return"archived";case"ProjectTemplates":return"templates";case"ProjectCommands":return"commands";case"ProjectKanban":return"kanban";default:return"sessions"}});function k(t){const n=m.params.id,W={sessions:`/projects/${n}/sessions`,archived:`/projects/${n}/archived`,templates:`/projects/${n}/templates`,commands:`/projects/${n}/commands`,kanban:`/projects/${n}/kanban`};p.push(W[t])}const c=I(()=>m.params.id),{summaries:r,loadingSummaries:y,summaryErrors:i,fetchSummariesBatch:S,retryFetchSummary:g,updateSummary:$,cleanupSummary:b}=ct(),{filteredGroupedSessions:N}=Je(),{archivedLoaded:H}=mt(c,{fetchSummariesBatch:S,updateSummary:$,cleanupSummary:b});let w=null;ve(()=>u.sessions,()=>{clearTimeout(w),w=setTimeout(()=>{S(u.sessions)},400)}),ve(()=>m.name,async t=>{t==="ArchivedSessions"&&await s()},{immediate:!0}),ve([_,()=>{var t;return(t=f.currentProject)==null?void 0:t.kanbanEnabled}],([t,n])=>{t==="kanban"&&n===!1&&p.replace(`/projects/${m.params.id}/sessions`)},{immediate:!0}),ve(()=>u.starredFilter,async(t,n)=>{_.value==="archived"&&H.value&&t!==n&&(await u.fetchArchivedSessions(c.value,{reset:!0}),S(u.archivedSessions))});async function s(){H.value||(await u.fetchArchivedSessions(c.value,{reset:!0}),H.value=!0,S(u.archivedSessions))}async function v(){await u.loadMoreArchivedSessions(c.value),S(u.archivedSessions)}const L=R(!1),O=R(null),G=R(!1);function Z(t){const n=u.sessions.find(W=>W.id===t);O.value=n||{id:t},L.value=!0}async function le(t){if(O.value){G.value=!0;try{await u.archiveSession(O.value.id,{cleanup:t}),z.success("Session archived")}catch(n){z.error(n.message||"Failed to archive session")}finally{G.value=!1,L.value=!1,O.value=null}}}function ne(){L.value=!1,O.value=null}async function Q(t){try{await u.unarchiveSession(t)}catch(n){console.error("Failed to unarchive session:",n)}}const z=Me(),Y=R(!1),re=R(null),ie=R(!1),de=R(null);function ge(t){de.value=t,ie.value=!0}function x(){ie.value=!1,de.value=null}async function B(t){if(!(!de.value||!t))try{await T.addSessionToBoard(m.params.id,de.value.id,t.id),z.success(`Session added to "${t.name}"`),x()}catch(n){console.error("Failed to add session to board:",n),z.error(n.message||"Failed to add session to board")}}function d(){Y.value=!1,re.value=null}return Pe(()=>{u.restoreStatusFilter(),u.restoreStarredFilter(),u.restoreScheduledFilter();const t=m.params.id;t&&T.fetchBoard(t).catch(n=>{console.warn("Failed to fetch kanban board:",n)})}),Oe(()=>{clearTimeout(w)}),(t,n)=>{var ue,he,A,C,K,D,q,ee,be,fe,se,F,Ee,Te;const W=Re("router-link");return o(),a("div",wo,[e("div",Eo,[e("div",null,[e("div",To,[e("h1",null,M(((ue=h(f).currentProject)==null?void 0:ue.name)||"Sessions"),1),(he=h(f).currentProject)!=null&&he.repoUrl?(o(),a("a",{key:0,href:h(f).currentProject.repoUrl,target:"_blank",rel:"noopener noreferrer",class:"repo-link",title:"Open repository"},[...n[7]||(n[7]=[e("svg",{class:"repo-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6m4-3l6 6m0 0l-6 6m6-6H9"})],-1)])],8,_o)):E("",!0),J(W,{to:`/projects/${h(m).params.id}/edit`,class:"settings-link",title:"Project settings"},{default:ke(()=>[...n[8]||(n[8]=[e("svg",{class:"settings-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M12.22 2h-.44a2 2 0 00-2 2v.18a2 2 0 01-1 1.73l-.43.25a2 2 0 01-2 0l-.15-.08a2 2 0 00-2.73.73l-.22.38a2 2 0 00.73 2.73l.15.1a2 2 0 011 1.72v.51a2 2 0 01-1 1.74l-.15.09a2 2 0 00-.73 2.73l.22.38a2 2 0 002.73.73l.15-.08a2 2 0 012 0l.43.25a2 2 0 011 1.73V20a2 2 0 002 2h.44a2 2 0 002-2v-.18a2 2 0 011-1.73l.43-.25a2 2 0 012 0l.15.08a2 2 0 002.73-.73l.22-.39a2 2 0 00-.73-2.73l-.15-.08a2 2 0 01-1-1.74v-.5a2 2 0 011-1.74l.15-.09a2 2 0 00.73-2.73l-.22-.38a2 2 0 00-2.73-.73l-.15.08a2 2 0 01-2 0l-.43-.25a2 2 0 01-1-1.73V4a2 2 0 00-2-2z"}),e("circle",{cx:"12",cy:"12",r:"3"})],-1)])]),_:1},8,["to"])])]),_.value==="sessions"?(o(),oe(W,{key:0,to:`/projects/${h(m).params.id}/sessions/new`,class:"btn btn-primary mobile-only"},{default:ke(()=>[...n[9]||(n[9]=[ae(" + Session ",-1)])]),_:1},8,["to"])):E("",!0)]),e("div",jo,[e("div",Fo,[e("div",Ro,[e("button",{class:pe(["tab",{active:_.value==="sessions"}]),onClick:n[0]||(n[0]=P=>h(p).push(`/projects/${h(m).params.id}/sessions`))}," Sessions ",2),e("button",{class:pe(["tab",{active:_.value==="archived"}]),onClick:n[1]||(n[1]=P=>h(p).push(`/projects/${h(m).params.id}/archived`))}," Archived ",2),e("button",{class:pe(["tab",{active:_.value==="templates"}]),onClick:n[2]||(n[2]=P=>h(p).push(`/projects/${h(m).params.id}/templates`))}," Templates ",2),e("button",{class:pe(["tab",{active:_.value==="commands"}]),onClick:n[3]||(n[3]=P=>h(p).push(`/projects/${h(m).params.id}/commands`))}," Commands ",2),(A=h(f).currentProject)!=null&&A.kanbanEnabled?(o(),a("button",{key:0,class:pe(["tab",{active:_.value==="kanban"}]),onClick:n[4]||(n[4]=P=>h(p).push(`/projects/${h(m).params.id}/kanban`))},[...n[10]||(n[10]=[ae(" Kanban ",-1),e("span",{class:"ml-1 rounded bg-amber-900/50 px-1.5 py-0.5 text-[10px] font-semibold uppercase text-amber-300"}," Experimental ",-1)])],2)):E("",!0)]),_.value==="sessions"?(o(),oe(W,{key:0,to:`/projects/${h(m).params.id}/sessions/new`,class:"btn btn-primary desktop-only","aria-label":"New Session"},{default:ke(()=>[...n[11]||(n[11]=[e("span",{class:"add-session-label-full"},"+ Session",-1),e("span",{class:"add-session-label-short"},"+",-1)])]),_:1},8,["to"])):E("",!0)]),e("div",Mo,[e("select",{value:_.value,class:"tab-select",onChange:n[5]||(n[5]=P=>k(P.target.value))},[n[12]||(n[12]=e("option",{value:"sessions"}," Sessions ",-1)),n[13]||(n[13]=e("option",{value:"archived"}," Archived ",-1)),n[14]||(n[14]=e("option",{value:"templates"}," Templates ",-1)),n[15]||(n[15]=e("option",{value:"commands"}," Commands ",-1)),(C=h(f).currentProject)!=null&&C.kanbanEnabled?(o(),a("option",Lo," Kanban (experimental) ")):E("",!0)],40,Ao)])]),_.value==="sessions"?(o(),oe(Ne,{key:0,"show-status-filters":!0,"show-scheduled-filter":!0})):_.value==="archived"?(o(),oe(Ne,{key:1,"show-status-filters":!1,"show-scheduled-filter":!1})):(o(),a("div",xo)),_.value==="sessions"?(o(),a("div",Oo,[h(u).loading?(o(),a("div",Po,[(o(),a(X,null,te(3,P=>e("div",{key:P,class:"skeleton card",style:{height:"120px"}})),64))])):h(u).error?(o(),a("div",Bo,M(h(u).error),1)):h(u).sessions.length===0?(o(),a("div",Uo,[n[17]||(n[17]=e("p",null,"No sessions yet. Start a new session to interact with the agent.",-1)),J(W,{to:`/projects/${h(m).params.id}/sessions/new`,class:"btn btn-primary"},{default:ke(()=>[...n[16]||(n[16]=[ae(" New Session ",-1)])]),_:1},8,["to"])])):h(N).length===0?(o(),a("div",Do,[...n[18]||(n[18]=[e("p",null,"No sessions match the current filter.",-1)])])):(o(),a("div",Vo,[(o(!0),a(X,null,te(h(N),P=>{var U;return o(),oe(Qe,{key:P.parent.id,session:P.parent,"show-summary":!0,summary:h(r)[P.parent.id],"summary-loading":h(y)[P.parent.id],"summary-error":h(i)[P.parent.id],"show-archive":!0,"kanban-enabled":((U=h(f).currentProject)==null?void 0:U.kanbanEnabled)??!1,"pr-url":P.parent.prUrl,"pr-summary":h(r)[P.parent.id],onRetrySummary:h(g),onArchive:Z,onAddToBoard:ge},null,8,["session","summary","summary-loading","summary-error","kanban-enabled","pr-url","pr-summary","onRetrySummary"])}),128))]))])):E("",!0),_.value==="archived"?(o(),oe(Bt,{key:4,summaries:h(r),"loading-summaries":h(y),"summary-errors":h(i),onRetrySummary:h(g),onUnarchive:Q,onLoadMore:v},null,8,["summaries","loading-summaries","summary-errors","onRetrySummary"])):E("",!0),_.value==="templates"?(o(),a("div",No,[J($n,{"project-id":h(m).params.id},null,8,["project-id"])])):E("",!0),_.value==="commands"?(o(),a("div",Io,[J(Un,{"project-id":h(m).params.id},null,8,["project-id"])])):E("",!0),_.value==="kanban"?(o(),oe($o,{key:7,"project-id":h(m).params.id},null,8,["project-id"])):E("",!0),J(Xe,{"is-open":Y.value,"project-id":h(m).params.id,"lane-id":(K=re.value)==null?void 0:K.id,"lane-name":(D=re.value)==null?void 0:D.name,"onUpdate:isOpen":n[6]||(n[6]=P=>Y.value=P),onClose:d},null,8,["is-open","project-id","lane-id","lane-name"]),ie.value?(o(),a("div",{key:8,class:"modal-backdrop",onClick:me(x,["self"])},[e("div",Go,[e("div",{class:"modal-header"},[n[19]||(n[19]=e("h2",{class:"modal-title"}," Add to Kanban Board ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:x}," × ")]),e("div",Ko,[e("p",qo,' Select a lane to add "'+M((q=de.value)==null?void 0:q.name)+'" to: ',1),e("div",Ho,[(o(!0),a(X,null,te((ee=h(T).board)==null?void 0:ee.lanes,P=>{var U;return o(),a("button",{key:P.id,class:"lane-option-btn",onClick:ce=>B(P)},[e("span",Qo,M(P.name),1),e("span",zo,M(((U=P.cards)==null?void 0:U.length)||0)+" cards",1)],8,Wo)}),128))]),(fe=(be=h(T).board)==null?void 0:be.lanes)!=null&&fe.length?E("",!0):(o(),a("p",Yo," No lanes available. Go to the Kanban tab to create lanes first. "))]),e("div",{class:"modal-footer"},[e("button",{class:"btn btn-secondary",onClick:x}," Cancel ")])])])):E("",!0),J(ut,{"is-open":L.value,"session-name":((se=O.value)==null?void 0:se.name)||"this session","has-cleanup-script":!!((F=h(f).currentProject)!=null&&F.onSessionDeleted&&((Ee=O.value)!=null&&Ee.gitWorktree)&&!((Te=O.value)!=null&&Te.parentSessionId)),loading:G.value,onConfirm:le,onCancel:ne},null,8,["is-open","session-name","has-cleanup-script","loading"])])}}};export{ma as default};
1
+ import{l as ve,C as je,z as I,E as Ge,G as Oe,n as R,H as Ze,I as et,_ as Ce,a as o,c as a,b as e,F as X,r as te,u as h,J as pe,t as M,i as E,x as oe,g as Re,w as ke,k as Me,o as Pe,m as V,v as ye,d as J,q as we,s as Fe,f as ae,j as me,h as Ke,e as qe,y as Ae,K as Le,A as tt,L as Ve,B as nt}from"./index-CvXApbVC.js";import{u as Be}from"./projects-BvLADGKx.js";import{u as $e}from"./sessions-DETEyjPI.js";import{u as _e,a as He}from"./SessionLogStream-BvXUNNBZ.js";import{a as xe}from"./ApiClient-DfbJwzpz.js";import{u as We}from"./commandButtons-DejH0rVN.js";import{S as Qe}from"./SessionCard-B6d5ijDW.js";import{u as ze}from"./EffortLevelSelector-PaBpUveC.js";import{u as st}from"./providers-DZ-fOa4G.js";import{M as ot}from"./ModelSelector-Cko_yTO5.js";import{I as Ye}from"./InterpolationHelp-CLNPz8s8.js";import{R as at}from"./ResizableTextarea-BWywIqOv.js";import{S as lt}from"./SessionFormOptions-Dz9ik4Fo.js";import{S as rt,a as it}from"./SlashCommandWizard-DleYBxrE.js";import{M as dt,A as ut}from"./ArchiveConfirmModal-DJERn5XO.js";function ct(){const l=je({}),m=je({}),p=je({});async function f(c){const r=c.filter(y=>!l[y.id]&&!m[y.id]).map(y=>y.id);if(r.length!==0){for(const y of r)m[y]=!0,p[y]=!1;try{const y=await xe.getSessionSummariesBatch(r);for(const i of r)y[i]&&(l[i]=y[i]),m[i]=!1}catch(y){console.warn("Failed to fetch summaries batch:",y.message);for(const i of r)p[i]=!0,m[i]=!1}}}async function u(c){var r;m[c]=!0,p[c]=!1;try{const y=await xe.getSessionSummary(c);y&&(l[c]=y)}catch(y){((r=y.response)==null?void 0:r.status)!==404&&(console.warn(`Failed to fetch summary for session ${c}:`,y.message),p[c]=!0)}finally{m[c]=!1}}async function T(c){p[c]=!1,await u(c)}function j(c,r){l[c]=r,m[c]=!1,p[c]=!1}function _(c){delete l[c],delete m[c],delete p[c]}function k(c,r=400){let y=null;const i=ve(c,()=>{clearTimeout(y),y=setTimeout(()=>{const S=c();f(S)},r)});return()=>{clearTimeout(y),i()}}return{summaries:l,loadingSummaries:m,summaryErrors:p,fetchSummariesBatch:f,fetchSummary:u,retryFetchSummary:T,updateSummary:j,cleanupSummary:_,watchSessionsForSummaries:k}}function Je(){const l=$e();function m(c){l.statusFilter===c?l.setStatusFilter(null):l.setStatusFilter(c)}function p(c){l.starredFilter===c?l.setStarredFilter(null):l.setStarredFilter(c)}function f(){l.starredFilter===null?l.setStarredFilter("starred"):l.starredFilter==="starred"?l.setStarredFilter("unstarred"):l.setStarredFilter(null)}const u=I(()=>l.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":l.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred.");function T(){l.scheduledFilter===null?l.setScheduledFilter("scheduled"):l.scheduledFilter==="scheduled"?l.setScheduledFilter("not-scheduled"):l.setScheduledFilter(null)}const j=I(()=>l.scheduledFilter==="scheduled"?"Showing workflows with scheduled sessions. Click to filter non-scheduled.":l.scheduledFilter==="not-scheduled"?"Showing workflows without scheduled sessions. Click to show all.":"Showing all workflows. Click to filter by scheduled."),_=I(()=>{let c=l.groupedSessions;l.starredFilter==="starred"?c=c.filter(g=>g.parent.starred):l.starredFilter==="unstarred"&&(c=c.filter(g=>!g.parent.starred));const r=c.map(g=>({group:g,status:l.getWorkflowAggregatedStatus(g.parent.id)}));let y=r;l.scheduledFilter&&(y=r.filter(({status:g})=>{const $=g.scheduledCount>0;return l.scheduledFilter==="scheduled"?$:!$}));let i=0,S=0;for(const{status:g}of y)g.effectiveStatus==="running"?i++:S++;return{running:i,idle:S}}),k=I(()=>{const c=l.groupedSessions,r=new Map(c.map((i,S)=>[i.parent.id,S]));let y=c;return l.statusFilter&&(y=y.filter(i=>{const g=l.getWorkflowAggregatedStatus(i.parent.id).effectiveStatus;return l.statusFilter==="running"&&g==="running"||l.statusFilter==="idle"&&g==="idle"})),l.starredFilter==="starred"?y=y.filter(i=>i.parent.starred):l.starredFilter==="unstarred"&&(y=y.filter(i=>!i.parent.starred)),l.scheduledFilter&&(y=y.filter(i=>{const g=l.getWorkflowAggregatedStatus(i.parent.id).scheduledCount>0;return!!(l.scheduledFilter==="scheduled"&&g||l.scheduledFilter==="not-scheduled"&&!g)})),y.slice().sort((i,S)=>{const g=r.get(i.parent.id)??999999,$=r.get(S.parent.id)??999999;return g-$})});return{toggleFilter:m,toggleStarredFilter:p,toggleStarFilterIcon:f,starFilterTooltip:u,toggleScheduledFilterIcon:T,scheduledFilterTooltip:j,filteredGroupedSessions:k,statusFilterCounts:_}}function mt(l,m){const p=Be(),f=$e(),u=We(),T=_e(),{fetchSummariesBatch:j,updateSummary:_,cleanupSummary:k}=m,{onReconnect:c}=Ge();function r(s,v,L,O){var z;const G=u.runs[s],le=f.sessions.find(Y=>Y.id===v),ne=(z=le==null?void 0:le.latestCommandRuns)==null?void 0:z.find(Y=>Y.runId===s),Q=(G==null?void 0:G.startedAt)||(ne==null?void 0:ne.startedAt)||Date.now();u.runs[s]||(u.runs[s]={runId:s,buttonId:L,sessionId:v,status:"running",output:"",exitCode:null,startedAt:Q,outputTruncated:!1}),u.appendOutput(s,O),f.updateSessionCommandRun(v,L,{buttonId:L,status:"running",runId:s,startedAt:Q})}function y({runId:s,sessionId:v,buttonId:L,exitCode:O,output:G}){u.runs[s]||(u.runs[s]={runId:s,buttonId:L,sessionId:v,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),u.completeRun(s,O,G);const Z=O===0?"success":"error";f.updateSessionCommandRun(v,L,{buttonId:L,status:Z,exitCode:O,runId:s,completedAt:Date.now()})}function i(s,v,L,O){u.runs[s]||(u.runs[s]={runId:s,buttonId:L,sessionId:v,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),u.errorRun(s,O),f.updateSessionCommandRun(v,L,{buttonId:L,status:"error",runId:s,completedAt:Date.now()})}function S(s,v,L){const{onSessionCreated:O,onSessionUpdated:G,onSessionDeleted:Z,onSessionSummaryUpdated:le,onCommandRunOutput:ne,onCommandRunComplete:Q,onCommandRunError:z,onCommandRunDeleted:Y,onKanbanBoardUpdated:re,onKanbanCardMoved:ie,onKanbanCardAdded:de,onKanbanCardRemoved:ge}=s,x=[];return x.push(O(B=>{v.sessionsStore.addSessionToList(B)})),x.push(G(B=>{v.sessionsStore.updateSession(B)})),x.push(Z(B=>{v.sessionsStore.removeSessionFromList(B),L.cleanupSummary(B)})),x.push(le((B,d)=>{L.updateSummary(B,d)})),x.push(ne(r)),x.push(Q(y)),x.push(z(i)),x.push(Y((B,d,t)=>{v.commandButtonsStore.clearRun(B),v.sessionsStore.removeSessionCommandRun(d,t)})),x.push(re(B=>{v.kanbanStore.handleBoardUpdated(B)})),x.push(ie((B,d,t,n)=>{v.kanbanStore.handleCardMoved(B,d,t,n)})),x.push(de((B,d)=>{v.kanbanStore.handleCardAdded(B,d)})),x.push(ge((B,d)=>{v.kanbanStore.handleCardRemoved(B,d)})),x}const g=[];let $=null;const b=R(!1);let N=0;const H=3e4,w=async()=>{if(document.visibilityState!=="visible")return;const s=Date.now();if(s-N<H)return;N=s;const v=l.value;v&&(await f.fetchSessions(v,{silent:!0}),j(f.sessions))};return document.addEventListener("visibilitychange",w),ve(l,async s=>{if(!s)return;b.value=!1,g.forEach(x=>x()),g.length=0,$&&($(),$=null),await p.fetchProject(s),await f.fetchSessions(s),await u.fetchButtons(s),j(f.sessions),N=Date.now();const{subscribe:v,unsubscribe:L,onSessionCreated:O,onSessionUpdated:G,onSessionDeleted:Z,onSessionSummaryUpdated:le,onCommandRunOutput:ne,onCommandRunComplete:Q,onCommandRunError:z,onCommandRunDeleted:Y,onKanbanBoardUpdated:re,onKanbanCardMoved:ie,onKanbanCardAdded:de,onKanbanCardRemoved:ge}=Ze(s);$=L,v(),g.push(...S({onSessionCreated:O,onSessionUpdated:G,onSessionDeleted:Z,onSessionSummaryUpdated:le,onCommandRunOutput:ne,onCommandRunComplete:Q,onCommandRunError:z,onCommandRunDeleted:Y,onKanbanBoardUpdated:re,onKanbanCardMoved:ie,onKanbanCardAdded:de,onKanbanCardRemoved:ge},{sessionsStore:f,commandButtonsStore:u,kanbanStore:T},{updateSummary:_,cleanupSummary:k})),g.push(c(async()=>{const x=l.value;x&&(N=Date.now(),await f.fetchSessions(x,{silent:!0}),j(f.sessions))}))},{immediate:!0}),Oe(()=>{g.forEach(s=>s()),$&&$(),document.removeEventListener("visibilitychange",w)}),{archivedLoaded:b}}function pt(){const l=$e(),m=He(),p=R({}),f={},u=new Map,T=4;function j(i,S=0){fetch(`/api/sessions/${i}/streaming-state`).then(g=>g.ok?g.json():null).then(g=>{var $;if(g&&(($=g.workLogs)!=null&&$.length||g.partialText||g.thinking)){m.hydrateSessionState(i,g);const b=u.get(i);b&&(clearTimeout(b.timeout),u.delete(i))}else _(i,S)}).catch(()=>{_(i,S)})}function _(i,S=0){if(S>=T||!p.value[i])return;const g=l.sessions.find(N=>N.id===i);if(!g||!["running","starting"].includes(g.status))return;const $=1500*Math.pow(2,S),b=setTimeout(()=>{u.delete(i),j(i,S+1)},$);u.set(i,{count:S,timeout:b})}function k(i){if(p.value[i])return;const S=et(i),g=[];g.push(S.onWorkLog($=>{m.addSessionWorkLog(i,$)})),g.push(S.onPartial($=>{$&&m.setSessionPartialText(i,$)})),g.push(S.onThinkingPartial($=>{$&&m.setPartialThinking($,i)})),g.push(S.onChangesUpdate($=>{m.setSessionFileCount(i,$)})),g.push(S.onStatus($=>{["running","starting"].includes($)?f[i]&&(clearTimeout(f[i]),delete f[i]):f[i]=setTimeout(()=>{delete f[i],m.clearSessionEphemeralState(i)},2e3)})),S.subscribe(),p.value[i]={subscription:S,cleanup:()=>{g.forEach($=>$&&$()),S.unsubscribe()}},j(i)}function c(i){const S=p.value[i];S&&(S.cleanup(),delete p.value[i]),f[i]&&(clearTimeout(f[i]),delete f[i]);const g=u.get(i);g&&(clearTimeout(g.timeout),u.delete(i))}ve(()=>l.sessions.filter(i=>["running","starting"].includes(i.status)).map(i=>i.id),(i,S=[])=>{const g=i.filter(b=>!S.includes(b)),$=S.filter(b=>!i.includes(b));g.forEach(b=>k(b)),$.forEach(b=>c(b))},{immediate:!0});const{onReconnect:r}=Ge(),y=r(()=>{for(const i of Object.keys(p.value))j(i)});return Oe(()=>{Object.keys(p.value).forEach(i=>c(i)),y()}),{activeSubscriptions:p}}const vt={class:"filters-container"},ft={class:"status-filters"},ht=["aria-label","onClick"],bt={class:"filter-label"},gt={class:"filter-count"},yt=["title"],kt={key:0,class:"star-icon"},St={key:1,class:"star-icon star-crossed"},Ct={key:2,class:"star-icon"},$t=["title"],wt={key:0,class:"schedule-icon"},Et={key:1,class:"schedule-icon schedule-crossed"},Tt={key:2,class:"schedule-icon"},_t={__name:"SessionFiltersPanel",props:{showStatusFilters:{type:Boolean,default:!0},showScheduledFilter:{type:Boolean,default:!0}},setup(l){const m=$e(),{toggleFilter:p,toggleStarFilterIcon:f,starFilterTooltip:u,toggleScheduledFilterIcon:T,scheduledFilterTooltip:j,statusFilterCounts:_}=Je();return(k,c)=>(o(),a("div",vt,[e("div",ft,[l.showStatusFilters?(o(),a(X,{key:0},te(["running","idle"],r=>e("button",{key:r,class:pe(["filter-btn",{active:h(m).statusFilter===r,"filter-btn-empty":h(_)[r]===0}]),"aria-label":`${r} (${h(_)[r]})`,onClick:y=>h(p)(r)},[e("span",bt,M(r),1),e("span",gt,M(h(_)[r]),1)],10,ht)),64)):E("",!0),e("button",{class:pe(["filter-btn star-btn",{"star-filter-active":h(m).starredFilter==="starred","star-filter-unstarred":h(m).starredFilter==="unstarred","star-filter-all":h(m).starredFilter===null}]),title:h(u),onClick:c[0]||(c[0]=(...r)=>h(f)&&h(f)(...r))},[h(m).starredFilter==="starred"?(o(),a("span",kt,"⭐")):h(m).starredFilter==="unstarred"?(o(),a("span",St,"⭐")):(o(),a("span",Ct,"☆"))],10,yt),l.showScheduledFilter?(o(),a("button",{key:1,class:pe(["filter-btn schedule-btn",{"schedule-filter-active":h(m).scheduledFilter==="scheduled","schedule-filter-not-scheduled":h(m).scheduledFilter==="not-scheduled","schedule-filter-all":h(m).scheduledFilter===null}]),title:h(j),onClick:c[1]||(c[1]=(...r)=>h(T)&&h(T)(...r))},[h(m).scheduledFilter==="scheduled"?(o(),a("span",wt,"⏰")):h(m).scheduledFilter==="not-scheduled"?(o(),a("span",Et,"⏰")):(o(),a("span",Tt,"⏰"))],10,$t)):E("",!0)])]))}},Ne=Ce(_t,[["__scopeId","data-v-2c9a63d9"]]),jt={key:0,class:"skeleton-list"},Ft={key:1,class:"error-message"},Rt={key:2,class:"empty-state"},Mt={key:3,class:"session-list"},At={key:0,class:"load-more-container"},Lt=["disabled"],xt={key:0},Ot={key:1},Pt={__name:"ArchivedTabContent",props:{summaries:{type:Object,required:!0},loadingSummaries:{type:Object,required:!0},summaryErrors:{type:Object,required:!0}},emits:["retrySummary","unarchive","loadMore"],setup(l){const m=$e(),p=I(()=>{const{total:f,offset:u}=m.archivedPagination;return Math.max(0,f-u)});return(f,u)=>(o(),a("div",null,[h(m).archivedPagination.loading&&h(m).archivedSessions.length===0?(o(),a("div",jt,[(o(),a(X,null,te(3,T=>e("div",{key:T,class:"skeleton card",style:{height:"120px"}})),64))])):h(m).error?(o(),a("div",Ft,M(h(m).error),1)):h(m).archivedSessions.length===0?(o(),a("div",Rt,[...u[3]||(u[3]=[e("p",null,"No archived sessions. Archive completed sessions to keep your session list tidy.",-1)])])):(o(),a("div",Mt,[(o(!0),a(X,null,te(h(m).archivedSessions,T=>(o(),oe(Qe,{key:T.id,session:T,"show-summary":!0,summary:l.summaries[T.id],"summary-loading":l.loadingSummaries[T.id],"summary-error":l.summaryErrors[T.id],"show-unarchive":!0,"kanban-enabled":!1,"pr-url":T.prUrl,"pr-summary":l.summaries[T.id],onRetrySummary:u[0]||(u[0]=j=>f.$emit("retrySummary",j)),onUnarchive:u[1]||(u[1]=j=>f.$emit("unarchive",j))},null,8,["session","summary","summary-loading","summary-error","pr-url","pr-summary"]))),128)),h(m).archivedPagination.hasMore?(o(),a("div",At,[e("button",{class:"btn btn-secondary",disabled:h(m).archivedPagination.loading,onClick:u[2]||(u[2]=T=>f.$emit("loadMore"))},[h(m).archivedPagination.loading?(o(),a("span",xt,"Loading...")):(o(),a("span",Ot,"Load More ("+M(p.value)+" remaining)",1))],8,Lt)])):E("",!0)]))]))}},Bt=Ce(Pt,[["__scopeId","data-v-c0906664"]]),Ut={class:"template-header"},Dt={class:"template-name"},Vt={class:"template-prompt"},Nt={class:"template-meta"},It={key:0,class:"meta-badge meta-badge-global"},Gt={key:1,class:"meta-badge"},Kt={key:2,class:"meta-badge"},qt={key:3,class:"meta-badge"},Ht={key:4,class:"meta-badge"},Wt={key:5,class:"meta-badge meta-badge-chain"},Qt={key:6,class:"meta-badge"},zt={__name:"TemplateCard",props:{template:{type:Object,required:!0},projectId:{type:String,required:!0},isGlobal:{type:Boolean,default:!1},getModelName:{type:Function,required:!0},getTemplateName:{type:Function,required:!0}},setup(l){function m(p,f=100){return p.length<=f?p:`${p.substring(0,f)}...`}return(p,f)=>{const u=Re("router-link");return o(),oe(u,{to:`/projects/${l.projectId}/templates/${l.template.id}`,class:"template-card card","data-testid":`template-card-${l.template.id}`},{default:ke(()=>[e("div",Ut,[e("h4",Dt,M(l.template.name),1)]),e("p",Vt,M(m(l.template.prompt)),1),e("div",Nt,[l.isGlobal?(o(),a("span",It,"Global")):E("",!0),l.template.thinkingEnabled?(o(),a("span",Gt,"Thinking")):E("",!0),l.template.gitBranch?(o(),a("span",Kt,M(l.template.gitBranch),1)):E("",!0),l.template.model?(o(),a("span",qt,M(l.getModelName(l.template.model)),1)):E("",!0),l.template.mode?(o(),a("span",Ht,M(l.template.mode),1)):E("",!0),l.template.nextTemplateId?(o(),a("span",Wt," Chains to: "+M(l.getTemplateName(l.template.nextTemplateId)),1)):E("",!0),l.template.showInQuickResponses?(o(),a("span",Qt,"Quick Response")):E("",!0)])]),_:1},8,["to","data-testid"])}}},Ie=Ce(zt,[["__scopeId","data-v-22bb29b6"]]),Yt={class:"templates-panel"},Jt={class:"templates-header"},Xt={key:0,class:"template-form card","data-testid":"template-form"},Zt={class:"form-group"},en={class:"form-group"},tn={class:"form-group"},nn=["disabled"],sn={class:"form-group"},on=["value"],an={class:"form-group"},ln={class:"form-group"},rn={class:"form-group"},dn={class:"form-group"},un={class:"form-group"},cn={class:"form-check"},mn={class:"form-actions"},pn=["disabled"],vn={key:0,class:"loading-spinner"},fn={key:1,class:"loading-state"},hn={key:2},bn={key:0,class:"template-section"},gn={class:"templates-list"},yn={key:1,class:"template-section"},kn={class:"templates-list"},Sn={key:2,class:"empty-state"},Cn={__name:"TemplatesPanel",props:{projectId:{type:String,required:!0}},setup(l,{expose:m}){const p=l,f=ze(),u=Me(),T=st(),j=R(!1),_=R(!1),k=R({name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null,showInQuickResponses:!1}),c=I(()=>f.loading),r=I(()=>f.projectTemplates),y=I(()=>f.globalTemplates),i=I(()=>[...f.projectTemplates,...f.globalTemplates]);Pe(async()=>{T.providers.length===0&&await T.fetchProviders(),f.fetchProjectTemplates(p.projectId)}),ve(()=>p.projectId,w=>{f.fetchProjectTemplates(w)});function S(w){const s=f.getTemplateById(w);return(s==null?void 0:s.name)||"Unknown"}function g(w){var s;for(const v of T.providers){const L=(s=v.models)==null?void 0:s.find(O=>O.modelId===w);if(L)return v.isBuiltIn?L.displayName:L.modelId}return w}function $(){k.value={name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null,showInQuickResponses:!1}}function b(){j.value=!0}function N(){j.value=!1,$()}async function H(){if(!_.value){_.value=!0;try{const w={name:k.value.name,prompt:k.value.prompt,nextTemplateId:k.value.nextTemplateId||void 0,thinkingEnabled:k.value.thinkingEnabled,gitBranch:k.value.gitBranch||void 0,model:k.value.model,mode:k.value.mode,showInQuickResponses:k.value.showInQuickResponses};k.value.isGlobal?(await f.createGlobalTemplate(w),u.success("Global template created")):(await f.createProjectTemplate(p.projectId,w),u.success("Template created")),N()}catch(w){u.error(w.message)}finally{_.value=!1}}}return m({formData:k,getModelName:g,resetForm:$}),(w,s)=>(o(),a("div",Yt,[e("div",Jt,[s[9]||(s[9]=e("h2",null,"Session Templates",-1)),j.value?E("",!0):(o(),a("button",{key:0,class:"btn btn-primary btn-sm","data-testid":"new-template-btn",onClick:b}," New Template "))]),j.value?(o(),a("div",Xt,[s[25]||(s[25]=e("h3",null,"Create Template",-1)),e("form",{onSubmit:me(H,["prevent"])},[e("div",Zt,[s[10]||(s[10]=e("label",{class:"form-label"},"Name",-1)),V(e("input",{"onUpdate:modelValue":s[0]||(s[0]=v=>k.value.name=v),type:"text",class:"form-input",placeholder:"Template name",required:""},null,512),[[ye,k.value.name]])]),e("div",en,[s[11]||(s[11]=e("label",{class:"form-label"},"Prompt",-1)),V(e("textarea",{"onUpdate:modelValue":s[1]||(s[1]=v=>k.value.prompt=v),class:"form-input form-textarea",placeholder:"Session prompt. Use {{rootSession.summary}} to reference root session data.",rows:"4",required:""},null,512),[[ye,k.value.prompt]]),J(Ye)]),e("div",tn,[s[13]||(s[13]=e("label",{class:"form-label"},"Scope",-1)),V(e("select",{"onUpdate:modelValue":s[2]||(s[2]=v=>k.value.isGlobal=v),class:"form-input",disabled:w.editingTemplate},[...s[12]||(s[12]=[e("option",{value:!1}," Project Only ",-1),e("option",{value:!0}," Global (all projects) ",-1)])],8,nn),[[we,k.value.isGlobal]])]),e("div",sn,[s[15]||(s[15]=e("label",{class:"form-label"},"Next Template (Optional)",-1)),V(e("select",{"onUpdate:modelValue":s[3]||(s[3]=v=>k.value.nextTemplateId=v),class:"form-input"},[s[14]||(s[14]=e("option",{value:null}," None ",-1)),(o(!0),a(X,null,te(i.value,v=>(o(),a("option",{key:v.id,value:v.id},M(v.name)+" "+M(v.projectId?"":"(Global)"),9,on))),128))],512),[[we,k.value.nextTemplateId]]),s[16]||(s[16]=e("p",{class:"form-help"}," Chain another template to run after this one completes. ",-1))]),e("div",an,[s[17]||(s[17]=e("label",{class:"form-label"},"Model",-1)),J(ot,{modelValue:k.value.model,"onUpdate:modelValue":s[4]||(s[4]=v=>k.value.model=v),"allow-empty":!0,"empty-label":"Inherit from root session"},null,8,["modelValue"])]),e("div",ln,[s[19]||(s[19]=e("label",{class:"form-label",for:"create-mode"},"Mode",-1)),V(e("select",{id:"create-mode","onUpdate:modelValue":s[5]||(s[5]=v=>k.value.mode=v),class:"form-input","data-testid":"mode-select"},[...s[18]||(s[18]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:"plan"}," Plan ",-1),e("option",{value:"standard"}," Standard ",-1),e("option",{value:"yolo"}," YOLO ",-1)])],512),[[we,k.value.mode]])]),e("div",rn,[s[21]||(s[21]=e("label",{class:"form-label",for:"create-thinking"},"Extended Thinking",-1)),V(e("select",{id:"create-thinking","onUpdate:modelValue":s[6]||(s[6]=v=>k.value.thinkingEnabled=v),class:"form-input","data-testid":"thinking-select"},[...s[20]||(s[20]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:!0}," Enabled ",-1),e("option",{value:!1}," Disabled ",-1)])],512),[[we,k.value.thinkingEnabled]])]),e("div",dn,[s[22]||(s[22]=e("label",{class:"form-label"},"Git Branch (Optional)",-1)),V(e("input",{"onUpdate:modelValue":s[7]||(s[7]=v=>k.value.gitBranch=v),type:"text",class:"form-input",placeholder:"Leave empty to inherit from root session"},null,512),[[ye,k.value.gitBranch]])]),e("div",un,[e("label",cn,[V(e("input",{"onUpdate:modelValue":s[8]||(s[8]=v=>k.value.showInQuickResponses=v),type:"checkbox"},null,512),[[Fe,k.value.showInQuickResponses]]),s[23]||(s[23]=e("span",null,"Show in Quick Responses",-1))])]),e("div",mn,[e("button",{type:"button",class:"btn","data-testid":"cancel-btn",onClick:N}," Cancel "),e("button",{type:"submit",class:"btn btn-primary",disabled:_.value,"data-testid":"submit-btn"},[_.value?(o(),a("span",vn)):E("",!0),s[24]||(s[24]=ae(" Create ",-1))],8,pn)])],32)])):E("",!0),c.value?(o(),a("div",fn,[...s[26]||(s[26]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading templates... ",-1)])])):(o(),a("div",hn,[r.value.length>0?(o(),a("div",bn,[s[27]||(s[27]=e("h3",{class:"section-title"}," Project Templates ",-1)),e("div",gn,[(o(!0),a(X,null,te(r.value,v=>(o(),oe(Ie,{key:v.id,template:v,"project-id":l.projectId,"get-model-name":g,"get-template-name":S},null,8,["template","project-id"]))),128))])])):E("",!0),y.value.length>0?(o(),a("div",yn,[s[28]||(s[28]=e("h3",{class:"section-title"}," Global Templates ",-1)),e("div",kn,[(o(!0),a(X,null,te(y.value,v=>(o(),oe(Ie,{key:v.id,template:v,"project-id":l.projectId,"is-global":!0,"get-model-name":g,"get-template-name":S},null,8,["template","project-id"]))),128))])])):E("",!0),r.value.length===0&&y.value.length===0&&!j.value?(o(),a("div",Sn,[s[29]||(s[29]=e("p",null,"No templates yet. Create a template to automate session workflows.",-1)),e("button",{class:"btn btn-primary","data-testid":"create-template-btn",onClick:b}," Create Template ")])):E("",!0)]))]))}},$n=Ce(Cn,[["__scopeId","data-v-2c161e09"]]),wn={class:"command-buttons-panel"},En={class:"panel-header"},Tn={key:0,class:"loading-state"},_n={key:1,class:"error-message"},jn={key:2,class:"empty-state"},Fn={key:3,class:"buttons-table"},Rn=["onClick"],Mn={class:"col-label"},An={class:"col-command"},Ln={class:"col-order"},xn=["onClick"],On={class:"modal-body"},Pn={class:"modal-footer"},Bn={__name:"CommandButtonsPanel",props:{projectId:{type:String,required:!0}},setup(l){const m=l,p=Ke(),f=We(),u=R(null),T=c=>c.length>50?`${c.substring(0,50)}...`:c,j=c=>{p.push(`/projects/${m.projectId}/circus-commands/${c.id}`)},_=c=>{u.value=c},k=async()=>{if(u.value)try{await f.deleteButton(m.projectId,u.value.id),u.value=null}catch(c){console.error("Failed to delete button:",c)}};return(c,r)=>{const y=Re("router-link");return o(),a("div",wn,[e("div",En,[r[5]||(r[5]=e("h3",null,"Circus Commands",-1)),J(y,{to:`/projects/${l.projectId}/circus-commands/new`,class:"btn btn-primary btn-sm"},{default:ke(()=>[...r[4]||(r[4]=[ae(" + New Circus Command ",-1)])]),_:1},8,["to"])]),h(f).loading?(o(),a("div",Tn,[...r[6]||(r[6]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading Circus Commands... ",-1)])])):h(f).error?(o(),a("div",_n,M(h(f).error),1)):h(f).buttons.length===0?(o(),a("div",jn,[r[8]||(r[8]=e("p",null,"No Circus Commands configured yet.",-1)),J(y,{to:`/projects/${l.projectId}/circus-commands/new`,class:"btn btn-primary"},{default:ke(()=>[...r[7]||(r[7]=[ae(" Create First Button ",-1)])]),_:1},8,["to"])])):(o(),a("div",Fn,[r[9]||(r[9]=qe('<div class="table-header" data-v-cbd58f30><div class="col-label" data-v-cbd58f30> Label </div><div class="col-command" data-v-cbd58f30> Command </div><div class="col-order" data-v-cbd58f30> Sort Order </div><div class="col-actions" data-v-cbd58f30> Actions </div></div>',1)),(o(!0),a(X,null,te(h(f).buttons,i=>(o(),a("div",{key:i.id,class:"table-row",onClick:S=>j(i)},[e("div",Mn,M(i.label),1),e("div",An,[e("code",null,M(T(i.command)),1)]),e("div",Ln,M(i.sortOrder),1),e("div",{class:"col-actions",onClick:r[0]||(r[0]=me(()=>{},["stop"]))},[e("button",{class:"btn btn-sm btn-outline-danger",onClick:S=>_(i)}," Delete ",8,xn)])],8,Rn))),128))])),u.value?(o(),a("div",{key:4,class:"modal-overlay",onClick:r[3]||(r[3]=i=>u.value=null)},[e("div",{class:"modal-dialog",onClick:r[2]||(r[2]=me(()=>{},["stop"]))},[r[12]||(r[12]=e("div",{class:"modal-header"},[e("h4",null,"Delete Circus Command")],-1)),e("div",On,[e("p",null,[r[10]||(r[10]=ae('Are you sure you want to delete the Circus Command "',-1)),e("strong",null,M(u.value.label),1),r[11]||(r[11]=ae('"?',-1))])]),e("div",Pn,[e("button",{class:"btn btn-outline-secondary",onClick:r[1]||(r[1]=i=>u.value=null)}," Cancel "),e("button",{class:"btn btn-danger",onClick:k}," Delete ")])])])):E("",!0)])}}},Un=Ce(Bn,[["__scopeId","data-v-cbd58f30"]]),Dn={class:"modal-content"},Vn={class:"modal-header"},Nn={class:"modal-title"},In={class:"modal-body"},Gn={class:"form-group"},Kn={class:"sessions-list"},qn={key:0,class:"loading-state"},Hn={key:1,class:"empty-state"},Wn={key:0},Qn={key:1},zn=["onClick"],Yn={class:"session-info"},Jn={class:"session-name"},Xn={class:"session-meta"},Zn={key:0,class:"session-mode"},es=["title"],ts={class:"modal-footer"},ns=["disabled"],ss={__name:"AddSessionToLaneModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},laneId:{type:String,default:""},laneName:{type:String,default:""}},emits:["close","update:isOpen","added"],setup(l,{emit:m}){const p=l,f=m;$e();const u=_e(),T=Me(),j=R(!1),_=R(!1),k=R(""),c=R(null),r=R([]),y=I(()=>{let w=r.value.filter(s=>!u.isSessionOnBoard(s.id));if(w=w.filter(s=>!s.parentSessionId),k.value.trim()){const s=k.value.toLowerCase();w=w.filter(v=>{var L;return(L=v.name)==null?void 0:L.toLowerCase().includes(s)})}return w});function i(w){switch(w){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}}function S(w){return w?new Date(w).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function g(w){c.value=w}function $(){}function b(){f("update:isOpen",!1),f("close"),k.value="",c.value=null}async function N(){if(p.projectId){j.value=!0;try{const w=await xe.getProjectSessions(p.projectId,!1,null);r.value=Array.isArray(w)?w:(w==null?void 0:w.sessions)||[]}catch(w){console.error("Failed to load sessions:",w),T.error("Failed to load sessions"),r.value=[]}finally{j.value=!1}}}async function H(){if(!(!c.value||!p.laneId)){_.value=!0;try{await u.addSessionToBoard(p.projectId,c.value,p.laneId),T.success("Session added to board"),f("added",c.value),b()}catch(w){console.error("Failed to add session to board:",w),T.error(w.message||"Failed to add session to board")}finally{_.value=!1}}}return ve(()=>p.isOpen,w=>{w&&N()},{immediate:!0}),(w,s)=>l.isOpen?(o(),a("div",{key:0,class:"modal-backdrop",onClick:me(b,["self"])},[e("div",Dn,[e("div",Vn,[e("h2",Nn," Add Session to "+M(l.laneName),1),e("button",{class:"close-btn","aria-label":"Close",onClick:b}," × ")]),e("div",In,[e("div",Gn,[s[1]||(s[1]=e("label",{for:"session-search",class:"form-label"},"Search Sessions",-1)),V(e("input",{id:"session-search","onUpdate:modelValue":s[0]||(s[0]=v=>k.value=v),type:"text",class:"form-input",placeholder:"Search by name...",onInput:$},null,544),[[ye,k.value]])]),e("div",Kn,[j.value?(o(),a("div",qn,[...s[2]||(s[2]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading sessions... ",-1)])])):y.value.length===0?(o(),a("div",Hn,[k.value?(o(),a("p",Wn,' No sessions matching "'+M(k.value)+'" ',1)):(o(),a("p",Qn," No available sessions to add. "))])):(o(!0),a(X,{key:2},te(y.value,v=>(o(),a("div",{key:v.id,class:pe(["session-item",{selected:c.value===v.id}]),onClick:L=>g(v.id)},[e("div",{class:pe(["session-status",`status-${v.status}`])},M(i(v.status)),3),e("div",Yn,[e("div",Jn,M(v.name),1),e("div",Xn,[v.mode?(o(),a("span",Zn,M(v.mode),1)):E("",!0),e("span",{class:"session-date",title:v.lastActivityAt?"Last activity":"No activity yet"},M(S(v.lastActivityAt||v.updatedAt||v.createdAt)),9,es)])])],10,zn))),128))])]),e("div",ts,[e("button",{class:"btn btn-secondary",onClick:b}," Cancel "),e("button",{class:"btn btn-primary",disabled:!c.value||_.value,onClick:H},M(_.value?"Adding...":"Add to Lane"),9,ns)])])])):E("",!0)}},Xe=Ce(ss,[["__scopeId","data-v-ab9b7c57"]]),os={class:"modal-content"},as={class:"modal-body"},ls={class:"form-group"},rs={key:0,class:"form-group"},is={class:"lane-position-controls"},ds=["disabled"],us={class:"lane-position-label"},cs=["disabled"],ms={class:"form-group"},ps={class:"automation-options"},vs={class:"radio-option"},fs={class:"radio-option"},hs={class:"radio-option"},bs={key:1,class:"form-group"},gs={key:0,label:"Project Templates"},ys=["value"],ks={key:1,label:"Global Templates"},Ss=["value"],Cs={key:2,class:"form-group"},$s={class:"prompt-actions-row"},ws={key:4,class:"agent-settings-section"},Es={key:0,class:"agent-settings-body"},Ts={class:"form-group"},_s={class:"toggle-switch-row"},js={class:"toggle-switch"},Fs={key:0,class:"reschedule-settings"},Rs={class:"form-group"},Ms={class:"checkbox-option"},As={class:"checkbox-option"},Ls={class:"form-group"},xs={class:"form-group"},Os={class:"form-group"},Ps={class:"form-group"},Bs={class:"danger-zone"},Us=["disabled"],Ds={class:"modal-footer"},Vs=["disabled"],Ns={__name:"LaneSettingsModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},lane:{type:Object,default:null}},emits:["close","update:isOpen","updated","deleted"],setup(l,{emit:m}){const p=l,f=m,u=_e(),T=ze(),j=Me(),_=Be(),k=R(!1),c=R(!1),r=R("none"),y=R(!1),i=R(!1),S=R(null),g=R(-1),$=R(-1),b=je({name:"",onEnterTemplateId:null,onEnterPrompt:"",onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:Le,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}),N=I(()=>T.projectTemplates),H=I(()=>T.globalTemplates),w=I(()=>{const d=_.getProjectById(p.projectId);return(d==null?void 0:d.workingDirectory)||null}),s=I(()=>$.value),v=I(()=>{var d,t;return((t=(d=u.board)==null?void 0:d.lanes)==null?void 0:t.length)||0}),L=I(()=>!(!b.name.trim()||r.value==="template"&&!b.onEnterTemplateId||r.value==="prompt"&&!b.onEnterPrompt.trim()));function O(d){return{onEnterAutoRescheduleEnabled:d.onEnterAutoRescheduleEnabled||!1,onEnterRescheduleDelayMinutes:d.onEnterRescheduleDelayMinutes||Le,onEnterRescheduleOnTokenLimit:d.onEnterRescheduleOnTokenLimit??!0,onEnterRescheduleOnServiceError:d.onEnterRescheduleOnServiceError??!0,onEnterMaxRescheduleCount:d.onEnterMaxRescheduleCount||null,onEnterMaxTotalTokens:d.onEnterMaxTotalTokens||null,onEnterRescheduleAtTokenCount:d.onEnterRescheduleAtTokenCount||null}}function G(d){return{name:d.name||"",onEnterTemplateId:d.onEnterTemplateId||null,onEnterPrompt:d.onEnterPrompt||"",onEnterMode:d.onEnterMode||null,onEnterModel:d.onEnterModel||null,onEnterEffortLevel:d.onEnterEffortLevel||null,onEnterThinkingEnabled:d.onEnterThinkingEnabled??null,...O(d)}}function Z(d){return d.onEnterTemplateId?"template":d.onEnterPrompt?"prompt":"none"}function le(d){return!!(d.onEnterMode||d.onEnterModel||d.onEnterEffortLevel||d.onEnterThinkingEnabled!==null||d.onEnterAutoRescheduleEnabled)}function ne(){var d,t;if(p.lane){const n=G(p.lane);Object.assign(b,n),r.value=Z(p.lane),y.value=le(b);const W=((t=(d=u.board)==null?void 0:d.lanes)==null?void 0:t.findIndex(ue=>ue.id===p.lane.id))??-1;g.value=W,$.value=W}else{const n=G({});Object.assign(b,n),r.value="none",y.value=!1,g.value=-1,$.value=-1}}function Q(){$.value=g.value,f("update:isOpen",!1),f("close")}function z({text:d}){const t=S.value;if(t){const n=t.selectionStart,W=t.selectionEnd,ue=b.onEnterPrompt.substring(0,n),he=b.onEnterPrompt.substring(W);b.onEnterPrompt=ue+d+he,tt(()=>{t.selectionStart=t.selectionEnd=n+d.length,t.focus()})}}function Y(d){const t=$.value;t<0||t===d||($.value=d)}function re(){return{onEnterTemplateId:null,onEnterPrompt:null,onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:Le,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}}function ie(d){return{...re(),onEnterTemplateId:d.onEnterTemplateId,onEnterPrompt:null}}function de(d){return{onEnterTemplateId:null,onEnterPrompt:d.onEnterPrompt.trim(),onEnterMode:d.onEnterMode,onEnterModel:d.onEnterModel,onEnterEffortLevel:d.onEnterEffortLevel,onEnterThinkingEnabled:d.onEnterThinkingEnabled,onEnterAutoRescheduleEnabled:d.onEnterAutoRescheduleEnabled,onEnterRescheduleDelayMinutes:d.onEnterRescheduleDelayMinutes,onEnterRescheduleOnTokenLimit:d.onEnterRescheduleOnTokenLimit,onEnterRescheduleOnServiceError:d.onEnterRescheduleOnServiceError,onEnterMaxRescheduleCount:d.onEnterMaxRescheduleCount,onEnterMaxTotalTokens:d.onEnterMaxTotalTokens,onEnterRescheduleAtTokenCount:d.onEnterRescheduleAtTokenCount}}async function ge(d,t,n,W){var A;if(n===t||n<0)return;const ue=(A=u.board)==null?void 0:A.lanes;if(!ue||ue.length<=1)return;const he=ue.map(C=>C.id);he.splice(t,1),he.splice(n,0,d.id),await u.reorderLanes(W,he)}async function x(){if(!(!p.lane||!L.value)){k.value=!0;try{const d={name:b.name.trim()};r.value==="template"?Object.assign(d,ie(b)):r.value==="prompt"?Object.assign(d,de(b)):Object.assign(d,re()),await ge(p.lane,g.value,$.value,p.projectId),await u.updateLane(p.projectId,p.lane.id,d),j.success("Lane settings saved"),f("updated"),Q()}catch(d){console.error("Failed to save lane settings:",d),j.error(d.message||"Failed to save lane settings")}finally{k.value=!1}}}async function B(){if(p.lane&&confirm(`Are you sure you want to delete the "${p.lane.name}" lane? This cannot be undone.`)){c.value=!0;try{await u.deleteLane(p.projectId,p.lane.id),j.success("Lane deleted"),f("deleted"),Q()}catch(d){console.error("Failed to delete lane:",d),j.error(d.message||"Failed to delete lane")}finally{c.value=!1}}}return ve(()=>p.isOpen,d=>{d&&(ne(),p.projectId&&T.projectTemplates.length===0&&T.globalTemplates.length===0&&T.fetchProjectTemplates(p.projectId))},{immediate:!0}),ve(()=>p.lane,()=>{p.isOpen&&ne()}),ve(()=>{var d;return(d=u.board)==null?void 0:d.lanes},d=>{if(p.isOpen&&p.lane&&d){const t=d.findIndex(n=>n.id===p.lane.id);t>=0&&(g.value=t,$.value=t)}},{deep:!0}),(d,t)=>l.isOpen?(o(),a("div",{key:0,class:"modal-backdrop",onClick:me(Q,["self"])},[e("div",os,[e("div",{class:"modal-header"},[t[22]||(t[22]=e("h2",{class:"modal-title"}," Lane Settings ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:Q}," × ")]),e("div",as,[e("div",ls,[t[23]||(t[23]=e("label",{for:"lane-name",class:"form-label"},"Lane Name",-1)),V(e("input",{id:"lane-name","onUpdate:modelValue":t[0]||(t[0]=n=>b.name=n),type:"text",class:"form-input",placeholder:"Enter lane name"},null,512),[[ye,b.name]])]),v.value>1?(o(),a("div",rs,[t[26]||(t[26]=e("label",{class:"form-label"},"Position",-1)),e("div",is,[e("button",{class:"btn btn-icon",disabled:s.value<=0,title:"Move left",onClick:t[1]||(t[1]=n=>Y(s.value-1))},[...t[24]||(t[24]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,ds),e("span",us,M(s.value+1)+" of "+M(v.value),1),e("button",{class:"btn btn-icon",disabled:s.value>=v.value-1,title:"Move right",onClick:t[2]||(t[2]=n=>Y(s.value+1))},[...t[25]||(t[25]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,cs)])])):E("",!0),e("div",ms,[t[30]||(t[30]=e("label",{class:"form-label"},"On-Enter Automation",-1)),e("div",ps,[e("label",vs,[V(e("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>r.value=n),type:"radio",value:"none",name:"automation"},null,512),[[Ae,r.value]]),t[27]||(t[27]=e("span",null,"None",-1))]),e("label",fs,[V(e("input",{"onUpdate:modelValue":t[4]||(t[4]=n=>r.value=n),type:"radio",value:"template",name:"automation"},null,512),[[Ae,r.value]]),t[28]||(t[28]=e("span",null,"Run a template",-1))]),e("label",hs,[V(e("input",{"onUpdate:modelValue":t[5]||(t[5]=n=>r.value=n),type:"radio",value:"prompt",name:"automation"},null,512),[[Ae,r.value]]),t[29]||(t[29]=e("span",null,"Run a custom prompt",-1))])])]),r.value==="template"?(o(),a("div",bs,[t[32]||(t[32]=e("label",{for:"template-select",class:"form-label"},"Select Template",-1)),V(e("select",{id:"template-select","onUpdate:modelValue":t[6]||(t[6]=n=>b.onEnterTemplateId=n),class:"form-input"},[t[31]||(t[31]=e("option",{value:null}," Select a template... ",-1)),N.value.length?(o(),a("optgroup",gs,[(o(!0),a(X,null,te(N.value,n=>(o(),a("option",{key:n.id,value:n.id},M(n.name),9,ys))),128))])):E("",!0),H.value.length?(o(),a("optgroup",ks,[(o(!0),a(X,null,te(H.value,n=>(o(),a("option",{key:n.id,value:n.id},M(n.name),9,Ss))),128))])):E("",!0)],512),[[we,b.onEnterTemplateId]]),t[33]||(t[33]=e("p",{class:"form-help"}," When a session enters this lane, the selected template will automatically run. ",-1))])):E("",!0),r.value==="prompt"?(o(),a("div",Cs,[t[34]||(t[34]=e("label",{for:"custom-prompt",class:"form-label"},"Custom Prompt",-1)),J(at,{id:"custom-prompt",ref_key:"promptTextareaRef",ref:S,modelValue:b.onEnterPrompt,"onUpdate:modelValue":t[7]||(t[7]=n=>b.onEnterPrompt=n),class:"form-input form-textarea",placeholder:"Enter the prompt to run when a session enters this lane...",rows:"4","min-height":80},null,8,["modelValue"]),e("div",$s,[J(Ye),w.value?(o(),oe(rt,{key:0,onOpen:t[8]||(t[8]=n=>i.value=!0)})):E("",!0)])])):E("",!0),r.value==="prompt"?(o(),oe(it,{key:3,"is-open":i.value,"onUpdate:isOpen":t[9]||(t[9]=n=>i.value=n),"working-directory":w.value||"",mode:"insert","hide-builtin":!0,onInsert:z},null,8,["is-open","working-directory"])):E("",!0),r.value==="prompt"?(o(),a("div",ws,[e("button",{type:"button",class:"section-toggle",onClick:t[10]||(t[10]=n=>y.value=!y.value)},[e("span",{class:pe(["toggle-chevron",{open:y.value}])},"▶",2),t[35]||(t[35]=ae(" Session Settings ",-1))]),y.value?(o(),a("div",Es,[J(lt,{mode:b.onEnterMode||"standard",model:b.onEnterModel,"effort-level":b.onEnterEffortLevel,"thinking-enabled":b.onEnterThinkingEnabled??!1,"hide-start-immediately":!0,"onUpdate:mode":t[11]||(t[11]=n=>b.onEnterMode=n),"onUpdate:model":t[12]||(t[12]=n=>b.onEnterModel=n),"onUpdate:effortLevel":t[13]||(t[13]=n=>b.onEnterEffortLevel=n),"onUpdate:thinkingEnabled":t[14]||(t[14]=n=>b.onEnterThinkingEnabled=n)},null,8,["mode","model","effort-level","thinking-enabled"]),e("div",Ts,[e("label",_s,[e("label",js,[V(e("input",{"onUpdate:modelValue":t[15]||(t[15]=n=>b.onEnterAutoRescheduleEnabled=n),type:"checkbox"},null,512),[[Fe,b.onEnterAutoRescheduleEnabled]]),t[36]||(t[36]=e("span",{class:"toggle-slider"},null,-1))]),t[37]||(t[37]=e("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),b.onEnterAutoRescheduleEnabled?(o(),a("div",Fs,[e("div",Rs,[t[40]||(t[40]=e("p",{class:"settings-label"}," Reschedule Triggers ",-1)),e("label",Ms,[V(e("input",{"onUpdate:modelValue":t[16]||(t[16]=n=>b.onEnterRescheduleOnTokenLimit=n),type:"checkbox"},null,512),[[Fe,b.onEnterRescheduleOnTokenLimit]]),t[38]||(t[38]=e("span",null,"Token limit errors",-1))]),e("label",As,[V(e("input",{"onUpdate:modelValue":t[17]||(t[17]=n=>b.onEnterRescheduleOnServiceError=n),type:"checkbox"},null,512),[[Fe,b.onEnterRescheduleOnServiceError]]),t[39]||(t[39]=e("span",null,"Service unavailability",-1))])]),e("div",Ls,[t[42]||(t[42]=e("label",{class:"form-label"},"Reschedule Delay",-1)),V(e("select",{"onUpdate:modelValue":t[18]||(t[18]=n=>b.onEnterRescheduleDelayMinutes=n),class:"form-input"},[...t[41]||(t[41]=[e("option",{value:5}," 5 minutes ",-1),e("option",{value:15}," 15 minutes ",-1),e("option",{value:30}," 30 minutes ",-1),e("option",{value:60}," 1 hour ",-1),e("option",{value:120}," 2 hours ",-1)])],512),[[we,b.onEnterRescheduleDelayMinutes,void 0,{number:!0}]])]),e("div",xs,[t[43]||(t[43]=e("label",{class:"form-label"},"Max Reschedule Count",-1)),V(e("input",{"onUpdate:modelValue":t[19]||(t[19]=n=>b.onEnterMaxRescheduleCount=n),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,b.onEnterMaxRescheduleCount,void 0,{number:!0}]])]),e("div",Os,[t[44]||(t[44]=e("label",{class:"form-label"},"Max Total Tokens",-1)),V(e("input",{"onUpdate:modelValue":t[20]||(t[20]=n=>b.onEnterMaxTotalTokens=n),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,b.onEnterMaxTotalTokens,void 0,{number:!0}]])]),e("div",Ps,[t[45]||(t[45]=e("label",{class:"form-label"},"Reschedule At Token Count",-1)),V(e("input",{"onUpdate:modelValue":t[21]||(t[21]=n=>b.onEnterRescheduleAtTokenCount=n),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[ye,b.onEnterRescheduleAtTokenCount,void 0,{number:!0}]])])])):E("",!0)])):E("",!0)])):E("",!0),e("div",Bs,[t[46]||(t[46]=e("h4",{class:"danger-title"}," Danger Zone ",-1)),t[47]||(t[47]=e("p",{class:"danger-description"}," Deleting this lane will remove all cards from it. Sessions will remain in the project. ",-1)),e("button",{class:"btn btn-danger",disabled:c.value,onClick:B},M(c.value?"Deleting...":"Delete Lane"),9,Us)])]),e("div",Ds,[e("button",{class:"btn btn-secondary",onClick:Q}," Cancel "),e("button",{class:"btn btn-primary",disabled:k.value||!L.value,onClick:x},M(k.value?"Saving...":"Save Changes"),9,Vs)])])])):E("",!0)}},Is=Ce(Ns,[["__scopeId","data-v-0fd3a197"]]),Gs={class:"kanban-board"},Ks={key:0,class:"kanban-loading"},qs={key:1,class:"kanban-error"},Hs={key:2,class:"kanban-empty"},Ws={key:3,class:"kanban-lanes-container"},Qs=["onDragover","onDrop"],zs={class:"lane-header"},Ys={class:"lane-title-row"},Js={class:"lane-title"},Xs={key:0,class:"lane-automation-indicator",title:"Automation enabled"},Zs={class:"lane-header-actions"},eo={class:"lane-count"},to=["onClick"],no={class:"lane-cards"},so={key:0,class:"card-drop-indicator"},oo=["onDragstart","onDragover"],ao={class:"card-header"},lo={class:"card-title"},ro={class:"card-meta"},io={key:0,class:"card-mode"},uo={class:"card-reorder-arrows"},co=["onClick"],mo=["onClick"],po=["onClick"],vo=["onClick"],fo={key:0,class:"card-drop-indicator"},ho={key:1,class:"lane-empty"},bo={class:"lane-footer"},go={key:0,class:"lane-automation"},yo={key:1,class:"lane-automation"},ko=["onClick"],So={class:"add-lane-container"},Co={key:1,class:"add-lane-form"},$o={__name:"KanbanBoard",props:{projectId:{type:String,required:!0}},setup(l){const m=l,p=_e(),f=R(!1),u=R(""),T=R(null),j=R(null),_=R(null),k=R(-1),c=R(null),r=R(-1),y=R(!1),i=R(null),S=R(!1),g=R(null),$=R(!1),b=R(null),N=R(null),H=I(()=>p.board),w=I(()=>p.loading),s=I(()=>p.error),v=async()=>{try{await p.fetchBoard(m.projectId)}catch(A){console.error("Failed to fetch kanban board:",A)}},L=A=>{switch(A){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}},O=(A,C,K,D)=>{T.value="card",j.value=C,_.value=K,k.value=D;const q=A.dataTransfer;q.effectAllowed="move",q.setData("text/plain",C.id)},G=(A,C,K)=>{if(T.value!=="card")return;const D=A.currentTarget.getBoundingClientRect(),q=D.top+D.height/2,ee=A.clientY<q?K:K+1;C===_.value&&(ee===k.value||ee===k.value+1)?(c.value=null,r.value=-1):(c.value=C,r.value=ee)},Z=()=>{T.value=null,j.value=null,_.value=null,k.value=-1,c.value=null,r.value=-1},le=async(A,C,K)=>{var fe,se;const D=(se=(fe=H.value)==null?void 0:fe.lanes)==null?void 0:se.find(F=>F.id===A);if(!(D!=null&&D.cards))return;let q=K>=0?K:D.cards.length;if(q>C&&q--,q===C)return;const ee=D.cards.map(F=>F.id),[be]=ee.splice(C,1);ee.splice(q,0,be);try{await p.reorderCards(m.projectId,A,ee)}catch(F){console.error("Failed to reorder cards:",F)}},ne=async(A,C)=>{try{await p.moveCard(m.projectId,A,C,{runOnEnterTemplate:!0})}catch(K){console.error("Failed to move card:",K)}},Q=async(A,C)=>{if(A.preventDefault(),T.value!=="card"||!j.value){Z();return}const K=A.dataTransfer.getData("text/plain");if(!K){Z();return}_.value===C?await le(C,k.value,r.value):await ne(K,C),Z()},z=async(A,C,K)=>{var be,fe;const D=(fe=(be=H.value)==null?void 0:be.lanes)==null?void 0:fe.find(se=>se.id===A);if(!(D!=null&&D.cards))return;const q=D.cards.map(se=>se.id),[ee]=q.splice(C,1);q.splice(K,0,ee);try{await p.reorderCards(m.projectId,A,q)}catch(se){console.error("Failed to reorder cards:",se)}},Y=async A=>{if(confirm("Remove this session from the board?"))try{await p.removeCard(m.projectId,A)}catch(C){console.error("Failed to remove card:",C)}},re=async()=>{if(u.value.trim())try{await p.createLane(m.projectId,{name:u.value.trim()}),ie()}catch(A){console.error("Failed to add lane:",A)}},ie=()=>{f.value=!1,u.value=""},de=A=>{i.value=A,y.value=!0},ge=()=>{y.value=!1,i.value=null},x=()=>{},B=A=>{g.value=A,S.value=!0},d=()=>{S.value=!1,g.value=null},t=()=>{},n=()=>{d()},W=(A,C)=>{b.value=A,N.value=C,$.value=!0},ue=()=>{$.value=!1,b.value=null,N.value=null},he=()=>{ue()};return ve(()=>m.projectId,A=>{A&&v()},{immediate:!0}),Pe(()=>{m.projectId&&v()}),(A,C)=>{var D,q,ee,be,fe,se;const K=Re("router-link");return o(),a("div",Gs,[w.value?(o(),a("div",Ks,[...C[5]||(C[5]=[e("span",{class:"loading-spinner"},null,-1),ae(" Loading board... ",-1)])])):s.value?(o(),a("div",qs,[C[6]||(C[6]=e("span",{class:"error-icon"},"!",-1)),ae(" "+M(s.value)+" ",1),e("button",{class:"retry-btn",onClick:v}," Retry ")])):H.value?(o(),a("div",Ws,[(o(!0),a(X,null,te(H.value.lanes,F=>{var Ee,Te,P;return o(),a("div",{key:F.id,class:"kanban-lane",onDragover:me(U=>{var ce;return G(U,F.id,((ce=F.cards)==null?void 0:ce.length)||0)},["prevent"]),onDrop:U=>Q(U,F.id)},[e("div",zs,[e("div",Ys,[e("h3",Js,M(F.name),1),F.onEnterTemplateId||F.onEnterPrompt?(o(),a("span",Xs,[...C[8]||(C[8]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):E("",!0)]),e("div",Zs,[e("span",eo,M(((Ee=F.cards)==null?void 0:Ee.length)||0),1),e("button",{class:"lane-settings-btn",title:"Lane settings",onClick:U=>B(F)},[...C[9]||(C[9]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("circle",{cx:"12",cy:"12",r:"3"}),e("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})],-1)])],8,to)])]),e("div",no,[(o(!0),a(X,null,te(F.cards,(U,ce)=>{var Ue,De;return o(),a(X,{key:U.id},[T.value==="card"&&c.value===F.id&&r.value===ce?(o(),a("div",so)):E("",!0),e("div",{class:pe(["kanban-card",{dragging:T.value==="card"&&((Ue=j.value)==null?void 0:Ue.id)===U.id}]),draggable:"true",onDragstart:me(Se=>O(Se,U,F.id,ce),["stop"]),onDragover:me(Se=>G(Se,F.id,ce),["prevent","stop"]),onDragend:Z},[(De=U.sessions)!=null&&De[0]?(o(),oe(K,{key:0,to:`/sessions/${U.sessions[0].id}`,class:"card-link"},{default:ke(()=>[e("div",ao,[e("span",{class:pe(["card-status",`status-${U.sessions[0].status}`])},M(L(U.sessions[0].status)),3),e("h4",lo,M(U.sessions[0].name),1)]),e("div",ro,[U.sessions[0].mode?(o(),a("span",io,M(U.sessions[0].mode),1)):E("",!0)])]),_:2},1032,["to"])):E("",!0),e("div",uo,[ce>0?(o(),a("button",{key:0,class:"card-reorder-btn",title:"Move card up",onClick:me(Se=>z(F.id,ce,ce-1),["prevent"])},[...C[10]||(C[10]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"18 15 12 9 6 15"})],-1)])],8,co)):E("",!0),ce<F.cards.length-1?(o(),a("button",{key:1,class:"card-reorder-btn",title:"Move card down",onClick:me(Se=>z(F.id,ce,ce+1),["prevent"])},[...C[11]||(C[11]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"6 9 12 15 18 9"})],-1)])],8,mo)):E("",!0)]),e("button",{class:"card-move-btn",title:"Move to lane",onClick:me(Se=>W(U,F.id),["prevent"])},[...C[12]||(C[12]=[qe('<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 4 19 4 19 8"></polyline><line x1="14" y1="10" x2="19" y2="4"></line><polyline points="9 20 5 20 5 16"></polyline><line x1="10" y1="14" x2="5" y2="20"></line></svg>',1)])],8,po),e("button",{class:"card-remove-btn",title:"Remove from board",onClick:me(Se=>Y(U.id),["prevent"])}," × ",8,vo)],42,oo)],64)}),128)),T.value==="card"&&c.value===F.id&&r.value===(((Te=F.cards)==null?void 0:Te.length)||0)?(o(),a("div",fo)):E("",!0),(P=F.cards)!=null&&P.length?E("",!0):(o(),a("div",ho,[...C[13]||(C[13]=[e("span",null,"Drop sessions here",-1)])]))]),e("div",bo,[F.onEnterTemplateId?(o(),a("span",go," Auto: triggers template on entry ")):F.onEnterPrompt?(o(),a("span",yo," Auto: runs custom prompt on entry ")):E("",!0),e("button",{class:"add-session-btn",onClick:U=>de(F)}," + Add Session ",8,ko)])],40,Qs)}),128)),e("div",So,[f.value?(o(),a("div",Co,[V(e("input",{"onUpdate:modelValue":C[1]||(C[1]=F=>u.value=F),type:"text",placeholder:"Lane name...",class:"add-lane-input",onKeyup:[Ve(re,["enter"]),Ve(ie,["escape"])]},null,544),[[ye,u.value]]),e("div",{class:"add-lane-actions"},[e("button",{class:"add-lane-confirm",onClick:re}," Add "),e("button",{class:"add-lane-cancel",onClick:ie}," Cancel ")])])):(o(),a("button",{key:0,class:"add-lane-btn",onClick:C[0]||(C[0]=F=>f.value=!0)}," + Add Lane "))])])):(o(),a("div",Hs,[...C[7]||(C[7]=[e("p",null,"Kanban board is not available for this project.",-1)])])),J(Xe,{"is-open":y.value,"project-id":l.projectId,"lane-id":(D=i.value)==null?void 0:D.id,"lane-name":(q=i.value)==null?void 0:q.name,"onUpdate:isOpen":C[2]||(C[2]=F=>y.value=F),onClose:ge,onAdded:x},null,8,["is-open","project-id","lane-id","lane-name"]),J(Is,{"is-open":S.value,"project-id":l.projectId,lane:g.value,"onUpdate:isOpen":C[3]||(C[3]=F=>S.value=F),onClose:d,onUpdated:t,onDeleted:n},null,8,["is-open","project-id","lane"]),J(dt,{"is-open":$.value,"project-id":l.projectId,"card-id":(ee=b.value)==null?void 0:ee.id,"current-lane-id":N.value,"session-name":(se=(fe=(be=b.value)==null?void 0:be.sessions)==null?void 0:fe[0])==null?void 0:se.name,"onUpdate:isOpen":C[4]||(C[4]=F=>$.value=F),onClose:ue,onMoved:he},null,8,["is-open","project-id","card-id","current-lane-id","session-name"])])}}},wo={class:"container"},Eo={class:"page-header"},To={class:"project-title"},_o=["href"],jo={class:"tabs"},Fo={class:"tabs-desktop"},Ro={class:"tabs-left"},Mo={class:"tabs-mobile"},Ao=["value"],Lo={key:0,value:"kanban"},xo={key:2,class:"tab-spacer"},Oo={key:3},Po={key:0,class:"skeleton-list"},Bo={key:1,class:"error-message"},Uo={key:2,class:"empty-state"},Do={key:3,class:"empty-state"},Vo={key:4,class:"session-list"},No={key:5},Io={key:6},Go={class:"modal-content lane-selector-modal"},Ko={class:"modal-body"},qo={class:"modal-description"},Ho={class:"lane-options"},Wo=["onClick"],Qo={class:"lane-option-name"},zo={class:"lane-option-count"},Yo={key:0,class:"empty-lanes"},ma={__name:"SessionListView",setup(l){const m=nt(),p=Ke(),f=Be(),u=$e(),T=_e(),j=He();pt(),j.restoreCollapsedLogState();const _=I(()=>{switch(m.name){case"ArchivedSessions":return"archived";case"ProjectTemplates":return"templates";case"ProjectCommands":return"commands";case"ProjectKanban":return"kanban";default:return"sessions"}});function k(t){const n=m.params.id,W={sessions:`/projects/${n}/sessions`,archived:`/projects/${n}/archived`,templates:`/projects/${n}/templates`,commands:`/projects/${n}/commands`,kanban:`/projects/${n}/kanban`};p.push(W[t])}const c=I(()=>m.params.id),{summaries:r,loadingSummaries:y,summaryErrors:i,fetchSummariesBatch:S,retryFetchSummary:g,updateSummary:$,cleanupSummary:b}=ct(),{filteredGroupedSessions:N}=Je(),{archivedLoaded:H}=mt(c,{fetchSummariesBatch:S,updateSummary:$,cleanupSummary:b});let w=null;ve(()=>u.sessions,()=>{clearTimeout(w),w=setTimeout(()=>{S(u.sessions)},400)}),ve(()=>m.name,async t=>{t==="ArchivedSessions"&&await s()},{immediate:!0}),ve([_,()=>{var t;return(t=f.currentProject)==null?void 0:t.kanbanEnabled}],([t,n])=>{t==="kanban"&&n===!1&&p.replace(`/projects/${m.params.id}/sessions`)},{immediate:!0}),ve(()=>u.starredFilter,async(t,n)=>{_.value==="archived"&&H.value&&t!==n&&(await u.fetchArchivedSessions(c.value,{reset:!0}),S(u.archivedSessions))});async function s(){H.value||(await u.fetchArchivedSessions(c.value,{reset:!0}),H.value=!0,S(u.archivedSessions))}async function v(){await u.loadMoreArchivedSessions(c.value),S(u.archivedSessions)}const L=R(!1),O=R(null),G=R(!1);function Z(t){const n=u.sessions.find(W=>W.id===t);O.value=n||{id:t},L.value=!0}async function le(t){if(O.value){G.value=!0;try{await u.archiveSession(O.value.id,{cleanup:t}),z.success("Session archived")}catch(n){z.error(n.message||"Failed to archive session")}finally{G.value=!1,L.value=!1,O.value=null}}}function ne(){L.value=!1,O.value=null}async function Q(t){try{await u.unarchiveSession(t)}catch(n){console.error("Failed to unarchive session:",n)}}const z=Me(),Y=R(!1),re=R(null),ie=R(!1),de=R(null);function ge(t){de.value=t,ie.value=!0}function x(){ie.value=!1,de.value=null}async function B(t){if(!(!de.value||!t))try{await T.addSessionToBoard(m.params.id,de.value.id,t.id),z.success(`Session added to "${t.name}"`),x()}catch(n){console.error("Failed to add session to board:",n),z.error(n.message||"Failed to add session to board")}}function d(){Y.value=!1,re.value=null}return Pe(()=>{u.restoreStatusFilter(),u.restoreStarredFilter(),u.restoreScheduledFilter();const t=m.params.id;t&&T.fetchBoard(t).catch(n=>{console.warn("Failed to fetch kanban board:",n)})}),Oe(()=>{clearTimeout(w)}),(t,n)=>{var ue,he,A,C,K,D,q,ee,be,fe,se,F,Ee,Te;const W=Re("router-link");return o(),a("div",wo,[e("div",Eo,[e("div",null,[e("div",To,[e("h1",null,M(((ue=h(f).currentProject)==null?void 0:ue.name)||"Sessions"),1),(he=h(f).currentProject)!=null&&he.repoUrl?(o(),a("a",{key:0,href:h(f).currentProject.repoUrl,target:"_blank",rel:"noopener noreferrer",class:"repo-link",title:"Open repository"},[...n[7]||(n[7]=[e("svg",{class:"repo-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6m4-3l6 6m0 0l-6 6m6-6H9"})],-1)])],8,_o)):E("",!0),J(W,{to:`/projects/${h(m).params.id}/edit`,class:"settings-link",title:"Project settings"},{default:ke(()=>[...n[8]||(n[8]=[e("svg",{class:"settings-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M12.22 2h-.44a2 2 0 00-2 2v.18a2 2 0 01-1 1.73l-.43.25a2 2 0 01-2 0l-.15-.08a2 2 0 00-2.73.73l-.22.38a2 2 0 00.73 2.73l.15.1a2 2 0 011 1.72v.51a2 2 0 01-1 1.74l-.15.09a2 2 0 00-.73 2.73l.22.38a2 2 0 002.73.73l.15-.08a2 2 0 012 0l.43.25a2 2 0 011 1.73V20a2 2 0 002 2h.44a2 2 0 002-2v-.18a2 2 0 011-1.73l.43-.25a2 2 0 012 0l.15.08a2 2 0 002.73-.73l.22-.39a2 2 0 00-.73-2.73l-.15-.08a2 2 0 01-1-1.74v-.5a2 2 0 011-1.74l.15-.09a2 2 0 00.73-2.73l-.22-.38a2 2 0 00-2.73-.73l-.15.08a2 2 0 01-2 0l-.43-.25a2 2 0 01-1-1.73V4a2 2 0 00-2-2z"}),e("circle",{cx:"12",cy:"12",r:"3"})],-1)])]),_:1},8,["to"])])]),_.value==="sessions"?(o(),oe(W,{key:0,to:`/projects/${h(m).params.id}/sessions/new`,class:"btn btn-primary mobile-only"},{default:ke(()=>[...n[9]||(n[9]=[ae(" + Session ",-1)])]),_:1},8,["to"])):E("",!0)]),e("div",jo,[e("div",Fo,[e("div",Ro,[e("button",{class:pe(["tab",{active:_.value==="sessions"}]),onClick:n[0]||(n[0]=P=>h(p).push(`/projects/${h(m).params.id}/sessions`))}," Sessions ",2),e("button",{class:pe(["tab",{active:_.value==="archived"}]),onClick:n[1]||(n[1]=P=>h(p).push(`/projects/${h(m).params.id}/archived`))}," Archived ",2),e("button",{class:pe(["tab",{active:_.value==="templates"}]),onClick:n[2]||(n[2]=P=>h(p).push(`/projects/${h(m).params.id}/templates`))}," Templates ",2),e("button",{class:pe(["tab",{active:_.value==="commands"}]),onClick:n[3]||(n[3]=P=>h(p).push(`/projects/${h(m).params.id}/commands`))}," Commands ",2),(A=h(f).currentProject)!=null&&A.kanbanEnabled?(o(),a("button",{key:0,class:pe(["tab",{active:_.value==="kanban"}]),onClick:n[4]||(n[4]=P=>h(p).push(`/projects/${h(m).params.id}/kanban`))},[...n[10]||(n[10]=[ae(" Kanban ",-1),e("span",{class:"ml-1 rounded bg-amber-900/50 px-1.5 py-0.5 text-[10px] font-semibold uppercase text-amber-300"}," Experimental ",-1)])],2)):E("",!0)]),_.value==="sessions"?(o(),oe(W,{key:0,to:`/projects/${h(m).params.id}/sessions/new`,class:"btn btn-primary desktop-only","aria-label":"New Session"},{default:ke(()=>[...n[11]||(n[11]=[e("span",{class:"add-session-label-full"},"+ Session",-1),e("span",{class:"add-session-label-short"},"+",-1)])]),_:1},8,["to"])):E("",!0)]),e("div",Mo,[e("select",{value:_.value,class:"tab-select",onChange:n[5]||(n[5]=P=>k(P.target.value))},[n[12]||(n[12]=e("option",{value:"sessions"}," Sessions ",-1)),n[13]||(n[13]=e("option",{value:"archived"}," Archived ",-1)),n[14]||(n[14]=e("option",{value:"templates"}," Templates ",-1)),n[15]||(n[15]=e("option",{value:"commands"}," Commands ",-1)),(C=h(f).currentProject)!=null&&C.kanbanEnabled?(o(),a("option",Lo," Kanban (experimental) ")):E("",!0)],40,Ao)])]),_.value==="sessions"?(o(),oe(Ne,{key:0,"show-status-filters":!0,"show-scheduled-filter":!0})):_.value==="archived"?(o(),oe(Ne,{key:1,"show-status-filters":!1,"show-scheduled-filter":!1})):(o(),a("div",xo)),_.value==="sessions"?(o(),a("div",Oo,[h(u).loading?(o(),a("div",Po,[(o(),a(X,null,te(3,P=>e("div",{key:P,class:"skeleton card",style:{height:"120px"}})),64))])):h(u).error?(o(),a("div",Bo,M(h(u).error),1)):h(u).sessions.length===0?(o(),a("div",Uo,[n[17]||(n[17]=e("p",null,"No sessions yet. Start a new session to interact with the agent.",-1)),J(W,{to:`/projects/${h(m).params.id}/sessions/new`,class:"btn btn-primary"},{default:ke(()=>[...n[16]||(n[16]=[ae(" New Session ",-1)])]),_:1},8,["to"])])):h(N).length===0?(o(),a("div",Do,[...n[18]||(n[18]=[e("p",null,"No sessions match the current filter.",-1)])])):(o(),a("div",Vo,[(o(!0),a(X,null,te(h(N),P=>{var U;return o(),oe(Qe,{key:P.parent.id,session:P.parent,"show-summary":!0,summary:h(r)[P.parent.id],"summary-loading":h(y)[P.parent.id],"summary-error":h(i)[P.parent.id],"show-archive":!0,"kanban-enabled":((U=h(f).currentProject)==null?void 0:U.kanbanEnabled)??!1,"pr-url":P.parent.prUrl,"pr-summary":h(r)[P.parent.id],onRetrySummary:h(g),onArchive:Z,onAddToBoard:ge},null,8,["session","summary","summary-loading","summary-error","kanban-enabled","pr-url","pr-summary","onRetrySummary"])}),128))]))])):E("",!0),_.value==="archived"?(o(),oe(Bt,{key:4,summaries:h(r),"loading-summaries":h(y),"summary-errors":h(i),onRetrySummary:h(g),onUnarchive:Q,onLoadMore:v},null,8,["summaries","loading-summaries","summary-errors","onRetrySummary"])):E("",!0),_.value==="templates"?(o(),a("div",No,[J($n,{"project-id":h(m).params.id},null,8,["project-id"])])):E("",!0),_.value==="commands"?(o(),a("div",Io,[J(Un,{"project-id":h(m).params.id},null,8,["project-id"])])):E("",!0),_.value==="kanban"?(o(),oe($o,{key:7,"project-id":h(m).params.id},null,8,["project-id"])):E("",!0),J(Xe,{"is-open":Y.value,"project-id":h(m).params.id,"lane-id":(K=re.value)==null?void 0:K.id,"lane-name":(D=re.value)==null?void 0:D.name,"onUpdate:isOpen":n[6]||(n[6]=P=>Y.value=P),onClose:d},null,8,["is-open","project-id","lane-id","lane-name"]),ie.value?(o(),a("div",{key:8,class:"modal-backdrop",onClick:me(x,["self"])},[e("div",Go,[e("div",{class:"modal-header"},[n[19]||(n[19]=e("h2",{class:"modal-title"}," Add to Kanban Board ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:x}," × ")]),e("div",Ko,[e("p",qo,' Select a lane to add "'+M((q=de.value)==null?void 0:q.name)+'" to: ',1),e("div",Ho,[(o(!0),a(X,null,te((ee=h(T).board)==null?void 0:ee.lanes,P=>{var U;return o(),a("button",{key:P.id,class:"lane-option-btn",onClick:ce=>B(P)},[e("span",Qo,M(P.name),1),e("span",zo,M(((U=P.cards)==null?void 0:U.length)||0)+" cards",1)],8,Wo)}),128))]),(fe=(be=h(T).board)==null?void 0:be.lanes)!=null&&fe.length?E("",!0):(o(),a("p",Yo," No lanes available. Go to the Kanban tab to create lanes first. "))]),e("div",{class:"modal-footer"},[e("button",{class:"btn btn-secondary",onClick:x}," Cancel ")])])])):E("",!0),J(ut,{"is-open":L.value,"session-name":((se=O.value)==null?void 0:se.name)||"this session","has-cleanup-script":!!((F=h(f).currentProject)!=null&&F.onSessionDeleted&&((Ee=O.value)!=null&&Ee.gitWorktree)&&!((Te=O.value)!=null&&Te.parentSessionId)),loading:G.value,onConfirm:le,onCancel:ne},null,8,["is-open","session-name","has-cleanup-script","loading"])])}}};export{ma as default};
@@ -1,4 +1,4 @@
1
- import{p as Fn,_ as $e,l as De,o as To,P as So,a as E,c as A,b as d,t as _,i as P,J as Ne,f as Ge,F as Pe,j as ie,z as K,n as mt,r as Eo}from"./index-C2QFVD7d.js";import{a as gt}from"./ApiClient-DfbJwzpz.js";import{u as Ao}from"./commandButtons-CoU3G4zK.js";import{u as Lo}from"./sessions-Nq5VafSf.js";const x$=Fn("kanban",{state:()=>({board:null,loading:!1,error:null,currentProjectId:null}),getters:{getLaneById:t=>e=>{var n,o;return((o=(n=t.board)==null?void 0:n.lanes)==null?void 0:o.find(r=>r.id===e))||null},getCardById:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>c.id===e);if(s)return s}return null},getCardBySessionId:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)});if(s)return s}return null},isSessionOnBoard:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[])if((o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)}))return!0;return!1},laneNames:t=>{var e,n;return((n=(e=t.board)==null?void 0:e.lanes)==null?void 0:n.map(o=>o.name))||[]},totalCardCount:t=>{var n,o;let e=0;for(const r of((n=t.board)==null?void 0:n.lanes)||[])e+=((o=r.cards)==null?void 0:o.length)||0;return e}},actions:{_findCardLocation(t){var e;if(!this.board)return null;for(const n of this.board.lanes){const o=(e=n.cards)==null?void 0:e.findIndex(r=>r.id===t);if(o!==-1)return{lane:n,cardIndex:o,card:n.cards[o]}}return null},_moveCardOptimistic(t,e){const n=this._findCardLocation(t);if(!n)return null;const{lane:o,cardIndex:r,card:s}=n;o.cards.splice(r,1);const c=this.board.lanes.find(i=>i.id===e);return c&&(c.cards=c.cards||[],c.cards.push({...s,laneId:e})),{sourceLane:o,card:s}},_revertCardMove(t,e,n){var s;const o=t;if(!this.board)return;const r=this.board.lanes.find(c=>c.id===n);r&&(r.cards=((s=r.cards)==null?void 0:s.filter(c=>c.id!==e.id))||[]),o.cards=o.cards||[],o.cards.push(e)},async fetchBoard(t){this.loading=!0,this.error=null,this.currentProjectId=t;try{const e=await gt.getKanbanBoard(t);return this.board=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},reset(){this.board=null,this.loading=!1,this.error=null,this.currentProjectId=null},async createLane(t,e){this.loading=!0,this.error=null;try{return await gt.createKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async updateLane(t,e,n){this.loading=!0,this.error=null;try{return await gt.updateKanbanLane(t,e,n)}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},async deleteLane(t,e){this.loading=!0,this.error=null;try{await gt.deleteKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async reorderLanes(t,e){var o;this.error=null;const n=[...((o=this.board)==null?void 0:o.lanes)||[]];if(this.board){const r=new Map(this.board.lanes.map(s=>[s.id,s]));this.board.lanes=e.map(s=>r.get(s)).filter(Boolean)}try{const r=await gt.reorderKanbanLanes(t,e);return this.board=r,r}catch(r){throw this.board&&(this.board.lanes=n),this.error=r.message,r}},async addSessionToBoard(t,e,n){var o;this.loading=!0,this.error=null;try{const r=await gt.createKanbanCard(t,{sessionId:e,laneId:n}),s=(o=this.board)==null?void 0:o.lanes.find(c=>c.id===n);return s&&(s.cards=s.cards||[],s.cards.some(c=>c.id===r.id)||s.cards.push(r)),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async moveCard(t,e,n,o={}){this.error=null;const r=this._moveCardOptimistic(e,n);try{const s=await gt.moveKanbanCard(t,e,{targetLaneId:n,...o}),c=this._findCardLocation(e);return c&&(c.lane.cards[c.cardIndex]=s),s}catch(s){throw r&&this._revertCardMove(r.sourceLane,r.card,n),this.error=s.message,s}},async removeCard(t,e){var n,o;this.loading=!0,this.error=null;try{await gt.deleteKanbanCard(t,e);const r=((n=this.board)==null?void 0:n.lanes)||[];for(const s of r){const c=(o=s.cards)==null?void 0:o.findIndex(i=>i.id===e);if(c!==-1){s.cards.splice(c,1);break}}}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async reorderCards(t,e,n){var s,c;this.error=null;const o=(c=(s=this.board)==null?void 0:s.lanes)==null?void 0:c.find(i=>i.id===e),r=o!=null&&o.cards?[...o.cards]:[];if(o){const i=new Map(o.cards.map(l=>[l.id,l]));o.cards=n.map(l=>i.get(l)).filter(Boolean)}try{await gt.reorderKanbanCards(t,e,n)}catch(i){throw o&&(o.cards=r),this.error=i.message,i}},handleBoardUpdated(t){this.board=t},handleCardAdded(t,e){var o,r;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(s=>s.id===e);n&&(n.cards=n.cards||[],n.cards.some(s=>s.id===t.id)||n.cards.push(t))},handleCardMoved(t,e,n,o){var c,i,l,f,y;const r=(i=(c=this.board)==null?void 0:c.lanes)==null?void 0:i.find(h=>h.id===e);r&&(r.cards=((l=r.cards)==null?void 0:l.filter(h=>h.id!==t))||[]);const s=(y=(f=this.board)==null?void 0:f.lanes)==null?void 0:y.find(h=>h.id===n);s&&(s.cards=s.cards||[],s.cards.some(h=>h.id===t)||s.cards.push(o))},handleCardRemoved(t,e){var o,r,s;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(c=>c.id===e);n&&(n.cards=((s=n.cards)==null?void 0:s.filter(c=>c.id!==t))||[])},handleSessionUpdated(t){var e;if(this.board)for(const n of this.board.lanes)for(const o of n.cards||[]){const r=(e=o.sessions)==null?void 0:e.findIndex(s=>s.id===t.id);if(r!==-1&&r!==void 0){o.sessions[r]={...o.sessions[r],name:t.name,status:t.status,mode:t.mode,costUsd:t.costUsd,starred:t.starred,prUrl:t.prUrl,updatedAt:t.updatedAt};return}}}}}),Do=Fn("sessionStreaming",{state:()=>({partialText:"",partialThinkingBySession:{},_partialThrottleTimer:null,_pendingPartialText:null,sessionWorkLogs:{},sessionPartialText:{},sessionFileCounts:{},collapsedSessionLogs:new Set}),getters:{getPartialThinking:t=>e=>e&&t.partialThinkingBySession[e]||null,getSessionWorkLogs:t=>e=>t.sessionWorkLogs[e]||[],getSessionPartialText:t=>e=>t.sessionPartialText[e]||"",getSessionFileCount:t=>e=>t.sessionFileCounts[e]||0,isSessionLogCollapsed:t=>e=>t.collapsedSessionLogs.has(e)},actions:{setPartialText(t){this._pendingPartialText=t,this._partialThrottleTimer||(this.partialText=t,this._partialThrottleTimer=setTimeout(()=>{this._pendingPartialText!==null&&this._pendingPartialText!==this.partialText&&(this.partialText=this._pendingPartialText),this._partialThrottleTimer=null,this._pendingPartialText=null},150))},clearPartialText(){this.partialText="",this._pendingPartialText=null,this._partialThrottleTimer&&(clearTimeout(this._partialThrottleTimer),this._partialThrottleTimer=null)},setPartialThinking(t,e){e&&(this.partialThinkingBySession={...this.partialThinkingBySession,[e]:t||null})},clearPartialThinking(t){t&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:null})},clearAllPartialThinking(){this.partialThinkingBySession={}},addSessionWorkLog(t,e){this.sessionWorkLogs[t]||(this.sessionWorkLogs[t]=[]),this.sessionWorkLogs[t].push(e),this.sessionWorkLogs[t].length>15&&(this.sessionWorkLogs[t]=this.sessionWorkLogs[t].slice(-15)),this.sessionWorkLogs={...this.sessionWorkLogs}},setSessionPartialText(t,e){this.sessionPartialText={...this.sessionPartialText,[t]:e||""}},setSessionFileCount(t,e){this.sessionFileCounts={...this.sessionFileCounts,[t]:e}},hydrateSessionState(t,{workLogs:e,partialText:n,thinking:o}={}){if(e!=null&&e.length){const r=this.sessionWorkLogs[t]||[],s=new Set(r.map(i=>i.id)),c=e.filter(i=>!s.has(i.id));c.length&&(this.sessionWorkLogs={...this.sessionWorkLogs,[t]:[...r,...c].slice(-15)})}o&&!this.partialThinkingBySession[t]&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:o}),n&&!this.sessionPartialText[t]&&(this.sessionPartialText={...this.sessionPartialText,[t]:n})},clearSessionStreamingState(t){const{[t]:e,...n}=this.sessionWorkLogs;this.sessionWorkLogs=n;const{[t]:o,...r}=this.sessionPartialText;this.sessionPartialText=r;const{[t]:s,...c}=this.partialThinkingBySession;this.partialThinkingBySession=c;const{[t]:i,...l}=this.sessionFileCounts;this.sessionFileCounts=l},clearSessionEphemeralState(t){const{[t]:e,...n}=this.sessionPartialText;this.sessionPartialText=n;const{[t]:o,...r}=this.partialThinkingBySession;this.partialThinkingBySession=r},toggleSessionLogCollapsed(t){this.collapsedSessionLogs.has(t)?this.collapsedSessionLogs.delete(t):this.collapsedSessionLogs.add(t),this.collapsedSessionLogs=new Set(this.collapsedSessionLogs),this.saveCollapsedLogState()},saveCollapsedLogState(){try{localStorage.setItem("collapsedSessionLogs",JSON.stringify([...this.collapsedSessionLogs]))}catch{}},restoreCollapsedLogState(){try{const t=localStorage.getItem("collapsedSessionLogs");t&&(this.collapsedSessionLogs=new Set(JSON.parse(t)))}catch{}}}});function le(t){"@babel/helpers - typeof";return le=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(t)}function Et(t){if(t===null||t===!0||t===!1)return NaN;var e=Number(t);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function R(t,e){if(e.length<t)throw new TypeError(t+" argument"+(t>1?"s":"")+" required, but only "+e.length+" present")}function k(t){R(1,arguments);var e=Object.prototype.toString.call(t);return t instanceof Date||le(t)==="object"&&e==="[object Date]"?new Date(t.getTime()):typeof t=="number"||e==="[object Number]"?new Date(t):((typeof t=="string"||e==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function qo(t,e){R(2,arguments);var n=k(t).getTime(),o=Et(e);return new Date(n+o)}var _o={};function Vt(){return _o}function Ue(t){var e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),t.getTime()-e.getTime()}function oe(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getTime()-o.getTime();return r<0?-1:r>0?1:r}function ko(t){return R(1,arguments),t instanceof Date||le(t)==="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Co(t){if(R(1,arguments),!ko(t)&&typeof t!="number")return!1;var e=k(t);return!isNaN(Number(e))}function xo(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getFullYear()-o.getFullYear(),s=n.getMonth()-o.getMonth();return r*12+s}function Ro(t,e){return R(2,arguments),k(t).getTime()-k(e).getTime()}var Mo={ceil:Math.ceil,round:Math.round,floor:Math.floor,trunc:function(e){return e<0?Math.ceil(e):Math.floor(e)}},Oo="trunc";function No(t){return Mo[Oo]}function Po(t){R(1,arguments);var e=k(t);return e.setHours(23,59,59,999),e}function Uo(t){R(1,arguments);var e=k(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function Io(t){R(1,arguments);var e=k(t);return Po(e).getTime()===Uo(e).getTime()}function Ho(t,e){R(2,arguments);var n=k(t),o=k(e),r=oe(n,o),s=Math.abs(xo(n,o)),c;if(s<1)c=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-r*s);var i=oe(n,o)===-r;Io(k(t))&&s===1&&oe(t,o)===1&&(i=!1),c=r*(s-Number(i))}return c===0?0:c}function Fo(t,e,n){R(2,arguments);var o=Ro(t,e)/1e3;return No()(o)}function Bo(t,e){R(2,arguments);var n=Et(e);return qo(t,-n)}var $o=864e5;function Go(t){R(1,arguments);var e=k(t),n=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var o=e.getTime(),r=n-o;return Math.floor(r/$o)+1}function ue(t){R(1,arguments);var e=1,n=k(t),o=n.getUTCDay(),r=(o<e?7:0)+o-e;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function Bn(t){R(1,arguments);var e=k(t),n=e.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(n+1,0,4),o.setUTCHours(0,0,0,0);var r=ue(o),s=new Date(0);s.setUTCFullYear(n,0,4),s.setUTCHours(0,0,0,0);var c=ue(s);return e.getTime()>=r.getTime()?n+1:e.getTime()>=c.getTime()?n:n-1}function Wo(t){R(1,arguments);var e=Bn(t),n=new Date(0);n.setUTCFullYear(e,0,4),n.setUTCHours(0,0,0,0);var o=ue(n);return o}var Vo=6048e5;function zo(t){R(1,arguments);var e=k(t),n=ue(e).getTime()-Wo(e).getTime();return Math.round(n/Vo)+1}function de(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.weekStartsOn)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.weekStartsOn)!==null&&r!==void 0?r:y.weekStartsOn)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.weekStartsOn)!==null&&n!==void 0?n:0);if(!(h>=0&&h<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var D=k(t),w=D.getUTCDay(),v=(w<h?7:0)+w-h;return D.setUTCDate(D.getUTCDate()-v),D.setUTCHours(0,0,0,0),D}function $n(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=k(t),h=y.getUTCFullYear(),D=Vt(),w=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:D.firstWeekContainsDate)!==null&&o!==void 0?o:(l=D.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1);if(!(w>=1&&w<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var v=new Date(0);v.setUTCFullYear(h+1,0,w),v.setUTCHours(0,0,0,0);var b=de(v,e),C=new Date(0);C.setUTCFullYear(h,0,w),C.setUTCHours(0,0,0,0);var X=de(C,e);return y.getTime()>=b.getTime()?h+1:y.getTime()>=X.getTime()?h:h-1}function jo(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:y.firstWeekContainsDate)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1),D=$n(t,e),w=new Date(0);w.setUTCFullYear(D,0,h),w.setUTCHours(0,0,0,0);var v=de(w,e);return v}var Yo=6048e5;function Xo(t,e){R(1,arguments);var n=k(t),o=de(n,e).getTime()-jo(n,e).getTime();return Math.round(o/Yo)+1}function q(t,e){for(var n=t<0?"-":"",o=Math.abs(t).toString();o.length<e;)o="0"+o;return n+o}var bt={y:function(e,n){var o=e.getUTCFullYear(),r=o>0?o:1-o;return q(n==="yy"?r%100:r,n.length)},M:function(e,n){var o=e.getUTCMonth();return n==="M"?String(o+1):q(o+1,2)},d:function(e,n){return q(e.getUTCDate(),n.length)},a:function(e,n){var o=e.getUTCHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.toUpperCase();case"aaa":return o;case"aaaaa":return o[0];case"aaaa":default:return o==="am"?"a.m.":"p.m."}},h:function(e,n){return q(e.getUTCHours()%12||12,n.length)},H:function(e,n){return q(e.getUTCHours(),n.length)},m:function(e,n){return q(e.getUTCMinutes(),n.length)},s:function(e,n){return q(e.getUTCSeconds(),n.length)},S:function(e,n){var o=n.length,r=e.getUTCMilliseconds(),s=Math.floor(r*Math.pow(10,o-3));return q(s,n.length)}},xt={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Zo={G:function(e,n,o){var r=e.getUTCFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return o.era(r,{width:"abbreviated"});case"GGGGG":return o.era(r,{width:"narrow"});case"GGGG":default:return o.era(r,{width:"wide"})}},y:function(e,n,o){if(n==="yo"){var r=e.getUTCFullYear(),s=r>0?r:1-r;return o.ordinalNumber(s,{unit:"year"})}return bt.y(e,n)},Y:function(e,n,o,r){var s=$n(e,r),c=s>0?s:1-s;if(n==="YY"){var i=c%100;return q(i,2)}return n==="Yo"?o.ordinalNumber(c,{unit:"year"}):q(c,n.length)},R:function(e,n){var o=Bn(e);return q(o,n.length)},u:function(e,n){var o=e.getUTCFullYear();return q(o,n.length)},Q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"Q":return String(r);case"QQ":return q(r,2);case"Qo":return o.ordinalNumber(r,{unit:"quarter"});case"QQQ":return o.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return o.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return o.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"q":return String(r);case"qq":return q(r,2);case"qo":return o.ordinalNumber(r,{unit:"quarter"});case"qqq":return o.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return o.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return o.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,n,o){var r=e.getUTCMonth();switch(n){case"M":case"MM":return bt.M(e,n);case"Mo":return o.ordinalNumber(r+1,{unit:"month"});case"MMM":return o.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return o.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return o.month(r,{width:"wide",context:"formatting"})}},L:function(e,n,o){var r=e.getUTCMonth();switch(n){case"L":return String(r+1);case"LL":return q(r+1,2);case"Lo":return o.ordinalNumber(r+1,{unit:"month"});case"LLL":return o.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return o.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return o.month(r,{width:"wide",context:"standalone"})}},w:function(e,n,o,r){var s=Xo(e,r);return n==="wo"?o.ordinalNumber(s,{unit:"week"}):q(s,n.length)},I:function(e,n,o){var r=zo(e);return n==="Io"?o.ordinalNumber(r,{unit:"week"}):q(r,n.length)},d:function(e,n,o){return n==="do"?o.ordinalNumber(e.getUTCDate(),{unit:"date"}):bt.d(e,n)},D:function(e,n,o){var r=Go(e);return n==="Do"?o.ordinalNumber(r,{unit:"dayOfYear"}):q(r,n.length)},E:function(e,n,o){var r=e.getUTCDay();switch(n){case"E":case"EE":case"EEE":return o.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return o.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return o.day(r,{width:"short",context:"formatting"});case"EEEE":default:return o.day(r,{width:"wide",context:"formatting"})}},e:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"e":return String(c);case"ee":return q(c,2);case"eo":return o.ordinalNumber(c,{unit:"day"});case"eee":return o.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return o.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return o.day(s,{width:"short",context:"formatting"});case"eeee":default:return o.day(s,{width:"wide",context:"formatting"})}},c:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"c":return String(c);case"cc":return q(c,n.length);case"co":return o.ordinalNumber(c,{unit:"day"});case"ccc":return o.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return o.day(s,{width:"narrow",context:"standalone"});case"cccccc":return o.day(s,{width:"short",context:"standalone"});case"cccc":default:return o.day(s,{width:"wide",context:"standalone"})}},i:function(e,n,o){var r=e.getUTCDay(),s=r===0?7:r;switch(n){case"i":return String(s);case"ii":return q(s,n.length);case"io":return o.ordinalNumber(s,{unit:"day"});case"iii":return o.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return o.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return o.day(r,{width:"short",context:"formatting"});case"iiii":default:return o.day(r,{width:"wide",context:"formatting"})}},a:function(e,n,o){var r=e.getUTCHours(),s=r/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(e,n,o){var r=e.getUTCHours(),s;switch(r===12?s=xt.noon:r===0?s=xt.midnight:s=r/12>=1?"pm":"am",n){case"b":case"bb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(e,n,o){var r=e.getUTCHours(),s;switch(r>=17?s=xt.evening:r>=12?s=xt.afternoon:r>=4?s=xt.morning:s=xt.night,n){case"B":case"BB":case"BBB":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(e,n,o){if(n==="ho"){var r=e.getUTCHours()%12;return r===0&&(r=12),o.ordinalNumber(r,{unit:"hour"})}return bt.h(e,n)},H:function(e,n,o){return n==="Ho"?o.ordinalNumber(e.getUTCHours(),{unit:"hour"}):bt.H(e,n)},K:function(e,n,o){var r=e.getUTCHours()%12;return n==="Ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},k:function(e,n,o){var r=e.getUTCHours();return r===0&&(r=24),n==="ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},m:function(e,n,o){return n==="mo"?o.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):bt.m(e,n)},s:function(e,n,o){return n==="so"?o.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):bt.s(e,n)},S:function(e,n){return bt.S(e,n)},X:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();if(c===0)return"Z";switch(n){case"X":return hn(c);case"XXXX":case"XX":return St(c);case"XXXXX":case"XXX":default:return St(c,":")}},x:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"x":return hn(c);case"xxxx":case"xx":return St(c);case"xxxxx":case"xxx":default:return St(c,":")}},O:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+gn(c,":");case"OOOO":default:return"GMT"+St(c,":")}},z:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+gn(c,":");case"zzzz":default:return"GMT"+St(c,":")}},t:function(e,n,o,r){var s=r._originalDate||e,c=Math.floor(s.getTime()/1e3);return q(c,n.length)},T:function(e,n,o,r){var s=r._originalDate||e,c=s.getTime();return q(c,n.length)}};function gn(t,e){var n=t>0?"-":"+",o=Math.abs(t),r=Math.floor(o/60),s=o%60;if(s===0)return n+String(r);var c=e;return n+String(r)+c+q(s,2)}function hn(t,e){if(t%60===0){var n=t>0?"-":"+";return n+q(Math.abs(t)/60,2)}return St(t,e)}function St(t,e){var n=e||"",o=t>0?"-":"+",r=Math.abs(t),s=q(Math.floor(r/60),2),c=q(r%60,2);return o+s+n+c}var vn=function(e,n){switch(e){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},Gn=function(e,n){switch(e){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},Qo=function(e,n){var o=e.match(/(P+)(p+)?/)||[],r=o[1],s=o[2];if(!s)return vn(e,n);var c;switch(r){case"P":c=n.dateTime({width:"short"});break;case"PP":c=n.dateTime({width:"medium"});break;case"PPP":c=n.dateTime({width:"long"});break;case"PPPP":default:c=n.dateTime({width:"full"});break}return c.replace("{{date}}",vn(r,n)).replace("{{time}}",Gn(s,n))},Jo={p:Gn,P:Qo},Ko=["D","DD"],tr=["YY","YYYY"];function er(t){return Ko.indexOf(t)!==-1}function nr(t){return tr.indexOf(t)!==-1}function bn(t,e,n){if(t==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var or={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},rr=function(e,n,o){var r,s=or[e];return typeof s=="string"?r=s:n===1?r=s.one:r=s.other.replace("{{count}}",n.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+r:r+" ago":r};function qe(t){return function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.width?String(e.width):t.defaultWidth,o=t.formats[n]||t.formats[t.defaultWidth];return o}}var sr={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},ar={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},cr={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ir={date:qe({formats:sr,defaultWidth:"full"}),time:qe({formats:ar,defaultWidth:"full"}),dateTime:qe({formats:cr,defaultWidth:"full"})},lr={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ur=function(e,n,o,r){return lr[e]};function It(t){return function(e,n){var o=n!=null&&n.context?String(n.context):"standalone",r;if(o==="formatting"&&t.formattingValues){var s=t.defaultFormattingWidth||t.defaultWidth,c=n!=null&&n.width?String(n.width):s;r=t.formattingValues[c]||t.formattingValues[s]}else{var i=t.defaultWidth,l=n!=null&&n.width?String(n.width):t.defaultWidth;r=t.values[l]||t.values[i]}var f=t.argumentCallback?t.argumentCallback(e):e;return r[f]}}var dr={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},fr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},pr={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},mr={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},gr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},hr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},vr=function(e,n){var o=Number(e),r=o%100;if(r>20||r<10)switch(r%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},br={ordinalNumber:vr,era:It({values:dr,defaultWidth:"wide"}),quarter:It({values:fr,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:It({values:pr,defaultWidth:"wide"}),day:It({values:mr,defaultWidth:"wide"}),dayPeriod:It({values:gr,defaultWidth:"wide",formattingValues:hr,defaultFormattingWidth:"wide"})};function Ht(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.width,r=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],s=e.match(r);if(!s)return null;var c=s[0],i=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],l=Array.isArray(i)?yr(i,function(h){return h.test(c)}):wr(i,function(h){return h.test(c)}),f;f=t.valueCallback?t.valueCallback(l):l,f=n.valueCallback?n.valueCallback(f):f;var y=e.slice(c.length);return{value:f,rest:y}}}function wr(t,e){for(var n in t)if(t.hasOwnProperty(n)&&e(t[n]))return n}function yr(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n}function Tr(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=e.match(t.matchPattern);if(!o)return null;var r=o[0],s=e.match(t.parsePattern);if(!s)return null;var c=t.valueCallback?t.valueCallback(s[0]):s[0];c=n.valueCallback?n.valueCallback(c):c;var i=e.slice(r.length);return{value:c,rest:i}}}var Sr=/^(\d+)(th|st|nd|rd)?/i,Er=/\d+/i,Ar={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Lr={any:[/^b/i,/^(a|c)/i]},Dr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},qr={any:[/1/i,/2/i,/3/i,/4/i]},_r={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},kr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Cr={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},xr={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Rr={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Mr={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Or={ordinalNumber:Tr({matchPattern:Sr,parsePattern:Er,valueCallback:function(e){return parseInt(e,10)}}),era:Ht({matchPatterns:Ar,defaultMatchWidth:"wide",parsePatterns:Lr,defaultParseWidth:"any"}),quarter:Ht({matchPatterns:Dr,defaultMatchWidth:"wide",parsePatterns:qr,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Ht({matchPatterns:_r,defaultMatchWidth:"wide",parsePatterns:kr,defaultParseWidth:"any"}),day:Ht({matchPatterns:Cr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any"}),dayPeriod:Ht({matchPatterns:Rr,defaultMatchWidth:"any",parsePatterns:Mr,defaultParseWidth:"any"})},Wn={code:"en-US",formatDistance:rr,formatLong:ir,formatRelative:ur,localize:br,match:Or,options:{weekStartsOn:0,firstWeekContainsDate:1}},Nr=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Pr=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ur=/^'([^]*?)'?$/,Ir=/''/g,Hr=/[a-zA-Z]/;function R$(t,e,n){var o,r,s,c,i,l,f,y,h,D,w,v,b,C;R(2,arguments);var X=String(e),Z=Vt(),$=(o=(r=void 0)!==null&&r!==void 0?r:Z.locale)!==null&&o!==void 0?o:Wn,M=Et((s=(c=(i=(l=void 0)!==null&&l!==void 0?l:void 0)!==null&&i!==void 0?i:Z.firstWeekContainsDate)!==null&&c!==void 0?c:(f=Z.locale)===null||f===void 0||(y=f.options)===null||y===void 0?void 0:y.firstWeekContainsDate)!==null&&s!==void 0?s:1);if(!(M>=1&&M<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var O=Et((h=(D=(w=(v=void 0)!==null&&v!==void 0?v:void 0)!==null&&w!==void 0?w:Z.weekStartsOn)!==null&&D!==void 0?D:(b=Z.locale)===null||b===void 0||(C=b.options)===null||C===void 0?void 0:C.weekStartsOn)!==null&&h!==void 0?h:0);if(!(O>=0&&O<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!$.localize)throw new RangeError("locale must contain localize property");if(!$.formatLong)throw new RangeError("locale must contain formatLong property");var x=k(t);if(!Co(x))throw new RangeError("Invalid time value");var ot=Ue(x),et=Bo(x,ot),lt={firstWeekContainsDate:M,weekStartsOn:O,locale:$,_originalDate:x},ut=X.match(Pr).map(function(L){var Q=L[0];if(Q==="p"||Q==="P"){var st=Jo[Q];return st(L,$.formatLong)}return L}).join("").match(Nr).map(function(L){if(L==="''")return"'";var Q=L[0];if(Q==="'")return Fr(L);var st=Zo[Q];if(st)return nr(L)&&bn(L,e,String(t)),er(L)&&bn(L,e,String(t)),st(et,L,$.localize,lt);if(Q.match(Hr))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Q+"`");return L}).join("");return ut}function Fr(t){var e=t.match(Ur);return e?e[1].replace(Ir,"'"):t}function Vn(t,e){if(t==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function Br(t){return Vn({},t)}var wn=1440,$r=2520,_e=43200,Gr=86400;function Wr(t,e,n){var o,r;R(2,arguments);var s=Vt(),c=(o=(r=n==null?void 0:n.locale)!==null&&r!==void 0?r:s.locale)!==null&&o!==void 0?o:Wn;if(!c.formatDistance)throw new RangeError("locale must contain formatDistance property");var i=oe(t,e);if(isNaN(i))throw new RangeError("Invalid time value");var l=Vn(Br(n),{addSuffix:!!(n!=null&&n.addSuffix),comparison:i}),f,y;i>0?(f=k(e),y=k(t)):(f=k(t),y=k(e));var h=Fo(y,f),D=(Ue(y)-Ue(f))/1e3,w=Math.round((h-D)/60),v;if(w<2)return n!=null&&n.includeSeconds?h<5?c.formatDistance("lessThanXSeconds",5,l):h<10?c.formatDistance("lessThanXSeconds",10,l):h<20?c.formatDistance("lessThanXSeconds",20,l):h<40?c.formatDistance("halfAMinute",0,l):h<60?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",1,l):w===0?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",w,l);if(w<45)return c.formatDistance("xMinutes",w,l);if(w<90)return c.formatDistance("aboutXHours",1,l);if(w<wn){var b=Math.round(w/60);return c.formatDistance("aboutXHours",b,l)}else{if(w<$r)return c.formatDistance("xDays",1,l);if(w<_e){var C=Math.round(w/wn);return c.formatDistance("xDays",C,l)}else if(w<Gr)return v=Math.round(w/_e),c.formatDistance("aboutXMonths",v,l)}if(v=Ho(y,f),v<12){var X=Math.round(w/_e);return c.formatDistance("xMonths",X,l)}else{var Z=v%12,$=Math.floor(v/12);return Z<3?c.formatDistance("aboutXYears",$,l):Z<9?c.formatDistance("overXYears",$,l):c.formatDistance("almostXYears",$+1,l)}}function M$(t,e){return R(1,arguments),Wr(t,Date.now(),e)}const yn={running:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor"
1
+ import{p as Fn,_ as $e,l as De,o as To,P as So,a as E,c as A,b as d,t as _,i as P,J as Ne,f as Ge,F as Pe,j as ie,z as K,n as mt,r as Eo}from"./index-CvXApbVC.js";import{a as gt}from"./ApiClient-DfbJwzpz.js";import{u as Ao}from"./commandButtons-DejH0rVN.js";import{u as Lo}from"./sessions-DETEyjPI.js";const x$=Fn("kanban",{state:()=>({board:null,loading:!1,error:null,currentProjectId:null}),getters:{getLaneById:t=>e=>{var n,o;return((o=(n=t.board)==null?void 0:n.lanes)==null?void 0:o.find(r=>r.id===e))||null},getCardById:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>c.id===e);if(s)return s}return null},getCardBySessionId:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)});if(s)return s}return null},isSessionOnBoard:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[])if((o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)}))return!0;return!1},laneNames:t=>{var e,n;return((n=(e=t.board)==null?void 0:e.lanes)==null?void 0:n.map(o=>o.name))||[]},totalCardCount:t=>{var n,o;let e=0;for(const r of((n=t.board)==null?void 0:n.lanes)||[])e+=((o=r.cards)==null?void 0:o.length)||0;return e}},actions:{_findCardLocation(t){var e;if(!this.board)return null;for(const n of this.board.lanes){const o=(e=n.cards)==null?void 0:e.findIndex(r=>r.id===t);if(o!==-1)return{lane:n,cardIndex:o,card:n.cards[o]}}return null},_moveCardOptimistic(t,e){const n=this._findCardLocation(t);if(!n)return null;const{lane:o,cardIndex:r,card:s}=n;o.cards.splice(r,1);const c=this.board.lanes.find(i=>i.id===e);return c&&(c.cards=c.cards||[],c.cards.push({...s,laneId:e})),{sourceLane:o,card:s}},_revertCardMove(t,e,n){var s;const o=t;if(!this.board)return;const r=this.board.lanes.find(c=>c.id===n);r&&(r.cards=((s=r.cards)==null?void 0:s.filter(c=>c.id!==e.id))||[]),o.cards=o.cards||[],o.cards.push(e)},async fetchBoard(t){this.loading=!0,this.error=null,this.currentProjectId=t;try{const e=await gt.getKanbanBoard(t);return this.board=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},reset(){this.board=null,this.loading=!1,this.error=null,this.currentProjectId=null},async createLane(t,e){this.loading=!0,this.error=null;try{return await gt.createKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async updateLane(t,e,n){this.loading=!0,this.error=null;try{return await gt.updateKanbanLane(t,e,n)}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},async deleteLane(t,e){this.loading=!0,this.error=null;try{await gt.deleteKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async reorderLanes(t,e){var o;this.error=null;const n=[...((o=this.board)==null?void 0:o.lanes)||[]];if(this.board){const r=new Map(this.board.lanes.map(s=>[s.id,s]));this.board.lanes=e.map(s=>r.get(s)).filter(Boolean)}try{const r=await gt.reorderKanbanLanes(t,e);return this.board=r,r}catch(r){throw this.board&&(this.board.lanes=n),this.error=r.message,r}},async addSessionToBoard(t,e,n){var o;this.loading=!0,this.error=null;try{const r=await gt.createKanbanCard(t,{sessionId:e,laneId:n}),s=(o=this.board)==null?void 0:o.lanes.find(c=>c.id===n);return s&&(s.cards=s.cards||[],s.cards.some(c=>c.id===r.id)||s.cards.push(r)),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async moveCard(t,e,n,o={}){this.error=null;const r=this._moveCardOptimistic(e,n);try{const s=await gt.moveKanbanCard(t,e,{targetLaneId:n,...o}),c=this._findCardLocation(e);return c&&(c.lane.cards[c.cardIndex]=s),s}catch(s){throw r&&this._revertCardMove(r.sourceLane,r.card,n),this.error=s.message,s}},async removeCard(t,e){var n,o;this.loading=!0,this.error=null;try{await gt.deleteKanbanCard(t,e);const r=((n=this.board)==null?void 0:n.lanes)||[];for(const s of r){const c=(o=s.cards)==null?void 0:o.findIndex(i=>i.id===e);if(c!==-1){s.cards.splice(c,1);break}}}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async reorderCards(t,e,n){var s,c;this.error=null;const o=(c=(s=this.board)==null?void 0:s.lanes)==null?void 0:c.find(i=>i.id===e),r=o!=null&&o.cards?[...o.cards]:[];if(o){const i=new Map(o.cards.map(l=>[l.id,l]));o.cards=n.map(l=>i.get(l)).filter(Boolean)}try{await gt.reorderKanbanCards(t,e,n)}catch(i){throw o&&(o.cards=r),this.error=i.message,i}},handleBoardUpdated(t){this.board=t},handleCardAdded(t,e){var o,r;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(s=>s.id===e);n&&(n.cards=n.cards||[],n.cards.some(s=>s.id===t.id)||n.cards.push(t))},handleCardMoved(t,e,n,o){var c,i,l,f,y;const r=(i=(c=this.board)==null?void 0:c.lanes)==null?void 0:i.find(h=>h.id===e);r&&(r.cards=((l=r.cards)==null?void 0:l.filter(h=>h.id!==t))||[]);const s=(y=(f=this.board)==null?void 0:f.lanes)==null?void 0:y.find(h=>h.id===n);s&&(s.cards=s.cards||[],s.cards.some(h=>h.id===t)||s.cards.push(o))},handleCardRemoved(t,e){var o,r,s;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(c=>c.id===e);n&&(n.cards=((s=n.cards)==null?void 0:s.filter(c=>c.id!==t))||[])},handleSessionUpdated(t){var e;if(this.board)for(const n of this.board.lanes)for(const o of n.cards||[]){const r=(e=o.sessions)==null?void 0:e.findIndex(s=>s.id===t.id);if(r!==-1&&r!==void 0){o.sessions[r]={...o.sessions[r],name:t.name,status:t.status,mode:t.mode,costUsd:t.costUsd,starred:t.starred,prUrl:t.prUrl,updatedAt:t.updatedAt};return}}}}}),Do=Fn("sessionStreaming",{state:()=>({partialText:"",partialThinkingBySession:{},_partialThrottleTimer:null,_pendingPartialText:null,sessionWorkLogs:{},sessionPartialText:{},sessionFileCounts:{},collapsedSessionLogs:new Set}),getters:{getPartialThinking:t=>e=>e&&t.partialThinkingBySession[e]||null,getSessionWorkLogs:t=>e=>t.sessionWorkLogs[e]||[],getSessionPartialText:t=>e=>t.sessionPartialText[e]||"",getSessionFileCount:t=>e=>t.sessionFileCounts[e]||0,isSessionLogCollapsed:t=>e=>t.collapsedSessionLogs.has(e)},actions:{setPartialText(t){this._pendingPartialText=t,this._partialThrottleTimer||(this.partialText=t,this._partialThrottleTimer=setTimeout(()=>{this._pendingPartialText!==null&&this._pendingPartialText!==this.partialText&&(this.partialText=this._pendingPartialText),this._partialThrottleTimer=null,this._pendingPartialText=null},150))},clearPartialText(){this.partialText="",this._pendingPartialText=null,this._partialThrottleTimer&&(clearTimeout(this._partialThrottleTimer),this._partialThrottleTimer=null)},setPartialThinking(t,e){e&&(this.partialThinkingBySession={...this.partialThinkingBySession,[e]:t||null})},clearPartialThinking(t){t&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:null})},clearAllPartialThinking(){this.partialThinkingBySession={}},addSessionWorkLog(t,e){this.sessionWorkLogs[t]||(this.sessionWorkLogs[t]=[]),this.sessionWorkLogs[t].push(e),this.sessionWorkLogs[t].length>15&&(this.sessionWorkLogs[t]=this.sessionWorkLogs[t].slice(-15)),this.sessionWorkLogs={...this.sessionWorkLogs}},setSessionPartialText(t,e){this.sessionPartialText={...this.sessionPartialText,[t]:e||""}},setSessionFileCount(t,e){this.sessionFileCounts={...this.sessionFileCounts,[t]:e}},hydrateSessionState(t,{workLogs:e,partialText:n,thinking:o}={}){if(e!=null&&e.length){const r=this.sessionWorkLogs[t]||[],s=new Set(r.map(i=>i.id)),c=e.filter(i=>!s.has(i.id));c.length&&(this.sessionWorkLogs={...this.sessionWorkLogs,[t]:[...r,...c].slice(-15)})}o&&!this.partialThinkingBySession[t]&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:o}),n&&!this.sessionPartialText[t]&&(this.sessionPartialText={...this.sessionPartialText,[t]:n})},clearSessionStreamingState(t){const{[t]:e,...n}=this.sessionWorkLogs;this.sessionWorkLogs=n;const{[t]:o,...r}=this.sessionPartialText;this.sessionPartialText=r;const{[t]:s,...c}=this.partialThinkingBySession;this.partialThinkingBySession=c;const{[t]:i,...l}=this.sessionFileCounts;this.sessionFileCounts=l},clearSessionEphemeralState(t){const{[t]:e,...n}=this.sessionPartialText;this.sessionPartialText=n;const{[t]:o,...r}=this.partialThinkingBySession;this.partialThinkingBySession=r},toggleSessionLogCollapsed(t){this.collapsedSessionLogs.has(t)?this.collapsedSessionLogs.delete(t):this.collapsedSessionLogs.add(t),this.collapsedSessionLogs=new Set(this.collapsedSessionLogs),this.saveCollapsedLogState()},saveCollapsedLogState(){try{localStorage.setItem("collapsedSessionLogs",JSON.stringify([...this.collapsedSessionLogs]))}catch{}},restoreCollapsedLogState(){try{const t=localStorage.getItem("collapsedSessionLogs");t&&(this.collapsedSessionLogs=new Set(JSON.parse(t)))}catch{}}}});function le(t){"@babel/helpers - typeof";return le=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(t)}function Et(t){if(t===null||t===!0||t===!1)return NaN;var e=Number(t);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function R(t,e){if(e.length<t)throw new TypeError(t+" argument"+(t>1?"s":"")+" required, but only "+e.length+" present")}function k(t){R(1,arguments);var e=Object.prototype.toString.call(t);return t instanceof Date||le(t)==="object"&&e==="[object Date]"?new Date(t.getTime()):typeof t=="number"||e==="[object Number]"?new Date(t):((typeof t=="string"||e==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function qo(t,e){R(2,arguments);var n=k(t).getTime(),o=Et(e);return new Date(n+o)}var _o={};function Vt(){return _o}function Ue(t){var e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),t.getTime()-e.getTime()}function oe(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getTime()-o.getTime();return r<0?-1:r>0?1:r}function ko(t){return R(1,arguments),t instanceof Date||le(t)==="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Co(t){if(R(1,arguments),!ko(t)&&typeof t!="number")return!1;var e=k(t);return!isNaN(Number(e))}function xo(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getFullYear()-o.getFullYear(),s=n.getMonth()-o.getMonth();return r*12+s}function Ro(t,e){return R(2,arguments),k(t).getTime()-k(e).getTime()}var Mo={ceil:Math.ceil,round:Math.round,floor:Math.floor,trunc:function(e){return e<0?Math.ceil(e):Math.floor(e)}},Oo="trunc";function No(t){return Mo[Oo]}function Po(t){R(1,arguments);var e=k(t);return e.setHours(23,59,59,999),e}function Uo(t){R(1,arguments);var e=k(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function Io(t){R(1,arguments);var e=k(t);return Po(e).getTime()===Uo(e).getTime()}function Ho(t,e){R(2,arguments);var n=k(t),o=k(e),r=oe(n,o),s=Math.abs(xo(n,o)),c;if(s<1)c=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-r*s);var i=oe(n,o)===-r;Io(k(t))&&s===1&&oe(t,o)===1&&(i=!1),c=r*(s-Number(i))}return c===0?0:c}function Fo(t,e,n){R(2,arguments);var o=Ro(t,e)/1e3;return No()(o)}function Bo(t,e){R(2,arguments);var n=Et(e);return qo(t,-n)}var $o=864e5;function Go(t){R(1,arguments);var e=k(t),n=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var o=e.getTime(),r=n-o;return Math.floor(r/$o)+1}function ue(t){R(1,arguments);var e=1,n=k(t),o=n.getUTCDay(),r=(o<e?7:0)+o-e;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function Bn(t){R(1,arguments);var e=k(t),n=e.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(n+1,0,4),o.setUTCHours(0,0,0,0);var r=ue(o),s=new Date(0);s.setUTCFullYear(n,0,4),s.setUTCHours(0,0,0,0);var c=ue(s);return e.getTime()>=r.getTime()?n+1:e.getTime()>=c.getTime()?n:n-1}function Wo(t){R(1,arguments);var e=Bn(t),n=new Date(0);n.setUTCFullYear(e,0,4),n.setUTCHours(0,0,0,0);var o=ue(n);return o}var Vo=6048e5;function zo(t){R(1,arguments);var e=k(t),n=ue(e).getTime()-Wo(e).getTime();return Math.round(n/Vo)+1}function de(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.weekStartsOn)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.weekStartsOn)!==null&&r!==void 0?r:y.weekStartsOn)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.weekStartsOn)!==null&&n!==void 0?n:0);if(!(h>=0&&h<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var D=k(t),w=D.getUTCDay(),v=(w<h?7:0)+w-h;return D.setUTCDate(D.getUTCDate()-v),D.setUTCHours(0,0,0,0),D}function $n(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=k(t),h=y.getUTCFullYear(),D=Vt(),w=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:D.firstWeekContainsDate)!==null&&o!==void 0?o:(l=D.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1);if(!(w>=1&&w<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var v=new Date(0);v.setUTCFullYear(h+1,0,w),v.setUTCHours(0,0,0,0);var b=de(v,e),C=new Date(0);C.setUTCFullYear(h,0,w),C.setUTCHours(0,0,0,0);var X=de(C,e);return y.getTime()>=b.getTime()?h+1:y.getTime()>=X.getTime()?h:h-1}function jo(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:y.firstWeekContainsDate)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1),D=$n(t,e),w=new Date(0);w.setUTCFullYear(D,0,h),w.setUTCHours(0,0,0,0);var v=de(w,e);return v}var Yo=6048e5;function Xo(t,e){R(1,arguments);var n=k(t),o=de(n,e).getTime()-jo(n,e).getTime();return Math.round(o/Yo)+1}function q(t,e){for(var n=t<0?"-":"",o=Math.abs(t).toString();o.length<e;)o="0"+o;return n+o}var bt={y:function(e,n){var o=e.getUTCFullYear(),r=o>0?o:1-o;return q(n==="yy"?r%100:r,n.length)},M:function(e,n){var o=e.getUTCMonth();return n==="M"?String(o+1):q(o+1,2)},d:function(e,n){return q(e.getUTCDate(),n.length)},a:function(e,n){var o=e.getUTCHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.toUpperCase();case"aaa":return o;case"aaaaa":return o[0];case"aaaa":default:return o==="am"?"a.m.":"p.m."}},h:function(e,n){return q(e.getUTCHours()%12||12,n.length)},H:function(e,n){return q(e.getUTCHours(),n.length)},m:function(e,n){return q(e.getUTCMinutes(),n.length)},s:function(e,n){return q(e.getUTCSeconds(),n.length)},S:function(e,n){var o=n.length,r=e.getUTCMilliseconds(),s=Math.floor(r*Math.pow(10,o-3));return q(s,n.length)}},xt={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Zo={G:function(e,n,o){var r=e.getUTCFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return o.era(r,{width:"abbreviated"});case"GGGGG":return o.era(r,{width:"narrow"});case"GGGG":default:return o.era(r,{width:"wide"})}},y:function(e,n,o){if(n==="yo"){var r=e.getUTCFullYear(),s=r>0?r:1-r;return o.ordinalNumber(s,{unit:"year"})}return bt.y(e,n)},Y:function(e,n,o,r){var s=$n(e,r),c=s>0?s:1-s;if(n==="YY"){var i=c%100;return q(i,2)}return n==="Yo"?o.ordinalNumber(c,{unit:"year"}):q(c,n.length)},R:function(e,n){var o=Bn(e);return q(o,n.length)},u:function(e,n){var o=e.getUTCFullYear();return q(o,n.length)},Q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"Q":return String(r);case"QQ":return q(r,2);case"Qo":return o.ordinalNumber(r,{unit:"quarter"});case"QQQ":return o.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return o.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return o.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"q":return String(r);case"qq":return q(r,2);case"qo":return o.ordinalNumber(r,{unit:"quarter"});case"qqq":return o.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return o.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return o.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,n,o){var r=e.getUTCMonth();switch(n){case"M":case"MM":return bt.M(e,n);case"Mo":return o.ordinalNumber(r+1,{unit:"month"});case"MMM":return o.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return o.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return o.month(r,{width:"wide",context:"formatting"})}},L:function(e,n,o){var r=e.getUTCMonth();switch(n){case"L":return String(r+1);case"LL":return q(r+1,2);case"Lo":return o.ordinalNumber(r+1,{unit:"month"});case"LLL":return o.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return o.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return o.month(r,{width:"wide",context:"standalone"})}},w:function(e,n,o,r){var s=Xo(e,r);return n==="wo"?o.ordinalNumber(s,{unit:"week"}):q(s,n.length)},I:function(e,n,o){var r=zo(e);return n==="Io"?o.ordinalNumber(r,{unit:"week"}):q(r,n.length)},d:function(e,n,o){return n==="do"?o.ordinalNumber(e.getUTCDate(),{unit:"date"}):bt.d(e,n)},D:function(e,n,o){var r=Go(e);return n==="Do"?o.ordinalNumber(r,{unit:"dayOfYear"}):q(r,n.length)},E:function(e,n,o){var r=e.getUTCDay();switch(n){case"E":case"EE":case"EEE":return o.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return o.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return o.day(r,{width:"short",context:"formatting"});case"EEEE":default:return o.day(r,{width:"wide",context:"formatting"})}},e:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"e":return String(c);case"ee":return q(c,2);case"eo":return o.ordinalNumber(c,{unit:"day"});case"eee":return o.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return o.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return o.day(s,{width:"short",context:"formatting"});case"eeee":default:return o.day(s,{width:"wide",context:"formatting"})}},c:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"c":return String(c);case"cc":return q(c,n.length);case"co":return o.ordinalNumber(c,{unit:"day"});case"ccc":return o.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return o.day(s,{width:"narrow",context:"standalone"});case"cccccc":return o.day(s,{width:"short",context:"standalone"});case"cccc":default:return o.day(s,{width:"wide",context:"standalone"})}},i:function(e,n,o){var r=e.getUTCDay(),s=r===0?7:r;switch(n){case"i":return String(s);case"ii":return q(s,n.length);case"io":return o.ordinalNumber(s,{unit:"day"});case"iii":return o.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return o.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return o.day(r,{width:"short",context:"formatting"});case"iiii":default:return o.day(r,{width:"wide",context:"formatting"})}},a:function(e,n,o){var r=e.getUTCHours(),s=r/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(e,n,o){var r=e.getUTCHours(),s;switch(r===12?s=xt.noon:r===0?s=xt.midnight:s=r/12>=1?"pm":"am",n){case"b":case"bb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(e,n,o){var r=e.getUTCHours(),s;switch(r>=17?s=xt.evening:r>=12?s=xt.afternoon:r>=4?s=xt.morning:s=xt.night,n){case"B":case"BB":case"BBB":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(e,n,o){if(n==="ho"){var r=e.getUTCHours()%12;return r===0&&(r=12),o.ordinalNumber(r,{unit:"hour"})}return bt.h(e,n)},H:function(e,n,o){return n==="Ho"?o.ordinalNumber(e.getUTCHours(),{unit:"hour"}):bt.H(e,n)},K:function(e,n,o){var r=e.getUTCHours()%12;return n==="Ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},k:function(e,n,o){var r=e.getUTCHours();return r===0&&(r=24),n==="ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},m:function(e,n,o){return n==="mo"?o.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):bt.m(e,n)},s:function(e,n,o){return n==="so"?o.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):bt.s(e,n)},S:function(e,n){return bt.S(e,n)},X:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();if(c===0)return"Z";switch(n){case"X":return hn(c);case"XXXX":case"XX":return St(c);case"XXXXX":case"XXX":default:return St(c,":")}},x:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"x":return hn(c);case"xxxx":case"xx":return St(c);case"xxxxx":case"xxx":default:return St(c,":")}},O:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+gn(c,":");case"OOOO":default:return"GMT"+St(c,":")}},z:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+gn(c,":");case"zzzz":default:return"GMT"+St(c,":")}},t:function(e,n,o,r){var s=r._originalDate||e,c=Math.floor(s.getTime()/1e3);return q(c,n.length)},T:function(e,n,o,r){var s=r._originalDate||e,c=s.getTime();return q(c,n.length)}};function gn(t,e){var n=t>0?"-":"+",o=Math.abs(t),r=Math.floor(o/60),s=o%60;if(s===0)return n+String(r);var c=e;return n+String(r)+c+q(s,2)}function hn(t,e){if(t%60===0){var n=t>0?"-":"+";return n+q(Math.abs(t)/60,2)}return St(t,e)}function St(t,e){var n=e||"",o=t>0?"-":"+",r=Math.abs(t),s=q(Math.floor(r/60),2),c=q(r%60,2);return o+s+n+c}var vn=function(e,n){switch(e){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},Gn=function(e,n){switch(e){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},Qo=function(e,n){var o=e.match(/(P+)(p+)?/)||[],r=o[1],s=o[2];if(!s)return vn(e,n);var c;switch(r){case"P":c=n.dateTime({width:"short"});break;case"PP":c=n.dateTime({width:"medium"});break;case"PPP":c=n.dateTime({width:"long"});break;case"PPPP":default:c=n.dateTime({width:"full"});break}return c.replace("{{date}}",vn(r,n)).replace("{{time}}",Gn(s,n))},Jo={p:Gn,P:Qo},Ko=["D","DD"],tr=["YY","YYYY"];function er(t){return Ko.indexOf(t)!==-1}function nr(t){return tr.indexOf(t)!==-1}function bn(t,e,n){if(t==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var or={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},rr=function(e,n,o){var r,s=or[e];return typeof s=="string"?r=s:n===1?r=s.one:r=s.other.replace("{{count}}",n.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+r:r+" ago":r};function qe(t){return function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.width?String(e.width):t.defaultWidth,o=t.formats[n]||t.formats[t.defaultWidth];return o}}var sr={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},ar={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},cr={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ir={date:qe({formats:sr,defaultWidth:"full"}),time:qe({formats:ar,defaultWidth:"full"}),dateTime:qe({formats:cr,defaultWidth:"full"})},lr={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ur=function(e,n,o,r){return lr[e]};function It(t){return function(e,n){var o=n!=null&&n.context?String(n.context):"standalone",r;if(o==="formatting"&&t.formattingValues){var s=t.defaultFormattingWidth||t.defaultWidth,c=n!=null&&n.width?String(n.width):s;r=t.formattingValues[c]||t.formattingValues[s]}else{var i=t.defaultWidth,l=n!=null&&n.width?String(n.width):t.defaultWidth;r=t.values[l]||t.values[i]}var f=t.argumentCallback?t.argumentCallback(e):e;return r[f]}}var dr={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},fr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},pr={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},mr={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},gr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},hr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},vr=function(e,n){var o=Number(e),r=o%100;if(r>20||r<10)switch(r%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},br={ordinalNumber:vr,era:It({values:dr,defaultWidth:"wide"}),quarter:It({values:fr,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:It({values:pr,defaultWidth:"wide"}),day:It({values:mr,defaultWidth:"wide"}),dayPeriod:It({values:gr,defaultWidth:"wide",formattingValues:hr,defaultFormattingWidth:"wide"})};function Ht(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.width,r=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],s=e.match(r);if(!s)return null;var c=s[0],i=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],l=Array.isArray(i)?yr(i,function(h){return h.test(c)}):wr(i,function(h){return h.test(c)}),f;f=t.valueCallback?t.valueCallback(l):l,f=n.valueCallback?n.valueCallback(f):f;var y=e.slice(c.length);return{value:f,rest:y}}}function wr(t,e){for(var n in t)if(t.hasOwnProperty(n)&&e(t[n]))return n}function yr(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n}function Tr(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=e.match(t.matchPattern);if(!o)return null;var r=o[0],s=e.match(t.parsePattern);if(!s)return null;var c=t.valueCallback?t.valueCallback(s[0]):s[0];c=n.valueCallback?n.valueCallback(c):c;var i=e.slice(r.length);return{value:c,rest:i}}}var Sr=/^(\d+)(th|st|nd|rd)?/i,Er=/\d+/i,Ar={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Lr={any:[/^b/i,/^(a|c)/i]},Dr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},qr={any:[/1/i,/2/i,/3/i,/4/i]},_r={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},kr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Cr={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},xr={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Rr={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Mr={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Or={ordinalNumber:Tr({matchPattern:Sr,parsePattern:Er,valueCallback:function(e){return parseInt(e,10)}}),era:Ht({matchPatterns:Ar,defaultMatchWidth:"wide",parsePatterns:Lr,defaultParseWidth:"any"}),quarter:Ht({matchPatterns:Dr,defaultMatchWidth:"wide",parsePatterns:qr,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Ht({matchPatterns:_r,defaultMatchWidth:"wide",parsePatterns:kr,defaultParseWidth:"any"}),day:Ht({matchPatterns:Cr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any"}),dayPeriod:Ht({matchPatterns:Rr,defaultMatchWidth:"any",parsePatterns:Mr,defaultParseWidth:"any"})},Wn={code:"en-US",formatDistance:rr,formatLong:ir,formatRelative:ur,localize:br,match:Or,options:{weekStartsOn:0,firstWeekContainsDate:1}},Nr=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Pr=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ur=/^'([^]*?)'?$/,Ir=/''/g,Hr=/[a-zA-Z]/;function R$(t,e,n){var o,r,s,c,i,l,f,y,h,D,w,v,b,C;R(2,arguments);var X=String(e),Z=Vt(),$=(o=(r=void 0)!==null&&r!==void 0?r:Z.locale)!==null&&o!==void 0?o:Wn,M=Et((s=(c=(i=(l=void 0)!==null&&l!==void 0?l:void 0)!==null&&i!==void 0?i:Z.firstWeekContainsDate)!==null&&c!==void 0?c:(f=Z.locale)===null||f===void 0||(y=f.options)===null||y===void 0?void 0:y.firstWeekContainsDate)!==null&&s!==void 0?s:1);if(!(M>=1&&M<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var O=Et((h=(D=(w=(v=void 0)!==null&&v!==void 0?v:void 0)!==null&&w!==void 0?w:Z.weekStartsOn)!==null&&D!==void 0?D:(b=Z.locale)===null||b===void 0||(C=b.options)===null||C===void 0?void 0:C.weekStartsOn)!==null&&h!==void 0?h:0);if(!(O>=0&&O<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!$.localize)throw new RangeError("locale must contain localize property");if(!$.formatLong)throw new RangeError("locale must contain formatLong property");var x=k(t);if(!Co(x))throw new RangeError("Invalid time value");var ot=Ue(x),et=Bo(x,ot),lt={firstWeekContainsDate:M,weekStartsOn:O,locale:$,_originalDate:x},ut=X.match(Pr).map(function(L){var Q=L[0];if(Q==="p"||Q==="P"){var st=Jo[Q];return st(L,$.formatLong)}return L}).join("").match(Nr).map(function(L){if(L==="''")return"'";var Q=L[0];if(Q==="'")return Fr(L);var st=Zo[Q];if(st)return nr(L)&&bn(L,e,String(t)),er(L)&&bn(L,e,String(t)),st(et,L,$.localize,lt);if(Q.match(Hr))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Q+"`");return L}).join("");return ut}function Fr(t){var e=t.match(Ur);return e?e[1].replace(Ir,"'"):t}function Vn(t,e){if(t==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function Br(t){return Vn({},t)}var wn=1440,$r=2520,_e=43200,Gr=86400;function Wr(t,e,n){var o,r;R(2,arguments);var s=Vt(),c=(o=(r=n==null?void 0:n.locale)!==null&&r!==void 0?r:s.locale)!==null&&o!==void 0?o:Wn;if(!c.formatDistance)throw new RangeError("locale must contain formatDistance property");var i=oe(t,e);if(isNaN(i))throw new RangeError("Invalid time value");var l=Vn(Br(n),{addSuffix:!!(n!=null&&n.addSuffix),comparison:i}),f,y;i>0?(f=k(e),y=k(t)):(f=k(t),y=k(e));var h=Fo(y,f),D=(Ue(y)-Ue(f))/1e3,w=Math.round((h-D)/60),v;if(w<2)return n!=null&&n.includeSeconds?h<5?c.formatDistance("lessThanXSeconds",5,l):h<10?c.formatDistance("lessThanXSeconds",10,l):h<20?c.formatDistance("lessThanXSeconds",20,l):h<40?c.formatDistance("halfAMinute",0,l):h<60?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",1,l):w===0?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",w,l);if(w<45)return c.formatDistance("xMinutes",w,l);if(w<90)return c.formatDistance("aboutXHours",1,l);if(w<wn){var b=Math.round(w/60);return c.formatDistance("aboutXHours",b,l)}else{if(w<$r)return c.formatDistance("xDays",1,l);if(w<_e){var C=Math.round(w/wn);return c.formatDistance("xDays",C,l)}else if(w<Gr)return v=Math.round(w/_e),c.formatDistance("aboutXMonths",v,l)}if(v=Ho(y,f),v<12){var X=Math.round(w/_e);return c.formatDistance("xMonths",X,l)}else{var Z=v%12,$=Math.floor(v/12);return Z<3?c.formatDistance("aboutXYears",$,l):Z<9?c.formatDistance("overXYears",$,l):c.formatDistance("almostXYears",$+1,l)}}function M$(t,e){return R(1,arguments),Wr(t,Date.now(),e)}const yn={running:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor"
2
2
  stroke-width="1.5" stroke-linejoin="round">
3
3
  <path d="M3,2 L13,2 L8.5,7.5 L13,13 L3,13 L7.5,7.5 Z"/>
4
4
  <path d="M4,2.5 L12,2.5 L8.5,6.5 Z" fill="currentColor" opacity="0.5"/>
@@ -1 +1 @@
1
- import{_ as f,a as u,c,b as t,d as n,w as i,f as r,J as d,F as S,r as y,z as h,g,h as k,B as w,t as x}from"./index-C2QFVD7d.js";const V={class:"container"},B={class:"tabs"},C={class:"tabs-desktop"},T={class:"tabs-mobile"},L=["value"],N=["value"],z={class:"tab-content"},F={__name:"SettingsView",setup(M){const v=w(),p=k(),m=[{id:"providers",label:"Model Providers",path:"/settings/providers"},{id:"summary",label:"Summary Settings",path:"/settings/summary"},{id:"general",label:"Settings",path:"/settings/general"},{id:"logs",label:"Logs",path:"/settings/logs"}],e=h(()=>{const a=v.path.split("/");return a[a.length-1]||"providers"});function _(a){p.push(`/settings/${a}`)}return(a,s)=>{const l=g("router-link"),b=g("router-view");return u(),c("div",V,[s[5]||(s[5]=t("h1",null,"Settings",-1)),t("div",B,[t("div",C,[n(l,{to:"/settings/providers",class:d(["tab",{active:e.value==="providers"}])},{default:i(()=>[...s[1]||(s[1]=[r(" Model Providers ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/summary",class:d(["tab",{active:e.value==="summary"}])},{default:i(()=>[...s[2]||(s[2]=[r(" Summary Settings ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/general",class:d(["tab",{active:e.value==="general"}])},{default:i(()=>[...s[3]||(s[3]=[r(" Settings ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/logs",class:d(["tab",{active:e.value==="logs"}])},{default:i(()=>[...s[4]||(s[4]=[r(" Logs ",-1)])]),_:1},8,["class"])]),t("div",T,[t("select",{value:e.value,class:"tab-select",onChange:s[0]||(s[0]=o=>_(o.target.value))},[(u(),c(S,null,y(m,o=>t("option",{key:o.id,value:o.id},x(o.label),9,N)),64))],40,L)])]),t("div",z,[n(b)])])}}},R=f(F,[["__scopeId","data-v-c1d27cca"]]);export{R as default};
1
+ import{_ as f,a as u,c,b as t,d as n,w as i,f as r,J as d,F as S,r as y,z as h,g,h as k,B as w,t as x}from"./index-CvXApbVC.js";const V={class:"container"},B={class:"tabs"},C={class:"tabs-desktop"},T={class:"tabs-mobile"},L=["value"],N=["value"],z={class:"tab-content"},F={__name:"SettingsView",setup(M){const v=w(),p=k(),m=[{id:"providers",label:"Model Providers",path:"/settings/providers"},{id:"summary",label:"Summary Settings",path:"/settings/summary"},{id:"general",label:"Settings",path:"/settings/general"},{id:"logs",label:"Logs",path:"/settings/logs"}],e=h(()=>{const a=v.path.split("/");return a[a.length-1]||"providers"});function _(a){p.push(`/settings/${a}`)}return(a,s)=>{const l=g("router-link"),b=g("router-view");return u(),c("div",V,[s[5]||(s[5]=t("h1",null,"Settings",-1)),t("div",B,[t("div",C,[n(l,{to:"/settings/providers",class:d(["tab",{active:e.value==="providers"}])},{default:i(()=>[...s[1]||(s[1]=[r(" Model Providers ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/summary",class:d(["tab",{active:e.value==="summary"}])},{default:i(()=>[...s[2]||(s[2]=[r(" Summary Settings ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/general",class:d(["tab",{active:e.value==="general"}])},{default:i(()=>[...s[3]||(s[3]=[r(" Settings ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/logs",class:d(["tab",{active:e.value==="logs"}])},{default:i(()=>[...s[4]||(s[4]=[r(" Logs ",-1)])]),_:1},8,["class"])]),t("div",T,[t("select",{value:e.value,class:"tab-select",onChange:s[0]||(s[0]=o=>_(o.target.value))},[(u(),c(S,null,y(m,o=>t("option",{key:o.id,value:o.id},x(o.label),9,N)),64))],40,L)])]),t("div",z,[n(b)])])}}},R=f(F,[["__scopeId","data-v-c1d27cca"]]);export{R as default};