circuschief 0.1.2 → 0.1.4

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 (56) hide show
  1. package/package.json +2 -2
  2. package/packages/server/bin/cli.js +1 -1
  3. package/packages/web/dist/assets/{ActiveSessionsView-2qqzd1tM.js → ActiveSessionsView-BryJ-V3f.js} +1 -1
  4. package/packages/web/dist/assets/{AgentLogsView-DbulYJ7p.js → AgentLogsView-c42v_j_5.js} +1 -1
  5. package/packages/web/dist/assets/{ArchiveConfirmModal-Byx5Usg6.js → ArchiveConfirmModal-DBuOmtXu.js} +1 -1
  6. package/packages/web/dist/assets/{CommandButtonDetailView-TMSVeeLH.js → CommandButtonDetailView-CkKJ3Htz.js} +1 -1
  7. package/packages/web/dist/assets/{EffortLevelSelector-DIj0Wykj.js → EffortLevelSelector-BHJHSqul.js} +1 -1
  8. package/packages/web/dist/assets/{GeneralSettingsView-1a3MKUwM.js → GeneralSettingsView-CdxfteZ2.js} +1 -1
  9. package/packages/web/dist/assets/{InterpolationHelp-DX4mjTd3.js → InterpolationHelp-DabnHhE4.js} +1 -1
  10. package/packages/web/dist/assets/MarkdownEditor-k4zBLGqU.js +2 -0
  11. package/packages/web/dist/assets/{ModelSelector-C9RlCVhC.js → ModelSelector-BWIU4ud7.js} +1 -1
  12. package/packages/web/dist/assets/{NewSessionView-B9W_35D0.js → NewSessionView-BIZl8QlH.js} +1 -1
  13. package/packages/web/dist/assets/{PathChooser-Di96sZpx.js → PathChooser-nhat_Pz4.js} +1 -1
  14. package/packages/web/dist/assets/{ProjectEditView-ZnWKaSqt.js → ProjectEditView-DD-2_VrW.js} +1 -1
  15. package/packages/web/dist/assets/{ProjectListView-C_yWe1QB.js → ProjectListView-BOWbfoXQ.js} +1 -1
  16. package/packages/web/dist/assets/{ProjectNewView-ONPpDPNA.js → ProjectNewView-DC4uvSn2.js} +1 -1
  17. package/packages/web/dist/assets/{ProvidersView-BPd0xozI.js → ProvidersView-DT5afh1V.js} +1 -1
  18. package/packages/web/dist/assets/{QuickResponseSettings-DB8MD7dm.js → QuickResponseSettings-Bk9mq96x.js} +1 -1
  19. package/packages/web/dist/assets/{QuickResponsesPanel-D0B5nzGw.js → QuickResponsesPanel-BRvcnkQr.js} +1 -1
  20. package/packages/web/dist/assets/{ResizableTextarea-DDChlp5b.js → ResizableTextarea-CwGM4P3c.js} +1 -1
  21. package/packages/web/dist/assets/{SessionCard-BD6MuoON.js → SessionCard-BGDVHU9u.js} +1 -1
  22. package/packages/web/dist/assets/{SessionDetailView-BrMG4p2-.css → SessionDetailView-7bWgC7Es.css} +1 -1
  23. package/packages/web/dist/assets/{SessionDetailView-lNqco-dG.js → SessionDetailView-CHYrx2Ab.js} +24 -24
  24. package/packages/web/dist/assets/{SessionFormOptions-Doyl_mON.js → SessionFormOptions-8qvL25ca.js} +1 -1
  25. package/packages/web/dist/assets/{SessionListView-B6emPw4T.js → SessionListView-927Yq6Il.js} +1 -1
  26. package/packages/web/dist/assets/{SessionLogStream-BFjl4wy7.js → SessionLogStream-B-w3n4c3.js} +1 -1
  27. package/packages/web/dist/assets/{SettingsView-CJNMi4aJ.js → SettingsView-Dd0ZJ4Nv.js} +1 -1
  28. package/packages/web/dist/assets/{SlashCommandWizard-CpNLU4vI.js → SlashCommandWizard-CzyLjsdJ.js} +1 -1
  29. package/packages/web/dist/assets/{SummarySettingsView-DGjXv3Px.js → SummarySettingsView-DTbh7uAF.js} +1 -1
  30. package/packages/web/dist/assets/{TemplateDetailView-DqA7M5Pe.js → TemplateDetailView-BOnhkdtH.js} +1 -1
  31. package/packages/web/dist/assets/{commandButtons-CCojrcrv.js → commandButtons-CY87n64i.js} +1 -1
  32. package/packages/web/dist/assets/{index-Om-y-ZVA.js → index--OtPwBbF.js} +3 -3
  33. package/packages/web/dist/assets/{index-DGzmo-Vd.js → index-BRUlEEHm.js} +1 -1
  34. package/packages/web/dist/assets/{index-BGUUMf-N.js → index-BXUcbV4K.js} +1 -1
  35. package/packages/web/dist/assets/{index-Bs1D4Ibo.js → index-Bi4bQ_UB.js} +1 -1
  36. package/packages/web/dist/assets/{index-Xz0F6Or0.js → index-BshkV3r5.js} +1 -1
  37. package/packages/web/dist/assets/{index-D3EUAUMi.js → index-C6m-WfqP.js} +1 -1
  38. package/packages/web/dist/assets/{index-jHzQFk08.js → index-CO4EBOFw.js} +1 -1
  39. package/packages/web/dist/assets/{index-DJVf5YvL.js → index-Ce6sL47U.js} +1 -1
  40. package/packages/web/dist/assets/{index-DZvIqKGE.js → index-CjHb9rXv.js} +1 -1
  41. package/packages/web/dist/assets/{index-DFFF6QRP.js → index-DPwwgloE.js} +1 -1
  42. package/packages/web/dist/assets/{index-B0XHqJYv.js → index-DcA6pqXV.js} +1 -1
  43. package/packages/web/dist/assets/{index-LoOsRfMI.js → index-DkLkDgig.js} +8 -8
  44. package/packages/web/dist/assets/{index-02CN8N8c.js → index-Dx0sYW7H.js} +1 -1
  45. package/packages/web/dist/assets/{index-BwySZO9U.js → index-DxboI9i-.js} +1 -1
  46. package/packages/web/dist/assets/{index-CLVE7KEk.js → index-NzLFVaCi.js} +1 -1
  47. package/packages/web/dist/assets/{index-DSOHGmA9.js → index-aCw-iXPX.js} +1 -1
  48. package/packages/web/dist/assets/{index-DZZ8d3HG.js → index-gMpnPf1V.js} +1 -1
  49. package/packages/web/dist/assets/{index-BN1MywtA.js → index-i1o916sk.js} +1 -1
  50. package/packages/web/dist/assets/{index-ZKQQ6-mY.js → index-jGjvGBfk.js} +1 -1
  51. package/packages/web/dist/assets/{projects-DWX5jGcZ.js → projects-C2Y29PSJ.js} +1 -1
  52. package/packages/web/dist/assets/{providers-CfGxUhUu.js → providers-CeJXuo0Q.js} +1 -1
  53. package/packages/web/dist/assets/{sessions-i5xO8Qao.js → sessions-CMby7ij3.js} +1 -1
  54. package/packages/web/dist/assets/{settings-dSK3wckF.js → settings-BplIxCbi.js} +1 -1
  55. package/packages/web/dist/index.html +1 -1
  56. package/packages/web/dist/assets/MarkdownEditor-DeCPmMTP.js +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuschief",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Local-first web UI for managing Claude Code sessions",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,7 +20,7 @@
20
20
  "zod": "^4.2.1",
21
21
  "@anthropic-ai/claude-agent-sdk": "^0.1.76",
22
22
  "@anthropic-ai/sdk": "^0.71.2",
23
- "better-sqlite3": "^11.7.0",
23
+ "better-sqlite3": "^12.1.0",
24
24
  "cors": "^2.8.5",
25
25
  "express": "^4.21.2",
26
26
  "http-proxy-middleware": "^3.0.5",
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.NODE_ENV = 'production';
4
- import '../src/index.js';
4
+ await import('../src/index.js');
@@ -1 +1 @@
1
- import{u as Y}from"./sessions-i5xO8Qao.js";import{u as $}from"./commandButtons-CCojrcrv.js";import{B as g,W as u,_ as z,o as q,z as J,m as K,a,c,b as p,F as A,r as C,E as T,u as m,t as O,d as Q,w as X,e as Z,l as ee,y as D,x as b,f as te,G as se}from"./index-LoOsRfMI.js";import{a as x}from"./ApiClient-Dbs1H78V.js";import{S as re}from"./SessionCard-BD6MuoON.js";import"./settings-dSK3wckF.js";import"./SessionLogStream-BFjl4wy7.js";function ne(){const{on:E,off:t}=g(),d=y=>_=>{const i=f=>{f.session&&_(f.session,f.projectId)};return E(y,i),()=>t(y,i)},w=d(u.SESSION_CREATED),N=d(u.SESSION_UPDATED);return{onSessionCreated:w,onSessionUpdated:N,onSessionDeleted:y=>{const _=i=>{i.sessionId&&y(i.sessionId,i.projectId)};return E(u.SESSION_DELETED,_),()=>t(u.SESSION_DELETED,_)},onSessionSummaryUpdated:y=>{const _=i=>{i.sessionId&&i.summary&&y(i.sessionId,i.summary,i.projectId)};return E(u.SESSION_SUMMARY_UPDATED,_),()=>t(u.SESSION_SUMMARY_UPDATED,_)}}}const oe={class:"container"},ie={class:"filters-container"},ae={class:"status-filters"},le=["onClick"],ce=["title"],ue={key:0,class:"star-icon"},de={key:1,class:"star-icon star-crossed"},fe={key:2,class:"star-icon"},Se={key:0,class:"skeleton-list"},pe={key:1,class:"error-message"},me={key:2,class:"empty-state"},_e={key:3,class:"empty-state"},he={key:4,class:"session-list"},ye={__name:"ActiveSessionsView",setup(E){const t=Y(),d=$(),w=["waiting","stopped","error"],N=["running","starting"],F=ee(new Set),R=r=>{t.statusFilter===r?t.setStatusFilter(null):t.setStatusFilter(r)},y=()=>{t.starredFilter===null?t.setStarredFilter("starred"):t.starredFilter==="starred"?t.setStarredFilter("unstarred"):t.setStarredFilter(null)},_=b(()=>t.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":t.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred."),i=b(()=>{let r=t.activeSessions;return t.statusFilter&&(r=r.filter(s=>{const e=s.status;return!!(t.statusFilter==="idle"&&w.includes(e)||t.statusFilter==="running"&&N.includes(e))})),t.starredFilter==="starred"?r=r.filter(s=>s.starred):t.starredFilter==="unstarred"&&(r=r.filter(s=>!s.starred)),r}),f=D({}),S=D({}),h=D({});let k=null;const v=[],{onSessionCreated:j,onSessionUpdated:P,onSessionDeleted:B,onSessionSummaryUpdated:L}=ne();async function M(){const r=new Set(t.activeSessions.map(s=>s.projectId).filter(s=>s&&!F.value.has(s)));for(const s of r)try{await d.fetchButtons(s),await d.fetchLatestRunsForProject(s),F.value.add(s)}catch(e){console.error(`Failed to fetch buttons for project ${s}:`,e)}}function U(r,s,e){d.runs[r]||(d.runs[r]={runId:r,buttonId:s,sessionId:e,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1})}function V(r,s,e){const n=o=>{U(o.runId,o.buttonId,o.sessionId),d.appendOutput(o.runId,o.output)};r(u.COMMAND_RUN_OUTPUT,n),e.push(()=>s(u.COMMAND_RUN_OUTPUT,n));const l=o=>{U(o.runId,o.buttonId,o.sessionId),d.completeRun(o.runId,o.exitCode,o.output)};r(u.COMMAND_RUN_COMPLETE,l),e.push(()=>s(u.COMMAND_RUN_COMPLETE,l));const I=o=>{U(o.runId,o.buttonId,o.sessionId),d.errorRun(o.runId,o.error)};r(u.COMMAND_RUN_ERROR,I),e.push(()=>s(u.COMMAND_RUN_ERROR,I))}q(async()=>{t.restoreStatusFilter(),t.restoreStarredFilter(),await t.fetchActiveSessions(),await M(),v.push(j(e=>{["running","waiting","starting"].includes(e.status)&&(t.activeSessions.some(l=>l.id===e.id)||(t.activeSessions.unshift(e),e.projectId&&!F.value.has(e.projectId)&&(d.fetchButtons(e.projectId),F.value.add(e.projectId))))})),v.push(P(e=>{const n=["running","waiting","starting"].includes(e.status),l=t.activeSessions.findIndex(I=>I.id===e.id);n?l>=0?t.activeSessions[l]=e:t.activeSessions.unshift(e):l>=0&&(t.activeSessions.splice(l,1),delete f[e.id],delete S[e.id],delete h[e.id])})),v.push(B(e=>{const n=t.activeSessions.findIndex(l=>l.id===e);n>=0&&t.activeSessions.splice(n,1),delete f[e],delete S[e],delete h[e]})),v.push(L((e,n)=>{f[e]=n,S[e]=!1,h[e]=!1}));const{on:r,off:s}=g();V(r,s,v),k=setInterval(()=>{t.fetchActiveSessions(!1)},3e4)}),J(()=>{v.forEach(r=>r()),k&&clearInterval(k)}),K(()=>t.activeSessions,()=>{H(),M()},{immediate:!0});async function H(){const s=t.activeSessions.filter(e=>!f[e.id]&&!S[e.id]).map(e=>e.id);if(s.length!==0){for(const e of s)S[e]=!0,h[e]=!1;try{const e=await x.getSessionSummariesBatch(s);for(const n of s)e[n]&&(f[n]=e[n]),S[n]=!1}catch(e){console.warn("Failed to fetch summaries batch:",e.message);for(const n of s)h[n]=!0,S[n]=!1}}}async function G(r){var s;S[r]=!0,h[r]=!1;try{const e=await x.getSessionSummary(r);e&&(f[r]=e)}catch(e){((s=e.response)==null?void 0:s.status)!==404&&(console.warn(`Failed to fetch summary for session ${r}:`,e.message),h[r]=!0)}finally{S[r]=!1}}async function W(r){h[r]=!1,await G(r)}return(r,s)=>{const e=te("router-link");return a(),c("div",oe,[s[3]||(s[3]=p("div",{class:"page-header"},[p("div",null,[p("p",{class:"page-description"}," All active sessions across your projects ")])],-1)),p("div",ie,[p("div",ae,[(a(),c(A,null,C(["running","idle"],n=>p("button",{key:n,class:T(["filter-btn",{active:m(t).statusFilter===n}]),onClick:l=>R(n)},O(n),11,le)),64)),p("button",{class:T(["filter-btn star-btn",{"star-filter-active":m(t).starredFilter==="starred","star-filter-unstarred":m(t).starredFilter==="unstarred","star-filter-all":m(t).starredFilter===null}]),title:_.value,onClick:y},[m(t).starredFilter==="starred"?(a(),c("span",ue,"⭐")):m(t).starredFilter==="unstarred"?(a(),c("span",de,"⭐")):(a(),c("span",fe,"☆"))],10,ce)])]),m(t).loading?(a(),c("div",Se,[(a(),c(A,null,C(3,n=>p("div",{key:n,class:"skeleton card",style:{height:"120px"}})),64))])):m(t).error?(a(),c("div",pe,O(m(t).error),1)):m(t).activeSessions.length===0?(a(),c("div",me,[s[1]||(s[1]=p("p",null,"No active sessions. All sessions are completed or there are no sessions yet.",-1)),Q(e,{to:"/",class:"btn btn-primary"},{default:X(()=>[...s[0]||(s[0]=[Z(" View Projects ",-1)])]),_:1})])):i.value.length===0?(a(),c("div",_e,[...s[2]||(s[2]=[p("p",null,"No sessions match the current filter.",-1)])])):(a(),c("div",he,[(a(!0),c(A,null,C(i.value,n=>(a(),se(re,{key:n.id,session:n,"show-project":!0,"show-summary":!0,summary:f[n.id],"summary-loading":S[n.id],"summary-error":h[n.id],onRetrySummary:W},null,8,["session","summary","summary-loading","summary-error"]))),128))]))])}}},Ue=z(ye,[["__scopeId","data-v-21acfc18"]]);export{Ue as default};
1
+ import{u as Y}from"./sessions-CMby7ij3.js";import{u as $}from"./commandButtons-CY87n64i.js";import{B as g,W as u,_ as z,o as q,z as J,m as K,a,c,b as p,F as A,r as C,E as T,u as m,t as O,d as Q,w as X,e as Z,l as ee,y as D,x as b,f as te,G as se}from"./index-DkLkDgig.js";import{a as x}from"./ApiClient-Dbs1H78V.js";import{S as re}from"./SessionCard-BGDVHU9u.js";import"./settings-BplIxCbi.js";import"./SessionLogStream-B-w3n4c3.js";function ne(){const{on:E,off:t}=g(),d=y=>_=>{const i=f=>{f.session&&_(f.session,f.projectId)};return E(y,i),()=>t(y,i)},w=d(u.SESSION_CREATED),N=d(u.SESSION_UPDATED);return{onSessionCreated:w,onSessionUpdated:N,onSessionDeleted:y=>{const _=i=>{i.sessionId&&y(i.sessionId,i.projectId)};return E(u.SESSION_DELETED,_),()=>t(u.SESSION_DELETED,_)},onSessionSummaryUpdated:y=>{const _=i=>{i.sessionId&&i.summary&&y(i.sessionId,i.summary,i.projectId)};return E(u.SESSION_SUMMARY_UPDATED,_),()=>t(u.SESSION_SUMMARY_UPDATED,_)}}}const oe={class:"container"},ie={class:"filters-container"},ae={class:"status-filters"},le=["onClick"],ce=["title"],ue={key:0,class:"star-icon"},de={key:1,class:"star-icon star-crossed"},fe={key:2,class:"star-icon"},Se={key:0,class:"skeleton-list"},pe={key:1,class:"error-message"},me={key:2,class:"empty-state"},_e={key:3,class:"empty-state"},he={key:4,class:"session-list"},ye={__name:"ActiveSessionsView",setup(E){const t=Y(),d=$(),w=["waiting","stopped","error"],N=["running","starting"],F=ee(new Set),R=r=>{t.statusFilter===r?t.setStatusFilter(null):t.setStatusFilter(r)},y=()=>{t.starredFilter===null?t.setStarredFilter("starred"):t.starredFilter==="starred"?t.setStarredFilter("unstarred"):t.setStarredFilter(null)},_=b(()=>t.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":t.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred."),i=b(()=>{let r=t.activeSessions;return t.statusFilter&&(r=r.filter(s=>{const e=s.status;return!!(t.statusFilter==="idle"&&w.includes(e)||t.statusFilter==="running"&&N.includes(e))})),t.starredFilter==="starred"?r=r.filter(s=>s.starred):t.starredFilter==="unstarred"&&(r=r.filter(s=>!s.starred)),r}),f=D({}),S=D({}),h=D({});let k=null;const v=[],{onSessionCreated:j,onSessionUpdated:P,onSessionDeleted:B,onSessionSummaryUpdated:L}=ne();async function M(){const r=new Set(t.activeSessions.map(s=>s.projectId).filter(s=>s&&!F.value.has(s)));for(const s of r)try{await d.fetchButtons(s),await d.fetchLatestRunsForProject(s),F.value.add(s)}catch(e){console.error(`Failed to fetch buttons for project ${s}:`,e)}}function U(r,s,e){d.runs[r]||(d.runs[r]={runId:r,buttonId:s,sessionId:e,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1})}function V(r,s,e){const n=o=>{U(o.runId,o.buttonId,o.sessionId),d.appendOutput(o.runId,o.output)};r(u.COMMAND_RUN_OUTPUT,n),e.push(()=>s(u.COMMAND_RUN_OUTPUT,n));const l=o=>{U(o.runId,o.buttonId,o.sessionId),d.completeRun(o.runId,o.exitCode,o.output)};r(u.COMMAND_RUN_COMPLETE,l),e.push(()=>s(u.COMMAND_RUN_COMPLETE,l));const I=o=>{U(o.runId,o.buttonId,o.sessionId),d.errorRun(o.runId,o.error)};r(u.COMMAND_RUN_ERROR,I),e.push(()=>s(u.COMMAND_RUN_ERROR,I))}q(async()=>{t.restoreStatusFilter(),t.restoreStarredFilter(),await t.fetchActiveSessions(),await M(),v.push(j(e=>{["running","waiting","starting"].includes(e.status)&&(t.activeSessions.some(l=>l.id===e.id)||(t.activeSessions.unshift(e),e.projectId&&!F.value.has(e.projectId)&&(d.fetchButtons(e.projectId),F.value.add(e.projectId))))})),v.push(P(e=>{const n=["running","waiting","starting"].includes(e.status),l=t.activeSessions.findIndex(I=>I.id===e.id);n?l>=0?t.activeSessions[l]=e:t.activeSessions.unshift(e):l>=0&&(t.activeSessions.splice(l,1),delete f[e.id],delete S[e.id],delete h[e.id])})),v.push(B(e=>{const n=t.activeSessions.findIndex(l=>l.id===e);n>=0&&t.activeSessions.splice(n,1),delete f[e],delete S[e],delete h[e]})),v.push(L((e,n)=>{f[e]=n,S[e]=!1,h[e]=!1}));const{on:r,off:s}=g();V(r,s,v),k=setInterval(()=>{t.fetchActiveSessions(!1)},3e4)}),J(()=>{v.forEach(r=>r()),k&&clearInterval(k)}),K(()=>t.activeSessions,()=>{H(),M()},{immediate:!0});async function H(){const s=t.activeSessions.filter(e=>!f[e.id]&&!S[e.id]).map(e=>e.id);if(s.length!==0){for(const e of s)S[e]=!0,h[e]=!1;try{const e=await x.getSessionSummariesBatch(s);for(const n of s)e[n]&&(f[n]=e[n]),S[n]=!1}catch(e){console.warn("Failed to fetch summaries batch:",e.message);for(const n of s)h[n]=!0,S[n]=!1}}}async function G(r){var s;S[r]=!0,h[r]=!1;try{const e=await x.getSessionSummary(r);e&&(f[r]=e)}catch(e){((s=e.response)==null?void 0:s.status)!==404&&(console.warn(`Failed to fetch summary for session ${r}:`,e.message),h[r]=!0)}finally{S[r]=!1}}async function W(r){h[r]=!1,await G(r)}return(r,s)=>{const e=te("router-link");return a(),c("div",oe,[s[3]||(s[3]=p("div",{class:"page-header"},[p("div",null,[p("p",{class:"page-description"}," All active sessions across your projects ")])],-1)),p("div",ie,[p("div",ae,[(a(),c(A,null,C(["running","idle"],n=>p("button",{key:n,class:T(["filter-btn",{active:m(t).statusFilter===n}]),onClick:l=>R(n)},O(n),11,le)),64)),p("button",{class:T(["filter-btn star-btn",{"star-filter-active":m(t).starredFilter==="starred","star-filter-unstarred":m(t).starredFilter==="unstarred","star-filter-all":m(t).starredFilter===null}]),title:_.value,onClick:y},[m(t).starredFilter==="starred"?(a(),c("span",ue,"⭐")):m(t).starredFilter==="unstarred"?(a(),c("span",de,"⭐")):(a(),c("span",fe,"☆"))],10,ce)])]),m(t).loading?(a(),c("div",Se,[(a(),c(A,null,C(3,n=>p("div",{key:n,class:"skeleton card",style:{height:"120px"}})),64))])):m(t).error?(a(),c("div",pe,O(m(t).error),1)):m(t).activeSessions.length===0?(a(),c("div",me,[s[1]||(s[1]=p("p",null,"No active sessions. All sessions are completed or there are no sessions yet.",-1)),Q(e,{to:"/",class:"btn btn-primary"},{default:X(()=>[...s[0]||(s[0]=[Z(" View Projects ",-1)])]),_:1})])):i.value.length===0?(a(),c("div",_e,[...s[2]||(s[2]=[p("p",null,"No sessions match the current filter.",-1)])])):(a(),c("div",he,[(a(!0),c(A,null,C(i.value,n=>(a(),se(re,{key:n.id,session:n,"show-project":!0,"show-summary":!0,summary:f[n.id],"summary-loading":S[n.id],"summary-error":h[n.id],onRetrySummary:W},null,8,["session","summary","summary-loading","summary-error"]))),128))]))])}}},Ue=z(ye,[["__scopeId","data-v-21acfc18"]]);export{Ue as default};
@@ -1,2 +1,2 @@
1
- import{L as q,_ as O,a as r,c as i,b as t,F as k,r as $,t as f,k as _,E as A,x as p,f as W,e as F,G as z,w as G,o as H,z as J,d as w,u as m,l as B}from"./index-LoOsRfMI.js";import{a as L}from"./ApiClient-Dbs1H78V.js";const U=q("agentLogs",{state:()=>({logs:[],pagination:{total:0,limit:25,offset:0,hasMore:!1},filters:{agentType:null,callType:null,status:null,model:null,startDate:null,endDate:null,sessionId:null},filterOptions:{agentTypes:[],callTypes:[],statuses:[],models:[]},perPage:25,currentPage:1,sortBy:"started_at",sortOrder:"DESC",loading:!1,error:null}),getters:{totalPages:s=>Math.ceil(s.pagination.total/s.perPage)||0,activeFilters:s=>{const e={};for(const[y,h]of Object.entries(s.filters))h!=null&&(e[y]=h);return e}},actions:{async fetchLogs(){this.loading=!0,this.error=null;try{const s=(this.currentPage-1)*this.perPage,e=await L.getAgentCallLogs({limit:this.perPage,offset:s,...this.activeFilters,sortBy:this.sortBy,sortOrder:this.sortOrder});this.logs=e.logs,this.pagination=e.pagination}catch(s){this.error=s.message}finally{this.loading=!1}},async fetchFilterOptions(){try{const s=await L.getAgentCallFilterOptions();this.filterOptions=s}catch(s){console.error("Failed to fetch filter options:",s)}},setFilter(s,e){this.filters[s]=e||null,this.currentPage=1,this.fetchLogs()},clearFilters(){Object.keys(this.filters).forEach(s=>this.filters[s]=null),this.currentPage=1,this.fetchLogs()},setPage(s){this.currentPage=s,this.fetchLogs()},setPerPage(s){this.perPage=s,this.currentPage=1,this.fetchLogs()},setSort(s,e){this.sortBy=s,this.sortOrder=e,this.currentPage=1,this.fetchLogs()},async clearAllLogs(){this.loading=!0,this.error=null;try{await L.deleteAllAgentCallLogs(),this.logs=[],this.pagination={total:0,limit:this.perPage,offset:0,hasMore:!1},this.currentPage=1,await this.fetchFilterOptions()}catch(s){this.error=s.message}finally{this.loading=!1}}}}),Z={class:"filter-bar"},Q={class:"filter-row"},X={class:"filter-group"},Y=["value"],K={class:"filter-group"},tt=["value"],et={class:"filter-group"},st=["value"],lt=["value"],at={class:"filter-group"},nt=["value"],ot=["value"],rt={class:"filter-group"},it=["value"],ut=["value"],dt={class:"filter-group"},ct=["value"],ft=["value"],gt={__name:"AgentLogFilters",props:{filters:{type:Object,required:!0},filterOptions:{type:Object,required:!0},hasActiveFilters:{type:Boolean,default:!1},confirming:{type:Boolean,default:!1}},emits:["filter-change","date-change","clear-filters","clear-all"],setup(s){const e=s;function y(v){return new Date(v).toISOString().slice(0,10)}const h=p(()=>e.filters.startDate?y(e.filters.startDate):""),b=p(()=>e.filters.endDate?y(e.filters.endDate):"");return(v,a)=>(r(),i("div",Z,[t("div",Q,[t("div",X,[a[8]||(a[8]=t("label",{class:"filter-label"},"From",-1)),t("input",{type:"date",class:"filter-input",value:h.value,onChange:a[0]||(a[0]=n=>v.$emit("date-change","startDate",n))},null,40,Y)]),t("div",K,[a[9]||(a[9]=t("label",{class:"filter-label"},"To",-1)),t("input",{type:"date",class:"filter-input",value:b.value,onChange:a[1]||(a[1]=n=>v.$emit("date-change","endDate",n))},null,40,tt)]),t("div",et,[a[11]||(a[11]=t("label",{class:"filter-label"},"Agent Type",-1)),t("select",{class:"filter-select",value:s.filters.agentType||"",onChange:a[2]||(a[2]=n=>v.$emit("filter-change","agentType",n.target.value))},[a[10]||(a[10]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.agentTypes,n=>(r(),i("option",{key:n,value:n},f(n),9,lt))),128))],40,st)]),t("div",at,[a[13]||(a[13]=t("label",{class:"filter-label"},"Call Type",-1)),t("select",{class:"filter-select",value:s.filters.callType||"",onChange:a[3]||(a[3]=n=>v.$emit("filter-change","callType",n.target.value))},[a[12]||(a[12]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.callTypes,n=>(r(),i("option",{key:n,value:n},f(n),9,ot))),128))],40,nt)]),t("div",rt,[a[15]||(a[15]=t("label",{class:"filter-label"},"Status",-1)),t("select",{class:"filter-select",value:s.filters.status||"",onChange:a[4]||(a[4]=n=>v.$emit("filter-change","status",n.target.value))},[a[14]||(a[14]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.statuses,n=>(r(),i("option",{key:n,value:n},f(n),9,ut))),128))],40,it)]),t("div",dt,[a[17]||(a[17]=t("label",{class:"filter-label"},"Model",-1)),t("select",{class:"filter-select",value:s.filters.model||"",onChange:a[5]||(a[5]=n=>v.$emit("filter-change","model",n.target.value))},[a[16]||(a[16]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.models,n=>(r(),i("option",{key:n,value:n},f(n),9,ft))),128))],40,ct)]),s.hasActiveFilters?(r(),i("button",{key:0,class:"btn-clear",onClick:a[6]||(a[6]=n=>v.$emit("clear-filters"))}," Clear Filters ")):_("",!0),t("button",{class:A(["btn-clear-all",{confirming:s.confirming}]),onClick:a[7]||(a[7]=n=>v.$emit("clear-all"))},f(s.confirming?"Confirm Clear All?":"Clear All Logs"),3)])]))}},vt=O(gt,[["__scopeId","data-v-780329d3"]]),pt={class:"table-wrapper"},ht={key:0,class:"loading-overlay"},yt={class:"log-table"},bt=["onClick"],mt={key:0,class:"sort-indicator"},kt={key:0},$t=["colspan"],Ct={class:"td"},_t={class:"status-text"},Tt={class:"td font-mono text-sm"},At={class:"td font-mono text-sm"},Pt={class:"td model-cell"},Lt={class:"td"},Ot={key:1},St={class:"td"},Dt={key:1},Ft=["title"],wt={class:"td text-right"},Bt=["title"],Mt={__name:"AgentLogTable",props:{logs:{type:Array,required:!0},loading:{type:Boolean,default:!1},sortBy:{type:String,default:"started_at"},sortOrder:{type:String,default:"DESC"}},emits:["sort"],setup(s){const e=[{key:"status",label:"Status",sortable:!0},{key:"agent_type",label:"Agent Type",sortable:!0},{key:"call_type",label:"Call Type",sortable:!0},{key:"model",label:"Model",sortable:!0},{key:"session",label:"Session",sortable:!1},{key:"effort",label:"Effort",sortable:!1},{key:"total_tokens",label:"Tokens",sortable:!0},{key:"duration_ms",label:"Duration",sortable:!0},{key:"started_at",label:"Started",sortable:!0}];function y(l){switch(l){case"completed":return"dot-completed";case"error":return"dot-error";case"streaming":case"pending":return"dot-pending";default:return"dot-default"}}function h(l){const d=[];return l.inputTokens&&d.push(`Input: ${b(l.inputTokens)}`),l.outputTokens&&d.push(`Output: ${b(l.outputTokens)}`),l.thinkingTokens&&d.push(`Thinking: ${b(l.thinkingTokens)}`),l.cacheReadTokens&&d.push(`Cache Read: ${b(l.cacheReadTokens)}`),l.cacheWriteTokens&&d.push(`Cache Write: ${b(l.cacheWriteTokens)}`),d.join(`
1
+ import{L as q,_ as O,a as r,c as i,b as t,F as k,r as $,t as f,k as _,E as A,x as p,f as W,e as F,G as z,w as G,o as H,z as J,d as w,u as m,l as B}from"./index-DkLkDgig.js";import{a as L}from"./ApiClient-Dbs1H78V.js";const U=q("agentLogs",{state:()=>({logs:[],pagination:{total:0,limit:25,offset:0,hasMore:!1},filters:{agentType:null,callType:null,status:null,model:null,startDate:null,endDate:null,sessionId:null},filterOptions:{agentTypes:[],callTypes:[],statuses:[],models:[]},perPage:25,currentPage:1,sortBy:"started_at",sortOrder:"DESC",loading:!1,error:null}),getters:{totalPages:s=>Math.ceil(s.pagination.total/s.perPage)||0,activeFilters:s=>{const e={};for(const[y,h]of Object.entries(s.filters))h!=null&&(e[y]=h);return e}},actions:{async fetchLogs(){this.loading=!0,this.error=null;try{const s=(this.currentPage-1)*this.perPage,e=await L.getAgentCallLogs({limit:this.perPage,offset:s,...this.activeFilters,sortBy:this.sortBy,sortOrder:this.sortOrder});this.logs=e.logs,this.pagination=e.pagination}catch(s){this.error=s.message}finally{this.loading=!1}},async fetchFilterOptions(){try{const s=await L.getAgentCallFilterOptions();this.filterOptions=s}catch(s){console.error("Failed to fetch filter options:",s)}},setFilter(s,e){this.filters[s]=e||null,this.currentPage=1,this.fetchLogs()},clearFilters(){Object.keys(this.filters).forEach(s=>this.filters[s]=null),this.currentPage=1,this.fetchLogs()},setPage(s){this.currentPage=s,this.fetchLogs()},setPerPage(s){this.perPage=s,this.currentPage=1,this.fetchLogs()},setSort(s,e){this.sortBy=s,this.sortOrder=e,this.currentPage=1,this.fetchLogs()},async clearAllLogs(){this.loading=!0,this.error=null;try{await L.deleteAllAgentCallLogs(),this.logs=[],this.pagination={total:0,limit:this.perPage,offset:0,hasMore:!1},this.currentPage=1,await this.fetchFilterOptions()}catch(s){this.error=s.message}finally{this.loading=!1}}}}),Z={class:"filter-bar"},Q={class:"filter-row"},X={class:"filter-group"},Y=["value"],K={class:"filter-group"},tt=["value"],et={class:"filter-group"},st=["value"],lt=["value"],at={class:"filter-group"},nt=["value"],ot=["value"],rt={class:"filter-group"},it=["value"],ut=["value"],dt={class:"filter-group"},ct=["value"],ft=["value"],gt={__name:"AgentLogFilters",props:{filters:{type:Object,required:!0},filterOptions:{type:Object,required:!0},hasActiveFilters:{type:Boolean,default:!1},confirming:{type:Boolean,default:!1}},emits:["filter-change","date-change","clear-filters","clear-all"],setup(s){const e=s;function y(v){return new Date(v).toISOString().slice(0,10)}const h=p(()=>e.filters.startDate?y(e.filters.startDate):""),b=p(()=>e.filters.endDate?y(e.filters.endDate):"");return(v,a)=>(r(),i("div",Z,[t("div",Q,[t("div",X,[a[8]||(a[8]=t("label",{class:"filter-label"},"From",-1)),t("input",{type:"date",class:"filter-input",value:h.value,onChange:a[0]||(a[0]=n=>v.$emit("date-change","startDate",n))},null,40,Y)]),t("div",K,[a[9]||(a[9]=t("label",{class:"filter-label"},"To",-1)),t("input",{type:"date",class:"filter-input",value:b.value,onChange:a[1]||(a[1]=n=>v.$emit("date-change","endDate",n))},null,40,tt)]),t("div",et,[a[11]||(a[11]=t("label",{class:"filter-label"},"Agent Type",-1)),t("select",{class:"filter-select",value:s.filters.agentType||"",onChange:a[2]||(a[2]=n=>v.$emit("filter-change","agentType",n.target.value))},[a[10]||(a[10]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.agentTypes,n=>(r(),i("option",{key:n,value:n},f(n),9,lt))),128))],40,st)]),t("div",at,[a[13]||(a[13]=t("label",{class:"filter-label"},"Call Type",-1)),t("select",{class:"filter-select",value:s.filters.callType||"",onChange:a[3]||(a[3]=n=>v.$emit("filter-change","callType",n.target.value))},[a[12]||(a[12]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.callTypes,n=>(r(),i("option",{key:n,value:n},f(n),9,ot))),128))],40,nt)]),t("div",rt,[a[15]||(a[15]=t("label",{class:"filter-label"},"Status",-1)),t("select",{class:"filter-select",value:s.filters.status||"",onChange:a[4]||(a[4]=n=>v.$emit("filter-change","status",n.target.value))},[a[14]||(a[14]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.statuses,n=>(r(),i("option",{key:n,value:n},f(n),9,ut))),128))],40,it)]),t("div",dt,[a[17]||(a[17]=t("label",{class:"filter-label"},"Model",-1)),t("select",{class:"filter-select",value:s.filters.model||"",onChange:a[5]||(a[5]=n=>v.$emit("filter-change","model",n.target.value))},[a[16]||(a[16]=t("option",{value:""}," All ",-1)),(r(!0),i(k,null,$(s.filterOptions.models,n=>(r(),i("option",{key:n,value:n},f(n),9,ft))),128))],40,ct)]),s.hasActiveFilters?(r(),i("button",{key:0,class:"btn-clear",onClick:a[6]||(a[6]=n=>v.$emit("clear-filters"))}," Clear Filters ")):_("",!0),t("button",{class:A(["btn-clear-all",{confirming:s.confirming}]),onClick:a[7]||(a[7]=n=>v.$emit("clear-all"))},f(s.confirming?"Confirm Clear All?":"Clear All Logs"),3)])]))}},vt=O(gt,[["__scopeId","data-v-780329d3"]]),pt={class:"table-wrapper"},ht={key:0,class:"loading-overlay"},yt={class:"log-table"},bt=["onClick"],mt={key:0,class:"sort-indicator"},kt={key:0},$t=["colspan"],Ct={class:"td"},_t={class:"status-text"},Tt={class:"td font-mono text-sm"},At={class:"td font-mono text-sm"},Pt={class:"td model-cell"},Lt={class:"td"},Ot={key:1},St={class:"td"},Dt={key:1},Ft=["title"],wt={class:"td text-right"},Bt=["title"],Mt={__name:"AgentLogTable",props:{logs:{type:Array,required:!0},loading:{type:Boolean,default:!1},sortBy:{type:String,default:"started_at"},sortOrder:{type:String,default:"DESC"}},emits:["sort"],setup(s){const e=[{key:"status",label:"Status",sortable:!0},{key:"agent_type",label:"Agent Type",sortable:!0},{key:"call_type",label:"Call Type",sortable:!0},{key:"model",label:"Model",sortable:!0},{key:"session",label:"Session",sortable:!1},{key:"effort",label:"Effort",sortable:!1},{key:"total_tokens",label:"Tokens",sortable:!0},{key:"duration_ms",label:"Duration",sortable:!0},{key:"started_at",label:"Started",sortable:!0}];function y(l){switch(l){case"completed":return"dot-completed";case"error":return"dot-error";case"streaming":case"pending":return"dot-pending";default:return"dot-default"}}function h(l){const d=[];return l.inputTokens&&d.push(`Input: ${b(l.inputTokens)}`),l.outputTokens&&d.push(`Output: ${b(l.outputTokens)}`),l.thinkingTokens&&d.push(`Thinking: ${b(l.thinkingTokens)}`),l.cacheReadTokens&&d.push(`Cache Read: ${b(l.cacheReadTokens)}`),l.cacheWriteTokens&&d.push(`Cache Write: ${b(l.cacheWriteTokens)}`),d.join(`
2
2
  `)||"No token data"}function b(l){return l==null||l===0?"0":l.toLocaleString()}function v(l){if(l==null)return"—";if(l<1e3)return`${l}ms`;if(l<6e4)return`${(l/1e3).toFixed(1)}s`;const d=Math.floor(l/6e4),C=Math.floor(l%6e4/1e3);return`${d}m ${C}s`}function a(l){const d=Date.now()-l;return d<6e4?"just now":d<36e5?`${Math.floor(d/6e4)}m ago`:d<864e5?`${Math.floor(d/36e5)}h ago`:`${Math.floor(d/864e5)}d ago`}function n(l){try{if(l.metadata)return(typeof l.metadata=="string"?JSON.parse(l.metadata):l.metadata).effortLevel||null}catch{}return null}function P(l){return{auto:"Auto",low:"Low",medium:"Med",high:"High",max:"Max"}[l]||l}return(l,d)=>{const C=W("router-link");return r(),i("div",pt,[s.loading?(r(),i("div",ht,[...d[0]||(d[0]=[t("div",{class:"spinner"},null,-1)])])):_("",!0),t("table",yt,[t("thead",null,[t("tr",null,[(r(),i(k,null,$(e,o=>t("th",{key:o.key,class:A(["th",o.sortable?"sortable":""]),onClick:S=>o.sortable?l.$emit("sort",o.key):null},[F(f(o.label)+" ",1),o.sortable&&s.sortBy===o.key?(r(),i("span",mt,f(s.sortOrder==="ASC"?"↑":"↓"),1)):_("",!0)],10,bt)),64))])]),t("tbody",null,[!s.loading&&s.logs.length===0?(r(),i("tr",kt,[t("td",{colspan:e.length,class:"empty-cell"}," No agent call logs found. ",8,$t)])):_("",!0),(r(!0),i(k,null,$(s.logs,o=>(r(),i("tr",{key:o.id,class:"log-row"},[t("td",Ct,[t("span",{class:A(["status-dot",y(o.status)])},null,2),t("span",_t,f(o.status),1)]),t("td",Tt,f(o.agentType||"—"),1),t("td",At,f(o.callType||"—"),1),t("td",Pt,f(o.model||"—"),1),t("td",Lt,[o.sessionId?(r(),z(C,{key:0,to:`/sessions/${o.sessionId}`,class:"session-link"},{default:G(()=>[F(f(o.sessionName||o.sessionId),1)]),_:2},1032,["to"])):(r(),i("span",Ot,"—"))]),t("td",St,[n(o)?(r(),i("span",{key:0,class:A(["effort-badge",`effort-${n(o)}`])},f(P(n(o))),3)):(r(),i("span",Dt,"—"))]),t("td",{class:"td text-right",title:h(o)},f(b(o.totalTokens)),9,Ft),t("td",wt,f(v(o.durationMs)),1),t("td",{class:"td text-right",title:o.startedAt?new Date(o.startedAt).toLocaleString():""},f(o.startedAt?a(o.startedAt):"—"),9,Bt)]))),128))])])])}}},It=O(Mt,[["__scopeId","data-v-20d5856a"]]),Et={class:"agent-logs"},Nt={key:0,class:"error-banner"},Vt={key:1,class:"pagination-bar"},xt={class:"per-page-control"},jt=["value"],Rt=["value"],qt={class:"page-info"},Wt={class:"page-buttons"},zt=["disabled"],Gt=["disabled"],Ht={key:0,class:"page-ellipsis"},Jt=["onClick"],Ut=["disabled"],Zt=["disabled"],Qt={__name:"AgentLogsView",setup(s){const e=U(),y=B(!1),h=B(null),b=p(()=>e.logs),v=p(()=>e.pagination),a=p(()=>e.filters),n=p(()=>e.filterOptions),P=p(()=>e.perPage),l=p(()=>e.currentPage),d=p(()=>e.totalPages),C=p(()=>e.sortBy),o=p(()=>e.sortOrder),S=p(()=>e.loading),D=p(()=>e.error),M=p(()=>Object.values(e.filters).some(g=>g!=null)),I=p(()=>v.value.total===0?0:v.value.offset+1),E=p(()=>Math.min(v.value.offset+P.value,v.value.total)),N=p(()=>{const g=d.value,c=l.value;if(g<=7)return Array.from({length:g},(T,R)=>R+1);const u=[];return c<=4?u.push(1,2,3,4,5,"...",g):c>=g-3?u.push(1,"...",g-4,g-3,g-2,g-1,g):u.push(1,"...",c-1,c,c+1,"...",g),u});function V(g){C.value===g?e.setSort(g,o.value==="ASC"?"DESC":"ASC"):e.setSort(g,"DESC")}function x(g,c){const u=c.target.value;if(!u){e.setFilter(g,null);return}const T=new Date(`${u}T00:00:00Z`).getTime();e.filters[g]=T,e.currentPage=1,e.fetchLogs()}function j(){y.value?(h.value&&(clearTimeout(h.value),h.value=null),y.value=!1,e.clearAllLogs()):(y.value=!0,h.value=setTimeout(()=>{y.value=!1,h.value=null},3e3))}return H(()=>{e.fetchLogs(),e.fetchFilterOptions()}),J(()=>{h.value&&clearTimeout(h.value)}),(g,c)=>(r(),i("div",Et,[w(vt,{filters:a.value,"filter-options":n.value,"has-active-filters":M.value,confirming:y.value,onFilterChange:c[0]||(c[0]=(u,T)=>m(e).setFilter(u,T)),onDateChange:x,onClearFilters:c[1]||(c[1]=u=>m(e).clearFilters()),onClearAll:j},null,8,["filters","filter-options","has-active-filters","confirming"]),D.value?(r(),i("div",Nt,[t("span",null,f(D.value),1),t("button",{class:"btn-retry",onClick:c[2]||(c[2]=u=>m(e).fetchLogs())}," Retry ")])):_("",!0),w(It,{logs:b.value,loading:S.value,"sort-by":C.value,"sort-order":o.value,onSort:V},null,8,["logs","loading","sort-by","sort-order"]),v.value.total>0?(r(),i("div",Vt,[t("div",xt,[c[8]||(c[8]=t("label",{class:"filter-label"},"Per page",-1)),t("select",{class:"filter-select per-page-select",value:P.value,onChange:c[3]||(c[3]=u=>m(e).setPerPage(parseInt(u.target.value)))},[(r(),i(k,null,$([10,25,50,100],u=>t("option",{key:u,value:u},f(u),9,Rt)),64))],40,jt)]),t("div",qt," Showing "+f(I.value)+"–"+f(E.value)+" of "+f(v.value.total)+" logs ",1),t("div",Wt,[t("button",{class:"page-btn",disabled:l.value===1,onClick:c[4]||(c[4]=u=>m(e).setPage(1))}," « ",8,zt),t("button",{class:"page-btn",disabled:l.value===1,onClick:c[5]||(c[5]=u=>m(e).setPage(l.value-1))}," ‹ ",8,Gt),(r(!0),i(k,null,$(N.value,u=>(r(),i(k,{key:u},[u==="..."?(r(),i("span",Ht,"…")):(r(),i("button",{key:1,class:A(["page-btn",{"page-btn-active":u===l.value}]),onClick:T=>m(e).setPage(u)},f(u),11,Jt))],64))),128)),t("button",{class:"page-btn",disabled:l.value===d.value,onClick:c[6]||(c[6]=u=>m(e).setPage(l.value+1))}," › ",8,Ut),t("button",{class:"page-btn",disabled:l.value===d.value,onClick:c[7]||(c[7]=u=>m(e).setPage(d.value))}," » ",8,Zt)])])):_("",!0)]))}},Kt=O(Qt,[["__scopeId","data-v-e1df2011"]]);export{Kt as default};
@@ -1 +1 @@
1
- import{_ as A,l as I,m as O,o as N,a,c as d,b as t,j as T,n as q,F as j,r as D,t as C,k as f,e as B,x,$ as K,i as P,G as z,d as U,p as R,v as L,h as F,V as G,y as W,z as H,E as Y,H as J}from"./index-LoOsRfMI.js";import{u as Q,b as X}from"./EffortLevelSelector-DIj0Wykj.js";import{M as Z}from"./ModelSelector-C9RlCVhC.js";import{M as ee}from"./SlashCommandWizard-CpNLU4vI.js";import{u as te}from"./SessionLogStream-BFjl4wy7.js";const se={class:"template-selector"},le={class:"selector-wrapper"},ne=["disabled"],oe={key:0,label:"Project Templates"},ae=["value"],de={key:1,label:"Global Templates"},ie=["value"],ue=["disabled"],re={key:0,class:"template-preview"},ce={class:"template-prompt-preview"},me={key:0,class:"chain-indicator"},pe={key:1,class:"selector-help"},ve={key:2,class:"saving-indicator"},be={__name:"TemplateSelector",props:{sessionId:{type:String,required:!1,default:null},projectId:{type:String,required:!0},currentTemplateId:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:templateId"],setup(o,{emit:M}){const n=o,k=M,p=Q(),v=I(n.currentTemplateId),u=I(!1),h=x(()=>p.loading),s=x(()=>p.projectTemplates),g=x(()=>p.globalTemplates),c=x(()=>v.value?p.getTemplateById(v.value):null),$=x(()=>{var S;if(!((S=c.value)!=null&&S.nextTemplateId))return null;const e=[];let i=c.value.nextTemplateId;const m=new Set;for(;i&&!m.has(i);){m.add(i);const l=p.getTemplateById(i);if(l)e.push(l.name),i=l.nextTemplateId;else{e.push("Unknown");break}if(e.length>=3){e.push("...");break}}return e.length>0?`Chains to: ${e.join(" → ")}`:null}),w=K(n,"currentTemplateId");O(w,e=>{v.value=e},{flush:"sync"}),N(()=>{n.projectId&&p.projectTemplates.length===0&&p.globalTemplates.length===0&&p.fetchProjectTemplates(n.projectId)});function _(e,i=100){return e?e.length<=i?e:`${e.substring(0,i)}...`:""}function E(e){var S;const i=((S=e==null?void 0:e.target)==null?void 0:S.value)||v.value,m=i===""?null:i;u.value=!0,k("update:templateId",m),setTimeout(()=>{u.value=!1},1e3)}function r(){v.value=null,E()}return(e,i)=>(a(),d("div",se,[i[3]||(i[3]=t("label",{class:"selector-label"},"Next Template",-1)),t("div",le,[T(t("select",{"onUpdate:modelValue":i[0]||(i[0]=m=>v.value=m),class:"form-input",disabled:o.disabled||h.value,onChange:E},[i[1]||(i[1]=t("option",{value:null}," Select a template to run... ",-1)),s.value.length?(a(),d("optgroup",oe,[(a(!0),d(j,null,D(s.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ae))),128))])):f("",!0),g.value.length?(a(),d("optgroup",de,[(a(!0),d(j,null,D(g.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ie))),128))])):f("",!0)],40,ne),[[q,v.value]]),v.value?(a(),d("button",{key:0,class:"btn-clear",title:"Clear selection",disabled:o.disabled||u.value,onClick:r}," ✕ ",8,ue)):f("",!0)]),c.value?(a(),d("div",re,[t("p",ce,C(_(c.value.prompt)),1),$.value?(a(),d("span",me,C($.value),1)):f("",!0)])):(a(),d("p",pe," When Claude finishes responding, a new session will automatically start using this template. ")),u.value?(a(),d("div",ve,[...i[2]||(i[2]=[t("span",{class:"loading-spinner"},null,-1),B(" Saving... ",-1)])])):f("",!0)]))}},he=A(be,[["__scopeId","data-v-d206f8db"]]),fe={class:"modal-content"},ge={class:"modal-header"},ke={class:"modal-title"},ye={class:"modal-body"},Te={key:0,class:"error-message"},Ce={class:"form-section"},Se={class:"form-group"},$e={class:"form-group"},xe={class:"form-group"},Ie={class:"toggle-switch"},Me={key:1,class:"form-group"},Ee=["min"],Re={key:2,class:"form-section"},we={class:"form-group"},_e={class:"toggle-switch"},Oe={key:3,class:"reschedule-settings"},Le={class:"form-group"},Ae={class:"checkbox-option"},Ve={class:"checkbox-option"},Ue={class:"form-group"},je={class:"form-group"},De={class:"form-group"},Be={class:"form-group"},Ne={key:0,class:"form-group"},Fe={class:"checkbox-option"},qe={class:"form-help"},Pe={class:"modal-footer"},ze=["disabled"],Ge={__name:"SchedulingEditModal",props:{isOpen:{type:Boolean,default:!1},session:{type:Object,default:null}},emits:["close","saved"],setup(o,{emit:M}){const n=o,k=M,p=X(),v=P(),u=I(!1),h=I(null),s=W({scheduledAtLocal:"",model:null,mode:"standard",thinkingEnabled:!1,nextTemplateId:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null,resetRescheduleCount:!1}),g=x(()=>{const r=new Date;return r.setMinutes(r.getMinutes()+1),r.toISOString().slice(0,16)}),c=x(()=>{var r;return((r=n.session)==null?void 0:r.status)==="scheduled"?"Edit Scheduling Settings":"Auto-Reschedule Settings"});function $(){k("close")}function w(r){s.nextTemplateId=r}function _(r){if(!r)return"";const e=new Date(r),i=e.getFullYear(),m=String(e.getMonth()+1).padStart(2,"0"),S=String(e.getDate()).padStart(2,"0"),l=String(e.getHours()).padStart(2,"0"),b=String(e.getMinutes()).padStart(2,"0");return`${i}-${m}-${S}T${l}:${b}`}async function E(){var r;u.value=!0,h.value=null;try{const e={model:s.model,mode:s.mode,thinkingEnabled:s.thinkingEnabled,nextTemplateId:s.nextTemplateId,autoRescheduleEnabled:s.autoRescheduleEnabled,rescheduleDelayMinutes:s.rescheduleDelayMinutes,rescheduleOnTokenLimit:s.rescheduleOnTokenLimit,rescheduleOnServiceError:s.rescheduleOnServiceError,maxRescheduleCount:s.maxRescheduleCount||null,maxTotalTokens:s.maxTotalTokens||null,rescheduleAtTokenCount:s.rescheduleAtTokenCount||null};((r=n.session)==null?void 0:r.status)==="scheduled"&&s.scheduledAtLocal&&(e.scheduledAt=new Date(s.scheduledAtLocal).getTime()),s.resetRescheduleCount&&(e.rescheduleCount=0),await p.updateSessionFields(n.session.id,e),v.success("Settings saved"),k("saved"),$()}catch(e){h.value=e.message||"Failed to save settings",v.error(`Failed to save settings: ${h.value}`)}finally{u.value=!1}}return O(()=>n.isOpen,r=>{r&&n.session&&(h.value=null,s.scheduledAtLocal=_(n.session.scheduledAt),s.model=n.session.model||null,s.mode=n.session.mode||"standard",s.thinkingEnabled=n.session.thinkingEnabled||!1,s.nextTemplateId=n.session.nextTemplateId||null,s.autoRescheduleEnabled=n.session.autoRescheduleEnabled||!1,s.rescheduleDelayMinutes=n.session.rescheduleDelayMinutes||15,s.rescheduleOnTokenLimit=n.session.rescheduleOnTokenLimit??!0,s.rescheduleOnServiceError=n.session.rescheduleOnServiceError??!0,s.maxRescheduleCount=n.session.maxRescheduleCount,s.maxTotalTokens=n.session.maxTotalTokens,s.rescheduleAtTokenCount=n.session.rescheduleAtTokenCount,s.resetRescheduleCount=!1)}),(r,e)=>{var i,m,S;return a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F($,["self"])},[t("div",fe,[t("div",ge,[t("h2",ke,C(c.value),1),t("button",{class:"close-btn","aria-label":"Close",onClick:$}," × ")]),t("div",ye,[h.value?(a(),d("div",Te,C(h.value),1)):f("",!0),t("div",Ce,[e[16]||(e[16]=t("h3",{class:"section-title"}," Session Settings ",-1)),t("div",Se,[e[12]||(e[12]=t("label",{class:"form-label"},"Model",-1)),U(Z,{modelValue:s.model,"onUpdate:modelValue":e[0]||(e[0]=l=>s.model=l)},null,8,["modelValue"])]),t("div",$e,[e[13]||(e[13]=t("label",{class:"form-label"},"Mode",-1)),U(ee,{modelValue:s.mode,"onUpdate:modelValue":e[1]||(e[1]=l=>s.mode=l)},null,8,["modelValue"])]),t("div",xe,[t("label",Ie,[T(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>s.thinkingEnabled=l),type:"checkbox"},null,512),[[R,s.thinkingEnabled]]),e[14]||(e[14]=t("span",{class:"toggle-slider"},null,-1)),e[15]||(e[15]=t("span",{class:"toggle-label"},"Extended Thinking",-1))])])]),((i=o.session)==null?void 0:i.status)==="scheduled"?(a(),d("div",Me,[e[17]||(e[17]=t("label",{for:"scheduled-at",class:"form-label"},"Scheduled Time",-1)),T(t("input",{id:"scheduled-at","onUpdate:modelValue":e[3]||(e[3]=l=>s.scheduledAtLocal=l),type:"datetime-local",min:g.value,class:"form-input"},null,8,Ee),[[L,s.scheduledAtLocal]])])):f("",!0),((m=o.session)==null?void 0:m.status)==="scheduled"?(a(),d("div",Re,[e[18]||(e[18]=t("h3",{class:"section-title"}," Template Chain ",-1)),U(he,{"session-id":o.session.id,"project-id":o.session.projectId,"current-template-id":s.nextTemplateId,disabled:u.value,"onUpdate:templateId":w},null,8,["session-id","project-id","current-template-id","disabled"])])):f("",!0),t("div",we,[t("label",_e,[T(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>s.autoRescheduleEnabled=l),type:"checkbox"},null,512),[[R,s.autoRescheduleEnabled]]),e[19]||(e[19]=t("span",{class:"toggle-slider"},null,-1)),e[20]||(e[20]=t("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),s.autoRescheduleEnabled?(a(),d("div",Oe,[t("div",Le,[e[23]||(e[23]=t("p",{class:"settings-label"}," Reschedule Triggers ",-1)),t("label",Ae,[T(t("input",{"onUpdate:modelValue":e[5]||(e[5]=l=>s.rescheduleOnTokenLimit=l),type:"checkbox"},null,512),[[R,s.rescheduleOnTokenLimit]]),e[21]||(e[21]=t("span",null,"Token limit errors",-1))]),t("label",Ve,[T(t("input",{"onUpdate:modelValue":e[6]||(e[6]=l=>s.rescheduleOnServiceError=l),type:"checkbox"},null,512),[[R,s.rescheduleOnServiceError]]),e[22]||(e[22]=t("span",null,"Service unavailability",-1))])]),t("div",Ue,[e[25]||(e[25]=t("label",{class:"form-label"},"Reschedule Delay",-1)),T(t("select",{"onUpdate:modelValue":e[7]||(e[7]=l=>s.rescheduleDelayMinutes=l),class:"form-input"},[...e[24]||(e[24]=[t("option",{value:5}," 5 minutes ",-1),t("option",{value:15}," 15 minutes ",-1),t("option",{value:30}," 30 minutes ",-1),t("option",{value:60}," 1 hour ",-1),t("option",{value:120}," 2 hours ",-1)])],512),[[q,s.rescheduleDelayMinutes,void 0,{number:!0}]])]),t("div",je,[e[26]||(e[26]=t("label",{class:"form-label"},"Max Reschedule Count",-1)),T(t("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>s.maxRescheduleCount=l),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[L,s.maxRescheduleCount,void 0,{number:!0}]])]),t("div",De,[e[27]||(e[27]=t("label",{class:"form-label"},"Max Total Tokens",-1)),T(t("input",{"onUpdate:modelValue":e[9]||(e[9]=l=>s.maxTotalTokens=l),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[L,s.maxTotalTokens,void 0,{number:!0}]])]),t("div",Be,[e[28]||(e[28]=t("label",{class:"form-label"},"Reschedule At Token Count",-1)),T(t("input",{"onUpdate:modelValue":e[10]||(e[10]=l=>s.rescheduleAtTokenCount=l),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[L,s.rescheduleAtTokenCount,void 0,{number:!0}]])]),((S=o.session)==null?void 0:S.rescheduleCount)>0?(a(),d("div",Ne,[t("label",Fe,[T(t("input",{"onUpdate:modelValue":e[11]||(e[11]=l=>s.resetRescheduleCount=l),type:"checkbox"},null,512),[[R,s.resetRescheduleCount]]),e[29]||(e[29]=t("span",null,"Reset reschedule count to 0",-1))]),t("p",qe," Current count: "+C(o.session.rescheduleCount),1)])):f("",!0)])):f("",!0)]),t("div",Pe,[t("button",{class:"btn btn-secondary",onClick:$}," Cancel "),t("button",{class:"btn btn-primary",disabled:u.value,onClick:E},C(u.value?"Updating...":"Update"),9,ze)])])])):f("",!0)])}}},Mt=A(Ge,[["__scopeId","data-v-e1ffc2da"]]),He={class:"modal-content",role:"dialog","aria-labelledby":"modal-title"},Ke={class:"modal-body"},We={class:"moving-info"},Ye={class:"moving-session-name"},Je={key:0,class:"empty-state"},Qe={key:1,class:"lanes-list"},Xe={class:"lane-label"},Ze=["name","value","disabled","aria-disabled","aria-label"],et={class:"lane-info"},tt={class:"lane-name"},st={key:0,class:"lane-current-badge"},lt={key:1,class:"lane-automation-icon",title:"Automation enabled"},nt={key:2,class:"automation-option"},ot={class:"checkbox-label"},at={class:"modal-footer"},dt=["disabled"],it=["disabled","aria-label"],ut=["disabled"],rt={__name:"MoveCardModal",props:{isOpen:Boolean,projectId:{type:String,required:!0},cardId:{type:String,required:!0},currentLaneId:{type:String,required:!0},sessionName:{type:String,default:""}},emits:["update:isOpen","close","moved"],setup(o,{emit:M}){const n=o,k=M,p=te(),v=P(),u=I(null),h=I(!0),s=I(!1),g=I(!1),c=x(()=>{var l;return((l=p.board)==null?void 0:l.lanes)||[]}),$=x(()=>n.sessionName?n.sessionName:n.cardId||"Unnamed session"),w=x(()=>u.value&&c.value.find(l=>l.id===u.value)||null),_=x(()=>w.value?r(w.value):!1),E=x(()=>u.value&&u.value!==n.currentLaneId);function r(l){return l?!!(l.onEnterTemplateId||l.onEnterPrompt):!1}function e(){k("update:isOpen",!1),k("close"),u.value=null,h.value=!0}async function i(){if(!(!E.value||!n.cardId)){s.value=!0;try{await p.moveCard(n.projectId,n.cardId,u.value,{runOnEnterTemplate:h.value}),v.success("Card moved successfully"),k("moved"),e()}catch(l){console.error("Failed to move card:",l),v.error(l.message||"Failed to move card")}finally{s.value=!1}}}async function m(){if(confirm("Remove this session from the board?")){g.value=!0;try{await p.removeCard(n.projectId,n.cardId),v.success("Session removed from board"),k("close")}catch(l){console.error("Failed to remove card:",l),v.error(l.message||"Failed to remove session")}finally{g.value=!1}}}O(u,(l,b)=>{if(l!==b){const y=c.value.find(V=>V.id===l);h.value=r(y)}}),O(()=>n.isOpen,l=>{l&&(u.value=null,h.value=!0)});function S(l){l.key==="Escape"&&n.isOpen&&e()}return N(()=>{document.addEventListener("keydown",S)}),H(()=>{document.removeEventListener("keydown",S)}),(l,b)=>o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(e,["self"])},[t("div",He,[t("div",{class:"modal-header"},[b[2]||(b[2]=t("h2",{id:"modal-title",class:"modal-title"}," Move to Lane ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",onClick:e}," × ")]),t("div",Ke,[t("div",We,[b[3]||(b[3]=t("span",{class:"moving-label"},"Moving:",-1)),t("span",Ye,C($.value),1)]),c.value.length===0?(a(),d("div",Je,[...b[4]||(b[4]=[t("p",null,"No lanes available",-1)])])):(a(),d("div",Qe,[(a(!0),d(j,null,D(c.value,y=>(a(),d("div",{key:y.id,class:Y(["lane-row",{"lane-row-current":y.id===o.currentLaneId,"lane-row-disabled":y.id===o.currentLaneId}])},[t("label",Xe,[T(t("input",{"onUpdate:modelValue":b[0]||(b[0]=V=>u.value=V),type:"radio",name:`lane-${o.cardId}`,value:y.id,disabled:y.id===o.currentLaneId,"aria-disabled":y.id===o.currentLaneId,"aria-label":`Move to ${y.name}`},null,8,Ze),[[J,u.value]]),t("span",et,[t("span",tt,C(y.name),1),y.id===o.currentLaneId?(a(),d("span",st,"(current)")):f("",!0),r(y)?(a(),d("span",lt,[...b[5]||(b[5]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):f("",!0)])])],2))),128))])),_.value?(a(),d("div",nt,[t("label",ot,[T(t("input",{"onUpdate:modelValue":b[1]||(b[1]=y=>h.value=y),type:"checkbox","aria-label":"Run automation on entry"},null,512),[[R,h.value]]),b[6]||(b[6]=t("span",null,"Run automation on entry",-1))])])):f("",!0)]),t("div",at,[t("button",{class:"btn btn-secondary",disabled:g.value,onClick:e}," Cancel ",8,dt),t("button",{class:"btn btn-danger",disabled:g.value,"aria-label":`Remove ${$.value} from board`,onClick:m},C(g.value?"Removing...":"Remove from Board"),9,it),t("button",{class:"btn btn-primary",disabled:!E.value||s.value||g.value,"aria-label":"Move card to selected lane",onClick:i},C(s.value?"Moving...":"Move"),9,ut)])])])):f("",!0)}},Et=A(rt,[["__scopeId","data-v-bddc7788"]]),ct={class:"modal-content",role:"dialog","aria-labelledby":"archive-modal-title"},mt={class:"modal-header"},pt=["disabled"],vt={class:"modal-body"},bt={class:"confirm-message"},ht={key:0,class:"cleanup-option"},ft={class:"checkbox-label"},gt={class:"modal-footer"},kt=["disabled"],yt=["disabled"],Tt={__name:"ArchiveConfirmModal",props:{isOpen:{type:Boolean,default:!1},sessionName:{type:String,default:"this session"},hasCleanupScript:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(o,{emit:M}){const n=o,k=M,p=I(!0);O(()=>n.isOpen,g=>{g&&(p.value=!0)});function v(){k("confirm",p.value)}function u(){n.loading||k("cancel")}function h(){n.loading||k("cancel")}function s(g){g.key==="Escape"&&n.isOpen&&!n.loading&&k("cancel")}return N(()=>{document.addEventListener("keydown",s)}),H(()=>{document.removeEventListener("keydown",s)}),(g,c)=>(a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(h,["self"])},[t("div",ct,[t("div",mt,[c[1]||(c[1]=t("h2",{id:"archive-modal-title",class:"modal-title"}," Archive Session ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",disabled:o.loading,onClick:u}," × ",8,pt)]),t("div",vt,[t("p",bt,[c[2]||(c[2]=B(" Are you sure you want to archive ",-1)),t("strong",null,C(o.sessionName),1),c[3]||(c[3]=B("? ",-1))]),o.hasCleanupScript?(a(),d("div",ht,[t("label",ft,[T(t("input",{"onUpdate:modelValue":c[0]||(c[0]=$=>p.value=$),type:"checkbox","aria-label":"Run project cleanup script"},null,512),[[R,p.value]]),c[4]||(c[4]=t("span",null,"Run project cleanup script",-1))])])):f("",!0)]),t("div",gt,[t("button",{class:"btn btn-secondary",disabled:o.loading,onClick:u}," Cancel ",8,kt),t("button",{class:"btn btn-primary",disabled:o.loading,onClick:v},C(o.loading?"Archiving...":"Archive"),9,yt)])])])):f("",!0)]))}},Rt=A(Tt,[["__scopeId","data-v-58eef4e8"]]);export{Rt as A,Et as M,Mt as S,he as T};
1
+ import{_ as A,l as I,m as O,o as N,a,c as d,b as t,j as T,n as q,F as j,r as D,t as C,k as f,e as B,x,$ as K,i as P,G as z,d as U,p as R,v as L,h as F,V as G,y as W,z as H,E as Y,H as J}from"./index-DkLkDgig.js";import{u as Q,b as X}from"./EffortLevelSelector-BHJHSqul.js";import{M as Z}from"./ModelSelector-BWIU4ud7.js";import{M as ee}from"./SlashCommandWizard-CzyLjsdJ.js";import{u as te}from"./SessionLogStream-B-w3n4c3.js";const se={class:"template-selector"},le={class:"selector-wrapper"},ne=["disabled"],oe={key:0,label:"Project Templates"},ae=["value"],de={key:1,label:"Global Templates"},ie=["value"],ue=["disabled"],re={key:0,class:"template-preview"},ce={class:"template-prompt-preview"},me={key:0,class:"chain-indicator"},pe={key:1,class:"selector-help"},ve={key:2,class:"saving-indicator"},be={__name:"TemplateSelector",props:{sessionId:{type:String,required:!1,default:null},projectId:{type:String,required:!0},currentTemplateId:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:templateId"],setup(o,{emit:M}){const n=o,k=M,p=Q(),v=I(n.currentTemplateId),u=I(!1),h=x(()=>p.loading),s=x(()=>p.projectTemplates),g=x(()=>p.globalTemplates),c=x(()=>v.value?p.getTemplateById(v.value):null),$=x(()=>{var S;if(!((S=c.value)!=null&&S.nextTemplateId))return null;const e=[];let i=c.value.nextTemplateId;const m=new Set;for(;i&&!m.has(i);){m.add(i);const l=p.getTemplateById(i);if(l)e.push(l.name),i=l.nextTemplateId;else{e.push("Unknown");break}if(e.length>=3){e.push("...");break}}return e.length>0?`Chains to: ${e.join(" → ")}`:null}),w=K(n,"currentTemplateId");O(w,e=>{v.value=e},{flush:"sync"}),N(()=>{n.projectId&&p.projectTemplates.length===0&&p.globalTemplates.length===0&&p.fetchProjectTemplates(n.projectId)});function _(e,i=100){return e?e.length<=i?e:`${e.substring(0,i)}...`:""}function E(e){var S;const i=((S=e==null?void 0:e.target)==null?void 0:S.value)||v.value,m=i===""?null:i;u.value=!0,k("update:templateId",m),setTimeout(()=>{u.value=!1},1e3)}function r(){v.value=null,E()}return(e,i)=>(a(),d("div",se,[i[3]||(i[3]=t("label",{class:"selector-label"},"Next Template",-1)),t("div",le,[T(t("select",{"onUpdate:modelValue":i[0]||(i[0]=m=>v.value=m),class:"form-input",disabled:o.disabled||h.value,onChange:E},[i[1]||(i[1]=t("option",{value:null}," Select a template to run... ",-1)),s.value.length?(a(),d("optgroup",oe,[(a(!0),d(j,null,D(s.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ae))),128))])):f("",!0),g.value.length?(a(),d("optgroup",de,[(a(!0),d(j,null,D(g.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ie))),128))])):f("",!0)],40,ne),[[q,v.value]]),v.value?(a(),d("button",{key:0,class:"btn-clear",title:"Clear selection",disabled:o.disabled||u.value,onClick:r}," ✕ ",8,ue)):f("",!0)]),c.value?(a(),d("div",re,[t("p",ce,C(_(c.value.prompt)),1),$.value?(a(),d("span",me,C($.value),1)):f("",!0)])):(a(),d("p",pe," When Claude finishes responding, a new session will automatically start using this template. ")),u.value?(a(),d("div",ve,[...i[2]||(i[2]=[t("span",{class:"loading-spinner"},null,-1),B(" Saving... ",-1)])])):f("",!0)]))}},he=A(be,[["__scopeId","data-v-d206f8db"]]),fe={class:"modal-content"},ge={class:"modal-header"},ke={class:"modal-title"},ye={class:"modal-body"},Te={key:0,class:"error-message"},Ce={class:"form-section"},Se={class:"form-group"},$e={class:"form-group"},xe={class:"form-group"},Ie={class:"toggle-switch"},Me={key:1,class:"form-group"},Ee=["min"],Re={key:2,class:"form-section"},we={class:"form-group"},_e={class:"toggle-switch"},Oe={key:3,class:"reschedule-settings"},Le={class:"form-group"},Ae={class:"checkbox-option"},Ve={class:"checkbox-option"},Ue={class:"form-group"},je={class:"form-group"},De={class:"form-group"},Be={class:"form-group"},Ne={key:0,class:"form-group"},Fe={class:"checkbox-option"},qe={class:"form-help"},Pe={class:"modal-footer"},ze=["disabled"],Ge={__name:"SchedulingEditModal",props:{isOpen:{type:Boolean,default:!1},session:{type:Object,default:null}},emits:["close","saved"],setup(o,{emit:M}){const n=o,k=M,p=X(),v=P(),u=I(!1),h=I(null),s=W({scheduledAtLocal:"",model:null,mode:"standard",thinkingEnabled:!1,nextTemplateId:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null,resetRescheduleCount:!1}),g=x(()=>{const r=new Date;return r.setMinutes(r.getMinutes()+1),r.toISOString().slice(0,16)}),c=x(()=>{var r;return((r=n.session)==null?void 0:r.status)==="scheduled"?"Edit Scheduling Settings":"Auto-Reschedule Settings"});function $(){k("close")}function w(r){s.nextTemplateId=r}function _(r){if(!r)return"";const e=new Date(r),i=e.getFullYear(),m=String(e.getMonth()+1).padStart(2,"0"),S=String(e.getDate()).padStart(2,"0"),l=String(e.getHours()).padStart(2,"0"),b=String(e.getMinutes()).padStart(2,"0");return`${i}-${m}-${S}T${l}:${b}`}async function E(){var r;u.value=!0,h.value=null;try{const e={model:s.model,mode:s.mode,thinkingEnabled:s.thinkingEnabled,nextTemplateId:s.nextTemplateId,autoRescheduleEnabled:s.autoRescheduleEnabled,rescheduleDelayMinutes:s.rescheduleDelayMinutes,rescheduleOnTokenLimit:s.rescheduleOnTokenLimit,rescheduleOnServiceError:s.rescheduleOnServiceError,maxRescheduleCount:s.maxRescheduleCount||null,maxTotalTokens:s.maxTotalTokens||null,rescheduleAtTokenCount:s.rescheduleAtTokenCount||null};((r=n.session)==null?void 0:r.status)==="scheduled"&&s.scheduledAtLocal&&(e.scheduledAt=new Date(s.scheduledAtLocal).getTime()),s.resetRescheduleCount&&(e.rescheduleCount=0),await p.updateSessionFields(n.session.id,e),v.success("Settings saved"),k("saved"),$()}catch(e){h.value=e.message||"Failed to save settings",v.error(`Failed to save settings: ${h.value}`)}finally{u.value=!1}}return O(()=>n.isOpen,r=>{r&&n.session&&(h.value=null,s.scheduledAtLocal=_(n.session.scheduledAt),s.model=n.session.model||null,s.mode=n.session.mode||"standard",s.thinkingEnabled=n.session.thinkingEnabled||!1,s.nextTemplateId=n.session.nextTemplateId||null,s.autoRescheduleEnabled=n.session.autoRescheduleEnabled||!1,s.rescheduleDelayMinutes=n.session.rescheduleDelayMinutes||15,s.rescheduleOnTokenLimit=n.session.rescheduleOnTokenLimit??!0,s.rescheduleOnServiceError=n.session.rescheduleOnServiceError??!0,s.maxRescheduleCount=n.session.maxRescheduleCount,s.maxTotalTokens=n.session.maxTotalTokens,s.rescheduleAtTokenCount=n.session.rescheduleAtTokenCount,s.resetRescheduleCount=!1)}),(r,e)=>{var i,m,S;return a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F($,["self"])},[t("div",fe,[t("div",ge,[t("h2",ke,C(c.value),1),t("button",{class:"close-btn","aria-label":"Close",onClick:$}," × ")]),t("div",ye,[h.value?(a(),d("div",Te,C(h.value),1)):f("",!0),t("div",Ce,[e[16]||(e[16]=t("h3",{class:"section-title"}," Session Settings ",-1)),t("div",Se,[e[12]||(e[12]=t("label",{class:"form-label"},"Model",-1)),U(Z,{modelValue:s.model,"onUpdate:modelValue":e[0]||(e[0]=l=>s.model=l)},null,8,["modelValue"])]),t("div",$e,[e[13]||(e[13]=t("label",{class:"form-label"},"Mode",-1)),U(ee,{modelValue:s.mode,"onUpdate:modelValue":e[1]||(e[1]=l=>s.mode=l)},null,8,["modelValue"])]),t("div",xe,[t("label",Ie,[T(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>s.thinkingEnabled=l),type:"checkbox"},null,512),[[R,s.thinkingEnabled]]),e[14]||(e[14]=t("span",{class:"toggle-slider"},null,-1)),e[15]||(e[15]=t("span",{class:"toggle-label"},"Extended Thinking",-1))])])]),((i=o.session)==null?void 0:i.status)==="scheduled"?(a(),d("div",Me,[e[17]||(e[17]=t("label",{for:"scheduled-at",class:"form-label"},"Scheduled Time",-1)),T(t("input",{id:"scheduled-at","onUpdate:modelValue":e[3]||(e[3]=l=>s.scheduledAtLocal=l),type:"datetime-local",min:g.value,class:"form-input"},null,8,Ee),[[L,s.scheduledAtLocal]])])):f("",!0),((m=o.session)==null?void 0:m.status)==="scheduled"?(a(),d("div",Re,[e[18]||(e[18]=t("h3",{class:"section-title"}," Template Chain ",-1)),U(he,{"session-id":o.session.id,"project-id":o.session.projectId,"current-template-id":s.nextTemplateId,disabled:u.value,"onUpdate:templateId":w},null,8,["session-id","project-id","current-template-id","disabled"])])):f("",!0),t("div",we,[t("label",_e,[T(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>s.autoRescheduleEnabled=l),type:"checkbox"},null,512),[[R,s.autoRescheduleEnabled]]),e[19]||(e[19]=t("span",{class:"toggle-slider"},null,-1)),e[20]||(e[20]=t("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),s.autoRescheduleEnabled?(a(),d("div",Oe,[t("div",Le,[e[23]||(e[23]=t("p",{class:"settings-label"}," Reschedule Triggers ",-1)),t("label",Ae,[T(t("input",{"onUpdate:modelValue":e[5]||(e[5]=l=>s.rescheduleOnTokenLimit=l),type:"checkbox"},null,512),[[R,s.rescheduleOnTokenLimit]]),e[21]||(e[21]=t("span",null,"Token limit errors",-1))]),t("label",Ve,[T(t("input",{"onUpdate:modelValue":e[6]||(e[6]=l=>s.rescheduleOnServiceError=l),type:"checkbox"},null,512),[[R,s.rescheduleOnServiceError]]),e[22]||(e[22]=t("span",null,"Service unavailability",-1))])]),t("div",Ue,[e[25]||(e[25]=t("label",{class:"form-label"},"Reschedule Delay",-1)),T(t("select",{"onUpdate:modelValue":e[7]||(e[7]=l=>s.rescheduleDelayMinutes=l),class:"form-input"},[...e[24]||(e[24]=[t("option",{value:5}," 5 minutes ",-1),t("option",{value:15}," 15 minutes ",-1),t("option",{value:30}," 30 minutes ",-1),t("option",{value:60}," 1 hour ",-1),t("option",{value:120}," 2 hours ",-1)])],512),[[q,s.rescheduleDelayMinutes,void 0,{number:!0}]])]),t("div",je,[e[26]||(e[26]=t("label",{class:"form-label"},"Max Reschedule Count",-1)),T(t("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>s.maxRescheduleCount=l),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[L,s.maxRescheduleCount,void 0,{number:!0}]])]),t("div",De,[e[27]||(e[27]=t("label",{class:"form-label"},"Max Total Tokens",-1)),T(t("input",{"onUpdate:modelValue":e[9]||(e[9]=l=>s.maxTotalTokens=l),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[L,s.maxTotalTokens,void 0,{number:!0}]])]),t("div",Be,[e[28]||(e[28]=t("label",{class:"form-label"},"Reschedule At Token Count",-1)),T(t("input",{"onUpdate:modelValue":e[10]||(e[10]=l=>s.rescheduleAtTokenCount=l),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[L,s.rescheduleAtTokenCount,void 0,{number:!0}]])]),((S=o.session)==null?void 0:S.rescheduleCount)>0?(a(),d("div",Ne,[t("label",Fe,[T(t("input",{"onUpdate:modelValue":e[11]||(e[11]=l=>s.resetRescheduleCount=l),type:"checkbox"},null,512),[[R,s.resetRescheduleCount]]),e[29]||(e[29]=t("span",null,"Reset reschedule count to 0",-1))]),t("p",qe," Current count: "+C(o.session.rescheduleCount),1)])):f("",!0)])):f("",!0)]),t("div",Pe,[t("button",{class:"btn btn-secondary",onClick:$}," Cancel "),t("button",{class:"btn btn-primary",disabled:u.value,onClick:E},C(u.value?"Updating...":"Update"),9,ze)])])])):f("",!0)])}}},Mt=A(Ge,[["__scopeId","data-v-e1ffc2da"]]),He={class:"modal-content",role:"dialog","aria-labelledby":"modal-title"},Ke={class:"modal-body"},We={class:"moving-info"},Ye={class:"moving-session-name"},Je={key:0,class:"empty-state"},Qe={key:1,class:"lanes-list"},Xe={class:"lane-label"},Ze=["name","value","disabled","aria-disabled","aria-label"],et={class:"lane-info"},tt={class:"lane-name"},st={key:0,class:"lane-current-badge"},lt={key:1,class:"lane-automation-icon",title:"Automation enabled"},nt={key:2,class:"automation-option"},ot={class:"checkbox-label"},at={class:"modal-footer"},dt=["disabled"],it=["disabled","aria-label"],ut=["disabled"],rt={__name:"MoveCardModal",props:{isOpen:Boolean,projectId:{type:String,required:!0},cardId:{type:String,required:!0},currentLaneId:{type:String,required:!0},sessionName:{type:String,default:""}},emits:["update:isOpen","close","moved"],setup(o,{emit:M}){const n=o,k=M,p=te(),v=P(),u=I(null),h=I(!0),s=I(!1),g=I(!1),c=x(()=>{var l;return((l=p.board)==null?void 0:l.lanes)||[]}),$=x(()=>n.sessionName?n.sessionName:n.cardId||"Unnamed session"),w=x(()=>u.value&&c.value.find(l=>l.id===u.value)||null),_=x(()=>w.value?r(w.value):!1),E=x(()=>u.value&&u.value!==n.currentLaneId);function r(l){return l?!!(l.onEnterTemplateId||l.onEnterPrompt):!1}function e(){k("update:isOpen",!1),k("close"),u.value=null,h.value=!0}async function i(){if(!(!E.value||!n.cardId)){s.value=!0;try{await p.moveCard(n.projectId,n.cardId,u.value,{runOnEnterTemplate:h.value}),v.success("Card moved successfully"),k("moved"),e()}catch(l){console.error("Failed to move card:",l),v.error(l.message||"Failed to move card")}finally{s.value=!1}}}async function m(){if(confirm("Remove this session from the board?")){g.value=!0;try{await p.removeCard(n.projectId,n.cardId),v.success("Session removed from board"),k("close")}catch(l){console.error("Failed to remove card:",l),v.error(l.message||"Failed to remove session")}finally{g.value=!1}}}O(u,(l,b)=>{if(l!==b){const y=c.value.find(V=>V.id===l);h.value=r(y)}}),O(()=>n.isOpen,l=>{l&&(u.value=null,h.value=!0)});function S(l){l.key==="Escape"&&n.isOpen&&e()}return N(()=>{document.addEventListener("keydown",S)}),H(()=>{document.removeEventListener("keydown",S)}),(l,b)=>o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(e,["self"])},[t("div",He,[t("div",{class:"modal-header"},[b[2]||(b[2]=t("h2",{id:"modal-title",class:"modal-title"}," Move to Lane ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",onClick:e}," × ")]),t("div",Ke,[t("div",We,[b[3]||(b[3]=t("span",{class:"moving-label"},"Moving:",-1)),t("span",Ye,C($.value),1)]),c.value.length===0?(a(),d("div",Je,[...b[4]||(b[4]=[t("p",null,"No lanes available",-1)])])):(a(),d("div",Qe,[(a(!0),d(j,null,D(c.value,y=>(a(),d("div",{key:y.id,class:Y(["lane-row",{"lane-row-current":y.id===o.currentLaneId,"lane-row-disabled":y.id===o.currentLaneId}])},[t("label",Xe,[T(t("input",{"onUpdate:modelValue":b[0]||(b[0]=V=>u.value=V),type:"radio",name:`lane-${o.cardId}`,value:y.id,disabled:y.id===o.currentLaneId,"aria-disabled":y.id===o.currentLaneId,"aria-label":`Move to ${y.name}`},null,8,Ze),[[J,u.value]]),t("span",et,[t("span",tt,C(y.name),1),y.id===o.currentLaneId?(a(),d("span",st,"(current)")):f("",!0),r(y)?(a(),d("span",lt,[...b[5]||(b[5]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):f("",!0)])])],2))),128))])),_.value?(a(),d("div",nt,[t("label",ot,[T(t("input",{"onUpdate:modelValue":b[1]||(b[1]=y=>h.value=y),type:"checkbox","aria-label":"Run automation on entry"},null,512),[[R,h.value]]),b[6]||(b[6]=t("span",null,"Run automation on entry",-1))])])):f("",!0)]),t("div",at,[t("button",{class:"btn btn-secondary",disabled:g.value,onClick:e}," Cancel ",8,dt),t("button",{class:"btn btn-danger",disabled:g.value,"aria-label":`Remove ${$.value} from board`,onClick:m},C(g.value?"Removing...":"Remove from Board"),9,it),t("button",{class:"btn btn-primary",disabled:!E.value||s.value||g.value,"aria-label":"Move card to selected lane",onClick:i},C(s.value?"Moving...":"Move"),9,ut)])])])):f("",!0)}},Et=A(rt,[["__scopeId","data-v-bddc7788"]]),ct={class:"modal-content",role:"dialog","aria-labelledby":"archive-modal-title"},mt={class:"modal-header"},pt=["disabled"],vt={class:"modal-body"},bt={class:"confirm-message"},ht={key:0,class:"cleanup-option"},ft={class:"checkbox-label"},gt={class:"modal-footer"},kt=["disabled"],yt=["disabled"],Tt={__name:"ArchiveConfirmModal",props:{isOpen:{type:Boolean,default:!1},sessionName:{type:String,default:"this session"},hasCleanupScript:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(o,{emit:M}){const n=o,k=M,p=I(!0);O(()=>n.isOpen,g=>{g&&(p.value=!0)});function v(){k("confirm",p.value)}function u(){n.loading||k("cancel")}function h(){n.loading||k("cancel")}function s(g){g.key==="Escape"&&n.isOpen&&!n.loading&&k("cancel")}return N(()=>{document.addEventListener("keydown",s)}),H(()=>{document.removeEventListener("keydown",s)}),(g,c)=>(a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(h,["self"])},[t("div",ct,[t("div",mt,[c[1]||(c[1]=t("h2",{id:"archive-modal-title",class:"modal-title"}," Archive Session ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",disabled:o.loading,onClick:u}," × ",8,pt)]),t("div",vt,[t("p",bt,[c[2]||(c[2]=B(" Are you sure you want to archive ",-1)),t("strong",null,C(o.sessionName),1),c[3]||(c[3]=B("? ",-1))]),o.hasCleanupScript?(a(),d("div",ht,[t("label",ft,[T(t("input",{"onUpdate:modelValue":c[0]||(c[0]=$=>p.value=$),type:"checkbox","aria-label":"Run project cleanup script"},null,512),[[R,p.value]]),c[4]||(c[4]=t("span",null,"Run project cleanup script",-1))])])):f("",!0)]),t("div",gt,[t("button",{class:"btn btn-secondary",disabled:o.loading,onClick:u}," Cancel ",8,kt),t("button",{class:"btn btn-primary",disabled:o.loading,onClick:v},C(o.loading?"Archiving...":"Archive"),9,yt)])])])):f("",!0)]))}},Rt=A(Tt,[["__scopeId","data-v-58eef4e8"]]);export{Rt as A,Et as M,Mt as S,he as T};
@@ -1 +1 @@
1
- import{_ as N,i as U,o as V,a as r,c as u,b as t,e as _,d as j,w as P,u as I,t as i,j as k,v as D,k as v,p as J,h,x as M,s as $,l as m,f as A,g as q}from"./index-LoOsRfMI.js";import{u as F}from"./commandButtons-CCojrcrv.js";import{a as W}from"./ApiClient-Dbs1H78V.js";const p={PROJECT_ID:"projectId",PROJECT_ID_ALT:"id",BUTTON_ID:"buttonId",SESSION_ID:"id",SESSION_TAB:"tab"},z={class:"container command-button-detail"},G={key:0,class:"loading-state"},H={key:1,class:"form-container"},K={class:"form-header"},Q={class:"form-group"},X={key:0,class:"form-error"},Y={class:"form-group"},Z={key:0,class:"form-error"},ee={class:"form-group"},te={key:0,class:"form-error"},oe={class:"form-group form-group-checkbox"},se={for:"showOnList",class:"checkbox-label"},ae={class:"form-actions"},le=["disabled"],ne={key:0,class:"form-error-message"},re={class:"modal-body"},ue={class:"modal-footer"},de=["disabled"],ie={__name:"CommandButtonDetailView",setup(me){const d=$(),w=q(),O=F(),b=U(),B=m(!1),C=m(!1),g=m(!1),f=m(!1),c=m(null),a=m({}),o=m({label:"",command:"",sortOrder:0,showOnList:!1}),y=M(()=>!!d.params.buttonId),S=async s=>{B.value=!0;try{const e=d.params[p.PROJECT_ID];let l=O.getButtonById(s);l||(l=await W.getCommandButton(e,s)),l&&(o.value={label:l.label,command:l.command,sortOrder:l.sortOrder||0,showOnList:l.showOnList||!1})}catch(e){c.value=`Failed to load button: ${e.message}`}finally{B.value=!1}},T=()=>(a.value={},o.value.label.trim()||(a.value.label="Label is required"),o.value.command.trim()||(a.value.command="Command is required"),o.value.sortOrder<0&&(a.value.sortOrder="Sort order must be 0 or greater"),Object.keys(a.value).length===0),L=async()=>{if(c.value=null,!!T()){C.value=!0;try{const s=d.params[p.PROJECT_ID],e={label:o.value.label,command:o.value.command,sortOrder:o.value.sortOrder,showOnList:o.value.showOnList};y.value?(await O.updateButton(s,d.params[p.BUTTON_ID],e),b.success("Command button updated")):(await O.createButton(s,e),b.success("Command button created")),w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{C.value=!1}}},x=()=>{w.back()},E=()=>{f.value=!0},R=async()=>{g.value=!0;try{const s=d.params[p.PROJECT_ID],e=d.params[p.BUTTON_ID];await O.deleteButton(s,e),b.success("Command button deleted"),f.value=!1,w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{g.value=!1}};return V(async()=>{y.value&&await S(d.params.buttonId)}),(s,e)=>{const l=A("router-link");return r(),u("div",z,[B.value?(r(),u("div",G,[...e[7]||(e[7]=[t("span",{class:"loading-spinner"},null,-1),_(" Loading... ",-1)])])):(r(),u("div",H,[t("div",K,[j(l,{to:`/projects/${I(d).params[I(p).PROJECT_ID]}/sessions`,class:"btn btn-outline-secondary"},{default:P(()=>[...e[8]||(e[8]=[_(" ← Back ",-1)])]),_:1},8,["to"]),t("h2",null,i(y.value?"Edit Command Button":"New Command Button"),1)]),t("form",{class:"command-button-form",onSubmit:h(L,["prevent"])},[t("div",Q,[e[9]||(e[9]=t("label",{for:"label"},"Label",-1)),k(t("input",{id:"label","onUpdate:modelValue":e[0]||(e[0]=n=>o.value.label=n),type:"text",class:"form-input",placeholder:"e.g., Run Tests",required:""},null,512),[[D,o.value.label]]),a.value.label?(r(),u("span",X,i(a.value.label),1)):v("",!0)]),t("div",Y,[e[10]||(e[10]=t("label",{for:"command"},"Command",-1)),k(t("textarea",{id:"command","onUpdate:modelValue":e[1]||(e[1]=n=>o.value.command=n),class:"form-input",placeholder:"e.g., npm test",rows:"4",required:""},null,512),[[D,o.value.command]]),a.value.command?(r(),u("span",Z,i(a.value.command),1)):v("",!0)]),t("div",ee,[e[11]||(e[11]=t("label",{for:"sortOrder"},"Sort Order (optional)",-1)),k(t("input",{id:"sortOrder","onUpdate:modelValue":e[2]||(e[2]=n=>o.value.sortOrder=n),type:"number",class:"form-input",placeholder:"0",min:"0"},null,512),[[D,o.value.sortOrder,void 0,{number:!0}]]),a.value.sortOrder?(r(),u("span",te,i(a.value.sortOrder),1)):v("",!0),e[12]||(e[12]=t("span",{class:"form-help"},"Buttons are displayed in ascending order. Leave as 0 for default.",-1))]),t("div",oe,[t("label",se,[k(t("input",{id:"showOnList","onUpdate:modelValue":e[3]||(e[3]=n=>o.value.showOnList=n),type:"checkbox",class:"form-checkbox"},null,512),[[J,o.value.showOnList]]),e[13]||(e[13]=t("span",null,"Show status indicator on session lists",-1))]),e[14]||(e[14]=t("span",{class:"form-help"},"When enabled, the button status will be displayed on session cards",-1))]),t("div",ae,[t("button",{type:"button",class:"btn btn-outline-secondary",onClick:x}," Cancel "),y.value?(r(),u("button",{key:0,type:"button",class:"btn btn-outline-danger",onClick:E}," Delete ")):v("",!0),t("button",{type:"submit",class:"btn btn-primary",disabled:C.value},i(C.value?"Saving...":y.value?"Update":"Create"),9,le)]),c.value?(r(),u("div",ne,i(c.value),1)):v("",!0)],32)])),f.value?(r(),u("div",{key:2,class:"modal-overlay",onClick:e[6]||(e[6]=n=>f.value=!1)},[t("div",{class:"modal-dialog",onClick:e[5]||(e[5]=h(()=>{},["stop"]))},[e[18]||(e[18]=t("div",{class:"modal-header"},[t("h4",null,"Delete Command Button")],-1)),t("div",re,[t("p",null,[e[15]||(e[15]=_('Are you sure you want to delete "',-1)),t("strong",null,i(o.value.label),1),e[16]||(e[16]=_('"?',-1))]),e[17]||(e[17]=t("p",null,"This action cannot be undone.",-1))]),t("div",ue,[t("button",{class:"btn btn-outline-secondary",onClick:e[4]||(e[4]=n=>f.value=!1)}," Cancel "),t("button",{class:"btn btn-danger",disabled:g.value,onClick:R},i(g.value?"Deleting...":"Delete"),9,de)])])])):v("",!0)])}}},be=N(ie,[["__scopeId","data-v-b4855495"]]);export{be as default};
1
+ import{_ as N,i as U,o as V,a as r,c as u,b as t,e as _,d as j,w as P,u as I,t as i,j as k,v as D,k as v,p as J,h,x as M,s as $,l as m,f as A,g as q}from"./index-DkLkDgig.js";import{u as F}from"./commandButtons-CY87n64i.js";import{a as W}from"./ApiClient-Dbs1H78V.js";const p={PROJECT_ID:"projectId",PROJECT_ID_ALT:"id",BUTTON_ID:"buttonId",SESSION_ID:"id",SESSION_TAB:"tab"},z={class:"container command-button-detail"},G={key:0,class:"loading-state"},H={key:1,class:"form-container"},K={class:"form-header"},Q={class:"form-group"},X={key:0,class:"form-error"},Y={class:"form-group"},Z={key:0,class:"form-error"},ee={class:"form-group"},te={key:0,class:"form-error"},oe={class:"form-group form-group-checkbox"},se={for:"showOnList",class:"checkbox-label"},ae={class:"form-actions"},le=["disabled"],ne={key:0,class:"form-error-message"},re={class:"modal-body"},ue={class:"modal-footer"},de=["disabled"],ie={__name:"CommandButtonDetailView",setup(me){const d=$(),w=q(),O=F(),b=U(),B=m(!1),C=m(!1),g=m(!1),f=m(!1),c=m(null),a=m({}),o=m({label:"",command:"",sortOrder:0,showOnList:!1}),y=M(()=>!!d.params.buttonId),S=async s=>{B.value=!0;try{const e=d.params[p.PROJECT_ID];let l=O.getButtonById(s);l||(l=await W.getCommandButton(e,s)),l&&(o.value={label:l.label,command:l.command,sortOrder:l.sortOrder||0,showOnList:l.showOnList||!1})}catch(e){c.value=`Failed to load button: ${e.message}`}finally{B.value=!1}},T=()=>(a.value={},o.value.label.trim()||(a.value.label="Label is required"),o.value.command.trim()||(a.value.command="Command is required"),o.value.sortOrder<0&&(a.value.sortOrder="Sort order must be 0 or greater"),Object.keys(a.value).length===0),L=async()=>{if(c.value=null,!!T()){C.value=!0;try{const s=d.params[p.PROJECT_ID],e={label:o.value.label,command:o.value.command,sortOrder:o.value.sortOrder,showOnList:o.value.showOnList};y.value?(await O.updateButton(s,d.params[p.BUTTON_ID],e),b.success("Command button updated")):(await O.createButton(s,e),b.success("Command button created")),w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{C.value=!1}}},x=()=>{w.back()},E=()=>{f.value=!0},R=async()=>{g.value=!0;try{const s=d.params[p.PROJECT_ID],e=d.params[p.BUTTON_ID];await O.deleteButton(s,e),b.success("Command button deleted"),f.value=!1,w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{g.value=!1}};return V(async()=>{y.value&&await S(d.params.buttonId)}),(s,e)=>{const l=A("router-link");return r(),u("div",z,[B.value?(r(),u("div",G,[...e[7]||(e[7]=[t("span",{class:"loading-spinner"},null,-1),_(" Loading... ",-1)])])):(r(),u("div",H,[t("div",K,[j(l,{to:`/projects/${I(d).params[I(p).PROJECT_ID]}/sessions`,class:"btn btn-outline-secondary"},{default:P(()=>[...e[8]||(e[8]=[_(" ← Back ",-1)])]),_:1},8,["to"]),t("h2",null,i(y.value?"Edit Command Button":"New Command Button"),1)]),t("form",{class:"command-button-form",onSubmit:h(L,["prevent"])},[t("div",Q,[e[9]||(e[9]=t("label",{for:"label"},"Label",-1)),k(t("input",{id:"label","onUpdate:modelValue":e[0]||(e[0]=n=>o.value.label=n),type:"text",class:"form-input",placeholder:"e.g., Run Tests",required:""},null,512),[[D,o.value.label]]),a.value.label?(r(),u("span",X,i(a.value.label),1)):v("",!0)]),t("div",Y,[e[10]||(e[10]=t("label",{for:"command"},"Command",-1)),k(t("textarea",{id:"command","onUpdate:modelValue":e[1]||(e[1]=n=>o.value.command=n),class:"form-input",placeholder:"e.g., npm test",rows:"4",required:""},null,512),[[D,o.value.command]]),a.value.command?(r(),u("span",Z,i(a.value.command),1)):v("",!0)]),t("div",ee,[e[11]||(e[11]=t("label",{for:"sortOrder"},"Sort Order (optional)",-1)),k(t("input",{id:"sortOrder","onUpdate:modelValue":e[2]||(e[2]=n=>o.value.sortOrder=n),type:"number",class:"form-input",placeholder:"0",min:"0"},null,512),[[D,o.value.sortOrder,void 0,{number:!0}]]),a.value.sortOrder?(r(),u("span",te,i(a.value.sortOrder),1)):v("",!0),e[12]||(e[12]=t("span",{class:"form-help"},"Buttons are displayed in ascending order. Leave as 0 for default.",-1))]),t("div",oe,[t("label",se,[k(t("input",{id:"showOnList","onUpdate:modelValue":e[3]||(e[3]=n=>o.value.showOnList=n),type:"checkbox",class:"form-checkbox"},null,512),[[J,o.value.showOnList]]),e[13]||(e[13]=t("span",null,"Show status indicator on session lists",-1))]),e[14]||(e[14]=t("span",{class:"form-help"},"When enabled, the button status will be displayed on session cards",-1))]),t("div",ae,[t("button",{type:"button",class:"btn btn-outline-secondary",onClick:x}," Cancel "),y.value?(r(),u("button",{key:0,type:"button",class:"btn btn-outline-danger",onClick:E}," Delete ")):v("",!0),t("button",{type:"submit",class:"btn btn-primary",disabled:C.value},i(C.value?"Saving...":y.value?"Update":"Create"),9,le)]),c.value?(r(),u("div",ne,i(c.value),1)):v("",!0)],32)])),f.value?(r(),u("div",{key:2,class:"modal-overlay",onClick:e[6]||(e[6]=n=>f.value=!1)},[t("div",{class:"modal-dialog",onClick:e[5]||(e[5]=h(()=>{},["stop"]))},[e[18]||(e[18]=t("div",{class:"modal-header"},[t("h4",null,"Delete Command Button")],-1)),t("div",re,[t("p",null,[e[15]||(e[15]=_('Are you sure you want to delete "',-1)),t("strong",null,i(o.value.label),1),e[16]||(e[16]=_('"?',-1))]),e[17]||(e[17]=t("p",null,"This action cannot be undone.",-1))]),t("div",ue,[t("button",{class:"btn btn-outline-secondary",onClick:e[4]||(e[4]=n=>f.value=!1)}," Cancel "),t("button",{class:"btn btn-danger",disabled:g.value,onClick:R},i(g.value?"Deleting...":"Delete"),9,de)])])])):v("",!0)])}}},be=N(ie,[["__scopeId","data-v-b4855495"]]);export{be as default};
@@ -1 +1 @@
1
- import{L as f,a0 as g,_ as b,i as _,l as m,m as E,a as p,c as h,b as j,F as L,r as x,t as w,u as I,x as C,$ as O}from"./index-LoOsRfMI.js";import{a as r}from"./ApiClient-Dbs1H78V.js";import{u as V}from"./sessions-i5xO8Qao.js";const D=["low","medium","high","max","auto"],$=[{id:"claude-haiku-4-5-20251001",name:"Haiku 4.5",description:"Fast & lightweight"},{id:"claude-sonnet-4-6",name:"Sonnet 4.6",description:"Balanced"},{id:"claude-opus-4-6",name:"Opus 4.6",description:"Most capable (default)"}],H="claude-opus-4-6",F=f("todos",{state:()=>({items:[],loading:!1,error:null,expanded:!1,currentConversationId:null}),getters:{hasTodos:t=>t.items.length>0,pendingCount:t=>t.items.filter(e=>e.status==="pending").length,inProgressCount:t=>t.items.filter(e=>e.status==="in_progress").length,completedCount:t=>t.items.filter(e=>e.status==="completed").length},actions:{async fetchTodos(t,e=null){this.loading=!0,this.error=null,this.currentConversationId=e;try{this.items=await r.getSessionTodos(t,e)}catch(s){this.error=s.message}finally{this.loading=!1}},updateTodos(t,e=null){(e===null||this.currentConversationId===null||e===this.currentConversationId)&&(this.items=t)},clearTodos(){this.items=[],this.loading=!1,this.error=null,this.currentConversationId=null,this.expanded=!1},toggleExpanded(){this.expanded=!this.expanded},setExpanded(t){this.expanded=t}}}),B=Symbol("overlay-sessions-store"),k=Symbol("overlay-todos-store");function P(){return g(B,V())}function q(){return g(k,F())}const z=f("templates",{state:()=>({projectTemplates:[],globalTemplates:[],loading:!1,error:null}),getters:{allTemplates:t=>[...t.projectTemplates,...t.globalTemplates],getTemplateById:t=>e=>t.projectTemplates.find(s=>s.id===e)||t.globalTemplates.find(s=>s.id===e)},actions:{async fetchProjectTemplates(t){this.loading=!0,this.error=null;try{const e=await r.getProjectTemplates(t);this.projectTemplates=e.project||[],this.globalTemplates=e.global||[]}catch(e){this.error=e.message}finally{this.loading=!1}},async createProjectTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.createProjectTemplate(t,e);return this.projectTemplates.unshift(s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async createGlobalTemplate(t){this.loading=!0,this.error=null;try{const e=await r.createGlobalTemplate(t);return this.globalTemplates.unshift(e),e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async updateTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.updateTemplate(t,e);let l=this.projectTemplates.findIndex(o=>o.id===t);return l!==-1?this.projectTemplates[l]=s:(l=this.globalTemplates.findIndex(o=>o.id===t),l!==-1&&(this.globalTemplates[l]=s)),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteTemplate(t){this.loading=!0,this.error=null;try{await r.deleteTemplate(t),this.projectTemplates=this.projectTemplates.filter(e=>e.id!==t),this.globalTemplates=this.globalTemplates.filter(e=>e.id!==t)}catch(e){throw this.error=e.message,e}finally{this.loading=!1}}}}),R={class:"effort-selector"},U=["value","disabled"],A=["value"],M={__name:"EffortLevelSelector",props:{sessionId:{type:String,default:null},modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:e}){const s=t,l=e,o=P(),T=_(),u=m(!1),y=["auto",...D.filter(a=>a!=="auto")].map(a=>({value:a,label:`${a.charAt(0).toUpperCase()+a.slice(1)} Effort`})),c=C(()=>{var a;return s.sessionId?((a=o.currentSession)==null?void 0:a.effortLevel)||"auto":s.modelValue||"auto"}),n=m(c.value),S=O(s,"modelValue");E([c,S],([a])=>{n.value=a||"auto"},{flush:"sync"});async function v(a){if(!u.value&&n.value!==a)if(n.value=a,s.sessionId){u.value=!0;try{await o.updateSessionFields(s.sessionId,{effortLevel:a==="auto"?null:a})}catch(d){n.value=c.value,T.error(d.message)}finally{u.value=!1}}else l("update:modelValue",a==="auto"?null:a)}return(a,d)=>(p(),h("div",R,[j("select",{id:"effort-select",value:n.value,disabled:t.disabled||u.value,class:"effort-select","aria-label":"Effort level",onChange:d[0]||(d[0]=i=>v(i.target.value))},[(p(!0),h(L,null,x(I(y),i=>(p(),h("option",{key:i.value,value:i.value},w(i.label),9,A))),128))],40,U)]))}},J=b(M,[["__scopeId","data-v-8bc1fe64"]]);export{$ as C,H as D,J as E,B as S,k as T,F as a,P as b,q as c,z as u};
1
+ import{L as f,a0 as g,_ as b,i as _,l as m,m as E,a as p,c as h,b as j,F as L,r as x,t as w,u as I,x as C,$ as O}from"./index-DkLkDgig.js";import{a as r}from"./ApiClient-Dbs1H78V.js";import{u as V}from"./sessions-CMby7ij3.js";const D=["low","medium","high","max","auto"],$=[{id:"claude-haiku-4-5-20251001",name:"Haiku 4.5",description:"Fast & lightweight"},{id:"claude-sonnet-4-6",name:"Sonnet 4.6",description:"Balanced"},{id:"claude-opus-4-6",name:"Opus 4.6",description:"Most capable (default)"}],H="claude-opus-4-6",F=f("todos",{state:()=>({items:[],loading:!1,error:null,expanded:!1,currentConversationId:null}),getters:{hasTodos:t=>t.items.length>0,pendingCount:t=>t.items.filter(e=>e.status==="pending").length,inProgressCount:t=>t.items.filter(e=>e.status==="in_progress").length,completedCount:t=>t.items.filter(e=>e.status==="completed").length},actions:{async fetchTodos(t,e=null){this.loading=!0,this.error=null,this.currentConversationId=e;try{this.items=await r.getSessionTodos(t,e)}catch(s){this.error=s.message}finally{this.loading=!1}},updateTodos(t,e=null){(e===null||this.currentConversationId===null||e===this.currentConversationId)&&(this.items=t)},clearTodos(){this.items=[],this.loading=!1,this.error=null,this.currentConversationId=null,this.expanded=!1},toggleExpanded(){this.expanded=!this.expanded},setExpanded(t){this.expanded=t}}}),B=Symbol("overlay-sessions-store"),k=Symbol("overlay-todos-store");function P(){return g(B,V())}function q(){return g(k,F())}const z=f("templates",{state:()=>({projectTemplates:[],globalTemplates:[],loading:!1,error:null}),getters:{allTemplates:t=>[...t.projectTemplates,...t.globalTemplates],getTemplateById:t=>e=>t.projectTemplates.find(s=>s.id===e)||t.globalTemplates.find(s=>s.id===e)},actions:{async fetchProjectTemplates(t){this.loading=!0,this.error=null;try{const e=await r.getProjectTemplates(t);this.projectTemplates=e.project||[],this.globalTemplates=e.global||[]}catch(e){this.error=e.message}finally{this.loading=!1}},async createProjectTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.createProjectTemplate(t,e);return this.projectTemplates.unshift(s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async createGlobalTemplate(t){this.loading=!0,this.error=null;try{const e=await r.createGlobalTemplate(t);return this.globalTemplates.unshift(e),e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async updateTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.updateTemplate(t,e);let l=this.projectTemplates.findIndex(o=>o.id===t);return l!==-1?this.projectTemplates[l]=s:(l=this.globalTemplates.findIndex(o=>o.id===t),l!==-1&&(this.globalTemplates[l]=s)),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteTemplate(t){this.loading=!0,this.error=null;try{await r.deleteTemplate(t),this.projectTemplates=this.projectTemplates.filter(e=>e.id!==t),this.globalTemplates=this.globalTemplates.filter(e=>e.id!==t)}catch(e){throw this.error=e.message,e}finally{this.loading=!1}}}}),R={class:"effort-selector"},U=["value","disabled"],A=["value"],M={__name:"EffortLevelSelector",props:{sessionId:{type:String,default:null},modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:e}){const s=t,l=e,o=P(),T=_(),u=m(!1),y=["auto",...D.filter(a=>a!=="auto")].map(a=>({value:a,label:`${a.charAt(0).toUpperCase()+a.slice(1)} Effort`})),c=C(()=>{var a;return s.sessionId?((a=o.currentSession)==null?void 0:a.effortLevel)||"auto":s.modelValue||"auto"}),n=m(c.value),S=O(s,"modelValue");E([c,S],([a])=>{n.value=a||"auto"},{flush:"sync"});async function v(a){if(!u.value&&n.value!==a)if(n.value=a,s.sessionId){u.value=!0;try{await o.updateSessionFields(s.sessionId,{effortLevel:a==="auto"?null:a})}catch(d){n.value=c.value,T.error(d.message)}finally{u.value=!1}}else l("update:modelValue",a==="auto"?null:a)}return(a,d)=>(p(),h("div",R,[j("select",{id:"effort-select",value:n.value,disabled:t.disabled||u.value,class:"effort-select","aria-label":"Effort level",onChange:d[0]||(d[0]=i=>v(i.target.value))},[(p(!0),h(L,null,x(I(y),i=>(p(),h("option",{key:i.value,value:i.value},w(i.label),9,A))),128))],40,U)]))}},J=b(M,[["__scopeId","data-v-8bc1fe64"]]);export{$ as C,H as D,J as E,B as S,k as T,F as a,P as b,q as c,z as u};
@@ -1 +1 @@
1
- import{_ as f,i as _,o as b,m as y,u as S,a as i,c as r,b as s,e as c,j as h,p as k,t as d,k as p,h as x,l as u}from"./index-LoOsRfMI.js";import{u as w}from"./settings-dSK3wckF.js";import"./ApiClient-Dbs1H78V.js";const V={key:0,class:"loading-state"},G={class:"form-group"},A={class:"checkbox-label"},B={key:0,class:"error-message"},C={class:"form-actions"},D=["disabled"],M={key:0,class:"loading-spinner"},N={__name:"GeneralSettingsView",setup(U){const n=w(),v=_(),l=u(!1),a=u(!1),o=u(null);b(()=>{n.fetchGeneralSettings()}),y(()=>n.generalSettings,t=>{t&&(l.value=t.disableAnalytics)},{immediate:!0});async function g(){a.value=!0,o.value=null;try{await n.updateGeneralSettings({disableAnalytics:l.value}),v.success("General settings saved successfully")}catch(t){o.value=t.message}finally{a.value=!1}}return(t,e)=>S(n).loading?(i(),r("div",V,[...e[1]||(e[1]=[s("span",{class:"loading-spinner"},null,-1),c(" Loading... ",-1)])])):(i(),r("form",{key:1,class:"form card",onSubmit:x(g,["prevent"])},[s("div",G,[s("label",A,[h(s("input",{"onUpdate:modelValue":e[0]||(e[0]=m=>l.value=m),type:"checkbox"},null,512),[[k,l.value]]),e[2]||(e[2]=c(" Disable analytics tracking ",-1))]),e[3]||(e[3]=s("p",{class:"form-help"}," When checked, no usage analytics will be collected. Changes take effect on next page load. ",-1))]),o.value?(i(),r("div",B,d(o.value),1)):p("",!0),s("div",C,[s("button",{type:"submit",class:"btn btn-primary",disabled:a.value},[a.value?(i(),r("span",M)):p("",!0),c(" "+d(a.value?"Saving...":"Save Settings"),1)],8,D)])],32))}},L=f(N,[["__scopeId","data-v-0cd79804"]]);export{L as default};
1
+ import{_ as f,i as _,o as b,m as y,u as S,a as i,c as r,b as s,e as c,j as h,p as k,t as d,k as p,h as x,l as u}from"./index-DkLkDgig.js";import{u as w}from"./settings-BplIxCbi.js";import"./ApiClient-Dbs1H78V.js";const V={key:0,class:"loading-state"},G={class:"form-group"},A={class:"checkbox-label"},B={key:0,class:"error-message"},C={class:"form-actions"},D=["disabled"],M={key:0,class:"loading-spinner"},N={__name:"GeneralSettingsView",setup(U){const n=w(),v=_(),l=u(!1),a=u(!1),o=u(null);b(()=>{n.fetchGeneralSettings()}),y(()=>n.generalSettings,t=>{t&&(l.value=t.disableAnalytics)},{immediate:!0});async function g(){a.value=!0,o.value=null;try{await n.updateGeneralSettings({disableAnalytics:l.value}),v.success("General settings saved successfully")}catch(t){o.value=t.message}finally{a.value=!1}}return(t,e)=>S(n).loading?(i(),r("div",V,[...e[1]||(e[1]=[s("span",{class:"loading-spinner"},null,-1),c(" Loading... ",-1)])])):(i(),r("form",{key:1,class:"form card",onSubmit:x(g,["prevent"])},[s("div",G,[s("label",A,[h(s("input",{"onUpdate:modelValue":e[0]||(e[0]=m=>l.value=m),type:"checkbox"},null,512),[[k,l.value]]),e[2]||(e[2]=c(" Disable analytics tracking ",-1))]),e[3]||(e[3]=s("p",{class:"form-help"}," When checked, no usage analytics will be collected. Changes take effect on next page load. ",-1))]),o.value?(i(),r("div",B,d(o.value),1)):p("",!0),s("div",C,[s("button",{type:"submit",class:"btn btn-primary",disabled:a.value},[a.value?(i(),r("span",M)):p("",!0),c(" "+d(a.value?"Saving...":"Save Settings"),1)],8,D)])],32))}},L=f(N,[["__scopeId","data-v-0cd79804"]]);export{L as default};
@@ -1 +1 @@
1
- import{_ as t,a,c as n,e,b as o}from"./index-LoOsRfMI.js";const r={class:"form-help"},l={__name:"InterpolationHelp",setup(c){return(p,s)=>(a(),n("p",r,[...s[0]||(s[0]=[e(" Available variables: ",-1),o("code",null,"{{rootSession.id}}",-1),e(", ",-1),o("code",null,"{{rootSession.name}}",-1),e(", ",-1),o("code",null,"{{rootSession.summary}}",-1),e(", ",-1),o("code",null,"{{rootSession.status}}",-1)])]))}},i=t(l,[["__scopeId","data-v-26718cef"]]);export{i as I};
1
+ import{_ as t,a,c as n,e,b as o}from"./index-DkLkDgig.js";const r={class:"form-help"},l={__name:"InterpolationHelp",setup(c){return(p,s)=>(a(),n("p",r,[...s[0]||(s[0]=[e(" Available variables: ",-1),o("code",null,"{{rootSession.id}}",-1),e(", ",-1),o("code",null,"{{rootSession.name}}",-1),e(", ",-1),o("code",null,"{{rootSession.summary}}",-1),e(", ",-1),o("code",null,"{{rootSession.status}}",-1)])]))}},i=t(l,[["__scopeId","data-v-26718cef"]]);export{i as I};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index--OtPwBbF.js","assets/index-DkLkDgig.js","assets/index-gmCCsCQ1.css","assets/SessionDetailView-CHYrx2Ab.js","assets/sessions-CMby7ij3.js","assets/ApiClient-Dbs1H78V.js","assets/settings-BplIxCbi.js","assets/projects-C2Y29PSJ.js","assets/EffortLevelSelector-BHJHSqul.js","assets/EffortLevelSelector-BQaQmU2d.css","assets/SessionLogStream-B-w3n4c3.js","assets/commandButtons-CY87n64i.js","assets/SessionLogStream-zPUTiGbe.css","assets/ArchiveConfirmModal-DBuOmtXu.js","assets/ModelSelector-BWIU4ud7.js","assets/providers-CeJXuo0Q.js","assets/ModelSelector-DPPD-92R.css","assets/SlashCommandWizard-CzyLjsdJ.js","assets/SlashCommandWizard-BB30cSvo.css","assets/ArchiveConfirmModal-CQZeuYBz.css","assets/QuickResponseSettings-Bk9mq96x.js","assets/QuickResponseSettings-B8188A1D.css","assets/QuickResponsesPanel-BRvcnkQr.js","assets/QuickResponsesPanel-DIBQFj0W.css","assets/ResizableTextarea-CwGM4P3c.js","assets/ResizableTextarea-B5nAA0RV.css","assets/SessionDetailView-7bWgC7Es.css","assets/style-BTin-zR_.css"])))=>i.map(i=>d[i]);
2
+ import{l as E,m as d,z as T,a as l,c as V,G as h,w as u,b as m,e as k,d as w,u as y,a3 as x,O as P,P as p}from"./index-DkLkDgig.js";import{u as b}from"./SessionDetailView-CHYrx2Ab.js";import"./sessions-CMby7ij3.js";import"./ApiClient-Dbs1H78V.js";import"./settings-BplIxCbi.js";import"./projects-C2Y29PSJ.js";import"./EffortLevelSelector-BHJHSqul.js";import"./SessionLogStream-B-w3n4c3.js";import"./commandButtons-CY87n64i.js";import"./ArchiveConfirmModal-DBuOmtXu.js";import"./ModelSelector-BWIU4ud7.js";import"./providers-CeJXuo0Q.js";import"./SlashCommandWizard-CzyLjsdJ.js";import"./QuickResponseSettings-Bk9mq96x.js";import"./QuickResponsesPanel-BRvcnkQr.js";import"./ResizableTextarea-CwGM4P3c.js";const A={class:"canvas-md-editor"},J={__name:"MarkdownEditor",props:{content:{type:String,default:""},sessionId:{type:String,required:!0},filename:{type:String,required:!0},itemId:{type:String,required:!0}},emits:["save"],setup(c,{expose:v,emit:f}){const _=P(()=>p(()=>import("./index--OtPwBbF.js").then(e=>e.w),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26])).then(e=>p(()=>Promise.resolve({}),__vite__mapDeps([27])).then(()=>e.MdEditor))),r=c,n=f,g=b(),t=E(r.content||"");let o=null,i=r.content||"";d(t,e=>{o&&clearTimeout(o),o=setTimeout(()=>{i=e,n("save",e)},1e3)});function s(){o&&(clearTimeout(o),o=null),t.value!==i&&n("save",t.value)}return v({flushPendingSave:s}),d(()=>r.content,e=>{e!==t.value&&(t.value=e||"")}),T(()=>{s(),g.endEditing(r.filename)}),(e,a)=>(l(),V("div",A,[(l(),h(x,null,{default:u(()=>[w(y(_),{modelValue:t.value,"onUpdate:modelValue":a[0]||(a[0]=S=>t.value=S),theme:"dark",preview:!1,language:"en-US","no-upload-img":!0,"show-code-row-number":!0},null,8,["modelValue"])]),fallback:u(()=>[...a[1]||(a[1]=[m("div",{class:"editor-loading"},[m("span",{class:"loading-spinner"}),k(" Loading editor... ")],-1)])]),_:1}))]))}};export{J as default};
@@ -1 +1 @@
1
- import{u as x}from"./providers-CfGxUhUu.js";import{_ as L,o as N,l as M,m as V,a as r,c as n,b as z,t as _,k as F,F as I,r as S,u as R,E as D,x as f,$ as H}from"./index-LoOsRfMI.js";const P=["data-model"],U=["value","disabled"],$={key:0,value:""},j=["label"],q=["value","data-provider-id"],A={__name:"ModelSelector",props:{modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1},allowEmpty:{type:Boolean,default:!1},emptyLabel:{type:String,default:"Use system default"},selectClass:{type:String,default:""}},emits:["update:modelValue"],setup(i,{emit:b}){const d=i,v=b,s=x(),h=f(()=>s.providers.length>0&&s.providers.some(e=>e.models&&e.models.length>0)),B=f(()=>{const e=new Set;for(const t of s.providers)if(t.models)for(const l of t.models)e.add(l.modelId);return e});function g(e){return e&&B.value.has(e)}const u=f(()=>{var l,o,m;const e=s.providers.find(c=>c.isBuiltIn);if((l=e==null?void 0:e.models)!=null&&l.length){const c=e.models.find(E=>E.tier==="sonnet");return(c==null?void 0:c.modelId)||e.models[0].modelId}const t=s.providers[0];return((m=(o=t==null?void 0:t.models)==null?void 0:o[0])==null?void 0:m.modelId)||null}),w=M(!1);N(async()=>{(s.providers.length===0||!h.value)&&await s.fetchProviders(),w.value=!0});function p(e){var l;if(!e)return null;if(e.includes("claude-"))return e;const t=s.providers.find(o=>o.isBuiltIn);if((l=t==null?void 0:t.models)!=null&&l.length){const o=t.models.find(m=>m.tier===e);if(o)return o.modelId}return e}const a=M(p(d.modelValue)),y=f(()=>d.allowEmpty&&(!a.value||a.value==="")?"":a.value&&g(a.value)?a.value:u.value?u.value:a.value),k=H(d,"modelValue");V(k,e=>{a.value=p(e)},{flush:"sync"}),V(()=>s.providers,()=>{if(!h.value)return;if(d.allowEmpty&&(!d.modelValue||d.modelValue==="")){a.value="";return}let e=null;d.modelValue&&(e=p(d.modelValue)),e&&g(e)?a.value!==e&&(a.value=e,e!==d.modelValue&&v("update:modelValue",e)):u.value&&a.value!==u.value&&(a.value=u.value,v("update:modelValue",u.value))},{deep:!0,immediate:!0});function C(e){y.value!==e&&(a.value=e,v("update:modelValue",e))}return(e,t)=>(r(),n("div",{class:"model-selector","data-model":y.value},[z("select",{id:"model-select",value:y.value,disabled:i.disabled,class:D(i.selectClass||"model-select"),onChange:t[0]||(t[0]=l=>C(l.target.value))},[i.allowEmpty?(r(),n("option",$,_(i.emptyLabel),1)):F("",!0),(r(!0),n(I,null,S(R(s).providers,l=>(r(),n("optgroup",{key:l.id,label:l.name},[(r(!0),n(I,null,S(l.models,o=>(r(),n("option",{key:o.id,value:o.modelId,"data-provider-id":l.id},_(l.isBuiltIn?o.displayName:o.modelId),9,q))),128))],8,j))),128))],42,U)],8,P))}},K=L(A,[["__scopeId","data-v-ea265eb4"]]);export{K as M};
1
+ import{u as x}from"./providers-CeJXuo0Q.js";import{_ as L,o as N,l as M,m as V,a as r,c as n,b as z,t as _,k as F,F as I,r as S,u as R,E as D,x as f,$ as H}from"./index-DkLkDgig.js";const P=["data-model"],U=["value","disabled"],$={key:0,value:""},j=["label"],q=["value","data-provider-id"],A={__name:"ModelSelector",props:{modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1},allowEmpty:{type:Boolean,default:!1},emptyLabel:{type:String,default:"Use system default"},selectClass:{type:String,default:""}},emits:["update:modelValue"],setup(i,{emit:b}){const d=i,v=b,s=x(),h=f(()=>s.providers.length>0&&s.providers.some(e=>e.models&&e.models.length>0)),B=f(()=>{const e=new Set;for(const t of s.providers)if(t.models)for(const l of t.models)e.add(l.modelId);return e});function g(e){return e&&B.value.has(e)}const u=f(()=>{var l,o,m;const e=s.providers.find(c=>c.isBuiltIn);if((l=e==null?void 0:e.models)!=null&&l.length){const c=e.models.find(E=>E.tier==="sonnet");return(c==null?void 0:c.modelId)||e.models[0].modelId}const t=s.providers[0];return((m=(o=t==null?void 0:t.models)==null?void 0:o[0])==null?void 0:m.modelId)||null}),w=M(!1);N(async()=>{(s.providers.length===0||!h.value)&&await s.fetchProviders(),w.value=!0});function p(e){var l;if(!e)return null;if(e.includes("claude-"))return e;const t=s.providers.find(o=>o.isBuiltIn);if((l=t==null?void 0:t.models)!=null&&l.length){const o=t.models.find(m=>m.tier===e);if(o)return o.modelId}return e}const a=M(p(d.modelValue)),y=f(()=>d.allowEmpty&&(!a.value||a.value==="")?"":a.value&&g(a.value)?a.value:u.value?u.value:a.value),k=H(d,"modelValue");V(k,e=>{a.value=p(e)},{flush:"sync"}),V(()=>s.providers,()=>{if(!h.value)return;if(d.allowEmpty&&(!d.modelValue||d.modelValue==="")){a.value="";return}let e=null;d.modelValue&&(e=p(d.modelValue)),e&&g(e)?a.value!==e&&(a.value=e,e!==d.modelValue&&v("update:modelValue",e)):u.value&&a.value!==u.value&&(a.value=u.value,v("update:modelValue",u.value))},{deep:!0,immediate:!0});function C(e){y.value!==e&&(a.value=e,v("update:modelValue",e))}return(e,t)=>(r(),n("div",{class:"model-selector","data-model":y.value},[z("select",{id:"model-select",value:y.value,disabled:i.disabled,class:D(i.selectClass||"model-select"),onChange:t[0]||(t[0]=l=>C(l.target.value))},[i.allowEmpty?(r(),n("option",$,_(i.emptyLabel),1)):F("",!0),(r(!0),n(I,null,S(R(s).providers,l=>(r(),n("optgroup",{key:l.id,label:l.name},[(r(!0),n(I,null,S(l.models,o=>(r(),n("option",{key:o.id,value:o.modelId,"data-provider-id":l.id},_(l.isBuiltIn?o.displayName:o.modelId),9,q))),128))],8,j))),128))],42,U)],8,P))}},K=L(A,[["__scopeId","data-v-ea265eb4"]]);export{K as M};
@@ -1,3 +1,3 @@
1
- import{I as ge,l as m,_ as de,a as r,c as d,b as l,E as ue,k as h,t as A,e as re,F as L,y as Ve,m as R,j as C,v as X,p as ie,n as _,i as Oe,z as xe,o as Me,d as $,w as Le,u as v,K as Z,r as H,G as fe,h as Ne,s as Ue,f as Ge,x as D,g as qe}from"./index-LoOsRfMI.js";import{g as je,u as Fe}from"./sessions-i5xO8Qao.js";import{u as Pe}from"./EffortLevelSelector-DIj0Wykj.js";import{u as We,a as Qe,Q as ze}from"./QuickResponseSettings-DB8MD7dm.js";import{a as He}from"./ApiClient-Dbs1H78V.js";import{F as Ke,Q as Ye,u as Je}from"./QuickResponsesPanel-D0B5nzGw.js";import{S as Xe}from"./SessionFormOptions-Doyl_mON.js";import{R as Ze}from"./ResizableTextarea-DDChlp5b.js";import{S as _e,a as et}from"./SlashCommandWizard-CpNLU4vI.js";import{u as tt}from"./projects-DWX5jGcZ.js";import"./settings-dSK3wckF.js";import"./ModelSelector-C9RlCVhC.js";import"./providers-CfGxUhUu.js";function lt(t){const u=m(""),a=m(!1),f=m("yolo"),o=m(null),S=m(null),x=m(!0),E=m(null),g=m(!0),n=m("worktree"),c=m(""),I=m(!1),k=m(""),N=m(null),V=m(null),K=m(null),w=m({scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}),T=m({mode:!1,model:!1,thinkingEnabled:!1,startImmediately:!1,quickGitMode:!1,quickWorktreeBranch:!1});function U(p){p.mode&&(f.value=p.mode,T.value.mode=!0),p.model?(o.value=p.model,T.value.model=!0):(o.value="sonnet",T.value.model=!0),p.thinkingEnabled!==null&&p.thinkingEnabled!==void 0&&(x.value=p.thinkingEnabled,T.value.thinkingEnabled=!0),p.effortLevel&&(E.value=p.effortLevel),p.startImmediately!==null&&p.startImmediately!==void 0&&(g.value=p.startImmediately,T.value.startImmediately=!0),p.gitMode&&(n.value=p.gitMode,T.value.quickGitMode=!0),p.gitBranch&&(c.value=p.gitBranch,T.value.quickWorktreeBranch=!0)}function ee(p){const y=localStorage.getItem(t.value);y&&(u.value=y,ge(()=>{p.value&&(p.value.value=y,a.value=y.trim().length>0)}))}function Y(){w.value={scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}}function G(){I.value=!0}function O(){I.value=!1,c.value=k.value}function M(p){k.value=je("",p),I.value||(c.value=k.value)}return{prompt:u,promptHasContent:a,mode:f,model:o,providerId:S,thinkingEnabled:x,effortLevel:E,startImmediately:g,quickGitMode:n,quickWorktreeBranch:c,editingBranch:I,autoBranchName:k,selectedTemplateId:N,startFromTemplateId:V,parentSessionId:K,schedulingData:w,usingDefaults:T,applyProjectDefaults:U,restoreDraftFromStorage:ee,resetSchedulingData:Y,handleBranchEdit:G,resetBranchName:O,updateAutoBranchName:M}}function nt(t,u){if(!t)return;const a=t.selectionStart,f=t.selectionEnd,o=t.value.substring(0,a),S=t.value.substring(f);t.value=o+u+S,t.selectionStart=t.selectionEnd=a+u.length,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus()}function ot(t,u){if(!t)return;const a=t.value.trim(),f=a?`${a}
1
+ import{I as ge,l as m,_ as de,a as r,c as d,b as l,E as ue,k as h,t as A,e as re,F as L,y as Ve,m as R,j as C,v as X,p as ie,n as _,i as Oe,z as xe,o as Me,d as $,w as Le,u as v,K as Z,r as H,G as fe,h as Ne,s as Ue,f as Ge,x as D,g as qe}from"./index-DkLkDgig.js";import{g as je,u as Fe}from"./sessions-CMby7ij3.js";import{u as Pe}from"./EffortLevelSelector-BHJHSqul.js";import{u as We,a as Qe,Q as ze}from"./QuickResponseSettings-Bk9mq96x.js";import{a as He}from"./ApiClient-Dbs1H78V.js";import{F as Ke,Q as Ye,u as Je}from"./QuickResponsesPanel-BRvcnkQr.js";import{S as Xe}from"./SessionFormOptions-8qvL25ca.js";import{R as Ze}from"./ResizableTextarea-CwGM4P3c.js";import{S as _e,a as et}from"./SlashCommandWizard-CzyLjsdJ.js";import{u as tt}from"./projects-C2Y29PSJ.js";import"./settings-BplIxCbi.js";import"./ModelSelector-BWIU4ud7.js";import"./providers-CeJXuo0Q.js";function lt(t){const u=m(""),a=m(!1),f=m("yolo"),o=m(null),S=m(null),x=m(!0),E=m(null),g=m(!0),n=m("worktree"),c=m(""),I=m(!1),k=m(""),N=m(null),V=m(null),K=m(null),w=m({scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}),T=m({mode:!1,model:!1,thinkingEnabled:!1,startImmediately:!1,quickGitMode:!1,quickWorktreeBranch:!1});function U(p){p.mode&&(f.value=p.mode,T.value.mode=!0),p.model?(o.value=p.model,T.value.model=!0):(o.value="sonnet",T.value.model=!0),p.thinkingEnabled!==null&&p.thinkingEnabled!==void 0&&(x.value=p.thinkingEnabled,T.value.thinkingEnabled=!0),p.effortLevel&&(E.value=p.effortLevel),p.startImmediately!==null&&p.startImmediately!==void 0&&(g.value=p.startImmediately,T.value.startImmediately=!0),p.gitMode&&(n.value=p.gitMode,T.value.quickGitMode=!0),p.gitBranch&&(c.value=p.gitBranch,T.value.quickWorktreeBranch=!0)}function ee(p){const y=localStorage.getItem(t.value);y&&(u.value=y,ge(()=>{p.value&&(p.value.value=y,a.value=y.trim().length>0)}))}function Y(){w.value={scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}}function G(){I.value=!0}function O(){I.value=!1,c.value=k.value}function M(p){k.value=je("",p),I.value||(c.value=k.value)}return{prompt:u,promptHasContent:a,mode:f,model:o,providerId:S,thinkingEnabled:x,effortLevel:E,startImmediately:g,quickGitMode:n,quickWorktreeBranch:c,editingBranch:I,autoBranchName:k,selectedTemplateId:N,startFromTemplateId:V,parentSessionId:K,schedulingData:w,usingDefaults:T,applyProjectDefaults:U,restoreDraftFromStorage:ee,resetSchedulingData:Y,handleBranchEdit:G,resetBranchName:O,updateAutoBranchName:M}}function nt(t,u){if(!t)return;const a=t.selectionStart,f=t.selectionEnd,o=t.value.substring(0,a),S=t.value.substring(f);t.value=o+u+S,t.selectionStart=t.selectionEnd=a+u.length,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus()}function ot(t,u){if(!t)return;const a=t.value.trim(),f=a?`${a}
2
2
 
3
3
  ${u}`:u;t.value=f,t.dispatchEvent(new Event("input",{bubbles:!0}))}function st(t,u,a){t&&(u.prompt.value=t.prompt,a.value&&(a.value.value=t.prompt,a.value.dispatchEvent(new Event("input",{bubbles:!0}))),t.thinkingEnabled!=null&&(u.thinkingEnabled.value=t.thinkingEnabled),t.model&&(u.model.value=t.model),t.mode&&(u.mode.value=t.mode),t.gitBranch&&(u.quickWorktreeBranch.value=t.gitBranch,u.editingBranch.value=!0),t.gitMode&&(u.quickGitMode.value=t.gitMode),t.effortLevel!=null&&(u.effortLevel.value=t.effortLevel),t.nextTemplateId&&(u.selectedTemplateId.value=t.nextTemplateId))}function at(t,u){const{currentPrompt:a,gitStatus:f,files:o}=u,S=t.quickGitMode.value&&(f!=null&&f.isGitRepo)?t.quickGitMode.value:void 0;return{prompt:a,mode:t.mode.value,model:t.model.value,providerId:t.providerId.value,thinkingEnabled:t.thinkingEnabled.value,effortLevel:t.effortLevel.value,startImmediately:t.startImmediately.value,gitMode:S,gitBranch:S?t.quickWorktreeBranch.value:void 0,files:o,templateId:t.selectedTemplateId.value,parentSessionId:t.parentSessionId.value||null,scheduledAt:t.schedulingData.value.scheduledAt,autoRescheduleEnabled:t.schedulingData.value.autoRescheduleEnabled,rescheduleDelayMinutes:t.schedulingData.value.rescheduleDelayMinutes,rescheduleOnTokenLimit:t.schedulingData.value.rescheduleOnTokenLimit,rescheduleOnServiceError:t.schedulingData.value.rescheduleOnServiceError,maxRescheduleCount:t.schedulingData.value.maxRescheduleCount,maxTotalTokens:t.schedulingData.value.maxTotalTokens,rescheduleAtTokenCount:t.schedulingData.value.rescheduleAtTokenCount}}const ut={key:0,class:"form-group"},it={class:"segmented-control"},rt={key:0,class:"branch-input-row"},dt={class:"quick-branch-input"},mt=["value","placeholder"],ct={key:1,class:"current-branch-hint"},pt={key:1,class:"git-loading"},vt={__name:"GitOptionsPanel",props:{gitStatus:{type:Object,default:null},modelValue:{type:String,default:""},branchName:{type:String,default:""},autoBranchName:{type:String,default:""},editingBranch:{type:Boolean,default:!1},loadingGit:{type:Boolean,default:!1}},emits:["update:modelValue","update:branchName","branchEdit","resetBranch"],setup(t){return(u,a)=>{var f;return r(),d(L,null,[(f=t.gitStatus)!=null&&f.isGitRepo?(r(),d("div",ut,[a[9]||(a[9]=l("label",{class:"form-label"},"Git Options",-1)),l("div",it,[l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="worktree"}]),onClick:a[0]||(a[0]=o=>u.$emit("update:modelValue","worktree"))},[...a[6]||(a[6]=[l("span",{class:"segment-label-full"},"Worktree",-1),l("span",{class:"segment-label-short"},"WT",-1)])],2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="branch"}]),onClick:a[1]||(a[1]=o=>u.$emit("update:modelValue","branch"))}," Branch ",2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue===""}]),onClick:a[2]||(a[2]=o=>u.$emit("update:modelValue",""))}," Current ",2)]),t.modelValue?(r(),d("div",rt,[a[7]||(a[7]=l("label",{class:"form-label form-label-small"},"Branch Name",-1)),l("div",dt,[l("input",{value:t.branchName,type:"text",class:"form-input",placeholder:t.autoBranchName,onInput:a[3]||(a[3]=o=>u.$emit("update:branchName",o.target.value)),onFocus:a[4]||(a[4]=o=>u.$emit("branchEdit"))},null,40,mt),t.editingBranch?(r(),d("button",{key:0,type:"button",class:"btn btn-small",onClick:a[5]||(a[5]=o=>u.$emit("resetBranch"))}," Reset ")):h("",!0)]),a[8]||(a[8]=l("p",{class:"form-help"}," Auto-generated from prompt ",-1))])):h("",!0),t.modelValue===""?(r(),d("p",ct," On: "+A(t.gitStatus.currentBranch),1)):h("",!0)])):h("",!0),t.loadingGit?(r(),d("div",pt,[...a[10]||(a[10]=[l("span",{class:"loading-spinner"},null,-1),re(" Loading git info... ",-1)])])):h("",!0)],64)}}},ht=de(vt,[["__scopeId","data-v-59edf73d"]]),ft={class:"scheduling-options"},gt={key:0,class:"form-group"},bt={class:"form-group"},kt={class:"toggle-switch"},yt={key:1,class:"reschedule-settings"},Tt={class:"form-group"},St={class:"checkbox-option"},Ct={class:"checkbox-option"},Et={class:"form-group"},It={class:"limits-section"},Rt={class:"form-group"},wt={class:"form-group"},Bt={class:"form-group"},$t={__name:"SchedulingOptions",props:{modelValue:{type:Object,default:()=>({})},hideScheduledAt:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:u}){const a=t,f=u,o=Ve({scheduledAt:a.modelValue.scheduledAt||null,scheduledAtLocal:"",autoRescheduleEnabled:a.modelValue.autoRescheduleEnabled??!1,rescheduleDelayMinutes:a.modelValue.rescheduleDelayMinutes??15,rescheduleOnTokenLimit:a.modelValue.rescheduleOnTokenLimit??!0,rescheduleOnServiceError:a.modelValue.rescheduleOnServiceError??!0,maxRescheduleCount:a.modelValue.maxRescheduleCount??null,maxTotalTokens:a.modelValue.maxTotalTokens??null,rescheduleAtTokenCount:a.modelValue.rescheduleAtTokenCount??null});function S(){if(o.scheduledAtLocal){const g=new Date(o.scheduledAtLocal);o.scheduledAt=g.getTime()}else o.scheduledAt=null;E()}function x(g){if(!g)return"";const n=new Date(g),c=n.getFullYear(),I=String(n.getMonth()+1).padStart(2,"0"),k=String(n.getDate()).padStart(2,"0"),N=String(n.getHours()).padStart(2,"0"),V=String(n.getMinutes()).padStart(2,"0");return`${c}-${I}-${k}T${N}:${V}`}R(()=>a.modelValue.scheduledAt,g=>{g&&(o.scheduledAtLocal=x(g))},{immediate:!0});function E(){f("update:modelValue",{scheduledAt:o.scheduledAt,autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount})}return R(()=>({autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount}),()=>{E()},{deep:!0}),(g,n)=>(r(),d("div",ft,[t.hideScheduledAt?h("",!0):(r(),d("div",gt,[n[8]||(n[8]=l("label",{for:"scheduled-at",class:"form-label"},"Schedule Start Time (optional)",-1)),C(l("input",{id:"scheduled-at","onUpdate:modelValue":n[0]||(n[0]=c=>o.scheduledAtLocal=c),type:"datetime-local",class:"form-input",onChange:S},null,544),[[X,o.scheduledAtLocal]]),n[9]||(n[9]=l("p",{class:"form-help"}," Leave empty to start immediately ",-1))])),l("div",bt,[l("label",kt,[C(l("input",{"onUpdate:modelValue":n[1]||(n[1]=c=>o.autoRescheduleEnabled=c),type:"checkbox"},null,512),[[ie,o.autoRescheduleEnabled]]),n[10]||(n[10]=l("span",{class:"toggle-slider"},null,-1)),n[11]||(n[11]=l("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),o.autoRescheduleEnabled?(r(),d("div",yt,[l("div",Tt,[n[14]||(n[14]=l("p",{class:"settings-label"}," Reschedule Triggers ",-1)),l("label",St,[C(l("input",{"onUpdate:modelValue":n[2]||(n[2]=c=>o.rescheduleOnTokenLimit=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnTokenLimit]]),n[12]||(n[12]=l("span",{class:"checkbox-label"},"Token limit errors",-1))]),l("label",Ct,[C(l("input",{"onUpdate:modelValue":n[3]||(n[3]=c=>o.rescheduleOnServiceError=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnServiceError]]),n[13]||(n[13]=l("span",{class:"checkbox-label"},"Service unavailability",-1))])]),l("div",Et,[n[16]||(n[16]=l("label",{for:"reschedule-delay",class:"form-label"},"Reschedule Delay",-1)),C(l("select",{id:"reschedule-delay","onUpdate:modelValue":n[4]||(n[4]=c=>o.rescheduleDelayMinutes=c),class:"form-input"},[...n[15]||(n[15]=[l("option",{value:5}," 5 minutes ",-1),l("option",{value:15}," 15 minutes ",-1),l("option",{value:30}," 30 minutes ",-1),l("option",{value:60}," 1 hour ",-1),l("option",{value:120}," 2 hours ",-1)])],512),[[_,o.rescheduleDelayMinutes,void 0,{number:!0}]])]),l("div",It,[n[23]||(n[23]=l("p",{class:"settings-label"}," Limits (optional) ",-1)),l("div",Rt,[n[17]||(n[17]=l("label",{for:"max-reschedule-count",class:"form-label"},"Max Reschedule Count",-1)),C(l("input",{id:"max-reschedule-count","onUpdate:modelValue":n[5]||(n[5]=c=>o.maxRescheduleCount=c),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxRescheduleCount,void 0,{number:!0}]]),n[18]||(n[18]=l("p",{class:"form-help"}," Stop after N reschedule attempts ",-1))]),l("div",wt,[n[19]||(n[19]=l("label",{for:"max-total-tokens",class:"form-label"},"Max Total Tokens (Hard Limit)",-1)),C(l("input",{id:"max-total-tokens","onUpdate:modelValue":n[6]||(n[6]=c=>o.maxTotalTokens=c),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxTotalTokens,void 0,{number:!0}]]),n[20]||(n[20]=l("p",{class:"form-help"}," Stop rescheduling after consuming this many tokens ",-1))]),l("div",Bt,[n[21]||(n[21]=l("label",{for:"reschedule-at-token-count",class:"form-label"},"Reschedule At Token Count",-1)),C(l("input",{id:"reschedule-at-token-count","onUpdate:modelValue":n[7]||(n[7]=c=>o.rescheduleAtTokenCount=c),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[X,o.rescheduleAtTokenCount,void 0,{number:!0}]]),n[22]||(n[22]=l("p",{class:"form-help"}," Proactively reschedule when session reaches this token count ",-1))])])])):h("",!0)]))}},Dt=de($t,[["__scopeId","data-v-cfbba021"]]),At={class:"container"},Vt={key:0,class:"form-group"},Ot={key:0,label:"Project Templates"},xt=["value"],Mt={key:1,label:"Global Templates"},Lt=["value"],Nt={class:"form-group"},Ut={class:"attachment-row"},Gt={key:1,class:"error-message"},qt={key:1,class:"form-group"},jt={key:0,label:"Project Templates"},Ft=["value"],Pt={key:1,label:"Global Templates"},Wt=["value"],Qt={key:2,class:"form-group"},zt=["value"],Ht={class:"form-actions"},Kt=["disabled"],Yt={key:0,class:"loading-spinner"},Jt={__name:"NewSessionView",setup(t){const u=Ue(),a=qe(),f=Fe();Oe();const o=Pe(),S=We(),x=tt(),E=D(()=>`new-session-draft-${u.params.id}`),g=lt(E),{prompt:n,promptHasContent:c,mode:I,model:k,providerId:N,thinkingEnabled:V,effortLevel:K,startImmediately:w,quickGitMode:T,quickWorktreeBranch:U,editingBranch:ee,autoBranchName:Y,selectedTemplateId:G,startFromTemplateId:O,parentSessionId:M,schedulingData:p,usingDefaults:y,applyProjectDefaults:be,restoreDraftFromStorage:ke,resetSchedulingData:ye,handleBranchEdit:Te,resetBranchName:Se,updateAutoBranchName:me}=g,B=m(null);let q=null,j=null,F=null;const P=m(!1),te=m(!1),le=m(!1),Ce=D(()=>window.innerWidth<=480?80:120),Ee=Je(()=>{var e;const i=((e=B.value)==null?void 0:e.value)||n.value;!P.value&&i.trim()&&ae()}),W=m(null),ce=m([]),pe=m(null),ve=m(null),Q=D(()=>o.projectTemplates),z=D(()=>o.globalTemplates),ne=D(()=>[...Q.value,...z.value]),he=D(()=>{const i=x.getProjectById(u.params.id);return(i==null?void 0:i.workingDirectory)||null}),oe=D(()=>f.sessions.filter(i=>i.status==="completed").sort((i,e)=>new Date(e.createdAt)-new Date(i.createdAt))),Ie=D(()=>!w.value||ne.value.length>0||oe.value.length>0),se=m(!1),J=m(null);function Re(i){var s;const e=i.target.value,b=e.trim().length>0;c.value!==b&&(c.value=b),q&&clearTimeout(q),q=setTimeout(()=>{n.value=e},150),(s=W.value)!=null&&s.isGitRepo&&(F&&clearTimeout(F),F=setTimeout(()=>me(e),300))}R(()=>W.value,i=>{i!=null&&i.isGitRepo&&!Y.value&&me(n.value)},{immediate:!0}),R(I,()=>{y.value.mode=!1}),R(k,()=>{y.value.model=!1}),R(V,()=>{y.value.thinkingEnabled=!1}),R(w,i=>{y.value.startImmediately=!1,i?ye():ge(()=>{var e;(e=ve.value)==null||e.scrollIntoView({behavior:"smooth",block:"nearest"})})}),R(T,()=>{y.value.quickGitMode=!1}),R(U,()=>{y.value.quickWorktreeBranch=!1}),R(n,i=>{j&&clearTimeout(j),j=setTimeout(()=>{i.trim()?localStorage.setItem(E.value,i):localStorage.removeItem(E.value)},500)}),xe(()=>{F&&clearTimeout(F),q&&clearTimeout(q),j&&clearTimeout(j)}),Me(async()=>{const i=u.params.id;ke(B);try{await S.fetchDefaults(i);const b=S.getDefaultsForProject(i);b?be(b):(k.value="sonnet",y.value.model=!0)}catch(b){console.warn("Failed to fetch project defaults:",b),k.value||(k.value="sonnet",y.value.model=!0)}se.value=!0;try{W.value=await He.getGitStatus(i)}catch{}finally{se.value=!1}o.fetchProjectTemplates(i),Qe().fetchForProject(i),u.query.parentSessionId&&(M.value=u.query.parentSessionId)});function we(){a.push(`/projects/${u.params.id}/sessions`)}function Be({text:i}){nt(B.value,i)}function $e({content:i,autoSubmit:e}){var b;ot(B.value,i),e?setTimeout(()=>ae(),0):(b=B.value)==null||b.blur()}function De(){const i=O.value&&o.getTemplateById(O.value);st(i,g,B)}async function ae(){var e,b;const i=((e=B.value)==null?void 0:e.value)||n.value;if(i.trim()){P.value=!0,J.value=null;try{const s=at(g,{currentPrompt:i,gitStatus:W.value,files:ce.value}),Ae=await f.createSession(u.params.id,s);(b=pe.value)==null||b.clear(),localStorage.removeItem(E.value),a.push(`/sessions/${Ae.id}?overlay=open`)}catch(s){J.value=s.message}finally{P.value=!1}}}return(i,e)=>{const b=Ge("router-link");return r(),d("div",At,[$(b,{to:`/projects/${v(u).params.id}/sessions`,class:"back-link"},{default:Le(()=>[...e[17]||(e[17]=[re(" ← Sessions ",-1)])]),_:1},8,["to"]),e[26]||(e[26]=l("h1",null,"New Session",-1)),l("form",{class:"form card",onSubmit:Ne(ae,["prevent"])},[ne.value.length>0?(r(),d("div",Vt,[e[19]||(e[19]=l("label",{class:"form-label",for:"start-from-template"},"Start From Template",-1)),C(l("select",{id:"start-from-template","onUpdate:modelValue":e[0]||(e[0]=s=>Z(O)?O.value=s:null),class:"form-input",title:"Selecting a template will populate all form fields below. You can still edit before starting.",onChange:De},[e[18]||(e[18]=l("option",{value:null}," Select a template to pre-fill... ",-1)),Q.value.length?(r(),d("optgroup",Ot,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},A(s.name),9,xt))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Mt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},A(s.name),9,Lt))),128))])):h("",!0)],544),[[_,v(O)]])])):h("",!0),l("div",Nt,[$(Ze,{id:"prompt",ref_key:"textareaRef",ref:B,class:"form-input form-textarea",placeholder:"What would you like Claude to help you with?","min-height":Ce.value,required:"",onInput:Re,onKeydown:v(Ee)},null,8,["min-height","onKeydown"]),l("div",Ut,[$(Ke,{ref_key:"fileAttachment",ref:pe,"onUpdate:files":e[1]||(e[1]=s=>ce.value=s)},null,512),he.value?(r(),fe(_e,{key:0,onOpen:e[2]||(e[2]=s=>te.value=!0)})):h("",!0)])]),$(Ye,{"show-empty":!0,onInsert:$e,onOpenSettings:e[3]||(e[3]=s=>le.value=!0)}),$(Xe,{mode:v(I),model:v(k),"effort-level":v(K),"thinking-enabled":v(V),"start-immediately":v(w),"onUpdate:mode":e[4]||(e[4]=s=>I.value=s),"onUpdate:model":e[5]||(e[5]=s=>k.value=s),"onUpdate:providerId":e[6]||(e[6]=s=>N.value=s),"onUpdate:effortLevel":e[7]||(e[7]=s=>K.value=s),"onUpdate:thinkingEnabled":e[8]||(e[8]=s=>V.value=s),"onUpdate:startImmediately":e[9]||(e[9]=s=>w.value=s)},null,8,["mode","model","effort-level","thinking-enabled","start-immediately"]),J.value?(r(),d("div",Gt,A(J.value),1)):h("",!0),$(ht,{"git-status":W.value,"model-value":v(T),"branch-name":v(U),"auto-branch-name":v(Y),"editing-branch":v(ee),"loading-git":se.value,"onUpdate:modelValue":e[10]||(e[10]=s=>T.value=s),"onUpdate:branchName":e[11]||(e[11]=s=>U.value=s),onBranchEdit:v(Te),onResetBranch:v(Se)},null,8,["git-status","model-value","branch-name","auto-branch-name","editing-branch","loading-git","onBranchEdit","onResetBranch"]),Ie.value?(r(),d("div",{key:2,ref_key:"advancedOptionsRef",ref:ve,class:"advanced-options"},[v(w)?h("",!0):(r(),fe(Dt,{key:0,modelValue:v(p),"onUpdate:modelValue":e[12]||(e[12]=s=>Z(p)?p.value=s:null)},null,8,["modelValue"])),ne.value.length>0?(r(),d("div",qt,[e[21]||(e[21]=l("label",{class:"form-label",for:"template"},"Next Template (optional)",-1)),C(l("select",{id:"template","onUpdate:modelValue":e[13]||(e[13]=s=>Z(G)?G.value=s:null),class:"form-input"},[e[20]||(e[20]=l("option",{value:null}," None - single session ",-1)),Q.value.length?(r(),d("optgroup",jt,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},A(s.name),9,Ft))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Pt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},A(s.name),9,Wt))),128))])):h("",!0)],512),[[_,v(G)]]),e[22]||(e[22]=l("p",{class:"form-help"}," After this session completes, the selected template will automatically start a new session. ",-1))])):h("",!0),oe.value.length>0?(r(),d("div",Qt,[e[24]||(e[24]=l("label",{class:"form-label",for:"parent-session"},"Parent Session (optional)",-1)),C(l("select",{id:"parent-session","onUpdate:modelValue":e[14]||(e[14]=s=>Z(M)?M.value=s:null),class:"form-input"},[e[23]||(e[23]=l("option",{value:null}," None - create standalone session ",-1)),(r(!0),d(L,null,H(oe.value,s=>(r(),d("option",{key:s.id,value:s.id},A(s.name),9,zt))),128))],512),[[_,v(M)]]),e[25]||(e[25]=l("p",{class:"form-help"}," Choose a parent session to link this as a child session. Child sessions help organize related work. ",-1))])):h("",!0)],512)):h("",!0),l("div",Ht,[l("button",{type:"button",class:"btn btn-secondary",onClick:we}," Cancel "),l("button",{type:"submit",class:"btn btn-primary btn-submit",disabled:P.value},[P.value?(r(),d("span",Yt)):h("",!0),re(" "+A(v(w)?"Start Session":"Create Draft"),1)],8,Kt)])],32),$(et,{"is-open":te.value,"onUpdate:isOpen":e[15]||(e[15]=s=>te.value=s),"working-directory":he.value||"",mode:"insert","hide-builtin":!0,onInsert:Be},null,8,["is-open","working-directory"]),$(ze,{"is-open":le.value,"project-id":v(u).params.id,onClose:e[16]||(e[16]=s=>le.value=!1)},null,8,["is-open","project-id"])])}}},dl=de(Jt,[["__scopeId","data-v-058549da"]]);export{dl as default};
@@ -1 +1 @@
1
- import{_ as N,l as r,m as $,a as s,c as o,b as t,j as D,v as j,h as F,t as h,e as w,k as f,F as k,r as S}from"./index-LoOsRfMI.js";import{a as T}from"./ApiClient-Dbs1H78V.js";const E={class:"path-chooser"},I={class:"path-input-group"},L={class:"path-browser"},M={class:"browser-header"},U={class:"browser-path"},q={class:"browser-content"},z={key:1,class:"browser-loading"},A={key:2,class:"browser-error"},G=["onClick"],H={key:0,class:"browser-empty"},J={key:1,class:"browser-empty"},K={__name:"PathChooser",props:{modelValue:{type:String,default:""}},emits:["update:modelValue"],setup(g,{emit:C}){const y=g,_=C,l=r(y.modelValue);$(()=>y.modelValue,a=>{l.value=a});function V(){_("update:modelValue",l.value)}const v=r(!1),i=r(""),c=r(null),d=r([]),m=r(!1),u=r(null);async function B(){v.value=!0,await b(l.value||"")}function p(){v.value=!1}async function b(a){m.value=!0,u.value=null;try{const e=await T.browseDirectory(a);i.value=e.path,c.value=e.parent,d.value=e.entries,e.error&&(u.value=e.error)}catch(e){u.value=e.message||"Failed to browse directory"}finally{m.value=!1}}function P(){l.value=i.value,_("update:modelValue",i.value),p()}function x(a,e){return a==="/"?`/${e}`:`${a}/${e}`}return(a,e)=>(s(),o("div",E,[t("div",I,[D(t("input",{"onUpdate:modelValue":e[0]||(e[0]=n=>l.value=n),type:"text",class:"form-input",placeholder:"/path/to/project",onInput:V},null,544),[[j,l.value]]),t("button",{type:"button",class:"btn",onClick:B}," Browse ")]),v.value?(s(),o("div",{key:0,class:"path-browser-overlay",onClick:F(p,["self"])},[t("div",L,[t("div",M,[t("span",U,h(i.value),1),t("button",{type:"button",class:"browser-close",onClick:p}," × ")]),t("div",q,[c.value?(s(),o("div",{key:0,class:"browser-item parent",onClick:e[1]||(e[1]=n=>b(c.value))},[...e[2]||(e[2]=[t("span",{class:"browser-item-icon"},"←",-1),w(" Parent Directory ",-1)])])):f("",!0),m.value?(s(),o("div",z,[...e[3]||(e[3]=[t("span",{class:"loading-spinner"},null,-1),w(" Loading... ",-1)])])):u.value?(s(),o("div",A,h(u.value),1)):(s(),o(k,{key:3},[(s(!0),o(k,null,S(d.value,n=>(s(),o("div",{key:n.name,class:"browser-item",onClick:O=>b(x(i.value,n.name))},[e[4]||(e[4]=t("span",{class:"browser-item-icon"},"📁",-1)),w(" "+h(n.name),1)],8,G))),128)),d.value.length===0&&!c.value?(s(),o("div",H," No subdirectories ")):d.value.length===0?(s(),o("div",J," No subdirectories in this folder ")):f("",!0)],64))]),t("div",{class:"browser-footer"},[t("button",{type:"button",class:"btn",onClick:p}," Cancel "),t("button",{type:"button",class:"btn btn-primary",onClick:P}," Select ")])])])):f("",!0)]))}},W=N(K,[["__scopeId","data-v-26aaee7f"]]);export{W as P};
1
+ import{_ as N,l as r,m as $,a as s,c as o,b as t,j as D,v as j,h as F,t as h,e as w,k as f,F as k,r as S}from"./index-DkLkDgig.js";import{a as T}from"./ApiClient-Dbs1H78V.js";const E={class:"path-chooser"},I={class:"path-input-group"},L={class:"path-browser"},M={class:"browser-header"},U={class:"browser-path"},q={class:"browser-content"},z={key:1,class:"browser-loading"},A={key:2,class:"browser-error"},G=["onClick"],H={key:0,class:"browser-empty"},J={key:1,class:"browser-empty"},K={__name:"PathChooser",props:{modelValue:{type:String,default:""}},emits:["update:modelValue"],setup(g,{emit:C}){const y=g,_=C,l=r(y.modelValue);$(()=>y.modelValue,a=>{l.value=a});function V(){_("update:modelValue",l.value)}const v=r(!1),i=r(""),c=r(null),d=r([]),m=r(!1),u=r(null);async function B(){v.value=!0,await b(l.value||"")}function p(){v.value=!1}async function b(a){m.value=!0,u.value=null;try{const e=await T.browseDirectory(a);i.value=e.path,c.value=e.parent,d.value=e.entries,e.error&&(u.value=e.error)}catch(e){u.value=e.message||"Failed to browse directory"}finally{m.value=!1}}function P(){l.value=i.value,_("update:modelValue",i.value),p()}function x(a,e){return a==="/"?`/${e}`:`${a}/${e}`}return(a,e)=>(s(),o("div",E,[t("div",I,[D(t("input",{"onUpdate:modelValue":e[0]||(e[0]=n=>l.value=n),type:"text",class:"form-input",placeholder:"/path/to/project",onInput:V},null,544),[[j,l.value]]),t("button",{type:"button",class:"btn",onClick:B}," Browse ")]),v.value?(s(),o("div",{key:0,class:"path-browser-overlay",onClick:F(p,["self"])},[t("div",L,[t("div",M,[t("span",U,h(i.value),1),t("button",{type:"button",class:"browser-close",onClick:p}," × ")]),t("div",q,[c.value?(s(),o("div",{key:0,class:"browser-item parent",onClick:e[1]||(e[1]=n=>b(c.value))},[...e[2]||(e[2]=[t("span",{class:"browser-item-icon"},"←",-1),w(" Parent Directory ",-1)])])):f("",!0),m.value?(s(),o("div",z,[...e[3]||(e[3]=[t("span",{class:"loading-spinner"},null,-1),w(" Loading... ",-1)])])):u.value?(s(),o("div",A,h(u.value),1)):(s(),o(k,{key:3},[(s(!0),o(k,null,S(d.value,n=>(s(),o("div",{key:n.name,class:"browser-item",onClick:O=>b(x(i.value,n.name))},[e[4]||(e[4]=t("span",{class:"browser-item-icon"},"📁",-1)),w(" "+h(n.name),1)],8,G))),128)),d.value.length===0&&!c.value?(s(),o("div",H," No subdirectories ")):d.value.length===0?(s(),o("div",J," No subdirectories in this folder ")):f("",!0)],64))]),t("div",{class:"browser-footer"},[t("button",{type:"button",class:"btn",onClick:p}," Cancel "),t("button",{type:"button",class:"btn btn-primary",onClick:P}," Select ")])])])):f("",!0)]))}},W=N(K,[["__scopeId","data-v-26aaee7f"]]);export{W as P};
@@ -1 +1 @@
1
- import{_ as W,i as K,o as Y,m as G,a as d,c as m,b as s,u as y,e as r,h as z,j as a,v as S,d as j,D as J,k as w,n as O,p as T,q as X,t as Z,w as _,s as ee,l,f as se,g as te}from"./index-LoOsRfMI.js";import{u as oe}from"./projects-DWX5jGcZ.js";import{u as le,a as ae,Q as ne}from"./QuickResponseSettings-DB8MD7dm.js";import{P as re}from"./PathChooser-Di96sZpx.js";import{M as ie}from"./ModelSelector-C9RlCVhC.js";import"./ApiClient-Dbs1H78V.js";import"./providers-CfGxUhUu.js";const ue={class:"container"},de={key:0,class:"loading-state"},me={class:"form-group"},pe={class:"form-group"},fe={class:"form-group"},ve={class:"form-group"},be={class:"form-label",for:"systemPrompt"},ge={class:"advanced-settings"},ce={class:"form-group"},ye={class:"form-group"},Se={class:"advanced-settings"},ke={class:"form-group"},Ce={class:"form-group"},we={class:"checkbox-label"},Ee={class:"form-group"},De={class:"form-group"},Ue={class:"checkbox-label"},Pe={class:"form-group"},Me={class:"form-group"},Ve={class:"form-group"},xe=["disabled"],Ie={key:0,class:"loading-spinner"},Re={class:"advanced-settings"},he={class:"advanced-settings"},je={class:"form-group"},Le={class:"checkbox-label"},Ne={key:0,class:"error-message"},Oe={class:"form-actions"},Te={class:"form-actions-right"},Be=["disabled"],Ge={key:0,class:"loading-spinner"},Fe={__name:"ProjectEditView",setup(He){const E=J,n=ee(),B=te(),p=oe(),D=le(),F=ae(),L=K(),U=l(""),P=l(""),M=l(""),i=l(""),V=l(""),x=l(""),I=l(!1),f=l(""),k=l(!1),v=l(""),C=l(!0),b=l(""),g=l(""),c=l(""),R=l(!1),h=l(!1),u=l(null),N=l(!1);Y(()=>{p.fetchProject(n.params.id),D.fetchDefaults(n.params.id),F.fetchForProject(n.params.id)}),G(()=>p.currentProject,t=>{t&&(U.value=t.name,P.value=t.workingDirectory,M.value=t.repoUrl||"",i.value=t.systemPrompt||E,V.value=t.onSessionCreated||"",x.value=t.onSessionDeleted||"",I.value=t.kanbanEnabled||!1)},{immediate:!0}),G(()=>D.getDefaultsForProject(n.params.id),t=>{t&&(f.value=t.mode||"",k.value=t.thinkingEnabled||!1,v.value=t.effortLevel??"",C.value=t.startImmediately!==!1,b.value=t.gitMode||"",g.value=t.gitBranch||"",c.value=t.model||"")},{immediate:!0});function H(){const t={};return f.value&&(t.mode=f.value),k.value&&(t.thinkingEnabled=!0),v.value&&(t.effortLevel=v.value),C.value||(t.startImmediately=!1),b.value&&(t.gitMode=b.value),g.value&&(t.gitBranch=g.value),c.value&&(t.model=c.value),t}async function A(){R.value=!0,u.value=null;try{await p.updateProject(n.params.id,{name:U.value,workingDirectory:P.value,repoUrl:M.value||null,systemPrompt:i.value===E?null:i.value,onSessionCreated:V.value||null,onSessionDeleted:x.value||null,kanbanEnabled:I.value});const t=H();Object.keys(t).length>0&&await D.updateDefaults(n.params.id,t),L.success("Project updated successfully"),B.push(`/projects/${n.params.id}/sessions`)}catch(t){u.value=t.message}finally{R.value=!1}}async function Q(){if(confirm("Reset all session defaults to system defaults?")){h.value=!0,u.value=null;try{await D.resetDefaults(n.params.id),f.value="",k.value=!1,v.value="",C.value=!0,b.value="",g.value="",c.value="",L.success("Session defaults reset to system defaults")}catch(t){u.value=t.message}finally{h.value=!1}}}async function $(){if(confirm("Are you sure you want to delete this project?"))try{await p.deleteProject(n.params.id),L.success("Project deleted successfully"),B.push("/")}catch(t){u.value=t.message}}return(t,e)=>{const q=se("router-link");return d(),m("div",ue,[e[55]||(e[55]=s("h1",null,"Edit Project",-1)),y(p).loading?(d(),m("div",de,[...e[17]||(e[17]=[s("span",{class:"loading-spinner"},null,-1),r(" Loading... ",-1)])])):y(p).currentProject?(d(),m("form",{key:1,class:"form card",onSubmit:z(A,["prevent"])},[s("div",me,[e[18]||(e[18]=s("label",{class:"form-label",for:"name"},"Project Name",-1)),a(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),type:"text",class:"form-input",required:""},null,512),[[S,U.value]])]),s("div",pe,[e[19]||(e[19]=s("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),j(re,{modelValue:P.value,"onUpdate:modelValue":e[1]||(e[1]=o=>P.value=o)},null,8,["modelValue"])]),s("div",fe,[e[20]||(e[20]=s("label",{class:"form-label",for:"repoUrl"},"Repository URL",-1)),a(s("input",{id:"repoUrl","onUpdate:modelValue":e[2]||(e[2]=o=>M.value=o),type:"url",class:"form-input",placeholder:"https://github.com/username/repo"},null,512),[[S,M.value]]),e[21]||(e[21]=s("p",{class:"form-help"}," Link to the project's repository (e.g., GitHub, GitLab). This can be automatically populated from session summaries. ",-1))]),s("div",ve,[s("label",be,[e[22]||(e[22]=r(" System Prompt ",-1)),i.value!==y(E)?(d(),m("button",{key:0,type:"button",class:"btn-link",onClick:e[3]||(e[3]=o=>i.value=y(E))}," Reset to Default ")):w("",!0)]),a(s("textarea",{id:"systemPrompt","onUpdate:modelValue":e[4]||(e[4]=o=>i.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[S,i.value]]),e[23]||(e[23]=s("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),s("details",ge,[e[28]||(e[28]=s("summary",null,"Session Lifecycle Hooks",-1)),s("div",ce,[e[24]||(e[24]=s("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),a(s("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[5]||(e[5]=o=>V.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[S,V.value]]),e[25]||(e[25]=s("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),s("div",ye,[e[26]||(e[26]=s("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),a(s("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[6]||(e[6]=o=>x.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[S,x.value]]),e[27]||(e[27]=s("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),s("details",Se,[e[46]||(e[46]=s("summary",null,"Session Defaults",-1)),e[47]||(e[47]=s("p",{class:"form-help"}," Set default values for new sessions created in this project. These values can be overridden when creating individual sessions. ",-1)),s("div",ke,[e[30]||(e[30]=s("label",{class:"form-label",for:"defaultMode"},"Mode",-1)),a(s("select",{id:"defaultMode","onUpdate:modelValue":e[7]||(e[7]=o=>f.value=o),class:"form-input"},[...e[29]||(e[29]=[s("option",{value:""}," Use system default (standard) ",-1),s("option",{value:"plan"}," Plan ",-1),s("option",{value:"standard"}," Standard ",-1),s("option",{value:"yolo"}," YOLO ",-1)])],512),[[O,f.value]])]),s("div",Ce,[s("label",we,[a(s("input",{"onUpdate:modelValue":e[8]||(e[8]=o=>k.value=o),type:"checkbox"},null,512),[[T,k.value]]),e[31]||(e[31]=r(" Enable thinking (extended thinking) by default ",-1))]),e[32]||(e[32]=s("p",{class:"form-help"}," Enable Claude's extended thinking capability for new sessions. ",-1))]),s("div",Ee,[e[34]||(e[34]=s("label",{class:"form-label",for:"defaultEffortLevel"},"Default Effort Level",-1)),a(s("select",{id:"defaultEffortLevel","onUpdate:modelValue":e[9]||(e[9]=o=>v.value=o),class:"form-input"},[...e[33]||(e[33]=[X('<option value="" data-v-315cba61> Auto (default) </option><option value="low" data-v-315cba61> Low </option><option value="medium" data-v-315cba61> Medium </option><option value="high" data-v-315cba61> High </option><option value="max" data-v-315cba61> Max </option>',5)])],512),[[O,v.value]]),e[35]||(e[35]=s("p",{class:"form-help"}," Set the default effort level for new sessions. Controls how much effort Claude puts into responses. ",-1))]),s("div",De,[s("label",Ue,[a(s("input",{"onUpdate:modelValue":e[10]||(e[10]=o=>C.value=o),type:"checkbox"},null,512),[[T,C.value]]),e[36]||(e[36]=r(" Start sessions immediately ",-1))]),e[37]||(e[37]=s("p",{class:"form-help"},' When enabled, sessions will start automatically. When disabled, sessions will be created in "waiting" state. ',-1))]),s("div",Pe,[e[39]||(e[39]=s("label",{class:"form-label",for:"defaultGitMode"},"Git Mode",-1)),a(s("select",{id:"defaultGitMode","onUpdate:modelValue":e[11]||(e[11]=o=>b.value=o),class:"form-input"},[...e[38]||(e[38]=[s("option",{value:""}," No git isolation ",-1),s("option",{value:"branch"}," Create branch for each session ",-1),s("option",{value:"worktree"}," Create worktree for each session ",-1)])],512),[[O,b.value]]),e[40]||(e[40]=s("p",{class:"form-help"}," Controls how git changes are isolated for each session. ",-1))]),s("div",Me,[e[41]||(e[41]=s("label",{class:"form-label",for:"defaultGitBranch"},"Default Git Branch",-1)),a(s("input",{id:"defaultGitBranch","onUpdate:modelValue":e[12]||(e[12]=o=>g.value=o),type:"text",class:"form-input",placeholder:"e.g., feature/ai-implementation"},null,512),[[S,g.value]]),e[42]||(e[42]=s("p",{class:"form-help"}," When using git branch mode, this is the branch name pattern for new sessions. ",-1))]),s("div",Ve,[e[43]||(e[43]=s("label",{class:"form-label",for:"defaultModel"},"Model",-1)),j(ie,{modelValue:c.value,"onUpdate:modelValue":e[13]||(e[13]=o=>c.value=o),"allow-empty":!0,"empty-label":"Use system default","select-class":"form-input"},null,8,["modelValue"]),e[44]||(e[44]=s("p",{class:"form-help"}," Choose the default Claude model for new sessions in this project. ",-1))]),s("button",{type:"button",class:"btn btn-secondary",disabled:h.value,onClick:Q},[h.value?(d(),m("span",Ie)):w("",!0),e[45]||(e[45]=r(" Reset to System Defaults ",-1))],8,xe)]),s("details",Re,[e[48]||(e[48]=s("summary",null,"Quick Responses",-1)),e[49]||(e[49]=s("p",{class:"form-help"}," Quick responses are shortcuts that can be inserted into the chat input. You can create project-specific or global responses. ",-1)),s("button",{type:"button",class:"btn btn-secondary",onClick:e[14]||(e[14]=o=>N.value=!0)}," Manage Quick Responses ")]),s("details",he,[e[52]||(e[52]=s("summary",null,"Kanban Board",-1)),s("div",je,[s("label",Le,[a(s("input",{"onUpdate:modelValue":e[15]||(e[15]=o=>I.value=o),type:"checkbox"},null,512),[[T,I.value]]),e[50]||(e[50]=r(" Enable Kanban board ",-1))]),e[51]||(e[51]=s("p",{class:"form-help"}," Enable a Kanban board to visually organize sessions into lanes. Sessions can be dragged between lanes, and lanes can trigger automated workflows. ",-1))])]),u.value?(d(),m("div",Ne,Z(u.value),1)):w("",!0),s("div",Oe,[s("button",{type:"button",class:"btn btn-danger",onClick:$}," Delete "),s("div",Te,[j(q,{to:`/projects/${y(n).params.id}/sessions`,class:"btn"},{default:_(()=>[...e[53]||(e[53]=[r(" Cancel ",-1)])]),_:1},8,["to"]),s("button",{type:"submit",class:"btn btn-primary",disabled:R.value},[R.value?(d(),m("span",Ge)):w("",!0),e[54]||(e[54]=r(" Save ",-1))],8,Be)])])],32)):w("",!0),j(ne,{"is-open":N.value,"project-id":y(n).params.id,onClose:e[16]||(e[16]=o=>N.value=!1)},null,8,["is-open","project-id"])])}}},ze=W(Fe,[["__scopeId","data-v-315cba61"]]);export{ze as default};
1
+ import{_ as W,i as K,o as Y,m as G,a as d,c as m,b as s,u as y,e as r,h as z,j as a,v as S,d as j,D as J,k as w,n as O,p as T,q as X,t as Z,w as _,s as ee,l,f as se,g as te}from"./index-DkLkDgig.js";import{u as oe}from"./projects-C2Y29PSJ.js";import{u as le,a as ae,Q as ne}from"./QuickResponseSettings-Bk9mq96x.js";import{P as re}from"./PathChooser-nhat_Pz4.js";import{M as ie}from"./ModelSelector-BWIU4ud7.js";import"./ApiClient-Dbs1H78V.js";import"./providers-CeJXuo0Q.js";const ue={class:"container"},de={key:0,class:"loading-state"},me={class:"form-group"},pe={class:"form-group"},fe={class:"form-group"},ve={class:"form-group"},be={class:"form-label",for:"systemPrompt"},ge={class:"advanced-settings"},ce={class:"form-group"},ye={class:"form-group"},Se={class:"advanced-settings"},ke={class:"form-group"},Ce={class:"form-group"},we={class:"checkbox-label"},Ee={class:"form-group"},De={class:"form-group"},Ue={class:"checkbox-label"},Pe={class:"form-group"},Me={class:"form-group"},Ve={class:"form-group"},xe=["disabled"],Ie={key:0,class:"loading-spinner"},Re={class:"advanced-settings"},he={class:"advanced-settings"},je={class:"form-group"},Le={class:"checkbox-label"},Ne={key:0,class:"error-message"},Oe={class:"form-actions"},Te={class:"form-actions-right"},Be=["disabled"],Ge={key:0,class:"loading-spinner"},Fe={__name:"ProjectEditView",setup(He){const E=J,n=ee(),B=te(),p=oe(),D=le(),F=ae(),L=K(),U=l(""),P=l(""),M=l(""),i=l(""),V=l(""),x=l(""),I=l(!1),f=l(""),k=l(!1),v=l(""),C=l(!0),b=l(""),g=l(""),c=l(""),R=l(!1),h=l(!1),u=l(null),N=l(!1);Y(()=>{p.fetchProject(n.params.id),D.fetchDefaults(n.params.id),F.fetchForProject(n.params.id)}),G(()=>p.currentProject,t=>{t&&(U.value=t.name,P.value=t.workingDirectory,M.value=t.repoUrl||"",i.value=t.systemPrompt||E,V.value=t.onSessionCreated||"",x.value=t.onSessionDeleted||"",I.value=t.kanbanEnabled||!1)},{immediate:!0}),G(()=>D.getDefaultsForProject(n.params.id),t=>{t&&(f.value=t.mode||"",k.value=t.thinkingEnabled||!1,v.value=t.effortLevel??"",C.value=t.startImmediately!==!1,b.value=t.gitMode||"",g.value=t.gitBranch||"",c.value=t.model||"")},{immediate:!0});function H(){const t={};return f.value&&(t.mode=f.value),k.value&&(t.thinkingEnabled=!0),v.value&&(t.effortLevel=v.value),C.value||(t.startImmediately=!1),b.value&&(t.gitMode=b.value),g.value&&(t.gitBranch=g.value),c.value&&(t.model=c.value),t}async function A(){R.value=!0,u.value=null;try{await p.updateProject(n.params.id,{name:U.value,workingDirectory:P.value,repoUrl:M.value||null,systemPrompt:i.value===E?null:i.value,onSessionCreated:V.value||null,onSessionDeleted:x.value||null,kanbanEnabled:I.value});const t=H();Object.keys(t).length>0&&await D.updateDefaults(n.params.id,t),L.success("Project updated successfully"),B.push(`/projects/${n.params.id}/sessions`)}catch(t){u.value=t.message}finally{R.value=!1}}async function Q(){if(confirm("Reset all session defaults to system defaults?")){h.value=!0,u.value=null;try{await D.resetDefaults(n.params.id),f.value="",k.value=!1,v.value="",C.value=!0,b.value="",g.value="",c.value="",L.success("Session defaults reset to system defaults")}catch(t){u.value=t.message}finally{h.value=!1}}}async function $(){if(confirm("Are you sure you want to delete this project?"))try{await p.deleteProject(n.params.id),L.success("Project deleted successfully"),B.push("/")}catch(t){u.value=t.message}}return(t,e)=>{const q=se("router-link");return d(),m("div",ue,[e[55]||(e[55]=s("h1",null,"Edit Project",-1)),y(p).loading?(d(),m("div",de,[...e[17]||(e[17]=[s("span",{class:"loading-spinner"},null,-1),r(" Loading... ",-1)])])):y(p).currentProject?(d(),m("form",{key:1,class:"form card",onSubmit:z(A,["prevent"])},[s("div",me,[e[18]||(e[18]=s("label",{class:"form-label",for:"name"},"Project Name",-1)),a(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),type:"text",class:"form-input",required:""},null,512),[[S,U.value]])]),s("div",pe,[e[19]||(e[19]=s("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),j(re,{modelValue:P.value,"onUpdate:modelValue":e[1]||(e[1]=o=>P.value=o)},null,8,["modelValue"])]),s("div",fe,[e[20]||(e[20]=s("label",{class:"form-label",for:"repoUrl"},"Repository URL",-1)),a(s("input",{id:"repoUrl","onUpdate:modelValue":e[2]||(e[2]=o=>M.value=o),type:"url",class:"form-input",placeholder:"https://github.com/username/repo"},null,512),[[S,M.value]]),e[21]||(e[21]=s("p",{class:"form-help"}," Link to the project's repository (e.g., GitHub, GitLab). This can be automatically populated from session summaries. ",-1))]),s("div",ve,[s("label",be,[e[22]||(e[22]=r(" System Prompt ",-1)),i.value!==y(E)?(d(),m("button",{key:0,type:"button",class:"btn-link",onClick:e[3]||(e[3]=o=>i.value=y(E))}," Reset to Default ")):w("",!0)]),a(s("textarea",{id:"systemPrompt","onUpdate:modelValue":e[4]||(e[4]=o=>i.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[S,i.value]]),e[23]||(e[23]=s("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),s("details",ge,[e[28]||(e[28]=s("summary",null,"Session Lifecycle Hooks",-1)),s("div",ce,[e[24]||(e[24]=s("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),a(s("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[5]||(e[5]=o=>V.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[S,V.value]]),e[25]||(e[25]=s("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),s("div",ye,[e[26]||(e[26]=s("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),a(s("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[6]||(e[6]=o=>x.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[S,x.value]]),e[27]||(e[27]=s("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),s("details",Se,[e[46]||(e[46]=s("summary",null,"Session Defaults",-1)),e[47]||(e[47]=s("p",{class:"form-help"}," Set default values for new sessions created in this project. These values can be overridden when creating individual sessions. ",-1)),s("div",ke,[e[30]||(e[30]=s("label",{class:"form-label",for:"defaultMode"},"Mode",-1)),a(s("select",{id:"defaultMode","onUpdate:modelValue":e[7]||(e[7]=o=>f.value=o),class:"form-input"},[...e[29]||(e[29]=[s("option",{value:""}," Use system default (standard) ",-1),s("option",{value:"plan"}," Plan ",-1),s("option",{value:"standard"}," Standard ",-1),s("option",{value:"yolo"}," YOLO ",-1)])],512),[[O,f.value]])]),s("div",Ce,[s("label",we,[a(s("input",{"onUpdate:modelValue":e[8]||(e[8]=o=>k.value=o),type:"checkbox"},null,512),[[T,k.value]]),e[31]||(e[31]=r(" Enable thinking (extended thinking) by default ",-1))]),e[32]||(e[32]=s("p",{class:"form-help"}," Enable Claude's extended thinking capability for new sessions. ",-1))]),s("div",Ee,[e[34]||(e[34]=s("label",{class:"form-label",for:"defaultEffortLevel"},"Default Effort Level",-1)),a(s("select",{id:"defaultEffortLevel","onUpdate:modelValue":e[9]||(e[9]=o=>v.value=o),class:"form-input"},[...e[33]||(e[33]=[X('<option value="" data-v-315cba61> Auto (default) </option><option value="low" data-v-315cba61> Low </option><option value="medium" data-v-315cba61> Medium </option><option value="high" data-v-315cba61> High </option><option value="max" data-v-315cba61> Max </option>',5)])],512),[[O,v.value]]),e[35]||(e[35]=s("p",{class:"form-help"}," Set the default effort level for new sessions. Controls how much effort Claude puts into responses. ",-1))]),s("div",De,[s("label",Ue,[a(s("input",{"onUpdate:modelValue":e[10]||(e[10]=o=>C.value=o),type:"checkbox"},null,512),[[T,C.value]]),e[36]||(e[36]=r(" Start sessions immediately ",-1))]),e[37]||(e[37]=s("p",{class:"form-help"},' When enabled, sessions will start automatically. When disabled, sessions will be created in "waiting" state. ',-1))]),s("div",Pe,[e[39]||(e[39]=s("label",{class:"form-label",for:"defaultGitMode"},"Git Mode",-1)),a(s("select",{id:"defaultGitMode","onUpdate:modelValue":e[11]||(e[11]=o=>b.value=o),class:"form-input"},[...e[38]||(e[38]=[s("option",{value:""}," No git isolation ",-1),s("option",{value:"branch"}," Create branch for each session ",-1),s("option",{value:"worktree"}," Create worktree for each session ",-1)])],512),[[O,b.value]]),e[40]||(e[40]=s("p",{class:"form-help"}," Controls how git changes are isolated for each session. ",-1))]),s("div",Me,[e[41]||(e[41]=s("label",{class:"form-label",for:"defaultGitBranch"},"Default Git Branch",-1)),a(s("input",{id:"defaultGitBranch","onUpdate:modelValue":e[12]||(e[12]=o=>g.value=o),type:"text",class:"form-input",placeholder:"e.g., feature/ai-implementation"},null,512),[[S,g.value]]),e[42]||(e[42]=s("p",{class:"form-help"}," When using git branch mode, this is the branch name pattern for new sessions. ",-1))]),s("div",Ve,[e[43]||(e[43]=s("label",{class:"form-label",for:"defaultModel"},"Model",-1)),j(ie,{modelValue:c.value,"onUpdate:modelValue":e[13]||(e[13]=o=>c.value=o),"allow-empty":!0,"empty-label":"Use system default","select-class":"form-input"},null,8,["modelValue"]),e[44]||(e[44]=s("p",{class:"form-help"}," Choose the default Claude model for new sessions in this project. ",-1))]),s("button",{type:"button",class:"btn btn-secondary",disabled:h.value,onClick:Q},[h.value?(d(),m("span",Ie)):w("",!0),e[45]||(e[45]=r(" Reset to System Defaults ",-1))],8,xe)]),s("details",Re,[e[48]||(e[48]=s("summary",null,"Quick Responses",-1)),e[49]||(e[49]=s("p",{class:"form-help"}," Quick responses are shortcuts that can be inserted into the chat input. You can create project-specific or global responses. ",-1)),s("button",{type:"button",class:"btn btn-secondary",onClick:e[14]||(e[14]=o=>N.value=!0)}," Manage Quick Responses ")]),s("details",he,[e[52]||(e[52]=s("summary",null,"Kanban Board",-1)),s("div",je,[s("label",Le,[a(s("input",{"onUpdate:modelValue":e[15]||(e[15]=o=>I.value=o),type:"checkbox"},null,512),[[T,I.value]]),e[50]||(e[50]=r(" Enable Kanban board ",-1))]),e[51]||(e[51]=s("p",{class:"form-help"}," Enable a Kanban board to visually organize sessions into lanes. Sessions can be dragged between lanes, and lanes can trigger automated workflows. ",-1))])]),u.value?(d(),m("div",Ne,Z(u.value),1)):w("",!0),s("div",Oe,[s("button",{type:"button",class:"btn btn-danger",onClick:$}," Delete "),s("div",Te,[j(q,{to:`/projects/${y(n).params.id}/sessions`,class:"btn"},{default:_(()=>[...e[53]||(e[53]=[r(" Cancel ",-1)])]),_:1},8,["to"]),s("button",{type:"submit",class:"btn btn-primary",disabled:R.value},[R.value?(d(),m("span",Ge)):w("",!0),e[54]||(e[54]=r(" Save ",-1))],8,Be)])])],32)):w("",!0),j(ne,{"is-open":N.value,"project-id":y(n).params.id,onClose:e[16]||(e[16]=o=>N.value=!1)},null,8,["is-open","project-id"])])}}},ze=W(Fe,[["__scopeId","data-v-315cba61"]]);export{ze as default};
@@ -1 +1 @@
1
- import{_ as k,o as y,a as s,c as e,b as o,d as c,w as d,e as l,u as i,F as u,r as j,t as p,f as v,g as h,h as g}from"./index-LoOsRfMI.js";import{u as w}from"./projects-DWX5jGcZ.js";import"./ApiClient-Dbs1H78V.js";const C={class:"container"},P={class:"page-header"},b={key:0,class:"skeleton-list"},x={key:1,class:"error-message"},N={key:2,class:"empty-state"},V={key:3,class:"project-list"},S=["onClick"],B={class:"project-info"},L={class:"project-name"},$={class:"project-path"},D={class:"project-actions"},E={__name:"ProjectListView",setup(F){const m=h(),n=w();function f(_){m.push(`/projects/${_}/sessions`)}return y(()=>{n.fetchProjects()}),(_,t)=>{const a=v("router-link");return s(),e("div",C,[o("div",P,[t[2]||(t[2]=o("h1",null,"Projects",-1)),c(a,{to:"/projects/new",class:"btn btn-primary"},{default:d(()=>[...t[1]||(t[1]=[l(" New Project ",-1)])]),_:1})]),i(n).loading?(s(),e("div",b,[(s(),e(u,null,j(3,r=>o("div",{key:r,class:"skeleton card",style:{height:"80px"}})),64))])):i(n).error?(s(),e("div",x,p(i(n).error),1)):i(n).projects.length===0?(s(),e("div",N,[t[4]||(t[4]=o("p",null,"No projects yet. Create your first project to get started.",-1)),c(a,{to:"/projects/new",class:"btn btn-primary"},{default:d(()=>[...t[3]||(t[3]=[l(" Create Project ",-1)])]),_:1})])):(s(),e("div",V,[(s(!0),e(u,null,j(i(n).projects,r=>(s(),e("div",{key:r.id,class:"project-card card",onClick:M=>f(r.id)},[o("div",B,[o("h3",L,p(r.name),1),o("p",$,p(r.workingDirectory),1)]),o("div",D,[c(a,{to:`/projects/${r.id}/edit`,class:"btn",onClick:t[0]||(t[0]=g(()=>{},["stop"]))},{default:d(()=>[...t[5]||(t[5]=[l(" Edit ",-1)])]),_:1},8,["to"])])],8,S))),128))]))])}}},q=k(E,[["__scopeId","data-v-6a29d6f6"]]);export{q as default};
1
+ import{_ as k,o as y,a as s,c as e,b as o,d as c,w as d,e as l,u as i,F as u,r as j,t as p,f as v,g as h,h as g}from"./index-DkLkDgig.js";import{u as w}from"./projects-C2Y29PSJ.js";import"./ApiClient-Dbs1H78V.js";const C={class:"container"},P={class:"page-header"},b={key:0,class:"skeleton-list"},x={key:1,class:"error-message"},N={key:2,class:"empty-state"},V={key:3,class:"project-list"},S=["onClick"],B={class:"project-info"},L={class:"project-name"},$={class:"project-path"},D={class:"project-actions"},E={__name:"ProjectListView",setup(F){const m=h(),n=w();function f(_){m.push(`/projects/${_}/sessions`)}return y(()=>{n.fetchProjects()}),(_,t)=>{const a=v("router-link");return s(),e("div",C,[o("div",P,[t[2]||(t[2]=o("h1",null,"Projects",-1)),c(a,{to:"/projects/new",class:"btn btn-primary"},{default:d(()=>[...t[1]||(t[1]=[l(" New Project ",-1)])]),_:1})]),i(n).loading?(s(),e("div",b,[(s(),e(u,null,j(3,r=>o("div",{key:r,class:"skeleton card",style:{height:"80px"}})),64))])):i(n).error?(s(),e("div",x,p(i(n).error),1)):i(n).projects.length===0?(s(),e("div",N,[t[4]||(t[4]=o("p",null,"No projects yet. Create your first project to get started.",-1)),c(a,{to:"/projects/new",class:"btn btn-primary"},{default:d(()=>[...t[3]||(t[3]=[l(" Create Project ",-1)])]),_:1})])):(s(),e("div",V,[(s(!0),e(u,null,j(i(n).projects,r=>(s(),e("div",{key:r.id,class:"project-card card",onClick:M=>f(r.id)},[o("div",B,[o("h3",L,p(r.name),1),o("p",$,p(r.workingDirectory),1)]),o("div",D,[c(a,{to:`/projects/${r.id}/edit`,class:"btn",onClick:t[0]||(t[0]=g(()=>{},["stop"]))},{default:d(()=>[...t[5]||(t[5]=[l(" Edit ",-1)])]),_:1},8,["to"])])],8,S))),128))]))])}}},q=k(E,[["__scopeId","data-v-6a29d6f6"]]);export{q as default};
@@ -1 +1 @@
1
- import{_ as k,i as N,a as i,c as u,b as s,j as d,v as m,d as y,e as C,u as I,D as P,k as b,t as j,w as x,h as R,l as t,f as U,g as V}from"./index-LoOsRfMI.js";import{u as O}from"./projects-DWX5jGcZ.js";import{P as T}from"./PathChooser-Di96sZpx.js";import"./ApiClient-Dbs1H78V.js";const F={class:"container"},M={class:"form-group"},H={class:"form-group"},A={class:"advanced-settings"},B={class:"form-group"},h={class:"form-label",for:"systemPrompt"},J={class:"form-group"},$={class:"form-group"},q={key:0,class:"error-message"},z={class:"form-actions"},L=["disabled"],W={key:0,class:"loading-spinner"},Y={__name:"ProjectNewView",setup(G){const g=V(),E=O(),_=N(),p=P,f=t(""),v=t(""),l=t(P),S=t(""),c=t(""),r=t(!1),n=t(null);async function w(){r.value=!0,n.value=null;try{const a=await E.createProject({name:f.value,workingDirectory:v.value,systemPrompt:l.value===p?null:l.value,onSessionCreated:S.value||void 0,onSessionDeleted:c.value||void 0});_.success("Project created successfully"),g.push(`/projects/${a.id}/sessions`)}catch(a){n.value=a.message}finally{r.value=!1}}return(a,e)=>{const D=U("router-link");return i(),u("div",F,[e[17]||(e[17]=s("h1",null,"New Project",-1)),s("form",{class:"form card",onSubmit:R(w,["prevent"])},[s("div",M,[e[6]||(e[6]=s("label",{class:"form-label",for:"name"},"Project Name",-1)),d(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>f.value=o),type:"text",class:"form-input",placeholder:"My Project",required:""},null,512),[[m,f.value]])]),s("div",H,[e[7]||(e[7]=s("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),y(T,{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=o=>v.value=o)},null,8,["modelValue"])]),s("details",A,[e[14]||(e[14]=s("summary",null,"Advanced Settings",-1)),s("div",B,[s("label",h,[e[8]||(e[8]=C(" System Prompt ",-1)),l.value!==I(p)?(i(),u("button",{key:0,type:"button",class:"btn-link",onClick:e[2]||(e[2]=o=>l.value=I(p))}," Reset to Default ")):b("",!0)]),d(s("textarea",{id:"systemPrompt","onUpdate:modelValue":e[3]||(e[3]=o=>l.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[m,l.value]]),e[9]||(e[9]=s("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),s("div",J,[e[10]||(e[10]=s("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),d(s("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[4]||(e[4]=o=>S.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[m,S.value]]),e[11]||(e[11]=s("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),s("div",$,[e[12]||(e[12]=s("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),d(s("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[5]||(e[5]=o=>c.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[m,c.value]]),e[13]||(e[13]=s("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),n.value?(i(),u("div",q,j(n.value),1)):b("",!0),s("div",z,[y(D,{to:"/",class:"btn"},{default:x(()=>[...e[15]||(e[15]=[C(" Cancel ",-1)])]),_:1}),s("button",{type:"submit",class:"btn btn-primary",disabled:r.value},[r.value?(i(),u("span",W)):b("",!0),e[16]||(e[16]=C(" Create Project ",-1))],8,L)])],32)])}}},ee=k(Y,[["__scopeId","data-v-e2431044"]]);export{ee as default};
1
+ import{_ as k,i as N,a as i,c as u,b as s,j as d,v as m,d as y,e as C,u as I,D as P,k as b,t as j,w as x,h as R,l as t,f as U,g as V}from"./index-DkLkDgig.js";import{u as O}from"./projects-C2Y29PSJ.js";import{P as T}from"./PathChooser-nhat_Pz4.js";import"./ApiClient-Dbs1H78V.js";const F={class:"container"},M={class:"form-group"},H={class:"form-group"},A={class:"advanced-settings"},B={class:"form-group"},h={class:"form-label",for:"systemPrompt"},J={class:"form-group"},$={class:"form-group"},q={key:0,class:"error-message"},z={class:"form-actions"},L=["disabled"],W={key:0,class:"loading-spinner"},Y={__name:"ProjectNewView",setup(G){const g=V(),E=O(),_=N(),p=P,f=t(""),v=t(""),l=t(P),S=t(""),c=t(""),r=t(!1),n=t(null);async function w(){r.value=!0,n.value=null;try{const a=await E.createProject({name:f.value,workingDirectory:v.value,systemPrompt:l.value===p?null:l.value,onSessionCreated:S.value||void 0,onSessionDeleted:c.value||void 0});_.success("Project created successfully"),g.push(`/projects/${a.id}/sessions`)}catch(a){n.value=a.message}finally{r.value=!1}}return(a,e)=>{const D=U("router-link");return i(),u("div",F,[e[17]||(e[17]=s("h1",null,"New Project",-1)),s("form",{class:"form card",onSubmit:R(w,["prevent"])},[s("div",M,[e[6]||(e[6]=s("label",{class:"form-label",for:"name"},"Project Name",-1)),d(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>f.value=o),type:"text",class:"form-input",placeholder:"My Project",required:""},null,512),[[m,f.value]])]),s("div",H,[e[7]||(e[7]=s("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),y(T,{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=o=>v.value=o)},null,8,["modelValue"])]),s("details",A,[e[14]||(e[14]=s("summary",null,"Advanced Settings",-1)),s("div",B,[s("label",h,[e[8]||(e[8]=C(" System Prompt ",-1)),l.value!==I(p)?(i(),u("button",{key:0,type:"button",class:"btn-link",onClick:e[2]||(e[2]=o=>l.value=I(p))}," Reset to Default ")):b("",!0)]),d(s("textarea",{id:"systemPrompt","onUpdate:modelValue":e[3]||(e[3]=o=>l.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[m,l.value]]),e[9]||(e[9]=s("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),s("div",J,[e[10]||(e[10]=s("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),d(s("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[4]||(e[4]=o=>S.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[m,S.value]]),e[11]||(e[11]=s("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),s("div",$,[e[12]||(e[12]=s("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),d(s("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[5]||(e[5]=o=>c.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[m,c.value]]),e[13]||(e[13]=s("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),n.value?(i(),u("div",q,j(n.value),1)):b("",!0),s("div",z,[y(D,{to:"/",class:"btn"},{default:x(()=>[...e[15]||(e[15]=[C(" Cancel ",-1)])]),_:1}),s("button",{type:"submit",class:"btn btn-primary",disabled:r.value},[r.value?(i(),u("span",W)):b("",!0),e[16]||(e[16]=C(" Create Project ",-1))],8,L)])],32)])}}},ee=k(Y,[["__scopeId","data-v-e2431044"]]);export{ee as default};