circuschief 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/package.json +1 -1
  2. package/packages/server/src/api/git.js +15 -0
  3. package/packages/server/src/api/projects-commandButtons.js +96 -0
  4. package/packages/server/src/api/projects-session-helpers.js +51 -33
  5. package/packages/server/src/api/projects.js +102 -111
  6. package/packages/server/src/api/sessions-archive.js +2 -1
  7. package/packages/server/src/api/sessions-lifecycle.js +2 -1
  8. package/packages/server/src/api/sessions-patch.js +2 -0
  9. package/packages/server/src/config.js +6 -0
  10. package/packages/server/src/db/DatabaseManager.js +1 -1
  11. package/packages/server/src/db/ProjectRepository.js +17 -3
  12. package/packages/server/src/db/migrations/index.js +7 -0
  13. package/packages/server/src/db/migrations/miscMigrations.js +78 -1
  14. package/packages/server/src/db/migrations/projectsMigrations.js +4 -0
  15. package/packages/server/src/index.js +7 -1
  16. package/packages/server/src/services/gitService.js +42 -6
  17. package/packages/server/src/services/gitSessionSetup.js +4 -3
  18. package/packages/server/src/services/kanbanTriggers.js +1 -0
  19. package/packages/server/src/services/sessionExecution.js +2 -2
  20. package/packages/server/src/services/templateTriggerService.js +1 -0
  21. package/packages/shared/src/contracts/projects.js +3 -0
  22. package/packages/shared/src/types.js +4 -3
  23. package/packages/web/dist/assets/ActiveSessionsView-BVco8bPU.css +1 -0
  24. package/packages/web/dist/assets/ActiveSessionsView-HgcjR-fv.js +1 -0
  25. package/packages/web/dist/assets/{AgentLogsView-D4l0N9ZA.js → AgentLogsView-gnpmy7Ck.js} +1 -1
  26. package/packages/web/dist/assets/{ApiClient-Dbs1H78V.js → ApiClient-CcqJ-GAv.js} +1 -1
  27. package/packages/web/dist/assets/{ArchiveConfirmModal-CQZeuYBz.css → ArchiveConfirmModal-BQ-4gI0R.css} +1 -1
  28. package/packages/web/dist/assets/ArchiveConfirmModal-NDLcfHE9.js +1 -0
  29. package/packages/web/dist/assets/CommandButtonDetailView-UGoO1Rhg.js +1 -0
  30. package/packages/web/dist/assets/EffortLevelSelector-B9STpy07.js +1 -0
  31. package/packages/web/dist/assets/{GeneralSettingsView-BqCzCX-z.js → GeneralSettingsView-Bvp1zmeb.js} +1 -1
  32. package/packages/web/dist/assets/InputWithButton-cYdrEmTs.css +1 -0
  33. package/packages/web/dist/assets/{PathChooser-CXFxb8Oj.js → InputWithButton-kjjnlpHt.js} +1 -1
  34. package/packages/web/dist/assets/InterpolationHelp-Cwyt_Kff.js +1 -0
  35. package/packages/web/dist/assets/MarkdownEditor-CfuhardG.js +2 -0
  36. package/packages/web/dist/assets/{ModelSelector-DSxaZWBL.js → ModelSelector-vRSpXjhL.js} +1 -1
  37. package/packages/web/dist/assets/{NewSessionView-BsI7JtO9.js → NewSessionView-CJqnlwjP.js} +2 -2
  38. package/packages/web/dist/assets/{NewSessionView-Byoi1XdQ.css → NewSessionView-D_Hi7M9g.css} +1 -1
  39. package/packages/web/dist/assets/ProjectEditView-I36pvIJH.css +1 -0
  40. package/packages/web/dist/assets/ProjectEditView-LZhWNyZD.js +1 -0
  41. package/packages/web/dist/assets/ProjectListView-CumumZN-.css +1 -0
  42. package/packages/web/dist/assets/ProjectListView-DxpzlBb6.js +1 -0
  43. package/packages/web/dist/assets/ProjectNewView-CaLXfFzd.css +1 -0
  44. package/packages/web/dist/assets/ProjectNewView-X1y2iuaX.js +1 -0
  45. package/packages/web/dist/assets/{ProvidersView-CgAr0qms.js → ProvidersView-DC-v48Oj.js} +1 -1
  46. package/packages/web/dist/assets/{ProvidersView-B_QQF3RM.css → ProvidersView-uD8SKWpA.css} +1 -1
  47. package/packages/web/dist/assets/{QuickResponseSettings-uDDpwaza.js → QuickResponseSettings-DOZUtaRb.js} +1 -1
  48. package/packages/web/dist/assets/{QuickResponsesPanel-D0qs0Fm_.js → QuickResponsesPanel-BboDyvfE.js} +1 -1
  49. package/packages/web/dist/assets/{ResizableTextarea-_kHi1Mg3.js → ResizableTextarea-BIUrLAki.js} +1 -1
  50. package/packages/web/dist/assets/{SessionCard-Be1-bK0C.js → SessionCard-D9a5ABHO.js} +1 -1
  51. package/packages/web/dist/assets/{SessionDetailView-mnGRMaLY.css → SessionDetailView-D_p4QqDv.css} +1 -1
  52. package/packages/web/dist/assets/SessionDetailView-DpnAZfLe.js +36 -0
  53. package/packages/web/dist/assets/{SessionFormOptions-DvhOyP6z.js → SessionFormOptions-16tOEDkt.js} +1 -1
  54. package/packages/web/dist/assets/{SessionListView-CuHsWj85.js → SessionListView-BxayFy5a.js} +1 -1
  55. package/packages/web/dist/assets/{SessionLogStream-Da_GniUZ.js → SessionLogStream-DMUzZOml.js} +6 -6
  56. package/packages/web/dist/assets/SettingsView-IKYDEAFw.js +1 -0
  57. package/packages/web/dist/assets/{SlashCommandWizard-B_8ifpxN.js → SlashCommandWizard-CCEtEF98.js} +1 -1
  58. package/packages/web/dist/assets/{SummarySettingsView-KvgSGHdd.js → SummarySettingsView-Cq_0Bsk4.js} +1 -1
  59. package/packages/web/dist/assets/{TemplateDetailView-BhOjYIvS.js → TemplateDetailView-Vj413FOj.js} +1 -1
  60. package/packages/web/dist/assets/{commandButtons-B4OYZP0J.js → commandButtons-BqI7V84_.js} +1 -1
  61. package/packages/web/dist/assets/index-B0PaFn8J.js +1 -0
  62. package/packages/web/dist/assets/index-B0uKzlP3.js +1 -0
  63. package/packages/web/dist/assets/index-BOj2hM4W.js +1 -0
  64. package/packages/web/dist/assets/index-BVH1Fur5.js +1 -0
  65. package/packages/web/dist/assets/index-Bm4uwnFi.js +1 -0
  66. package/packages/web/dist/assets/index-C82-hypB.js +7 -0
  67. package/packages/web/dist/assets/index-C98wGWOV.js +1 -0
  68. package/packages/web/dist/assets/index-CQt0yAHQ.js +1 -0
  69. package/packages/web/dist/assets/index-CTe3Gmxt.js +1 -0
  70. package/packages/web/dist/assets/{index-BqVgX_Jy.js → index-Crwsqc5t.js} +3 -3
  71. package/packages/web/dist/assets/{index-BHVnr8MO.js → index-CzgbuOA8.js} +2 -2
  72. package/packages/web/dist/assets/index-D8oIVxkt.js +1 -0
  73. package/packages/web/dist/assets/index-DIrFNnos.js +1 -0
  74. package/packages/web/dist/assets/index-DVkCrevC.js +3 -0
  75. package/packages/web/dist/assets/index-DXvlnigm.js +1 -0
  76. package/packages/web/dist/assets/{index-CSOPrlmq.js → index-MnvuyUxj.js} +3 -3
  77. package/packages/web/dist/assets/index-mMvVdgsE.js +1 -0
  78. package/packages/web/dist/assets/index-okhXrCbj.js +1 -0
  79. package/packages/web/dist/assets/index-yghSjW4j.js +1 -0
  80. package/packages/web/dist/assets/{projects-B2du-GX8.js → projects-BpAyb9ba.js} +1 -1
  81. package/packages/web/dist/assets/{providers-B__J6FX0.js → providers-Di1AKmPp.js} +1 -1
  82. package/packages/web/dist/assets/{sessions-VDrd87yA.js → sessions-GqIMf9RF.js} +1 -1
  83. package/packages/web/dist/assets/{settings-CZ7Pc-Pt.js → settings-j6pMR_H2.js} +1 -1
  84. package/packages/web/dist/assets/useSummaryHelpers-GVg7sMWF.js +1 -0
  85. package/packages/web/dist/index.html +1 -1
  86. package/packages/web/dist/assets/ActiveSessionsView-3697sD8N.js +0 -1
  87. package/packages/web/dist/assets/ActiveSessionsView-DfYXc6dz.css +0 -1
  88. package/packages/web/dist/assets/ArchiveConfirmModal-Bv3vGOMM.js +0 -1
  89. package/packages/web/dist/assets/CommandButtonDetailView-Bk_SHxpu.js +0 -1
  90. package/packages/web/dist/assets/EffortLevelSelector-VfBEelvO.js +0 -1
  91. package/packages/web/dist/assets/InterpolationHelp-Dc1Y0T6v.js +0 -1
  92. package/packages/web/dist/assets/MarkdownEditor-DwBQkZbs.js +0 -2
  93. package/packages/web/dist/assets/PathChooser-BoMGzeg2.css +0 -1
  94. package/packages/web/dist/assets/ProjectEditView-Bes4Mib4.js +0 -1
  95. package/packages/web/dist/assets/ProjectEditView-DNwBUNRk.css +0 -1
  96. package/packages/web/dist/assets/ProjectListView-C55H1JHQ.css +0 -1
  97. package/packages/web/dist/assets/ProjectListView-DzEu-C36.js +0 -1
  98. package/packages/web/dist/assets/ProjectNewView-CpgE4R-l.css +0 -1
  99. package/packages/web/dist/assets/ProjectNewView-Cv-iEAgl.js +0 -1
  100. package/packages/web/dist/assets/SessionDetailView-DUYb7qTA.js +0 -36
  101. package/packages/web/dist/assets/SettingsView-5RDCXNUa.js +0 -1
  102. package/packages/web/dist/assets/index-80Qu7W6P.js +0 -1
  103. package/packages/web/dist/assets/index-B8_Iqwcq.js +0 -1
  104. package/packages/web/dist/assets/index-B9JErft2.js +0 -1
  105. package/packages/web/dist/assets/index-BarVnQIj.js +0 -3
  106. package/packages/web/dist/assets/index-BsvRdU0B.js +0 -1
  107. package/packages/web/dist/assets/index-Bugg2M-E.js +0 -1
  108. package/packages/web/dist/assets/index-C2Pjy-M8.js +0 -1
  109. package/packages/web/dist/assets/index-CS_wb_Vj.js +0 -1
  110. package/packages/web/dist/assets/index-ClzNIdCp.js +0 -1
  111. package/packages/web/dist/assets/index-Cn9Ajkye.js +0 -1
  112. package/packages/web/dist/assets/index-CucpVX4L.js +0 -1
  113. package/packages/web/dist/assets/index-D9hZYvW3.js +0 -1
  114. package/packages/web/dist/assets/index-DA0dK_PG.js +0 -7
  115. package/packages/web/dist/assets/index-DgpSn-jR.js +0 -1
  116. package/packages/web/dist/assets/index-HZwIyC9t.js +0 -1
  117. package/packages/web/dist/assets/index-SS3wA2sI.js +0 -1
@@ -1 +0,0 @@
1
- import{_ as L,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 A,h as F,V as G,y as W,A as H,E as Y,H as J}from"./index-CSOPrlmq.js";import{u as Q,b as X}from"./EffortLevelSelector-VfBEelvO.js";import{M as Z}from"./ModelSelector-DSxaZWBL.js";import{M as ee}from"./SlashCommandWizard-B_8ifpxN.js";import{u as te}from"./SessionLogStream-Da_GniUZ.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=L(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"},Ae={class:"form-group"},Le={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),[[A,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",Ae,[e[23]||(e[23]=t("p",{class:"settings-label"}," Reschedule Triggers ",-1)),t("label",Le,[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),[[A,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),[[A,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),[[A,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=L(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=L(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=L(Tt,[["__scopeId","data-v-58eef4e8"]]);export{Rt as A,Et as M,Mt as S,he as T};
@@ -1 +0,0 @@
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-CSOPrlmq.js";import{u as F}from"./commandButtons-B4OYZP0J.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 +0,0 @@
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-CSOPrlmq.js";import{a as r}from"./ApiClient-Dbs1H78V.js";import{u as V}from"./sessions-VDrd87yA.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 +0,0 @@
1
- import{_ as t,a,c as n,e,b as o}from"./index-CSOPrlmq.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,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BqVgX_Jy.js","assets/index-CSOPrlmq.js","assets/index-gmCCsCQ1.css","assets/SessionDetailView-DUYb7qTA.js","assets/sessions-VDrd87yA.js","assets/ApiClient-Dbs1H78V.js","assets/settings-CZ7Pc-Pt.js","assets/projects-B2du-GX8.js","assets/EffortLevelSelector-VfBEelvO.js","assets/EffortLevelSelector-BQaQmU2d.css","assets/SessionLogStream-Da_GniUZ.js","assets/commandButtons-B4OYZP0J.js","assets/SessionLogStream-zPUTiGbe.css","assets/ArchiveConfirmModal-Bv3vGOMM.js","assets/ModelSelector-DSxaZWBL.js","assets/providers-B__J6FX0.js","assets/ModelSelector-DPPD-92R.css","assets/SlashCommandWizard-B_8ifpxN.js","assets/SlashCommandWizard-BB30cSvo.css","assets/ArchiveConfirmModal-CQZeuYBz.css","assets/QuickResponseSettings-uDDpwaza.js","assets/QuickResponseSettings-B8188A1D.css","assets/QuickResponsesPanel-D0qs0Fm_.js","assets/QuickResponsesPanel-DIBQFj0W.css","assets/ResizableTextarea-_kHi1Mg3.js","assets/ResizableTextarea-B5nAA0RV.css","assets/SessionDetailView-mnGRMaLY.css","assets/style-BTin-zR_.css"])))=>i.map(i=>d[i]);
2
- import{l as E,m as d,A as w,a as l,c as y,G as T,w as u,b as m,e as V,d as k,u as h,a3 as x,O as A,P as p}from"./index-CSOPrlmq.js";import{u as P}from"./SessionDetailView-DUYb7qTA.js";import"./sessions-VDrd87yA.js";import"./ApiClient-Dbs1H78V.js";import"./settings-CZ7Pc-Pt.js";import"./projects-B2du-GX8.js";import"./EffortLevelSelector-VfBEelvO.js";import"./SessionLogStream-Da_GniUZ.js";import"./commandButtons-B4OYZP0J.js";import"./ArchiveConfirmModal-Bv3vGOMM.js";import"./ModelSelector-DSxaZWBL.js";import"./providers-B__J6FX0.js";import"./SlashCommandWizard-B_8ifpxN.js";import"./QuickResponseSettings-uDDpwaza.js";import"./QuickResponsesPanel-D0qs0Fm_.js";import"./ResizableTextarea-_kHi1Mg3.js";const b={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 _=A(()=>p(()=>import("./index-BqVgX_Jy.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(async e=>(await p(()=>Promise.resolve({}),__vite__mapDeps([27])),e.MdEditor))),r=c,n=f,g=P(),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||"")}),w(()=>{s(),g.endEditing(r.filename)}),(e,a)=>(l(),y("div",b,[(l(),T(x,null,{default:u(()=>[k(h(_),{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"}),V(" Loading editor... ")],-1)])]),_:1}))]))}};export{J as default};
@@ -1 +0,0 @@
1
- .path-chooser[data-v-26aaee7f]{width:100%}.path-input-group[data-v-26aaee7f]{display:flex;gap:.5rem}.path-input-group .form-input[data-v-26aaee7f]{flex:1}.path-browser-overlay[data-v-26aaee7f]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.path-browser[data-v-26aaee7f]{background-color:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column}.browser-header[data-v-26aaee7f]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--color-border);background-color:var(--color-background-mute);border-radius:var(--border-radius) var(--border-radius) 0 0}.browser-path[data-v-26aaee7f]{font-family:var(--font-mono);font-size:.875rem;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;margin-right:1rem}.browser-close[data-v-26aaee7f]{background:none;border:none;color:var(--color-text-soft);font-size:1.5rem;line-height:1;padding:0;cursor:pointer;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius)}.browser-close[data-v-26aaee7f]:hover{background-color:var(--color-background);color:var(--color-text)}.browser-content[data-v-26aaee7f]{flex:1;overflow-y:auto;padding:.5rem;min-height:200px;max-height:400px}.browser-item[data-v-26aaee7f]{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;cursor:pointer;border-radius:var(--border-radius);color:var(--color-text);font-size:.875rem}.browser-item[data-v-26aaee7f]:hover{background-color:var(--color-background-mute)}.browser-item.parent[data-v-26aaee7f]{color:var(--color-primary);border-bottom:1px solid var(--color-border);margin-bottom:.5rem;border-radius:0}.browser-item.parent[data-v-26aaee7f]:hover{background-color:var(--color-background)}.browser-item-icon[data-v-26aaee7f]{flex-shrink:0}.browser-loading[data-v-26aaee7f]{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--color-text-soft)}.browser-error[data-v-26aaee7f]{padding:1rem;color:var(--color-error);text-align:center}.browser-empty[data-v-26aaee7f]{padding:2rem;color:var(--color-text-soft);text-align:center}.browser-footer[data-v-26aaee7f]{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid var(--color-border);background-color:var(--color-background-mute);border-radius:0 0 var(--border-radius) var(--border-radius)}
@@ -1 +0,0 @@
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-CSOPrlmq.js";import{u as oe}from"./projects-B2du-GX8.js";import{u as le,a as ae,Q as ne}from"./QuickResponseSettings-uDDpwaza.js";import{P as re}from"./PathChooser-CXFxb8Oj.js";import{M as ie}from"./ModelSelector-DSxaZWBL.js";import"./ApiClient-Dbs1H78V.js";import"./providers-B__J6FX0.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 +0,0 @@
1
- h1[data-v-315cba61]{margin-bottom:2rem}.loading-state[data-v-315cba61]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:3rem}.form[data-v-315cba61]{max-width:500px}.form-actions[data-v-315cba61]{display:flex;justify-content:space-between;align-items:center}.form-actions-right[data-v-315cba61]{display:flex;gap:.5rem}.error-message[data-v-315cba61]{color:var(--color-error);margin-bottom:1rem}.form-textarea[data-v-315cba61]{resize:vertical;min-height:120px;font-family:monospace;font-size:.875rem;line-height:1.5}.form-help[data-v-315cba61]{margin-top:.5rem;font-size:.875rem;color:var(--color-text-muted)}.advanced-settings[data-v-315cba61]{margin-bottom:1rem}.advanced-settings summary[data-v-315cba61]{cursor:pointer;color:var(--color-primary);font-weight:500;margin-bottom:1rem}.advanced-settings[open] summary[data-v-315cba61]{margin-bottom:1rem}.form-textarea-small[data-v-315cba61]{resize:vertical;min-height:60px;font-family:monospace;font-size:.875rem;line-height:1.5}.checkbox-label[data-v-315cba61]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:500}.checkbox-label input[type=checkbox][data-v-315cba61]{width:1rem;height:1rem;cursor:pointer}.form-input[type=select][data-v-315cba61],select.form-input[data-v-315cba61]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.5rem}.btn-link[data-v-315cba61]{background:none;border:none;color:var(--color-primary);font-size:.75rem;padding:0;margin-left:.5rem;cursor:pointer;text-decoration:underline}.btn-link[data-v-315cba61]:hover{color:var(--color-primary-hover)}
@@ -1 +0,0 @@
1
- .page-header[data-v-6a29d6f6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.page-header h1[data-v-6a29d6f6]{margin:0}.skeleton-list[data-v-6a29d6f6]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-6a29d6f6]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-6a29d6f6]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-6a29d6f6]{margin-bottom:1rem}.project-list[data-v-6a29d6f6]{display:flex;flex-direction:column;gap:1rem}.project-card[data-v-6a29d6f6]{display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:background-color .15s ease}.project-card[data-v-6a29d6f6]:hover{background-color:var(--color-background-soft)}.project-name[data-v-6a29d6f6]{margin:0 0 .25rem;font-size:1rem}.project-path[data-v-6a29d6f6]{margin:0;font-size:.875rem;color:var(--color-text-soft);font-family:var(--font-mono)}.project-actions[data-v-6a29d6f6]{display:flex;gap:.5rem}
@@ -1 +0,0 @@
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-CSOPrlmq.js";import{u as w}from"./projects-B2du-GX8.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 +0,0 @@
1
- h1[data-v-e2431044]{margin-bottom:2rem}.form[data-v-e2431044]{max-width:500px}.form-actions[data-v-e2431044]{display:flex;gap:.5rem;justify-content:flex-end}.error-message[data-v-e2431044]{color:var(--color-error);margin-bottom:1rem}.advanced-settings[data-v-e2431044]{margin-bottom:1rem}.advanced-settings summary[data-v-e2431044]{cursor:pointer;color:var(--color-primary);font-weight:500;margin-bottom:1rem}.advanced-settings[open] summary[data-v-e2431044]{margin-bottom:1rem}.form-textarea[data-v-e2431044]{resize:vertical;min-height:120px;font-family:monospace;font-size:.875rem;line-height:1.5}.form-help[data-v-e2431044]{margin-top:.5rem;font-size:.875rem;color:var(--color-text-muted)}.form-textarea-small[data-v-e2431044]{resize:vertical;min-height:60px;font-family:monospace;font-size:.875rem;line-height:1.5}.btn-link[data-v-e2431044]{background:none;border:none;color:var(--color-primary);font-size:.75rem;padding:0;margin-left:.5rem;cursor:pointer;text-decoration:underline}.btn-link[data-v-e2431044]:hover{color:var(--color-primary-hover)}
@@ -1 +0,0 @@
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-CSOPrlmq.js";import{u as O}from"./projects-B2du-GX8.js";import{P as T}from"./PathChooser-CXFxb8Oj.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};