@ai-accounts/vue-styled 0.4.3 → 0.4.5
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.
|
@@ -76,4 +76,4 @@ ${u.content}`).join(`
|
|
|
76
76
|
|
|
77
77
|
---
|
|
78
78
|
|
|
79
|
-
`)}function d(){!e.allMessages||e.allMessages.length===0||i(l(e.allMessages))}function _(){if(!e.allMessages||e.allMessages.length===0)return;const c=l(e.allMessages),u=new Blob([c],{type:"text/plain;charset=utf-8"}),m=URL.createObjectURL(u),p=document.createElement("a");p.href=m,p.download=`conversation-${new Date().toISOString().slice(0,19).replace(/:/g,"-")}.txt`,document.body.appendChild(p),p.click(),document.body.removeChild(p),URL.revokeObjectURL(m)}return(c,u)=>(t.openBlock(),t.createElementBlock("div",lR,[t.createElementVNode("button",{class:"action-btn action-copy",title:a.value==="success"?"Copied!":a.value==="error"?"Copy failed":"Copy message",onClick:t.withModifiers(s,["stop"])},[n.iconButtons?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[a.value==="success"?(t.openBlock(),t.createElementBlock("svg",_R,[...u[0]||(u[0]=[t.createElementVNode("path",{d:"M20 6L9 17l-5-5"},null,-1)])])):a.value==="error"?(t.openBlock(),t.createElementBlock("svg",dR,[...u[1]||(u[1]=[t.createElementVNode("path",{d:"M18 6L6 18M6 6l12 12"},null,-1)])])):(t.openBlock(),t.createElementBlock("svg",uR,[...u[2]||(u[2]=[t.createElementVNode("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),t.createElementVNode("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"},null,-1)])]))],64)):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[a.value==="idle"?(t.openBlock(),t.createElementBlock("span",pR,"Copy")):a.value==="success"?(t.openBlock(),t.createElementBlock("span",mR,"Copied")):(t.openBlock(),t.createElementBlock("span",ER,"Failed"))],64))],8,cR),n.allMessages?(t.openBlock(),t.createElementBlock("button",{key:0,class:"action-btn action-copy-all",title:"Copy conversation",onClick:t.withModifiers(d,["stop"])},[n.iconButtons?(t.openBlock(),t.createElementBlock("svg",gR,[...u[3]||(u[3]=[t.createElementVNode("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),t.createElementVNode("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"},null,-1),t.createElementVNode("line",{x1:"14",y1:"14",x2:"18",y2:"14"},null,-1),t.createElementVNode("line",{x1:"14",y1:"17",x2:"18",y2:"17"},null,-1)])])):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode("Copy All")],64))])):t.createCommentVNode("",!0),n.allMessages?(t.openBlock(),t.createElementBlock("button",{key:1,class:"action-btn action-export",title:"Export conversation",onClick:t.withModifiers(_,["stop"])},[n.iconButtons?(t.openBlock(),t.createElementBlock("svg",SR,[...u[4]||(u[4]=[t.createElementVNode("path",{d:"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4"},null,-1),t.createElementVNode("polyline",{points:"7 10 12 15 17 10"},null,-1),t.createElementVNode("line",{x1:"12",y1:"15",x2:"12",y2:"3"},null,-1)])])):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode("Export")],64))])):t.createCommentVNode("",!0)]))}}),So=he(TR,[["__scopeId","data-v-519341e8"]]),bR={claude:"Claude",claude_custom:"Claude (self-hosted)",codex:"Codex",antigravity:"Antigravity",opencode:"OpenCode",deepseek:"DeepSeek",goose:"Goose",aider:"Aider",crush:"Crush",openai_compat:"OpenAI-compatible",openrouter:"OpenRouter",kimi:"Kimi"};function To(n){return!n||n==="auto"?"":bR[n]??n.charAt(0).toUpperCase()+n.slice(1)}const fR={opus:"Opus",sonnet:"Sonnet",haiku:"Haiku",codex:"Codex",zen:"Zen"};function RR(n){return n?fR[n]??n:""}const CR={class:"aia-bubble__avatar"},NR={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},hR=["d"],vR={class:"aia-bubble__body"},OR={class:"aia-bubble__header"},yR={class:"aia-bubble__role"},AR={key:0,class:"aia-bubble__model"},IR={key:1,class:"aia-bubble__time"},DR=["innerHTML"],MR=t.defineComponent({__name:"ChatBubble",props:{role:{},content:{},backend:{},model:{},timestamp:{},streaming:{type:Boolean,default:!1},showActions:{type:Boolean,default:!1},allMessages:{},avatarPaths:{},assistantName:{},skipTransition:{type:Boolean,default:!1}},setup(n){const e={code({text:_,lang:c}){let u;return c&&zi.getLanguage(c)?u=zi.highlight(_,{language:c}).value:u=zi.highlightAuto(_).value,`<pre><code${c?` class="language-${c}"`:""}>${u}</code></pre>`}};_e.use({renderer:e});const a=n,r=t.computed(()=>sR.sanitize(_e.parse(a.content||""))),i=t.computed(()=>{if(!a.timestamp)return"";const _=new Date(a.timestamp);return Number.isNaN(_.getTime())?"":_.toLocaleTimeString()});function s(_){var m;const c=_.target.closest(".aia-copy-btn");if(!c)return;const u=(m=c.closest(".aia-code-block"))==null?void 0:m.querySelector("code");u&&navigator.clipboard.writeText(u.textContent||"")}const o=t.computed(()=>{var c;if(a.role==="user")return"You";const _=(c=a.assistantName)==null?void 0:c.trim();return _||(a.role==="assistant"?To(a.backend)||"Assistant":a.role)}),l=t.computed(()=>a.role==="user"?"U":a.role==="tool"?"T":a.role==="system"?"S":(o.value.charAt(0)||"A").toUpperCase()),d=t.computed(()=>a.role==="assistant"?RR(a.model):"");return(_,c)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["aia-bubble",[`aia-bubble--${n.role}`,{"aia-bubble--streaming":n.streaming,"aia-bubble--fade-in":!n.skipTransition}]])},[t.createElementVNode("div",CR,[n.avatarPaths&&n.avatarPaths.length>0?(t.openBlock(),t.createElementBlock("svg",NR,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(n.avatarPaths,(u,m)=>(t.openBlock(),t.createElementBlock("path",{key:m,d:u},null,8,hR))),128))])):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode(t.toDisplayString(l.value),1)],64))]),t.createElementVNode("div",vR,[t.createElementVNode("div",OR,[t.createElementVNode("span",yR,t.toDisplayString(o.value),1),d.value?(t.openBlock(),t.createElementBlock("span",AR,t.toDisplayString(d.value),1)):t.createCommentVNode("",!0),i.value?(t.openBlock(),t.createElementBlock("span",IR,t.toDisplayString(i.value),1)):t.createCommentVNode("",!0)]),t.createElementVNode("div",{class:"aia-bubble__content",onClick:s,innerHTML:r.value},null,8,DR)]),n.showActions?(t.openBlock(),t.createBlock(So,t.mergeProps({key:0,content:n.content},n.allMessages!==void 0?{allMessages:n.allMessages}:{}),null,16,["content"])):t.createCommentVNode("",!0)],2))}}),Wt=he(MR,[["__scopeId","data-v-fe84dfc8"]]),LR={class:"aia-controls"},xR={class:"aia-controls__group"},kR=["value"],wR=["value"],PR={class:"aia-controls__group"},BR=["disabled","value"],UR={value:""},FR=["value"],GR={class:"aia-controls__group"},YR=["disabled","value"],VR={value:""},qR=["value"],zR={class:"aia-controls__group aia-controls__group--mode"},HR={class:"aia-controls__modes"},$R=["onClick"],WR=t.defineComponent({__name:"ChatControls",props:{chatMode:{},selectedBackend:{},selectedAccount:{},selectedModel:{},backends:{}},emits:["update:chatMode","update:selectedBackend","update:selectedAccount","update:selectedModel"],setup(n,{emit:e}){const a=n,r=e,i=[{value:"single",label:"Single"},{value:"all",label:"All"},{value:"compound",label:"Compound"}],s=t.computed(()=>!a.selectedBackend),o=t.computed(()=>a.backends.find(_=>_.kind===a.selectedBackend)),l=t.computed(()=>{var _;return((_=o.value)==null?void 0:_.accounts)??[]}),d=t.computed(()=>{var _;return((_=o.value)==null?void 0:_.models)??[]});return(_,c)=>(t.openBlock(),t.createElementBlock("div",LR,[t.createElementVNode("div",xR,[c[4]||(c[4]=t.createElementVNode("label",{class:"aia-controls__label"},"Backend",-1)),t.createElementVNode("select",{class:"aia-controls__select",value:n.selectedBackend??"",onChange:c[0]||(c[0]=u=>r("update:selectedBackend",u.target.value||null))},[c[3]||(c[3]=t.createElementVNode("option",{value:""},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(n.backends,u=>(t.openBlock(),t.createElementBlock("option",{key:u.kind,value:u.kind},t.toDisplayString(u.displayName),9,wR))),128))],40,kR)]),t.createElementVNode("div",PR,[c[5]||(c[5]=t.createElementVNode("label",{class:"aia-controls__label"},"Account",-1)),t.createElementVNode("select",{class:"aia-controls__select",disabled:s.value,value:n.selectedAccount??"",onChange:c[1]||(c[1]=u=>r("update:selectedAccount",u.target.value||null))},[t.createElementVNode("option",UR,t.toDisplayString(s.value?"--":"Default"),1),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.value,u=>(t.openBlock(),t.createElementBlock("option",{key:u.id,value:u.id},t.toDisplayString(u.label),9,FR))),128))],40,BR)]),t.createElementVNode("div",GR,[c[6]||(c[6]=t.createElementVNode("label",{class:"aia-controls__label"},"Model",-1)),t.createElementVNode("select",{class:"aia-controls__select",disabled:s.value,value:n.selectedModel??"",onChange:c[2]||(c[2]=u=>r("update:selectedModel",u.target.value||null))},[t.createElementVNode("option",VR,t.toDisplayString(s.value?"--":"Default"),1),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(d.value,u=>(t.openBlock(),t.createElementBlock("option",{key:u,value:u},t.toDisplayString(u),9,qR))),128))],40,YR)]),t.createElementVNode("div",zR,[c[7]||(c[7]=t.createElementVNode("label",{class:"aia-controls__label"},"Mode",-1)),t.createElementVNode("div",HR,[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(i,u=>t.createElementVNode("button",{key:u.value,class:t.normalizeClass(["aia-controls__mode-btn",{"aia-controls__mode-btn--active":n.chatMode===u.value}]),onClick:m=>r("update:chatMode",u.value)},t.toDisplayString(u.label),11,$R)),64))])])]))}}),id=he(WR,[["__scopeId","data-v-a9f4b1df"]]),KR={class:"aia-input"},QR=["placeholder","disabled"],XR=["disabled"],ZR=t.defineComponent({__name:"ChatInput",props:{placeholder:{default:"Type a message..."},disabled:{type:Boolean},isStreaming:{type:Boolean}},emits:["send"],setup(n,{emit:e}){const a=n,r=e,i=t.ref(""),s=t.ref(null);function o(){const _=i.value.trim();!_||a.disabled||a.isStreaming||(r("send",_),i.value="",t.nextTick(d))}function l(_){_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),o())}function d(){const _=s.value;_&&(_.style.height="auto",_.style.height=Math.min(_.scrollHeight,120)+"px")}return t.watch(i,()=>t.nextTick(d)),(_,c)=>(t.openBlock(),t.createElementBlock("div",KR,[t.withDirectives(t.createElementVNode("textarea",{ref_key:"textareaRef",ref:s,"onUpdate:modelValue":c[0]||(c[0]=u=>i.value=u),class:"aia-input__textarea",placeholder:n.placeholder,rows:"1",disabled:n.disabled||n.isStreaming,onKeydown:l,onInput:d},null,40,QR),[[t.vModelText,i.value]]),t.createElementVNode("button",{class:"aia-input__send",disabled:!i.value.trim()||n.disabled||n.isStreaming,onClick:o},t.toDisplayString(n.isStreaming?"...":"Send"),9,XR)]))}}),od=he(ZR,[["__scopeId","data-v-51976e76"]]),JR={class:"aia-responses"},jR={class:"aia-responses__summary-count"},eC=["open"],tC={class:"aia-resp__header"},nC={key:0,class:"aia-resp__account"},aC=["innerHTML"],rC={key:1,class:"aia-resp__error",role:"alert"},iC={key:0,class:"aia-resp__error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",width:"16",height:"16","aria-hidden":"true"},oC={key:1,class:"aia-resp__error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",width:"16",height:"16","aria-hidden":"true"},sC={class:"aia-resp__error-text"},lC={class:"aia-resp__error-title"},cC={key:0,class:"aia-resp__error-hint"},_C={class:"aia-resp__error-detail"},dC=t.defineComponent({__name:"AllModeResponses",props:{responses:{},collapsible:{type:Boolean,default:!1},summaryHeader:{type:Boolean,default:!1},waitingPlaceholder:{default:null}},setup(n){const e=n,a={claude:{bg:"rgba(139,92,246,0.15)",fg:"#a78bfa",label:"Claude"},claude_custom:{bg:"rgba(192,132,252,0.15)",fg:"#c084fc",label:"Claude (self-hosted)"},codex:{bg:"rgba(16,185,129,0.15)",fg:"#34d399",label:"Codex"},antigravity:{bg:"rgba(96,165,250,0.15)",fg:"#60a5fa",label:"Antigravity"},opencode:{bg:"rgba(251,191,36,0.15)",fg:"#fbbf24",label:"OpenCode"},deepseek:{bg:"rgba(59,130,246,0.15)",fg:"#3b82f6",label:"DeepSeek"},goose:{bg:"rgba(249,115,22,0.15)",fg:"#f97316",label:"Goose"},aider:{bg:"rgba(20,184,166,0.15)",fg:"#14b8a6",label:"Aider"},crush:{bg:"rgba(239,68,68,0.15)",fg:"#ef4444",label:"Crush"},openai_compat:{bg:"rgba(34,211,238,0.15)",fg:"#22d3ee",label:"OpenAI-compatible"},openrouter:{bg:"rgba(129,140,248,0.15)",fg:"#818cf8",label:"OpenRouter"},kimi:{bg:"rgba(232,121,249,0.15)",fg:"#e879f9",label:"Kimi"}};function r(m){return m?a[m]??{bg:"rgba(161,161,170,0.15)",fg:"#a1a1aa",label:m}:{bg:"rgba(161,161,170,0.15)",fg:"#a1a1aa",label:"Backend"}}function i(m){switch(m){case"streaming":return{text:"Streaming",cls:"aia-resp__badge--streaming"};case"complete":return{text:"Done",cls:"aia-resp__badge--complete"};case"error":return{text:"Error",cls:"aia-resp__badge--error"};case"timeout":return{text:"Timeout",cls:"aia-resp__badge--timeout"};default:return{text:m,cls:""}}}function s(m){const p=m||"";if(/^no models available/i.test(p))return{title:"No models available",hint:"CLIProxyAPI advertises zero models for this backend. Make sure cliproxyapi is running and this backend’s account is registered."};if(/^could not enumerate models/i.test(p))return{title:"Could not list models",hint:"Failed to fetch the model list for this backend."};if(/^no account available/i.test(p))return{title:"No account available",hint:"No ready account is registered for this backend kind."};const E=p.match(/'([^']+)' (?:model )?is not supported when using (\w+) with a ([^']+?) account/i);return E?{title:`${E[1]} not available`,hint:`Your ${E[2]} account is authenticated via ${E[3]}, which doesn't expose this model. Switch to an API-key login or pick a different model.`}:/^Proxy error/i.test(p)?{title:"Upstream proxy error",hint:null}:/timed?\s*out/i.test(p)?{title:"Backend timed out",hint:null}:{title:"Backend error",hint:null}}const o=t.computed(()=>Array.from(e.responses.entries()));function l(m){return _e.parse(m||"")}const d=t.ref(!1),_=t.computed(()=>{const m=o.value.length,p=o.value.filter(([,T])=>T.status==="complete").length;return m-p>0?`${p}/${m} backends responded`:`${m} backend responses`});t.watch(()=>e.summaryHeader,m=>{m||(d.value=!1)});function c(m){return(m.status==="error"||m.status==="timeout")&&!m.content?!1:(e.waitingPlaceholder&&m.status==="streaming"&&!m.content,!0)}function u(m){return!m.content&&e.waitingPlaceholder&&m.status==="streaming"?`<em class="aia-resp__waiting">${e.waitingPlaceholder}</em>`:l(m.content)}return(m,p)=>(t.openBlock(),t.createElementBlock("div",JR,[n.summaryHeader&&o.value.length>0?(t.openBlock(),t.createElementBlock("button",{key:0,class:"aia-responses__summary",onClick:p[0]||(p[0]=E=>d.value=!d.value)},[(t.openBlock(),t.createElementBlock("svg",{class:t.normalizeClass(["aia-responses__summary-chevron",{"is-open":d.value}]),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14","aria-hidden":"true"},[...p[1]||(p[1]=[t.createElementVNode("polyline",{points:"9 18 15 12 9 6"},null,-1)])],2)),p[2]||(p[2]=t.createElementVNode("span",{class:"aia-responses__summary-label"},"Individual Responses",-1)),t.createElementVNode("span",jR,t.toDisplayString(_.value),1)])):t.createCommentVNode("",!0),!n.summaryHeader||d.value?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(o.value,([E,T])=>(t.openBlock(),t.createElementBlock("div",{key:E,class:t.normalizeClass(["aia-resp",{"aia-resp--error":T.status==="error","aia-resp--timeout":T.status==="timeout"}]),style:t.normalizeStyle({"--resp-bg":r(T.backendKind).bg,"--resp-fg":r(T.backendKind).fg})},[t.createElementVNode("details",{open:!n.collapsible||void 0},[t.createElementVNode("summary",tC,[t.createElementVNode("span",{class:"aia-resp__name",style:t.normalizeStyle({color:r(T.backendKind).fg})},t.toDisplayString(r(T.backendKind).label),5),T.accountLabel?(t.openBlock(),t.createElementBlock("span",nC,t.toDisplayString(T.accountLabel),1)):t.createCommentVNode("",!0),t.createElementVNode("span",{class:t.normalizeClass(["aia-resp__badge",i(T.status).cls])},t.toDisplayString(i(T.status).text),3)]),c(T)?(t.openBlock(),t.createElementBlock("div",{key:0,class:"aia-resp__body",innerHTML:u(T)},null,8,aC)):t.createCommentVNode("",!0),T.error?(t.openBlock(),t.createElementBlock("div",rC,[T.status==="timeout"?(t.openBlock(),t.createElementBlock("svg",iC,[...p[3]||(p[3]=[t.createElementVNode("circle",{cx:"12",cy:"12",r:"9"},null,-1),t.createElementVNode("polyline",{points:"12 7 12 12 15 14"},null,-1)])])):(t.openBlock(),t.createElementBlock("svg",oC,[...p[4]||(p[4]=[t.createElementVNode("path",{d:"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z"},null,-1),t.createElementVNode("line",{x1:"12",y1:"9",x2:"12",y2:"13"},null,-1),t.createElementVNode("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"},null,-1)])])),t.createElementVNode("div",sC,[t.createElementVNode("strong",lC,t.toDisplayString(s(T.error).title),1),s(T.error).hint?(t.openBlock(),t.createElementBlock("p",cC,t.toDisplayString(s(T.error).hint),1)):t.createCommentVNode("",!0),t.createElementVNode("code",_C,t.toDisplayString(T.error),1)])])):t.createCommentVNode("",!0)],8,eC)],6))),128)):t.createCommentVNode("",!0)]))}}),bo=he(dC,[["__scopeId","data-v-579cd1f6"]]),uC={class:"aia-synth__header"},pC={key:0,class:"aia-synth__sparkle","aria-hidden":"true"},mC={key:1,class:"aia-synth__via"},EC={key:0,class:"aia-synth__sources"},gC={key:1,class:"aia-synth__placeholder"},SC=["innerHTML"],TC={key:3,class:"aia-synth__error"},bC=t.defineComponent({__name:"CompoundSynthesis",props:{state:{},sparkleIcon:{type:Boolean,default:!1},loadingPlaceholders:{type:Boolean,default:!1}},setup(n){const e=n,a=t.computed(()=>_e.parse(e.state.content||"")),r=t.computed(()=>e.state.status==="streaming"),i=t.computed(()=>!!(e.state.content&&e.state.content.length>0)),s=t.computed(()=>e.loadingPlaceholders&&!i.value&&(e.state.status==="streaming"||e.state.status==="waiting")),o=t.computed(()=>e.state.status==="streaming"?"Generating synthesis...":"Waiting for backend responses...");function l(d){switch(d){case"waiting":return{text:"Waiting...",cls:"aia-synth__badge--waiting"};case"streaming":return{text:"Synthesizing",cls:"aia-synth__badge--streaming"};case"complete":return{text:"Complete",cls:"aia-synth__badge--complete"};case"error":return{text:"Error",cls:"aia-synth__badge--error"};default:return{text:d,cls:""}}}return(d,_)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["aia-synth",{"aia-synth--streaming":r.value}])},[t.createElementVNode("div",uC,[n.sparkleIcon?(t.openBlock(),t.createElementBlock("span",pC,"✨")):t.createCommentVNode("",!0),_[0]||(_[0]=t.createElementVNode("span",{class:"aia-synth__label"},"Compound Synthesis",-1)),n.state.primaryBackend?(t.openBlock(),t.createElementBlock("span",mC,"via "+t.toDisplayString(n.state.primaryBackend),1)):t.createCommentVNode("",!0),t.createElementVNode("span",{class:t.normalizeClass(["aia-synth__badge",l(n.state.status).cls])},t.toDisplayString(l(n.state.status).text),3)]),n.state.backendsCollected.length?(t.openBlock(),t.createElementBlock("div",EC," Sources: "+t.toDisplayString(n.state.backendsCollected.join(", ")),1)):t.createCommentVNode("",!0),s.value?(t.openBlock(),t.createElementBlock("div",gC,t.toDisplayString(o.value),1)):(t.openBlock(),t.createElementBlock("div",{key:2,class:"aia-synth__content",innerHTML:a.value},null,8,SC)),n.state.error?(t.openBlock(),t.createElementBlock("div",TC,t.toDisplayString(n.state.error),1)):t.createCommentVNode("",!0)],2))}}),fo=he(bC,[["__scopeId","data-v-93a21588"]]),fC={class:"finalization-banner"},RC={class:"banner-content"},CC={class:"banner-title"},NC={class:"banner-description"},hC=["disabled"],vC=t.defineComponent({__name:"FinalizationBanner",props:{title:{},buttonLabel:{},entityLabel:{},entityName:{},isFinalizing:{type:Boolean,default:!1}},emits:["finalize"],setup(n,{emit:e}){const a=e;return(r,i)=>(t.openBlock(),t.createElementBlock("div",fC,[t.createElementVNode("div",RC,[t.createElementVNode("h3",CC,t.toDisplayString(n.title),1),t.createElementVNode("p",NC," Your "+t.toDisplayString(n.entityLabel)+t.toDisplayString(n.entityName?": "+n.entityName:"")+" is ready. Click the button to finalize. ",1)]),t.createElementVNode("button",{class:"banner-button",disabled:n.isFinalizing,onClick:i[0]||(i[0]=s=>a("finalize"))},t.toDisplayString(n.isFinalizing?"Creating...":n.buttonLabel),9,hC)]))}}),sd=he(vC,[["__scopeId","data-v-bde99def"]]),OC={key:0,class:"process-group-badge-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},yC={key:1,class:"process-group-badge-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},AC={key:2,class:"process-group-badge-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},IC={class:"process-group-label"},DC={key:0,class:"process-group-time"},MC={class:"process-group-chevron"},LC={key:0,class:"process-group-body"},xC=t.defineComponent({__name:"ProcessGroup",props:{id:{},type:{},label:{},timestamp:{},isExpanded:{type:Boolean,default:!0},autoCollapseMs:{default:0},iconBadges:{type:Boolean,default:!1}},emits:["toggle"],setup(n,{emit:e}){const a=n,r=e,i={tool_call:"Tool",reasoning:"Thinking",code_execution:"Code"},s={tool_call:"var(--aia-cyan, #22d3ee)",reasoning:"var(--aia-violet, #a78bfa)",code_execution:"var(--aia-amber, #fbbf24)"};function o(p){if(!p)return"";const E=new Date(p);return Number.isNaN(E.getTime())?"":E.toLocaleTimeString()}const l=t.ref(!1);let d=null;function _(){d!==null&&(clearTimeout(d),d=null)}function c(){_(),a.autoCollapseMs>0&&!l.value&&a.isExpanded&&(d=setTimeout(()=>{a.isExpanded&&r("toggle")},a.autoCollapseMs))}function u(){l.value=!0,_()}function m(){l.value=!1,c()}return t.onMounted(()=>{c()}),t.onUnmounted(()=>{_()}),t.watch(()=>a.isExpanded,p=>{p?c():_()}),(p,E)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["process-group",[`process-group--${n.type}`]]),onMouseenter:u,onMouseleave:m},[t.createElementVNode("div",{class:"process-group-header",onClick:E[0]||(E[0]=T=>r("toggle"))},[t.createElementVNode("span",{class:t.normalizeClass(["process-group-badge",[`process-group-badge--${n.type}`,{"process-group-badge--with-icon":n.iconBadges}]]),style:t.normalizeStyle({background:s[n.type]})},[n.iconBadges&&n.type==="tool_call"?(t.openBlock(),t.createElementBlock("svg",OC,[...E[1]||(E[1]=[t.createElementVNode("path",{d:"M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"},null,-1)])])):n.iconBadges&&n.type==="reasoning"?(t.openBlock(),t.createElementBlock("svg",yC,[...E[2]||(E[2]=[t.createElementVNode("path",{d:"M12 2a8 8 0 018 8c0 3-2 5.5-4 7l-1 4H9l-1-4c-2-1.5-4-4-4-7a8 8 0 018-8z"},null,-1),t.createElementVNode("path",{d:"M9 21h6M10 17h4"},null,-1)])])):n.iconBadges&&n.type==="code_execution"?(t.openBlock(),t.createElementBlock("svg",AC,[...E[3]||(E[3]=[t.createElementVNode("polyline",{points:"4 17 10 11 4 5"},null,-1),t.createElementVNode("line",{x1:"12",y1:"19",x2:"20",y2:"19"},null,-1)])])):t.createCommentVNode("",!0),t.createTextVNode(" "+t.toDisplayString(i[n.type]),1)],6),t.createElementVNode("span",IC,t.toDisplayString(n.label),1),n.timestamp&&o(n.timestamp)?(t.openBlock(),t.createElementBlock("span",DC,t.toDisplayString(o(n.timestamp)),1)):t.createCommentVNode("",!0),t.createElementVNode("span",MC,t.toDisplayString(n.isExpanded?"▼":"▶"),1)]),n.isExpanded?(t.openBlock(),t.createElementBlock("div",LC,[t.renderSlot(p.$slots,"default",{},void 0,!0)])):t.createCommentVNode("",!0)],34))}}),Ro=he(xC,[["__scopeId","data-v-c351adfa"]]),kC={class:"aia-smart-panel"},wC={ref:"scroll.containerRef",class:"aia-smart-panel__messages"},PC={key:0,class:"aia-smart-panel__welcome"},BC={class:"aia-smart-panel__welcome-icon"},UC={class:"aia-smart-panel__welcome-title"},FC={class:"aia-smart-panel__welcome-sub"},GC={key:4,class:"process-groups"},YC={key:2,class:"aia-smart-panel__error"},VC=t.defineComponent({__name:"AiChatPanel",props:{density:{default:"minimal"},defaultBackend:{},defaultModel:{},placeholder:{default:"Type a message..."},welcomeTitle:{default:"AI Chat"},welcomeSubtitle:{default:"Send a message to get started"},readOnly:{type:Boolean},entityLabel:{},bannerTitle:{},bannerButtonLabel:{},configParser:{},showProcessGroups:{type:Boolean,default:void 0},showActions:{type:Boolean,default:void 0}},emits:["finalize"],setup(n,{emit:e}){const a=n,r=t.computed(()=>a.showProcessGroups??a.density==="detailed"),i=t.computed(()=>a.showActions??a.density==="detailed"),s=e,o=et.useSmartChat(),l=et.useSmartScroll(),{client:d}=et.useAiAccounts(),_=t.computed(()=>(To(o.selectedBackend.value)||"Assistant").charAt(0).toUpperCase()),c=t.ref([]),u=t.ref({}),m=t.computed(()=>Array.from(new Set(c.value.map(N=>N.kind))).map(N=>{const b=c.value.filter(S=>S.kind===N);return{kind:N,displayName:N,accounts:b.map(S=>({id:S.id,label:S.display_name||S.id})),models:u.value[N]??[]}}));async function p(N){if(!u.value[N.kind])try{const{items:b}=await d.listModels(N.id);u.value={...u.value,[N.kind]:b.map(S=>S.id)}}catch{}}async function E(){if(await Promise.all(c.value.filter(N=>N.status==="ready").map(p)),!o.selectedModel.value){for(const N of m.value)if(N.models.length>0){o.selectedModel.value=N.models[0],o.selectedBackend.value||(o.selectedBackend.value=N.kind);break}}}t.watchEffect(()=>{o.setConfigParser(a.configParser??null)}),t.onMounted(async()=>{try{const N=await d.listBackends();c.value=N.items??[],await E()}catch{}}),t.watch(()=>[o.selectedBackend.value,o.selectedAccount.value],([N,b],[S,v])=>{o.sessionId.value&&(N!==S||b!==v)&&o.resetSession()});function T(N,b=null){if(b){const v=c.value.find(A=>A.id===b);if(v)return v}const S=N?c.value.filter(v=>v.kind===N):c.value;return S.find(v=>v.status==="ready")??S[0]??null}async function f(N){if(!o.sessionId.value){if(c.value.length===0)try{const B=await d.listBackends();c.value=B.items??[],await E()}catch{o.error.value="Unable to load backends from sidecar";return}const b=o.selectedBackend.value??a.defaultBackend??null,S=o.selectedAccount.value,v=T(b,S);if(!v){o.error.value="No backend available — add an account first";return}let A=o.selectedModel.value??a.defaultModel??"";if(!A){await p(v);const B=u.value[v.kind]??[];B.length>0&&(A=B[0],o.selectedModel.value=A)}if(!A){o.error.value=`No models available for ${v.kind}`;return}try{await o.createSession(v.id,A)}catch(B){o.error.value=B instanceof Error?B.message:String(B);return}}await o.send(N)}async function O(){const N=await o.finalize();s("finalize",N)}return(N,b)=>(t.openBlock(),t.createElementBlock("div",kC,[n.density==="detailed"?(t.openBlock(),t.createBlock(id,{key:0,"chat-mode":t.unref(o).chatMode.value,"selected-backend":t.unref(o).selectedBackend.value,"selected-account":t.unref(o).selectedAccount.value,"selected-model":t.unref(o).selectedModel.value,backends:m.value,"onUpdate:chatMode":t.unref(o).setMode,"onUpdate:selectedBackend":t.unref(o).selectBackend,"onUpdate:selectedAccount":b[0]||(b[0]=S=>t.unref(o).selectedAccount.value=S),"onUpdate:selectedModel":b[1]||(b[1]=S=>t.unref(o).selectedModel.value=S)},null,8,["chat-mode","selected-backend","selected-account","selected-model","backends","onUpdate:chatMode","onUpdate:selectedBackend"])):t.createCommentVNode("",!0),t.createElementVNode("div",wC,[t.unref(o).messages.value.length===0&&!t.unref(o).isStreaming.value?(t.openBlock(),t.createElementBlock("div",PC,[t.createElementVNode("div",BC,t.toDisplayString(_.value),1),t.createElementVNode("h3",UC,t.toDisplayString(n.welcomeTitle),1),t.createElementVNode("p",FC,t.toDisplayString(n.welcomeSubtitle),1)])):t.createCommentVNode("",!0),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(o).messages.value,S=>(t.openBlock(),t.createBlock(Wt,{key:S.id,role:S.role,content:S.content,timestamp:S.created_at,backend:t.unref(o).selectedBackend.value,model:S.model??t.unref(o).selectedModel.value,"show-actions":i.value,"all-messages":t.unref(o).messages.value},null,8,["role","content","timestamp","backend","model","show-actions","all-messages"]))),128)),t.unref(o).isStreaming.value&&t.unref(o).chatMode.value==="single"&&t.unref(o).streamingContent.value?(t.openBlock(),t.createBlock(Wt,{key:1,role:"assistant",content:t.unref(o).streamingContent.value,backend:t.unref(o).selectedBackend.value,model:t.unref(o).selectedModel.value,streaming:!0},null,8,["content","backend","model"])):t.createCommentVNode("",!0),t.unref(o).backendResponses.value.size>0?(t.openBlock(),t.createBlock(bo,{key:2,responses:t.unref(o).backendResponses.value,collapsible:t.unref(o).chatMode.value==="compound"},null,8,["responses","collapsible"])):t.createCommentVNode("",!0),t.unref(o).synthesisState.value?(t.openBlock(),t.createBlock(fo,{key:3,state:t.unref(o).synthesisState.value},null,8,["state"])):t.createCommentVNode("",!0),r.value&&t.unref(o).processGroups.groups.value.size>0?(t.openBlock(),t.createElementBlock("div",GC,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(o).processGroups.groups.value,([S,v])=>(t.openBlock(),t.createBlock(Ro,{key:S,id:v.id,type:v.type,label:v.label,timestamp:v.timestamp,"is-expanded":v.isExpanded,onToggle:A=>t.unref(o).processGroups.toggleGroup(S)},{default:t.withCtx(()=>[t.createElementVNode("pre",null,t.toDisplayString(v.content),1)]),_:2},1032,["id","type","label","timestamp","is-expanded","onToggle"]))),128))])):t.createCommentVNode("",!0),N.$slots.finalization?t.renderSlot(N.$slots,"finalization",{key:5,state:{canFinalize:t.unref(o).canFinalize,isFinalizing:t.unref(o).isFinalizing}},void 0,!0):t.unref(o).canFinalize.value&&n.entityLabel?(t.openBlock(),t.createBlock(sd,{key:6,title:n.bannerTitle??"Ready to finalize","button-label":n.bannerButtonLabel??"Finalize","entity-label":n.entityLabel,"is-finalizing":t.unref(o).isFinalizing.value,onFinalize:O},null,8,["title","button-label","entity-label","is-finalizing"])):t.createCommentVNode("",!0),b[3]||(b[3]=t.createElementVNode("div",{class:"aia-smart-panel__anchor"},null,-1))],512),t.unref(l).showScrollButton.value?(t.openBlock(),t.createElementBlock("button",{key:1,class:"aia-smart-panel__scroll-btn",onClick:b[2]||(b[2]=(...S)=>t.unref(l).scrollToBottom&&t.unref(l).scrollToBottom(...S))}," ↓ ")):t.createCommentVNode("",!0),t.unref(o).error.value?(t.openBlock(),t.createElementBlock("div",YC,t.toDisplayString(t.unref(o).error.value),1)):t.createCommentVNode("",!0),n.readOnly?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(od,{key:3,placeholder:n.placeholder,"is-streaming":t.unref(o).isStreaming.value,onSend:f},null,8,["placeholder","is-streaming"]))]))}}),qC=he(VC,[["__scopeId","data-v-4cb169c3"]]),zC={class:"aia-chat-selector"},HC={class:"aia-chat-selector__group"},$C=["value","disabled"],WC=["value"],KC={class:"aia-chat-selector__group"},QC=["value","disabled"],XC=["value"],ZC={class:"aia-chat-selector__group"},JC=["value","disabled"],jC=["value"],eN={key:0,class:"aia-chat-selector__group aia-chat-selector__mode-group"},tN=["value","checked","onChange"],nN=t.defineComponent({__name:"AiChatSelector",props:{backend:{},accountId:{},model:{},chatMode:{}},emits:["update:backend","update:accountId","update:model","update:chatMode"],setup(n,{emit:e}){const a=n,r=e,i=[{value:"single",label:"Single"},{value:"all",label:"All"},{value:"compound",label:"Compound"}],{client:s}=et.useAiAccounts(),o=t.ref([]),l=t.ref({}),d=t.ref(!0),_=t.computed(()=>{const b=new Map;for(const S of o.value)b.has(S.kind)||b.set(S.kind,{kind:S.kind,label:c(S)});return Array.from(b.values())});function c(b){return{claude:"Claude",claude_custom:"Claude (self-hosted)",codex:"Codex",antigravity:"Antigravity",opencode:"OpenCode",deepseek:"DeepSeek",goose:"Goose",aider:"Aider",crush:"Crush",openai_compat:"OpenAI-compatible",openrouter:"OpenRouter",kimi:"Kimi"}[b.kind]??b.kind}const u=t.computed(()=>a.backend==="auto"?[]:o.value.filter(b=>b.kind===a.backend)),m=t.computed(()=>u.value.map(b=>({id:b.id,label:b.display_name||b.id}))),p=t.computed(()=>l.value[a.backend]??[]),E=t.computed(()=>a.backend==="auto");async function T(b){if(l.value[b])return;const S=o.value.find(v=>v.kind===b);if(S)try{const{items:v}=await s.listModels(S.id);l.value={...l.value,[b]:v.map(A=>A.id)}}catch{}}t.onMounted(async()=>{try{const b=await s.listBackends();o.value=b.items??[],a.backend&&a.backend!=="auto"&&await T(a.backend)}catch{}finally{d.value=!1}}),t.watch(()=>a.backend,b=>{r("update:accountId",null),r("update:model",null),b&&b!=="auto"&&T(b)});function f(b){const S=b.target.value;r("update:backend",S),S!=="auto"&&a.chatMode&&a.chatMode!=="single"&&r("update:chatMode","single")}function O(b){const S=b.target.value;r("update:accountId",S||null)}function N(b){const S=b.target.value;r("update:model",S||null)}return(b,S)=>(t.openBlock(),t.createElementBlock("div",zC,[t.createElementVNode("div",HC,[S[1]||(S[1]=t.createElementVNode("label",{class:"aia-chat-selector__label"},"Backend:",-1)),t.createElementVNode("select",{class:"aia-chat-selector__select aia-chat-selector__select--backend",value:n.backend,disabled:d.value,onChange:f},[S[0]||(S[0]=t.createElementVNode("option",{value:"auto"},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(_.value,v=>(t.openBlock(),t.createElementBlock("option",{key:v.kind,value:v.kind},t.toDisplayString(v.label),9,WC))),128))],40,$C)]),t.createElementVNode("div",KC,[S[3]||(S[3]=t.createElementVNode("label",{class:"aia-chat-selector__label"},"Account:",-1)),t.createElementVNode("select",{class:"aia-chat-selector__select aia-chat-selector__select--account",value:n.accountId||"",disabled:E.value||m.value.length===0,onChange:O},[S[2]||(S[2]=t.createElementVNode("option",{value:""},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.value,v=>(t.openBlock(),t.createElementBlock("option",{key:v.id,value:v.id},t.toDisplayString(v.label),9,XC))),128))],40,QC)]),t.createElementVNode("div",ZC,[S[5]||(S[5]=t.createElementVNode("label",{class:"aia-chat-selector__label"},"Model:",-1)),t.createElementVNode("select",{class:"aia-chat-selector__select aia-chat-selector__select--model",value:n.model||"",disabled:E.value||p.value.length===0,onChange:N},[S[4]||(S[4]=t.createElementVNode("option",{value:""},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(p.value,v=>(t.openBlock(),t.createElementBlock("option",{key:v,value:v},t.toDisplayString(v),9,jC))),128))],40,JC)]),n.chatMode?(t.openBlock(),t.createElementBlock("div",eN,[S[6]||(S[6]=t.createElementVNode("span",{class:"aia-chat-selector__mode-separator","aria-hidden":"true"},null,-1)),(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(i,v=>t.createElementVNode("label",{key:v.value,class:t.normalizeClass(["aia-chat-selector__mode-radio",{"aia-chat-selector__mode-radio--active":n.chatMode===v.value}])},[t.createElementVNode("input",{type:"radio",name:"aia-chat-selector-mode",value:v.value,checked:n.chatMode===v.value,onChange:A=>r("update:chatMode",v.value)},null,40,tN),t.createTextVNode(" "+t.toDisplayString(v.label),1)],2)),64))])):t.createCommentVNode("",!0),t.renderSlot(b.$slots,"trailing",{},void 0,!0)]))}}),ld=he(nN,[["__scopeId","data-v-3ed1dc93"]]),aN={class:"chat-panel"},rN={key:1,class:"cli-runner-toggle"},iN=["aria-pressed","title"],oN={class:"cli-runner-toggle__label"},sN={key:0,class:"chat-welcome"},lN={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},cN=["d"],_N={class:"process-group-content"},dN={key:4,class:"processing-indicator"},uN={key:2,class:"convert-banner"},pN={class:"banner-icon"},mN={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},EN=["d"],gN={class:"banner-content"},SN=["disabled"],TN={key:3,class:"input-area"},bN={class:"input-wrapper"},fN=["value","placeholder","disabled"],RN=["disabled"],CN=32,NN=t.defineComponent({__name:"AiChatPanelManaged",props:{messages:{default:()=>[]},isProcessing:{type:Boolean,default:!1},streamingContent:{default:""},inputMessage:{default:""},conversationId:{default:null},canFinalize:{type:Boolean,default:!1},isFinalizing:{type:Boolean,default:!1},assistantIconPaths:{default:()=>[]},inputPlaceholder:{default:"Type a message..."},entityLabel:{default:""},bannerTitle:{default:""},bannerButtonLabel:{default:""},detectedEntityName:{default:""},showBackendSelector:{type:Boolean,default:!1},selectedBackend:{default:"auto"},selectedAccountId:{default:null},selectedModel:{default:null},readOnly:{type:Boolean,default:!1},useSmartScroll:{type:Boolean,default:!1},processGroups:{},chatMode:{default:"single"},backendResponses:{},synthesisState:{default:null},isAllModeActive:{type:Boolean,default:!1},useCliRunner:{type:Boolean,default:!1},hideCliRunnerToggle:{type:Boolean,default:!1}},emits:["update:inputMessage","send","keydown","finalize","update:selectedBackend","update:selectedAccountId","update:selectedModel","update:chatMode","update:useCliRunner"],setup(n,{emit:e}){const a=n,r=e,i=t.ref(null),s=t.computed(()=>To(a.selectedBackend)||"Assistant"),o=t.computed(()=>a.messages??[]),l=t.computed(()=>a.inputMessage??""),d=t.computed(()=>a.assistantIconPaths??[]),_=t.computed(()=>o.value.map(N=>{const b={role:N.role,content:N.content};return N.timestamp&&(b.timestamp=N.timestamp),b})),c=t.ref(!0);function u(){const N=i.value;return N?N.scrollHeight-N.scrollTop-N.clientHeight<=CN:!0}function m(){a.useSmartScroll&&(c.value=u())}function p(){t.nextTick(()=>{if(i.value){if(a.useSmartScroll&&!c.value)return;i.value.scrollTop=i.value.scrollHeight}})}function E(){c.value=!0,t.nextTick(()=>{i.value&&i.value.scrollTo({top:i.value.scrollHeight,behavior:"instant"})})}const T=t.computed(()=>a.useSmartScroll&&!c.value);t.watch(()=>o.value.length,p),t.watch(()=>a.streamingContent,p),t.watch(()=>a.isProcessing,N=>{N&&p()}),t.watch(()=>{if(!a.backendResponses)return 0;let N=0;for(const b of a.backendResponses.values())N+=b.content.length;return N},p),t.watch(()=>{var N,b;return((b=(N=a.synthesisState)==null?void 0:N.content)==null?void 0:b.length)??0},p);function f(N){const b=N.target;r("update:inputMessage",b.value),b.style.height="auto",b.style.height=Math.min(b.scrollHeight,120)+"px"}const O=t.computed(()=>a.processGroups?Array.from(a.processGroups.entries()):[]);return(N,b)=>(t.openBlock(),t.createElementBlock("div",aN,[n.showBackendSelector?(t.openBlock(),t.createBlock(ld,{key:0,backend:n.selectedBackend??"auto","account-id":n.selectedAccountId??null,model:n.selectedModel??null,"chat-mode":n.chatMode??"single","onUpdate:backend":b[0]||(b[0]=S=>r("update:selectedBackend",S)),"onUpdate:accountId":b[1]||(b[1]=S=>r("update:selectedAccountId",S)),"onUpdate:model":b[2]||(b[2]=S=>r("update:selectedModel",S)),"onUpdate:chatMode":b[3]||(b[3]=S=>r("update:chatMode",S))},{trailing:t.withCtx(()=>[t.renderSlot(N.$slots,"selector-trailing",{},void 0,!0)]),_:3},8,["backend","account-id","model","chat-mode"])):t.createCommentVNode("",!0),t.renderSlot(N.$slots,"header-extra",{},void 0,!0),n.hideCliRunnerToggle?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",rN,[t.createElementVNode("button",{type:"button",class:t.normalizeClass(["cli-runner-toggle__btn",{"cli-runner-toggle__btn--active":n.useCliRunner}]),"aria-pressed":n.useCliRunner?"true":"false",title:n.useCliRunner?"CLI runner mode — agent uses tools (filesystem, shell, edits) in the project worktree":"CLIProxy mode — pure token chat, no tool use",onClick:b[4]||(b[4]=S=>r("update:useCliRunner",!n.useCliRunner))},[b[9]||(b[9]=t.createElementVNode("span",{class:"cli-runner-toggle__dot"},null,-1)),t.createElementVNode("span",oN,t.toDisplayString(n.useCliRunner?"CLI runner":"CLIProxy"),1)],10,iN)])),t.createElementVNode("div",{class:"chat-container",ref_key:"chatContainer",ref:i,onScroll:m},[t.renderSlot(N.$slots,"welcome",{},()=>[o.value.length===0&&!n.isProcessing?(t.openBlock(),t.createElementBlock("div",sN,[t.createElementVNode("div",{class:t.normalizeClass(["welcome-icon",{connecting:!n.conversationId}])},[(t.openBlock(),t.createElementBlock("svg",lN,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(d.value,(S,v)=>(t.openBlock(),t.createElementBlock("path",{key:v,d:S},null,8,cN))),128))]))],2),t.createElementVNode("h2",null,t.toDisplayString(n.conversationId?"Ready to chat":`Connecting to ${s.value}...`),1),t.createElementVNode("p",null,t.toDisplayString(s.value)+" will guide you through designing your "+t.toDisplayString(n.entityLabel),1)])):t.createCommentVNode("",!0)],!0),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.value,(S,v)=>(t.openBlock(),t.createElementBlock("div",{key:v,class:t.normalizeClass(["message-wrapper",S.role])},[t.createVNode(Wt,{role:S.role,content:S.content,timestamp:S.timestamp??null,backend:S.backend??null,model:S.model??null,"avatar-paths":d.value,"skip-transition":o.value.length>10&&v<o.value.length-5},null,8,["role","content","timestamp","backend","model","avatar-paths","skip-transition"]),!n.isProcessing||v<o.value.length-1?(t.openBlock(),t.createBlock(So,{key:0,content:S.content,"all-messages":v===o.value.length-1?_.value:[]},null,8,["content","all-messages"])):t.createCommentVNode("",!0)],2))),128)),n.isProcessing&&(n.chatMode==="single"||!n.chatMode)&&n.streamingContent?(t.openBlock(),t.createBlock(Wt,{key:0,role:"assistant",content:n.streamingContent??"",backend:n.selectedBackend??null,model:n.selectedModel??null,"avatar-paths":d.value,streaming:!0},null,8,["content","backend","model","avatar-paths"])):t.createCommentVNode("",!0),(n.chatMode==="all"||n.chatMode==="compound")&&n.backendResponses&&n.backendResponses.size>0?(t.openBlock(),t.createBlock(bo,{key:1,responses:n.backendResponses,collapsible:n.chatMode==="compound"},null,8,["responses","collapsible"])):t.createCommentVNode("",!0),n.synthesisState&&n.synthesisState.status!=="waiting"?(t.openBlock(),t.createBlock(fo,{key:2,state:n.synthesisState},null,8,["state"])):t.createCommentVNode("",!0),O.value.length>0?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:3},t.renderList(O.value,([S,v])=>(t.openBlock(),t.createBlock(Ro,{key:S,id:S,type:v.type,label:v.label,timestamp:v.timestamp??"","auto-collapse-ms":v.type==="tool_call"?4e3:2e3},{default:t.withCtx(()=>[t.createElementVNode("pre",_N,t.toDisplayString(v.content),1)]),_:2},1032,["id","type","label","timestamp","auto-collapse-ms"]))),128)):t.createCommentVNode("",!0),n.isProcessing&&!n.streamingContent?(t.openBlock(),t.createElementBlock("div",dN,[b[10]||(b[10]=t.createElementVNode("div",{class:"dots"},[t.createElementVNode("span"),t.createElementVNode("span"),t.createElementVNode("span")],-1)),t.createElementVNode("span",null,t.toDisplayString(s.value)+" is thinking...",1)])):t.createCommentVNode("",!0),T.value?(t.openBlock(),t.createElementBlock("button",{key:5,class:"scroll-to-bottom-btn",onClick:E,title:"Scroll to bottom"},[...b[11]||(b[11]=[t.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)])])):t.createCommentVNode("",!0)],544),n.canFinalize?(t.openBlock(),t.createElementBlock("div",uN,[t.createElementVNode("div",pN,[(t.openBlock(),t.createElementBlock("svg",mN,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(d.value,(S,v)=>(t.openBlock(),t.createElementBlock("path",{key:v,d:S},null,8,EN))),128)),b[12]||(b[12]=t.createElementVNode("path",{d:"M20 6L9 17l-5-5","stroke-width":"2.5"},null,-1))]))]),t.createElementVNode("div",gN,[t.createElementVNode("h3",null,t.toDisplayString(n.bannerTitle),1),t.createElementVNode("p",null,t.toDisplayString(s.value)+" has designed your "+t.toDisplayString(n.entityLabel)+t.toDisplayString(n.detectedEntityName?": "+n.detectedEntityName:"")+". Click the button to finalize. ",1)]),t.createElementVNode("button",{class:"btn btn-primary btn-convert",disabled:n.isFinalizing,onClick:b[5]||(b[5]=S=>r("finalize"))},[b[13]||(b[13]=t.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t.createElementVNode("path",{d:"M20 6L9 17l-5-5"})],-1)),t.createTextVNode(" "+t.toDisplayString(n.isFinalizing?"Creating...":n.bannerButtonLabel),1)],8,SN)])):t.createCommentVNode("",!0),n.readOnly?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",TN,[t.createElementVNode("div",bN,[t.createElementVNode("textarea",{value:l.value,onInput:b[6]||(b[6]=S=>f(S)),placeholder:n.inputPlaceholder,disabled:n.isProcessing,onKeydown:b[7]||(b[7]=S=>r("keydown",S)),rows:"1"},null,40,fN),t.createElementVNode("button",{class:"btn-send",disabled:!l.value.trim()||n.isProcessing,onClick:b[8]||(b[8]=S=>r("send"))},[...b[14]||(b[14]=[t.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t.createElementVNode("path",{d:"M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z"})],-1)])],8,RN)])]))]))}}),hN=he(NN,[["__scopeId","data-v-7d947b88"]]),vN={class:"aia-chat-mode-selector",role:"radiogroup","aria-label":"Chat mode"},ON=["aria-checked","title","onClick"],yN=t.defineComponent({__name:"ChatModeSelector",props:{mode:{}},emits:["update:mode"],setup(n,{emit:e}){const a=e,r=[{value:"single",label:"Single",description:"Send to one backend"},{value:"all",label:"All",description:"Send to all backends simultaneously"},{value:"compound",label:"Compound",description:"All backends + AI synthesis"}];return(i,s)=>(t.openBlock(),t.createElementBlock("div",vN,[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(r,o=>t.createElementVNode("button",{key:o.value,type:"button",role:"radio","aria-checked":n.mode===o.value,class:t.normalizeClass(["aia-chat-mode-selector__btn",{"aia-chat-mode-selector__btn--active":n.mode===o.value}]),title:o.description,onClick:l=>a("update:mode",o.value)},t.toDisplayString(o.label),11,ON)),64))]))}}),AN=he(yN,[["__scopeId","data-v-c2599533"]]),IN="0.4.3";exports.AccountEditForm=eE;exports.AccountReauth=cE;exports.AccountWizard=ym;exports.AiChatPanel=qC;exports.AiChatPanelManaged=hN;exports.AiChatSelector=ld;exports.AllModeResponses=bo;exports.BackendPicker=L_;exports.ChatBubble=Wt;exports.ChatControls=id;exports.ChatInput=od;exports.ChatMessage=Xi;exports.ChatModeSelector=AN;exports.ChatPanel=NE;exports.CompoundSynthesis=fo;exports.FinalizationBanner=sd;exports.LoginStream=no;exports.MessageActions=So;exports.OnboardingFlow=Km;exports.ProcessGroup=Ro;exports.forceFreshAccountPrompt=M_;exports.version=IN;
|
|
79
|
+
`)}function d(){!e.allMessages||e.allMessages.length===0||i(l(e.allMessages))}function _(){if(!e.allMessages||e.allMessages.length===0)return;const c=l(e.allMessages),u=new Blob([c],{type:"text/plain;charset=utf-8"}),m=URL.createObjectURL(u),p=document.createElement("a");p.href=m,p.download=`conversation-${new Date().toISOString().slice(0,19).replace(/:/g,"-")}.txt`,document.body.appendChild(p),p.click(),document.body.removeChild(p),URL.revokeObjectURL(m)}return(c,u)=>(t.openBlock(),t.createElementBlock("div",lR,[t.createElementVNode("button",{class:"action-btn action-copy",title:a.value==="success"?"Copied!":a.value==="error"?"Copy failed":"Copy message",onClick:t.withModifiers(s,["stop"])},[n.iconButtons?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[a.value==="success"?(t.openBlock(),t.createElementBlock("svg",_R,[...u[0]||(u[0]=[t.createElementVNode("path",{d:"M20 6L9 17l-5-5"},null,-1)])])):a.value==="error"?(t.openBlock(),t.createElementBlock("svg",dR,[...u[1]||(u[1]=[t.createElementVNode("path",{d:"M18 6L6 18M6 6l12 12"},null,-1)])])):(t.openBlock(),t.createElementBlock("svg",uR,[...u[2]||(u[2]=[t.createElementVNode("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),t.createElementVNode("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"},null,-1)])]))],64)):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[a.value==="idle"?(t.openBlock(),t.createElementBlock("span",pR,"Copy")):a.value==="success"?(t.openBlock(),t.createElementBlock("span",mR,"Copied")):(t.openBlock(),t.createElementBlock("span",ER,"Failed"))],64))],8,cR),n.allMessages?(t.openBlock(),t.createElementBlock("button",{key:0,class:"action-btn action-copy-all",title:"Copy conversation",onClick:t.withModifiers(d,["stop"])},[n.iconButtons?(t.openBlock(),t.createElementBlock("svg",gR,[...u[3]||(u[3]=[t.createElementVNode("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},null,-1),t.createElementVNode("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"},null,-1),t.createElementVNode("line",{x1:"14",y1:"14",x2:"18",y2:"14"},null,-1),t.createElementVNode("line",{x1:"14",y1:"17",x2:"18",y2:"17"},null,-1)])])):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode("Copy All")],64))])):t.createCommentVNode("",!0),n.allMessages?(t.openBlock(),t.createElementBlock("button",{key:1,class:"action-btn action-export",title:"Export conversation",onClick:t.withModifiers(_,["stop"])},[n.iconButtons?(t.openBlock(),t.createElementBlock("svg",SR,[...u[4]||(u[4]=[t.createElementVNode("path",{d:"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4"},null,-1),t.createElementVNode("polyline",{points:"7 10 12 15 17 10"},null,-1),t.createElementVNode("line",{x1:"12",y1:"15",x2:"12",y2:"3"},null,-1)])])):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode("Export")],64))])):t.createCommentVNode("",!0)]))}}),So=he(TR,[["__scopeId","data-v-519341e8"]]),bR={claude:"Claude",claude_custom:"Claude (self-hosted)",codex:"Codex",antigravity:"Antigravity",opencode:"OpenCode",deepseek:"DeepSeek",goose:"Goose",aider:"Aider",crush:"Crush",openai_compat:"OpenAI-compatible",openrouter:"OpenRouter",kimi:"Kimi"};function To(n){return!n||n==="auto"?"":bR[n]??n.charAt(0).toUpperCase()+n.slice(1)}const fR={opus:"Opus",sonnet:"Sonnet",haiku:"Haiku",codex:"Codex",zen:"Zen"};function RR(n){return n?fR[n]??n:""}const CR={class:"aia-bubble__avatar"},NR={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},hR=["d"],vR={class:"aia-bubble__body"},OR={class:"aia-bubble__header"},yR={class:"aia-bubble__role"},AR={key:0,class:"aia-bubble__model"},IR={key:1,class:"aia-bubble__time"},DR=["innerHTML"],MR=t.defineComponent({__name:"ChatBubble",props:{role:{},content:{},backend:{},model:{},timestamp:{},streaming:{type:Boolean,default:!1},showActions:{type:Boolean,default:!1},allMessages:{},avatarPaths:{},assistantName:{},skipTransition:{type:Boolean,default:!1}},setup(n){const e={code({text:_,lang:c}){let u;return c&&zi.getLanguage(c)?u=zi.highlight(_,{language:c}).value:u=zi.highlightAuto(_).value,`<pre><code${c?` class="language-${c}"`:""}>${u}</code></pre>`}};_e.use({renderer:e});const a=n,r=t.computed(()=>sR.sanitize(_e.parse(a.content||""))),i=t.computed(()=>{if(!a.timestamp)return"";const _=new Date(a.timestamp);return Number.isNaN(_.getTime())?"":_.toLocaleTimeString()});function s(_){var m;const c=_.target.closest(".aia-copy-btn");if(!c)return;const u=(m=c.closest(".aia-code-block"))==null?void 0:m.querySelector("code");u&&navigator.clipboard.writeText(u.textContent||"")}const o=t.computed(()=>{var c;if(a.role==="user")return"You";const _=(c=a.assistantName)==null?void 0:c.trim();return _||(a.role==="assistant"?To(a.backend)||"Assistant":a.role)}),l=t.computed(()=>a.role==="user"?"U":a.role==="tool"?"T":a.role==="system"?"S":(o.value.charAt(0)||"A").toUpperCase()),d=t.computed(()=>a.role==="assistant"?RR(a.model):"");return(_,c)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["aia-bubble",[`aia-bubble--${n.role}`,{"aia-bubble--streaming":n.streaming,"aia-bubble--fade-in":!n.skipTransition}]])},[t.createElementVNode("div",CR,[n.avatarPaths&&n.avatarPaths.length>0?(t.openBlock(),t.createElementBlock("svg",NR,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(n.avatarPaths,(u,m)=>(t.openBlock(),t.createElementBlock("path",{key:m,d:u},null,8,hR))),128))])):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode(t.toDisplayString(l.value),1)],64))]),t.createElementVNode("div",vR,[t.createElementVNode("div",OR,[t.createElementVNode("span",yR,t.toDisplayString(o.value),1),d.value?(t.openBlock(),t.createElementBlock("span",AR,t.toDisplayString(d.value),1)):t.createCommentVNode("",!0),i.value?(t.openBlock(),t.createElementBlock("span",IR,t.toDisplayString(i.value),1)):t.createCommentVNode("",!0)]),t.createElementVNode("div",{class:"aia-bubble__content",onClick:s,innerHTML:r.value},null,8,DR)]),n.showActions?(t.openBlock(),t.createBlock(So,t.mergeProps({key:0,content:n.content},n.allMessages!==void 0?{allMessages:n.allMessages}:{}),null,16,["content"])):t.createCommentVNode("",!0)],2))}}),Wt=he(MR,[["__scopeId","data-v-fe84dfc8"]]),LR={class:"aia-controls"},xR={class:"aia-controls__group"},kR=["value"],wR=["value"],PR={class:"aia-controls__group"},BR=["disabled","value"],UR={value:""},FR=["value"],GR={class:"aia-controls__group"},YR=["disabled","value"],VR={value:""},qR=["value"],zR={class:"aia-controls__group aia-controls__group--mode"},HR={class:"aia-controls__modes"},$R=["onClick"],WR=t.defineComponent({__name:"ChatControls",props:{chatMode:{},selectedBackend:{},selectedAccount:{},selectedModel:{},backends:{}},emits:["update:chatMode","update:selectedBackend","update:selectedAccount","update:selectedModel"],setup(n,{emit:e}){const a=n,r=e,i=[{value:"single",label:"Single"},{value:"all",label:"All"},{value:"compound",label:"Compound"}],s=t.computed(()=>!a.selectedBackend),o=t.computed(()=>a.backends.find(_=>_.kind===a.selectedBackend)),l=t.computed(()=>{var _;return((_=o.value)==null?void 0:_.accounts)??[]}),d=t.computed(()=>{var _;return((_=o.value)==null?void 0:_.models)??[]});return(_,c)=>(t.openBlock(),t.createElementBlock("div",LR,[t.createElementVNode("div",xR,[c[4]||(c[4]=t.createElementVNode("label",{class:"aia-controls__label"},"Backend",-1)),t.createElementVNode("select",{class:"aia-controls__select",value:n.selectedBackend??"",onChange:c[0]||(c[0]=u=>r("update:selectedBackend",u.target.value||null))},[c[3]||(c[3]=t.createElementVNode("option",{value:""},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(n.backends,u=>(t.openBlock(),t.createElementBlock("option",{key:u.kind,value:u.kind},t.toDisplayString(u.displayName),9,wR))),128))],40,kR)]),t.createElementVNode("div",PR,[c[5]||(c[5]=t.createElementVNode("label",{class:"aia-controls__label"},"Account",-1)),t.createElementVNode("select",{class:"aia-controls__select",disabled:s.value,value:n.selectedAccount??"",onChange:c[1]||(c[1]=u=>r("update:selectedAccount",u.target.value||null))},[t.createElementVNode("option",UR,t.toDisplayString(s.value?"--":"Default"),1),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.value,u=>(t.openBlock(),t.createElementBlock("option",{key:u.id,value:u.id},t.toDisplayString(u.label),9,FR))),128))],40,BR)]),t.createElementVNode("div",GR,[c[6]||(c[6]=t.createElementVNode("label",{class:"aia-controls__label"},"Model",-1)),t.createElementVNode("select",{class:"aia-controls__select",disabled:s.value,value:n.selectedModel??"",onChange:c[2]||(c[2]=u=>r("update:selectedModel",u.target.value||null))},[t.createElementVNode("option",VR,t.toDisplayString(s.value?"--":"Default"),1),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(d.value,u=>(t.openBlock(),t.createElementBlock("option",{key:u,value:u},t.toDisplayString(u),9,qR))),128))],40,YR)]),t.createElementVNode("div",zR,[c[7]||(c[7]=t.createElementVNode("label",{class:"aia-controls__label"},"Mode",-1)),t.createElementVNode("div",HR,[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(i,u=>t.createElementVNode("button",{key:u.value,class:t.normalizeClass(["aia-controls__mode-btn",{"aia-controls__mode-btn--active":n.chatMode===u.value}]),onClick:m=>r("update:chatMode",u.value)},t.toDisplayString(u.label),11,$R)),64))])])]))}}),id=he(WR,[["__scopeId","data-v-a9f4b1df"]]),KR={class:"aia-input"},QR=["placeholder","disabled"],XR=["disabled"],ZR=t.defineComponent({__name:"ChatInput",props:{placeholder:{default:"Type a message..."},disabled:{type:Boolean},isStreaming:{type:Boolean}},emits:["send"],setup(n,{emit:e}){const a=n,r=e,i=t.ref(""),s=t.ref(null);function o(){const _=i.value.trim();!_||a.disabled||a.isStreaming||(r("send",_),i.value="",t.nextTick(d))}function l(_){_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),o())}function d(){const _=s.value;_&&(_.style.height="auto",_.style.height=Math.min(_.scrollHeight,120)+"px")}return t.watch(i,()=>t.nextTick(d)),(_,c)=>(t.openBlock(),t.createElementBlock("div",KR,[t.withDirectives(t.createElementVNode("textarea",{ref_key:"textareaRef",ref:s,"onUpdate:modelValue":c[0]||(c[0]=u=>i.value=u),class:"aia-input__textarea",placeholder:n.placeholder,rows:"1",disabled:n.disabled||n.isStreaming,onKeydown:l,onInput:d},null,40,QR),[[t.vModelText,i.value]]),t.createElementVNode("button",{class:"aia-input__send",disabled:!i.value.trim()||n.disabled||n.isStreaming,onClick:o},t.toDisplayString(n.isStreaming?"...":"Send"),9,XR)]))}}),od=he(ZR,[["__scopeId","data-v-51976e76"]]),JR={class:"aia-responses"},jR={class:"aia-responses__summary-count"},eC=["open"],tC={class:"aia-resp__header"},nC={key:0,class:"aia-resp__account"},aC=["innerHTML"],rC={key:1,class:"aia-resp__error",role:"alert"},iC={key:0,class:"aia-resp__error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",width:"16",height:"16","aria-hidden":"true"},oC={key:1,class:"aia-resp__error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",width:"16",height:"16","aria-hidden":"true"},sC={class:"aia-resp__error-text"},lC={class:"aia-resp__error-title"},cC={key:0,class:"aia-resp__error-hint"},_C={class:"aia-resp__error-detail"},dC=t.defineComponent({__name:"AllModeResponses",props:{responses:{},collapsible:{type:Boolean,default:!1},summaryHeader:{type:Boolean,default:!1},waitingPlaceholder:{default:null}},setup(n){const e=n,a={claude:{bg:"rgba(139,92,246,0.15)",fg:"#a78bfa",label:"Claude"},claude_custom:{bg:"rgba(192,132,252,0.15)",fg:"#c084fc",label:"Claude (self-hosted)"},codex:{bg:"rgba(16,185,129,0.15)",fg:"#34d399",label:"Codex"},antigravity:{bg:"rgba(96,165,250,0.15)",fg:"#60a5fa",label:"Antigravity"},opencode:{bg:"rgba(251,191,36,0.15)",fg:"#fbbf24",label:"OpenCode"},deepseek:{bg:"rgba(59,130,246,0.15)",fg:"#3b82f6",label:"DeepSeek"},goose:{bg:"rgba(249,115,22,0.15)",fg:"#f97316",label:"Goose"},aider:{bg:"rgba(20,184,166,0.15)",fg:"#14b8a6",label:"Aider"},crush:{bg:"rgba(239,68,68,0.15)",fg:"#ef4444",label:"Crush"},openai_compat:{bg:"rgba(34,211,238,0.15)",fg:"#22d3ee",label:"OpenAI-compatible"},openrouter:{bg:"rgba(129,140,248,0.15)",fg:"#818cf8",label:"OpenRouter"},kimi:{bg:"rgba(232,121,249,0.15)",fg:"#e879f9",label:"Kimi"}};function r(m){return m?a[m]??{bg:"rgba(161,161,170,0.15)",fg:"#a1a1aa",label:m}:{bg:"rgba(161,161,170,0.15)",fg:"#a1a1aa",label:"Backend"}}function i(m){switch(m){case"streaming":return{text:"Streaming",cls:"aia-resp__badge--streaming"};case"complete":return{text:"Done",cls:"aia-resp__badge--complete"};case"error":return{text:"Error",cls:"aia-resp__badge--error"};case"timeout":return{text:"Timeout",cls:"aia-resp__badge--timeout"};default:return{text:m,cls:""}}}function s(m){const p=m||"";if(/^no models available/i.test(p))return{title:"No models available",hint:"CLIProxyAPI advertises zero models for this backend. Make sure cliproxyapi is running and this backend’s account is registered."};if(/^could not enumerate models/i.test(p))return{title:"Could not list models",hint:"Failed to fetch the model list for this backend."};if(/^no account available/i.test(p))return{title:"No account available",hint:"No ready account is registered for this backend kind."};const E=p.match(/'([^']+)' (?:model )?is not supported when using (\w+) with a ([^']+?) account/i);return E?{title:`${E[1]} not available`,hint:`Your ${E[2]} account is authenticated via ${E[3]}, which doesn't expose this model. Switch to an API-key login or pick a different model.`}:/^Proxy error/i.test(p)?{title:"Upstream proxy error",hint:null}:/timed?\s*out/i.test(p)?{title:"Backend timed out",hint:null}:{title:"Backend error",hint:null}}const o=t.computed(()=>Array.from(e.responses.entries()));function l(m){return _e.parse(m||"")}const d=t.ref(!1),_=t.computed(()=>{const m=o.value.length,p=o.value.filter(([,T])=>T.status==="complete").length;return m-p>0?`${p}/${m} backends responded`:`${m} backend responses`});t.watch(()=>e.summaryHeader,m=>{m||(d.value=!1)});function c(m){return(m.status==="error"||m.status==="timeout")&&!m.content?!1:(e.waitingPlaceholder&&m.status==="streaming"&&!m.content,!0)}function u(m){return!m.content&&e.waitingPlaceholder&&m.status==="streaming"?`<em class="aia-resp__waiting">${e.waitingPlaceholder}</em>`:l(m.content)}return(m,p)=>(t.openBlock(),t.createElementBlock("div",JR,[n.summaryHeader&&o.value.length>0?(t.openBlock(),t.createElementBlock("button",{key:0,class:"aia-responses__summary",onClick:p[0]||(p[0]=E=>d.value=!d.value)},[(t.openBlock(),t.createElementBlock("svg",{class:t.normalizeClass(["aia-responses__summary-chevron",{"is-open":d.value}]),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14","aria-hidden":"true"},[...p[1]||(p[1]=[t.createElementVNode("polyline",{points:"9 18 15 12 9 6"},null,-1)])],2)),p[2]||(p[2]=t.createElementVNode("span",{class:"aia-responses__summary-label"},"Individual Responses",-1)),t.createElementVNode("span",jR,t.toDisplayString(_.value),1)])):t.createCommentVNode("",!0),!n.summaryHeader||d.value?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(o.value,([E,T])=>(t.openBlock(),t.createElementBlock("div",{key:E,class:t.normalizeClass(["aia-resp",{"aia-resp--error":T.status==="error","aia-resp--timeout":T.status==="timeout"}]),style:t.normalizeStyle({"--resp-bg":r(T.backendKind).bg,"--resp-fg":r(T.backendKind).fg})},[t.createElementVNode("details",{open:!n.collapsible||void 0},[t.createElementVNode("summary",tC,[t.createElementVNode("span",{class:"aia-resp__name",style:t.normalizeStyle({color:r(T.backendKind).fg})},t.toDisplayString(r(T.backendKind).label),5),T.accountLabel?(t.openBlock(),t.createElementBlock("span",nC,t.toDisplayString(T.accountLabel),1)):t.createCommentVNode("",!0),t.createElementVNode("span",{class:t.normalizeClass(["aia-resp__badge",i(T.status).cls])},t.toDisplayString(i(T.status).text),3)]),c(T)?(t.openBlock(),t.createElementBlock("div",{key:0,class:"aia-resp__body",innerHTML:u(T)},null,8,aC)):t.createCommentVNode("",!0),T.error?(t.openBlock(),t.createElementBlock("div",rC,[T.status==="timeout"?(t.openBlock(),t.createElementBlock("svg",iC,[...p[3]||(p[3]=[t.createElementVNode("circle",{cx:"12",cy:"12",r:"9"},null,-1),t.createElementVNode("polyline",{points:"12 7 12 12 15 14"},null,-1)])])):(t.openBlock(),t.createElementBlock("svg",oC,[...p[4]||(p[4]=[t.createElementVNode("path",{d:"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z"},null,-1),t.createElementVNode("line",{x1:"12",y1:"9",x2:"12",y2:"13"},null,-1),t.createElementVNode("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"},null,-1)])])),t.createElementVNode("div",sC,[t.createElementVNode("strong",lC,t.toDisplayString(s(T.error).title),1),s(T.error).hint?(t.openBlock(),t.createElementBlock("p",cC,t.toDisplayString(s(T.error).hint),1)):t.createCommentVNode("",!0),t.createElementVNode("code",_C,t.toDisplayString(T.error),1)])])):t.createCommentVNode("",!0)],8,eC)],6))),128)):t.createCommentVNode("",!0)]))}}),bo=he(dC,[["__scopeId","data-v-579cd1f6"]]),uC={class:"aia-synth__header"},pC={key:0,class:"aia-synth__sparkle","aria-hidden":"true"},mC={key:1,class:"aia-synth__via"},EC={key:0,class:"aia-synth__sources"},gC={key:1,class:"aia-synth__placeholder"},SC=["innerHTML"],TC={key:3,class:"aia-synth__error"},bC=t.defineComponent({__name:"CompoundSynthesis",props:{state:{},sparkleIcon:{type:Boolean,default:!1},loadingPlaceholders:{type:Boolean,default:!1}},setup(n){const e=n,a=t.computed(()=>_e.parse(e.state.content||"")),r=t.computed(()=>e.state.status==="streaming"),i=t.computed(()=>!!(e.state.content&&e.state.content.length>0)),s=t.computed(()=>e.loadingPlaceholders&&!i.value&&(e.state.status==="streaming"||e.state.status==="waiting")),o=t.computed(()=>e.state.status==="streaming"?"Generating synthesis...":"Waiting for backend responses...");function l(d){switch(d){case"waiting":return{text:"Waiting...",cls:"aia-synth__badge--waiting"};case"streaming":return{text:"Synthesizing",cls:"aia-synth__badge--streaming"};case"complete":return{text:"Complete",cls:"aia-synth__badge--complete"};case"error":return{text:"Error",cls:"aia-synth__badge--error"};default:return{text:d,cls:""}}}return(d,_)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["aia-synth",{"aia-synth--streaming":r.value}])},[t.createElementVNode("div",uC,[n.sparkleIcon?(t.openBlock(),t.createElementBlock("span",pC,"✨")):t.createCommentVNode("",!0),_[0]||(_[0]=t.createElementVNode("span",{class:"aia-synth__label"},"Compound Synthesis",-1)),n.state.primaryBackend?(t.openBlock(),t.createElementBlock("span",mC,"via "+t.toDisplayString(n.state.primaryBackend),1)):t.createCommentVNode("",!0),t.createElementVNode("span",{class:t.normalizeClass(["aia-synth__badge",l(n.state.status).cls])},t.toDisplayString(l(n.state.status).text),3)]),n.state.backendsCollected.length?(t.openBlock(),t.createElementBlock("div",EC," Sources: "+t.toDisplayString(n.state.backendsCollected.join(", ")),1)):t.createCommentVNode("",!0),s.value?(t.openBlock(),t.createElementBlock("div",gC,t.toDisplayString(o.value),1)):(t.openBlock(),t.createElementBlock("div",{key:2,class:"aia-synth__content",innerHTML:a.value},null,8,SC)),n.state.error?(t.openBlock(),t.createElementBlock("div",TC,t.toDisplayString(n.state.error),1)):t.createCommentVNode("",!0)],2))}}),fo=he(bC,[["__scopeId","data-v-93a21588"]]),fC={class:"finalization-banner"},RC={class:"banner-content"},CC={class:"banner-title"},NC={class:"banner-description"},hC=["disabled"],vC=t.defineComponent({__name:"FinalizationBanner",props:{title:{},buttonLabel:{},entityLabel:{},entityName:{},isFinalizing:{type:Boolean,default:!1}},emits:["finalize"],setup(n,{emit:e}){const a=e;return(r,i)=>(t.openBlock(),t.createElementBlock("div",fC,[t.createElementVNode("div",RC,[t.createElementVNode("h3",CC,t.toDisplayString(n.title),1),t.createElementVNode("p",NC," Your "+t.toDisplayString(n.entityLabel)+t.toDisplayString(n.entityName?": "+n.entityName:"")+" is ready. Click the button to finalize. ",1)]),t.createElementVNode("button",{class:"banner-button",disabled:n.isFinalizing,onClick:i[0]||(i[0]=s=>a("finalize"))},t.toDisplayString(n.isFinalizing?"Creating...":n.buttonLabel),9,hC)]))}}),sd=he(vC,[["__scopeId","data-v-bde99def"]]),OC={key:0,class:"process-group-badge-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},yC={key:1,class:"process-group-badge-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},AC={key:2,class:"process-group-badge-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},IC={class:"process-group-label"},DC={key:0,class:"process-group-time"},MC={class:"process-group-chevron"},LC={key:0,class:"process-group-body"},xC=t.defineComponent({__name:"ProcessGroup",props:{id:{},type:{},label:{},timestamp:{},isExpanded:{type:Boolean,default:!0},autoCollapseMs:{default:0},iconBadges:{type:Boolean,default:!1}},emits:["toggle"],setup(n,{emit:e}){const a=n,r=e,i={tool_call:"Tool",reasoning:"Thinking",code_execution:"Code"},s={tool_call:"var(--aia-cyan, #22d3ee)",reasoning:"var(--aia-violet, #a78bfa)",code_execution:"var(--aia-amber, #fbbf24)"};function o(p){if(!p)return"";const E=new Date(p);return Number.isNaN(E.getTime())?"":E.toLocaleTimeString()}const l=t.ref(!1);let d=null;function _(){d!==null&&(clearTimeout(d),d=null)}function c(){_(),a.autoCollapseMs>0&&!l.value&&a.isExpanded&&(d=setTimeout(()=>{a.isExpanded&&r("toggle")},a.autoCollapseMs))}function u(){l.value=!0,_()}function m(){l.value=!1,c()}return t.onMounted(()=>{c()}),t.onUnmounted(()=>{_()}),t.watch(()=>a.isExpanded,p=>{p?c():_()}),(p,E)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["process-group",[`process-group--${n.type}`]]),onMouseenter:u,onMouseleave:m},[t.createElementVNode("div",{class:"process-group-header",onClick:E[0]||(E[0]=T=>r("toggle"))},[t.createElementVNode("span",{class:t.normalizeClass(["process-group-badge",[`process-group-badge--${n.type}`,{"process-group-badge--with-icon":n.iconBadges}]]),style:t.normalizeStyle({background:s[n.type]})},[n.iconBadges&&n.type==="tool_call"?(t.openBlock(),t.createElementBlock("svg",OC,[...E[1]||(E[1]=[t.createElementVNode("path",{d:"M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"},null,-1)])])):n.iconBadges&&n.type==="reasoning"?(t.openBlock(),t.createElementBlock("svg",yC,[...E[2]||(E[2]=[t.createElementVNode("path",{d:"M12 2a8 8 0 018 8c0 3-2 5.5-4 7l-1 4H9l-1-4c-2-1.5-4-4-4-7a8 8 0 018-8z"},null,-1),t.createElementVNode("path",{d:"M9 21h6M10 17h4"},null,-1)])])):n.iconBadges&&n.type==="code_execution"?(t.openBlock(),t.createElementBlock("svg",AC,[...E[3]||(E[3]=[t.createElementVNode("polyline",{points:"4 17 10 11 4 5"},null,-1),t.createElementVNode("line",{x1:"12",y1:"19",x2:"20",y2:"19"},null,-1)])])):t.createCommentVNode("",!0),t.createTextVNode(" "+t.toDisplayString(i[n.type]),1)],6),t.createElementVNode("span",IC,t.toDisplayString(n.label),1),n.timestamp&&o(n.timestamp)?(t.openBlock(),t.createElementBlock("span",DC,t.toDisplayString(o(n.timestamp)),1)):t.createCommentVNode("",!0),t.createElementVNode("span",MC,t.toDisplayString(n.isExpanded?"▼":"▶"),1)]),n.isExpanded?(t.openBlock(),t.createElementBlock("div",LC,[t.renderSlot(p.$slots,"default",{},void 0,!0)])):t.createCommentVNode("",!0)],34))}}),Ro=he(xC,[["__scopeId","data-v-c351adfa"]]),kC={class:"aia-smart-panel"},wC={ref:"scroll.containerRef",class:"aia-smart-panel__messages"},PC={key:0,class:"aia-smart-panel__welcome"},BC={class:"aia-smart-panel__welcome-icon"},UC={class:"aia-smart-panel__welcome-title"},FC={class:"aia-smart-panel__welcome-sub"},GC={key:4,class:"process-groups"},YC={key:2,class:"aia-smart-panel__error"},VC=t.defineComponent({__name:"AiChatPanel",props:{density:{default:"minimal"},defaultBackend:{},defaultModel:{},placeholder:{default:"Type a message..."},welcomeTitle:{default:"AI Chat"},welcomeSubtitle:{default:"Send a message to get started"},readOnly:{type:Boolean},entityLabel:{},bannerTitle:{},bannerButtonLabel:{},configParser:{},showProcessGroups:{type:Boolean,default:void 0},showActions:{type:Boolean,default:void 0}},emits:["finalize"],setup(n,{emit:e}){const a=n,r=t.computed(()=>a.showProcessGroups??a.density==="detailed"),i=t.computed(()=>a.showActions??a.density==="detailed"),s=e,o=et.useSmartChat(),l=et.useSmartScroll(),{client:d}=et.useAiAccounts(),_=t.computed(()=>(To(o.selectedBackend.value)||"Assistant").charAt(0).toUpperCase()),c=t.ref([]),u=t.ref({}),m=t.computed(()=>Array.from(new Set(c.value.map(N=>N.kind))).map(N=>{const b=c.value.filter(S=>S.kind===N);return{kind:N,displayName:N,accounts:b.map(S=>({id:S.id,label:S.display_name||S.id})),models:u.value[N]??[]}}));async function p(N){if(!u.value[N.kind])try{const{items:b}=await d.listModels(N.id);u.value={...u.value,[N.kind]:b.map(S=>S.id)}}catch{}}async function E(){if(await Promise.all(c.value.filter(N=>N.status==="ready").map(p)),!o.selectedModel.value){for(const N of m.value)if(N.models.length>0){o.selectedModel.value=N.models[0],o.selectedBackend.value||(o.selectedBackend.value=N.kind);break}}}t.watchEffect(()=>{o.setConfigParser(a.configParser??null)}),t.onMounted(async()=>{try{const N=await d.listBackends();c.value=N.items??[],await E()}catch{}}),t.watch(()=>[o.selectedBackend.value,o.selectedAccount.value],([N,b],[S,v])=>{o.sessionId.value&&(N!==S||b!==v)&&o.resetSession()});function T(N,b=null){if(b){const v=c.value.find(A=>A.id===b);if(v)return v}const S=N?c.value.filter(v=>v.kind===N):c.value;return S.find(v=>v.status==="ready")??S[0]??null}async function f(N){if(!o.sessionId.value){if(c.value.length===0)try{const B=await d.listBackends();c.value=B.items??[],await E()}catch{o.error.value="Unable to load backends from sidecar";return}const b=o.selectedBackend.value??a.defaultBackend??null,S=o.selectedAccount.value,v=T(b,S);if(!v){o.error.value="No backend available — add an account first";return}let A=o.selectedModel.value??a.defaultModel??"";if(!A){await p(v);const B=u.value[v.kind]??[];B.length>0&&(A=B[0],o.selectedModel.value=A)}if(!A){o.error.value=`No models available for ${v.kind}`;return}try{await o.createSession(v.id,A)}catch(B){o.error.value=B instanceof Error?B.message:String(B);return}}await o.send(N)}async function O(){const N=await o.finalize();s("finalize",N)}return(N,b)=>(t.openBlock(),t.createElementBlock("div",kC,[n.density==="detailed"?(t.openBlock(),t.createBlock(id,{key:0,"chat-mode":t.unref(o).chatMode.value,"selected-backend":t.unref(o).selectedBackend.value,"selected-account":t.unref(o).selectedAccount.value,"selected-model":t.unref(o).selectedModel.value,backends:m.value,"onUpdate:chatMode":t.unref(o).setMode,"onUpdate:selectedBackend":t.unref(o).selectBackend,"onUpdate:selectedAccount":b[0]||(b[0]=S=>t.unref(o).selectedAccount.value=S),"onUpdate:selectedModel":b[1]||(b[1]=S=>t.unref(o).selectedModel.value=S)},null,8,["chat-mode","selected-backend","selected-account","selected-model","backends","onUpdate:chatMode","onUpdate:selectedBackend"])):t.createCommentVNode("",!0),t.createElementVNode("div",wC,[t.unref(o).messages.value.length===0&&!t.unref(o).isStreaming.value?(t.openBlock(),t.createElementBlock("div",PC,[t.createElementVNode("div",BC,t.toDisplayString(_.value),1),t.createElementVNode("h3",UC,t.toDisplayString(n.welcomeTitle),1),t.createElementVNode("p",FC,t.toDisplayString(n.welcomeSubtitle),1)])):t.createCommentVNode("",!0),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(o).messages.value,S=>(t.openBlock(),t.createBlock(Wt,{key:S.id,role:S.role,content:S.content,timestamp:S.created_at,backend:t.unref(o).selectedBackend.value,model:S.model??t.unref(o).selectedModel.value,"show-actions":i.value,"all-messages":t.unref(o).messages.value},null,8,["role","content","timestamp","backend","model","show-actions","all-messages"]))),128)),t.unref(o).isStreaming.value&&t.unref(o).chatMode.value==="single"&&t.unref(o).streamingContent.value?(t.openBlock(),t.createBlock(Wt,{key:1,role:"assistant",content:t.unref(o).streamingContent.value,backend:t.unref(o).selectedBackend.value,model:t.unref(o).selectedModel.value,streaming:!0},null,8,["content","backend","model"])):t.createCommentVNode("",!0),t.unref(o).backendResponses.value.size>0?(t.openBlock(),t.createBlock(bo,{key:2,responses:t.unref(o).backendResponses.value,collapsible:t.unref(o).chatMode.value==="compound"},null,8,["responses","collapsible"])):t.createCommentVNode("",!0),t.unref(o).synthesisState.value?(t.openBlock(),t.createBlock(fo,{key:3,state:t.unref(o).synthesisState.value},null,8,["state"])):t.createCommentVNode("",!0),r.value&&t.unref(o).processGroups.groups.value.size>0?(t.openBlock(),t.createElementBlock("div",GC,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(o).processGroups.groups.value,([S,v])=>(t.openBlock(),t.createBlock(Ro,{key:S,id:v.id,type:v.type,label:v.label,timestamp:v.timestamp,"is-expanded":v.isExpanded,onToggle:A=>t.unref(o).processGroups.toggleGroup(S)},{default:t.withCtx(()=>[t.createElementVNode("pre",null,t.toDisplayString(v.content),1)]),_:2},1032,["id","type","label","timestamp","is-expanded","onToggle"]))),128))])):t.createCommentVNode("",!0),N.$slots.finalization?t.renderSlot(N.$slots,"finalization",{key:5,state:{canFinalize:t.unref(o).canFinalize,isFinalizing:t.unref(o).isFinalizing}},void 0,!0):t.unref(o).canFinalize.value&&n.entityLabel?(t.openBlock(),t.createBlock(sd,{key:6,title:n.bannerTitle??"Ready to finalize","button-label":n.bannerButtonLabel??"Finalize","entity-label":n.entityLabel,"is-finalizing":t.unref(o).isFinalizing.value,onFinalize:O},null,8,["title","button-label","entity-label","is-finalizing"])):t.createCommentVNode("",!0),b[3]||(b[3]=t.createElementVNode("div",{class:"aia-smart-panel__anchor"},null,-1))],512),t.unref(l).showScrollButton.value?(t.openBlock(),t.createElementBlock("button",{key:1,class:"aia-smart-panel__scroll-btn",onClick:b[2]||(b[2]=(...S)=>t.unref(l).scrollToBottom&&t.unref(l).scrollToBottom(...S))}," ↓ ")):t.createCommentVNode("",!0),t.unref(o).error.value?(t.openBlock(),t.createElementBlock("div",YC,t.toDisplayString(t.unref(o).error.value),1)):t.createCommentVNode("",!0),n.readOnly?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(od,{key:3,placeholder:n.placeholder,"is-streaming":t.unref(o).isStreaming.value,onSend:f},null,8,["placeholder","is-streaming"]))]))}}),qC=he(VC,[["__scopeId","data-v-4cb169c3"]]),zC={class:"aia-chat-selector"},HC={class:"aia-chat-selector__group"},$C=["value","disabled"],WC=["value"],KC={class:"aia-chat-selector__group"},QC=["value","disabled"],XC=["value"],ZC={class:"aia-chat-selector__group"},JC=["value","disabled"],jC=["value"],eN={key:0,class:"aia-chat-selector__group aia-chat-selector__mode-group"},tN=["value","checked","onChange"],nN=t.defineComponent({__name:"AiChatSelector",props:{backend:{},accountId:{},model:{},chatMode:{}},emits:["update:backend","update:accountId","update:model","update:chatMode"],setup(n,{emit:e}){const a=n,r=e,i=[{value:"single",label:"Single"},{value:"all",label:"All"},{value:"compound",label:"Compound"}],{client:s}=et.useAiAccounts(),o=t.ref([]),l=t.ref({}),d=t.ref(!0),_=t.computed(()=>{const b=new Map;for(const S of o.value)b.has(S.kind)||b.set(S.kind,{kind:S.kind,label:c(S)});return Array.from(b.values())});function c(b){return{claude:"Claude",claude_custom:"Claude (self-hosted)",codex:"Codex",antigravity:"Antigravity",opencode:"OpenCode",deepseek:"DeepSeek",goose:"Goose",aider:"Aider",crush:"Crush",openai_compat:"OpenAI-compatible",openrouter:"OpenRouter",kimi:"Kimi"}[b.kind]??b.kind}const u=t.computed(()=>a.backend==="auto"?[]:o.value.filter(b=>b.kind===a.backend)),m=t.computed(()=>u.value.map(b=>({id:b.id,label:b.display_name||b.id}))),p=t.computed(()=>l.value[a.backend]??[]),E=t.computed(()=>a.backend==="auto");async function T(b){if(l.value[b])return;const S=o.value.find(v=>v.kind===b);if(S)try{const{items:v}=await s.listModels(S.id);l.value={...l.value,[b]:v.map(A=>A.id)}}catch{}}t.onMounted(async()=>{try{const b=await s.listBackends();o.value=b.items??[],a.backend&&a.backend!=="auto"&&await T(a.backend)}catch{}finally{d.value=!1}}),t.watch(()=>a.backend,b=>{r("update:accountId",null),r("update:model",null),b&&b!=="auto"&&T(b)});function f(b){const S=b.target.value;r("update:backend",S),S!=="auto"&&a.chatMode&&a.chatMode!=="single"&&r("update:chatMode","single")}function O(b){const S=b.target.value;r("update:accountId",S||null)}function N(b){const S=b.target.value;r("update:model",S||null)}return(b,S)=>(t.openBlock(),t.createElementBlock("div",zC,[t.createElementVNode("div",HC,[S[1]||(S[1]=t.createElementVNode("label",{class:"aia-chat-selector__label"},"Backend:",-1)),t.createElementVNode("select",{class:"aia-chat-selector__select aia-chat-selector__select--backend",value:n.backend,disabled:d.value,onChange:f},[S[0]||(S[0]=t.createElementVNode("option",{value:"auto"},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(_.value,v=>(t.openBlock(),t.createElementBlock("option",{key:v.kind,value:v.kind},t.toDisplayString(v.label),9,WC))),128))],40,$C)]),t.createElementVNode("div",KC,[S[3]||(S[3]=t.createElementVNode("label",{class:"aia-chat-selector__label"},"Account:",-1)),t.createElementVNode("select",{class:"aia-chat-selector__select aia-chat-selector__select--account",value:n.accountId||"",disabled:E.value||m.value.length===0,onChange:O},[S[2]||(S[2]=t.createElementVNode("option",{value:""},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.value,v=>(t.openBlock(),t.createElementBlock("option",{key:v.id,value:v.id},t.toDisplayString(v.label),9,XC))),128))],40,QC)]),t.createElementVNode("div",ZC,[S[5]||(S[5]=t.createElementVNode("label",{class:"aia-chat-selector__label"},"Model:",-1)),t.createElementVNode("select",{class:"aia-chat-selector__select aia-chat-selector__select--model",value:n.model||"",disabled:E.value||p.value.length===0,onChange:N},[S[4]||(S[4]=t.createElementVNode("option",{value:""},"Auto",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(p.value,v=>(t.openBlock(),t.createElementBlock("option",{key:v,value:v},t.toDisplayString(v),9,jC))),128))],40,JC)]),n.chatMode?(t.openBlock(),t.createElementBlock("div",eN,[S[6]||(S[6]=t.createElementVNode("span",{class:"aia-chat-selector__mode-separator","aria-hidden":"true"},null,-1)),(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(i,v=>t.createElementVNode("label",{key:v.value,class:t.normalizeClass(["aia-chat-selector__mode-radio",{"aia-chat-selector__mode-radio--active":n.chatMode===v.value}])},[t.createElementVNode("input",{type:"radio",name:"aia-chat-selector-mode",value:v.value,checked:n.chatMode===v.value,onChange:A=>r("update:chatMode",v.value)},null,40,tN),t.createTextVNode(" "+t.toDisplayString(v.label),1)],2)),64))])):t.createCommentVNode("",!0),t.renderSlot(b.$slots,"trailing",{},void 0,!0)]))}}),ld=he(nN,[["__scopeId","data-v-3ed1dc93"]]),aN={class:"chat-panel"},rN={key:1,class:"cli-runner-toggle"},iN=["aria-pressed","title"],oN={class:"cli-runner-toggle__label"},sN={key:0,class:"chat-welcome"},lN={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},cN=["d"],_N={class:"process-group-content"},dN={key:4,class:"processing-indicator"},uN={key:2,class:"convert-banner"},pN={class:"banner-icon"},mN={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},EN=["d"],gN={class:"banner-content"},SN=["disabled"],TN={key:3,class:"input-area"},bN={class:"input-wrapper"},fN=["value","placeholder","disabled"],RN=["disabled"],CN=32,NN=t.defineComponent({__name:"AiChatPanelManaged",props:{messages:{default:()=>[]},isProcessing:{type:Boolean,default:!1},streamingContent:{default:""},inputMessage:{default:""},conversationId:{default:null},canFinalize:{type:Boolean,default:!1},isFinalizing:{type:Boolean,default:!1},assistantIconPaths:{default:()=>[]},inputPlaceholder:{default:"Type a message..."},entityLabel:{default:""},bannerTitle:{default:""},bannerButtonLabel:{default:""},detectedEntityName:{default:""},showBackendSelector:{type:Boolean,default:!1},selectedBackend:{default:"auto"},selectedAccountId:{default:null},selectedModel:{default:null},readOnly:{type:Boolean,default:!1},useSmartScroll:{type:Boolean,default:!1},processGroups:{},chatMode:{default:"single"},backendResponses:{},synthesisState:{default:null},isAllModeActive:{type:Boolean,default:!1},useCliRunner:{type:Boolean,default:!1},hideCliRunnerToggle:{type:Boolean,default:!1}},emits:["update:inputMessage","send","keydown","finalize","update:selectedBackend","update:selectedAccountId","update:selectedModel","update:chatMode","update:useCliRunner"],setup(n,{emit:e}){const a=n,r=e,i=t.ref(null),s=t.computed(()=>To(a.selectedBackend)||"Assistant"),o=t.computed(()=>a.messages??[]),l=t.computed(()=>a.inputMessage??""),d=t.computed(()=>a.assistantIconPaths??[]),_=t.computed(()=>o.value.map(N=>{const b={role:N.role,content:N.content};return N.timestamp&&(b.timestamp=N.timestamp),b})),c=t.ref(!0);function u(){const N=i.value;return N?N.scrollHeight-N.scrollTop-N.clientHeight<=CN:!0}function m(){a.useSmartScroll&&(c.value=u())}function p(){t.nextTick(()=>{if(i.value){if(a.useSmartScroll&&!c.value)return;i.value.scrollTop=i.value.scrollHeight}})}function E(){c.value=!0,t.nextTick(()=>{i.value&&i.value.scrollTo({top:i.value.scrollHeight,behavior:"instant"})})}const T=t.computed(()=>a.useSmartScroll&&!c.value);t.watch(()=>o.value.length,p),t.watch(()=>a.streamingContent,p),t.watch(()=>a.isProcessing,N=>{N&&p()}),t.watch(()=>{if(!a.backendResponses)return 0;let N=0;for(const b of a.backendResponses.values())N+=b.content.length;return N},p),t.watch(()=>{var N,b;return((b=(N=a.synthesisState)==null?void 0:N.content)==null?void 0:b.length)??0},p);function f(N){const b=N.target;r("update:inputMessage",b.value),b.style.height="auto",b.style.height=Math.min(b.scrollHeight,120)+"px"}const O=t.computed(()=>a.processGroups?Array.from(a.processGroups.entries()):[]);return(N,b)=>(t.openBlock(),t.createElementBlock("div",aN,[n.showBackendSelector?(t.openBlock(),t.createBlock(ld,{key:0,backend:n.selectedBackend??"auto","account-id":n.selectedAccountId??null,model:n.selectedModel??null,"chat-mode":n.chatMode??"single","onUpdate:backend":b[0]||(b[0]=S=>r("update:selectedBackend",S)),"onUpdate:accountId":b[1]||(b[1]=S=>r("update:selectedAccountId",S)),"onUpdate:model":b[2]||(b[2]=S=>r("update:selectedModel",S)),"onUpdate:chatMode":b[3]||(b[3]=S=>r("update:chatMode",S))},{trailing:t.withCtx(()=>[t.renderSlot(N.$slots,"selector-trailing",{},void 0,!0)]),_:3},8,["backend","account-id","model","chat-mode"])):t.createCommentVNode("",!0),t.renderSlot(N.$slots,"header-extra",{},void 0,!0),n.hideCliRunnerToggle?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",rN,[t.createElementVNode("button",{type:"button",class:t.normalizeClass(["cli-runner-toggle__btn",{"cli-runner-toggle__btn--active":n.useCliRunner}]),"aria-pressed":n.useCliRunner?"true":"false",title:n.useCliRunner?"CLI runner mode — agent uses tools (filesystem, shell, edits) in the project worktree":"CLIProxy mode — pure token chat, no tool use",onClick:b[4]||(b[4]=S=>r("update:useCliRunner",!n.useCliRunner))},[b[9]||(b[9]=t.createElementVNode("span",{class:"cli-runner-toggle__dot"},null,-1)),t.createElementVNode("span",oN,t.toDisplayString(n.useCliRunner?"CLI runner":"CLIProxy"),1)],10,iN)])),t.createElementVNode("div",{class:"chat-container",ref_key:"chatContainer",ref:i,onScroll:m},[t.renderSlot(N.$slots,"welcome",{},()=>[o.value.length===0&&!n.isProcessing?(t.openBlock(),t.createElementBlock("div",sN,[t.createElementVNode("div",{class:t.normalizeClass(["welcome-icon",{connecting:!n.conversationId}])},[(t.openBlock(),t.createElementBlock("svg",lN,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(d.value,(S,v)=>(t.openBlock(),t.createElementBlock("path",{key:v,d:S},null,8,cN))),128))]))],2),t.createElementVNode("h2",null,t.toDisplayString(n.conversationId?"Ready to chat":`Connecting to ${s.value}...`),1),t.createElementVNode("p",null,t.toDisplayString(s.value)+" will guide you through designing your "+t.toDisplayString(n.entityLabel),1)])):t.createCommentVNode("",!0)],!0),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.value,(S,v)=>(t.openBlock(),t.createElementBlock("div",{key:v,class:t.normalizeClass(["message-wrapper",S.role])},[t.createVNode(Wt,{role:S.role,content:S.content,timestamp:S.timestamp??null,backend:S.backend??null,model:S.model??null,"avatar-paths":d.value,"skip-transition":o.value.length>10&&v<o.value.length-5},null,8,["role","content","timestamp","backend","model","avatar-paths","skip-transition"]),!n.isProcessing||v<o.value.length-1?(t.openBlock(),t.createBlock(So,{key:0,content:S.content,"all-messages":v===o.value.length-1?_.value:[]},null,8,["content","all-messages"])):t.createCommentVNode("",!0)],2))),128)),n.isProcessing&&(n.chatMode==="single"||!n.chatMode)&&n.streamingContent?(t.openBlock(),t.createBlock(Wt,{key:0,role:"assistant",content:n.streamingContent??"",backend:n.selectedBackend??null,model:n.selectedModel??null,"avatar-paths":d.value,streaming:!0},null,8,["content","backend","model","avatar-paths"])):t.createCommentVNode("",!0),(n.chatMode==="all"||n.chatMode==="compound")&&n.backendResponses&&n.backendResponses.size>0?(t.openBlock(),t.createBlock(bo,{key:1,responses:n.backendResponses,collapsible:n.chatMode==="compound"},null,8,["responses","collapsible"])):t.createCommentVNode("",!0),n.synthesisState&&n.synthesisState.status!=="waiting"?(t.openBlock(),t.createBlock(fo,{key:2,state:n.synthesisState},null,8,["state"])):t.createCommentVNode("",!0),O.value.length>0?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:3},t.renderList(O.value,([S,v])=>(t.openBlock(),t.createBlock(Ro,{key:S,id:S,type:v.type,label:v.label,timestamp:v.timestamp??"","auto-collapse-ms":v.type==="tool_call"?4e3:2e3},{default:t.withCtx(()=>[t.createElementVNode("pre",_N,t.toDisplayString(v.content),1)]),_:2},1032,["id","type","label","timestamp","auto-collapse-ms"]))),128)):t.createCommentVNode("",!0),n.isProcessing&&!n.streamingContent?(t.openBlock(),t.createElementBlock("div",dN,[b[10]||(b[10]=t.createElementVNode("div",{class:"dots"},[t.createElementVNode("span"),t.createElementVNode("span"),t.createElementVNode("span")],-1)),t.createElementVNode("span",null,t.toDisplayString(s.value)+" is thinking...",1)])):t.createCommentVNode("",!0),T.value?(t.openBlock(),t.createElementBlock("button",{key:5,class:"scroll-to-bottom-btn",onClick:E,title:"Scroll to bottom"},[...b[11]||(b[11]=[t.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)])])):t.createCommentVNode("",!0)],544),n.canFinalize?(t.openBlock(),t.createElementBlock("div",uN,[t.createElementVNode("div",pN,[(t.openBlock(),t.createElementBlock("svg",mN,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(d.value,(S,v)=>(t.openBlock(),t.createElementBlock("path",{key:v,d:S},null,8,EN))),128)),b[12]||(b[12]=t.createElementVNode("path",{d:"M20 6L9 17l-5-5","stroke-width":"2.5"},null,-1))]))]),t.createElementVNode("div",gN,[t.createElementVNode("h3",null,t.toDisplayString(n.bannerTitle),1),t.createElementVNode("p",null,t.toDisplayString(s.value)+" has designed your "+t.toDisplayString(n.entityLabel)+t.toDisplayString(n.detectedEntityName?": "+n.detectedEntityName:"")+". Click the button to finalize. ",1)]),t.createElementVNode("button",{class:"btn btn-primary btn-convert",disabled:n.isFinalizing,onClick:b[5]||(b[5]=S=>r("finalize"))},[b[13]||(b[13]=t.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t.createElementVNode("path",{d:"M20 6L9 17l-5-5"})],-1)),t.createTextVNode(" "+t.toDisplayString(n.isFinalizing?"Creating...":n.bannerButtonLabel),1)],8,SN)])):t.createCommentVNode("",!0),n.readOnly?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",TN,[t.createElementVNode("div",bN,[t.createElementVNode("textarea",{value:l.value,onInput:b[6]||(b[6]=S=>f(S)),placeholder:n.inputPlaceholder,disabled:n.isProcessing,onKeydown:b[7]||(b[7]=S=>r("keydown",S)),rows:"1"},null,40,fN),t.createElementVNode("button",{class:"btn-send",disabled:!l.value.trim()||n.isProcessing,onClick:b[8]||(b[8]=S=>r("send"))},[...b[14]||(b[14]=[t.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t.createElementVNode("path",{d:"M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z"})],-1)])],8,RN)])]))]))}}),hN=he(NN,[["__scopeId","data-v-7d947b88"]]),vN={class:"aia-chat-mode-selector",role:"radiogroup","aria-label":"Chat mode"},ON=["aria-checked","title","onClick"],yN=t.defineComponent({__name:"ChatModeSelector",props:{mode:{}},emits:["update:mode"],setup(n,{emit:e}){const a=e,r=[{value:"single",label:"Single",description:"Send to one backend"},{value:"all",label:"All",description:"Send to all backends simultaneously"},{value:"compound",label:"Compound",description:"All backends + AI synthesis"}];return(i,s)=>(t.openBlock(),t.createElementBlock("div",vN,[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(r,o=>t.createElementVNode("button",{key:o.value,type:"button",role:"radio","aria-checked":n.mode===o.value,class:t.normalizeClass(["aia-chat-mode-selector__btn",{"aia-chat-mode-selector__btn--active":n.mode===o.value}]),title:o.description,onClick:l=>a("update:mode",o.value)},t.toDisplayString(o.label),11,ON)),64))]))}}),AN=he(yN,[["__scopeId","data-v-c2599533"]]),IN="0.4.5";exports.AccountEditForm=eE;exports.AccountReauth=cE;exports.AccountWizard=ym;exports.AiChatPanel=qC;exports.AiChatPanelManaged=hN;exports.AiChatSelector=ld;exports.AllModeResponses=bo;exports.BackendPicker=L_;exports.ChatBubble=Wt;exports.ChatControls=id;exports.ChatInput=od;exports.ChatMessage=Xi;exports.ChatModeSelector=AN;exports.ChatPanel=NE;exports.CompoundSynthesis=fo;exports.FinalizationBanner=sd;exports.LoginStream=no;exports.MessageActions=So;exports.OnboardingFlow=Km;exports.ProcessGroup=Ro;exports.forceFreshAccountPrompt=M_;exports.version=IN;
|
|
@@ -55139,7 +55139,7 @@ const jR = { class: "aia-bubble__avatar" }, eC = {
|
|
|
55139
55139
|
}, A(i.label), 11, iv)), 64))
|
|
55140
55140
|
]));
|
|
55141
55141
|
}
|
|
55142
|
-
}), Lv = /* @__PURE__ */ Ue(ov, [["__scopeId", "data-v-c2599533"]]), xv = "0.4.
|
|
55142
|
+
}), Lv = /* @__PURE__ */ Ue(ov, [["__scopeId", "data-v-c2599533"]]), xv = "0.4.5";
|
|
55143
55143
|
export {
|
|
55144
55144
|
yv as AccountEditForm,
|
|
55145
55145
|
Av as AccountReauth,
|
package/dist/index.d.ts
CHANGED
|
@@ -20,5 +20,5 @@ export { default as ProcessGroup } from './components/ProcessGroup.vue';
|
|
|
20
20
|
export { default as MessageActions } from './components/MessageActions.vue';
|
|
21
21
|
export { default as FinalizationBanner } from './components/FinalizationBanner.vue';
|
|
22
22
|
export { forceFreshAccountPrompt } from './components/forceFreshAccountPrompt';
|
|
23
|
-
export declare const version = "0.4.
|
|
23
|
+
export declare const version = "0.4.5";
|
|
24
24
|
//# sourceMappingURL=index.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-accounts/vue-styled",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "Vue 3 styled components for ai-accounts",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"dompurify": "^3.4.2",
|
|
28
28
|
"highlight.js": "^11.11.1",
|
|
29
29
|
"marked": "^18.0.0",
|
|
30
|
-
"@ai-accounts/ts-core": "0.4.
|
|
31
|
-
"@ai-accounts/vue-headless": "0.4.
|
|
30
|
+
"@ai-accounts/ts-core": "0.4.5",
|
|
31
|
+
"@ai-accounts/vue-headless": "0.4.5"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@vitejs/plugin-vue": "^5.1.0",
|