@copilotkit/vue 1.62.0 → 1.62.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PARITY.md +7 -7
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{use-render-activity-message-Bzh3Bckz.js → use-render-activity-message-8_HyVZWc.js} +7 -5
- package/dist/use-render-activity-message-8_HyVZWc.js.map +1 -0
- package/dist/{use-render-activity-message-CW3vipBB.cjs → use-render-activity-message-BqgmNPCz.cjs} +2 -2
- package/dist/use-render-activity-message-BqgmNPCz.cjs.map +1 -0
- package/dist/v2/hooks/use-agent.d.ts.map +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.mjs +1 -1
- package/package.json +6 -6
- package/src/v2/hooks/__tests__/use-agent.test.ts +60 -1
- package/src/v2/hooks/use-agent.ts +4 -1
- package/dist/use-render-activity-message-Bzh3Bckz.js.map +0 -1
- package/dist/use-render-activity-message-CW3vipBB.cjs.map +0 -1
package/dist/{use-render-activity-message-CW3vipBB.cjs → use-render-activity-message-BqgmNPCz.cjs}
RENAMED
|
@@ -68,7 +68,7 @@ PARAMETER ORDER IS CRITICAL — generate parameters in exactly this order:
|
|
|
68
68
|
`)}function y(M){if(M.headers.length===0)return M.rows.map(_=>`| ${_.join(" | ")} |`).join(`
|
|
69
69
|
`);const P=`| ${M.headers.map(()=>"---").join(" | ")} |`,U=M.rows.map(_=>`| ${_.join(" | ")} |`);return[`| ${M.headers.join(" | ")} |`,P,...U].join(`
|
|
70
70
|
`)}function g(M,P,U){if(typeof document>"u")return;const _=new Blob([M],{type:U}),ae=URL.createObjectURL(_);m(ae,P),URL.revokeObjectURL(ae)}const b=e.defineComponent({name:"CopilotMarkdownImage",inheritAttrs:!1,props:{src:{type:String,default:""},alt:{type:String,default:""}},setup(M,{attrs:P}){async function U(){if(!M.src)return;const _=p(M.src,"image");try{const ae=await fetch(M.src);if(!ae.ok)throw new Error("Failed to fetch image");const le=await ae.blob(),de=URL.createObjectURL(le);m(de,_),URL.revokeObjectURL(de)}catch{m(M.src,_)}}return()=>{const _={...P,src:M.src,alt:M.alt,class:["cpk:max-w-full cpk:rounded-lg",P.class].filter(Boolean).join(" "),"data-streamdown":"image"};return delete _.className,e.h("div",{class:"cpk:group cpk:relative cpk:my-4 cpk:inline-block","data-streamdown":"image-wrapper"},[e.h("img",_),e.h("div",{class:"cpk:pointer-events-none cpk:absolute cpk:inset-0 cpk:hidden cpk:rounded-lg cpk:bg-black/10 cpk:group-hover:block"}),e.h("button",{type:"button",class:"cpk:absolute cpk:right-2 cpk:bottom-2 cpk:flex cpk:h-8 cpk:w-8 cpk:cursor-pointer cpk:items-center cpk:justify-center cpk:rounded-md cpk:border cpk:border-border cpk:bg-background/90 cpk:shadow-sm cpk:backdrop-blur-sm cpk:transition-all cpk:duration-200 cpk:hover:bg-background cpk:opacity-0 cpk:group-hover:opacity-100",title:"Download image",onClick:U},[e.h(oe.Download,{class:"cpk:size-[14px]"})])])}}}),d=e.defineComponent({name:"CopilotMarkdownTable",inheritAttrs:!1,setup(M,{attrs:P,slots:U}){const _=e.ref(null),ae=e.ref(!1),le=e.ref(!1),de=e.ref(!1);let ge=null;const ye=()=>{ae.value=!1,le.value=!1},V=()=>{ge&&clearTimeout(ge),de.value=!0,ge=setTimeout(()=>{de.value=!1,ge=null},2e3)},te=()=>_.value?_.value.querySelector("table"):null,Y=()=>{const se=te();return se?u(se):null},Te=async se=>{const ce=Y();if(!ce)return;const Re=h(ce,se==="csv"?",":" ");if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(Re)}catch{return}ye(),V()},Ae=se=>{const ce=Y();ce&&(se==="csv"?g(h(ce,","),"table.csv","text/csv"):g(y(ce),"table.md","text/markdown"),ye())},fe=se=>{if(!_.value)return;const ce=se.target;ce&&!_.value.contains(ce)&&ye()};return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("mousedown",fe)}),e.onBeforeUnmount(()=>{ge&&clearTimeout(ge),typeof document<"u"&&document.removeEventListener("mousedown",fe)}),()=>{const se={...P,class:["cpk:w-full cpk:border-collapse cpk:border cpk:border-border",P.class].filter(Boolean).join(" "),"data-streamdown":"table"};return delete se.className,e.h("div",{ref:_,class:"cpk:my-4 cpk:flex cpk:flex-col cpk:space-y-2","data-streamdown":"table-wrapper"},[e.h("div",{class:"cpk:flex cpk:items-center cpk:justify-end cpk:gap-1"},[e.h("div",{class:"cpk:relative"},[e.h("button",{type:"button",class:Kt,title:"Copy table",onClick:()=>{ae.value=!ae.value,le.value=!1}},[de.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})]),ae.value?e.h("div",{class:Gt},[e.h("button",{type:"button",class:it,title:"Copy table as CSV",onClick:()=>Te("csv")},"CSV"),e.h("button",{type:"button",class:it,title:"Copy table as TSV",onClick:()=>Te("tsv")},"TSV")]):null]),e.h("div",{class:"cpk:relative"},[e.h("button",{type:"button",class:Kt,title:"Download table",onClick:()=>{le.value=!le.value,ae.value=!1}},[e.h(oe.Download,{class:"cpk:size-[14px]"})]),le.value?e.h("div",{class:Gt},[e.h("button",{type:"button",class:it,title:"Download table as CSV",onClick:()=>Ae("csv")},"CSV"),e.h("button",{type:"button",class:it,title:"Download table as Markdown",onClick:()=>Ae("markdown")},"Markdown")]):null])]),e.h("div",{class:"cpk:overflow-x-auto"},[e.h("table",se,U.default?U.default():[])])])}}}),k={javascript:"js",js:"js",typescript:"ts",ts:"ts",json:"json",vue:"vue",html:"html",css:"css",md:"md",markdown:"md",sh:"sh",bash:"sh",py:"py",python:"py",go:"go",rust:"rs",rs:"rs"},v=e.defineComponent({name:"CopilotCodeBlockCopyAction",props:{code:{type:String,default:""}},setup(M){const P=e.ref(!1);let U=null;const _=async()=>{if(M.code){if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(M.code)}catch{return}U&&clearTimeout(U),P.value=!0,U=setTimeout(()=>{P.value=!1,U=null},2e3)}};return e.onBeforeUnmount(()=>{U&&clearTimeout(U)}),()=>e.h("button",{type:"button",class:Jt,title:"Copy Code","data-streamdown":"code-block-copy-button",onClick:_},[P.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})])}}),w=e.defineComponent({name:"CopilotCodeBlockDownloadAction",props:{code:{type:String,default:""},language:{type:String,default:""}},setup(M){const P=()=>{if(!M.code)return;const U=k[M.language.toLowerCase()]??"txt";g(M.code,`file.${U}`,"text/plain")};return()=>e.h("button",{type:"button",class:Jt,title:"Download file","data-streamdown":"code-block-download-button",onClick:P},[e.h(oe.Download,{class:"cpk:size-[14px]"})])}}),x={img:b,table:d};function R(M){return M?typeof M=="string"?M:Array.isArray(M)?M.map(U=>U&&typeof U=="object"&&"type"in U&&U.type==="text"&&typeof U.text=="string"?U.text:"").filter(U=>U.length>0).join(`
|
|
71
|
-
`):"":""}const E=e.computed(()=>R(n.message.content)),I=e.computed(()=>E.value.trim().length>0);function B(M){const P=f.value[M];return Array.isArray(P)?P.length>0:!!P}const j=e.computed(()=>B("onThumbsUp")),ee=e.computed(()=>B("onThumbsDown")),W=e.computed(()=>B("onReadAloud")),D=e.computed(()=>B("onRegenerate")),L=e.computed(()=>n.messages[n.messages.length-1]?.id===n.message.id),G=e.computed(()=>n.toolbarVisible&&I.value&&!(n.isRunning&&L.value));function X(){c&&clearTimeout(c),l.value=!0,c=setTimeout(()=>{l.value=!1,c=null},2e3)}async function T(){const M=E.value;if(M&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(M),X()}catch(P){console.error("Failed to copy to clipboard:",P)}}function A(){a("thumbs-up",n.message)}function F(){a("thumbs-down",n.message)}function H(){a("read-aloud",n.message)}function re(){a("regenerate",n.message)}return e.onBeforeUnmount(()=>{c&&clearTimeout(c)}),(M,P)=>e.renderSlot(M.$slots,"layout",{message:t.message,content:E.value,isRunning:t.isRunning,toolbarVisible:t.toolbarVisible,shouldShowToolbar:G.value,messageRenderer:M.$slots["message-renderer"]??(()=>null),toolbar:M.$slots.toolbar??(()=>null),copyButton:M.$slots["copy-button"]??(()=>null),thumbsUpButton:M.$slots["thumbs-up-button"]??(()=>null),thumbsDownButton:M.$slots["thumbs-down-button"]??(()=>null),readAloudButton:M.$slots["read-aloud-button"]??(()=>null),regenerateButton:M.$slots["regenerate-button"]??(()=>null),toolCallsView:M.$slots["tool-calls-view"]??(()=>null),onCopy:T,onThumbsUp:A,onThumbsDown:F,onReadAloud:H,onRegenerate:re},()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-assistant-message",class:"cpk:prose cpk:max-w-full cpk:break-words cpk:dark:prose-invert","data-message-id":t.message.id},M.$attrs),[e.renderSlot(M.$slots,"message-renderer",{message:t.message,content:E.value},()=>[I.value?(e.openBlock(),e.createBlock(e.unref(on.StreamMarkdown),{key:0,class:"copilot-chat-assistant-markdown",content:E.value,components:x,"code-block-actions":[e.unref(w),e.unref(v)],"code-block-show-line-numbers":!1,"code-block-hide-copy":!0,"code-block-hide-download":!0,"allowed-link-prefixes":["https://","http://","#","/","./","../"],"shiki-theme":{light:"github-light",dark:"github-dark"}},null,8,["content","code-block-actions"])):e.createCommentVNode("",!0)]),e.renderSlot(M.$slots,"tool-calls-view",{message:t.message,messages:t.messages},()=>[e.createVNode(An,{message:t.message,messages:t.messages},e.createSlots({_:2},[e.renderList(M.$slots,(U,_)=>({name:_,fn:e.withCtx(ae=>[e.renderSlot(M.$slots,_,e.normalizeProps(e.guardReactiveProps(ae)))])}))]),1032,["message","messages"])]),G.value?e.renderSlot(M.$slots,"toolbar",{key:0,message:t.message,shouldShowToolbar:G.value},()=>[e.createElementVNode("div",ia,[e.createElementVNode("div",la,[e.renderSlot(M.$slots,"copy-button",{onCopy:T,copied:l.value,label:s.value.assistantMessageToolbarCopyMessageLabel},()=>[e.createElementVNode("button",{"data-testid":"copilot-copy-button",type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarCopyMessageLabel,title:s.value.assistantMessageToolbarCopyMessageLabel,onClick:T},[l.value?(e.openBlock(),e.createBlock(e.unref(oe.Check),{key:0,class:"cpk:size-[18px]"})):(e.openBlock(),e.createBlock(e.unref(oe.Copy),{key:1,class:"cpk:size-[18px]"}))],10,ca)]),j.value?e.renderSlot(M.$slots,"thumbs-up-button",{key:0,onThumbsUp:A,label:s.value.assistantMessageToolbarThumbsUpLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarThumbsUpLabel,title:s.value.assistantMessageToolbarThumbsUpLabel,onClick:A},[e.createVNode(e.unref(oe.ThumbsUp),{class:"cpk:size-[18px]"})],10,ua)]):e.createCommentVNode("",!0),ee.value?e.renderSlot(M.$slots,"thumbs-down-button",{key:1,onThumbsDown:F,label:s.value.assistantMessageToolbarThumbsDownLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarThumbsDownLabel,title:s.value.assistantMessageToolbarThumbsDownLabel,onClick:F},[e.createVNode(e.unref(oe.ThumbsDown),{class:"cpk:size-[18px]"})],10,da)]):e.createCommentVNode("",!0),W.value?e.renderSlot(M.$slots,"read-aloud-button",{key:2,onReadAloud:H,label:s.value.assistantMessageToolbarReadAloudLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarReadAloudLabel,title:s.value.assistantMessageToolbarReadAloudLabel,onClick:H},[e.createVNode(e.unref(oe.Volume2),{class:"cpk:size-[20px]"})],10,pa)]):e.createCommentVNode("",!0),D.value?e.renderSlot(M.$slots,"regenerate-button",{key:3,onRegenerate:re,label:s.value.assistantMessageToolbarRegenerateLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarRegenerateLabel,title:s.value.assistantMessageToolbarRegenerateLabel,onClick:re},[e.createVNode(e.unref(oe.RefreshCw),{class:"cpk:size-[18px]"})],10,ma)]):e.createCommentVNode("",!0),e.renderSlot(M.$slots,"toolbar-items")])])]):e.createCommentVNode("",!0)],16,ra)])}});class He extends Error{constructor(o){super(o),this.name="AudioRecorderError"}}const $n=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatAudioRecorder",setup(t,{expose:o}){const n=e.useAttrs(),a=e.ref(null),r=e.ref("idle"),s=e.ref(null),i=e.ref(null),l=e.ref(null),c=e.ref(null),f=e.ref(null),C=e.ref([]),p=e.ref([]),m=e.ref(0),u=e.ref(0),h=e.ref(0);function y(){f.value!==null&&(cancelAnimationFrame(f.value),f.value=null);const v=s.value;if(v&&v.state!=="inactive")try{v.stop()}catch{}i.value&&(i.value.getTracks().forEach(x=>x.stop()),i.value=null);const w=c.value;w&&w.state!=="closed"&&w.close().catch(()=>{}),s.value=null,l.value=null,c.value=null,C.value=[],p.value=[],m.value=0,u.value=0,h.value=0}async function g(){if(r.value!=="idle")throw new He("Recorder is already active");try{const v=await navigator.mediaDevices.getUserMedia({audio:!0});i.value=v;const w=new AudioContext;c.value=w;const x=w.createMediaStreamSource(v),R=w.createAnalyser();R.fftSize=2048,x.connect(R),l.value=R;const E=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":MediaRecorder.isTypeSupported("audio/webm")?"audio/webm":MediaRecorder.isTypeSupported("audio/mp4")?"audio/mp4":"",I=E?{mimeType:E}:{},B=new MediaRecorder(v,I);s.value=B,C.value=[],B.ondataavailable=j=>{j.data.size>0&&C.value.push(j.data)},B.start(100),r.value="recording"}catch(v){throw y(),v instanceof Error&&v.name==="NotAllowedError"?new He("Microphone permission denied"):v instanceof Error&&v.name==="NotFoundError"?new He("No microphone found"):new He(v instanceof Error?v.message:"Failed to start recording")}}function b(){return new Promise((v,w)=>{const x=s.value;if(!x||r.value!=="recording"){w(new He("No active recording"));return}r.value="processing",x.onstop=()=>{const R=new Blob(C.value,{type:x.mimeType||"audio/webm"});y(),r.value="idle",v(R)},x.onerror=()=>{y(),r.value="idle",w(new He("Recording failed"))},x.stop()})}function d(v){let w=0;for(let x=0;x<v.length;x+=1){const R=(v[x]??128)/128-1;w+=R*R}return Math.sqrt(w/v.length)}function k(){const v=a.value;if(!v)return;const w=v.getContext("2d");if(!w)return;const x=v.getBoundingClientRect(),R=window.devicePixelRatio||1;(v.width!==x.width*R||v.height!==x.height*R)&&(v.width=x.width*R,v.height=x.height*R,w.scale(R,R));const E=2,B=E+1,j=Math.floor(x.width/B)+2;if(l.value&&r.value==="recording"){p.value.length===0&&(p.value=Array.from({length:j},()=>0)),h.value<1&&(h.value=Math.min(1,h.value+.03)),m.value+=1/3;const G=l.value.fftSize,X=new Uint8Array(G);l.value.getByteTimeDomainData(X);const T=d(X),H=T>u.value?.12:.08;u.value+=(T-u.value)*H,m.value>=B&&(m.value-=B,p.value.push(u.value),p.value.length>j&&(p.value=p.value.slice(-j)))}w.clearRect(0,0,x.width,x.height);const ee=window.getComputedStyle(v);w.fillStyle=ee.color,w.globalAlpha=h.value;const W=x.height/2,D=x.height/2-2,L=12;for(let G=0;G<p.value.length;G+=1){const X=p.value[G]??0,T=Math.min(X*4,1),A=Math.max(2,T*D*2),F=x.width-(p.value.length-G)*B-m.value,H=W-A/2;if(F+E<=0||F>=x.width)continue;let re=1;F<L?re=Math.max(0,F/L):F>x.width-L&&(re=Math.max(0,(x.width-F)/L)),w.globalAlpha=h.value*re,w.fillRect(F,H,E,A)}f.value=requestAnimationFrame(k)}return e.watch(r,()=>{f.value!==null&&(cancelAnimationFrame(f.value),f.value=null),f.value=requestAnimationFrame(k)},{immediate:!0}),e.onBeforeUnmount(()=>{y()}),o({get state(){return r.value},start:g,stop:b,dispose:y}),(v,w)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:w-full cpk:px-5 cpk:py-3"},e.unref(n)),[e.createElementVNode("canvas",{ref_key:"canvasRef",ref:a,class:"cpk:block cpk:h-[26px] cpk:w-full"},null,512)],16))}}),$t=e.defineComponent({__name:"InlineFeatureWarning",props:{featureName:{}},setup(t){const o={padding:"8px 12px",backgroundColor:"#fffbeb",border:"1px solid #fbbf24",borderRadius:"6px",fontSize:"13px",color:"#92400e",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif"},n={color:"#b45309",textDecoration:"underline"};return(a,r)=>(e.openBlock(),e.createElementBlock("div",{style:o,"data-testid":"copilot-inline-feature-warning"},[e.createTextVNode(' ⚠ The "'+e.toDisplayString(t.featureName)+'" feature requires a CopilotKit license. ',1),e.createElementVNode("a",{href:"https://copilotkit.ai/pricing",target:"_blank",rel:"noopener noreferrer",style:n}," Get one at copilotkit.ai/pricing ")]))}});var Mn=(t=>(t.OnMessagesChanged="OnMessagesChanged",t.OnStateChanged="OnStateChanged",t.OnRunStatusChanged="OnRunStatusChanged",t))(Mn||{});const fa=["OnMessagesChanged","OnStateChanged","OnRunStatusChanged"];function ga(t,o,n){const a=t.clone();if(a===t)throw new Error(`useAgent: ${t.constructor.name}.clone() returned the same instance. clone() must return a new, independent object.`);return a.threadId=o,a.setMessages([]),a.setState({}),a instanceof De.HttpAgent&&(a.headers={...n}),a}const St=new WeakMap;function Xt(t,o){if(!(!t||!o))return St.get(t)?.get(o)}function ha(t,o,n){let a=St.get(t);a||(a=new Map,St.set(t,a));const r=a.get(o);if(r)return r.threadId=o,r instanceof De.HttpAgent&&(r.headers={...n}),r;const s=ga(t,o,n);return a.set(o,s),s}function gt(t={}){const o=e.computed(()=>e.toValue(t.agentId)??z.DEFAULT_AGENT_ID),n=ve(),a=e.computed(()=>e.toValue(t.threadId)??n.value?.threadId),{copilotkit:r}=be(),s=e.computed(()=>t.updates??fa),i=e.computed(()=>r.value.defaultThrottleMs),l=e.computed(()=>e.toValue(t.throttleMs)),c=e.shallowRef(null),f=e.shallowRef(null),C=new Map,p=(u,h,y,g)=>{const b=new pe.ProxiedCopilotRuntimeAgent({runtimeUrl:h,agentId:u,transport:y,runtimeMode:"pending"});return b.headers={...g},b},m=()=>{const u=o.value,h=a.value,y=h?`${u}:${h}`:u,g=r.value,b=g.getAgent(u);if(b){C.delete(y),C.delete(u);const x=h?ha(b,h,g.headers):b,R=c.value===x;c.value=x,f.value=x,R&&e.triggerRef(c);return}const d=g.runtimeUrl!==void 0,k=g.runtimeConnectionStatus;if(d&&(k===pe.CopilotKitCoreRuntimeConnectionStatus.Disconnected||k===pe.CopilotKitCoreRuntimeConnectionStatus.Connecting||k===pe.CopilotKitCoreRuntimeConnectionStatus.Error)){const x=C.get(y);if(x){x.headers={...g.headers},h&&(x.threadId=h),c.value=x,f.value=x;return}const R=p(u,g.runtimeUrl,g.runtimeTransport,g.headers);h&&(R.threadId=h),C.set(y,R),c.value=R,f.value=R;return}const v=Object.keys(g.agents??{}),w=d?`runtimeUrl=${g.runtimeUrl}`:"no runtimeUrl";throw new Error(`useAgent: Agent '${u}' not found after runtime sync (${w}). `+(v.length?`Known agents: [${v.join(", ")}]`:"No agents registered.")+" Verify your runtime /info and/or agents__unsafe_dev_only.")};return e.watch([o,()=>r.value.agents,()=>r.value.runtimeConnectionStatus,()=>r.value.runtimeUrl,()=>r.value.runtimeTransport,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([u],[h])=>u.localeCompare(h))),a],m,{immediate:!0}),e.watch([f,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([u],[h])=>u.localeCompare(h)))],([u])=>{u instanceof De.HttpAgent&&(u.headers={...r.value.headers})},{immediate:!0}),e.watch([f,s,l,i],([u,h],y,g)=>{const b=h;if(!u||b.length===0)return;let d=!0,k=!1;const v=()=>{d&&(k||(k=!0,queueMicrotask(()=>{k=!1,d&&e.triggerRef(c)})))},w={};b.includes("OnMessagesChanged")&&(w.onMessagesChanged=()=>{d&&e.triggerRef(c)}),b.includes("OnStateChanged")&&(w.onStateChanged=v),b.includes("OnRunStatusChanged")&&(w.onRunInitialized=v,w.onRunFinalized=v,w.onRunFailed=v,w.onRunErrorEvent=v);const x=r.value.subscribeToAgentWithOptions(u,w,{throttleMs:e.toValue(t.throttleMs)});g(()=>{d=!1,x.unsubscribe()})},{immediate:!0}),{agent:c}}function Bn(t={}){const{copilotkit:o}=be(),n=ve(),a=e.computed(()=>e.toValue(t.agentId)??n.value?.agentId??z.DEFAULT_AGENT_ID),r=e.ref([]),s=e.ref(!1),i=()=>{const f=o.value.getSuggestions(a.value);r.value=f.suggestions,s.value=f.isLoading};return e.watch([()=>o.value,a],()=>i(),{immediate:!0}),e.watch([()=>o.value,a],(f,C,p)=>{const m=o.value,u=a.value,h=m.subscribe({onSuggestionsChanged:({agentId:y,suggestions:g})=>{if(y!==u)return;r.value=g;const b=m.getSuggestions(u);s.value=b.isLoading},onSuggestionsStartedLoading:({agentId:y})=>{y===u&&(s.value=!0)},onSuggestionsFinishedLoading:({agentId:y})=>{y===u&&(s.value=!1)},onSuggestionsConfigChanged:()=>{const y=m.getSuggestions(u);r.value=y.suggestions,s.value=y.isLoading}});p(()=>h.unsubscribe())},{immediate:!0}),{suggestions:r,isLoading:s,reloadSuggestions:()=>{o.value.reloadSuggestions(a.value)},clearSuggestions:()=>{o.value.clearSuggestions(a.value)}}}function Vn(t){const o=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(null),s=e.ref(e.toValue(t.config)),i=e.ref(o.value),l=e.computed(()=>s.value?.enabled??!1);e.watch(()=>e.toValue(t.config),d=>{s.value=d},{immediate:!0});const c=d=>{o.value=d,i.value=d},f=d=>{c(d(i.value))};async function C(d){const k=s.value,v=k?.accept??"*/*",w=k?.maxSize??20*1024*1024,x=d.filter(E=>!z.matchesAcceptFilter(E,v));for(const E of x)k?.onUploadFailed?.({reason:"invalid-type",file:E,message:`File "${E.name}" is not accepted. Supported types: ${v}`});const R=d.filter(E=>z.matchesAcceptFilter(E,v));for(const E of R){if(z.exceedsMaxSize(E,w)){k?.onUploadFailed?.({reason:"file-too-large",file:E,message:`File "${E.name}" exceeds the maximum size of ${z.formatFileSize(w)}`});continue}const I=z.getModalityFromMimeType(E.type),B=z.randomUUID();f(j=>[...j,{id:B,type:I,source:{type:"data",value:"",mimeType:E.type},filename:E.name,size:E.size,status:"uploading"}]);try{let j,ee;if(k?.onUpload){const D=await k.onUpload(E),{metadata:L,...G}=D;j=G,ee=L}else j={type:"data",value:await z.readFileAsBase64(E),mimeType:E.type};let W;I==="video"&&(W=await z.generateVideoThumbnail(E)),f(D=>D.map(L=>L.id===B?{...L,source:j,status:"ready",thumbnail:W,metadata:ee}:L))}catch(j){f(ee=>ee.filter(W=>W.id!==B)),console.error(`[CopilotKit] Failed to upload "${E.name}":`,j),k?.onUploadFailed?.({reason:"upload-failed",file:E,message:j instanceof Error?j.message:`Failed to upload "${E.name}"`})}}}async function p(d){const k=d.target;k?.files?.length&&(await C(Array.from(k.files)),k&&(k.value=""))}function m(d){l.value&&(d.preventDefault(),d.stopPropagation(),n.value=!0)}function u(d){d.preventDefault(),d.stopPropagation(),n.value=!1}async function h(d){if(d.preventDefault(),d.stopPropagation(),n.value=!1,!l.value)return;const k=Array.from(d.dataTransfer?.files??[]);k.length>0&&await C(k)}function y(d){f(k=>k.filter(v=>v.id!==d))}function g(){const d=i.value.filter(k=>k.status==="ready");return d.length===0||(f(k=>k.filter(v=>v.status!=="ready")),a.value&&(a.value.value="")),d}async function b(d){if(!l.value)return;const k=d.target;if(!k||!r.value?.contains(k))return;const v=s.value?.accept??"*/*",x=Array.from(d.clipboardData?.items??[]).filter(E=>{if(E.kind!=="file")return!1;const I=E.getAsFile();return I!==null&&z.matchesAcceptFilter(I,v)});if(x.length===0)return;d.preventDefault();const R=x.map(E=>E.getAsFile()).filter(E=>E!==null);await C(R)}return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("paste",b)}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.removeEventListener("paste",b)}),{attachments:o,enabled:l,dragOver:n,fileInputRef:a,containerRef:r,processFiles:C,handleFileUpload:p,handleDragOver:m,handleDragLeave:u,handleDrop:h,removeAttachment:y,consumeAttachments:g}}async function va(t){return await new Promise((o,n)=>{const a=new FileReader;a.onloadend=()=>{const r=a.result;o(r.split(",")[1]??"")},a.addEventListener("error",()=>n(new Error("Failed to read audio data"))),a.readAsDataURL(t)})}function ka(t){return typeof t=="object"&&t!==null&&"error"in t&&"message"in t&&typeof t.error=="string"&&typeof t.message=="string"}function ba(t){return{code:t.error,message:t.message,retryable:t.retryable??!1}}class We extends Error{info;constructor(o){super(o.message),this.name="TranscriptionError",this.info=o}}async function ya(t,o,n="recording.webm"){const a=t.runtimeUrl;if(!a)throw new We({code:z.TranscriptionErrorCode.INVALID_REQUEST,message:"Runtime URL is not configured",retryable:!1});const r={...t.headers};let s;try{if(t.runtimeTransport==="single"){const i=await va(o);r["Content-Type"]="application/json",s=await fetch(a,{method:"POST",headers:r,body:JSON.stringify({method:"transcribe",body:{audio:i,mimeType:o.type||"audio/webm",filename:n}})})}else{delete r["Content-Type"];const i=new FormData;i.append("audio",o,n),s=await fetch(`${a}/transcribe`,{method:"POST",headers:r,body:i})}}catch(i){throw new We({code:z.TranscriptionErrorCode.NETWORK_ERROR,message:i instanceof Error?i.message:"Network request failed",retryable:!0})}if(!s.ok){let i;try{i=await s.json()}catch{throw new We({code:z.TranscriptionErrorCode.PROVIDER_ERROR,message:`HTTP ${s.status}: ${s.statusText}`,retryable:s.status>=500})}throw ka(i)?new We(ba(i)):new We({code:z.TranscriptionErrorCode.PROVIDER_ERROR,message:typeof i=="object"&&i!==null&&"message"in i?String(i.message):"Transcription failed",retryable:s.status>=500})}return await s.json()}function Fn(){const t=typeof window<"u"?window.innerHeight:0,o=e.ref(!1),n=e.ref(0),a=e.ref(t),r=e.ref(t),s=()=>{if(typeof window>"u")return;const l=window.visualViewport;if(!l)return;const c=window.innerHeight,f=l.height,C=Math.max(0,c-f),p=C>150;n.value=C,o.value=p,a.value=f,r.value=c};let i=null;return e.onMounted(()=>{typeof window>"u"||(i=window.visualViewport??null,i&&(s(),i.addEventListener("resize",s),i.addEventListener("scroll",s)))}),e.onBeforeUnmount(()=>{i&&(i.removeEventListener("resize",s),i.removeEventListener("scroll",s),i=null)}),{isKeyboardOpen:e.readonly(o),keyboardHeight:e.readonly(n),availableHeight:e.readonly(a),viewportHeight:e.readonly(r)}}const wa={id:null,sendNonce:0},Nn=Symbol("LastUserMessage");function Ca(){return e.ref({...wa})}function xa({scrollRef:t,contentRef:o,spacerRef:n,topOffset:a=16}){const r=e.inject(Nn,Ca(),!0);let s=-1,i=null,l=null;function c(){i!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(i),i=null,l?.disconnect(),l=null}e.watch([()=>r.value.id,()=>r.value.sendNonce,t,o,n,()=>a],([f,C,p,m,u],h,y)=>{if(y(c),C===s||(s=C,!f)||!p||!m||!u)return;const g=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(f):f.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&"),b=m.querySelector(`[data-message-id="${g}"]`);if(!b)return;const d=p.clientHeight,k=b.getBoundingClientRect().height,v=parseFloat(getComputedStyle(b).paddingTop)||0,w=Math.max(0,k-v),x=Math.max(0,d-w-a);u.style.height=`${x}px`,typeof requestAnimationFrame=="function"&&(i=requestAnimationFrame(()=>{const R=Qt(b,p)+v-a;p.scrollTo({top:Math.max(0,R),behavior:"smooth"})})),typeof ResizeObserver<"u"&&(l=new ResizeObserver(()=>{if(!m||!u||!p)return;const R=m.getBoundingClientRect().height,E=Qt(b,m),I=R-E-k,B=Math.max(0,x-I);u.style.height=`${B}px`}),l.observe(m))},{immediate:!0,flush:"post"})}function Qt(t,o){const n=t.getBoundingClientRect(),a=o.getBoundingClientRect();return n.top-a.top+o.scrollTop}const Sa={class:"cpk:pointer-events-auto cpk:mx-auto cpk:max-w-3xl cpk:px-4 cpk:py-0 cpk:@3xl:px-0 cpk:[div[data-sidebar-chat]_&]:px-8 cpk:[div[data-popup-chat]_&]:px-4"},Ta=["data-layout"],Ia=["data-layout"],Aa=["aria-label","disabled"],Ra={key:0,class:"cpk:my-1 cpk:h-px cpk:bg-border cpk:dark:bg-[#333333]"},Ea=["onClick"],$a={key:1,class:"cpk:flex cpk:w-full cpk:items-center cpk:justify-center cpk:px-5 cpk:py-3"},Ma=["value","placeholder","disabled"],Ba={key:0,class:"cpk:px-3 cpk:py-2 cpk:text-sm cpk:text-muted-foreground"},Va=["data-slash-index","aria-selected","data-active","onMouseenter","onMousedown"],Fa=["aria-label","disabled"],Na=["aria-label","disabled"],Oa=["aria-label","disabled"],La={class:"cpk:mr-[10px]"},Da=["disabled"],Pa={"data-testid":"copilot-chat-input-disclaimer",class:"cpk:mx-auto cpk:max-w-3xl cpk:px-4 cpk:py-3 cpk:text-center cpk:text-xs cpk:text-muted-foreground"},Xe=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatInput",props:{modelValue:{},disabled:{type:Boolean,default:!1},placeholder:{},autoFocus:{type:Boolean,default:!0},clearOnSubmit:{type:Boolean,default:!0},mode:{default:"input"},toolsMenu:{default:()=>[]},isRunning:{type:Boolean,default:!1},positioning:{default:"static"},keyboardHeight:{default:0},showDisclaimer:{type:Boolean,default:void 0},maxRows:{default:5},bottomAnchored:{type:Boolean,default:!1}},emits:["update:modelValue","submit-message","stop","add-file","start-transcribe","cancel-transcribe","finish-transcribe","finish-transcribe-with-audio"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=ve(),i=e.getCurrentInstance(),l=e.ref(null),c=e.ref(null),f=e.ref(null),C=e.ref(null),p=e.ref(null),m=e.ref(null),u=e.ref(null),h=e.ref(null),y=e.ref(n.modelValue??""),g=e.ref(!1),b=e.ref("compact"),d=e.ref(null),k=e.ref(0),v=e.ref(null),w=e.ref(!1),x=e.ref({singleLineHeight:0,maxHeight:0,paddingLeft:0,paddingRight:0}),R=e.ref(null),E=e.ref(!1),I=e.ref(null),B=e.ref(null),j=e.ref(!1),ee=e.ref(!1);let W=null,D=null;const L=e.computed(()=>i?.vnode.props??{}),G=e.computed(()=>n.modelValue!==void 0),X=e.computed(()=>G.value?n.modelValue??"":y.value),T=e.computed(()=>s.value?.labels??$e),A=e.computed(()=>n.placeholder??T.value.chatInputPlaceholder),F=e.computed(()=>n.mode==="input"&&b.value==="expanded"),H=e.computed(()=>n.mode!=="transcribe"&&n.isRunning),re=e.computed(()=>n.showDisclaimer??n.positioning==="absolute"),M=e.computed(()=>Y("onSubmitMessage")),P=e.computed(()=>Y("onStop")),U=e.computed(()=>Y("onAddFile")),_=e.computed(()=>Y("onStartTranscribe")),ae=e.computed(()=>Y("onCancelTranscribe")),le=e.computed(()=>Y("onFinishTranscribe")),de=e.computed(()=>n.mode==="input"&&!n.disabled&&M.value&&X.value.trim().length>0),ge=e.computed(()=>H.value?!P.value:!de.value),ye=e.computed(()=>[n.positioning==="absolute"&&"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none",r.class]),V=e.computed(()=>{const S={...r};return delete S.class,S});function te(S){return Array.isArray(S.items)}function Y(S){const $=L.value[S];return Array.isArray($)?$.length>0:!!$}function Te(){return U.value?{label:T.value.chatInputToolbarAddButtonLabel,action:()=>a("add-file")}:null}function Ae(){const S=[],$=Te();if($&&S.push($),n.toolsMenu.length>0){S.length>0&&S.push("-");for(const q of n.toolsMenu){if(q==="-"){if(S.length===0||S[S.length-1]==="-")continue;S.push("-");continue}S.push(q)}}for(;S.length>0&&S[S.length-1]==="-";)S.pop();return S}const fe=e.computed(()=>Ae()),se=e.computed(()=>fe.value.length>0);function ce(S){const $=new Set,q=[],ne=Ie=>{for(const ie of Ie)if(ie!=="-"){if(te(ie)&&ie.items.length>0){ne(ie.items);continue}!ie.action||$.has(ie.label)||($.add(ie.label),q.push(ie))}};return ne(S),q}const ue=e.computed(()=>ce(fe.value));function Re(S,$=0,q="root"){const ne=[];for(const[Ie,ie]of S.entries()){const Ee=`${q}-${Ie}`;if(ie==="-"){ne.push({type:"separator",key:`sep-${Ee}`});continue}if(te(ie)&&ie.items.length>0){ne.push({type:"label",key:`label-${Ee}`,label:ie.label,depth:$}),ne.push(...Re(ie.items,$+1,Ee));continue}ie.action&&ne.push({type:"item",key:`item-${Ee}`,label:ie.label,depth:$,action:ie.action})}return ne}const N=e.computed(()=>Re(fe.value)),K=e.computed(()=>{if(d.value===null||ue.value.length===0)return[];const S=d.value.trim().toLowerCase();if(S.length===0)return ue.value;const $=[],q=[];for(const ne of ue.value){const Ie=ne.label.toLowerCase();if(Ie.startsWith(S)){$.push(ne);continue}Ie.includes(S)&&q.push(ne)}return[...$,...q]}),Ce=e.computed(()=>d.value!==null&&ue.value.length>0);function Me(S){G.value||(y.value=S),a("update:modelValue",S)}function et(){Me("")}function we(S){if(ue.value.length===0){d.value=null;return}if(S.startsWith("/")){const $=S.split(/\r?\n/,1)[0]??"";d.value=$.slice(1);return}d.value=null}function tt(S){et(),S.action?.(),d.value=null,k.value=0,requestAnimationFrame(()=>{c.value?.focus()})}function O(){if(n.mode!=="input"||n.disabled||!M.value)return;const $=(c.value?.value??X.value).trim();$&&(a("submit-message",$),n.clearOnSubmit&&et(),c.value?.focus())}function Q(S){const $=S.target.value;Me($),we($)}function Z(){if(H.value){P.value&&a("stop");return}O()}function me(S){if(!n.disabled&&!(g.value||S.isComposing||S.keyCode===229)){if(d.value!==null&&n.mode==="input"){if(S.key==="ArrowDown"){K.value.length>0&&(S.preventDefault(),k.value=k.value<0?0:(k.value+1)%K.value.length);return}if(S.key==="ArrowUp"){K.value.length>0&&(S.preventDefault(),k.value<0?k.value=K.value.length-1:k.value=k.value<=0?K.value.length-1:k.value-1);return}if(S.key==="Enter"){const $=k.value>=0?K.value[k.value]:void 0;if($){S.preventDefault(),tt($);return}}if(S.key==="Escape"){S.preventDefault(),d.value=null;return}}if(S.key==="Enter"&&!S.shiftKey&&n.mode==="input"){if(S.preventDefault(),H.value){P.value&&a("stop");return}O()}}}function xe(){!se.value||n.mode==="transcribe"||n.disabled||(w.value=!w.value)}function Pe(){w.value=!1}function Be(S){S(),Pe(),e.nextTick(()=>{c.value?.focus()})}async function Ue(){const S=h.value;if(S&&S.state==="recording")try{const $=await S.stop();a("finish-transcribe-with-audio",$)}catch($){console.error("Failed to stop recording:",$)}a("finish-transcribe")}function nt(S){const $=S.target;!$||n.mode!=="input"||$.tagName==="BUTTON"||$.closest("button")||c.value?.focus()}function Ke(){const S=c.value;if(!S||g.value)return;const $=S.value,q=S.style.height;S.style.height="auto";const ne=window.getComputedStyle(S),Ie=parseFloat(ne.paddingLeft)||0,ie=parseFloat(ne.paddingRight)||0,Ee=parseFloat(ne.paddingTop)||0,Oe=parseFloat(ne.paddingBottom)||0;S.value="";const ze=S.scrollHeight;S.value=$;const Le=(ze-Ee-Oe)*n.maxRows+Ee+Oe;x.value={singleLineHeight:ze,maxHeight:Le,paddingLeft:Ie,paddingRight:ie},S.style.height=q,S.style.maxHeight=`${Le}px`}function ot(){const S=c.value;if(!S)return 0;x.value.singleLineHeight===0&&Ke();const{maxHeight:$}=x.value;$&&(S.style.maxHeight=`${$}px`),S.style.height="auto";const q=S.scrollHeight;return S.style.height=`${$?Math.min(q,$):q}px`,q}function Ve(S){b.value!==S&&(E.value=!0,b.value=S)}function ht(S){const $=window.getComputedStyle(S);if($.font?.trim())return $.font;if($.fontSize&&$.fontFamily){const q=`${$.fontStyle} ${$.fontVariant} ${$.fontWeight} ${$.fontSize}/${$.lineHeight} ${$.fontFamily}`;if(q.trim())return q}return process.env.NODE_ENV!=="production"&&!j.value&&(j.value=!0,console.warn("[CopilotChatInput] Could not resolve textarea font for layout measurement. Text-width-based expansion will be skipped until the next container resize.")),null}function Fe(){const S=f.value,$=C.value,q=p.value;if(!S||!$||!q)return B.value=null,null;const ne=window.getComputedStyle(S),Ie=parseFloat(ne.paddingLeft)||0,ie=parseFloat(ne.paddingRight)||0,Ee=parseFloat(ne.columnGap)||0,Oe=S.clientWidth-Ie-ie;if(Oe<=0)return B.value=null,null;const ze=$.getBoundingClientRect().width,_e=q.getBoundingClientRect().width,Le=Math.max(Oe-ze-_e-Ee*2,0);if(Le<=0)return B.value=null,null;const at={compactWidth:Le};return B.value=at,at}function Se(){if(n.mode!=="input"){Ve("compact");return}if(typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches){Ke(),ot(),Ve("expanded");return}const S=c.value;if(!S||!f.value||!C.value||!p.value)return;x.value.singleLineHeight===0&&Ke();const $=ot(),q=x.value.singleLineHeight,ne=X.value.includes(`
|
|
71
|
+
`):"":""}const E=e.computed(()=>R(n.message.content)),I=e.computed(()=>E.value.trim().length>0);function B(M){const P=f.value[M];return Array.isArray(P)?P.length>0:!!P}const j=e.computed(()=>B("onThumbsUp")),ee=e.computed(()=>B("onThumbsDown")),W=e.computed(()=>B("onReadAloud")),D=e.computed(()=>B("onRegenerate")),L=e.computed(()=>n.messages[n.messages.length-1]?.id===n.message.id),G=e.computed(()=>n.toolbarVisible&&I.value&&!(n.isRunning&&L.value));function X(){c&&clearTimeout(c),l.value=!0,c=setTimeout(()=>{l.value=!1,c=null},2e3)}async function T(){const M=E.value;if(M&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(M),X()}catch(P){console.error("Failed to copy to clipboard:",P)}}function A(){a("thumbs-up",n.message)}function F(){a("thumbs-down",n.message)}function H(){a("read-aloud",n.message)}function re(){a("regenerate",n.message)}return e.onBeforeUnmount(()=>{c&&clearTimeout(c)}),(M,P)=>e.renderSlot(M.$slots,"layout",{message:t.message,content:E.value,isRunning:t.isRunning,toolbarVisible:t.toolbarVisible,shouldShowToolbar:G.value,messageRenderer:M.$slots["message-renderer"]??(()=>null),toolbar:M.$slots.toolbar??(()=>null),copyButton:M.$slots["copy-button"]??(()=>null),thumbsUpButton:M.$slots["thumbs-up-button"]??(()=>null),thumbsDownButton:M.$slots["thumbs-down-button"]??(()=>null),readAloudButton:M.$slots["read-aloud-button"]??(()=>null),regenerateButton:M.$slots["regenerate-button"]??(()=>null),toolCallsView:M.$slots["tool-calls-view"]??(()=>null),onCopy:T,onThumbsUp:A,onThumbsDown:F,onReadAloud:H,onRegenerate:re},()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-assistant-message",class:"cpk:prose cpk:max-w-full cpk:break-words cpk:dark:prose-invert","data-message-id":t.message.id},M.$attrs),[e.renderSlot(M.$slots,"message-renderer",{message:t.message,content:E.value},()=>[I.value?(e.openBlock(),e.createBlock(e.unref(on.StreamMarkdown),{key:0,class:"copilot-chat-assistant-markdown",content:E.value,components:x,"code-block-actions":[e.unref(w),e.unref(v)],"code-block-show-line-numbers":!1,"code-block-hide-copy":!0,"code-block-hide-download":!0,"allowed-link-prefixes":["https://","http://","#","/","./","../"],"shiki-theme":{light:"github-light",dark:"github-dark"}},null,8,["content","code-block-actions"])):e.createCommentVNode("",!0)]),e.renderSlot(M.$slots,"tool-calls-view",{message:t.message,messages:t.messages},()=>[e.createVNode(An,{message:t.message,messages:t.messages},e.createSlots({_:2},[e.renderList(M.$slots,(U,_)=>({name:_,fn:e.withCtx(ae=>[e.renderSlot(M.$slots,_,e.normalizeProps(e.guardReactiveProps(ae)))])}))]),1032,["message","messages"])]),G.value?e.renderSlot(M.$slots,"toolbar",{key:0,message:t.message,shouldShowToolbar:G.value},()=>[e.createElementVNode("div",ia,[e.createElementVNode("div",la,[e.renderSlot(M.$slots,"copy-button",{onCopy:T,copied:l.value,label:s.value.assistantMessageToolbarCopyMessageLabel},()=>[e.createElementVNode("button",{"data-testid":"copilot-copy-button",type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarCopyMessageLabel,title:s.value.assistantMessageToolbarCopyMessageLabel,onClick:T},[l.value?(e.openBlock(),e.createBlock(e.unref(oe.Check),{key:0,class:"cpk:size-[18px]"})):(e.openBlock(),e.createBlock(e.unref(oe.Copy),{key:1,class:"cpk:size-[18px]"}))],10,ca)]),j.value?e.renderSlot(M.$slots,"thumbs-up-button",{key:0,onThumbsUp:A,label:s.value.assistantMessageToolbarThumbsUpLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarThumbsUpLabel,title:s.value.assistantMessageToolbarThumbsUpLabel,onClick:A},[e.createVNode(e.unref(oe.ThumbsUp),{class:"cpk:size-[18px]"})],10,ua)]):e.createCommentVNode("",!0),ee.value?e.renderSlot(M.$slots,"thumbs-down-button",{key:1,onThumbsDown:F,label:s.value.assistantMessageToolbarThumbsDownLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarThumbsDownLabel,title:s.value.assistantMessageToolbarThumbsDownLabel,onClick:F},[e.createVNode(e.unref(oe.ThumbsDown),{class:"cpk:size-[18px]"})],10,da)]):e.createCommentVNode("",!0),W.value?e.renderSlot(M.$slots,"read-aloud-button",{key:2,onReadAloud:H,label:s.value.assistantMessageToolbarReadAloudLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarReadAloudLabel,title:s.value.assistantMessageToolbarReadAloudLabel,onClick:H},[e.createVNode(e.unref(oe.Volume2),{class:"cpk:size-[20px]"})],10,pa)]):e.createCommentVNode("",!0),D.value?e.renderSlot(M.$slots,"regenerate-button",{key:3,onRegenerate:re,label:s.value.assistantMessageToolbarRegenerateLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarRegenerateLabel,title:s.value.assistantMessageToolbarRegenerateLabel,onClick:re},[e.createVNode(e.unref(oe.RefreshCw),{class:"cpk:size-[18px]"})],10,ma)]):e.createCommentVNode("",!0),e.renderSlot(M.$slots,"toolbar-items")])])]):e.createCommentVNode("",!0)],16,ra)])}});class He extends Error{constructor(o){super(o),this.name="AudioRecorderError"}}const $n=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatAudioRecorder",setup(t,{expose:o}){const n=e.useAttrs(),a=e.ref(null),r=e.ref("idle"),s=e.ref(null),i=e.ref(null),l=e.ref(null),c=e.ref(null),f=e.ref(null),C=e.ref([]),p=e.ref([]),m=e.ref(0),u=e.ref(0),h=e.ref(0);function y(){f.value!==null&&(cancelAnimationFrame(f.value),f.value=null);const v=s.value;if(v&&v.state!=="inactive")try{v.stop()}catch{}i.value&&(i.value.getTracks().forEach(x=>x.stop()),i.value=null);const w=c.value;w&&w.state!=="closed"&&w.close().catch(()=>{}),s.value=null,l.value=null,c.value=null,C.value=[],p.value=[],m.value=0,u.value=0,h.value=0}async function g(){if(r.value!=="idle")throw new He("Recorder is already active");try{const v=await navigator.mediaDevices.getUserMedia({audio:!0});i.value=v;const w=new AudioContext;c.value=w;const x=w.createMediaStreamSource(v),R=w.createAnalyser();R.fftSize=2048,x.connect(R),l.value=R;const E=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":MediaRecorder.isTypeSupported("audio/webm")?"audio/webm":MediaRecorder.isTypeSupported("audio/mp4")?"audio/mp4":"",I=E?{mimeType:E}:{},B=new MediaRecorder(v,I);s.value=B,C.value=[],B.ondataavailable=j=>{j.data.size>0&&C.value.push(j.data)},B.start(100),r.value="recording"}catch(v){throw y(),v instanceof Error&&v.name==="NotAllowedError"?new He("Microphone permission denied"):v instanceof Error&&v.name==="NotFoundError"?new He("No microphone found"):new He(v instanceof Error?v.message:"Failed to start recording")}}function b(){return new Promise((v,w)=>{const x=s.value;if(!x||r.value!=="recording"){w(new He("No active recording"));return}r.value="processing",x.onstop=()=>{const R=new Blob(C.value,{type:x.mimeType||"audio/webm"});y(),r.value="idle",v(R)},x.onerror=()=>{y(),r.value="idle",w(new He("Recording failed"))},x.stop()})}function d(v){let w=0;for(let x=0;x<v.length;x+=1){const R=(v[x]??128)/128-1;w+=R*R}return Math.sqrt(w/v.length)}function k(){const v=a.value;if(!v)return;const w=v.getContext("2d");if(!w)return;const x=v.getBoundingClientRect(),R=window.devicePixelRatio||1;(v.width!==x.width*R||v.height!==x.height*R)&&(v.width=x.width*R,v.height=x.height*R,w.scale(R,R));const E=2,B=E+1,j=Math.floor(x.width/B)+2;if(l.value&&r.value==="recording"){p.value.length===0&&(p.value=Array.from({length:j},()=>0)),h.value<1&&(h.value=Math.min(1,h.value+.03)),m.value+=1/3;const G=l.value.fftSize,X=new Uint8Array(G);l.value.getByteTimeDomainData(X);const T=d(X),H=T>u.value?.12:.08;u.value+=(T-u.value)*H,m.value>=B&&(m.value-=B,p.value.push(u.value),p.value.length>j&&(p.value=p.value.slice(-j)))}w.clearRect(0,0,x.width,x.height);const ee=window.getComputedStyle(v);w.fillStyle=ee.color,w.globalAlpha=h.value;const W=x.height/2,D=x.height/2-2,L=12;for(let G=0;G<p.value.length;G+=1){const X=p.value[G]??0,T=Math.min(X*4,1),A=Math.max(2,T*D*2),F=x.width-(p.value.length-G)*B-m.value,H=W-A/2;if(F+E<=0||F>=x.width)continue;let re=1;F<L?re=Math.max(0,F/L):F>x.width-L&&(re=Math.max(0,(x.width-F)/L)),w.globalAlpha=h.value*re,w.fillRect(F,H,E,A)}f.value=requestAnimationFrame(k)}return e.watch(r,()=>{f.value!==null&&(cancelAnimationFrame(f.value),f.value=null),f.value=requestAnimationFrame(k)},{immediate:!0}),e.onBeforeUnmount(()=>{y()}),o({get state(){return r.value},start:g,stop:b,dispose:y}),(v,w)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:w-full cpk:px-5 cpk:py-3"},e.unref(n)),[e.createElementVNode("canvas",{ref_key:"canvasRef",ref:a,class:"cpk:block cpk:h-[26px] cpk:w-full"},null,512)],16))}}),$t=e.defineComponent({__name:"InlineFeatureWarning",props:{featureName:{}},setup(t){const o={padding:"8px 12px",backgroundColor:"#fffbeb",border:"1px solid #fbbf24",borderRadius:"6px",fontSize:"13px",color:"#92400e",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif"},n={color:"#b45309",textDecoration:"underline"};return(a,r)=>(e.openBlock(),e.createElementBlock("div",{style:o,"data-testid":"copilot-inline-feature-warning"},[e.createTextVNode(' ⚠ The "'+e.toDisplayString(t.featureName)+'" feature requires a CopilotKit license. ',1),e.createElementVNode("a",{href:"https://copilotkit.ai/pricing",target:"_blank",rel:"noopener noreferrer",style:n}," Get one at copilotkit.ai/pricing ")]))}});var Mn=(t=>(t.OnMessagesChanged="OnMessagesChanged",t.OnStateChanged="OnStateChanged",t.OnRunStatusChanged="OnRunStatusChanged",t))(Mn||{});const fa=["OnMessagesChanged","OnStateChanged","OnRunStatusChanged"];function ga(t,o,n){const a=t.clone();if(a===t)throw new Error(`useAgent: ${t.constructor.name}.clone() returned the same instance. clone() must return a new, independent object.`);return a.threadId=o,a.setMessages([]),a.setState({}),a instanceof De.HttpAgent&&(a.headers={...n}),a}const St=new WeakMap;function Xt(t,o){if(!(!t||!o))return St.get(t)?.get(o)}function ha(t,o,n){let a=St.get(t);a||(a=new Map,St.set(t,a));const r=a.get(o);if(r)return r.threadId=o,r instanceof De.HttpAgent&&(r.headers={...n}),r;const s=ga(t,o,n);return a.set(o,s),s}function gt(t={}){const o=ve(),n=e.computed(()=>e.toValue(t.agentId)??o.value?.agentId??z.DEFAULT_AGENT_ID),a=e.computed(()=>e.toValue(t.threadId)??o.value?.threadId),{copilotkit:r}=be(),s=e.computed(()=>t.updates??fa),i=e.computed(()=>r.value.defaultThrottleMs),l=e.computed(()=>e.toValue(t.throttleMs)),c=e.shallowRef(null),f=e.shallowRef(null),C=new Map,p=(u,h,y,g)=>{const b=new pe.ProxiedCopilotRuntimeAgent({runtimeUrl:h,agentId:u,transport:y,runtimeMode:"pending"});return b.headers={...g},b},m=()=>{const u=n.value,h=a.value,y=h?`${u}:${h}`:u,g=r.value,b=g.getAgent(u);if(b){C.delete(y),C.delete(u);const x=h?ha(b,h,g.headers):b,R=c.value===x;c.value=x,f.value=x,R&&e.triggerRef(c);return}const d=g.runtimeUrl!==void 0,k=g.runtimeConnectionStatus;if(d&&(k===pe.CopilotKitCoreRuntimeConnectionStatus.Disconnected||k===pe.CopilotKitCoreRuntimeConnectionStatus.Connecting||k===pe.CopilotKitCoreRuntimeConnectionStatus.Error)){const x=C.get(y);if(x){x.headers={...g.headers},h&&(x.threadId=h),c.value=x,f.value=x;return}const R=p(u,g.runtimeUrl,g.runtimeTransport,g.headers);h&&(R.threadId=h),C.set(y,R),c.value=R,f.value=R;return}const v=Object.keys(g.agents??{}),w=d?`runtimeUrl=${g.runtimeUrl}`:"no runtimeUrl";throw new Error(`useAgent: Agent '${u}' not found after runtime sync (${w}). `+(v.length?`Known agents: [${v.join(", ")}]`:"No agents registered.")+" Verify your runtime /info and/or agents__unsafe_dev_only.")};return e.watch([n,()=>r.value.agents,()=>r.value.runtimeConnectionStatus,()=>r.value.runtimeUrl,()=>r.value.runtimeTransport,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([u],[h])=>u.localeCompare(h))),a],m,{immediate:!0}),e.watch([f,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([u],[h])=>u.localeCompare(h)))],([u])=>{u instanceof De.HttpAgent&&(u.headers={...r.value.headers})},{immediate:!0}),e.watch([f,s,l,i],([u,h],y,g)=>{const b=h;if(!u||b.length===0)return;let d=!0,k=!1;const v=()=>{d&&(k||(k=!0,queueMicrotask(()=>{k=!1,d&&e.triggerRef(c)})))},w={};b.includes("OnMessagesChanged")&&(w.onMessagesChanged=()=>{d&&e.triggerRef(c)}),b.includes("OnStateChanged")&&(w.onStateChanged=v),b.includes("OnRunStatusChanged")&&(w.onRunInitialized=v,w.onRunFinalized=v,w.onRunFailed=v,w.onRunErrorEvent=v);const x=r.value.subscribeToAgentWithOptions(u,w,{throttleMs:e.toValue(t.throttleMs)});g(()=>{d=!1,x.unsubscribe()})},{immediate:!0}),{agent:c}}function Bn(t={}){const{copilotkit:o}=be(),n=ve(),a=e.computed(()=>e.toValue(t.agentId)??n.value?.agentId??z.DEFAULT_AGENT_ID),r=e.ref([]),s=e.ref(!1),i=()=>{const f=o.value.getSuggestions(a.value);r.value=f.suggestions,s.value=f.isLoading};return e.watch([()=>o.value,a],()=>i(),{immediate:!0}),e.watch([()=>o.value,a],(f,C,p)=>{const m=o.value,u=a.value,h=m.subscribe({onSuggestionsChanged:({agentId:y,suggestions:g})=>{if(y!==u)return;r.value=g;const b=m.getSuggestions(u);s.value=b.isLoading},onSuggestionsStartedLoading:({agentId:y})=>{y===u&&(s.value=!0)},onSuggestionsFinishedLoading:({agentId:y})=>{y===u&&(s.value=!1)},onSuggestionsConfigChanged:()=>{const y=m.getSuggestions(u);r.value=y.suggestions,s.value=y.isLoading}});p(()=>h.unsubscribe())},{immediate:!0}),{suggestions:r,isLoading:s,reloadSuggestions:()=>{o.value.reloadSuggestions(a.value)},clearSuggestions:()=>{o.value.clearSuggestions(a.value)}}}function Vn(t){const o=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(null),s=e.ref(e.toValue(t.config)),i=e.ref(o.value),l=e.computed(()=>s.value?.enabled??!1);e.watch(()=>e.toValue(t.config),d=>{s.value=d},{immediate:!0});const c=d=>{o.value=d,i.value=d},f=d=>{c(d(i.value))};async function C(d){const k=s.value,v=k?.accept??"*/*",w=k?.maxSize??20*1024*1024,x=d.filter(E=>!z.matchesAcceptFilter(E,v));for(const E of x)k?.onUploadFailed?.({reason:"invalid-type",file:E,message:`File "${E.name}" is not accepted. Supported types: ${v}`});const R=d.filter(E=>z.matchesAcceptFilter(E,v));for(const E of R){if(z.exceedsMaxSize(E,w)){k?.onUploadFailed?.({reason:"file-too-large",file:E,message:`File "${E.name}" exceeds the maximum size of ${z.formatFileSize(w)}`});continue}const I=z.getModalityFromMimeType(E.type),B=z.randomUUID();f(j=>[...j,{id:B,type:I,source:{type:"data",value:"",mimeType:E.type},filename:E.name,size:E.size,status:"uploading"}]);try{let j,ee;if(k?.onUpload){const D=await k.onUpload(E),{metadata:L,...G}=D;j=G,ee=L}else j={type:"data",value:await z.readFileAsBase64(E),mimeType:E.type};let W;I==="video"&&(W=await z.generateVideoThumbnail(E)),f(D=>D.map(L=>L.id===B?{...L,source:j,status:"ready",thumbnail:W,metadata:ee}:L))}catch(j){f(ee=>ee.filter(W=>W.id!==B)),console.error(`[CopilotKit] Failed to upload "${E.name}":`,j),k?.onUploadFailed?.({reason:"upload-failed",file:E,message:j instanceof Error?j.message:`Failed to upload "${E.name}"`})}}}async function p(d){const k=d.target;k?.files?.length&&(await C(Array.from(k.files)),k&&(k.value=""))}function m(d){l.value&&(d.preventDefault(),d.stopPropagation(),n.value=!0)}function u(d){d.preventDefault(),d.stopPropagation(),n.value=!1}async function h(d){if(d.preventDefault(),d.stopPropagation(),n.value=!1,!l.value)return;const k=Array.from(d.dataTransfer?.files??[]);k.length>0&&await C(k)}function y(d){f(k=>k.filter(v=>v.id!==d))}function g(){const d=i.value.filter(k=>k.status==="ready");return d.length===0||(f(k=>k.filter(v=>v.status!=="ready")),a.value&&(a.value.value="")),d}async function b(d){if(!l.value)return;const k=d.target;if(!k||!r.value?.contains(k))return;const v=s.value?.accept??"*/*",x=Array.from(d.clipboardData?.items??[]).filter(E=>{if(E.kind!=="file")return!1;const I=E.getAsFile();return I!==null&&z.matchesAcceptFilter(I,v)});if(x.length===0)return;d.preventDefault();const R=x.map(E=>E.getAsFile()).filter(E=>E!==null);await C(R)}return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("paste",b)}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.removeEventListener("paste",b)}),{attachments:o,enabled:l,dragOver:n,fileInputRef:a,containerRef:r,processFiles:C,handleFileUpload:p,handleDragOver:m,handleDragLeave:u,handleDrop:h,removeAttachment:y,consumeAttachments:g}}async function va(t){return await new Promise((o,n)=>{const a=new FileReader;a.onloadend=()=>{const r=a.result;o(r.split(",")[1]??"")},a.addEventListener("error",()=>n(new Error("Failed to read audio data"))),a.readAsDataURL(t)})}function ka(t){return typeof t=="object"&&t!==null&&"error"in t&&"message"in t&&typeof t.error=="string"&&typeof t.message=="string"}function ba(t){return{code:t.error,message:t.message,retryable:t.retryable??!1}}class We extends Error{info;constructor(o){super(o.message),this.name="TranscriptionError",this.info=o}}async function ya(t,o,n="recording.webm"){const a=t.runtimeUrl;if(!a)throw new We({code:z.TranscriptionErrorCode.INVALID_REQUEST,message:"Runtime URL is not configured",retryable:!1});const r={...t.headers};let s;try{if(t.runtimeTransport==="single"){const i=await va(o);r["Content-Type"]="application/json",s=await fetch(a,{method:"POST",headers:r,body:JSON.stringify({method:"transcribe",body:{audio:i,mimeType:o.type||"audio/webm",filename:n}})})}else{delete r["Content-Type"];const i=new FormData;i.append("audio",o,n),s=await fetch(`${a}/transcribe`,{method:"POST",headers:r,body:i})}}catch(i){throw new We({code:z.TranscriptionErrorCode.NETWORK_ERROR,message:i instanceof Error?i.message:"Network request failed",retryable:!0})}if(!s.ok){let i;try{i=await s.json()}catch{throw new We({code:z.TranscriptionErrorCode.PROVIDER_ERROR,message:`HTTP ${s.status}: ${s.statusText}`,retryable:s.status>=500})}throw ka(i)?new We(ba(i)):new We({code:z.TranscriptionErrorCode.PROVIDER_ERROR,message:typeof i=="object"&&i!==null&&"message"in i?String(i.message):"Transcription failed",retryable:s.status>=500})}return await s.json()}function Fn(){const t=typeof window<"u"?window.innerHeight:0,o=e.ref(!1),n=e.ref(0),a=e.ref(t),r=e.ref(t),s=()=>{if(typeof window>"u")return;const l=window.visualViewport;if(!l)return;const c=window.innerHeight,f=l.height,C=Math.max(0,c-f),p=C>150;n.value=C,o.value=p,a.value=f,r.value=c};let i=null;return e.onMounted(()=>{typeof window>"u"||(i=window.visualViewport??null,i&&(s(),i.addEventListener("resize",s),i.addEventListener("scroll",s)))}),e.onBeforeUnmount(()=>{i&&(i.removeEventListener("resize",s),i.removeEventListener("scroll",s),i=null)}),{isKeyboardOpen:e.readonly(o),keyboardHeight:e.readonly(n),availableHeight:e.readonly(a),viewportHeight:e.readonly(r)}}const wa={id:null,sendNonce:0},Nn=Symbol("LastUserMessage");function Ca(){return e.ref({...wa})}function xa({scrollRef:t,contentRef:o,spacerRef:n,topOffset:a=16}){const r=e.inject(Nn,Ca(),!0);let s=-1,i=null,l=null;function c(){i!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(i),i=null,l?.disconnect(),l=null}e.watch([()=>r.value.id,()=>r.value.sendNonce,t,o,n,()=>a],([f,C,p,m,u],h,y)=>{if(y(c),C===s||(s=C,!f)||!p||!m||!u)return;const g=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(f):f.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&"),b=m.querySelector(`[data-message-id="${g}"]`);if(!b)return;const d=p.clientHeight,k=b.getBoundingClientRect().height,v=parseFloat(getComputedStyle(b).paddingTop)||0,w=Math.max(0,k-v),x=Math.max(0,d-w-a);u.style.height=`${x}px`,typeof requestAnimationFrame=="function"&&(i=requestAnimationFrame(()=>{const R=Qt(b,p)+v-a;p.scrollTo({top:Math.max(0,R),behavior:"smooth"})})),typeof ResizeObserver<"u"&&(l=new ResizeObserver(()=>{if(!m||!u||!p)return;const R=m.getBoundingClientRect().height,E=Qt(b,m),I=R-E-k,B=Math.max(0,x-I);u.style.height=`${B}px`}),l.observe(m))},{immediate:!0,flush:"post"})}function Qt(t,o){const n=t.getBoundingClientRect(),a=o.getBoundingClientRect();return n.top-a.top+o.scrollTop}const Sa={class:"cpk:pointer-events-auto cpk:mx-auto cpk:max-w-3xl cpk:px-4 cpk:py-0 cpk:@3xl:px-0 cpk:[div[data-sidebar-chat]_&]:px-8 cpk:[div[data-popup-chat]_&]:px-4"},Ta=["data-layout"],Ia=["data-layout"],Aa=["aria-label","disabled"],Ra={key:0,class:"cpk:my-1 cpk:h-px cpk:bg-border cpk:dark:bg-[#333333]"},Ea=["onClick"],$a={key:1,class:"cpk:flex cpk:w-full cpk:items-center cpk:justify-center cpk:px-5 cpk:py-3"},Ma=["value","placeholder","disabled"],Ba={key:0,class:"cpk:px-3 cpk:py-2 cpk:text-sm cpk:text-muted-foreground"},Va=["data-slash-index","aria-selected","data-active","onMouseenter","onMousedown"],Fa=["aria-label","disabled"],Na=["aria-label","disabled"],Oa=["aria-label","disabled"],La={class:"cpk:mr-[10px]"},Da=["disabled"],Pa={"data-testid":"copilot-chat-input-disclaimer",class:"cpk:mx-auto cpk:max-w-3xl cpk:px-4 cpk:py-3 cpk:text-center cpk:text-xs cpk:text-muted-foreground"},Xe=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatInput",props:{modelValue:{},disabled:{type:Boolean,default:!1},placeholder:{},autoFocus:{type:Boolean,default:!0},clearOnSubmit:{type:Boolean,default:!0},mode:{default:"input"},toolsMenu:{default:()=>[]},isRunning:{type:Boolean,default:!1},positioning:{default:"static"},keyboardHeight:{default:0},showDisclaimer:{type:Boolean,default:void 0},maxRows:{default:5},bottomAnchored:{type:Boolean,default:!1}},emits:["update:modelValue","submit-message","stop","add-file","start-transcribe","cancel-transcribe","finish-transcribe","finish-transcribe-with-audio"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=ve(),i=e.getCurrentInstance(),l=e.ref(null),c=e.ref(null),f=e.ref(null),C=e.ref(null),p=e.ref(null),m=e.ref(null),u=e.ref(null),h=e.ref(null),y=e.ref(n.modelValue??""),g=e.ref(!1),b=e.ref("compact"),d=e.ref(null),k=e.ref(0),v=e.ref(null),w=e.ref(!1),x=e.ref({singleLineHeight:0,maxHeight:0,paddingLeft:0,paddingRight:0}),R=e.ref(null),E=e.ref(!1),I=e.ref(null),B=e.ref(null),j=e.ref(!1),ee=e.ref(!1);let W=null,D=null;const L=e.computed(()=>i?.vnode.props??{}),G=e.computed(()=>n.modelValue!==void 0),X=e.computed(()=>G.value?n.modelValue??"":y.value),T=e.computed(()=>s.value?.labels??$e),A=e.computed(()=>n.placeholder??T.value.chatInputPlaceholder),F=e.computed(()=>n.mode==="input"&&b.value==="expanded"),H=e.computed(()=>n.mode!=="transcribe"&&n.isRunning),re=e.computed(()=>n.showDisclaimer??n.positioning==="absolute"),M=e.computed(()=>Y("onSubmitMessage")),P=e.computed(()=>Y("onStop")),U=e.computed(()=>Y("onAddFile")),_=e.computed(()=>Y("onStartTranscribe")),ae=e.computed(()=>Y("onCancelTranscribe")),le=e.computed(()=>Y("onFinishTranscribe")),de=e.computed(()=>n.mode==="input"&&!n.disabled&&M.value&&X.value.trim().length>0),ge=e.computed(()=>H.value?!P.value:!de.value),ye=e.computed(()=>[n.positioning==="absolute"&&"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none",r.class]),V=e.computed(()=>{const S={...r};return delete S.class,S});function te(S){return Array.isArray(S.items)}function Y(S){const $=L.value[S];return Array.isArray($)?$.length>0:!!$}function Te(){return U.value?{label:T.value.chatInputToolbarAddButtonLabel,action:()=>a("add-file")}:null}function Ae(){const S=[],$=Te();if($&&S.push($),n.toolsMenu.length>0){S.length>0&&S.push("-");for(const q of n.toolsMenu){if(q==="-"){if(S.length===0||S[S.length-1]==="-")continue;S.push("-");continue}S.push(q)}}for(;S.length>0&&S[S.length-1]==="-";)S.pop();return S}const fe=e.computed(()=>Ae()),se=e.computed(()=>fe.value.length>0);function ce(S){const $=new Set,q=[],ne=Ie=>{for(const ie of Ie)if(ie!=="-"){if(te(ie)&&ie.items.length>0){ne(ie.items);continue}!ie.action||$.has(ie.label)||($.add(ie.label),q.push(ie))}};return ne(S),q}const ue=e.computed(()=>ce(fe.value));function Re(S,$=0,q="root"){const ne=[];for(const[Ie,ie]of S.entries()){const Ee=`${q}-${Ie}`;if(ie==="-"){ne.push({type:"separator",key:`sep-${Ee}`});continue}if(te(ie)&&ie.items.length>0){ne.push({type:"label",key:`label-${Ee}`,label:ie.label,depth:$}),ne.push(...Re(ie.items,$+1,Ee));continue}ie.action&&ne.push({type:"item",key:`item-${Ee}`,label:ie.label,depth:$,action:ie.action})}return ne}const N=e.computed(()=>Re(fe.value)),K=e.computed(()=>{if(d.value===null||ue.value.length===0)return[];const S=d.value.trim().toLowerCase();if(S.length===0)return ue.value;const $=[],q=[];for(const ne of ue.value){const Ie=ne.label.toLowerCase();if(Ie.startsWith(S)){$.push(ne);continue}Ie.includes(S)&&q.push(ne)}return[...$,...q]}),Ce=e.computed(()=>d.value!==null&&ue.value.length>0);function Me(S){G.value||(y.value=S),a("update:modelValue",S)}function et(){Me("")}function we(S){if(ue.value.length===0){d.value=null;return}if(S.startsWith("/")){const $=S.split(/\r?\n/,1)[0]??"";d.value=$.slice(1);return}d.value=null}function tt(S){et(),S.action?.(),d.value=null,k.value=0,requestAnimationFrame(()=>{c.value?.focus()})}function O(){if(n.mode!=="input"||n.disabled||!M.value)return;const $=(c.value?.value??X.value).trim();$&&(a("submit-message",$),n.clearOnSubmit&&et(),c.value?.focus())}function Q(S){const $=S.target.value;Me($),we($)}function Z(){if(H.value){P.value&&a("stop");return}O()}function me(S){if(!n.disabled&&!(g.value||S.isComposing||S.keyCode===229)){if(d.value!==null&&n.mode==="input"){if(S.key==="ArrowDown"){K.value.length>0&&(S.preventDefault(),k.value=k.value<0?0:(k.value+1)%K.value.length);return}if(S.key==="ArrowUp"){K.value.length>0&&(S.preventDefault(),k.value<0?k.value=K.value.length-1:k.value=k.value<=0?K.value.length-1:k.value-1);return}if(S.key==="Enter"){const $=k.value>=0?K.value[k.value]:void 0;if($){S.preventDefault(),tt($);return}}if(S.key==="Escape"){S.preventDefault(),d.value=null;return}}if(S.key==="Enter"&&!S.shiftKey&&n.mode==="input"){if(S.preventDefault(),H.value){P.value&&a("stop");return}O()}}}function xe(){!se.value||n.mode==="transcribe"||n.disabled||(w.value=!w.value)}function Pe(){w.value=!1}function Be(S){S(),Pe(),e.nextTick(()=>{c.value?.focus()})}async function Ue(){const S=h.value;if(S&&S.state==="recording")try{const $=await S.stop();a("finish-transcribe-with-audio",$)}catch($){console.error("Failed to stop recording:",$)}a("finish-transcribe")}function nt(S){const $=S.target;!$||n.mode!=="input"||$.tagName==="BUTTON"||$.closest("button")||c.value?.focus()}function Ke(){const S=c.value;if(!S||g.value)return;const $=S.value,q=S.style.height;S.style.height="auto";const ne=window.getComputedStyle(S),Ie=parseFloat(ne.paddingLeft)||0,ie=parseFloat(ne.paddingRight)||0,Ee=parseFloat(ne.paddingTop)||0,Oe=parseFloat(ne.paddingBottom)||0;S.value="";const ze=S.scrollHeight;S.value=$;const Le=(ze-Ee-Oe)*n.maxRows+Ee+Oe;x.value={singleLineHeight:ze,maxHeight:Le,paddingLeft:Ie,paddingRight:ie},S.style.height=q,S.style.maxHeight=`${Le}px`}function ot(){const S=c.value;if(!S)return 0;x.value.singleLineHeight===0&&Ke();const{maxHeight:$}=x.value;$&&(S.style.maxHeight=`${$}px`),S.style.height="auto";const q=S.scrollHeight;return S.style.height=`${$?Math.min(q,$):q}px`,q}function Ve(S){b.value!==S&&(E.value=!0,b.value=S)}function ht(S){const $=window.getComputedStyle(S);if($.font?.trim())return $.font;if($.fontSize&&$.fontFamily){const q=`${$.fontStyle} ${$.fontVariant} ${$.fontWeight} ${$.fontSize}/${$.lineHeight} ${$.fontFamily}`;if(q.trim())return q}return process.env.NODE_ENV!=="production"&&!j.value&&(j.value=!0,console.warn("[CopilotChatInput] Could not resolve textarea font for layout measurement. Text-width-based expansion will be skipped until the next container resize.")),null}function Fe(){const S=f.value,$=C.value,q=p.value;if(!S||!$||!q)return B.value=null,null;const ne=window.getComputedStyle(S),Ie=parseFloat(ne.paddingLeft)||0,ie=parseFloat(ne.paddingRight)||0,Ee=parseFloat(ne.columnGap)||0,Oe=S.clientWidth-Ie-ie;if(Oe<=0)return B.value=null,null;const ze=$.getBoundingClientRect().width,_e=q.getBoundingClientRect().width,Le=Math.max(Oe-ze-_e-Ee*2,0);if(Le<=0)return B.value=null,null;const at={compactWidth:Le};return B.value=at,at}function Se(){if(n.mode!=="input"){Ve("compact");return}if(typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches){Ke(),ot(),Ve("expanded");return}const S=c.value;if(!S||!f.value||!C.value||!p.value)return;x.value.singleLineHeight===0&&Ke();const $=ot(),q=x.value.singleLineHeight,ne=X.value.includes(`
|
|
72
72
|
`),Ie=q>0?$>q+1:!1;let ie=ne||Ie;if(!ie){const Ee=B.value??Fe();if(Ee&&Ee.compactWidth>0){const Oe=Math.max(Ee.compactWidth-x.value.paddingLeft-x.value.paddingRight,0);if(Oe>0){const ze=I.value??document.createElement("canvas");I.value||(I.value=ze);const _e=ze.getContext("2d");if(_e){const Le=ht(S);if(Le){_e.font=Le;const at=X.value.length>0?X.value.split(`
|
|
73
73
|
`):[""];let vt=0;for(const Gn of at){const Lt=_e.measureText(Gn||" ").width;Lt>vt&&(vt=Lt)}vt>Oe&&(ie=!0)}}else process.env.NODE_ENV!=="production"&&!ee.value&&(ee.value=!0,console.warn("[CopilotChatInput] canvas.getContext('2d') returned null. Text-width-based expansion will be skipped."))}}}Ve(ie?"expanded":"compact")}function je(S){if(E.value){E.value=!1;return}S&&(B.value=null,j.value=!1,ee.value=!1),R.value!==null&&cancelAnimationFrame(R.value),R.value=requestAnimationFrame(()=>{R.value=null,Se()})}return e.watch(()=>n.modelValue,S=>{G.value&&(y.value=S??"")}),e.watch(X,S=>{we(S),Se()}),e.watch(ue,()=>{ue.value.length===0&&(d.value=null)}),e.watch([d,()=>K.value.length],([S,$])=>{S!==null&&S!==v.value&&$>0&&(k.value=0),v.value=S},{immediate:!0}),e.watch([d,K],()=>{if(d.value===null){k.value=0;return}if(K.value.length===0){k.value=-1;return}(k.value<0||k.value>=K.value.length)&&(k.value=0)},{immediate:!0}),e.watch(()=>n.mode,async S=>{S!=="input"&&(b.value="compact",d.value=null,Pe());const $=h.value;if($){if(S==="transcribe"){try{await $.start()}catch(q){console.error(q)}return}if($.state==="recording")try{await $.stop()}catch{}}},{immediate:!0}),e.watch(h,async S=>{if(!(!S||n.mode!=="transcribe")&&S.state==="idle")try{await S.start()}catch($){console.error($)}},{immediate:!0}),e.watch(k,async S=>{if(!Ce.value||S<0)return;await e.nextTick(),m.value?.querySelector(`[data-slash-index="${S}"]`)?.scrollIntoView?.({block:"nearest"})}),e.watch(()=>n.disabled,S=>{S&&Pe()}),e.onMounted(()=>{if(n.autoFocus&&n.mode==="input"&&c.value?.focus(),Se(),typeof ResizeObserver<"u"){const S=new Set;f.value&&S.add(f.value),C.value&&S.add(C.value),p.value&&S.add(p.value),W=new ResizeObserver($=>{const q=$.some(ne=>S.has(ne.target));je(q)}),f.value&&W.observe(f.value),C.value&&W.observe(C.value),p.value&&W.observe(p.value),c.value&&W.observe(c.value)}D=S=>{if(!w.value)return;const $=S.target;$&&(u.value?.contains($)||C.value?.contains($)||Pe())},document.addEventListener("mousedown",D)}),e.onBeforeUnmount(()=>{D&&(document.removeEventListener("mousedown",D),D=null),W?.disconnect(),W=null,R.value!==null&&(cancelAnimationFrame(R.value),R.value=null)}),(S,$)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-chat-input-container",class:ye.value,style:{transform:t.keyboardHeight>0?`translateY(-${t.keyboardHeight}px)`:void 0,transition:"transform 0.2s ease-out",...t.positioning==="absolute"||t.bottomAnchored?{paddingBottom:"var(--copilotkit-license-banner-offset, 0px)"}:{}}},V.value),[e.createElementVNode("div",Sa,[e.renderSlot(S.$slots,"layout",{mode:t.mode,isMultiline:F.value,value:X.value,disabled:t.disabled,placeholder:A.value,isProcessing:H.value,sendDisabled:ge.value,menuOpen:w.value,menuItems:N.value,onToggleMenu:xe,onMenuAction:Be,onUpdateValue:Me,onSubmit:O,onKeydown:me,onSendClick:Z,onStartTranscribe:()=>a("start-transcribe"),onCancelTranscribe:()=>a("cancel-transcribe"),onFinishTranscribe:Ue},()=>[e.createElementVNode("div",{ref_key:"shellRef",ref:l,"data-testid":"copilot-chat-input-shell",class:"cpk:flex cpk:w-full cpk:cursor-text cpk:flex-col cpk:items-center cpk:justify-center cpk:overflow-visible cpk:rounded-[28px] cpk:bg-white cpk:bg-clip-padding cpk:shadow-[0_4px_4px_0_#0000000a,0_0_1px_0_#0000009e] cpk:contain-inline-size cpk:dark:bg-[#303030]","data-layout":F.value?"expanded":"compact",onClick:nt},[e.createElementVNode("div",{ref_key:"gridRef",ref:f,class:e.normalizeClass(["cpk:grid cpk:w-full cpk:gap-x-3 cpk:gap-y-3 cpk:px-3 cpk:py-2",F.value?"cpk:grid-cols-[auto_minmax(0,1fr)_auto] cpk:grid-rows-[auto_auto]":"cpk:grid-cols-[auto_minmax(0,1fr)_auto] cpk:items-center"]),"data-layout":F.value?"expanded":"compact"},[e.createElementVNode("div",{ref_key:"addButtonContainerRef",ref:C,class:e.normalizeClass(["cpk:relative cpk:flex cpk:items-center cpk:col-start-1",F.value?"cpk:row-start-2":"cpk:row-start-1"])},[e.renderSlot(S.$slots,"add-menu-button",{disabled:t.disabled||t.mode==="transcribe"||!se.value,menuOpen:w.value,toggleMenu:xe,labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-add","aria-label":T.value.chatInputToolbarAddButtonLabel,disabled:t.disabled||t.mode==="transcribe"||!se.value,class:"cpk:ml-1 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444] cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF] cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]",onClick:e.withModifiers(xe,["stop"])},[e.createVNode(e.unref(oe.Plus),{class:"cpk:size-[20px]"})],8,Aa)]),w.value&&se.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"addMenuRef",ref:u,class:"cpk:absolute cpk:bottom-full cpk:left-0 cpk:z-30 cpk:mb-2 cpk:min-w-[220px] cpk:overflow-hidden cpk:rounded-lg cpk:border cpk:border-border cpk:bg-white cpk:shadow-lg cpk:dark:border-[#3a3a3a] cpk:dark:bg-[#1f1f1f]","data-testid":"copilot-chat-input-add-menu"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,q=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:q.key},[q.type==="separator"?(e.openBlock(),e.createElementBlock("div",Ra)):q.type==="label"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"cpk:flex cpk:items-center cpk:gap-1 cpk:px-3 cpk:py-1.5 cpk:text-xs cpk:font-semibold cpk:text-muted-foreground",style:e.normalizeStyle({paddingLeft:`${12+q.depth*12}px`})},[e.createElementVNode("span",null,e.toDisplayString(q.label),1),e.createVNode(e.unref(oe.ChevronRight),{class:"cpk:size-3"})],4)):(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",role:"menuitem",class:"cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted cpk:dark:hover:bg-[#2f2f2f]",style:e.normalizeStyle({paddingLeft:`${12+q.depth*12}px`}),onClick:ne=>Be(q.action)},e.toDisplayString(q.label),13,Ea))],64))),128))],512)):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["cpk:relative cpk:flex cpk:min-h-[50px] cpk:min-w-0 cpk:flex-col cpk:justify-center",F.value?"cpk:col-span-3 cpk:row-start-1":"cpk:col-start-2 cpk:row-start-1"])},[t.mode==="transcribe"?e.renderSlot(S.$slots,"audio-recorder",{key:0},()=>[e.createVNode($n,{ref_key:"audioRecorderRef",ref:h},null,512)]):t.mode==="processing"?(e.openBlock(),e.createElementBlock("div",$a,[e.createVNode(e.unref(oe.Loader2),{class:"cpk:size-[26px] cpk:animate-spin cpk:text-muted-foreground"})])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(S.$slots,"text-area",{value:X.value,disabled:t.disabled,placeholder:A.value,onInput:Q,onKeydown:me,autoFocus:t.autoFocus,isExpanded:F.value,rows:1,labels:T.value},()=>[e.createElementVNode("textarea",{ref_key:"textareaRef",ref:c,"data-testid":"copilot-chat-input-textarea",value:X.value,placeholder:A.value,disabled:t.disabled,rows:"1",class:e.normalizeClass(["cpk:w-full cpk:bg-transparent cpk:py-3 cpk:text-[16px] cpk:font-normal cpk:leading-relaxed cpk:text-foreground cpk:antialiased cpk:outline-none cpk:placeholder:text-[#00000077] cpk:dark:placeholder:text-[#fffc]",F.value?"cpk:px-5":"cpk:pr-5"]),style:{overflow:"auto",resize:"none"},onInput:Q,onKeydown:me,onCompositionstart:$[0]||($[0]=q=>g.value=!0),onCompositionend:$[1]||($[1]=q=>g.value=!1)},null,42,Ma)]),Ce.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"slashMenuRef",ref:m,"data-testid":"copilot-slash-menu",role:"listbox","aria-label":"Slash commands",class:"cpk:absolute cpk:bottom-full cpk:left-0 cpk:right-0 cpk:z-30 cpk:mb-2 cpk:max-h-64 cpk:overflow-y-auto cpk:rounded-lg cpk:border cpk:border-border cpk:bg-white cpk:shadow-lg cpk:dark:border-[#3a3a3a] cpk:dark:bg-[#1f1f1f]",style:{maxHeight:"200px"}},[K.value.length===0?(e.openBlock(),e.createElementBlock("div",Ba," No commands found ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(K.value,(q,ne)=>(e.openBlock(),e.createElementBlock("button",{key:`${q.label}-${ne}`,type:"button",role:"option","data-slash-index":ne,"aria-selected":ne===k.value,"data-active":ne===k.value?"true":void 0,class:e.normalizeClass(["cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted cpk:dark:hover:bg-[#2f2f2f]",ne===k.value?"cpk:bg-muted cpk:dark:bg-[#2f2f2f]":"cpk:bg-transparent"]),onMouseenter:Ie=>k.value=ne,onMousedown:e.withModifiers(Ie=>tt(q),["prevent"])},e.toDisplayString(q.label),43,Va))),128))],512)):e.createCommentVNode("",!0)],64))],2),e.createElementVNode("div",{ref_key:"actionsContainerRef",ref:p,class:e.normalizeClass(["cpk:flex cpk:items-center cpk:justify-end cpk:gap-2",F.value?"cpk:col-start-3 cpk:row-start-2":"cpk:col-start-3 cpk:row-start-1"])},[t.mode==="transcribe"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[ae.value?e.renderSlot(S.$slots,"cancel-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("cancel-transcribe"),labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-cancel-transcribe","aria-label":T.value.chatInputToolbarCancelTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-2 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]",onClick:$[2]||($[2]=q=>a("cancel-transcribe"))},[e.createVNode(e.unref(oe.X),{class:"cpk:size-[18px]"})],8,Fa)]):e.createCommentVNode("",!0),le.value?e.renderSlot(S.$slots,"finish-transcribe-button",{key:1,disabled:t.disabled,onClick:Ue,labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-finish-transcribe","aria-label":T.value.chatInputToolbarFinishTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-[10px] cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]",onClick:Ue},[e.createVNode(e.unref(oe.Check),{class:"cpk:size-[18px]"})],8,Na)]):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[_.value?e.renderSlot(S.$slots,"start-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("start-transcribe"),labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-start-transcribe","aria-label":T.value.chatInputToolbarStartTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-2 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444] cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF] cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]",onClick:$[3]||($[3]=q=>a("start-transcribe"))},[e.createVNode(e.unref(oe.Mic),{class:"cpk:size-[18px]"})],8,Oa)]):e.createCommentVNode("",!0),e.renderSlot(S.$slots,"send-button",{disabled:ge.value,isProcessing:H.value,onClick:Z},()=>[e.createElementVNode("div",La,[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-send","aria-label":"Send message",disabled:ge.value,class:"cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-black cpk:text-white cpk:transition-colors cpk:hover:opacity-70 cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:bg-[#00000014] cpk:disabled:text-[rgb(13,13,13)] cpk:disabled:hover:opacity-100 cpk:dark:bg-white cpk:dark:text-black cpk:dark:disabled:bg-[#454545] cpk:dark:disabled:text-white",onClick:Z},[H.value&&P.value?(e.openBlock(),e.createBlock(e.unref(oe.Square),{key:0,class:"cpk:size-[18px] cpk:fill-current"})):(e.openBlock(),e.createBlock(e.unref(oe.ArrowUp),{key:1,class:"cpk:size-[18px]"}))],8,Da)])])],64))],2)],10,Ia)],8,Ta)])]),re.value?e.renderSlot(S.$slots,"disclaimer",{key:0,labels:T.value},()=>[e.createElementVNode("p",Pa,e.toDisplayString(T.value.chatDisclaimerText),1)]):e.createCommentVNode("",!0)],16))}}),za=["data-card-type"],Ua={key:0,class:"cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:bg-black/40 cpk:z-10","data-testid":"copilot-chat-attachment-uploading-overlay"},ja=["onClick"],_a=["src","alt"],Ha={key:1,class:"cpk:w-full cpk:h-full cpk:relative"},Wa=["src","alt"],qa=["src"],Ka=["onClick"],Ga={key:2,class:"cpk:flex cpk:flex-col cpk:gap-1 cpk:w-full"},Ja=["src"],Xa={key:0,class:"cpk:text-xs cpk:font-medium cpk:overflow-hidden cpk:text-ellipsis cpk:whitespace-nowrap"},Qa=["onClick"],Ya={class:"cpk:w-8 cpk:h-8 cpk:rounded-md cpk:bg-primary cpk:text-primary-foreground cpk:flex cpk:items-center cpk:justify-center cpk:text-[10px] cpk:font-semibold cpk:shrink-0"},Za={class:"cpk:flex cpk:flex-col cpk:min-w-0"},es={class:"cpk:text-xs cpk:font-medium cpk:break-all cpk:leading-tight","data-testid":"copilot-chat-attachment-document-filename"},ts={key:0,class:"cpk:text-[11px] cpk:text-muted-foreground"},ns={key:2,class:"cpk:w-full cpk:h-full cpk:bg-muted-foreground/20","data-testid":"copilot-chat-attachment-placeholder"},os=["onClick"],as=["src","alt"],ss=["src"],rs=["src","title"],is={key:1,class:"cpk:w-[90vw] cpk:max-w-[800px] cpk:max-h-[90vh] cpk:overflow-auto cpk:rounded-lg cpk:bg-white cpk:dark:bg-gray-900 cpk:p-6"},ls={key:0,class:"cpk:text-sm cpk:whitespace-pre-wrap cpk:wrap-break-word cpk:text-gray-800 cpk:dark:text-gray-200 cpk:font-mono cpk:m-0","data-testid":"copilot-chat-attachment-lightbox-document-text"},cs=["src","title"],us={key:2,class:"cpk:flex cpk:flex-col cpk:items-center cpk:gap-4 cpk:p-8 cpk:rounded-lg cpk:bg-white cpk:dark:bg-gray-900","data-testid":"copilot-chat-attachment-lightbox-document-fallback"},ds={class:"cpk:w-16 cpk:h-16 cpk:rounded-xl cpk:bg-primary cpk:text-primary-foreground cpk:flex cpk:items-center cpk:justify-center cpk:text-xl cpk:font-bold"},ps={class:"cpk:text-center"},ms={class:"cpk:text-base cpk:font-medium cpk:text-gray-800 cpk:dark:text-gray-200"},fs={class:"cpk:text-sm cpk:text-gray-500 cpk:dark:text-gray-400 cpk:mt-1"},Tt=e.defineComponent({__name:"CopilotChatAttachmentQueue",props:{attachments:{default:()=>[]},className:{default:""}},emits:["remove-attachment"],setup(t,{emit:o}){const n=t,a=o,r=e.ref(null),s=e.ref(null),i=e.computed(()=>r.value!==null),l=e.computed(()=>{const g=r.value;if(!g||g.type!=="document")return!1;const b=g.source.mimeType;return u(b)||h(b)}),c=e.computed(()=>{const g=r.value;if(!g||g.type!=="document")return null;const b=g.source.mimeType;if(!h(b)||g.source.type!=="data")return null;try{return atob(g.source.value)}catch{return g.source.value}}),f=e.computed(()=>{const g=r.value;return!g||g.type!=="document"?null:g.source.type==="url"?g.source.value:s.value});e.watch(r,(g,b)=>{if(s.value&&(URL.revokeObjectURL(s.value),s.value=null),!g||g.type!=="document"||g.source.type!=="data"||typeof window>"u")return;const d=g.source.mimeType;if(!u(d)&&!h(d))return;const k=y(g.source.value,d);s.value=k},{immediate:!0}),e.watch(i,(g,b,d)=>{if(!g||typeof document>"u")return;const k=v=>{v.key==="Escape"&&p()};document.addEventListener("keydown",k),d(()=>{document.removeEventListener("keydown",k)})}),e.onBeforeUnmount(()=>{s.value&&(URL.revokeObjectURL(s.value),s.value=null)});function C(g){if(typeof document<"u"){const b=document;if(typeof b.startViewTransition=="function"){b.startViewTransition(()=>{r.value=g});return}}r.value=g}function p(){r.value=null}function m(g){return g.type==="image"||g.type==="video"?"cpk:w-[72px] cpk:h-[72px]":g.type==="audio"?"cpk:min-w-[200px] cpk:max-w-[280px] cpk:flex-col cpk:p-1 cpk:pr-8":"cpk:p-2 cpk:px-3 cpk:pr-8 cpk:max-w-[240px]"}function u(g){return!!g&&g.includes("pdf")}function h(g){return!!g&&g.startsWith("text/")}function y(g,b){try{const d=atob(g),k=new Uint8Array(d.length);for(let w=0;w<d.length;w+=1)k[w]=d.charCodeAt(w);const v=new Blob([k],{type:b||"application/octet-stream"});return URL.createObjectURL(v)}catch(d){return console.error("[CopilotKit] Failed to decode attachment data:",d),null}}return(g,b)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[n.attachments.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["cpk:flex cpk:flex-wrap cpk:gap-2 cpk:p-2",n.className]),"data-testid":"copilot-chat-attachment-queue"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.attachments,d=>(e.openBlock(),e.createElementBlock("div",{key:d.id,class:e.normalizeClass(["cpk:relative cpk:inline-flex cpk:rounded-lg cpk:overflow-hidden cpk:border cpk:border-border",m(d)]),"data-testid":"copilot-chat-attachment-item","data-card-type":d.type},[d.status==="uploading"?(e.openBlock(),e.createElementBlock("div",Ua,[...b[1]||(b[1]=[e.createElementVNode("div",{class:"cpk:w-5 cpk:h-5 cpk:border-2 cpk:border-white cpk:border-t-transparent cpk:rounded-full cpk:animate-spin"},null,-1)])])):e.createCommentVNode("",!0),d.status==="ready"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.type==="image"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"cpk:w-full cpk:h-full cpk:border-none cpk:bg-transparent cpk:p-0 cpk:cursor-pointer","data-testid":"copilot-chat-attachment-image-button",onClick:k=>C(d)},[e.createElementVNode("img",{src:e.unref(z.getSourceUrl)(d.source),alt:d.filename||"Image attachment",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-image-thumbnail"},null,8,_a)],8,ja)):d.type==="video"?(e.openBlock(),e.createElementBlock("div",Ha,[d.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:0,src:d.thumbnail,alt:d.filename||"Video thumbnail",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-thumbnail"},null,8,Wa)):(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(z.getSourceUrl)(d.source),preload:"metadata",muted:"",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-fallback"},null,8,qa)),e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:z-10 cpk:cursor-pointer cpk:bg-black/20 cpk:border-none cpk:p-0","aria-label":"Play video","data-testid":"copilot-chat-attachment-video-play",onClick:k=>C(d)},[...b[2]||(b[2]=[e.createElementVNode("div",{class:"cpk:w-8 cpk:h-8 cpk:rounded-full cpk:bg-black/60 cpk:flex cpk:items-center cpk:justify-center cpk:text-white cpk:text-xs cpk:font-semibold"}," ▶ ",-1)])],8,Ka)])):d.type==="audio"?(e.openBlock(),e.createElementBlock("div",Ga,[e.createElementVNode("audio",{src:e.unref(z.getSourceUrl)(d.source),controls:"",preload:"metadata",class:"cpk:w-full cpk:h-8","data-testid":"copilot-chat-attachment-audio-player"},null,8,Ja),d.filename?(e.openBlock(),e.createElementBlock("span",Xa,e.toDisplayString(d.filename),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:e.normalizeClass(["cpk:flex cpk:items-center cpk:gap-2 cpk:w-full cpk:border-none cpk:bg-transparent cpk:p-0 cpk:text-left",u(d.source.mimeType)||h(d.source.mimeType)?"cpk:cursor-pointer":"cpk:cursor-default"]),"data-testid":"copilot-chat-attachment-document-button",onClick:k=>(u(d.source.mimeType)||h(d.source.mimeType))&&C(d)},[e.createElementVNode("div",Ya,e.toDisplayString(e.unref(z.getDocumentIcon)(d.source.mimeType??"")),1),e.createElementVNode("div",Za,[e.createElementVNode("span",es,e.toDisplayString(d.filename||"Document"),1),d.size!=null?(e.openBlock(),e.createElementBlock("span",ts,e.toDisplayString(e.unref(z.formatFileSize)(d.size)),1)):e.createCommentVNode("",!0)])],10,Qa))],64)):(e.openBlock(),e.createElementBlock("div",ns)),e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:bg-black/60 cpk:text-white cpk:border-none cpk:rounded-full cpk:w-5 cpk:h-5 cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer cpk:text-[10px] cpk:z-20 cpk:top-1 cpk:right-1","aria-label":"Remove attachment",onClick:k=>a("remove-attachment",d.id)}," ✕ ",8,os)],10,za))),128))],2)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"cpk:fixed cpk:inset-0 cpk:z-[9999] cpk:flex cpk:items-center cpk:justify-center cpk:bg-black/80","data-testid":"copilot-chat-attachment-lightbox",onClick:p},[e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:top-4 cpk:right-4 cpk:text-white cpk:bg-white/10 cpk:hover:bg-white/20 cpk:rounded-full cpk:w-10 cpk:h-10 cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer cpk:border-none","aria-label":"Close preview",onClick:e.withModifiers(p,["stop"])}," ✕ "),e.createElementVNode("div",{"data-testid":"copilot-chat-attachment-lightbox-content",onClick:b[0]||(b[0]=e.withModifiers(()=>{},["stop"]))},[r.value.type==="image"?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(z.getSourceUrl)(r.value.source),alt:r.value.filename||"Image attachment",class:"cpk:max-w-[90vw] cpk:max-h-[90vh] cpk:object-contain cpk:rounded-lg","data-testid":"copilot-chat-attachment-lightbox-image"},null,8,as)):r.value.type==="video"?(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(z.getSourceUrl)(r.value.source),controls:"",autoplay:"",class:"cpk:max-w-[90vw] cpk:max-h-[90vh] cpk:rounded-lg","data-testid":"copilot-chat-attachment-lightbox-video"},null,8,ss)):r.value.type==="document"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[l.value&&u(r.value.source.mimeType)&&f.value?(e.openBlock(),e.createElementBlock("iframe",{key:0,src:f.value,title:r.value.filename||"PDF preview",class:"cpk:w-[90vw] cpk:h-[90vh] cpk:max-w-[1000px] cpk:rounded-lg cpk:bg-white","data-testid":"copilot-chat-attachment-lightbox-document-iframe"},null,8,rs)):l.value&&h(r.value.source.mimeType)?(e.openBlock(),e.createElementBlock("div",is,[c.value!==null?(e.openBlock(),e.createElementBlock("pre",ls,e.toDisplayString(c.value),1)):f.value?(e.openBlock(),e.createElementBlock("iframe",{key:1,src:f.value,title:r.value.filename||"Text preview",class:"cpk:w-full cpk:h-[80vh] cpk:border-none","data-testid":"copilot-chat-attachment-lightbox-document-iframe"},null,8,cs)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",us,[e.createElementVNode("div",ds,e.toDisplayString(e.unref(z.getDocumentIcon)(r.value.source.mimeType??"")),1),e.createElementVNode("div",ps,[e.createElementVNode("div",ms,e.toDisplayString(r.value.filename||"Document"),1),e.createElementVNode("div",fs,e.toDisplayString(r.value.source.mimeType||"Unknown type")+" "+e.toDisplayString(r.value.size!=null?` · ${e.unref(z.formatFileSize)(r.value.size)}`:""),1)]),b[3]||(b[3]=e.createElementVNode("div",{class:"cpk:text-xs cpk:text-gray-400 cpk:dark:text-gray-500"}," No preview available for this file type ",-1))]))],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]))],64))}}),gs=["data-message-id"],hs=["aria-expanded"],vs={class:"cpk:font-medium"},ks={key:0,class:"cpk:inline-flex cpk:items-center cpk:ml-1"},bs={class:"cpk:overflow-hidden"},ys={key:0,class:"cpk:pb-2 cpk:pt-1"},ws={class:"cpk:text-sm cpk:text-muted-foreground"},Cs={key:0,class:"cpk:inline-flex cpk:items-center cpk:ml-1 cpk:align-middle"},On=e.defineComponent({__name:"CopilotChatReasoningMessage",props:{message:{},messages:{default:()=>[]},isRunning:{type:Boolean,default:!1}},setup(t){const o=t;function n(g){if(g<1)return"a few seconds";if(g<60)return`${Math.round(g)} seconds`;const b=Math.floor(g/60),d=Math.round(g%60);return d===0?`${b} minute${b>1?"s":""}`:`${b}m ${d}s`}const a=e.computed(()=>typeof o.message.content=="string"?o.message.content:""),r=e.computed(()=>a.value.length>0),s=e.computed(()=>o.messages[o.messages.length-1]?.id===o.message.id),i=e.computed(()=>!!(o.isRunning&&s.value)),l=e.ref(0),c=e.ref(i.value),f=e.ref(!1);let C=null,p=null;function m(){p&&(clearInterval(p),p=null)}function u(){C!==null&&(l.value=(Date.now()-C)/1e3)}e.watch(i,g=>{if(g){C===null&&(C=Date.now()),m(),p=setInterval(u,1e3),f.value=!1,c.value=!0;return}m(),u(),f.value||(c.value=!1)},{immediate:!0}),e.onBeforeUnmount(()=>{m()});const h=e.computed(()=>i.value?"Thinking…":`Thought for ${n(l.value)}`);function y(){r.value&&(f.value=!0,c.value=!c.value)}return(g,b)=>(e.openBlock(),e.createElementBlock("div",{"data-copilotkit":"",class:"cpk:my-1","data-message-id":t.message.id},[e.renderSlot(g.$slots,"layout",{message:t.message,messages:t.messages,isRunning:t.isRunning,header:{isOpen:c.value,label:h.value,hasContent:r.value,isStreaming:i.value,onClick:r.value?y:void 0},contentView:{isStreaming:i.value,hasContent:r.value,content:a.value},toggle:{isOpen:c.value,contentView:{isStreaming:i.value,hasContent:r.value,content:a.value}}},()=>[e.renderSlot(g.$slots,"header",{isOpen:c.value,label:h.value,hasContent:r.value,isStreaming:i.value,onClick:r.value?y:void 0},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["cpk:inline-flex cpk:items-center cpk:gap-1 cpk:py-1 cpk:text-sm cpk:text-muted-foreground cpk:transition-colors cpk:select-none",r.value?"cpk:hover:text-foreground cpk:cursor-pointer":"cpk:cursor-default"]),"aria-expanded":r.value?c.value:void 0,onClick:b[0]||(b[0]=d=>r.value?y():void 0)},[e.createElementVNode("span",vs,e.toDisplayString(h.value),1),i.value&&!r.value?(e.openBlock(),e.createElementBlock("span",ks,[...b[1]||(b[1]=[e.createElementVNode("span",{class:"cpk:w-1.5 cpk:h-1.5 cpk:rounded-full cpk:bg-muted-foreground cpk:animate-pulse"},null,-1)])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(e.unref(oe.ChevronRight),{key:1,class:e.normalizeClass(["cpk:size-3.5 cpk:shrink-0 cpk:transition-transform cpk:duration-200",{"cpk:rotate-90":c.value}])},null,8,["class"])):e.createCommentVNode("",!0)],10,hs)]),e.renderSlot(g.$slots,"toggle",{isOpen:c.value,contentView:{isStreaming:i.value,hasContent:r.value,content:a.value}},()=>[e.createElementVNode("div",{class:"cpk:grid cpk:transition-[grid-template-rows] cpk:duration-200 cpk:ease-in-out",style:e.normalizeStyle({gridTemplateRows:c.value?"1fr":"0fr"})},[e.createElementVNode("div",bs,[e.renderSlot(g.$slots,"content-view",{isStreaming:i.value,hasContent:r.value,content:a.value},()=>[r.value||i.value?(e.openBlock(),e.createElementBlock("div",ys,[e.createElementVNode("div",ws,[e.createVNode(e.unref(on.StreamMarkdown),{content:a.value},null,8,["content"]),i.value&&r.value?(e.openBlock(),e.createElementBlock("span",Cs,[...b[2]||(b[2]=[e.createElementVNode("span",{class:"cpk:w-2 cpk:h-2 cpk:rounded-full cpk:bg-muted-foreground cpk:animate-pulse-cursor"},null,-1)])])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])])],4)])])],8,gs))}}),xs=["data-message-id"],Ss=["data-multiline"],Ts={class:"cpk:w-full cpk:bg-transparent cpk:flex cpk:items-center cpk:justify-end cpk:-mr-[5px] cpk:mt-[4px] cpk:invisible cpk:group-hover:visible"},Is={class:"cpk:flex cpk:items-center cpk:gap-1 cpk:justify-end"},As=["aria-label","title"],Rs=["aria-label","title"],Es={class:"cpk:flex cpk:items-center cpk:gap-1"},$s=["disabled"],Ms={class:"cpk:text-sm cpk:text-muted-foreground cpk:px-0 cpk:font-medium"},Bs=["disabled"],Ln=e.defineComponent({__name:"CopilotChatUserMessage",props:{message:{},branchIndex:{default:0},numberOfBranches:{default:1}},emits:["edit-message","switch-to-branch"],setup(t,{emit:o}){const n=t,a=o,r=ve(),s=e.computed(()=>r.value?.labels??$e),i=e.getCurrentInstance(),l=e.ref(!1);let c=null;const f=e.computed(()=>i?.vnode.props??{}),C=["cpk:inline-flex cpk:h-8 cpk:w-8 cpk:items-center cpk:justify-center cpk:rounded-md cpk:p-0","cpk:cursor-pointer cpk:text-[rgb(93,93,93)] cpk:transition-colors cpk:hover:bg-[#E8E8E8]","cpk:hover:text-[rgb(93,93,93)] cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]","cpk:dark:hover:text-[rgb(243,243,243)] cpk:disabled:pointer-events-none cpk:disabled:opacity-50"].join(" ");function p(I){return I?typeof I=="string"?I:I.map(B=>B&&typeof B=="object"&&"type"in B&&B.type==="text"&&typeof B.text=="string"?B.text:"").filter(B=>B.length>0).join(`
|
|
74
74
|
`):""}const m=e.computed(()=>p(n.message.content)),u=e.computed(()=>m.value.includes(`
|
|
@@ -82,4 +82,4 @@ PARAMETER ORDER IS CRITICAL — generate parameters in exactly this order:
|
|
|
82
82
|
`);function k(A){const F=l.value[A];return Array.isArray(F)?F.length>0:!!F}function v(A){return typeof A=="number"?`${A}px`:A}function w(A){return typeof A=="number"?`${A}px`:A}function x(){if(n.width!==void 0||!c.value)return;const A=c.value.getBoundingClientRect().width;A>0&&(f.value=A)}function R(){s.value?.setModalOpen?.(!1)}function E(){s.value?.setModalOpen?.(!0)}function I(){s.value?.setModalOpen?.(!p.value)}function B(A){a("submit-message",A)}function j(){a("stop")}function ee(A){a("input-change",A)}function W(A,F){a("select-suggestion",A,F)}function D(){a("add-file")}function L(){a("start-transcribe")}function G(){a("cancel-transcribe")}function X(){a("finish-transcribe")}const T=e.computed(()=>{const A={onSubmitMessage:B,onInputChange:ee,onSelectSuggestion:W};return g.value&&(A.onStop=j),k("onAddFile")&&(A.onAddFile=D),k("onStartTranscribe")&&(A.onStartTranscribe=L),k("onCancelTranscribe")&&(A.onCancelTranscribe=G),k("onFinishTranscribe")&&(A.onFinishTranscribe=X),A});return e.watch(()=>n.width,A=>{if(A!==void 0){f.value=A;return}x()}),e.onMounted(async()=>{await e.nextTick(),x(),!(n.width!==void 0||!c.value||typeof ResizeObserver>"u")&&(C=new ResizeObserver(()=>{x()}),C.observe(c.value))}),e.onBeforeUnmount(()=>{C?.disconnect(),C=null}),(A,F)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[p.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent("style"),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value),1)]),_:1})):e.createCommentVNode("",!0),e.renderSlot(A.$slots,"toggle-button",{isOpen:p.value,toggle:I,open:E,close:R},()=>[e.createVNode(Ft)]),e.createElementVNode("aside",e.mergeProps({ref_key:"sidebarRef",ref:c,"data-copilotkit":"","data-copilot-sidebar":"",class:h.value,style:b.value,"aria-label":"Copilot chat sidebar","aria-hidden":!p.value,role:"complementary"},y.value),[e.createElementVNode("div",Cr,[e.renderSlot(A.$slots,"header",{title:u.value,onClose:R,isOpen:p.value},()=>[e.createVNode(Nt,{title:u.value},null,8,["title"])]),e.createElementVNode("div",xr,[e.createVNode(Ze,e.mergeProps({messages:t.messages,"auto-scroll":t.autoScroll,"is-running":t.isRunning,suggestions:t.suggestions,"suggestion-loading-indexes":t.suggestionLoadingIndexes,"welcome-screen":t.welcomeScreen,"input-value":t.inputValue,"input-mode":t.inputMode,"input-tools-menu":t.inputToolsMenu,"on-finish-transcribe-with-audio":t.onFinishTranscribeWithAudio},T.value),e.createSlots({_:2},[A.$slots["message-view"]?{name:"message-view",fn:e.withCtx(H=>[e.renderSlot(A.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(H)))]),key:"0"}:void 0,A.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(H=>[e.renderSlot(A.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(H)))]),key:"1"}:void 0,A.$slots.feather?{name:"feather",fn:e.withCtx(()=>[e.renderSlot(A.$slots,"feather")]),key:"2"}:void 0,A.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(H=>[e.renderSlot(A.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(H)))]),key:"3"}:void 0,A.$slots.input?{name:"input",fn:e.withCtx(H=>[e.renderSlot(A.$slots,"input",e.normalizeProps(e.guardReactiveProps(H)))]),key:"4"}:void 0,A.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(H=>[e.renderSlot(A.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(H)))]),key:"5"}:void 0,A.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(H=>[e.renderSlot(A.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(H)))]),key:"6"}:void 0,A.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(A.$slots,"welcome-message")]),key:"7"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","on-finish-transcribe-with-audio"])])])],16,wr)],64))}}),Hn=e.defineComponent({inheritAttrs:!1,__name:"CopilotSidebarView",props:{width:{default:void 0},defaultOpen:{type:Boolean,default:!0},messages:{default:()=>[]},autoScroll:{type:[String,Boolean],default:!0},isRunning:{type:Boolean,default:!1},suggestions:{default:()=>[]},suggestionLoadingIndexes:{default:()=>[]},welcomeScreen:{type:Boolean,default:!0},attachments:{},dragOver:{type:Boolean},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.getCurrentInstance(),i=e.computed(()=>s?.vnode.props??{}),l=e.computed(()=>{const{defaultOpen:p,...m}=n;return m}),c=e.computed(()=>({...r,...l.value,...C.value}));function f(p){const m=i.value[p];return Array.isArray(m)?m.length>0:!!m}const C=e.computed(()=>{const p={onSubmitMessage:m=>a("submit-message",m),onStop:()=>a("stop"),onInputChange:m=>a("input-change",m),onSelectSuggestion:(m,u)=>a("select-suggestion",m,u)};return f("onAddFile")&&(p.onAddFile=()=>a("add-file")),f("onStartTranscribe")&&(p.onStartTranscribe=()=>a("start-transcribe")),f("onCancelTranscribe")&&(p.onCancelTranscribe=()=>a("cancel-transcribe")),f("onFinishTranscribe")&&(p.onFinishTranscribe=()=>a("finish-transcribe")),p});return(p,m)=>(e.openBlock(),e.createBlock(mt,{"is-modal-default-open":t.defaultOpen},{default:e.withCtx(()=>[e.createVNode(Ir,e.normalizeProps(e.guardReactiveProps(c.value)),e.createSlots({_:2},[p.$slots.header?{name:"header",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"header",e.normalizeProps(e.guardReactiveProps(u)))]),key:"0"}:void 0,p.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(u)))]),key:"1"}:void 0,p.$slots["message-view"]?{name:"message-view",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(u)))]),key:"2"}:void 0,p.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(u)))]),key:"3"}:void 0,p.$slots.feather?{name:"feather",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"feather",e.normalizeProps(e.guardReactiveProps(u)))]),key:"4"}:void 0,p.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(u)))]),key:"5"}:void 0,p.$slots.input?{name:"input",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"input",e.normalizeProps(e.guardReactiveProps(u)))]),key:"6"}:void 0,p.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(u)))]),key:"7"}:void 0,p.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(u=>[e.renderSlot(p.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(u)))]),key:"8"}:void 0,p.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(p.$slots,"welcome-message")]),key:"9"}:void 0]),1040)]),_:3},8,["is-modal-default-open"]))}}),Ar={"data-copilotkit":"",class:"cpk:h-full cpk:flex cpk:flex-col","data-testid":"copilot-sidebar-welcome-screen"},Rr={class:"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4"},Er={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},$r={class:"cpk:px-8 cpk:pb-4"},Mr={class:"cpk:max-w-3xl cpk:mx-auto"},Br={class:"cpk:mb-4 cpk:flex cpk:justify-center"},Wn=e.defineComponent({__name:"CopilotSidebarWelcomeScreen",props:{modelValue:{default:""},isRunning:{type:Boolean,default:!1},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},onUpdateModelValue:{},onSubmitMessage:{},onStop:{},onAddFile:{type:Function,default:void 0},onStartTranscribe:{type:Function,default:void 0},onCancelTranscribe:{type:Function,default:void 0},onFinishTranscribe:{type:Function,default:void 0},onFinishTranscribeWithAudio:{type:Function,default:void 0},suggestions:{default:()=>[]},loadingIndexes:{default:()=>[]},onSelectSuggestion:{}},setup(t){const o=t,n=ve(),a=e.computed(()=>n.value?.labels??$e),r=e.computed(()=>({modelValue:o.modelValue,isRunning:o.isRunning,inputMode:o.inputMode,inputToolsMenu:o.inputToolsMenu,onUpdateModelValue:o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop,onAddFile:o.onAddFile,onStartTranscribe:o.onStartTranscribe,onCancelTranscribe:o.onCancelTranscribe,onFinishTranscribe:o.onFinishTranscribe,onFinishTranscribeWithAudio:o.onFinishTranscribeWithAudio})),s=e.computed(()=>({suggestions:o.suggestions,loadingIndexes:o.loadingIndexes,onSelectSuggestion:o.onSelectSuggestion})),i=e.computed(()=>({...r.value,...s.value})),l=e.computed(()=>{const c={"onUpdate:modelValue":o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop};return o.onAddFile&&(c.onAddFile=o.onAddFile),o.onStartTranscribe&&(c.onStartTranscribe=o.onStartTranscribe),o.onCancelTranscribe&&(c.onCancelTranscribe=o.onCancelTranscribe),o.onFinishTranscribe&&(c.onFinishTranscribe=o.onFinishTranscribe),o.onFinishTranscribeWithAudio&&(c.onFinishTranscribeWithAudio=o.onFinishTranscribeWithAudio),c});return(c,f)=>e.renderSlot(c.$slots,"layout",e.normalizeProps(e.guardReactiveProps(i.value)),()=>[e.createElementVNode("div",Ar,[e.createElementVNode("div",Rr,[e.renderSlot(c.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",Er,e.toDisplayString(a.value.welcomeMessageText),1)])]),e.createElementVNode("div",$r,[e.createElementVNode("div",Mr,[e.createElementVNode("div",Br,[e.renderSlot(c.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(s.value)),()=>[e.createVNode(Qe,{suggestions:t.suggestions,"loading-indexes":t.loadingIndexes,onSelectSuggestion:t.onSelectSuggestion},null,8,["suggestions","loading-indexes","onSelectSuggestion"])])]),e.renderSlot(c.$slots,"input",e.normalizeProps(e.guardReactiveProps(r.value)),()=>[e.createVNode(Xe,e.mergeProps({"model-value":t.modelValue,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0},l.value),null,16,["model-value","is-running","mode","tools-menu"])])])])])])}}),Vr=e.defineComponent({__name:"CopilotPopup",props:{width:{default:void 0},height:{default:void 0},clickOutsideToClose:{type:Boolean,default:!1},defaultOpen:{type:Boolean,default:!0},agentId:{},threadId:{},throttleMs:{},labels:{},attachments:{},onError:{},autoScroll:{type:[String,Boolean],default:!0},welcomeScreen:{type:Boolean,default:!0},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t){function o(s){return{onSubmitMessage:s.onSubmitMessage,onInputChange:s.onInputChange,onSelectSuggestion:s.onSelectSuggestion,...s.onStop?{onStop:s.onStop}:{},...s.onAddFile?{onAddFile:s.onAddFile}:{},...s.onStartTranscribe?{onStartTranscribe:s.onStartTranscribe}:{},...s.onCancelTranscribe?{onCancelTranscribe:s.onCancelTranscribe}:{},...s.onFinishTranscribe?{onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=ft(),r=e.computed(()=>a.value.checkFeature("popup"));return e.watch(r,s=>{s||console.warn('[CopilotKit] Warning: "popup" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock($t,{key:0,"feature-name":"Popup"})),e.createVNode(Mt,e.mergeProps(n,{onSubmitMessage:i[0]||(i[0]=l=>s.$emit("submit-message",l)),onStop:i[1]||(i[1]=l=>s.$emit("stop")),onInputChange:i[2]||(i[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:i[3]||(i[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:i[4]||(i[4]=l=>s.$emit("add-file")),onStartTranscribe:i[5]||(i[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:i[6]||(i[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:i[7]||(i[7]=l=>s.$emit("finish-transcribe"))}),{"chat-view":e.withCtx(l=>[s.$slots["chat-view"]?e.renderSlot(s.$slots,"chat-view",e.normalizeProps(e.mergeProps({key:0},l))):(e.openBlock(),e.createBlock(jn,e.mergeProps({key:1,messages:l.messages,"auto-scroll":l.autoScroll,"is-running":l.isRunning,suggestions:l.suggestions,"suggestion-loading-indexes":l.suggestionLoadingIndexes,"welcome-screen":l.welcomeScreen,"input-value":l.inputValue,"input-mode":l.inputMode,"input-tools-menu":l.inputToolsMenu,width:t.width,height:t.height,"click-outside-to-close":t.clickOutsideToClose,"default-open":t.defaultOpen,"on-finish-transcribe-with-audio":l.onFinishTranscribeWithAudio},o(l)),e.createSlots({"welcome-screen":e.withCtx(c=>[s.$slots["welcome-screen"]?e.renderSlot(s.$slots,"welcome-screen",e.normalizeProps(e.mergeProps({key:0},c))):(e.openBlock(),e.createBlock(_n,e.normalizeProps(e.mergeProps({key:1},c)),e.createSlots({_:2},[s.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"welcome-message")]),key:"0"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(f=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(f=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(f)))]),key:"2"}:void 0]),1040))]),_:2},[s.$slots.header?{name:"header",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"header",e.normalizeProps(e.guardReactiveProps(c)))]),key:"0"}:void 0,s.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(c)))]),key:"1"}:void 0,s.$slots["message-view"]?{name:"message-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"2"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(c)))]),key:"3"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"4"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","width","height","click-outside-to-close","default-open","on-finish-transcribe-with-audio"]))]),_:3},16)],64))}}),Fr=e.defineComponent({__name:"CopilotSidebar",props:{width:{default:void 0},defaultOpen:{type:Boolean,default:!0},agentId:{},threadId:{},throttleMs:{},labels:{},attachments:{},onError:{},autoScroll:{type:[String,Boolean],default:!0},welcomeScreen:{type:Boolean,default:!0},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t){function o(s){return{onSubmitMessage:s.onSubmitMessage,onInputChange:s.onInputChange,onSelectSuggestion:s.onSelectSuggestion,...s.onStop?{onStop:s.onStop}:{},...s.onAddFile?{onAddFile:s.onAddFile}:{},...s.onStartTranscribe?{onStartTranscribe:s.onStartTranscribe}:{},...s.onCancelTranscribe?{onCancelTranscribe:s.onCancelTranscribe}:{},...s.onFinishTranscribe?{onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=ft(),r=e.computed(()=>a.value.checkFeature("sidebar"));return e.watch(r,s=>{s||console.warn('[CopilotKit] Warning: "sidebar" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock($t,{key:0,"feature-name":"Sidebar"})),e.createVNode(Mt,e.mergeProps(n,{onSubmitMessage:i[0]||(i[0]=l=>s.$emit("submit-message",l)),onStop:i[1]||(i[1]=l=>s.$emit("stop")),onInputChange:i[2]||(i[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:i[3]||(i[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:i[4]||(i[4]=l=>s.$emit("add-file")),onStartTranscribe:i[5]||(i[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:i[6]||(i[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:i[7]||(i[7]=l=>s.$emit("finish-transcribe"))}),{"chat-view":e.withCtx(l=>[s.$slots["chat-view"]?e.renderSlot(s.$slots,"chat-view",e.normalizeProps(e.mergeProps({key:0},l))):(e.openBlock(),e.createBlock(Hn,e.mergeProps({key:1,messages:l.messages,"auto-scroll":l.autoScroll,"is-running":l.isRunning,suggestions:l.suggestions,"suggestion-loading-indexes":l.suggestionLoadingIndexes,"welcome-screen":l.welcomeScreen,"input-value":l.inputValue,"input-mode":l.inputMode,"input-tools-menu":l.inputToolsMenu,width:t.width,"default-open":t.defaultOpen,"on-finish-transcribe-with-audio":l.onFinishTranscribeWithAudio},o(l)),e.createSlots({"welcome-screen":e.withCtx(c=>[s.$slots["welcome-screen"]?e.renderSlot(s.$slots,"welcome-screen",e.normalizeProps(e.mergeProps({key:0},c))):(e.openBlock(),e.createBlock(Wn,e.normalizeProps(e.mergeProps({key:1},c)),e.createSlots({_:2},[s.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"welcome-message")]),key:"0"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(f=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(f=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(f)))]),key:"2"}:void 0]),1040))]),_:2},[s.$slots.header?{name:"header",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"header",e.normalizeProps(e.guardReactiveProps(c)))]),key:"0"}:void 0,s.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(c)))]),key:"1"}:void 0,s.$slots["message-view"]?{name:"message-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"2"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(c)))]),key:"3"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"4"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","width","default-open","on-finish-transcribe-with-audio"]))]),_:3},16)],64))}}),Nr=Object.assign(Mt,{View:Ze}),Or=Object.assign(Ft,{OpenIcon:Vt,CloseIcon:Bt}),Lr=Object.assign(Nt,{Title:Un,CloseButton:zn}),Dr=Object.assign(jn,{WelcomeScreen:_n}),Pr=Object.assign(Hn,{WelcomeScreen:Wn});function zr(t){const{copilotkit:o}=be(),n=e.computed(()=>e.toValue(t.description)),a=e.computed(()=>e.toValue(t.value)),r=e.computed(()=>typeof a.value=="string"?a.value:JSON.stringify(a.value));e.watch([()=>o.value,n,r],(s,i,l)=>{const c=o.value,f=c.addContext({description:n.value,value:r.value});l(()=>c.removeContext(f))},{immediate:!0})}const Ur=[];function Ot(t,o){const{copilotkit:n}=be(),a=o??Ur;e.watch([()=>t.name,()=>t.available,()=>a.length,...a],(r,s,i)=>{const l=n.value,c=t.name;l.getTool({toolName:c,agentId:t.agentId})&&(console.warn(`Tool '${c}' already exists for agent '${t.agentId||"global"}'. Overriding with latest registration.`),l.removeTool(c,t.agentId)),l.addTool(t),t.render&&l.addHookRenderToolCall({name:c,args:t.parameters,agentId:t.agentId,render:t.render}),i(()=>{l.removeTool(c,t.agentId)})},{immediate:!0})}function jr(t,o){const n=`Use this tool to display the "${t.name}" component in the chat. This tool renders a visual UI component for the user.`,a=t.description?`${n}
|
|
83
83
|
|
|
84
84
|
${t.description}`:n;Ot({name:t.name,description:a,parameters:t.parameters,render:({args:r})=>{const s=t.render;return e.h(s,r)},agentId:t.agentId},o)}const _r=[];function qn(t,o){const{copilotkit:n}=be(),a=o??_r;e.watch([()=>n.value,()=>t.name,()=>t.agentId,()=>a.length,...a],()=>{const r=i=>typeof t.render=="function"?t.render(i):e.h(t.render,i),s=t.name==="*"&&!t.parameters?ct({name:"*",render:i=>r({...i,parameters:i.args}),...t.agentId?{agentId:t.agentId}:{}}):ct({name:t.name,args:t.parameters,render:i=>r({...i,parameters:i.args}),...t.agentId?{agentId:t.agentId}:{}});n.value.addHookRenderToolCall(s)},{immediate:!0})}const en=new Set;function Hr(t){switch(t){case pe.ToolCallStatus.Complete:return"complete";case pe.ToolCallStatus.Executing:return"executing";case pe.ToolCallStatus.InProgress:return"inProgress";default:{const o=String(t);return en.has(o)||(en.add(o),console.warn(`[CopilotKit] Unknown ToolCallStatus "${o}" in default tool-call renderer; falling back to "inProgress".`)),"inProgress"}}}function bt(t){const o=t.parameters!==void 0?t.parameters:t.args,n=t.status,a=n==="inProgress"||n==="executing"||n==="complete"?n:Hr(n);return{name:t.name,toolCallId:t.toolCallId,parameters:o,status:a,result:t.result}}function tn(t){try{return JSON.stringify(t,null,2)}catch(o){console.warn("[CopilotKit] Failed to JSON.stringify tool-call payload for default renderer; falling back to String():",o);try{return String(t)}catch(n){return console.warn("[CopilotKit] safeStringifyForPre: value could not be stringified:",n),"[unserializable]"}}}const Wr=e.defineComponent({props:{name:{type:String,required:!0},toolCallId:{type:String,required:!0},parameters:{type:null,required:!1,default:void 0},status:{type:String,required:!0},result:{type:null,required:!1,default:void 0}},setup(t){const o=e.ref(!1);return()=>{const n=t.status==="inProgress"||t.status==="executing",a=t.status==="complete",r=n?"Running":a?"Done":t.status;return e.h("div",{"data-testid":"copilot-tool-render","data-tool-name":t.name,"data-tool-call-id":t.toolCallId,"data-status":t.status,"data-args":nn(t.parameters),"data-result":nn(t.result),style:{marginTop:"8px",paddingBottom:"8px"}},[e.h("div",{style:{borderRadius:"12px",border:"1px solid #e4e4e7",backgroundColor:"#fafafa",padding:"14px 16px"}},[e.h("button",{type:"button","aria-expanded":String(o.value),onClick:()=>{o.value=!o.value},style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",cursor:"pointer",border:"none",padding:0,margin:0,background:"transparent",textAlign:"left"}},[e.h("span",{"data-testid":"copilot-tool-render-name",style:{fontWeight:"600"}},t.name),e.h("span",{"data-testid":"copilot-tool-render-status"},r)]),o.value?e.h("div",{style:{marginTop:"12px"}},[e.h("div","Arguments"),e.h("pre",tn(t.parameters??{})),t.result!==void 0?e.h("div",[e.h("div","Result"),e.h("pre",typeof t.result=="string"?t.result:tn(t.result))]):null]):null])])}}});function nn(t){if(t==null)return"";if(typeof t=="string")return t;try{return JSON.stringify(t)}catch(o){console.warn("[CopilotKit] Failed to JSON.stringify tool-call payload for data-* attribute; falling back to String():",o);try{return String(t)}catch(n){return console.warn("[CopilotKit] safeStringifyForAttr: value could not be stringified:",n),""}}}function qr(t,o){const n=t?.render;let a;if(typeof n=="function"){const r=n;a=(s=>{const i=bt(s);return r(i)})}else if(n){const r=n;a=(s=>{const i=bt(s);return e.h(r,{name:i.name,toolCallId:i.toolCallId,parameters:i.parameters,status:i.status,result:i.result})})}else a=(r=>{const s=bt(r);return e.h(Wr,{name:s.name,toolCallId:s.toolCallId,parameters:s.parameters,status:s.status,result:s.result})});qn({name:"*",render:a},o)}function Kr(t,o){const{copilotkit:n}=be(),a=e.ref(null),r=async c=>{a.value&&(a.value(c),a.value=null)},l={...t,handler:async()=>new Promise(c=>{a.value=c}),render:c=>{const f=t.render;return c.status==="inProgress"?e.h(f,{...c,name:t.name,description:t.description||"",respond:void 0}):c.status==="executing"?e.h(f,{...c,name:t.name,description:t.description||"",respond:r}):c.status==="complete"?e.h(f,{...c,name:t.name,description:t.description||"",respond:void 0}):e.h(f,c)}};Ot(l,o),e.onScopeDispose(()=>{n.value.removeHookRenderToolCall(t.name,t.agentId)})}function Gr(t){return"instructions"in t}function Jr(t){return t.map(o=>({...o,isLoading:o.isLoading??!1}))}function Xr(t,o){const{copilotkit:n}=be(),a=ve(),r=o??[],s=e.computed(()=>a.value?.agentId??z.DEFAULT_AGENT_ID),i=e.computed(()=>t?t.consumerAgentId:void 0),l=e.computed(()=>{if(!t||t.available==="disabled")return null;if(Gr(t))return{...t};const g=Jr(t.suggestions);return{...t,suggestions:g}}),c=e.computed(()=>l.value?JSON.stringify(l.value):null),f=e.computed(()=>{if(!l.value)return s.value;const g=l.value.consumerAgentId;return!g||g==="*"?s.value:g}),C=e.computed(()=>i.value===void 0||i.value==="*"),p=e.ref(!1),m=e.ref(null),u=e.ref(null),h=()=>{if(!p.value||!C.value)return;if(Object.values(n.value.agents??{}).some(b=>!!b.agentId&&b.isRunning)){m.value=setTimeout(()=>{m.value=null,h()},0);return}p.value=!1,y()},y=()=>{if(l.value){if(C.value){let g=!1;const b=Object.values(n.value.agents??{});for(const d of b){const k=d.agentId;k&&(d.isRunning?g=!0:n.value.reloadSuggestions(k))}p.value=g,g&&m.value===null&&(m.value=setTimeout(()=>{m.value=null,h()},0));return}f.value&&n.value.reloadSuggestions(f.value)}};e.watch([()=>n.value,c],([g,b],d,k)=>{if(!b||!l.value)return;const v=n.value,w=l.value,x=v.addSuggestionsConfig(w);y(),k(()=>v.removeSuggestionsConfig(x))},{immediate:!0}),e.watch([l,c],([g,b])=>{if(!g){u.value=null;return}b&&u.value===b||(b&&(u.value=b),y())},{immediate:!1}),e.watch([l,()=>r.length,...r],([g])=>{!g||r.length===0||y()},{immediate:!0}),e.watch([()=>n.value,p],(g,b,d)=>{d(()=>{m.value!==null&&(clearTimeout(m.value),m.value=null)})},{immediate:!0}),e.watch([()=>n.value,C],([g,b],d,k)=>{if(!b)return;const v=Object.values(g.agents??{}).filter(w=>!!w).map(w=>w.subscribe({onRunStartedEvent:h,onRunFinishedEvent:h,onRunFinalized:h,onRunFailed:h,onRunErrorEvent:h}));k(()=>{for(const w of v)w.unsubscribe()})},{immediate:!0})}const Kn="on_interrupt";function Qr(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof Reflect.get(t,"then")=="function"}function Yr(t){return t instanceof Promise?t:new Promise((o,n)=>{try{t.then(o,n)}catch(a){n(a)}})}function yt(t){return t.kind==="legacy"?t.event:{name:Kn,value:t.interrupts[0]}}function Zr(t={}){const{copilotkit:o}=be(),{agent:n}=gt({agentId:t.agentId}),a=e.shallowRef(null),r=e.shallowRef(null),s={};e.watch(n,(u,h,y)=>{if(!u){a.value=null,r.value=null;return}let g=null,b=null;const d=u.subscribe({onCustomEvent:({event:k})=>{k.name===Kn&&(g={name:k.name,value:k.value})},onRunFinishedEvent:k=>{k.outcome==="interrupt"&&(b=k.interrupts)},onRunStartedEvent:()=>{g=null,b=null;for(const k of Object.keys(s))delete s[k];a.value=null},onRunFinalized:()=>{b&&b.length>0?a.value={kind:"standard",interrupts:b}:g&&(a.value={kind:"legacy",event:g}),g=null,b=null},onRunFailed:()=>{g=null,b=null;for(const k of Object.keys(s))delete s[k];a.value=null}});y(()=>d.unsubscribe())},{immediate:!0});const i=async u=>{if(!u.every(d=>s[d.id]))return;const y=u.find(d=>De.isInterruptExpired(d));if(y){console.error(`[CopilotKit] useInterrupt: interrupt ${y.id} expired at ${y.expiresAt}; not resuming.`);for(const d of Object.keys(s))delete s[d];a.value=null;return}const g=De.buildResumeArray(u,s);for(const d of Object.keys(s))delete s[d];const b=n.value;if(b)try{return await o.value.runAgent({agent:b,resume:g})}catch(d){throw console.error("[CopilotKit] useInterrupt resolve: runAgent rejected; clearing pending + rethrowing",d),a.value=null,d}},l=async(u,h)=>{const y=a.value;if(!y)return;const g=n.value;if(!g)return;if(y.kind==="legacy"){const d=y.event.value;try{return await o.value.runAgent({agent:g,forwardedProps:{command:{resume:u,interruptEvent:d}}})}catch(k){throw console.error("[CopilotKit] useInterrupt resolve: runAgent rejected; clearing pending + rethrowing",k),a.value=null,k}}y.interrupts.length>1&&h===void 0&&console.warn(`[CopilotKit] useInterrupt: resolve()/cancel() called without an interruptId while ${y.interrupts.length} interrupts are open; defaulting to the first. Pass an interruptId to address a specific interrupt.`);const b=h??y.interrupts[0]?.id;if(b)return s[b]={status:"resolved",payload:u},i(y.interrupts)},c=async u=>{const h=a.value;if(!h)return;if(h.kind==="legacy"){console.warn("[CopilotKit] useInterrupt: cancel() is not supported for legacy on_interrupt interrupts; dismissing."),a.value=null;return}h.interrupts.length>1&&u===void 0&&console.warn(`[CopilotKit] useInterrupt: resolve()/cancel() called without an interruptId while ${h.interrupts.length} interrupts are open; defaulting to the first. Pass an interruptId to address a specific interrupt.`);const y=u??h.interrupts[0]?.id;if(y)return s[y]={status:"cancelled"},i(h.interrupts)},f=l,C=c;e.watch(a,(u,h,y)=>{if(!u){r.value=null;return}const g=yt(u);if(t.enabled&&!t.enabled(g)){r.value=null;return}const b=t.handler;if(!b){r.value=null;return}let d=!1;const k=b({event:g,interrupt:u.kind==="standard"?u.interrupts[0]??null:null,interrupts:u.kind==="standard"?u.interrupts:[],resolve:l,cancel:c});Qr(k)?Yr(k).then(v=>{d||(r.value=v)}).catch(v=>{d||(console.error("[CopilotKit] useInterrupt handler failed:",v),r.value=null)}):r.value=k,y(()=>{d=!0})},{immediate:!0});const p=e.computed(()=>a.value?yt(a.value):null),m=e.computed(()=>{const u=a.value;if(!u)return null;const h=yt(u);return t.enabled&&!t.enabled(h)?null:{event:h,interrupt:u.kind==="standard"?u.interrupts[0]??null:null,interrupts:u.kind==="standard"?u.interrupts:[],result:r.value,resolve:l,cancel:c}});return e.watch([()=>o.value,m,()=>t.renderInChat!==!1],([u,h,y],g,b)=>{if(!y)return;u.setInterruptState(h);const d=h;b(()=>{u.interruptState===d&&u.setInterruptState(null)})},{immediate:!0}),e.onScopeDispose(()=>{const u=o.value;t.renderInChat!==!1&&u.interruptState===m.value&&u.setInterruptState(null)}),{interrupt:p,result:r,hasInterrupt:e.computed(()=>m.value!==null),resolve:l,resolveInterrupt:f,cancel:c,cancelInterrupt:C,slotProps:m}}function Ge(t,o,n){n.value=o(t.getState());const a=t.select(o).subscribe(()=>{n.value=o(t.getState())});e.onScopeDispose(()=>a.unsubscribe())}function ei(t){const{copilotkit:o}=be(),n=pe.ɵcreateThreadStore({fetch:globalThis.fetch}),a=e.computed(()=>e.toValue(t.agentId)),r=e.computed(()=>e.toValue(t.includeArchived)),s=e.computed(()=>e.toValue(t.limit)),i=e.computed(()=>JSON.stringify(Object.entries(o.value.headers??{}).sort(([b],[d])=>b.localeCompare(d)))),l=e.ref([]),c=e.ref(!1),f=e.ref(null),C=e.ref(!1),p=e.ref(!1);Ge(n,pe.ɵselectThreads,l),Ge(n,pe.ɵselectThreadsIsLoading,c),Ge(n,pe.ɵselectThreadsError,f),Ge(n,pe.ɵselectHasNextPage,C),Ge(n,pe.ɵselectIsFetchingNextPage,p),n.start(),e.onScopeDispose(()=>{n.stop()});const m=e.ref(!1);e.watch([()=>o.value.runtimeUrl,()=>o.value.runtimeConnectionStatus,i,()=>o.value.intelligence?.wsUrl,a,r,s],([b,d,,k,v,w,x])=>{if(!b){n.setContext(null);return}if(d!==pe.CopilotKitCoreRuntimeConnectionStatus.Connected)return;const R={runtimeUrl:b,headers:{...o.value.headers},wsUrl:k,agentId:v,includeArchived:w,limit:x};n.setContext(R),m.value=!0},{immediate:!0});const u=e.computed(()=>o.value.runtimeUrl?null:new Error("Runtime URL is not configured")),h=e.computed(()=>!!o.value.runtimeUrl&&!m.value),y=e.computed(()=>u.value?!1:h.value||c.value),g=e.computed(()=>u.value??f.value);return{threads:e.computed(()=>l.value.map(({id:b,agentId:d,name:k,archived:v,createdAt:w,updatedAt:x,lastRunAt:R})=>({id:b,agentId:d,name:k,archived:v,createdAt:w,updatedAt:x,...R!==void 0?{lastRunAt:R}:{}}))),isLoading:y,error:g,hasMoreThreads:C,isFetchingMoreThreads:p,fetchMoreThreads:()=>n.fetchNextPage(),renameThread:(b,d)=>n.renameThread(b,d),archiveThread:b=>n.archiveThread(b),deleteThread:b=>n.deleteThread(b)}}function ti(t){const{agent:o}=gt({agentId:t});return e.computed(()=>{const n=o.value;if(n&&"capabilities"in n)return n.capabilities})}function ni(){const{copilotkit:t}=be(),o=ve();return function(a){const r=o.value;if(!r)return null;const s=r.agentId||z.DEFAULT_AGENT_ID,{threadId:i}=r,l=t.value,c=[...l.renderCustomMessages].filter(w=>w.agentId===void 0||w.agentId===s).sort((w,x)=>{const R=w.agentId!==void 0,E=x.agentId!==void 0;return R===E?0:R?-1:1});if(!c.length)return null;const{message:f,position:C}=a,p=l.getRunIdForMessage(s,i,f.id)??l.getRunIdsForThread(s,i).slice(-1)[0],m=p??`missing-run-id:${f.id}`,u=l.getAgent(s);if(!u)return null;const h=p?u.messages.filter(w=>l.getRunIdForMessage(s,i,w.id)===p).map(w=>w.id):[f.id],y=u.messages.findIndex(w=>w.id===f.id);y<0&&console.warn(`[CopilotKit] useRenderCustomMessages: message "${f.id}" not found in agent "${s}" messages`);const g=Math.max(0,y),b=p?Math.max(h.indexOf(f.id),0):0,d=p?h.length:1,k=p?l.getStateByRun(s,i,p):void 0,v={message:f,position:C,runId:m,messageIndex:g,messageIndexInRun:b,numberOfMessagesInRun:d,agentId:s,stateSnapshot:k};for(const w of c)if(w.render)return{renderer:w.render,props:v};return null}}function oi(){const{copilotkit:t}=be(),o=ve(),n=e.computed(()=>o.value?.agentId??z.DEFAULT_AGENT_ID),a=e.computed(()=>[...t.value.renderActivityMessages]);function r(i){const l=a.value;if(!l.length)return null;const c=l.filter(f=>f.activityType===i);return c.find(f=>f.agentId===n.value)??c.find(f=>f.agentId===void 0)??l.find(f=>f.activityType==="*")??null}function s(i){const l=r(i.activityType);if(!l)return null;const c=l.content.safeParse(i.content);if(!c.success)return console.warn(`Failed to parse content for activity message '${i.activityType}':`,c.error),null;const f=t.value.getAgent(n.value);return{renderer:l.render,props:{activityType:i.activityType,content:c.data,message:i,agent:f}}}return{renderActivityMessage:s,findRenderer:r}}exports.A2UIActivityContentSchema=io;exports.A2UISurfaceActivityType=ro;exports.CopilotChat=Nr;exports.CopilotChatDefaultLabels=$e;exports.CopilotChatToggleButton=Or;exports.CopilotChatToggleButtonCloseIcon=Bt;exports.CopilotChatToggleButtonOpenIcon=Vt;exports.CopilotKitCoreVue=dn;exports.CopilotModalHeader=Lr;exports.CopilotPopupView=Dr;exports.CopilotSidebarView=Pr;exports.GenerateSandboxedUiArgsSchema=bn;exports.LicenseContextKey=Et;exports.MCPAppsActivityContentSchema=cn;exports.MCPAppsActivityRenderer=un;exports.MCPAppsActivityType=ln;exports.OpenGenerativeUIActivityRenderer=wn;exports.OpenGenerativeUIActivityType=vn;exports.OpenGenerativeUIContentSchema=kn;exports.OpenGenerativeUIRenderer=yn;exports.OpenGenerativeUIToolRenderer=Cn;exports.UseAgentUpdate=Mn;exports._sfc_main=In;exports._sfc_main$1=En;exports._sfc_main$10=Qe;exports._sfc_main$11=An;exports._sfc_main$12=Ln;exports._sfc_main$13=Ze;exports._sfc_main$14=an;exports._sfc_main$15=Yo;exports._sfc_main$16=Vr;exports._sfc_main$17=Fr;exports._sfc_main$2=Tt;exports._sfc_main$3=rr;exports._sfc_main$4=$n;exports._sfc_main$5=mt;exports._sfc_main$6=Xe;exports._sfc_main$7=Dn;exports._sfc_main$8=On;exports._sfc_main$9=Pn;exports.createA2UIMessageRenderer=pn;exports.createDefaultLicenseRef=xn;exports.defineToolCallRenderer=ct;exports.extractCompleteStyles=fn;exports.getOperationSurfaceId=Ct;exports.processPartialHtml=gn;exports.useAgent=gt;exports.useAgentContext=zr;exports.useAttachments=Vn;exports.useCapabilities=ti;exports.useComponent=jr;exports.useConfigureSuggestions=Xr;exports.useCopilotChatConfiguration=ve;exports.useCopilotKit=be;exports.useDefaultRenderTool=qr;exports.useFrontendTool=Ot;exports.useHumanInTheLoop=Kr;exports.useInterrupt=Zr;exports.useKatexStyles=Rn;exports.useKeyboardHeight=Fn;exports.useLicenseContext=ft;exports.useRenderActivityMessage=oi;exports.useRenderCustomMessages=ni;exports.useRenderTool=qn;exports.useSandboxFunctions=hn;exports.useSuggestions=Bn;exports.useThreads=ei;exports.vueBasicCatalog=qe;
|
|
85
|
-
//# sourceMappingURL=use-render-activity-message-
|
|
85
|
+
//# sourceMappingURL=use-render-activity-message-BqgmNPCz.cjs.map
|