circuschief 0.5.0 → 0.6.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.
- package/package.json +2 -1
- package/packages/server/src/agents/AgentGateway.js +36 -3
- package/packages/server/src/agents/BaseAgent.js +15 -1
- package/packages/server/src/agents/LoggingAgentWrapper.js +4 -0
- package/packages/server/src/agents/adapters/ClaudeCodeAdapter.js +9 -6
- package/packages/server/src/agents/adapters/CodexAdapter.js +262 -14
- package/packages/server/src/agents/adapters/codexCliRunner.js +185 -0
- package/packages/server/src/agents/adapters/codexEventMapper.js +235 -0
- package/packages/server/src/agents/types.js +1 -0
- package/packages/server/src/agents/vcr/VCRAgentAdapter.js +8 -0
- package/packages/server/src/api/agents.js +27 -0
- package/packages/server/src/api/canvas.js +20 -0
- package/packages/server/src/api/index.js +2 -0
- package/packages/server/src/api/projects.js +7 -0
- package/packages/server/src/api/providers.js +1 -0
- package/packages/server/src/api/sessions-messages.js +6 -0
- package/packages/server/src/db/ProviderRepository.js +62 -6
- package/packages/server/src/db/SessionRepository.js +67 -11
- package/packages/server/src/db/migrations/index.js +2 -0
- package/packages/server/src/db/migrations/miscMigrations.js +53 -3
- package/packages/server/src/db/session-helpers.js +5 -0
- package/packages/server/src/schema.sql +1 -0
- package/packages/server/src/services/codexSpawnHelper.js +37 -0
- package/packages/server/src/services/conversationContext.js +27 -0
- package/packages/server/src/services/draftSessionService.js +13 -2
- package/packages/server/src/services/kanbanTriggers.js +3 -0
- package/packages/server/src/services/providerTestService.js +115 -15
- package/packages/server/src/services/sessionAgentGuard.js +38 -0
- package/packages/server/src/services/sessionExecution.js +124 -32
- package/packages/server/src/services/sessionManager.js +45 -8
- package/packages/server/src/services/sessionPrompts.js +25 -0
- package/packages/server/src/services/sessionProvider.js +162 -41
- package/packages/server/src/services/streamEventHandler.js +3 -0
- package/packages/server/src/services/templateTriggerService.js +2 -0
- package/packages/shared/src/contracts/providers.js +24 -7
- package/packages/shared/src/contracts/sessions.js +1 -1
- package/packages/shared/src/index.js +1 -0
- package/packages/shared/src/types.js +28 -0
- package/packages/web/dist/assets/{ActiveSessionsView-BafIafEu.js → ActiveSessionsView-UCbQrF1b.js} +1 -1
- package/packages/web/dist/assets/{AgentLogsView-DCF2WvP2.js → AgentLogsView-Cdw4nmvd.js} +1 -1
- package/packages/web/dist/assets/ApiClient-CWbXWDUY.js +1 -0
- package/packages/web/dist/assets/{ArchiveConfirmModal-fgoEQhfq.js → ArchiveConfirmModal-J48eh3zw.js} +1 -1
- package/packages/web/dist/assets/{CommandButtonDetailView-DAg07cDQ.js → CommandButtonDetailView-DnFhJY5A.js} +1 -1
- package/packages/web/dist/assets/EffortLevelSelector-bXbPo4Zw.js +1 -0
- package/packages/web/dist/assets/{GeneralSettingsView-Cn9VI2du.js → GeneralSettingsView-CQkmdczf.js} +1 -1
- package/packages/web/dist/assets/{InputWithButton-BvboBGbz.js → InputWithButton-XyM3k6lN.js} +1 -1
- package/packages/web/dist/assets/{InterpolationHelp-0GoSBPgf.js → InterpolationHelp-PfYR3KJo.js} +1 -1
- package/packages/web/dist/assets/MarkdownEditor-P8F5kO-o.js +2 -0
- package/packages/web/dist/assets/{ModelSelector-DPPD-92R.css → ModelSelector-BZOT1Jc6.css} +1 -1
- package/packages/web/dist/assets/ModelSelector-CowKfGMP.js +1 -0
- package/packages/web/dist/assets/{NewSessionView-C77YVqgY.js → NewSessionView-DkjFLvHU.js} +1 -1
- package/packages/web/dist/assets/{ProjectEditView-BBHOsgBV.js → ProjectEditView-embVT7NC.js} +1 -1
- package/packages/web/dist/assets/{ProjectListView-CLwtuJ0J.js → ProjectListView-CuYMmd3O.js} +1 -1
- package/packages/web/dist/assets/{ProjectNewView-CzDtVibO.js → ProjectNewView-CNaA4Maf.js} +1 -1
- package/packages/web/dist/assets/ProvidersView-C7rydtOd.js +1 -0
- package/packages/web/dist/assets/ProvidersView-DE82G_5W.css +1 -0
- package/packages/web/dist/assets/{QuickResponseSettings-BBHMapcA.js → QuickResponseSettings-BTQEKhwJ.js} +1 -1
- package/packages/web/dist/assets/{QuickResponsesPanel-CTXYjMF-.js → QuickResponsesPanel-BqMYSHb0.js} +1 -1
- package/packages/web/dist/assets/ResizableTextarea-DsU3TVwF.css +1 -0
- package/packages/web/dist/assets/{ResizableTextarea-Cw6aL4rp.js → ResizableTextarea-wYF3K2RO.js} +1 -1
- package/packages/web/dist/assets/SessionCard-BMGC2HqI.css +1 -0
- package/packages/web/dist/assets/SessionCard-bLaQEWWX.js +1 -0
- package/packages/web/dist/assets/{SessionDetailView-BL83oPiI.css → SessionDetailView-Cv-xMzXp.css} +1 -1
- package/packages/web/dist/assets/{SessionDetailView-CrZvMb3j.js → SessionDetailView-CvQOUsW2.js} +27 -27
- package/packages/web/dist/assets/SessionFormOptions-3pzbgI2Q.js +1 -0
- package/packages/web/dist/assets/SessionFormOptions-DhhIkjIS.css +1 -0
- package/packages/web/dist/assets/SessionListView-Dranfb72.js +1 -0
- package/packages/web/dist/assets/{SessionListView-DVhoZHN9.css → SessionListView-fHlQyecX.css} +1 -1
- package/packages/web/dist/assets/{SessionLogStream-DIndOyFR.js → SessionLogStream-DTnDAF95.js} +1 -1
- package/packages/web/dist/assets/{SettingsView-CmJ5JPd5.js → SettingsView-DNLUSsHV.js} +1 -1
- package/packages/web/dist/assets/SlashCommandWizard-CRGFaO8t.js +1 -0
- package/packages/web/dist/assets/SlashCommandWizard-Dn7sNaBd.css +1 -0
- package/packages/web/dist/assets/{SummarySettingsView-DQM1n3bc.js → SummarySettingsView-C7G_suHp.js} +1 -1
- package/packages/web/dist/assets/{TemplateDetailView-B8clSBPk.js → TemplateDetailView-B78_DLMR.js} +1 -1
- package/packages/web/dist/assets/{commandButtons-D74TkPNU.js → commandButtons-Bbjf3fCt.js} +1 -1
- package/packages/web/dist/assets/{index-CefzeYRE.js → index--V7c-VZf.js} +1 -1
- package/packages/web/dist/assets/{index-BELtFs3n.js → index-8Q04yd7H.js} +1 -1
- package/packages/web/dist/assets/{index-rjbX81sm.js → index-B47XRBDH.js} +1 -1
- package/packages/web/dist/assets/index-BQL_L4gL.js +82 -0
- package/packages/web/dist/assets/{index-BsDR4w2c.js → index-BXbgZrhS.js} +1 -1
- package/packages/web/dist/assets/{index-DQMHi05L.js → index-Bs7Qf5D6.js} +1 -1
- package/packages/web/dist/assets/{index-Dz7jFUYU.js → index-CGhDVPen.js} +1 -1
- package/packages/web/dist/assets/{index-f315nDFm.js → index-CKcRO1A6.js} +1 -1
- package/packages/web/dist/assets/{index-Gre8tUfC.js → index-CTq-SLIW.js} +1 -1
- package/packages/web/dist/assets/{index-_Lv79l46.js → index-CYyos3iC.js} +1 -1
- package/packages/web/dist/assets/{index-DMZZCi2u.js → index-Cf6vdW-B.js} +3 -3
- package/packages/web/dist/assets/{index-DIvveuSK.js → index-CsCREAxF.js} +1 -1
- package/packages/web/dist/assets/{index-CVozYqQ-.js → index-DJTTk_8T.js} +1 -1
- package/packages/web/dist/assets/{index-DPt6qBRK.js → index-DPqUJ5JK.js} +1 -1
- package/packages/web/dist/assets/{index-B5ocUoPf.js → index-EwAe1dKg.js} +1 -1
- package/packages/web/dist/assets/{index-CrLh8vw5.js → index-JBA8axyA.js} +1 -1
- package/packages/web/dist/assets/{index-DrlwE0Zo.js → index-JkVHFtK5.js} +1 -1
- package/packages/web/dist/assets/{index-DuXChAe-.js → index-gMPUwT55.js} +1 -1
- package/packages/web/dist/assets/{index-DYWZ8lD-.js → index-wadc_0zT.js} +1 -1
- package/packages/web/dist/assets/{projects-D_C9dE9s.js → projects-CPt3AB7U.js} +1 -1
- package/packages/web/dist/assets/providers-ChfeMvUq.js +1 -0
- package/packages/web/dist/assets/sessions-CwPsJOb1.js +1 -0
- package/packages/web/dist/assets/{settings-6Rw9xt-G.js → settings-BOj6wq6t.js} +1 -1
- package/packages/web/dist/index.html +1 -1
- package/packages/web/dist/assets/ApiClient-CcqJ-GAv.js +0 -1
- package/packages/web/dist/assets/EffortLevelSelector-xE3gidpq.js +0 -1
- package/packages/web/dist/assets/MarkdownEditor-HCKnwRye.js +0 -2
- package/packages/web/dist/assets/ModelSelector-B0RdlCHT.js +0 -1
- package/packages/web/dist/assets/ProvidersView-Eg93KbyC.js +0 -1
- package/packages/web/dist/assets/ProvidersView-uD8SKWpA.css +0 -1
- package/packages/web/dist/assets/ResizableTextarea-B5nAA0RV.css +0 -1
- package/packages/web/dist/assets/SessionCard-CCapYVjy.js +0 -1
- package/packages/web/dist/assets/SessionCard-CcqIjL8q.css +0 -1
- package/packages/web/dist/assets/SessionFormOptions-BuLlDF-7.css +0 -1
- package/packages/web/dist/assets/SessionFormOptions-Em7sQCGb.js +0 -1
- package/packages/web/dist/assets/SessionListView-3zdDtqhw.js +0 -1
- package/packages/web/dist/assets/SlashCommandWizard-BB30cSvo.css +0 -1
- package/packages/web/dist/assets/SlashCommandWizard-C_cSgF-P.js +0 -1
- package/packages/web/dist/assets/index-BGAW2Nqa.js +0 -82
- package/packages/web/dist/assets/providers-BdvbPVdE.js +0 -1
- package/packages/web/dist/assets/sessions-Bs5FA6JZ.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as R}from"./EffortLevelSelector-xE3gidpq.js";import{_ as L,k as K,n as j,l as T,a as s,c as o,b as a,F as B,r as V,t as d,x as v,$ as J,L as Q,o as G,I as Y,m as F,v as M,J as W,i as g,f as O,j as A,p as X,G as P,d as Z,w as ee,u as E,T as te,V as se}from"./index-BGAW2Nqa.js";import{a as H}from"./ApiClient-CcqJ-GAv.js";const ne={class:"mode-selector"},ae=["value","disabled"],oe=["value"],le={__name:"ModeSelector",props:{sessionId:{type:String,default:null},modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:n}){const l=e,y=n,r=R(),b=K(),_=j(!1),p=[{value:"plan",label:"Plan",description:"Agent plans before implementing"},{value:"standard",label:"Standard",description:"Balanced approach"},{value:"yolo",label:"YOLO",description:"Auto-approve mode"}],$=v(()=>{var m;return l.sessionId?(m=r.currentSession)==null?void 0:m.mode:l.modelValue}),k=j($.value),u=J(l,"modelValue");T([$,u],([m])=>{k.value=m},{flush:"sync"});async function i(m){if(!_.value&&k.value!==m)if(k.value=m,l.sessionId){_.value=!0;try{await r.updateSessionMode(l.sessionId,m)}catch(C){k.value=$.value,b.error(C.message)}finally{_.value=!1}}else y("update:modelValue",m)}return(m,C)=>(s(),o("div",ne,[a("select",{id:"mode-select",value:k.value,disabled:e.disabled||_.value,class:"mode-select",onChange:C[0]||(C[0]=x=>i(x.target.value))},[(s(),o(B,null,V(p,x=>a("option",{key:x.value,value:x.value},d(x.label),9,oe)),64))],40,ae)]))}},Dt=L(le,[["__scopeId","data-v-224ea1e6"]]),ie={__name:"SlashCommandButton",emits:["open"],setup(e,{emit:n}){const l=n;return(y,r)=>(s(),o("button",{type:"button",class:"slash-command-btn",title:"Slash Commands","data-testid":"slash-command-button",onClick:r[0]||(r[0]=b=>l("open"))},[...r[1]||(r[1]=[a("span",{class:"slash-icon"},"/",-1),a("span",{class:"slash-text"},"Commands",-1)])]))}},qt=L(ie,[["__scopeId","data-v-63f59216"]]),de=Q("slashCommands",{state:()=>({commands:[],loading:!1,error:null,lastFetchedDirectory:null,executing:!1}),getters:{builtinCommands:e=>e.commands.filter(n=>n.source==="builtin"),projectCommands:e=>e.commands.filter(n=>n.source==="project"),userCommands:e=>e.commands.filter(n=>n.source==="user"),pluginCommands:e=>e.commands.filter(n=>n.source==="plugin"),customCommands:e=>e.commands.filter(n=>n.source!=="builtin"),projectSkills:e=>e.commands.filter(n=>n.source==="project-skill"),userSkills:e=>e.commands.filter(n=>n.source==="user-skill"),pluginSkills:e=>e.commands.filter(n=>n.source==="plugin-skill"),allSkills:e=>e.commands.filter(n=>n.isSkill===!0),hasSkills:e=>e.commands.some(n=>n.isSkill===!0),allProjectItems:e=>e.commands.filter(n=>n.source==="project"||n.source==="project-skill"),allUserItems:e=>e.commands.filter(n=>n.source==="user"||n.source==="user-skill"),hasCommands:e=>e.commands.length>0,hasCustomCommands:e=>e.commands.some(n=>n.source==="project"||n.source==="user")},actions:{async fetchCommandsFromSession(e){this.loading=!0,this.error=null;try{const n=await H.getSession(e),l=n.slashCommands?JSON.parse(n.slashCommands):[];return this.commands=l,l}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async fetchCommands(e,n=!1){if(!n&&this.lastFetchedDirectory===e&&this.commands.length>0)return this.commands;this.loading=!0,this.error=null;try{const l=await H.getSlashCommands(e);return this.commands=l,this.lastFetchedDirectory=e,l}catch(l){throw this.error=l.message,l}finally{this.loading=!1}},async executeCommand(e,n,l={}){this.executing=!0,this.error=null;try{return await H.executeSlashCommand(e,n,l)}catch(y){throw this.error=y.message,y}finally{this.executing=!1}},getCommandByName(e){return this.commands.find(n=>n.name===e)||null},searchCommands(e){if(!e||!e.trim())return this.commands;const n=e.toLowerCase();return this.commands.filter(l=>l.name.toLowerCase().includes(n)||l.description&&l.description.toLowerCase().includes(n))},clearCommands(){this.commands=[],this.lastFetchedDirectory=null,this.error=null}}}),re={class:"command-grid"},ce={class:"search-box"},me={key:0,class:"loading-state"},ue={key:1,class:"error-state"},he={key:2,class:"empty-state"},pe={key:0},fe={key:1},ve={key:3,class:"command-sections"},ge={key:0,class:"command-section"},_e={class:"command-cards"},ye=["data-testid","onClick"],ke={class:"command-name"},Ce={class:"command-description"},be={key:1,class:"command-section"},Se={class:"command-cards"},$e=["data-testid","onClick"],xe={class:"command-name"},we={class:"command-description"},Be={key:0,class:"command-args-badge"},Ve={key:2,class:"command-section"},je={class:"command-cards"},Ie=["data-testid","onClick"],Ne={class:"command-name"},ze={class:"command-description"},De={key:0,class:"command-args-badge"},qe={key:3,class:"command-section"},Ue={class:"command-cards"},Fe=["data-testid","onClick"],Le={class:"command-name"},Me={class:"command-description"},Oe={key:0,class:"command-args-badge"},Pe={key:4,class:"command-section"},He={class:"command-cards"},Ae=["data-testid","onClick"],Te={class:"command-name"},We={class:"command-description"},Ee={key:0,class:"command-args-badge"},Ke={key:5,class:"command-section"},Ge={class:"command-cards"},Re=["data-testid","onClick"],Je={class:"command-name"},Qe={class:"command-description"},Ye={key:0,class:"command-args-badge"},Xe={key:6,class:"command-section"},Ze={class:"command-cards"},et=["data-testid","onClick"],tt={class:"command-name"},st={class:"command-description"},nt={key:0,class:"command-args-badge"},at={__name:"CommandGrid",props:{commands:{type:Array,required:!0},loading:{type:Boolean,default:!1},error:{type:String,default:null},hideBuiltin:{type:Boolean,default:!1}},emits:["select","close"],setup(e,{emit:n}){const l=e,y=n,r=j(""),b=j(null),_=v(()=>l.commands.filter(h=>h.source==="builtin")),p=v(()=>l.commands.filter(h=>h.source==="project")),$=v(()=>l.commands.filter(h=>h.source==="user")),k=v(()=>l.commands.filter(h=>h.source==="plugin")),u=v(()=>l.commands.filter(h=>h.source==="project-skill")),i=v(()=>l.commands.filter(h=>h.source==="user-skill")),m=v(()=>l.commands.filter(h=>h.source==="plugin-skill"));function C(h){if(!r.value.trim())return h;const c=r.value.toLowerCase();return h.filter(t=>t.name.toLowerCase().includes(c)||t.description&&t.description.toLowerCase().includes(c))}const x=v(()=>C(_.value)),U=v(()=>C(p.value)),f=v(()=>C($.value)),S=v(()=>C(k.value)),w=v(()=>C(u.value)),I=v(()=>C(i.value)),N=v(()=>C(m.value)),z=v(()=>[...x.value,...U.value,...f.value,...S.value,...w.value,...I.value,...N.value]);function D(h){y("select",h)}return G(()=>{Y(()=>{var h;(h=b.value)==null||h.focus()})}),(h,c)=>(s(),o("div",re,[a("div",ce,[F(a("input",{ref_key:"searchInput",ref:b,"onUpdate:modelValue":c[0]||(c[0]=t=>r.value=t),type:"text",placeholder:"Search commands...",class:"search-input","data-testid":"command-search",onKeydown:c[1]||(c[1]=W(t=>y("close"),["escape"]))},null,544),[[M,r.value]])]),e.loading?(s(),o("div",me,[...c[2]||(c[2]=[a("span",{class:"loading-spinner"},null,-1),a("span",null,"Loading commands...",-1)])])):e.error?(s(),o("div",ue,[c[3]||(c[3]=a("span",{class:"error-icon"},"⚠️",-1)),a("span",null,d(e.error),1)])):z.value.length===0?(s(),o("div",he,[r.value?(s(),o("span",pe,'No commands match "'+d(r.value)+'"',1)):(s(),o("span",fe,"No slash commands available"))])):(s(),o("div",ve,[x.value.length>0&&!e.hideBuiltin?(s(),o("div",ge,[c[4]||(c[4]=a("h3",{class:"section-title"}," Built-in Commands ",-1)),a("div",_e,[(s(!0),o(B,null,V(x.value,t=>(s(),o("button",{key:t.name,type:"button",class:"command-card","data-testid":`command-${t.name}`,onClick:q=>D(t)},[a("span",ke,"/"+d(t.name),1),a("span",Ce,d(t.description||"No description"),1)],8,ye))),128))])])):g("",!0),U.value.length>0?(s(),o("div",be,[c[5]||(c[5]=a("h3",{class:"section-title"}," Project Commands ",-1)),a("div",Se,[(s(!0),o(B,null,V(U.value,t=>(s(),o("button",{key:t.name,type:"button",class:"command-card","data-testid":`command-${t.name}`,onClick:q=>D(t)},[a("span",xe,"/"+d(t.name),1),a("span",we,d(t.description||"No description"),1),t.arguments.length>0?(s(),o("span",Be,d(t.arguments.length)+" arg"+d(t.arguments.length>1?"s":""),1)):g("",!0)],8,$e))),128))])])):g("",!0),f.value.length>0?(s(),o("div",Ve,[c[6]||(c[6]=a("h3",{class:"section-title"}," User Commands ",-1)),a("div",je,[(s(!0),o(B,null,V(f.value,t=>(s(),o("button",{key:t.name,type:"button",class:"command-card","data-testid":`command-${t.name}`,onClick:q=>D(t)},[a("span",Ne,"/"+d(t.name),1),a("span",ze,d(t.description||"No description"),1),t.arguments.length>0?(s(),o("span",De,d(t.arguments.length)+" arg"+d(t.arguments.length>1?"s":""),1)):g("",!0)],8,Ie))),128))])])):g("",!0),S.value.length>0?(s(),o("div",qe,[c[7]||(c[7]=a("h3",{class:"section-title"}," Plugin Commands ",-1)),a("div",Ue,[(s(!0),o(B,null,V(S.value,t=>(s(),o("button",{key:t.name,type:"button",class:"command-card","data-testid":`command-${t.name}`,onClick:q=>D(t)},[a("span",Le,"/"+d(t.name),1),a("span",Me,d(t.description||"No description"),1),t.arguments.length>0?(s(),o("span",Oe,d(t.arguments.length)+" arg"+d(t.arguments.length>1?"s":""),1)):g("",!0)],8,Fe))),128))])])):g("",!0),w.value.length>0?(s(),o("div",Pe,[c[8]||(c[8]=a("h3",{class:"section-title"}," Project Skills ",-1)),a("div",He,[(s(!0),o(B,null,V(w.value,t=>(s(),o("button",{key:t.name,type:"button",class:"command-card","data-testid":`skill-${t.name}`,onClick:q=>D(t)},[a("span",Te,"/"+d(t.name),1),a("span",We,d(t.description||"No description"),1),t.argumentHint?(s(),o("span",Ee,d(t.argumentHint),1)):g("",!0)],8,Ae))),128))])])):g("",!0),I.value.length>0?(s(),o("div",Ke,[c[9]||(c[9]=a("h3",{class:"section-title"}," User Skills ",-1)),a("div",Ge,[(s(!0),o(B,null,V(I.value,t=>(s(),o("button",{key:t.name,type:"button",class:"command-card","data-testid":`skill-${t.name}`,onClick:q=>D(t)},[a("span",Je,"/"+d(t.name),1),a("span",Qe,d(t.description||"No description"),1),t.argumentHint?(s(),o("span",Ye,d(t.argumentHint),1)):g("",!0)],8,Re))),128))])])):g("",!0),N.value.length>0?(s(),o("div",Xe,[c[10]||(c[10]=a("h3",{class:"section-title"}," Plugin Skills ",-1)),a("div",Ze,[(s(!0),o(B,null,V(N.value,t=>(s(),o("button",{key:t.name,type:"button",class:"command-card","data-testid":`skill-${t.name}`,onClick:q=>D(t)},[a("span",tt,"/"+d(t.name),1),a("span",st,d(t.description||"No description"),1),t.argumentHint?(s(),o("span",nt,d(t.argumentHint),1)):g("",!0)],8,et))),128))])])):g("",!0)]))]))}},ot=L(at,[["__scopeId","data-v-5da1571d"]]),lt={class:"arguments-form"},it={class:"form-header"},dt={class:"command-title"},rt={key:0,class:"command-description"},ct={key:0,class:"form-field"},mt={for:"skill-args",class:"field-label"},ut={key:0,class:"hint"},ht=["placeholder","onKeydown"],pt=["for"],ft={key:0,class:"required-indicator"},vt=["id","onUpdate:modelValue","required","data-testid"],gt=["value"],_t=["id","onUpdate:modelValue","required","placeholder","data-testid"],yt=["id","onUpdate:modelValue","required","placeholder","data-testid"],kt={class:"form-actions"},Ct=["disabled"],bt={key:0,class:"loading-spinner"},St={__name:"ArgumentsForm",props:{command:{type:Object,required:!0},executing:{type:Boolean,default:!1},executeLabel:{type:String,default:"Execute Command"}},emits:["back","submit"],setup(e,{emit:n}){const l=e,y=n,r=j({}),b=j("");function _(){const k={};for(const u of l.command.arguments||[])k[u.name]=u.default!==void 0?u.default:"";r.value=k}G(()=>{_()}),T(()=>l.command,()=>{_()});const p=v(()=>{if(l.command.isSkill)return!0;for(const k of l.command.arguments||[])if(k.required){const u=r.value[k.name];if(u==null||u==="")return!1}return!0});function $(){if(!(!p.value||l.executing)){if(l.command.isSkill){y("submit",{_raw:b.value});return}y("submit",r.value)}}return(k,u)=>(s(),o("div",lt,[a("div",it,[a("h3",dt," /"+d(e.command.name),1),e.command.description?(s(),o("p",rt,d(e.command.description),1)):g("",!0)]),a("form",{class:"form-fields",onSubmit:A($,["prevent"])},[e.command.isSkill?(s(),o("div",ct,[a("label",mt,[u[2]||(u[2]=O(" Arguments ",-1)),e.command.argumentHint?(s(),o("span",ut,d(e.command.argumentHint),1)):g("",!0)]),F(a("input",{id:"skill-args","onUpdate:modelValue":u[0]||(u[0]=i=>b.value=i),type:"text",placeholder:e.command.argumentHint||"Enter arguments...",class:"field-input","data-testid":"skill-args-input",onKeydown:W(A($,["prevent"]),["enter"])},null,40,ht),[[M,b.value]])])):(s(!0),o(B,{key:1},V(e.command.arguments,i=>(s(),o("div",{key:i.name,class:"form-field"},[a("label",{for:`arg-${i.name}`,class:"field-label"},[O(d(i.label)+" ",1),i.required?(s(),o("span",ft,"*")):g("",!0)],8,pt),i.type==="select"?F((s(),o("select",{key:0,id:`arg-${i.name}`,"onUpdate:modelValue":m=>r.value[i.name]=m,required:i.required,class:"field-select","data-testid":`arg-${i.name}`},[u[3]||(u[3]=a("option",{value:"",disabled:""}," Select an option... ",-1)),(s(!0),o(B,null,V(i.options||[],m=>(s(),o("option",{key:m.value,value:m.value},d(m.label),9,gt))),128))],8,vt)),[[X,r.value[i.name]]]):i.type==="multiline"?F((s(),o("textarea",{key:1,id:`arg-${i.name}`,"onUpdate:modelValue":m=>r.value[i.name]=m,required:i.required,placeholder:i.placeholder||"",class:"field-textarea",rows:"4","data-testid":`arg-${i.name}`},null,8,_t)),[[M,r.value[i.name]]]):F((s(),o("input",{key:2,id:`arg-${i.name}`,"onUpdate:modelValue":m=>r.value[i.name]=m,type:"text",required:i.required,placeholder:i.placeholder||"",class:"field-input","data-testid":`arg-${i.name}`},null,8,yt)),[[M,r.value[i.name]]])]))),128)),a("div",kt,[a("button",{type:"button",class:"btn btn-secondary",onClick:u[1]||(u[1]=i=>y("back"))}," Back "),a("button",{type:"submit",class:"btn btn-primary",disabled:!p.value||e.executing,"data-testid":"execute-command-btn"},[e.executing?(s(),o("span",bt)):g("",!0),O(" "+d(e.executeLabel),1)],8,Ct)])],32)]))}},$t=L(St,[["__scopeId","data-v-e56eba15"]]),xt={class:"wizard-modal",role:"dialog","aria-labelledby":"wizard-title"},wt={class:"wizard-header"},Bt={id:"wizard-title",class:"wizard-title"},Vt={class:"wizard-content"},jt={__name:"SlashCommandWizard",props:{isOpen:{type:Boolean,required:!0},sessionId:{type:String,default:null},workingDirectory:{type:String,default:null},hideBuiltin:{type:Boolean,default:!1},mode:{type:String,default:"execute",validator:e=>["execute","insert"].includes(e)}},emits:["update:isOpen","executed","insert"],setup(e,{emit:n}){const l=e,y=n,r=de(),b=K(),_=j(1),p=j(null),$=j(!1),k=v(()=>l.hideBuiltin?r.customCommands:r.commands),u=v(()=>l.mode==="insert"?"Insert Command":"Execute Command");T(()=>l.isOpen,async f=>{if(f){_.value=1,p.value=null,console.log("[SlashCommandWizard] Opening wizard, workingDirectory:",l.workingDirectory);try{l.workingDirectory?(await r.fetchCommands(l.workingDirectory),console.log("[SlashCommandWizard] Fetched commands:",r.commands.length,"commands")):console.warn("[SlashCommandWizard] No workingDirectory provided, skipping command fetch")}catch(S){console.error("[SlashCommandWizard] Failed to fetch commands:",S)}}});function i(){y("update:isOpen",!1),_.value=1,p.value=null}function m(f){if(p.value=f,f.isSkill){_.value=2;return}!f.arguments||f.arguments.length===0?x({}):_.value=2}function C(){_.value=1,p.value=null}async function x(f){if(p.value){if(l.mode==="insert"){const S=U(p.value,f);y("insert",{command:p.value,args:f,text:S}),i();return}if(!l.sessionId){b.error("No session available to execute command");return}$.value=!0;try{await r.executeCommand(l.sessionId,p.value.name,f),y("executed",{command:p.value,args:f}),b.success(`Command /${p.value.name} executed`),i()}catch(S){b.error(`Failed to execute command: ${S.message}`)}finally{$.value=!1}}}function U(f,S){let w=`/${f.name}`;if(f.isSkill){const N=S._raw||"";return N&&(w+=` ${N}`),w}const I=[];for(const N of f.arguments||[]){const z=S[N.name];z!==void 0&&z!==""&&(typeof z=="string"&&z.includes(" ")?I.push(`"${z}"`):I.push(String(z)))}return I.length>0&&(w+=` ${I.join(" ")}`),w}return(f,S)=>(s(),P(se,{to:"body"},[Z(te,{name:"modal"},{default:ee(()=>{var w;return[e.isOpen?(s(),o("div",{key:0,class:"wizard-overlay","data-testid":"slash-command-wizard",onClick:A(i,["self"]),onKeydown:W(i,["escape"])},[a("div",xt,[a("header",wt,[a("h2",Bt,d(_.value===1?"Slash Commands":`Configure /${(w=p.value)==null?void 0:w.name}`),1),a("button",{type:"button",class:"close-btn","aria-label":"Close wizard",onClick:i}," × ")]),a("div",Vt,[_.value===1?(s(),P(ot,{key:0,commands:k.value,loading:E(r).loading,error:E(r).error,"hide-builtin":e.hideBuiltin,onSelect:m,onClose:i},null,8,["commands","loading","error","hide-builtin"])):_.value===2&&p.value?(s(),P($t,{key:1,command:p.value,executing:$.value,"execute-label":u.value,onBack:C,onSubmit:x},null,8,["command","executing","execute-label"])):g("",!0)])])],32)):g("",!0)]}),_:1})]))}},Ut=L(jt,[["__scopeId","data-v-138fa079"]]);export{Dt as M,qt as S,Ut as a};
|