@copilotkit/vue 1.75.1 → 1.75.2
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/dist/index.cjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/use-render-activity-message-CGdS03Xj.cjs +85 -0
- package/dist/use-render-activity-message-CGdS03Xj.cjs.map +1 -0
- package/dist/{use-render-activity-message-xvpuaGyf.js → use-render-activity-message-XmuT9fKy.js} +2382 -2390
- package/dist/use-render-activity-message-XmuT9fKy.js.map +1 -0
- package/dist/v2/components/chat/CopilotChatMessageView.vue.d.ts.map +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.mjs +1 -1
- package/package.json +5 -5
- package/src/v2/components/chat/CopilotChatMessageView.vue +41 -30
- package/src/v2/components/chat/__tests__/CopilotChatMessageView.slotMetaCost.test.ts +187 -0
- package/dist/use-render-activity-message-BOPauH9X.cjs +0 -85
- package/dist/use-render-activity-message-BOPauH9X.cjs.map +0 -1
- package/dist/use-render-activity-message-xvpuaGyf.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";var Xn=Object.create;var Dt=Object.defineProperty;var Yn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var eo=Object.getPrototypeOf,to=Object.prototype.hasOwnProperty;var no=(t,o,n,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of Zn(o))!to.call(t,i)&&i!==n&&Dt(t,i,{get:()=>o[i],enumerable:!(a=Yn(o,i))||a.enumerable});return t};var gt=(t,o,n)=>(n=t!=null?Xn(eo(t)):{},no(o||!t||!t.__esModule?Dt(n,"default",{value:t,enumerable:!0}):n,t));const e=require("vue"),X=require("zod"),Z=require("@copilotkit/core"),_=require("@copilotkit/shared"),St=require("zod-to-json-schema"),ut=require("@a2ui/web_core/v0_9"),he=require("@a2ui/web_core/v0_9/basic_catalog"),Qe=require("@ag-ui/client"),oe=require("lucide-vue-next"),nn=require("streamdown-vue"),oo="1.75.2",on=e.defineComponent({inheritAttrs:!1,__name:"CopilotKitInspector",props:{core:{},openRequest:{}},setup(t){const o=t,n=e.useAttrs(),a=e.shallowRef(null),i=e.shallowRef(null);let s=!0,r=null;const l={created(c){r?.(c,o.core??null),i.value=c,o.openRequest&&c.openInspector?.("message_toolbar",o.openRequest)}};return e.onMounted(()=>{import("@copilotkit/web-inspector").then(c=>{s&&(c.defineWebInspector?.(),r=(u,d)=>c.configureWebInspectorElement(u,d,{development:process.env.NODE_ENV==="development",framework:"vue",sdkVersion:oo}),a.value=c.WEB_INSPECTOR_TAG)}).catch(c=>{console.error("Failed to load CopilotKit inspector:",c)})}),e.onUnmounted(()=>{s=!1,i.value=null}),e.watch(()=>o.core,c=>{i.value&&(i.value.core=c??null)}),e.watch(()=>o.openRequest,c=>{c&&i.value?.openInspector?.("message_toolbar",c)}),(c,u)=>a.value?e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},e.unref(n))),null,16)),[[l]]):e.createCommentVNode("",!0)}}),an=Symbol("CopilotKit"),kt=Symbol("CopilotChatConfiguration"),sn=Symbol("SandboxFunctions"),ao=Symbol("CopilotKitInspector");function Ce(){const t=e.inject(an);if(!t)throw new Error("useCopilotKit must be used within CopilotKitProvider");return t}const so="2025-06-18";function ro(t){const o="'self' 'wasm-unsafe-eval' 'unsafe-inline' 'unsafe-eval' blob: data: http://localhost:* https://localhost:*",n="* blob: data: http://localhost:* https://localhost:*",a=t?.length?` ${t.join(" ")}`:"",i=`${o}${a}`,s=`${n}${a}`;return`<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src * data: blob: 'unsafe-inline'; media-src * blob: data:; font-src * blob: data:; script-src ${i}; style-src * blob: data: 'unsafe-inline'; connect-src *; frame-src ${s}; base-uri 'self';" />
|
|
6
|
+
<style>html,body{margin:0;padding:0;height:100%;width:100%;overflow:hidden}*{box-sizing:border-box}iframe{background-color:transparent;border:none;padding:0;overflow:hidden;width:100%;height:100%}</style>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<script>
|
|
10
|
+
if(window.self===window.top){throw new Error("This file must be used in an iframe.")}
|
|
11
|
+
const inner=document.createElement("iframe");
|
|
12
|
+
inner.style="width:100%;height:100%;border:none;";
|
|
13
|
+
inner.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms");
|
|
14
|
+
document.body.appendChild(inner);
|
|
15
|
+
window.addEventListener("message",async(event)=>{
|
|
16
|
+
if(event.source===window.parent){
|
|
17
|
+
if(event.data&&event.data.method==="ui/notifications/sandbox-resource-ready"){
|
|
18
|
+
const{html,sandbox}=event.data.params;
|
|
19
|
+
if(typeof sandbox==="string")inner.setAttribute("sandbox",sandbox);
|
|
20
|
+
if(typeof html==="string")inner.srcdoc=html;
|
|
21
|
+
}else if(inner&&inner.contentWindow){
|
|
22
|
+
inner.contentWindow.postMessage(event.data,"*");
|
|
23
|
+
}
|
|
24
|
+
}else if(event.source===inner.contentWindow){
|
|
25
|
+
window.parent.postMessage(event.data,"*");
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
window.parent.postMessage({jsonrpc:"2.0",method:"ui/notifications/sandbox-proxy-ready",params:{}},"*");
|
|
29
|
+
<\/script>
|
|
30
|
+
</body>
|
|
31
|
+
</html>`}class io{queues=new Map;processing=new Map;async enqueue(o,n){const a=o.threadId||"default";return new Promise((i,s)=>{let r=this.queues.get(a);r||(r=[],this.queues.set(a,r)),r.push({execute:n,resolve:i,reject:s}),this.processQueue(a,o)})}async processQueue(o,n){if(!this.processing.get(o)){this.processing.set(o,!0);try{const a=this.queues.get(o);if(!a)return;for(;a.length>0;){const i=a[0];try{await this.waitForAgentIdle(n);const s=await i.execute();i.resolve(s)}catch(s){i.reject(s instanceof Error?s:new Error(String(s)))}a.shift()}}finally{this.processing.set(o,!1)}}}cancel(o){const n=this.queues.get(o);if(n){for(const a of n)a.reject(new Error("MCPAppsRequestQueue cancelled on unmount"));n.length=0}this.queues.delete(o),this.processing.delete(o)}waitForAgentIdle(o){return new Promise((n,a)=>{if(!o.isRunning){n();return}let i=!1;const s=setTimeout(()=>{i||(i=!0,clearInterval(c),l.unsubscribe(),a(new Error("[CopilotKit] Timed out waiting for agent to become idle")))},3e4),r=()=>{i||(i=!0,clearTimeout(s),clearInterval(c),l.unsubscribe(),n())},l=o.subscribe({onRunFinalized:r,onRunFailed:r}),c=setInterval(()=>{o.isRunning||r()},500)})}}const st=new io,rn="mcp-apps",ln=X.z.object({result:X.z.object({content:X.z.array(X.z.any()).optional(),structuredContent:X.z.any().optional(),isError:X.z.boolean().optional()}),resourceUri:X.z.string(),serverHash:X.z.string(),serverId:X.z.string().optional(),toolInput:X.z.record(X.z.string(),X.z.unknown()).optional()});function lo(t){return"id"in t&&"method"in t}function co(t){return!("id"in t)&&"method"in t}const cn=e.defineComponent({name:"MCPAppsActivityRenderer",props:{activityType:{type:String,required:!0},content:{type:Object,required:!0},message:{type:Object,required:!0},agent:{type:Object,required:!1,default:void 0}},setup(t){const{copilotkit:o}=Ce(),n=e.ref(null),a=e.ref(null),i=e.ref(!1),s=e.ref(null),r=e.ref(!0),l=e.ref({}),c=e.ref(null),u=e.ref({inProgress:!1,promise:null,resourceUri:null}),d=v=>{a.value?.contentWindow&&a.value.contentWindow.postMessage(v,"*")},k=(v,g)=>{d({jsonrpc:"2.0",id:v,result:g})},y=(v,g,b)=>{d({jsonrpc:"2.0",id:v,error:{code:g,message:b}})},p=(v,g)=>{d({jsonrpc:"2.0",method:v,params:g||{}})};e.watch([()=>t.agent,()=>t.content],([v,g])=>{r.value=!0,s.value=null,i.value=!1,l.value={},c.value=null;const{resourceUri:b,serverHash:f,serverId:S}=g;if(u.value.inProgress&&u.value.resourceUri===b){u.value.promise?.then(A=>{A&&(c.value=A,r.value=!1)}).catch(A=>{s.value=A instanceof Error?A:new Error(String(A)),r.value=!1});return}if(!v){s.value=new Error("No agent available to fetch resource"),r.value=!1;return}u.value.inProgress=!0,u.value.resourceUri=b;const w=(async()=>{try{const E=(await st.enqueue(v,()=>v.runAgent({forwardedProps:{__proxiedMCPRequest:{serverHash:f,serverId:S,method:"resources/read",params:{uri:b}}}}))).result?.contents?.[0];if(!E)throw new Error("No resource content in response");return E}finally{u.value.inProgress=!1}})();u.value.promise=w,w.then(A=>{A&&(c.value=A,r.value=!1)}).catch(A=>{s.value=A instanceof Error?A:new Error(String(A)),r.value=!1})},{immediate:!0}),e.watch([r,c],([v,g],b,f)=>{if(v||!g)return;const S=n.value;if(!S)return;let w=!0,A=null,h=null,E=null;(async()=>{try{const R=document.createElement("iframe");E=R,R.style.width="100%",R.style.height="100px",R.style.border="none",R.style.backgroundColor="transparent",R.style.display="block",R.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),R.setAttribute("data-testid","mcp-app-iframe"),R.setAttribute("title","Interactive MCP application");const B=new Promise(j=>{h=C=>{C.source===R.contentWindow&&C.data?.method==="ui/notifications/sandbox-proxy-ready"&&(h&&(window.removeEventListener("message",h),h=null),j())},window.addEventListener("message",h)});if(!w){h&&(window.removeEventListener("message",h),h=null);return}const F=c.value?._meta?.ui?.csp?.resourceDomains;if(R.srcdoc=ro(F),a.value=R,S.appendChild(R),await B,!w)return;A=async j=>{if(j.source!==R.contentWindow)return;const C=j.data;if(!(!C||typeof C!="object"||C.jsonrpc!=="2.0")){if(lo(C))switch(C.method){case"ui/initialize":{k(C.id,{protocolVersion:so,hostInfo:{name:"CopilotKit MCP Apps Host",version:"1.0.0"},hostCapabilities:{openLinks:{},logging:{}},hostContext:{theme:"light",platform:"web"}});break}case"ui/message":{const I=t.agent;if(!I){k(C.id,{isError:!1});break}try{const L=C.params,$=L?.role||"user",O=L?.content?.filter(M=>M.type==="text"&&M.text).map(M=>M.text).join(`
|
|
32
|
+
`)||"";O&&I.addMessage({id:_.randomUUID(),role:$,content:O}),k(C.id,{isError:!1}),(L?.followUp??$==="user")&&O&&st.enqueue(I,()=>o.value.runAgent({agent:I})).catch(M=>{console.error("[MCPAppsRenderer] ui/message agent run failed:",M)})}catch(L){console.error("[CopilotKit] MCPApps ui/message handler error:",L),k(C.id,{isError:!0})}break}case"ui/open-link":{const I=C.params?.url;if(!I){y(C.id,-32602,"Missing url parameter");break}window.open(I,"_blank","noopener,noreferrer"),k(C.id,{isError:!1});break}case"tools/call":{const{serverHash:I,serverId:L}=t.content,$=t.agent;if(!I){y(C.id,-32603,"No server hash available for proxying");break}if(!$){y(C.id,-32603,"No agent available for proxying");break}try{const O=await st.enqueue($,()=>$.runAgent({forwardedProps:{__proxiedMCPRequest:{serverHash:I,serverId:L,method:"tools/call",params:C.params}}}));k(C.id,O.result||{})}catch(O){y(C.id,-32603,String(O))}break}default:y(C.id,-32601,`Method not found: ${C.method}`)}if(co(C))switch(C.method){case"ui/notifications/initialized":w&&(i.value=!0);break;case"ui/notifications/size-changed":{const{width:I,height:L}=C.params||{};w&&(l.value={width:typeof I=="number"?I:void 0,height:typeof L=="number"?L:void 0});break}}}},window.addEventListener("message",A);const N=g.text?g.text:g.blob?atob(g.blob):null;if(!N)throw new Error("Resource has no text or blob content");p("ui/notifications/sandbox-resource-ready",{html:N})}catch(R){w&&(s.value=R instanceof Error?R:new Error(String(R)))}})(),f(()=>{w=!1,h&&(window.removeEventListener("message",h),h=null),A&&window.removeEventListener("message",A),E&&(E.remove(),E=null),a.value=null})},{flush:"post"}),e.watch(l,v=>{a.value&&(v.width!==void 0&&(a.value.style.minWidth=`min(${v.width}px, 100%)`,a.value.style.width="100%"),v.height!==void 0&&(a.value.style.height=`${v.height}px`))},{deep:!0}),e.watch([i,()=>t.content.toolInput],([v,g])=>{v&&g&&p("ui/notifications/tool-input",{arguments:g})},{deep:!0}),e.watch([i,()=>t.content.result],([v,g])=>{v&&g&&p("ui/notifications/tool-result",g)},{deep:!0});const m=e.computed(()=>c.value?._meta?.ui?.prefersBorder!==!0?{}:{borderRadius:"8px",backgroundColor:"#f9f9f9",border:"1px solid #e0e0e0"});return e.onBeforeUnmount(()=>{const v=t.agent?.threadId||"default";st.cancel(v)}),()=>e.h("div",{ref:n,style:{width:"100%",height:l.value.height!==void 0?`${l.value.height}px`:"auto",minHeight:"100px",overflow:"hidden",position:"relative",...m.value}},[r.value?e.h("div",{style:{padding:"1rem",color:"#666"}},"Loading..."):null,s.value?e.h("div",{style:{color:"red",padding:"1rem"}},`Error: ${s.value.message}`):null])}}),uo="a2ui-surface",po=X.z.object({operations:X.z.array(X.z.record(X.z.string(),X.z.unknown()))});function yt(t){return t.surfaceId??t.beginRendering?.surfaceId??t.surfaceUpdate?.surfaceId??t.dataModelUpdate?.surfaceId??t.deleteSurface?.surfaceId??t.createSurface?.surfaceId??t.updateComponents?.surfaceId??t.updateDataModel?.surfaceId??"default"}class un extends Z.CopilotKitCore{_renderToolCalls=[];_hookRenderToolCalls=new Map;_cachedMergedRenderToolCalls=null;_renderCustomMessages=[];_renderActivityMessages=[];_interruptState=null;constructor(o){super(o),this._renderToolCalls=o.renderToolCalls??[],this._renderCustomMessages=o.renderCustomMessages??[],this._renderActivityMessages=o.renderActivityMessages??[]}get renderCustomMessages(){return this._renderCustomMessages}get renderActivityMessages(){return this._renderActivityMessages}setRenderActivityMessages(o){this._renderActivityMessages=[...o]}setRenderCustomMessages(o){this._renderCustomMessages=[...o],this.notifySubscribers(n=>{n.onRenderCustomMessagesChanged?.({copilotkit:this,renderCustomMessages:[...this.renderCustomMessages]})},"Subscriber onRenderCustomMessagesChanged error:")}get propRenderToolCalls(){return this._renderToolCalls}get renderToolCalls(){if(this._hookRenderToolCalls.size===0)return this._renderToolCalls;if(this._cachedMergedRenderToolCalls)return this._cachedMergedRenderToolCalls;const o=new Map;for(const n of this._renderToolCalls)o.set(`${n.agentId??""}:${n.name}`,n);for(const[n,a]of this._hookRenderToolCalls)o.set(n,a);return this._cachedMergedRenderToolCalls=Array.from(o.values()),this._cachedMergedRenderToolCalls}get interruptState(){return this._interruptState}setRenderToolCalls(o){this._renderToolCalls=[...o],this._cachedMergedRenderToolCalls=null,this._notifyRenderToolCallsChanged()}addHookRenderToolCall(o){const n=`${o.agentId??""}:${o.name}`;this._hookRenderToolCalls.set(n,o),this._cachedMergedRenderToolCalls=null,this._notifyRenderToolCallsChanged()}removeHookRenderToolCall(o,n){const a=`${n??""}:${o}`;this._hookRenderToolCalls.delete(a)&&(this._cachedMergedRenderToolCalls=null,this._notifyRenderToolCallsChanged())}_notifyRenderToolCallsChanged(){this.notifySubscribers(o=>{const n=o;n.onRenderToolCallsChanged&&n.onRenderToolCallsChanged({copilotkit:this,renderToolCalls:[...this.renderToolCalls]})},"Subscriber onRenderToolCallsChanged error:")}setInterruptState(o){this._interruptState=o,this.notifySubscribers(n=>{n.onInterruptStateChanged?.({copilotkit:this,interruptState:this._interruptState})},"Subscriber onInterruptStateChanged error:")}subscribe(o){return super.subscribe(o)}async waitForPendingFrameworkUpdates(){await e.nextTick()}}const Ot="a2ui_operations",mo=e.defineComponent({name:"DefaultA2UILoading",setup(){const t=[.8,.6,.4];return()=>e.h("div",{class:"cpk:flex cpk:flex-col cpk:gap-3 cpk:rounded-xl cpk:border cpk:border-gray-100 cpk:bg-gray-50/50 cpk:p-5",style:{minHeight:"120px"},"data-testid":"a2ui-loading"},[e.h("div",{class:"cpk:flex cpk:items-center cpk:gap-2"},[e.h("div",{class:"cpk:h-3 cpk:w-3 cpk:rounded-full cpk:bg-gray-200",style:{animation:"cpk-a2ui-pulse 1.5s ease-in-out infinite"},"data-testid":"a2ui-loading-dot"}),e.h("span",{class:"cpk:text-xs cpk:font-medium cpk:text-gray-400"},"Generating UI...")]),e.h("div",{class:"cpk:flex cpk:flex-col cpk:gap-2"},t.map((o,n)=>e.h("div",{key:n,class:"cpk:h-3 cpk:rounded cpk:bg-gray-200/70",style:{width:`${o*100}%`,animation:`cpk-a2ui-pulse 1.5s ease-in-out ${n*.15}s infinite`},"data-testid":"a2ui-loading-bar"}))),e.h("style",{},`@keyframes cpk-a2ui-pulse {
|
|
33
|
+
0%, 100% { opacity: 0.4; }
|
|
34
|
+
50% { opacity: 1; }
|
|
35
|
+
}`)])}});function dn(t){return{activityType:"a2ui-surface",content:X.z.any(),render:e.defineComponent({name:"A2UIMessageRendererHost",props:{activityType:{type:String,required:!0},content:{type:Object,required:!0},message:{type:Object,required:!0},agent:{type:Object,required:!1,default:void 0}},setup(o){const n=e.computed(()=>Array.isArray(o.content?.[Ot])?o.content[Ot]:[]);return()=>n.value.length===0?t.loadingComponent?e.h(t.loadingComponent):e.h(mo):e.h(In,{activityType:"a2ui-surface",content:{operations:n.value},message:o.message,agent:o.agent,theme:t.theme,catalog:t.catalog})}})}}function ct(t){const o=t.name==="*"&&!t.args?X.z.any():t.args;return{name:t.name,args:o,render:t.render,...t.agentId?{agentId:t.agentId}:{}}}const ht="render_a2ui";function fo(t,o){e.watch([()=>t.value,o],([n,a],i,s)=>{if(!a)return;const r=ct({name:ht,args:X.z.any(),render:({status:c,args:u})=>{if(c==="complete")return null;const d=u,k=d?.items;if(Array.isArray(k)&&k.length>0)return null;const y=d?.components;return Array.isArray(y)&&y.length>2?null:go(u)}}),l=n.propRenderToolCalls;n.setRenderToolCalls([...l.filter(c=>c.name!==ht),r]),s(()=>{const c=n.propRenderToolCalls;n.setRenderToolCalls(c.filter(u=>u.name!==ht)),wt.clear()})},{immediate:!0})}const wt=new Map;function go(t){const o=t,n=typeof o?.name=="string"?o.name:"__default__";let a=wt.get(n);a||(a={lastTime:0,lastTokens:0},wt.set(n,a));const i=Date.now();let s=a.lastTokens;if(i-a.lastTime>200){const k=JSON.stringify(t??{}).length;s=Math.round(k/4),a.lastTime=i,a.lastTokens=s}const r=s<50?0:s<200?1:s<400?2:3,l=()=>e.h("div",{style:{width:"7px",height:"7px",borderRadius:"50%",backgroundColor:"#d4d4d8",flexShrink:0}}),c=()=>e.h("div",{style:{width:"12px"}}),u=(k,y,p,m,v,g)=>e.h("div",{style:{width:`${k}px`,height:`${y}px`,borderRadius:"9999px",backgroundColor:p,...m!==void 0?{animation:`cpk-a2ui-fade 2.4s ease-in-out ${m}s infinite`}:{},...v!==void 0?{opacity:v}:{},...g?{transition:g}:{}}}),d=(k,y,p)=>e.h("div",{style:{display:"flex",alignItems:"center",gap:"6px",opacity:k?1:0,transition:`opacity 0.4s ${y}s`}},p);return e.h("div",{style:{margin:"12px 0",maxWidth:"320px"}},[e.h("div",{style:{position:"relative",overflow:"hidden",borderRadius:"12px",border:"1px solid rgba(228,228,231,0.8)",backgroundColor:"#fff",boxShadow:"0 1px 2px rgba(0,0,0,0.04)",padding:"16px 18px 14px"}},[e.h("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px"}},[e.h("div",{style:{display:"flex",gap:"4px"}},[l(),l(),l()]),u(64,6,"#e4e4e7",void 0,r>=1?1:.4,"opacity 0.5s")]),e.h("div",{style:{display:"grid",gap:"7px"}},[d(r>=0,0,[u(36,7,"rgba(147,197,253,0.7)",0),u(80,7,"rgba(219,234,254,0.8)",.2)]),d(r>=0,.1,[c(),l(),u(100,7,"rgba(24,24,27,0.2)",.3)]),d(r>=1,.15,[c(),u(48,7,"rgba(24,24,27,0.15)",.1),u(40,7,"rgba(153,246,228,0.6)",.5),u(56,7,"rgba(147,197,253,0.6)",.3)]),d(r>=1,.2,[c(),l(),u(60,7,"rgba(24,24,27,0.15)",.4)]),d(r>=2,.25,[u(40,7,"rgba(153,246,228,0.5)",.2),l(),u(48,7,"rgba(24,24,27,0.15)",.6),u(64,7,"rgba(147,197,253,0.5)",.1)]),d(r>=2,.3,[u(36,7,"rgba(147,197,253,0.6)",.5),u(36,7,"rgba(24,24,27,0.12)",.7)]),d(r>=3,.35,[l(),u(44,7,"rgba(24,24,27,0.18)",.3),l(),u(56,7,"rgba(153,246,228,0.5)",.8),u(48,7,"rgba(147,197,253,0.5)",.4)])]),e.h("div",{style:{pointerEvents:"none",position:"absolute",inset:"0",background:"linear-gradient(105deg, transparent 0%, transparent 40%, rgba(255,255,255,0.6) 50%, transparent 60%, transparent 100%)",backgroundSize:"250% 100%",animation:"cpk-a2ui-sweep 3s ease-in-out infinite"}})]),e.h("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",marginTop:"8px"}},[e.h("span",{style:{fontSize:"12px",color:"#a1a1aa",letterSpacing:"0.025em"}},"Building interface"),...s>0?[e.h("span",{style:{fontSize:"11px",color:"#d4d4d8",fontVariantNumeric:"tabular-nums"}},`~${s.toLocaleString()} tokens`)]:[]]),e.h("style",`
|
|
36
|
+
@keyframes cpk-a2ui-fade {
|
|
37
|
+
0%, 100% { opacity: 1; }
|
|
38
|
+
50% { opacity: 0.5; }
|
|
39
|
+
}
|
|
40
|
+
@keyframes cpk-a2ui-sweep {
|
|
41
|
+
0% { background-position: 250% 0; }
|
|
42
|
+
100% { background-position: -250% 0; }
|
|
43
|
+
}
|
|
44
|
+
`)])}function ke(t,o,n){const a=e.defineComponent({name:`A2UI_${t.name}`,props:{context:{type:Object,required:!0},buildChild:{type:Function,required:!0}},setup(i){const s=e.ref({});let r=null;const l=n?n():void 0;function c(u){r&&r.dispose(),r=new ut.GenericBinder(u,t.schema),s.value=r.snapshot,r.subscribe(d=>{s.value=d})}return c(i.context),e.watch(()=>i.context,u=>{c(u)}),e.onUnmounted(()=>{r&&(r.dispose(),r=null)}),()=>o({props:s.value,buildChild:i.buildChild,context:i.context,state:l})}});return{name:t.name,schema:t.schema,render:a}}const Pe="8px",ho="16px",Ze="1px solid #ccc",dt="8px",pn=t=>{switch(t){case"center":return"center";case"end":return"flex-end";case"spaceAround":return"space-around";case"spaceBetween":return"space-between";case"spaceEvenly":return"space-evenly";case"start":return"flex-start";case"stretch":return"stretch";default:return"flex-start"}},xt=t=>{switch(t){case"start":return"flex-start";case"center":return"center";case"end":return"flex-end";case"stretch":return"stretch";default:return"stretch"}},nt=()=>({margin:Pe,boxSizing:"border-box"}),vo=()=>({margin:Pe,padding:ho,border:Ze,borderRadius:dt,boxSizing:"border-box"});function Tt(t,o){return Array.isArray(t)?t.map(n=>{if(n&&typeof n=="object"&&"id"in n){const a=n;return o(a.id,a.basePath)}return typeof n=="string"?o(n):null}).filter(n=>n!==null):[]}let bo=0;function pt(){return`a2ui-vue-${++bo}`}const ko=ke(he.TextApi,({props:t})=>{const o=t.text??"",n={...nt(),display:"inline-block"};switch(t.variant){case"h1":return e.h("h1",{style:n},o);case"h2":return e.h("h2",{style:n},o);case"h3":return e.h("h3",{style:n},o);case"h4":return e.h("h4",{style:n},o);case"h5":return e.h("h5",{style:n},o);case"caption":return e.h("small",{style:{...n,color:"#666",textAlign:"left"}},o);default:return e.h("span",{style:n},o)}}),yo=ke(he.ImageApi,({props:t})=>{const o=a=>a==="scaleDown"?"scale-down":a||"fill",n={...nt(),objectFit:o(t.fit),width:"100%",height:"auto",display:"block"};return t.variant==="icon"?(n.width="24px",n.height="24px"):t.variant==="avatar"?(n.width="40px",n.height="40px",n.borderRadius="50%"):t.variant==="smallFeature"?n.maxWidth="100px":t.variant==="largeFeature"?n.maxHeight="400px":t.variant==="header"&&(n.height="200px",n.objectFit="cover"),e.h("img",{src:t.url,alt:t.description||"",style:n})}),wo=ke(he.IconApi,({props:t})=>{const o=typeof t.name=="string"?t.name:t.name?.path,n={...nt(),fontSize:"24px",width:"24px",height:"24px",display:"inline-flex",alignItems:"center",justifyContent:"center"};return e.h("span",{class:"material-symbols-outlined",style:n},o)}),Co=ke(he.VideoApi,({props:t})=>{const o={...nt(),width:"100%",aspectRatio:"16/9"};return e.h("video",{src:t.url,controls:!0,style:o})}),So=ke(he.AudioPlayerApi,({props:t})=>{const o={...nt(),width:"100%"};return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%"}},[t.description?e.h("span",{style:{fontSize:"12px",color:"#666"}},t.description):null,e.h("audio",{src:t.url,controls:!0,style:o})])}),xo=ke(he.RowApi,({props:t,buildChild:o})=>e.h("div",{style:{display:"flex",flexDirection:"row",justifyContent:pn(t.justify),alignItems:xt(t.align),width:"100%",margin:"0",padding:"0"}},Tt(t.children,o))),To=ke(he.ColumnApi,({props:t,buildChild:o})=>e.h("div",{style:{display:"flex",flexDirection:"column",justifyContent:pn(t.justify),alignItems:xt(t.align),width:"100%",margin:"0",padding:"0"}},Tt(t.children,o))),Io=ke(he.ListApi,({props:t,buildChild:o})=>{const n=t.direction==="horizontal",a={display:"flex",flexDirection:n?"row":"column",alignItems:xt(t.align),overflowX:n?"auto":"hidden",overflowY:n?"hidden":"auto",width:"100%",margin:"0",padding:"0"};return e.h("div",{style:a},Tt(t.children,o))}),Ao=ke(he.CardApi,({props:t,buildChild:o})=>{const n={...vo(),backgroundColor:"#fff",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",width:"100%"};return e.h("div",{style:n},[t.child?o(t.child):null])}),Ro=ke(he.TabsApi,({props:t,buildChild:o,state:n})=>{const a=t.tabs||[];return e.h("div",{style:{display:"flex",flexDirection:"column",width:"100%",margin:Pe}},[e.h("div",{style:{display:"flex",borderBottom:"1px solid #ccc",marginBottom:"8px"}},a.map((i,s)=>{const r=typeof i.title=="string"?i.title:String(i.title??"");return e.h("button",{key:s,onClick:()=>{n.selectedIndex.value=s},style:{padding:"8px 16px",border:"none",background:"none",borderBottom:n.selectedIndex.value===s?"2px solid var(--a2ui-primary-color, #007bff)":"none",fontWeight:n.selectedIndex.value===s?"bold":"normal",cursor:"pointer",color:n.selectedIndex.value===s?"var(--a2ui-primary-color, #007bff)":"inherit"}},r)})),e.h("div",{style:{flex:"1"}},[a[n.selectedIndex.value]?.child?o(a[n.selectedIndex.value].child):null])])},()=>({selectedIndex:e.ref(0)})),Eo=ke(he.DividerApi,({props:t})=>{const o=t.axis==="vertical",n={margin:Pe,border:"none",backgroundColor:"#ccc"};return o?(n.width="1px",n.height="100%"):(n.width="100%",n.height="1px"),e.h("div",{style:n})}),Mo=ke(he.ModalApi,({props:t,buildChild:o,state:n})=>e.h("div",{},[e.h("div",{onClick:()=>{n.isOpen.value=!0},style:{display:"inline-block"}},[t.trigger?o(t.trigger):null]),n.isOpen.value?e.h("div",{style:{position:"fixed",top:"0",left:"0",right:"0",bottom:"0",backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:"1000"},onClick:()=>{n.isOpen.value=!1}},[e.h("div",{style:{backgroundColor:"#fff",padding:"24px",borderRadius:"8px",maxWidth:"90%",maxHeight:"90%",overflow:"auto",display:"flex",flexDirection:"column"},onClick:a=>a.stopPropagation()},[e.h("div",{style:{display:"flex",justifyContent:"flex-end"}},[e.h("button",{onClick:()=>{n.isOpen.value=!1},style:{border:"none",background:"none",fontSize:"20px",cursor:"pointer",padding:"4px"}},"×")]),e.h("div",{style:{flex:"1"}},[t.content?o(t.content):null])])]):null]),()=>({isOpen:e.ref(!1)})),$o=ke(he.ButtonApi,({props:t,buildChild:o})=>{const n={margin:Pe,padding:"8px 16px",cursor:"pointer",border:t.variant==="borderless"?"none":"1px solid #ccc",backgroundColor:t.variant==="primary"?"var(--a2ui-primary-color, #007bff)":t.variant==="borderless"?"transparent":"#fff",color:t.variant==="primary"?"#fff":"inherit",borderRadius:"4px",display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"};return e.h("button",{style:n,onClick:t.action,disabled:t.isValid===!1},[t.child?o(t.child):null])}),Bo=ke(he.TextFieldApi,({props:t,state:o})=>{const n=o.id,a=t.variant==="longText",i=t.variant==="number"?"number":t.variant==="obscured"?"password":"text",s={padding:"8px",width:"100%",border:t.validationErrors&&t.validationErrors.length>0?"1px solid red":Ze,borderRadius:dt,boxSizing:"border-box"},r=t.validationErrors&&t.validationErrors.length>0;return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%",margin:Pe}},[t.label?e.h("label",{for:n,style:{fontSize:"14px",fontWeight:"bold"}},t.label):null,a?e.h("textarea",{id:n,style:s,value:t.value||"",onInput:l=>t.setValue(l.target.value)}):e.h("input",{id:n,type:i,style:s,value:t.value||"",onInput:l=>t.setValue(l.target.value)}),r?e.h("span",{style:{fontSize:"12px",color:"red"}},t.validationErrors[0]):null])},()=>({id:pt()})),Fo=ke(he.CheckBoxApi,({props:t,state:o})=>{const n=o.id,a=t.validationErrors&&t.validationErrors.length>0;return e.h("div",{style:{display:"flex",flexDirection:"column",margin:Pe}},[e.h("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},[e.h("input",{id:n,type:"checkbox",checked:!!t.value,onChange:i=>t.setValue(i.target.checked),style:{cursor:"pointer",outline:a?"1px solid red":"none"}}),t.label?e.h("label",{for:n,style:{cursor:"pointer",color:a?"red":"inherit"}},t.label):null]),a?e.h("span",{style:{fontSize:"12px",color:"red",marginTop:"4px"}},t.validationErrors?.[0]):null])},()=>({id:pt()})),No=ke(he.ChoicePickerApi,({props:t,context:o,state:n})=>{const a=Array.isArray(t.value)?t.value:[],i=t.variant==="mutuallyExclusive",s=l=>{if(i)t.setValue([l]);else{const c=a.includes(l)?a.filter(u=>u!==l):[...a,l];t.setValue(c)}},r=(t.options||[]).filter(l=>!t.filterable||n.filter.value===""||String(typeof l.label=="string"?l.label:"").toLowerCase().includes(n.filter.value.toLowerCase()));return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"8px",margin:Pe,width:"100%"}},[t.label?e.h("strong",{style:{fontSize:"14px"}},t.label):null,t.filterable?e.h("input",{type:"text",placeholder:"Filter options...",value:n.filter.value,onInput:l=>{n.filter.value=l.target.value},style:{padding:"4px 8px",border:Ze,borderRadius:dt}}):null,e.h("div",{style:{display:"flex",flexDirection:t.displayStyle==="chips"?"row":"column",flexWrap:t.displayStyle==="chips"?"wrap":"nowrap",gap:"8px"}},r.map((l,c)=>{const u=a.includes(l.value),d=typeof l.label=="string"?l.label:String(l.label??l.value);return t.displayStyle==="chips"?e.h("button",{key:c,onClick:()=>s(l.value),style:{padding:"4px 12px",borderRadius:"16px",border:u?"1px solid var(--a2ui-primary-color, #007bff)":Ze,backgroundColor:u?"var(--a2ui-primary-color, #007bff)":"#fff",color:u?"#fff":"inherit",cursor:"pointer",fontSize:"12px"}},d):e.h("label",{key:c,style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer"}},[e.h("input",{type:i?"radio":"checkbox",checked:u,onChange:()=>s(l.value),name:i?`choice-${o.componentModel.id}`:void 0}),e.h("span",{style:{fontSize:"14px"}},d)])}))])},()=>({filter:e.ref("")})),Vo=ke(he.SliderApi,({props:t,state:o})=>{const n=o.id;return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",margin:Pe,width:"100%"}},[e.h("div",{style:{display:"flex",justifyContent:"space-between"}},[t.label?e.h("label",{for:n,style:{fontSize:"14px",fontWeight:"bold"}},t.label):null,e.h("span",{style:{fontSize:"12px",color:"#666"}},String(t.value))]),e.h("input",{id:n,type:"range",min:t.min??0,max:t.max,value:t.value??0,onInput:a=>t.setValue(Number(a.target.value)),style:{width:"100%",cursor:"pointer"}})])},()=>({id:pt()})),Do=ke(he.DateTimeInputApi,({props:t,state:o})=>{const n=o.id;let a="datetime-local";t.enableDate&&!t.enableTime&&(a="date"),!t.enableDate&&t.enableTime&&(a="time");const i={padding:"8px",width:"100%",border:Ze,borderRadius:dt,boxSizing:"border-box"};return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%",margin:Pe}},[t.label?e.h("label",{for:n,style:{fontSize:"14px",fontWeight:"bold"}},t.label):null,e.h("input",{id:n,type:a,style:i,value:t.value||"",onInput:s=>t.setValue(s.target.value),min:typeof t.min=="string"?t.min:void 0,max:typeof t.max=="string"?t.max:void 0})])},()=>({id:pt()})),Oo=[ko,yo,wo,Co,So,xo,To,Io,Ao,Ro,Eo,Mo,$o,Bo,Fo,No,Vo,Do],Xe=new ut.Catalog("https://a2ui.org/specification/v0_9/basic_catalog.json",Oo,he.BASIC_FUNCTIONS),Lo="A2UI Component Schema — available components for generating UI surfaces. Use these component names and properties when creating A2UI operations.";function Po(t){const o=t??Xe,n="https://a2ui.org/specification/v0_9/basic_catalog.json",a=[];if(a.push("Available A2UI catalog:"),o.id===n)return a.push(`- ${o.id} (basic catalog)`),a.join(`
|
|
45
|
+
`);let i=!0;for(const r of Xe.components.keys())if(!o.components.has(r)){i=!1;break}const s=[];for(const r of o.components.keys())Xe.components.has(r)||s.push(r);a.push(`- ${o.id}`),i?a.push(" Extends the basic catalog with all standard components plus:"):(a.push(" Custom catalog (does NOT include all basic components)."),a.push(" Custom components:"));for(const r of s){const l=o.components.get(r);if(!l)continue;const c=St.zodToJsonSchema(l.schema);a.push(` - ${r}:`),a.push(` ${JSON.stringify(c,null,2).split(`
|
|
46
|
+
`).join(`
|
|
47
|
+
`)}`)}return a.join(`
|
|
48
|
+
`)}function Uo(t){const o=t??Xe,n={};for(const[a,i]of o.components){const s=St.zodToJsonSchema(i.schema,{target:"jsonSchema2019-09"});n[a]={allOf:[{$ref:"common_types.json#/$defs/ComponentCommon"},{properties:{component:{const:a},...s.properties},required:["component",...s.required??[]]}]}}return{catalogId:o.id,components:n}}function zo(t,o){const n=e.computed(()=>Po(o.catalog()));e.watch([()=>t.value,o.enabled,n],([i,s,r],l,c)=>{if(!s)return;const u=i.a2uiAgents,d=i.addContext({description:"A2UI catalog capabilities: available catalog IDs and custom component definitions the client can render.",value:r,...u?{agentIds:u}:{}});c(()=>i.removeContext(d))},{immediate:!0});const a=e.computed(()=>o.includeSchema()?JSON.stringify(Uo(o.catalog())):null);e.watch([()=>t.value,o.enabled,a],([i,s,r],l,c)=>{if(!s||!r)return;const u=i.a2uiAgents,d=u?{agentIds:u}:{},k=[];k.push(i.addContext({description:Lo,value:r,...d})),k.push(i.addContext({description:"A2UI generation guidelines — protocol rules, tool arguments, path rules, data model format, and form/two-way-binding instructions.",value:_.A2UI_DEFAULT_GENERATION_GUIDELINES,...d})),k.push(i.addContext({description:"A2UI design guidelines — visual design rules, component hierarchy tips, and action handler patterns.",value:_.A2UI_DEFAULT_DESIGN_GUIDELINES,...d})),c(()=>{for(const y of k)i.removeContext(y)})},{immediate:!0})}function mn(t){const o=t.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi);return o?o.join(""):""}function fn(t){let o=t;o=o.replace(/<[^>]*$/,""),o=o.replace(/<(style|script|head)\b[^>]*>[\s\S]*?<\/\1>/gi,""),o=o.replace(/<(style|script|head)\b[^>]*>[\s\S]*$/gi,""),o=o.replace(/&[a-zA-Z0-9#]*$/,"");const n=o.match(/<body[^>]*>([\s\S]*)/i);return n&&(o=n[1],o=o.replace(/<\/body>[\s\S]*/i,"")),o}function gn(){const t=e.inject(sn,e.computed(()=>[]));return e.computed(()=>t.value)}const hn="open-generative-ui",vn=X.z.object({initialHeight:X.z.number().optional(),generating:X.z.boolean().optional(),css:X.z.string().optional(),cssComplete:X.z.boolean().optional(),html:X.z.array(X.z.string()).optional(),htmlComplete:X.z.boolean().optional(),jsFunctions:X.z.string().optional(),jsFunctionsComplete:X.z.boolean().optional(),jsExpressions:X.z.array(X.z.string()).optional(),jsExpressionsComplete:X.z.boolean().optional()}),bn=X.z.object({initialHeight:X.z.number().optional(),placeholderMessages:X.z.array(X.z.string()).optional(),css:X.z.string().optional(),html:X.z.string().optional(),jsFunctions:X.z.string().optional(),jsExpressions:X.z.array(X.z.string()).optional()});function jo(t,o){return!!(o.cssComplete&&(!t||!t.cssComplete)||o.htmlComplete||o.generating===!1||o.jsFunctions&&(!t||!t.jsFunctions)||(o.jsExpressions?.length??0)>(t?.jsExpressions?.length??0)||o.html?.length&&(!t||!t.html?.length))}function _o(t){return/<head[\s>]/i.test(t)?t:`<head></head>${t}`}function Ho(t,o){const n=t.indexOf("</head>");return n!==-1?t.slice(0,n)+`<style>${o}</style>`+t.slice(n):`<head><style>${o}</style></head>${t}`}async function Lt(){const t=await import("@jetbrains/websandbox");return t.default?.default??t.default}const kn=e.defineComponent({name:"OpenGenerativeUIRenderer",props:{content:{type:Object,required:!0}},setup(t){const o=gn(),n=e.ref(null),a=e.ref(t.content),i=e.ref(t.content),s=e.ref(null),r=e.ref(null),l=e.ref(null),c=e.ref(!1),u=e.ref(!1),d=e.ref(0),k=e.ref(!1),y=e.ref([]),p=e.computed(()=>{const R={};for(const B of o.value)R[B.name]=B.handler;return R});e.watch(()=>t.content,R=>{if(i.value=R,jo(a.value,R)){s.value!==null&&(window.clearTimeout(s.value),s.value=null),a.value=R;return}s.value===null&&(s.value=window.setTimeout(()=>{a.value=i.value,s.value=null},1e3))},{immediate:!0}),e.onBeforeUnmount(()=>{s.value!==null&&window.clearTimeout(s.value)});const m=e.computed(()=>{if(!a.value.htmlComplete&&a.value.html?.length)return a.value.html.join("")}),v=e.computed(()=>m.value?fn(m.value):void 0),g=e.computed(()=>m.value?mn(m.value):""),b=e.computed(()=>a.value.htmlComplete&&a.value.html?.length?a.value.html.join(""):void 0),f=e.computed(()=>a.value.cssComplete?a.value.css:void 0),S=e.computed(()=>!!a.value.cssComplete&&!!v.value&&v.value.trim().length>0),w=e.computed(()=>!!b.value||S.value),A=e.computed(()=>`${a.value.initialHeight??200}px`),h=()=>{l.value&&(l.value.destroy(),l.value=null),u.value=!1},E=()=>{r.value&&(r.value.destroy(),r.value=null),c.value=!1,y.value=[],d.value=0,k.value=!1};e.watch([S,b,f,v,g,()=>n.value],async([R,B],F,N)=>{if(!R||B||!n.value||l.value)return;let j=!1;try{const C=await Lt();if(j||!n.value)return;const I=C.create({},{frameContainer:n.value,frameContent:"<head></head><body></body>",allowAdditionalAttributes:""});l.value=I,I.iframe.setAttribute("data-testid","open-generative-ui-preview-sandbox"),I.iframe.style.width="100%",I.iframe.style.height="100%",I.iframe.style.border="none",I.iframe.style.backgroundColor="transparent",I.promise.then(()=>{j||!l.value||(u.value=!0,I.run("var s=document.createElement('style');s.textContent='html, body { overflow: hidden !important; }';document.head.appendChild(s);"))})}catch(C){console.error("[OpenGenerativeUI] Failed to load sandbox module:",C)}N(()=>{j=!0})},{immediate:!0}),e.watch([v,g,f,u],([R,B,F,N])=>{if(!l.value||!N)return;const j=[];F&&j.push(`<style>${F}</style>`),B&&j.push(B),j.length&&l.value.run(`document.head.innerHTML = ${JSON.stringify(j.join(""))}`),R&&l.value.run(`document.body.innerHTML = ${JSON.stringify(R)}`)},{immediate:!0}),e.watch([b,f,p,()=>n.value],async([R,B,F],N,j)=>{if(E(),!R||!n.value)return;h();let C=!1;try{const I=await Lt();if(C||!n.value)return;const L=_o(R),$=B?Ho(L,B):L,O=I.create(F,{frameContainer:n.value,frameContent:$,allowAdditionalAttributes:""});r.value=O,O.iframe.setAttribute("data-testid","open-generative-ui-final-sandbox"),O.iframe.style.width="100%",O.iframe.style.height="100%",O.iframe.style.border="none",O.iframe.style.backgroundColor="transparent",O.promise.then(()=>{if(C||!r.value)return;c.value=!0,O.run("var s=document.createElement('style');s.textContent='html, body { overflow: hidden !important; }';document.head.appendChild(s);");const G=a.value.jsFunctions;G&&!k.value&&(k.value=!0,y.value.unshift(G));const M=a.value.jsExpressions;if(M?.length){const z=d.value;z<M.length&&(y.value.push(...M.slice(z)),d.value=M.length)}const H=[...y.value];y.value=[];for(const z of H)O.run(z)})}catch(I){console.error("[OpenGenerativeUI] Failed to load sandbox module:",I)}j(()=>{C=!0})},{immediate:!0}),e.watch(()=>a.value.jsFunctions,R=>{!R||k.value||(k.value=!0,c.value&&r.value?r.value.run(R):y.value.push(R))}),e.watch(()=>a.value.jsExpressions,R=>{if(!R?.length)return;const B=d.value;if(B>=R.length)return;const F=R.slice(B);if(d.value=R.length,c.value&&r.value)for(const N of F)r.value.run(N);else y.value.push(...F)},{deep:!0});const T=e.computed(()=>a.value.generating!==!1);return e.watch([S,b],([R,B])=>{B&&h(),R||h()},{immediate:!0}),e.onBeforeUnmount(()=>{s.value!==null&&window.clearTimeout(s.value),h(),E()}),()=>e.h("div",{ref:n,"data-testid":"open-generative-ui-renderer",style:{position:"relative",width:"100%",height:A.value,borderRadius:"8px",backgroundColor:w.value?"transparent":"#f5f5f5",border:w.value?"none":"1px solid #e0e0e0",overflow:"hidden",display:w.value?"block":"flex",alignItems:w.value?void 0:"center",justifyContent:w.value?void 0:"center"}},[w.value?null:e.h("div",{"data-testid":"open-generative-ui-placeholder"},[e.h("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",style:{animation:"ck-spin 1s linear infinite"}},[e.h("circle",{cx:"12",cy:"12",r:"10",stroke:"#e0e0e0","stroke-width":"3"}),e.h("path",{d:"M12 2a10 10 0 0 1 10 10",stroke:"#999","stroke-width":"3","stroke-linecap":"round"})]),e.h("style","@keyframes ck-spin { to { transform: rotate(360deg) } }")]),T.value?e.h("div",{"data-testid":"open-generative-ui-progress-overlay",style:{position:"absolute",inset:0,backgroundColor:"rgba(255,255,255,0.45)"}}):null])}}),yn=e.defineComponent({name:"OpenGenerativeUIActivityRenderer",props:{activityType:{type:String,required:!0},content:{type:Object,required:!0},message:{type:Object,required:!0},agent:{type:Object,required:!1,default:void 0}},setup(t){return()=>e.h(kn,{content:t.content})}}),wn=e.defineComponent({name:"OpenGenerativeUIToolRenderer",props:{name:{type:String,required:!0},args:{type:Object,required:!0},status:{type:String,required:!0},result:{type:String,required:!1}},setup(t){const o=e.ref(0);return e.watch(()=>t.args.placeholderMessages,(n,a,i)=>{if(!n?.length||t.status===Z.ToolCallStatus.Complete)return;o.value=Math.max(n.length-1,0);const s=window.setInterval(()=>{o.value=(o.value+1)%Math.max(n.length,1)},5e3);i(()=>window.clearInterval(s))},{immediate:!0}),()=>{if(t.status===Z.ToolCallStatus.Complete)return null;const n=t.args.placeholderMessages;if(!n?.length)return null;const a=n[o.value]??n[0];return e.h("div",{style:{padding:"8px 12px",color:"#999",fontSize:"14px"},"data-testid":"open-generative-ui-tool-placeholder"},a)}}}),It=Symbol("LicenseContext");function Cn(){return e.ref(_.createLicenseContextValue(null))}const Wo={style:{display:"flex",gap:"8px",alignItems:"center"}},qo=["href"],Ko=52,Pt="--copilotkit-license-banner-offset",rt=e.defineComponent({__name:"LicenseWarningBanner",props:{type:{},featureName:{default:void 0},expiryDate:{default:void 0},graceRemaining:{default:void 0},onDismiss:{type:Function,default:void 0}},setup(t){const o=t,n=e.computed(()=>{switch(o.type){case"no_license":return{severity:"info",message:"Powered by CopilotKit",actionLabel:"Get a license",actionUrl:"https://copilotkit.ai/pricing"};case"feature_unlicensed":return{severity:"warning",message:`⚠ The "${o.featureName??""}" feature requires a CopilotKit license.`,actionLabel:"Get a license",actionUrl:"https://copilotkit.ai/pricing"};case"expiring":{const r=o.graceRemaining;return{severity:"warning",message:`Your CopilotKit license expires in ${r} ${r===1?"day":"days"}. Please renew.`,actionLabel:"Renew",actionUrl:"https://dashboard.operations.copilotkit.ai"}}case"expired":return{severity:"critical",message:`Your CopilotKit license expired${o.expiryDate?` on ${o.expiryDate}`:""}. Please renew at copilotkit.ai/pricing`,actionLabel:"Renew now",actionUrl:"https://copilotkit.ai/pricing"};case"invalid":return{severity:"critical",message:"Invalid CopilotKit license token. Please check your configuration.",actionLabel:"Get a license",actionUrl:"https://copilotkit.ai/pricing"};default:return null}}),a={position:"fixed",bottom:"8px",left:"50%",transform:"translateX(-50%)",zIndex:99999,display:"inline-flex",alignItems:"center",gap:"12px",whiteSpace:"nowrap",padding:"8px 16px",fontSize:"13px",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif",borderRadius:"6px",boxShadow:"0 2px 8px rgba(0, 0, 0, 0.15)"},i=e.computed(()=>{switch(n.value?.severity){case"warning":return{backgroundColor:"#fffbeb",border:"1px solid #fbbf24",color:"#92400e"};case"critical":return{backgroundColor:"#fef2f2",border:"1px solid #fca5a5",color:"#991b1b"};default:return{backgroundColor:"#eff6ff",border:"1px solid #93c5fd",color:"#1e40af"}}}),s=e.computed(()=>({...a,...i.value}));return e.onMounted(()=>{typeof document>"u"||document.documentElement.style.setProperty(Pt,`${Ko}px`)}),e.onBeforeUnmount(()=>{typeof document>"u"||document.documentElement.style.removeProperty(Pt)}),(r,l)=>n.value?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(s.value),"data-testid":"copilot-license-banner"},[e.createElementVNode("span",null,e.toDisplayString(n.value.message),1),e.createElementVNode("div",Wo,[e.createElementVNode("a",{href:n.value.actionUrl,target:"_blank",rel:"noopener noreferrer",style:{fontWeight:600,textDecoration:"underline",color:"inherit"}},e.toDisplayString(n.value.actionLabel),9,qo),o.onDismiss?(e.openBlock(),e.createElementBlock("button",{key:0,style:{background:"none",border:"none",cursor:"pointer",color:"inherit",fontSize:"16px"},onClick:l[0]||(l[0]=(...c)=>o.onDismiss&&o.onDismiss(...c))}," × ")):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0)}}),Ut="X-CopilotCloud-Public-Api-Key",Go="https://api.cloud.copilotkit.ai/copilotkit/v1",Jo="frontendTools must be a stable array. If you want to dynamically add or remove tools, use `useFrontendTool` instead.",Qo="humanInTheLoop must be a stable array. If you want to dynamically add or remove human-in-the-loop tools, use `useHumanInTheLoop` instead.",Xo="renderCustomMessages must be a stable array.",Yo="renderActivityMessages must be a stable array.",Zo="openGenerativeUI.sandboxFunctions must be a stable array.",zt="Human-in-the-loop interaction aborted",ea=`When generating UI with generateSandboxedUi, follow these design principles inspired by shadcn/ui:
|
|
49
|
+
|
|
50
|
+
- Use a minimal, flat aesthetic. Avoid drop shadows and gradients — rely on subtle borders (1px solid, light gray like #e5e7eb) to define surfaces.
|
|
51
|
+
- Neutral base palette: white backgrounds, zinc/slate gray text (#09090b for headings, #71717a for secondary text). One accent color for interactive elements.
|
|
52
|
+
- Use system font stacks (system-ui, -apple-system, sans-serif) at readable sizes (14px body, 600 weight for headings). Tight line-heights.
|
|
53
|
+
- Small, consistent border-radius (6–8px). Cards and containers use border, not shadow, for separation.
|
|
54
|
+
- Buttons: solid fill for primary (dark bg, white text), outline for secondary (border + transparent bg). Subtle hover state (slight opacity or background shift).
|
|
55
|
+
- Use CSS Grid or Flexbox for layout. Ensure the UI looks good at any width.
|
|
56
|
+
- Minimal transitions (150ms) for hover/focus states only. No decorative animations.
|
|
57
|
+
- Keep the UI focused and dense — avoid excessive padding. Use compact spacing (8–12px gaps, 10–14px padding in controls).`,ta=`Generate sandboxed UI. IMPORTANT: The generated code runs in a sandboxed iframe WITHOUT same-origin access. Do NOT use localStorage, sessionStorage, document.cookie, IndexedDB, or fetch/XMLHttpRequest to same-origin URLs. To communicate with the host application, use Websandbox.connection.remote.<functionName>(args) which returns a Promise.
|
|
58
|
+
|
|
59
|
+
You CAN use external libraries from CDNs by including <script> or <link> tags in the HTML <head> (e.g., Chart.js, D3, Three.js, x-data-spreadsheet, etc.). CDN resources load normally inside the sandbox.
|
|
60
|
+
|
|
61
|
+
PARAMETER ORDER IS CRITICAL — generate parameters in exactly this order:
|
|
62
|
+
1. initialHeight + placeholderMessages (shown to user while generating)
|
|
63
|
+
2. css (all styles FIRST — the user sees a placeholder until CSS is complete)
|
|
64
|
+
3. html (streams in live — the user watches the UI build as HTML is generated)
|
|
65
|
+
4. jsFunctions (reusable helper functions)
|
|
66
|
+
5. jsExpressions (applied one-by-one — the user sees each expression take effect)`,na=e.defineComponent({__name:"CopilotKitProvider",props:{runtimeUrl:{},headers:{type:[Object,Function],default:()=>({})},credentials:{},messageFilter:{},defaultThrottleMs:{},publicApiKey:{},publicLicenseKey:{},licenseToken:{},properties:{default:()=>({})},useSingleEndpoint:{type:Boolean,default:void 0},agents__unsafe_dev_only:{default:()=>({})},selfManagedAgents:{default:()=>({})},renderToolCalls:{},renderActivityMessages:{default:()=>[]},renderCustomMessages:{default:()=>[]},frontendTools:{default:()=>[]},humanInTheLoop:{default:()=>[]},openGenerativeUI:{default:void 0},showDevConsole:{type:[Boolean,String]},enableInspector:{type:Boolean,default:void 0},onError:{},a2ui:{default:void 0},debug:{type:[Boolean,Object]}},setup(t){const o={},n=t,a=e.ref(!1);function i(){a.value=_.shouldEnableInspector({enableInspector:n.enableInspector,isBrowser:!0,isDevelopment:process.env.NODE_ENV==="development"})}e.onMounted(i),e.watch(()=>n.enableInspector,i);const s=e.ref(null),r=e.computed(()=>a.value);function l(P){s.value={...P}}e.provide(ao,{isInspectorEnabled:r,openInspector:l});const c=n.frontendTools,u=n.humanInTheLoop,d=n.renderCustomMessages,k=n.renderActivityMessages,y=n.openGenerativeUI?.sandboxFunctions;e.watch(()=>n.frontendTools,P=>{P!==c&&console.error(Jo)}),e.watch(()=>n.humanInTheLoop,P=>{P!==u&&console.error(Qo)}),e.watch(()=>n.renderCustomMessages,P=>{P!==d&&console.error(Xo)}),e.watch(()=>n.renderActivityMessages,P=>{P!==k&&console.error(Yo)}),e.watch(()=>n.openGenerativeUI?.sandboxFunctions,P=>{P!==y&&console.error(Zo)});const p=e.computed(()=>n.publicApiKey??n.publicLicenseKey),m=e.computed(()=>({...n.agents__unsafe_dev_only,...n.selfManagedAgents})),v=e.computed(()=>Object.keys(m.value).length>0),g=e.computed(()=>typeof n.headers=="function"?n.headers():n.headers),b=e.computed(()=>{const P=g.value;return!p.value||P[Ut]?P:{...P,[Ut]:p.value}}),f=e.computed(()=>n.runtimeUrl??(p.value?Go:void 0));e.watch([f,p,v],([P,ae,ne])=>{if(P||ae||ne)return;const Te="Missing required prop: 'runtimeUrl' or 'publicApiKey' or 'publicLicenseKey'";if(process.env.NODE_ENV==="production")throw new Error(Te);console.warn(Te)},{immediate:!0});const S=new Map,w=P=>{const ae=S.get(P);if(ae)return ae.detachAbort?.(),S.delete(P),ae},A=e.computed(()=>{const P=[],ae=[];for(const ne of n.humanInTheLoop)if(P.push({type:"human-in-the-loop",name:ne.name,description:ne.description,parameters:ne.parameters,followUp:ne.followUp,...ne.agentId&&{agentId:ne.agentId},handler:async(Te,Ie)=>{const ue=Ie?.signal,be=Ie?.toolCall?.id??ne.name;return new Promise((Me,se)=>{if(ue?.aborted){se(new Error(zt));return}const Ue={resolve:Me};if(S.set(be,Ue),ue){const U=()=>{S.delete(be),se(new Error(zt))};ue.addEventListener("abort",U,{once:!0}),Ue.detachAbort=()=>{ue.removeEventListener("abort",U)}}})}}),ne.render){const Te=ne.render,Ie=ue=>{const be=ue.toolCallId??ne.name;return e.h(Te,{...ue,name:ne.name==="*"?ue.name:ne.name,description:ne.description||"",agentId:ne.agentId,respond:ue.status===Z.ToolCallStatus.Executing?async Me=>{w(be)?.resolve(Me)}:void 0})};ae.push({name:ne.name,args:ne.parameters??X.z.any(),render:Ie,...ne.agentId&&{agentId:ne.agentId}})}return{tools:P,renderToolCalls:ae}}),h=e.computed(()=>{const P=[];for(const ae of n.frontendTools)P.push(ae);for(const ae of M.value)P.push(ae);return P.push(...A.value.tools),P}),E=e.computed(()=>{const P=[...n.renderToolCalls??[]];for(const ae of[...n.frontendTools,...M.value])if(ae.render){const ne=ae.parameters??(ae.name==="*"?X.z.any():void 0);ne&&P.push({name:ae.name,args:ne,render:ae.render})}return P.push(...A.value.renderToolCalls),P}),T=e.computed(()=>n.renderCustomMessages??[]),R=e.ref(!1),B=e.ref(!1),F=e.ref(void 0),N=e.ref(void 0),j=e.ref(!1),C=e.computed(()=>B.value||!!n.openGenerativeUI),I=e.computed(()=>!!n.a2ui?.catalog),L=e.computed(()=>R.value||I.value),$=e.computed(()=>I.value?{...n.properties,a2uiCatalogAvailable:!0}:n.properties),O=e.computed(()=>n.openGenerativeUI?.sandboxFunctions??[]),G=(P,ae)=>St.zodToJsonSchema(P,ae),M=e.computed(()=>C.value?[{name:"generateSandboxedUi",description:ta,parameters:bn,handler:async()=>"UI generated",followUp:!0,render:wn}]:[]),H=e.computed(()=>{const P=[{activityType:rn,content:ln,render:cn}];return C.value&&P.push({activityType:hn,content:vn,render:yn}),L.value&&P.unshift(dn({theme:n.a2ui?.theme??o,catalog:n.a2ui?.catalog,loadingComponent:n.a2ui?.loadingComponent})),P}),z=e.computed(()=>[...n.renderActivityMessages??[],...H.value]),q=P=>{n.defaultThrottleMs!==void 0&&(!Number.isFinite(n.defaultThrottleMs)||n.defaultThrottleMs<0)&&console.error(`CopilotKitProvider: defaultThrottleMs must be a non-negative finite number, got ${n.defaultThrottleMs}. useAgent hooks without an explicit throttleMs will fall back to unthrottled.`),P.setDefaultThrottleMs(n.defaultThrottleMs)},te=()=>{const P=new un({runtimeUrl:f.value,runtimeTransport:n.useSingleEndpoint===!0?"single":n.useSingleEndpoint===!1?"rest":"auto",headers:b.value,credentials:n.credentials,messageFilter:n.messageFilter,properties:$.value,agents__unsafe_dev_only:m.value,tools:h.value,renderToolCalls:E.value,renderActivityMessages:z.value,renderCustomMessages:T.value,debug:n.debug});return q(P),P},W=e.shallowRef(te()),ce=e.ref(!1),me=e.ref(new Set);e.watch(W,(P,ae,ne)=>{const Te=P.subscribe({onToolExecutionStart:({toolCallId:se})=>{me.value=new Set(me.value).add(se)},onToolExecutionEnd:({toolCallId:se})=>{setTimeout(()=>{const Ue=new Set(me.value);Ue.delete(se),me.value=Ue,e.triggerRef(W)},0)}}),Ie=P.subscribe({onRenderToolCallsChanged:()=>{e.triggerRef(W)}}),ue=P.subscribe({onRenderCustomMessagesChanged:()=>{e.triggerRef(W)}}),be=P.subscribe({onRuntimeConnectionStatusChanged:()=>{R.value=P.a2uiEnabled,B.value=P.openGenerativeUIEnabled,F.value=P.licenseStatus,N.value=P.runtimeEntitlements,j.value=P.runtimeEntitlementRetryPending,e.triggerRef(W)}}),Me=P.subscribe({onError:se=>{n.onError?.({error:se.error,code:se.code,context:se.context})}});ne(()=>{Te.unsubscribe(),Ie.unsubscribe(),ue.unsubscribe(),be.unsubscribe(),Me.unsubscribe()})},{immediate:!0}),e.watch([h],([P])=>{ce.value&&W.value.setTools(P)}),e.watch([E],([P])=>{ce.value&&W.value.setRenderToolCalls(P)}),e.watch([T],([P])=>{ce.value&&(W.value.setRenderCustomMessages(P),e.triggerRef(W))}),e.watch([z],([P])=>{ce.value&&(W.value.setRenderActivityMessages(P),e.triggerRef(W))});function ve(){W.value.setRuntimeUrl(f.value),W.value.setRuntimeTransport(n.useSingleEndpoint===!0?"single":n.useSingleEndpoint===!1?"rest":"auto"),W.value.setHeaders(b.value),W.value.setCredentials(n.credentials),W.value.setMessageFilter(n.messageFilter),W.value.setProperties($.value),W.value.setAgents__unsafe_dev_only(m.value),W.value.setDebug(n.debug),q(W.value)}e.watch([()=>f.value,()=>b.value,()=>n.credentials,()=>n.messageFilter,()=>$.value,()=>m.value,()=>n.useSingleEndpoint,()=>n.debug],()=>{ce.value&&ve()}),e.watch(()=>n.defaultThrottleMs,()=>{ce.value&&(q(W.value),e.triggerRef(W))}),e.onMounted(()=>{ve(),R.value=W.value.a2uiEnabled,B.value=W.value.openGenerativeUIEnabled,F.value=W.value.licenseStatus,N.value=W.value.runtimeEntitlements,j.value=W.value.runtimeEntitlementRetryPending,ce.value=!0});const Be=e.computed(()=>n.a2ui?.theme),Fe=e.computed(()=>n.a2ui?.catalog),Ee=e.computed(()=>n.a2ui?.loadingComponent),De=e.computed(()=>n.a2ui?.includeSchema??!0);fo(W,()=>L.value),zo(W,{enabled:()=>L.value,catalog:()=>n.a2ui?.catalog,includeSchema:()=>n.a2ui?.includeSchema??!0});const xe=e.ref([]);e.watch([C,O,()=>n.openGenerativeUI?.designSkill],([P,ae,ne],Te,Ie)=>{if(!P)return;const ue=[];if(ue.push(W.value.addContext({description:"Design guidelines for the generateSandboxedUi tool. Follow these when building UI.",value:ne??ea})),ae.length>0){const be=JSON.stringify(ae.map(Me=>({name:Me.name,description:Me.description,parameters:_.schemaToJsonSchema(Me.parameters,{zodToJsonSchema:G})})));ue.push(W.value.addContext({description:"Sandbox functions available in generated sandboxed UI code. Call via Websandbox.connection.remote.<functionName>(args).",value:be}))}xe.value=ue,Ie(()=>{for(const be of ue)W.value.removeContext(be)})},{immediate:!0}),e.provide(an,{copilotkit:W,executingToolCallIds:me,a2uiTheme:Be,a2uiCatalog:Fe,a2uiLoadingComponent:Ee,a2uiIncludeSchema:De}),e.provide(sn,O);const ye=e.computed(()=>N.value?.status!=="ready"&&N.value?.error.retryable===!0),le=e.computed(()=>N.value!==void 0&&N.value.status!=="ready"),V=e.computed(()=>F.value==="valid"||F.value==="expiring"),Y=e.computed(()=>ye.value&&j.value&&!V.value),fe=e.computed(()=>le.value&&!Y.value&&!V.value),Ne=e.computed(()=>{const P=_.createLicenseContextValue(Y.value?void 0:F.value,N.value);return fe.value?{...P,checkFeature:()=>!1,getLimit:()=>null}:P});e.provide(It,Ne);const ge=e.computed(()=>Y.value?void 0:Ne.value.status??void 0),He=e.computed(()=>ge.value==="none"&&!p.value),_e=e.computed(()=>ge.value==="expired"),We=e.computed(()=>ge.value==="invalid"),qe=e.computed(()=>ge.value==="expiring");return(P,ae)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(P.$slots,"default"),a.value?(e.openBlock(),e.createBlock(on,{key:0,core:W.value,"open-request":s.value},null,8,["core","open-request"])):e.createCommentVNode("",!0),He.value?(e.openBlock(),e.createBlock(rt,{key:1,type:"no_license"})):e.createCommentVNode("",!0),_e.value?(e.openBlock(),e.createBlock(rt,{key:2,type:"expired"})):e.createCommentVNode("",!0),We.value?(e.openBlock(),e.createBlock(rt,{key:3,type:"invalid"})):e.createCommentVNode("",!0),qe.value?(e.openBlock(),e.createBlock(rt,{key:4,type:"expiring"})):e.createCommentVNode("",!0)],64))}}),Ve={chatInputPlaceholder:"Type a message...",chatInputToolbarStartTranscribeButtonLabel:"Transcribe",chatInputToolbarCancelTranscribeButtonLabel:"Cancel",chatInputToolbarFinishTranscribeButtonLabel:"Finish",chatInputToolbarAddButtonLabel:"Add photos or files",chatInputToolbarToolsButtonLabel:"Tools",assistantMessageToolbarCopyCodeLabel:"Copy",assistantMessageToolbarCopyCodeCopiedLabel:"Copied",assistantMessageToolbarCopyMessageLabel:"Copy",assistantMessageToolbarThumbsUpLabel:"Good response",assistantMessageToolbarThumbsDownLabel:"Bad response",assistantMessageToolbarReadAloudLabel:"Read aloud",assistantMessageToolbarRegenerateLabel:"Regenerate",userMessageToolbarCopyMessageLabel:"Copy",userMessageToolbarEditMessageLabel:"Edit",chatDisclaimerText:"AI can make mistakes. Please verify important information.",chatToggleOpenLabel:"Open chat",chatToggleCloseLabel:"Close chat",modalHeaderTitle:"CopilotKit Chat",welcomeMessageText:"How can I help you today?"};function oa(t,o){const n=Object.keys(t),a=Object.keys(o);if(n.length!==a.length)return!1;for(const i of n)if(t[i]!==o[i])return!1;return!0}function jt(t){return t!==null&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"}function Sn(t){const o=e.shallowRef(e.toValue(t));return e.watch(()=>e.toValue(t),n=>{const a=o.value;a!==n&&(jt(a)&&jt(n)&&oa(a,n)||(o.value=n))},{immediate:!0}),o}const xn="(max-width: 767px)";function _t(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia(xn).matches}const mt=e.defineComponent({__name:"CopilotChatConfigurationProvider",props:{labels:{},agentId:{},threadId:{},hasExplicitThreadId:{type:Boolean,default:void 0},isModalDefaultOpen:{type:Boolean,default:void 0}},setup(t){const o=t,n=e.inject(kt,null),a=e.computed(()=>n?.value??null),i=e.computed(()=>o.threadId!==void 0&&o.hasExplicitThreadId!==!1),s=e.ref(null),r=Sn(e.computed(()=>o.labels)),l=e.computed(()=>({...Ve,...a.value?.labels,...r.value})),c=e.computed(()=>o.agentId??a.value?.agentId??_.DEFAULT_AGENT_ID),u=_.randomUUID(),d=e.computed(()=>i.value?o.threadId:s.value?s.value.threadId:o.threadId?o.threadId:a.value?.threadId?a.value.threadId:u),k=e.computed(()=>i.value?!0:(s.value?s.value.explicit:o.hasExplicitThreadId!==void 0?o.hasExplicitThreadId:!!o.threadId)||!!a.value?.hasExplicitThreadId),y=e.computed(()=>o.isModalDefaultOpen!==void 0),p=e.computed(()=>o.isModalDefaultOpen??!0),m=e.ref(a.value?.isModalOpen??p.value);function v(C){m.value=C}const g=e.computed(()=>y.value?m.value:a.value?.isModalOpen),b=e.computed(()=>y.value?v:a.value?.setModalOpen);function f(C,I){if(i.value){console.warn("[CopilotKit] Ignoring setActiveThreadId(): threadId is controlled via the `threadId` prop on CopilotChatConfigurationProvider.");return}s.value={threadId:C,explicit:I?.explicit??!0}}function S(){if(i.value){console.warn("[CopilotKit] Ignoring startNewThread(): threadId is controlled via the `threadId` prop on CopilotChatConfigurationProvider.");return}s.value={threadId:_.randomUUID(),explicit:!1}}const w=e.ref(!1),A=e.ref(0);function h(C){w.value=C,C&&_t()&&b.value?.(!1)}function E(){return A.value+=1,()=>{A.value=Math.max(0,A.value-1)}}const T=e.computed(()=>a.value?a.value.drawerOpen:w.value),R=e.computed(()=>a.value?a.value.setDrawerOpen:h),B=e.computed(()=>a.value?a.value.drawerRegistered:A.value>0),F=e.computed(()=>a.value?a.value.registerDrawer:E),N=e.computed(()=>{const C=b.value;if(C)return I=>{I&&_t()&&R.value?.(!1),C(I)}}),j=e.computed(()=>({labels:l.value,agentId:c.value,threadId:d.value,hasExplicitThreadId:k.value,isModalOpen:g.value,setModalOpen:N.value,drawerOpen:T.value,setDrawerOpen:R.value,drawerRegistered:B.value,registerDrawer:F.value,setActiveThreadId:f,startNewThread:S}));return e.provide(kt,j),(C,I)=>e.renderSlot(C.$slots,"default")}});function ot(){const t=e.inject(It,Cn(),!0);return e.computed(()=>t.value)}function pe(){const t=e.inject(kt,void 0);return e.computed(()=>t?.value??null)}const Tn=e.defineComponent({name:"A2UIDeferredChild",props:{surface:{type:Object,required:!0},id:{type:String,required:!0},basePath:{type:String,required:!0}},setup(t){const o=e.ref(0),n=t.surface.componentsModel.onCreated.subscribe(s=>{s.id===t.id&&o.value++}),a=t.surface.componentsModel.onDeleted.subscribe(s=>{s===t.id&&o.value++});e.onUnmounted(()=>{n.unsubscribe(),a.unsubscribe()});function i(s,r){const l=r||t.basePath;return e.h(Tn,{key:`${s}-${l}`,surface:t.surface,id:s,basePath:l})}return()=>{o.value;const s=t.surface.componentsModel.get(t.id);if(!s)return e.h("div",{style:{padding:"12px 16px",borderRadius:"8px",background:"linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%)",backgroundSize:"200% 100%",animation:"a2ui-shimmer 1.5s ease-in-out infinite",minHeight:"2rem"},innerHTML:"<style>@keyframes a2ui-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }</style>"});const r=t.surface.catalog.components.get(s.type);if(!r)return e.h("div",{style:{color:"red"}},`Unknown component: ${s.type}`);const l=new ut.ComponentContext(t.surface,t.id,t.basePath);return e.h(r.render,{context:l,buildChild:i})}}}),aa=e.defineComponent({name:"A2uiSurface",props:{surface:{type:Object,required:!0}},setup(t){return()=>e.h(Tn,{surface:t.surface,id:"root",basePath:"/"})}}),sa=["data-activity-type","data-message-id"],ra={key:0,class:"cpk:rounded-lg cpk:border cpk:border-red-200 cpk:bg-red-50 cpk:p-3 cpk:text-sm cpk:text-red-700"},ia={key:1,class:"cpk:flex cpk:min-h-0 cpk:flex-1 cpk:flex-col cpk:gap-6 cpk:overflow-auto cpk:py-6","data-testid":"a2ui-activity-renderer"},la=["data-surface-id"],ca={class:"a2ui-surface cpk:flex cpk:flex-1"},Ht="default",In=e.defineComponent({__name:"A2UISurfaceActivityRenderer",props:{activityType:{},content:{},message:{},agent:{},theme:{},catalog:{}},setup(t){const o=t,{copilotkit:n}=Ce(),a=e.shallowRef(null),i=e.ref(0),s=e.ref(null);let r="";function l(){if(!a.value){const y=o.catalog??Xe;a.value=new ut.MessageProcessor([y],p=>{c(p)})}return a.value}async function c(y){if(o.agent)try{n.value.setProperties({...n.value.properties??{},a2uiAction:y}),await n.value.runAgent({agent:o.agent})}finally{const{a2uiAction:p,...m}=n.value.properties??{};n.value.setProperties(m)}}function u(y){if(!y?.length)return;const p=JSON.stringify(y);if(p===r)return;r=p;const m=l();try{const v=new Map;for(const g of y){const b=yt(g)??Ht;v.has(b)||v.set(b,[]),v.get(b).push(g)}for(const[g,b]of v){const S=m.model.getSurface(g)?b.filter(w=>!w?.createSurface):b;m.processMessages(S)}s.value=null}catch(v){console.warn("[A2UI Vue] processMessages error:",v),s.value=v instanceof Error?v.message:String(v)}i.value++}e.watch(()=>[o.content.operations,o.theme,o.catalog,o.agent],()=>{u(o.content.operations)},{deep:!0,immediate:!0}),e.onBeforeUnmount(()=>{a.value=null,r=""});const d=e.computed(()=>(o.content.operations??[]).length>0),k=e.computed(()=>{if(i.value,!a.value)return[];const y=[],p=new Map;for(const m of o.content.operations??[]){const v=yt(m)??Ht;p.has(v)||p.set(v,[]),p.get(v).push(m)}for(const[m]of p){const v=a.value.model.getSurface(m);v&&y.push({surfaceId:m,surface:v})}return y});return(y,p)=>d.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-copilotkit":"","data-activity-type":t.activityType,"data-message-id":t.message.id},[s.value?(e.openBlock(),e.createElementBlock("div",ra," A2UI render error: "+e.toDisplayString(s.value),1)):(e.openBlock(),e.createElementBlock("div",ia,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.surfaceId,class:"cpk:flex cpk:w-full cpk:flex-none cpk:flex-col cpk:gap-4","data-surface-id":m.surfaceId},[e.createElementVNode("div",ca,[e.createVNode(e.unref(aa),{surface:m.surface},null,8,["surface"])])],8,la))),128))]))],8,sa)):e.createCommentVNode("",!0)}});function At(t,o){return t.find(n=>n.role==="tool"&&n.toolCallId===o)}function ua(t){return`tool-call-${t}`}function An(t,o,n){const a=o.filter(i=>i.name===t.function.name);return a.find(i=>i.agentId===n)??a.find(i=>!i.agentId)??a[0]??o.find(i=>i.name==="*")}function da(t,o,n){const a=At(o,t.id),i=_.partialJSONParse(t.function.arguments);if(a)return{name:t.function.name,args:i,status:Z.ToolCallStatus.Complete,result:a.content,toolCall:t,toolMessage:a};const s=n.has(t.id);return{name:t.function.name,args:i,status:s?Z.ToolCallStatus.Executing:Z.ToolCallStatus.InProgress,result:void 0,toolCall:t,toolMessage:void 0}}function pa(t,o,n){const a=At(o,t.id),i=_.partialJSONParse(t.function.arguments);return a?{name:t.function.name,toolCallId:t.id,args:i,status:Z.ToolCallStatus.Complete,result:a.content}:n.has(t.id)?{name:t.function.name,toolCallId:t.id,args:i,status:Z.ToolCallStatus.Executing,result:void 0}:{name:t.function.name,toolCallId:t.id,args:i&&typeof i=="object"?i:{},status:Z.ToolCallStatus.InProgress,result:void 0}}function ma(t,o,n,a,i=_.DEFAULT_AGENT_ID){return[t.id,t.function.name,t.function.arguments,At(o,t.id)?.content,n.has(t.id),An(t,a,i)?.render]}const fa=e.defineComponent({__name:"CopilotChatToolCallItem",props:{toolCall:{},messages:{default:()=>[]}},setup(t){const o=t,{copilotkit:n,executingToolCallIds:a}=Ce(),i=pe();function s(){return da(o.toolCall,o.messages,a.value)}function r(){return pa(o.toolCall,o.messages,a.value)}function l(){const u=i.value?.agentId??_.DEFAULT_AGENT_ID;return An(o.toolCall,n.value.renderToolCalls,u)}function c(){const u=i.value?.agentId??_.DEFAULT_AGENT_ID;return ma(o.toolCall,o.messages,a.value,n.value.renderToolCalls,u)}return(u,d)=>e.renderSlot(u.$slots,e.unref(ua)(t.toolCall.function.name),e.normalizeProps(e.guardReactiveProps(s())),()=>[e.renderSlot(u.$slots,"tool-call",e.normalizeProps(e.guardReactiveProps(s())),()=>[l()?e.withMemo(c(),()=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l()?.render),e.normalizeProps(e.mergeProps({key:0},r())),null,16)),d,0):e.createCommentVNode("",!0)])])}}),Rn=e.defineComponent({__name:"CopilotChatToolCallsView",props:{message:{},messages:{default:()=>[]}},setup(t){const o=e.useSlots();function n(){return Object.keys(o)}return(a,i)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.message.toolCalls??[],s=>(e.openBlock(),e.createBlock(fa,{key:s.id,"tool-call":s,messages:t.messages},e.createSlots({_:2},[e.renderList(n(),r=>({name:r,fn:e.withCtx(l=>[e.renderSlot(a.$slots,r,e.mergeProps({ref_for:!0},l??{}))])}))]),1032,["tool-call","messages"]))),128))}});let Wt=!1;function En(){e.onMounted(()=>{if(Wt||typeof document>"u")return;Wt=!0,import("katex/dist/katex.min.css").catch(()=>{console.warn("[CopilotKit] Failed to load katex styles — math content may render without formatting")})})}const ga=["data-message-id"],ha={class:"cpk:w-full cpk:bg-transparent cpk:flex cpk:items-center cpk:-ml-[5px] cpk:-mt-[0px]"},va={class:"cpk:flex cpk:items-center cpk:gap-1"},ba=["aria-label","title"],ka=["aria-label","title"],ya=["aria-label","title"],wa=["aria-label","title"],Ca=["aria-label","title"],qt="cpk:cursor-pointer cpk:p-1 cpk:text-muted-foreground cpk:transition-all cpk:hover:text-foreground cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50",Kt="cpk:absolute cpk:top-full cpk:right-0 cpk:z-10 cpk:mt-1 cpk:min-w-[120px] cpk:overflow-hidden cpk:rounded-md cpk:border cpk:border-border cpk:bg-background cpk:shadow-lg",it="cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted/40",Gt="cpk:cursor-pointer cpk:p-1 cpk:text-muted-foreground cpk:transition-all cpk:hover:text-foreground cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50",Mn=e.defineComponent({__name:"CopilotChatAssistantMessage",props:{message:{},messages:{default:()=>[]},isRunning:{type:Boolean,default:!1},toolbarVisible:{type:Boolean,default:!0},onThumbsUp:{},onThumbsDown:{},onReadAloud:{},onRegenerate:{}},emits:["thumbs-up","thumbs-down","read-aloud","regenerate"],setup(t,{emit:o}){En();const n=t,a=o,i=pe(),s=e.computed(()=>i.value?.labels??Ve),r=e.ref(!1);let l=null;const 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 u(M,H){try{const q=new URL(M,"https://copilotkit.local").pathname.split("/").filter(Boolean).pop();if(q)return decodeURIComponent(q)}catch{return H}return H}function d(M,H){if(typeof document>"u")return;const z=document.createElement("a");z.href=M,z.download=H,z.rel="noopener noreferrer",document.body.appendChild(z),z.click(),document.body.removeChild(z)}function k(M){const H=Array.from(M.querySelectorAll("thead th")).map(q=>(q.textContent??"").trim()),z=Array.from(M.querySelectorAll("tbody tr")).map(q=>Array.from(q.querySelectorAll("td")).map(te=>(te.textContent??"").trim()));return{headers:H,rows:z}}function y(M,H){const z=te=>{const W=te.includes(H)||te.includes('"')||te.includes(`
|
|
67
|
+
`),ce=te.replace(/"/g,'""');return W?`"${ce}"`:ce},q=[];M.headers.length>0&&q.push(M.headers.map(z).join(H));for(const te of M.rows)q.push(te.map(z).join(H));return q.join(`
|
|
68
|
+
`)}function p(M){if(M.headers.length===0)return M.rows.map(q=>`| ${q.join(" | ")} |`).join(`
|
|
69
|
+
`);const H=`| ${M.headers.map(()=>"---").join(" | ")} |`,z=M.rows.map(q=>`| ${q.join(" | ")} |`);return[`| ${M.headers.join(" | ")} |`,H,...z].join(`
|
|
70
|
+
`)}function m(M,H,z){if(typeof document>"u")return;const q=new Blob([M],{type:z}),te=URL.createObjectURL(q);d(te,H),URL.revokeObjectURL(te)}const v=e.defineComponent({name:"CopilotMarkdownImage",inheritAttrs:!1,props:{src:{type:String,default:""},alt:{type:String,default:""}},setup(M,{attrs:H}){async function z(){if(!M.src)return;const q=u(M.src,"image");try{const te=await fetch(M.src);if(!te.ok)throw new Error("Failed to fetch image");const W=await te.blob(),ce=URL.createObjectURL(W);d(ce,q),URL.revokeObjectURL(ce)}catch{d(M.src,q)}}return()=>{const q={...H,src:M.src,alt:M.alt,class:["cpk:max-w-full cpk:rounded-lg",H.class].filter(Boolean).join(" "),"data-streamdown":"image"};return delete q.className,e.h("div",{class:"cpk:group cpk:relative cpk:my-4 cpk:inline-block","data-streamdown":"image-wrapper"},[e.h("img",q),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:z},[e.h(oe.Download,{class:"cpk:size-[14px]"})])])}}}),g=e.defineComponent({name:"CopilotMarkdownTable",inheritAttrs:!1,setup(M,{attrs:H,slots:z}){const q=e.ref(null),te=e.ref(!1),W=e.ref(!1),ce=e.ref(!1);let me=null;const ve=()=>{te.value=!1,W.value=!1},Be=()=>{me&&clearTimeout(me),ce.value=!0,me=setTimeout(()=>{ce.value=!1,me=null},2e3)},Fe=()=>q.value?q.value.querySelector("table"):null,Ee=()=>{const le=Fe();return le?k(le):null},De=async le=>{const V=Ee();if(!V)return;const fe=y(V,le==="csv"?",":" ");if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(fe)}catch{return}ve(),Be()},xe=le=>{const V=Ee();V&&(le==="csv"?m(y(V,","),"table.csv","text/csv"):m(p(V),"table.md","text/markdown"),ve())},ye=le=>{if(!q.value)return;const V=le.target;V&&!q.value.contains(V)&&ve()};return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("mousedown",ye)}),e.onBeforeUnmount(()=>{me&&clearTimeout(me),typeof document<"u"&&document.removeEventListener("mousedown",ye)}),()=>{const le={...H,class:["cpk:w-full cpk:border-collapse cpk:border cpk:border-border",H.class].filter(Boolean).join(" "),"data-streamdown":"table"};return delete le.className,e.h("div",{ref:q,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:qt,title:"Copy table",onClick:()=>{te.value=!te.value,W.value=!1}},[ce.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})]),te.value?e.h("div",{class:Kt},[e.h("button",{type:"button",class:it,title:"Copy table as CSV",onClick:()=>De("csv")},"CSV"),e.h("button",{type:"button",class:it,title:"Copy table as TSV",onClick:()=>De("tsv")},"TSV")]):null]),e.h("div",{class:"cpk:relative"},[e.h("button",{type:"button",class:qt,title:"Download table",onClick:()=>{W.value=!W.value,te.value=!1}},[e.h(oe.Download,{class:"cpk:size-[14px]"})]),W.value?e.h("div",{class:Kt},[e.h("button",{type:"button",class:it,title:"Download table as CSV",onClick:()=>xe("csv")},"CSV"),e.h("button",{type:"button",class:it,title:"Download table as Markdown",onClick:()=>xe("markdown")},"Markdown")]):null])]),e.h("div",{class:"cpk:overflow-x-auto"},[e.h("table",le,z.default?z.default():[])])])}}}),b={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"},f=e.defineComponent({name:"CopilotCodeBlockCopyAction",props:{code:{type:String,default:""}},setup(M){const H=e.ref(!1);let z=null;const q=async()=>{if(M.code){if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(M.code)}catch{return}z&&clearTimeout(z),H.value=!0,z=setTimeout(()=>{H.value=!1,z=null},2e3)}};return e.onBeforeUnmount(()=>{z&&clearTimeout(z)}),()=>e.h("button",{type:"button",class:Gt,title:"Copy Code","data-streamdown":"code-block-copy-button",onClick:q},[H.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})])}}),S=e.defineComponent({name:"CopilotCodeBlockDownloadAction",props:{code:{type:String,default:""},language:{type:String,default:""}},setup(M){const H=()=>{if(!M.code)return;const z=b[M.language.toLowerCase()]??"txt";m(M.code,`file.${z}`,"text/plain")};return()=>e.h("button",{type:"button",class:Gt,title:"Download file","data-streamdown":"code-block-download-button",onClick:H},[e.h(oe.Download,{class:"cpk:size-[14px]"})])}}),w={img:v,table:g};function A(M){return M?typeof M=="string"?M:Array.isArray(M)?M.map(z=>z&&typeof z=="object"&&"type"in z&&z.type==="text"&&typeof z.text=="string"?z.text:"").filter(z=>z.length>0).join(`
|
|
71
|
+
`):"":""}const h=e.computed(()=>A(n.message.content)),E=e.computed(()=>h.value.trim().length>0),T=e.computed(()=>typeof n.onThumbsUp=="function"),R=e.computed(()=>typeof n.onThumbsDown=="function"),B=e.computed(()=>typeof n.onReadAloud=="function"),F=e.computed(()=>typeof n.onRegenerate=="function"),N=e.computed(()=>n.messages[n.messages.length-1]?.id===n.message.id),j=e.computed(()=>n.toolbarVisible&&E.value&&!(n.isRunning&&N.value));function C(){l&&clearTimeout(l),r.value=!0,l=setTimeout(()=>{r.value=!1,l=null},2e3)}async function I(){const M=h.value;if(M&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(M),C()}catch(H){console.error("Failed to copy to clipboard:",H)}}function L(){a("thumbs-up",n.message)}function $(){a("thumbs-down",n.message)}function O(){a("read-aloud",n.message)}function G(){a("regenerate",n.message)}return e.onBeforeUnmount(()=>{l&&clearTimeout(l)}),(M,H)=>e.renderSlot(M.$slots,"layout",{message:t.message,content:h.value,isRunning:t.isRunning,toolbarVisible:t.toolbarVisible,shouldShowToolbar:j.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:I,onThumbsUp:L,onThumbsDown:$,onReadAloud:O,onRegenerate:G},()=>[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:h.value},()=>[E.value?(e.openBlock(),e.createBlock(e.unref(nn.StreamMarkdown),{key:0,class:"copilot-chat-assistant-markdown",content:h.value,components:w,"code-block-actions":[e.unref(S),e.unref(f)],"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(Rn,{message:t.message,messages:t.messages},e.createSlots({_:2},[e.renderList(M.$slots,(z,q)=>({name:q,fn:e.withCtx(te=>[e.renderSlot(M.$slots,q,e.normalizeProps(e.guardReactiveProps(te)))])}))]),1032,["message","messages"])]),j.value?e.renderSlot(M.$slots,"toolbar",{key:0,message:t.message,shouldShowToolbar:j.value},()=>[e.createElementVNode("div",ha,[e.createElementVNode("div",va,[e.renderSlot(M.$slots,"copy-button",{onCopy:I,copied:r.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:I},[r.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,ba)]),T.value||M.$slots["thumbs-up-button"]?e.renderSlot(M.$slots,"thumbs-up-button",{key:0,onThumbsUp:L,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:L},[e.createVNode(e.unref(oe.ThumbsUp),{class:"cpk:size-[18px]"})],10,ka)]):e.createCommentVNode("",!0),R.value||M.$slots["thumbs-down-button"]?e.renderSlot(M.$slots,"thumbs-down-button",{key:1,onThumbsDown:$,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:$},[e.createVNode(e.unref(oe.ThumbsDown),{class:"cpk:size-[18px]"})],10,ya)]):e.createCommentVNode("",!0),B.value||M.$slots["read-aloud-button"]?e.renderSlot(M.$slots,"read-aloud-button",{key:2,onReadAloud:O,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:O},[e.createVNode(e.unref(oe.Volume2),{class:"cpk:size-[20px]"})],10,wa)]):e.createCommentVNode("",!0),F.value||M.$slots["regenerate-button"]?e.renderSlot(M.$slots,"regenerate-button",{key:3,onRegenerate:G,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:G},[e.createVNode(e.unref(oe.RefreshCw),{class:"cpk:size-[18px]"})],10,Ca)]):e.createCommentVNode("",!0),e.renderSlot(M.$slots,"toolbar-items")])])]):e.createCommentVNode("",!0)],16,ga)])}});class Ge 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),i=e.ref("idle"),s=e.ref(null),r=e.ref(null),l=e.ref(null),c=e.ref(null),u=e.ref(null),d=e.ref([]),k=e.ref([]),y=e.ref(0),p=e.ref(0),m=e.ref(0);function v(){u.value!==null&&(cancelAnimationFrame(u.value),u.value=null);const w=s.value;if(w&&w.state!=="inactive")try{w.stop()}catch{}r.value&&(r.value.getTracks().forEach(h=>h.stop()),r.value=null);const A=c.value;A&&A.state!=="closed"&&A.close().catch(()=>{}),s.value=null,l.value=null,c.value=null,d.value=[],k.value=[],y.value=0,p.value=0,m.value=0}async function g(){if(i.value!=="idle")throw new Ge("Recorder is already active");try{const w=await navigator.mediaDevices.getUserMedia({audio:!0});r.value=w;const A=new AudioContext;c.value=A;const h=A.createMediaStreamSource(w),E=A.createAnalyser();E.fftSize=2048,h.connect(E),l.value=E;const T=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":MediaRecorder.isTypeSupported("audio/webm")?"audio/webm":MediaRecorder.isTypeSupported("audio/mp4")?"audio/mp4":"",R=T?{mimeType:T}:{},B=new MediaRecorder(w,R);s.value=B,d.value=[],B.ondataavailable=F=>{F.data.size>0&&d.value.push(F.data)},B.start(100),i.value="recording"}catch(w){throw v(),w instanceof Error&&w.name==="NotAllowedError"?new Ge("Microphone permission denied"):w instanceof Error&&w.name==="NotFoundError"?new Ge("No microphone found"):new Ge(w instanceof Error?w.message:"Failed to start recording")}}function b(){return new Promise((w,A)=>{const h=s.value;if(!h||i.value!=="recording"){A(new Ge("No active recording"));return}i.value="processing",h.onstop=()=>{const E=new Blob(d.value,{type:h.mimeType||"audio/webm"});v(),i.value="idle",w(E)},h.onerror=()=>{v(),i.value="idle",A(new Ge("Recording failed"))},h.stop()})}function f(w){let A=0;for(let h=0;h<w.length;h+=1){const E=(w[h]??128)/128-1;A+=E*E}return Math.sqrt(A/w.length)}function S(){const w=a.value;if(!w)return;const A=w.getContext("2d");if(!A)return;const h=w.getBoundingClientRect(),E=window.devicePixelRatio||1;(w.width!==h.width*E||w.height!==h.height*E)&&(w.width=h.width*E,w.height=h.height*E,A.scale(E,E));const T=2,B=T+1,F=Math.floor(h.width/B)+2;if(l.value&&i.value==="recording"){k.value.length===0&&(k.value=Array.from({length:F},()=>0)),m.value<1&&(m.value=Math.min(1,m.value+.03)),y.value+=1/3;const L=l.value.fftSize,$=new Uint8Array(L);l.value.getByteTimeDomainData($);const O=f($),H=O>p.value?.12:.08;p.value+=(O-p.value)*H,y.value>=B&&(y.value-=B,k.value.push(p.value),k.value.length>F&&(k.value=k.value.slice(-F)))}A.clearRect(0,0,h.width,h.height);const N=window.getComputedStyle(w);A.fillStyle=N.color,A.globalAlpha=m.value;const j=h.height/2,C=h.height/2-2,I=12;for(let L=0;L<k.value.length;L+=1){const $=k.value[L]??0,O=Math.min($*4,1),G=Math.max(2,O*C*2),M=h.width-(k.value.length-L)*B-y.value,H=j-G/2;if(M+T<=0||M>=h.width)continue;let z=1;M<I?z=Math.max(0,M/I):M>h.width-I&&(z=Math.max(0,(h.width-M)/I)),A.globalAlpha=m.value*z,A.fillRect(M,H,T,G)}u.value=requestAnimationFrame(S)}return e.watch(i,()=>{u.value!==null&&(cancelAnimationFrame(u.value),u.value=null),u.value=requestAnimationFrame(S)},{immediate:!0}),e.onBeforeUnmount(()=>{v()}),o({get state(){return i.value},start:g,stop:b,dispose:v}),(w,A)=>(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))}}),Rt=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,i)=>(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 Bn=(t=>(t.OnMessagesChanged="OnMessagesChanged",t.OnStateChanged="OnStateChanged",t.OnRunStatusChanged="OnRunStatusChanged",t))(Bn||{});const Sa=["OnMessagesChanged","OnStateChanged","OnRunStatusChanged"];function ft(t={}){const o=t.threadId!==void 0,n=t.runtimeAgentId!==void 0,a=t.agentId!==void 0;if(o&&!n)throw new Error('useAgent: `threadId` requires `runtimeAgentId`. A threadId is written onto a single agent, but an agent resolved by agentId alone is shared, so scoping a thread to it would clobber other useAgent callers. Pass a distinct local `agentId` and the runtime agent to route to, e.g. useAgent({ agentId: "chat-1", runtimeAgentId: "assistant", threadId }).');if(n&&!o)throw new Error("useAgent: `runtimeAgentId` requires `threadId`. A proxied agent exists to scope a thread to a private instance; without a threadId it behaves like the shared agent while adding a registration and a local agentId to keep unique. Either pass the thread, or bind to the agent directly with useAgent({ agentId }).");if(n&&!a)throw new Error(`useAgent: \`runtimeAgentId\` requires an explicit \`agentId\`. The proxied agent is registered under \`agentId\`, and the usual fallbacks (chat configuration, then "${_.DEFAULT_AGENT_ID}") name agents that already exist — registering over one throws or shadows it. Pick a local id for this hook, e.g. useAgent({ agentId: "chat-1", runtimeAgentId: "assistant", threadId }).`);const i=n,s=pe(),r=e.computed(()=>e.toValue(t.agentId)??s.value?.agentId??_.DEFAULT_AGENT_ID),l=e.computed(()=>i?e.toValue(t.runtimeAgentId):void 0),c=e.computed(()=>e.toValue(t.threadId)??(s.value?.hasExplicitThreadId?s.value.threadId:void 0)),{copilotkit:u}=Ce(),d=e.computed(()=>t.updates??Sa),k=e.computed(()=>u.value.defaultThrottleMs),y=e.computed(()=>e.toValue(t.throttleMs)),p=e.shallowRef(null),m=e.shallowRef(null),v=new Map,g=(S,w,A,h)=>{const E=new Z.ProxiedCopilotRuntimeAgent({runtimeUrl:w,agentId:S,transport:A,runtimeMode:"pending"});return E.headers={...h},E},b=e.shallowRef(null);i&&e.watch([r,l,()=>u.value],([S,w],A,h)=>{const{agent:E,unregister:T}=u.value.registerProxiedAgent({agentId:S,runtimeAgentId:w});v.delete(S),b.value=E,h(()=>{T(),b.value=null})},{immediate:!0});const f=()=>{const S=r.value,w=u.value;if(i){const B=b.value;if(B){v.delete(S);const j=p.value===B;p.value=B,m.value=B,j&&e.triggerRef(p);return}const F=v.get(S);if(F){F.headers={...w.headers},p.value=F,m.value=F;return}const N=new Z.ProxiedCopilotRuntimeAgent({runtimeUrl:w.runtimeUrl,agentId:S,runtimeAgentId:l.value,transport:w.runtimeTransport,runtimeMode:"pending"});N.headers={...w.headers},v.set(S,N),p.value=N,m.value=N;return}const A=w.getAgent(S);if(A){v.delete(S);const B=p.value===A;p.value=A,m.value=A,B&&e.triggerRef(p);return}const h=w.runtimeUrl!==void 0,E=w.runtimeConnectionStatus;if(h&&(E===Z.CopilotKitCoreRuntimeConnectionStatus.Disconnected||E===Z.CopilotKitCoreRuntimeConnectionStatus.Connecting||E===Z.CopilotKitCoreRuntimeConnectionStatus.Error)){const B=v.get(S);if(B){B.headers={...w.headers},p.value=B,m.value=B;return}const F=g(S,w.runtimeUrl,w.runtimeTransport,w.headers);v.set(S,F),p.value=F,m.value=F;return}const T=Object.keys(w.agents??{}),R=h?`runtimeUrl=${w.runtimeUrl}`:"no runtimeUrl";throw new Error(`useAgent: Agent '${S}' not found after runtime sync (${R}). `+(T.length?`Known agents: [${T.join(", ")}]`:"No agents registered.")+" Verify your runtime /info and/or agents__unsafe_dev_only.")};return e.watch([r,b,()=>u.value.agents,()=>u.value.runtimeConnectionStatus,()=>u.value.runtimeUrl,()=>u.value.runtimeTransport,()=>JSON.stringify(Object.entries(u.value.headers??{}).sort(([S],[w])=>S.localeCompare(w)))],f,{immediate:!0}),e.watch([()=>p.value,c],([S,w])=>{!S||!w||(S.threadId=w)},{immediate:!0}),e.watch([m,()=>JSON.stringify(Object.entries(u.value.headers??{}).sort(([S],[w])=>S.localeCompare(w)))],([S])=>{S instanceof Qe.HttpAgent&&(S.headers={...u.value.headers})},{immediate:!0}),e.watch([m,d,y,k],([S,w],A,h)=>{const E=w;if(!S||E.length===0)return;let T=!0,R=!1;const B=()=>{T&&(R||(R=!0,queueMicrotask(()=>{R=!1,T&&e.triggerRef(p)})))},F={};E.includes("OnMessagesChanged")&&(F.onMessagesChanged=()=>{T&&e.triggerRef(p)}),E.includes("OnStateChanged")&&(F.onStateChanged=B),E.includes("OnRunStatusChanged")&&(F.onRunInitialized=B,F.onRunFinalized=B,F.onRunFailed=B,F.onRunErrorEvent=B);const N=u.value.subscribeToAgentWithOptions(S,F,{throttleMs:e.toValue(t.throttleMs)});h(()=>{T=!1,N.unsubscribe()})},{immediate:!0}),{agent:p}}function Fn(t={}){const{copilotkit:o}=Ce(),n=pe(),a=e.computed(()=>e.toValue(t.agentId)??n.value?.agentId??_.DEFAULT_AGENT_ID),i=e.ref([]),s=e.ref(!1),r=()=>{const u=o.value.getSuggestions(a.value);i.value=u.suggestions,s.value=u.isLoading};return e.watch([()=>o.value,a],()=>r(),{immediate:!0}),e.watch([()=>o.value,a],(u,d,k)=>{const y=o.value,p=a.value,m=y.subscribe({onSuggestionsChanged:({agentId:v,suggestions:g})=>{if(v!==p)return;i.value=g;const b=y.getSuggestions(p);s.value=b.isLoading},onSuggestionsStartedLoading:({agentId:v})=>{v===p&&(s.value=!0)},onSuggestionsFinishedLoading:({agentId:v})=>{v===p&&(s.value=!1)},onSuggestionsConfigChanged:()=>{const v=y.getSuggestions(p);i.value=v.suggestions,s.value=v.isLoading}});k(()=>m.unsubscribe())},{immediate:!0}),{suggestions:i,isLoading:s,reloadSuggestions:()=>{o.value.reloadSuggestions(a.value)},clearSuggestions:()=>{o.value.clearSuggestions(a.value)}}}function Nn(t){const o=e.shallowRef([]),n=e.ref(!1),a=e.ref(null),i=e.ref(null),s=e.ref(e.toValue(t.config)),r=e.shallowRef(o.value),l=e.computed(()=>s.value?.enabled??!1);e.watch(()=>e.toValue(t.config),f=>{s.value=f},{immediate:!0});const c=f=>{o.value=f,r.value=f},u=f=>{c(f(r.value))};async function d(f){const S=s.value,w=S?.accept??"*/*",A=S?.maxSize??20*1024*1024,h=f.filter(T=>!_.matchesAcceptFilter(T,w));for(const T of h)S?.onUploadFailed?.({reason:"invalid-type",file:T,message:`File "${T.name}" is not accepted. Supported types: ${w}`});const E=f.filter(T=>_.matchesAcceptFilter(T,w));for(const T of E){if(_.exceedsMaxSize(T,A)){S?.onUploadFailed?.({reason:"file-too-large",file:T,message:`File "${T.name}" exceeds the maximum size of ${_.formatFileSize(A)}`});continue}const R=_.getModalityFromMimeType(T.type),B=_.randomUUID();u(F=>[...F,{id:B,type:R,source:{type:"data",value:"",mimeType:T.type},filename:T.name,size:T.size,status:"uploading"}]);try{let F,N;if(S?.onUpload){const C=await S.onUpload(T),{metadata:I,...L}=C;F=L,N=I}else F={type:"data",value:await _.readFileAsBase64(T),mimeType:T.type};let j;R==="video"&&(j=await _.generateVideoThumbnail(T)),u(C=>C.map(I=>I.id===B?{...I,source:F,status:"ready",thumbnail:j,metadata:N}:I))}catch(F){u(N=>N.filter(j=>j.id!==B)),console.error(`[CopilotKit] Failed to upload "${T.name}":`,F),S?.onUploadFailed?.({reason:"upload-failed",file:T,message:F instanceof Error?F.message:`Failed to upload "${T.name}"`})}}}async function k(f){const S=f.target;S?.files?.length&&(await d(Array.from(S.files)),S&&(S.value=""))}function y(f){l.value&&(f.preventDefault(),f.stopPropagation(),n.value=!0)}function p(f){f.preventDefault(),f.stopPropagation(),n.value=!1}async function m(f){if(f.preventDefault(),f.stopPropagation(),n.value=!1,!l.value)return;const S=Array.from(f.dataTransfer?.files??[]);S.length>0&&await d(S)}function v(f){u(S=>S.filter(w=>w.id!==f))}function g(){const f=r.value.filter(S=>S.status==="ready");return f.length===0||(u(S=>S.filter(w=>w.status!=="ready")),a.value&&(a.value.value="")),f}async function b(f){if(!l.value)return;const S=f.target;if(!S||!i.value?.contains(S))return;const w=s.value?.accept??"*/*",h=Array.from(f.clipboardData?.items??[]).filter(T=>{if(T.kind!=="file")return!1;const R=T.getAsFile();return R!==null&&_.matchesAcceptFilter(R,w)});if(h.length===0)return;f.preventDefault();const E=h.map(T=>T.getAsFile()).filter(T=>T!==null);await d(E)}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:i,processFiles:d,handleFileUpload:k,handleDragOver:y,handleDragLeave:p,handleDrop:m,removeAttachment:v,consumeAttachments:g}}async function xa(t){return await new Promise((o,n)=>{const a=new FileReader;a.onloadend=()=>{const i=a.result;o(i.split(",")[1]??"")},a.addEventListener("error",()=>n(new Error("Failed to read audio data"))),a.readAsDataURL(t)})}function Ta(t){return typeof t=="object"&&t!==null&&"error"in t&&"message"in t&&typeof t.error=="string"&&typeof t.message=="string"}function Ia(t){return{code:t.error,message:t.message,retryable:t.retryable??!1}}class Je extends Error{info;constructor(o){super(o.message),this.name="TranscriptionError",this.info=o}}async function Aa(t,o,n="recording.webm"){const a=t.runtimeUrl;if(!a)throw new Je({code:_.TranscriptionErrorCode.INVALID_REQUEST,message:"Runtime URL is not configured",retryable:!1});const i={...t.headers};let s;try{if(t.runtimeTransport==="single"){const r=await xa(o);i["Content-Type"]="application/json",s=await fetch(a,{method:"POST",headers:i,body:JSON.stringify({method:"transcribe",body:{audio:r,mimeType:o.type||"audio/webm",filename:n}})})}else{delete i["Content-Type"];const r=new FormData;r.append("audio",o,n),s=await fetch(`${a}/transcribe`,{method:"POST",headers:i,body:r})}}catch(r){throw new Je({code:_.TranscriptionErrorCode.NETWORK_ERROR,message:r instanceof Error?r.message:"Network request failed",retryable:!0})}if(!s.ok){let r;try{r=await s.json()}catch{throw new Je({code:_.TranscriptionErrorCode.PROVIDER_ERROR,message:`HTTP ${s.status}: ${s.statusText}`,retryable:s.status>=500})}throw Ta(r)?new Je(Ia(r)):new Je({code:_.TranscriptionErrorCode.PROVIDER_ERROR,message:typeof r=="object"&&r!==null&&"message"in r?String(r.message):"Transcription failed",retryable:s.status>=500})}return await s.json()}function Vn(){const t=typeof window<"u"?window.innerHeight:0,o=e.ref(!1),n=e.ref(0),a=e.ref(t),i=e.ref(t),s=()=>{if(typeof window>"u")return;const l=window.visualViewport;if(!l)return;const c=window.innerHeight,u=l.height,d=Math.max(0,c-u),k=d>150;n.value=d,o.value=k,a.value=u,i.value=c};let r=null;return e.onMounted(()=>{typeof window>"u"||(r=window.visualViewport??null,r&&(s(),r.addEventListener("resize",s),r.addEventListener("scroll",s)))}),e.onBeforeUnmount(()=>{r&&(r.removeEventListener("resize",s),r.removeEventListener("scroll",s),r=null)}),{isKeyboardOpen:e.readonly(o),keyboardHeight:e.readonly(n),availableHeight:e.readonly(a),viewportHeight:e.readonly(i)}}const Ra={id:null,sendNonce:0},Dn=Symbol("LastUserMessage");function Ea(){return e.ref({...Ra})}function Ma({scrollRef:t,contentRef:o,spacerRef:n,topOffset:a=16}){const i=e.inject(Dn,Ea(),!0);let s=-1,r=null,l=null;function c(){r!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(r),r=null,l?.disconnect(),l=null}e.watch([()=>i.value.id,()=>i.value.sendNonce,t,o,n,()=>a],([u,d,k,y,p],m,v)=>{if(v(c),d===s||(s=d,!u)||!k||!y||!p)return;const g=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(u):u.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&"),b=y.querySelector(`[data-message-id="${g}"]`);if(!b)return;const f=k.clientHeight,S=b.getBoundingClientRect().height,w=parseFloat(getComputedStyle(b).paddingTop)||0,A=Math.max(0,S-w),h=Math.max(0,f-A-a);p.style.height=`${h}px`,typeof requestAnimationFrame=="function"&&(r=requestAnimationFrame(()=>{const E=Jt(b,k)+w-a;k.scrollTo({top:Math.max(0,E),behavior:"smooth"})})),typeof ResizeObserver<"u"&&(l=new ResizeObserver(()=>{if(!y||!p||!k)return;const E=y.getBoundingClientRect().height,T=Jt(b,y),R=E-T-S,B=Math.max(0,h-R);p.style.height=`${B}px`}),l.observe(y))},{immediate:!0,flush:"post"})}function Jt(t,o){const n=t.getBoundingClientRect(),a=o.getBoundingClientRect();return n.top-a.top+o.scrollTop}const $a={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"},Ba=["data-layout"],Fa=["data-layout"],Na=["aria-label","disabled"],Va={key:0,class:"cpk:my-1 cpk:h-px cpk:bg-border cpk:dark:bg-[#333333]"},Da=["onClick"],Oa={key:1,class:"cpk:flex cpk:w-full cpk:items-center cpk:justify-center cpk:px-5 cpk:py-3"},La=["value","placeholder","disabled"],Pa={key:0,class:"cpk:px-3 cpk:py-2 cpk:text-sm cpk:text-muted-foreground"},Ua=["data-slash-index","aria-selected","data-active","onMouseenter","onMousedown"],za=["aria-label","disabled"],ja=["aria-label","disabled"],_a=["aria-label","disabled"],Ha={class:"cpk:mr-[10px]"},Wa=["disabled"],qa={"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"},et=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},onSubmitMessage:{},onStop:{},onAddFile:{},onStartTranscribe:{},onCancelTranscribe:{},onFinishTranscribe:{},onFinishTranscribeWithAudio:{}},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,i=e.useAttrs(),s=pe(),r=e.ref(null),l=e.ref(null),c=e.ref(null),u=e.ref(null),d=e.ref(null),k=e.ref(null),y=e.ref(null),p=e.ref(null),m=e.ref(n.modelValue??""),v=e.ref(!1),g=e.ref("compact"),b=e.ref(null),f=e.ref(0),S=e.ref(null),w=e.ref(!1),A=e.ref({singleLineHeight:0,maxHeight:0,paddingLeft:0,paddingRight:0}),h=e.ref(null),E=e.ref(!1),T=e.ref(null),R=e.ref(null),B=e.ref(!1),F=e.ref(!1);let N=null,j=null;const C=e.computed(()=>n.modelValue!==void 0),I=e.computed(()=>C.value?n.modelValue??"":m.value),L=e.computed(()=>s.value?.labels??Ve),$=e.computed(()=>n.placeholder??L.value.chatInputPlaceholder),O=e.computed(()=>n.mode==="input"&&g.value==="expanded"),G=e.computed(()=>n.mode!=="transcribe"&&n.isRunning),M=e.computed(()=>n.showDisclaimer??n.positioning==="absolute"),H=e.computed(()=>typeof n.onSubmitMessage=="function"),z=e.computed(()=>typeof n.onStop=="function"),q=e.computed(()=>typeof n.onAddFile=="function"),te=e.computed(()=>typeof n.onStartTranscribe=="function"),W=e.computed(()=>typeof n.onCancelTranscribe=="function"),ce=e.computed(()=>typeof n.onFinishTranscribe=="function"||typeof n.onFinishTranscribeWithAudio=="function"),me=e.computed(()=>n.mode==="input"&&!n.disabled&&H.value&&I.value.trim().length>0),ve=e.computed(()=>G.value?!z.value:!me.value),Be=e.computed(()=>[n.positioning==="absolute"&&"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none",i.class]),Fe=e.computed(()=>{const x={...i};return delete x.class,x});function Ee(x){return Array.isArray(x.items)}function De(){return q.value?{label:L.value.chatInputToolbarAddButtonLabel,action:()=>a("add-file")}:null}function xe(){const x=[],D=De();if(D&&x.push(D),n.toolsMenu.length>0){x.length>0&&x.push("-");for(const K of n.toolsMenu){if(K==="-"){if(x.length===0||x[x.length-1]==="-")continue;x.push("-");continue}x.push(K)}}for(;x.length>0&&x[x.length-1]==="-";)x.pop();return x}const ye=e.computed(()=>xe()),le=e.computed(()=>ye.value.length>0);function V(x){const D=new Set,K=[],ee=we=>{for(const ie of we)if(ie!=="-"){if(Ee(ie)&&ie.items.length>0){ee(ie.items);continue}!ie.action||D.has(ie.label)||(D.add(ie.label),K.push(ie))}};return ee(x),K}const Y=e.computed(()=>V(ye.value));function fe(x,D=0,K="root"){const ee=[];for(const[we,ie]of x.entries()){const Ae=`${K}-${we}`;if(ie==="-"){ee.push({type:"separator",key:`sep-${Ae}`});continue}if(Ee(ie)&&ie.items.length>0){ee.push({type:"label",key:`label-${Ae}`,label:ie.label,depth:D}),ee.push(...fe(ie.items,D+1,Ae));continue}ie.action&&ee.push({type:"item",key:`item-${Ae}`,label:ie.label,depth:D,action:ie.action})}return ee}const Ne=e.computed(()=>fe(ye.value)),ge=e.computed(()=>{if(b.value===null||Y.value.length===0)return[];const x=b.value.trim().toLowerCase();if(x.length===0)return Y.value;const D=[],K=[];for(const ee of Y.value){const we=ee.label.toLowerCase();if(we.startsWith(x)){D.push(ee);continue}we.includes(x)&&K.push(ee)}return[...D,...K]}),He=e.computed(()=>b.value!==null&&Y.value.length>0);function _e(x){C.value||(m.value=x),a("update:modelValue",x)}function We(){_e("")}function qe(x){if(Y.value.length===0){b.value=null;return}if(x.startsWith("/")){const D=x.split(/\r?\n/,1)[0]??"";b.value=D.slice(1);return}b.value=null}function P(x){We(),x.action?.(),b.value=null,f.value=0,requestAnimationFrame(()=>{l.value?.focus()})}function ae(){if(n.mode!=="input"||n.disabled||!H.value)return;const D=(l.value?.value??I.value).trim();D&&(a("submit-message",D),n.clearOnSubmit&&We(),l.value?.focus())}function ne(x){const D=x.target.value;_e(D),qe(D)}function Te(){if(G.value){z.value&&a("stop");return}ae()}function Ie(x){if(!n.disabled&&!(v.value||x.isComposing||x.keyCode===229)){if(b.value!==null&&n.mode==="input"){if(x.key==="ArrowDown"){ge.value.length>0&&(x.preventDefault(),f.value=f.value<0?0:(f.value+1)%ge.value.length);return}if(x.key==="ArrowUp"){ge.value.length>0&&(x.preventDefault(),f.value<0?f.value=ge.value.length-1:f.value=f.value<=0?ge.value.length-1:f.value-1);return}if(x.key==="Enter"){const D=f.value>=0?ge.value[f.value]:void 0;if(D){x.preventDefault(),P(D);return}}if(x.key==="Escape"){x.preventDefault(),b.value=null;return}}if(x.key==="Enter"&&!x.shiftKey&&n.mode==="input"){if(x.preventDefault(),G.value){z.value&&a("stop");return}ae()}}}function ue(){!le.value||n.mode==="transcribe"||n.disabled||(w.value=!w.value)}function be(){w.value=!1}function Me(x){x(),be(),e.nextTick(()=>{l.value?.focus()})}async function se(){const x=p.value;if(x&&x.state==="recording")try{const D=await x.stop();a("finish-transcribe-with-audio",D)}catch(D){console.error("Failed to stop recording:",D)}a("finish-transcribe")}function Ue(x){const D=x.target;!D||n.mode!=="input"||D.tagName==="BUTTON"||D.closest("button")||l.value?.focus()}function U(){const x=l.value;if(!x||v.value)return;const D=x.value,K=x.style.height;x.style.height="auto";const ee=window.getComputedStyle(x),we=parseFloat(ee.paddingLeft)||0,ie=parseFloat(ee.paddingRight)||0,Ae=parseFloat(ee.paddingTop)||0,Se=parseFloat(ee.paddingBottom)||0;x.value="";const ze=x.scrollHeight;x.value=D;const de=(ze-Ae-Se)*n.maxRows+Ae+Se;A.value={singleLineHeight:ze,maxHeight:de,paddingLeft:we,paddingRight:ie},x.style.height=K,x.style.maxHeight=`${de}px`}function J(){const x=l.value;if(!x)return 0;A.value.singleLineHeight===0&&U();const{maxHeight:D}=A.value;D&&(x.style.maxHeight=`${D}px`),x.style.height="auto";const K=x.scrollHeight;return x.style.height=`${D?Math.min(K,D):K}px`,K}function Q(x){g.value!==x&&(E.value=!0,g.value=x)}function re(x){const D=window.getComputedStyle(x);if(D.font?.trim())return D.font;if(D.fontSize&&D.fontFamily){const K=`${D.fontStyle} ${D.fontVariant} ${D.fontWeight} ${D.fontSize}/${D.lineHeight} ${D.fontFamily}`;if(K.trim())return K}return process.env.NODE_ENV!=="production"&&!B.value&&(B.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 Oe(){const x=c.value,D=u.value,K=d.value;if(!x||!D||!K)return R.value=null,null;const ee=window.getComputedStyle(x),we=parseFloat(ee.paddingLeft)||0,ie=parseFloat(ee.paddingRight)||0,Ae=parseFloat(ee.columnGap)||0,Se=x.clientWidth-we-ie;if(Se<=0)return R.value=null,null;const ze=D.getBoundingClientRect().width,Re=K.getBoundingClientRect().width,de=Math.max(Se-ze-Re-Ae*2,0);if(de<=0)return R.value=null,null;const je={compactWidth:de};return R.value=je,je}function $e(){if(n.mode!=="input"){Q("compact");return}if(typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches){U(),J(),Q("expanded");return}const x=l.value;if(!x||!c.value||!u.value||!d.value)return;A.value.singleLineHeight===0&&U();const D=J(),K=A.value.singleLineHeight,ee=I.value.includes(`
|
|
72
|
+
`),we=K>0?D>K+1:!1;let ie=ee||we;if(!ie){const Ae=R.value??Oe();if(Ae&&Ae.compactWidth>0){const Se=Math.max(Ae.compactWidth-A.value.paddingLeft-A.value.paddingRight,0);if(Se>0){const ze=T.value??document.createElement("canvas");T.value||(T.value=ze);const Re=ze.getContext("2d");if(Re){const de=re(x);if(de){Re.font=de;const je=I.value.length>0?I.value.split(`
|
|
73
|
+
`):[""];let Ye=0;for(const Qn of je){const Vt=Re.measureText(Qn||" ").width;Vt>Ye&&(Ye=Vt)}Ye>Se&&(ie=!0)}}else process.env.NODE_ENV!=="production"&&!F.value&&(F.value=!0,console.warn("[CopilotChatInput] canvas.getContext('2d') returned null. Text-width-based expansion will be skipped."))}}}Q(ie?"expanded":"compact")}function Le(x){if(E.value){E.value=!1;return}x&&(R.value=null,B.value=!1,F.value=!1),h.value!==null&&cancelAnimationFrame(h.value),h.value=requestAnimationFrame(()=>{h.value=null,$e()})}return e.watch(()=>n.modelValue,x=>{C.value&&(m.value=x??"")}),e.watch(I,x=>{qe(x),$e()}),e.watch(Y,()=>{Y.value.length===0&&(b.value=null)}),e.watch([b,()=>ge.value.length],([x,D])=>{x!==null&&x!==S.value&&D>0&&(f.value=0),S.value=x},{immediate:!0}),e.watch([b,ge],()=>{if(b.value===null){f.value=0;return}if(ge.value.length===0){f.value=-1;return}(f.value<0||f.value>=ge.value.length)&&(f.value=0)},{immediate:!0}),e.watch(()=>n.mode,async x=>{x!=="input"&&(g.value="compact",b.value=null,be());const D=p.value;if(D){if(x==="transcribe"){try{await D.start()}catch(K){console.error(K)}return}if(D.state==="recording")try{await D.stop()}catch{}}},{immediate:!0}),e.watch(p,async x=>{if(!(!x||n.mode!=="transcribe")&&x.state==="idle")try{await x.start()}catch(D){console.error(D)}},{immediate:!0}),e.watch(f,async x=>{if(!He.value||x<0)return;await e.nextTick(),k.value?.querySelector(`[data-slash-index="${x}"]`)?.scrollIntoView?.({block:"nearest"})}),e.watch(()=>n.disabled,x=>{x&&be()}),e.onMounted(()=>{if(n.autoFocus&&n.mode==="input"&&l.value?.focus(),$e(),typeof ResizeObserver<"u"){const x=new Set;c.value&&x.add(c.value),u.value&&x.add(u.value),d.value&&x.add(d.value),N=new ResizeObserver(D=>{const K=D.some(ee=>x.has(ee.target));Le(K)}),c.value&&N.observe(c.value),u.value&&N.observe(u.value),d.value&&N.observe(d.value),l.value&&N.observe(l.value)}j=x=>{if(!w.value)return;const D=x.target;D&&(y.value?.contains(D)||u.value?.contains(D)||be())},document.addEventListener("mousedown",j)}),e.onBeforeUnmount(()=>{j&&(document.removeEventListener("mousedown",j),j=null),N?.disconnect(),N=null,h.value!==null&&(cancelAnimationFrame(h.value),h.value=null)}),(x,D)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-chat-input-container",class:Be.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)"}:{}}},Fe.value),[e.createElementVNode("div",$a,[e.renderSlot(x.$slots,"layout",{mode:t.mode,isMultiline:O.value,value:I.value,disabled:t.disabled,placeholder:$.value,isProcessing:G.value,sendDisabled:ve.value,menuOpen:w.value,menuItems:Ne.value,onToggleMenu:ue,onMenuAction:Me,onUpdateValue:_e,onSubmit:ae,onKeydown:Ie,onSendClick:Te,onStartTranscribe:()=>a("start-transcribe"),onCancelTranscribe:()=>a("cancel-transcribe"),onFinishTranscribe:se},()=>[e.createElementVNode("div",{ref_key:"shellRef",ref:r,"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":O.value?"expanded":"compact",onClick:Ue},[e.createElementVNode("div",{ref_key:"gridRef",ref:c,class:e.normalizeClass(["cpk:grid cpk:w-full cpk:gap-x-3 cpk:gap-y-3 cpk:px-3 cpk:py-2",O.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":O.value?"expanded":"compact"},[e.createElementVNode("div",{ref_key:"addButtonContainerRef",ref:u,class:e.normalizeClass(["cpk:relative cpk:flex cpk:items-center cpk:col-start-1",O.value?"cpk:row-start-2":"cpk:row-start-1"])},[e.renderSlot(x.$slots,"add-menu-button",{disabled:t.disabled||t.mode==="transcribe"||!le.value,menuOpen:w.value,toggleMenu:ue,labels:L.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-add","aria-label":L.value.chatInputToolbarAddButtonLabel,disabled:t.disabled||t.mode==="transcribe"||!le.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(ue,["stop"])},[e.createVNode(e.unref(oe.Plus),{class:"cpk:size-[20px]"})],8,Na)]),w.value&&le.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"addMenuRef",ref:y,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(Ne.value,K=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:K.key},[K.type==="separator"?(e.openBlock(),e.createElementBlock("div",Va)):K.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+K.depth*12}px`})},[e.createElementVNode("span",null,e.toDisplayString(K.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+K.depth*12}px`}),onClick:ee=>Me(K.action)},e.toDisplayString(K.label),13,Da))],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",O.value?"cpk:col-span-3 cpk:row-start-1":"cpk:col-start-2 cpk:row-start-1"])},[t.mode==="transcribe"?e.renderSlot(x.$slots,"audio-recorder",{key:0},()=>[e.createVNode($n,{ref_key:"audioRecorderRef",ref:p},null,512)]):t.mode==="processing"?(e.openBlock(),e.createElementBlock("div",Oa,[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(x.$slots,"text-area",{value:I.value,disabled:t.disabled,placeholder:$.value,onInput:ne,onKeydown:Ie,autoFocus:t.autoFocus,isExpanded:O.value,rows:1,labels:L.value},()=>[e.createElementVNode("textarea",{ref_key:"textareaRef",ref:l,"data-testid":"copilot-chat-input-textarea",value:I.value,placeholder:$.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]",O.value?"cpk:px-5":"cpk:pr-5"]),style:{overflow:"auto",resize:"none"},onInput:ne,onKeydown:Ie,onCompositionstart:D[0]||(D[0]=K=>v.value=!0),onCompositionend:D[1]||(D[1]=K=>v.value=!1)},null,42,La)]),He.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"slashMenuRef",ref:k,"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"}},[ge.value.length===0?(e.openBlock(),e.createElementBlock("div",Pa," No commands found ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(ge.value,(K,ee)=>(e.openBlock(),e.createElementBlock("button",{key:`${K.label}-${ee}`,type:"button",role:"option","data-slash-index":ee,"aria-selected":ee===f.value,"data-active":ee===f.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]",ee===f.value?"cpk:bg-muted cpk:dark:bg-[#2f2f2f]":"cpk:bg-transparent"]),onMouseenter:we=>f.value=ee,onMousedown:e.withModifiers(we=>P(K),["prevent"])},e.toDisplayString(K.label),43,Ua))),128))],512)):e.createCommentVNode("",!0)],64))],2),e.createElementVNode("div",{ref_key:"actionsContainerRef",ref:d,class:e.normalizeClass(["cpk:flex cpk:items-center cpk:justify-end cpk:gap-2",O.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},[W.value||x.$slots["cancel-transcribe-button"]?e.renderSlot(x.$slots,"cancel-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("cancel-transcribe"),labels:L.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-cancel-transcribe","aria-label":L.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:D[2]||(D[2]=K=>a("cancel-transcribe"))},[e.createVNode(e.unref(oe.X),{class:"cpk:size-[18px]"})],8,za)]):e.createCommentVNode("",!0),ce.value||x.$slots["finish-transcribe-button"]?e.renderSlot(x.$slots,"finish-transcribe-button",{key:1,disabled:t.disabled,onClick:se,labels:L.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-finish-transcribe","aria-label":L.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:se},[e.createVNode(e.unref(oe.Check),{class:"cpk:size-[18px]"})],8,ja)]):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[te.value||x.$slots["start-transcribe-button"]?e.renderSlot(x.$slots,"start-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("start-transcribe"),labels:L.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-start-transcribe","aria-label":L.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:D[3]||(D[3]=K=>a("start-transcribe"))},[e.createVNode(e.unref(oe.Mic),{class:"cpk:size-[18px]"})],8,_a)]):e.createCommentVNode("",!0),e.renderSlot(x.$slots,"send-button",{disabled:ve.value,isProcessing:G.value,onClick:Te},()=>[e.createElementVNode("div",Ha,[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-send","aria-label":"Send message",disabled:ve.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:Te},[G.value&&z.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,Wa)])])],64))],2)],10,Fa)],8,Ba)])]),M.value?e.renderSlot(x.$slots,"disclaimer",{key:0,labels:L.value},()=>[e.createElementVNode("p",qa,e.toDisplayString(L.value.chatDisclaimerText),1)]):e.createCommentVNode("",!0)],16))}}),Ka=["data-card-type"],Ga={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"],Qa=["src","alt"],Xa={key:1,class:"cpk:w-full cpk:h-full cpk:relative"},Ya=["src","alt"],Za=["src"],es=["onClick"],ts={key:2,class:"cpk:flex cpk:flex-col cpk:gap-1 cpk:w-full"},ns=["src"],os={key:0,class:"cpk:text-xs cpk:font-medium cpk:overflow-hidden cpk:text-ellipsis cpk:whitespace-nowrap"},as=["onClick"],ss={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"},rs={class:"cpk:flex cpk:flex-col cpk:min-w-0"},is={class:"cpk:text-xs cpk:font-medium cpk:break-all cpk:leading-tight","data-testid":"copilot-chat-attachment-document-filename"},ls={key:0,class:"cpk:text-[11px] cpk:text-muted-foreground"},cs={key:2,class:"cpk:w-full cpk:h-full cpk:bg-muted-foreground/20","data-testid":"copilot-chat-attachment-placeholder"},us=["onClick"],ds=["src","alt"],ps=["src"],ms=["src","title"],fs={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"},gs={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"},hs=["src","title"],vs={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"},bs={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"},ks={class:"cpk:text-center"},ys={class:"cpk:text-base cpk:font-medium cpk:text-gray-800 cpk:dark:text-gray-200"},ws={class:"cpk:text-sm cpk:text-gray-500 cpk:dark:text-gray-400 cpk:mt-1"},Ct=e.defineComponent({__name:"CopilotChatAttachmentQueue",props:{attachments:{default:()=>[]},className:{default:""}},emits:["remove-attachment"],setup(t,{emit:o}){const n=t,a=o,i=e.ref(null),s=e.ref(null),r=e.computed(()=>i.value!==null),l=e.computed(()=>{const g=i.value;if(!g||g.type!=="document")return!1;const b=g.source.mimeType;return p(b)||m(b)}),c=e.computed(()=>{const g=i.value;if(!g||g.type!=="document")return null;const b=g.source.mimeType;if(!m(b)||g.source.type!=="data")return null;try{return atob(g.source.value)}catch{return g.source.value}}),u=e.computed(()=>{const g=i.value;return!g||g.type!=="document"?null:g.source.type==="url"?g.source.value:s.value});e.watch(i,(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 f=g.source.mimeType;if(!p(f)&&!m(f))return;const S=v(g.source.value,f);s.value=S},{immediate:!0}),e.watch(r,(g,b,f)=>{if(!g||typeof document>"u")return;const S=w=>{w.key==="Escape"&&k()};document.addEventListener("keydown",S),f(()=>{document.removeEventListener("keydown",S)})}),e.onBeforeUnmount(()=>{s.value&&(URL.revokeObjectURL(s.value),s.value=null)});function d(g){if(typeof document<"u"){const b=document;if(typeof b.startViewTransition=="function"){b.startViewTransition(()=>{i.value=g});return}}i.value=g}function k(){i.value=null}function y(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 p(g){return!!g&&g.includes("pdf")}function m(g){return!!g&&g.startsWith("text/")}function v(g,b){try{const f=atob(g),S=new Uint8Array(f.length);for(let A=0;A<f.length;A+=1)S[A]=f.charCodeAt(A);const w=new Blob([S],{type:b||"application/octet-stream"});return URL.createObjectURL(w)}catch(f){return console.error("[CopilotKit] Failed to decode attachment data:",f),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,f=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:e.normalizeClass(["cpk:relative cpk:inline-flex cpk:rounded-lg cpk:overflow-hidden cpk:border cpk:border-border",y(f)]),"data-testid":"copilot-chat-attachment-item","data-card-type":f.type},[f.status==="uploading"?(e.openBlock(),e.createElementBlock("div",Ga,[...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),f.status==="ready"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[f.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:S=>d(f)},[e.createElementVNode("img",{src:e.unref(_.getSourceUrl)(f.source),alt:f.filename||"Image attachment",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-image-thumbnail"},null,8,Qa)],8,Ja)):f.type==="video"?(e.openBlock(),e.createElementBlock("div",Xa,[f.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:0,src:f.thumbnail,alt:f.filename||"Video thumbnail",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-thumbnail"},null,8,Ya)):(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(_.getSourceUrl)(f.source),preload:"metadata",muted:"",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-fallback"},null,8,Za)),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:S=>d(f)},[...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,es)])):f.type==="audio"?(e.openBlock(),e.createElementBlock("div",ts,[e.createElementVNode("audio",{src:e.unref(_.getSourceUrl)(f.source),controls:"",preload:"metadata",class:"cpk:w-full cpk:h-8","data-testid":"copilot-chat-attachment-audio-player"},null,8,ns),f.filename?(e.openBlock(),e.createElementBlock("span",os,e.toDisplayString(f.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",p(f.source.mimeType)||m(f.source.mimeType)?"cpk:cursor-pointer":"cpk:cursor-default"]),"data-testid":"copilot-chat-attachment-document-button",onClick:S=>(p(f.source.mimeType)||m(f.source.mimeType))&&d(f)},[e.createElementVNode("div",ss,e.toDisplayString(e.unref(_.getDocumentIcon)(f.source.mimeType??"")),1),e.createElementVNode("div",rs,[e.createElementVNode("span",is,e.toDisplayString(f.filename||"Document"),1),f.size!=null?(e.openBlock(),e.createElementBlock("span",ls,e.toDisplayString(e.unref(_.formatFileSize)(f.size)),1)):e.createCommentVNode("",!0)])],10,as))],64)):(e.openBlock(),e.createElementBlock("div",cs)),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:S=>a("remove-attachment",f.id)}," ✕ ",8,us)],10,Ka))),128))],2)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.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:k},[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(k,["stop"])}," ✕ "),e.createElementVNode("div",{"data-testid":"copilot-chat-attachment-lightbox-content",onClick:b[0]||(b[0]=e.withModifiers(()=>{},["stop"]))},[i.value.type==="image"?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(_.getSourceUrl)(i.value.source),alt:i.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,ds)):i.value.type==="video"?(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(_.getSourceUrl)(i.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,ps)):i.value.type==="document"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[l.value&&p(i.value.source.mimeType)&&u.value?(e.openBlock(),e.createElementBlock("iframe",{key:0,src:u.value,title:i.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,ms)):l.value&&m(i.value.source.mimeType)?(e.openBlock(),e.createElementBlock("div",fs,[c.value!==null?(e.openBlock(),e.createElementBlock("pre",gs,e.toDisplayString(c.value),1)):u.value?(e.openBlock(),e.createElementBlock("iframe",{key:1,src:u.value,title:i.value.filename||"Text preview",class:"cpk:w-full cpk:h-[80vh] cpk:border-none","data-testid":"copilot-chat-attachment-lightbox-document-iframe"},null,8,hs)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",vs,[e.createElementVNode("div",bs,e.toDisplayString(e.unref(_.getDocumentIcon)(i.value.source.mimeType??"")),1),e.createElementVNode("div",ks,[e.createElementVNode("div",ys,e.toDisplayString(i.value.filename||"Document"),1),e.createElementVNode("div",ws,e.toDisplayString(i.value.source.mimeType||"Unknown type")+" "+e.toDisplayString(i.value.size!=null?` · ${e.unref(_.formatFileSize)(i.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))}}),Cs=["data-message-id"],Ss=["aria-expanded"],xs={class:"cpk:font-medium"},Ts={key:0,class:"cpk:inline-flex cpk:items-center cpk:ml-1"},Is={class:"cpk:overflow-hidden"},As={key:0,class:"cpk:pb-2 cpk:pt-1"},Rs={class:"cpk:text-sm cpk:text-muted-foreground"},Es={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),f=Math.round(g%60);return f===0?`${b} minute${b>1?"s":""}`:`${b}m ${f}s`}const a=e.computed(()=>typeof o.message.content=="string"?o.message.content:""),i=e.computed(()=>a.value.length>0),s=e.computed(()=>o.messages[o.messages.length-1]?.id===o.message.id),r=e.computed(()=>!!(o.isRunning&&s.value)),l=e.ref(0),c=e.ref(r.value),u=e.ref(!1);let d=null,k=null;function y(){k&&(clearInterval(k),k=null)}function p(){d!==null&&(l.value=(Date.now()-d)/1e3)}e.watch(r,g=>{if(g){d===null&&(d=Date.now()),y(),k=setInterval(p,1e3),u.value=!1,c.value=!0;return}y(),p(),u.value||(c.value=!1)},{immediate:!0}),e.onBeforeUnmount(()=>{y()});const m=e.computed(()=>r.value?"Thinking…":`Thought for ${n(l.value)}`);function v(){i.value&&(u.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:m.value,hasContent:i.value,isStreaming:r.value,onClick:i.value?v:void 0},contentView:{isStreaming:r.value,hasContent:i.value,content:a.value},toggle:{isOpen:c.value,contentView:{isStreaming:r.value,hasContent:i.value,content:a.value}}},()=>[e.renderSlot(g.$slots,"header",{isOpen:c.value,label:m.value,hasContent:i.value,isStreaming:r.value,onClick:i.value?v: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",i.value?"cpk:hover:text-foreground cpk:cursor-pointer":"cpk:cursor-default"]),"aria-expanded":i.value?c.value:void 0,onClick:b[0]||(b[0]=f=>i.value?v():void 0)},[e.createElementVNode("span",xs,e.toDisplayString(m.value),1),r.value&&!i.value?(e.openBlock(),e.createElementBlock("span",Ts,[...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),i.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,Ss)]),e.renderSlot(g.$slots,"toggle",{isOpen:c.value,contentView:{isStreaming:r.value,hasContent:i.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",Is,[e.renderSlot(g.$slots,"content-view",{isStreaming:r.value,hasContent:i.value,content:a.value},()=>[i.value||r.value?(e.openBlock(),e.createElementBlock("div",As,[e.createElementVNode("div",Rs,[e.createVNode(e.unref(nn.StreamMarkdown),{content:a.value},null,8,["content"]),r.value&&i.value?(e.openBlock(),e.createElementBlock("span",Es,[...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,Cs))}}),Ms=["data-message-id"],$s=["data-multiline"],Bs={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"},Fs={class:"cpk:flex cpk:items-center cpk:gap-1 cpk:justify-end"},Ns=["aria-label","title"],Vs=["aria-label","title"],Ds={class:"cpk:flex cpk:items-center cpk:gap-1"},Os=["disabled"],Ls={class:"cpk:text-sm cpk:text-muted-foreground cpk:px-0 cpk:font-medium"},Ps=["disabled"],Ln=e.defineComponent({__name:"CopilotChatUserMessage",props:{message:{},branchIndex:{default:0},numberOfBranches:{default:1},onEditMessage:{},onSwitchToBranch:{}},emits:["edit-message","switch-to-branch"],setup(t,{emit:o}){const n=t,a=o,i=pe(),s=e.computed(()=>i.value?.labels??Ve),r=e.ref(!1);let l=null;const 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 u(h){return h?typeof h=="string"?h:h.map(E=>E&&typeof E=="object"&&"type"in E&&E.type==="text"&&typeof E.text=="string"?E.text:"").filter(E=>E.length>0).join(`
|
|
74
|
+
`):""}const d=e.computed(()=>u(n.message.content)),k=e.computed(()=>d.value.includes(`
|
|
75
|
+
`)),y=e.computed(()=>typeof n.onEditMessage=="function"),p=e.computed(()=>n.numberOfBranches>1&&typeof n.onSwitchToBranch=="function"),m=e.computed(()=>p.value&&n.branchIndex>0),v=e.computed(()=>p.value&&n.branchIndex<n.numberOfBranches-1);function g(){l&&clearTimeout(l),r.value=!0,l=setTimeout(()=>{r.value=!1,l=null},2e3)}async function b(){if(d.value&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(d.value),g()}catch(h){console.error("Failed to copy to clipboard:",h)}}function f(){if(!y.value)return;const h={message:n.message};a("edit-message",h)}function S(h){if(!p.value)return;const E={branchIndex:h,numberOfBranches:n.numberOfBranches,message:n.message};a("switch-to-branch",E)}function w(){m.value&&S(n.branchIndex-1)}function A(){v.value&&S(n.branchIndex+1)}return e.onBeforeUnmount(()=>{l&&clearTimeout(l)}),(h,E)=>e.renderSlot(h.$slots,"layout",{message:t.message,content:d.value,isMultiline:k.value,showBranchNavigation:p.value,hasEditAction:y.value,branchIndex:t.branchIndex,numberOfBranches:t.numberOfBranches,canGoPrev:m.value,canGoNext:v.value,onCopy:b,onEdit:f,goPrev:w,goNext:A,copied:r.value},()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-user-message",class:"cpk:flex cpk:flex-col cpk:items-end cpk:group cpk:pt-10","data-message-id":t.message.id},h.$attrs),[e.renderSlot(h.$slots,"message-renderer",{message:t.message,content:d.value,isMultiline:k.value},()=>[e.createElementVNode("div",{class:e.normalizeClass(["cpk:prose cpk:dark:prose-invert cpk:bg-muted cpk:relative cpk:max-w-[80%] cpk:rounded-[18px] cpk:px-4 cpk:py-1.5 cpk:inline-block cpk:whitespace-pre-wrap",{"cpk:py-3":k.value}]),"data-multiline":k.value?"true":void 0},e.toDisplayString(d.value),11,$s)]),e.renderSlot(h.$slots,"toolbar",{message:t.message,showBranchNavigation:p.value,hasEditAction:y.value},()=>[e.createElementVNode("div",Bs,[e.createElementVNode("div",Fs,[e.renderSlot(h.$slots,"toolbar-items"),e.renderSlot(h.$slots,"copy-button",{onCopy:b,copied:r.value,label:s.value.userMessageToolbarCopyMessageLabel},()=>[e.createElementVNode("button",{"data-testid":"copilot-user-copy-button",type:"button",class:e.normalizeClass(e.unref(c)),"aria-label":s.value.userMessageToolbarCopyMessageLabel,title:s.value.userMessageToolbarCopyMessageLabel,onClick:b},[r.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,Ns)]),y.value||h.$slots["edit-button"]?e.renderSlot(h.$slots,"edit-button",{key:0,onEdit:f,label:s.value.userMessageToolbarEditMessageLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(c)),"aria-label":s.value.userMessageToolbarEditMessageLabel,title:s.value.userMessageToolbarEditMessageLabel,onClick:f},[e.createVNode(e.unref(oe.Edit),{class:"cpk:size-[18px]"})],10,Vs)]):e.createCommentVNode("",!0),t.numberOfBranches>1&&(p.value||h.$slots["branch-navigation"])?e.renderSlot(h.$slots,"branch-navigation",{key:1,branchIndex:t.branchIndex,numberOfBranches:t.numberOfBranches,canGoPrev:m.value,canGoNext:v.value,goPrev:w,goNext:A},()=>[e.createElementVNode("div",Ds,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(c),"cpk:h-6 cpk:w-6 cpk:p-0"]),disabled:!m.value,"aria-label":"Previous branch",title:"Previous branch",onClick:w},[e.createVNode(e.unref(oe.ChevronLeft),{class:"cpk:size-[20px]"})],10,Os),e.createElementVNode("span",Ls,e.toDisplayString(t.branchIndex+1)+"/"+e.toDisplayString(t.numberOfBranches),1),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(c),"cpk:h-6 cpk:w-6 cpk:p-0"]),disabled:!v.value,"aria-label":"Next branch",title:"Next branch",onClick:A},[e.createVNode(e.unref(oe.ChevronRight),{class:"cpk:size-[20px]"})],10,Ps)])]):e.createCommentVNode("",!0)])])])],16,Ms)])}}),Pn=e.defineComponent({__name:"CopilotChatMessageView",props:{messages:{default:()=>[]},isRunning:{type:Boolean,default:!1}},setup(t){const o=t,{copilotkit:n}=Ce(),a=pe(),i=e.ref(0),s=e.ref(null),r=e.useSlots(),l=e.computed(()=>Object.keys(r)),c=e.computed(()=>a.value?.agentId??_.DEFAULT_AGENT_ID),u=e.computed(()=>(n.value.agents,n.value.getAgent(c.value)));e.watch([c,()=>a.value?.threadId,()=>n.value,()=>n.value.runtimeConnectionStatus],(h,E,T)=>{const R=u.value;if(!R)return;const B=R.subscribe({onStateChanged:()=>{i.value+=1},onRunStartedEvent:()=>{i.value+=1},onRunFinishedEvent:()=>{i.value+=1},onRunErrorEvent:()=>{i.value+=1}});T(()=>B.unsubscribe())},{immediate:!0}),e.watch(()=>n.value,(h,E,T)=>{s.value=h.interruptState;const R=h.subscribe({onInterruptStateChanged:({interruptState:B})=>{s.value=B},onRuntimeConnectionStatusChanged:()=>{i.value+=1}});T(()=>R.unsubscribe())},{immediate:!0});function d(h){const E=new Map;for(const T of h){const R=E.get(T.id);if(R&&T.role==="assistant"&&R.role==="assistant"){const B=T.content||R.content,F=T.toolCalls??R.toolCalls;E.set(T.id,{...R,...T,content:B,toolCalls:F})}else E.set(T.id,T)}return[...E.values()]}const k=e.computed(()=>d(o.messages)),y=_.createRowKeyStore(),p=e.computed(()=>_.resolveRowRenderKeysById(y,k.value));e.onMounted(()=>_.commitRowKeyStore(y,k.value)),e.watch(k,h=>_.commitRowKeyStore(y,h),{flush:"post"});const m=e.computed(()=>o.messages[o.messages.length-1]),v=e.computed(()=>o.isRunning&&m.value?.role!=="reasoning");e.watch([()=>o.messages.length,()=>k.value.length],([h,E])=>{process.env.NODE_ENV==="development"&&E<h&&console.warn(`CopilotChatMessageView: Deduplicated ${h-E} message(s) with duplicate IDs.`)},{immediate:!0});function g(h){i.value+=0;const E=c.value,T=a.value?.threadId??"",R=n.value,B=R.getRunIdForMessage(E,T,h.id)??R.getRunIdsForThread(E,T).slice(-1)[0],F=B??`missing-run-id:${h.id}`,N=u.value??R.getAgent(E),j=B&&N?N.messages.filter(M=>R.getRunIdForMessage(E,T,M.id)===B).map(M=>M.id):[h.id],C=N?N.messages.findIndex(M=>M.id===h.id):-1,I=C>=0?C:0,L=B?Math.max(j.indexOf(h.id),0):0,$=B?j.length:1;let O,G=!1;return{runId:F,messageIndex:I,messageIndexInRun:L,numberOfMessagesInRun:$,agentId:E,get stateSnapshot(){return G||(G=!0,O=B?R.getStateByRun(E,T,B):void 0),O}}}function b(h,E){return Object.assign(g(h),{message:h,position:E})}const f=({render:h,slotProps:E})=>h(E);f.props=["render","slotProps"];function S(h){return`activity-${h}`}function w(h,E){if(i.value+=0,r[E==="before"?"message-before":"message-after"])return null;const R=c.value,F=[...n.value.renderCustomMessages].filter(N=>N.agentId===void 0||N.agentId===R).sort((N,j)=>{const C=N.agentId!==void 0,I=j.agentId!==void 0;return C===I?0:C?-1:1})[0];return F?.render?{renderer:F.render,props:b(h,E)}:null}function A(h){i.value+=0;const E=c.value,T=[...n.value.renderActivityMessages].filter(B=>B.activityType===h.activityType&&(B.agentId===void 0||B.agentId===E)).sort((B,F)=>{const N=B.agentId!==void 0,j=F.agentId!==void 0;return N===j?0:N?-1:1})[0];if(!T)return null;const R=T.content.safeParse(h.content);return R.success?{renderer:T.render,props:{activityType:h.activityType,content:R.data,message:h,agent:u.value}}:null}return(h,E)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:flex cpk:flex-col"},h.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,T=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:p.value.get(T.id)??T.id},[e.unref(r)["message-before"]?(e.openBlock(),e.createBlock(f,{key:0,render:e.unref(r)["message-before"],"slot-props":b(T,"before")},null,8,["render","slot-props"])):w(T,"before")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(T,"before").renderer),e.mergeProps({key:1,ref_for:!0},w(T,"before").props),null,16)):e.createCommentVNode("",!0),T.role==="assistant"?e.renderSlot(h.$slots,"assistant-message",{key:2,message:T,messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(Mn,{message:T,messages:t.messages,"is-running":t.isRunning},e.createSlots({_:2},[e.renderList(l.value,R=>({name:R,fn:e.withCtx(B=>[e.renderSlot(h.$slots,R,e.mergeProps({ref_for:!0},B))])}))]),1032,["message","messages","is-running"])]):T.role==="user"?e.renderSlot(h.$slots,"user-message",{key:3,message:T},()=>[e.createVNode(Ln,{message:T},e.createSlots({_:2},[e.renderList(l.value,R=>({name:R,fn:e.withCtx(B=>[e.renderSlot(h.$slots,R,e.mergeProps({ref_for:!0},B))])}))]),1032,["message"])]):T.role==="reasoning"?e.renderSlot(h.$slots,"reasoning-message",{key:4,message:T,messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(On,{message:T,messages:t.messages,"is-running":t.isRunning},null,8,["message","messages","is-running"])]):T.role==="activity"?e.renderSlot(h.$slots,S(T.activityType),{key:5,activityType:T.activityType,content:T.content,message:T,agent:u.value},()=>[e.renderSlot(h.$slots,"activity-message",{activityType:T.activityType,content:T.content,message:T,agent:u.value},()=>[A(T)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(A(T).renderer),e.mergeProps({key:0,ref_for:!0},A(T).props),null,16)):e.createCommentVNode("",!0)])]):e.createCommentVNode("",!0),e.unref(r)["message-after"]?(e.openBlock(),e.createBlock(f,{key:6,render:e.unref(r)["message-after"],"slot-props":b(T,"after")},null,8,["render","slot-props"])):w(T,"after")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(T,"after").renderer),e.mergeProps({key:7,ref_for:!0},w(T,"after").props),null,16)):e.createCommentVNode("",!0)],64))),128)),s.value?e.renderSlot(h.$slots,"interrupt",{key:0,event:s.value.event,interrupt:s.value.interrupt,interrupts:s.value.interrupts,result:s.value.result,resolve:s.value.resolve,cancel:s.value.cancel}):e.createCommentVNode("",!0),v.value?e.renderSlot(h.$slots,"cursor",{key:1},()=>[E[0]||(E[0]=e.createElementVNode("div",{class:"cpk:w-[11px] cpk:h-[11px] cpk:rounded-full cpk:bg-foreground cpk:animate-pulse cpk:ml-1","data-testid":"copilot-loading-cursor"},null,-1))]):e.createCommentVNode("",!0)],16))}}),Us=["type","aria-busy","disabled"],zs={key:0,class:"cpk:flex cpk:h-3.5 cpk:w-3.5 cpk:items-center cpk:justify-center cpk:text-muted-foreground cpk:sm:h-4 cpk:sm:w-4"},js={key:1,class:"cpk:flex cpk:h-3.5 cpk:w-3.5 cpk:items-center cpk:justify-center cpk:text-muted-foreground cpk:sm:h-4 cpk:sm:w-4"},_s={class:"cpk:whitespace-nowrap cpk:font-medium cpk:leading-none"},Un=e.defineComponent({__name:"CopilotChatSuggestionPill",props:{icon:{default:void 0},isLoading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{default:"button"}},setup(t){const o=t,n=e.computed(()=>o.isLoading||o.disabled);return(a,i)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps({"data-copilotkit":"","data-slot":"suggestion-pill","data-testid":"copilot-chat-suggestion-pill",type:t.type,"aria-busy":t.isLoading?"true":void 0,disabled:n.value,class:"cpk:group cpk:inline-flex cpk:h-7 cpk:w-fit cpk:items-center cpk:gap-1 cpk:rounded-full cpk:border cpk:border-border/60 cpk:bg-background cpk:px-2.5 cpk:text-[11px] cpk:leading-none cpk:text-foreground cpk:transition-colors cpk:cursor-pointer cpk:hover:bg-accent/60 cpk:hover:text-foreground cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-ring cpk:focus-visible:ring-offset-2 cpk:focus-visible:ring-offset-background cpk:disabled:cursor-not-allowed cpk:disabled:text-muted-foreground cpk:disabled:hover:bg-background cpk:disabled:hover:text-muted-foreground cpk:pointer-events-auto cpk:sm:h-8 cpk:sm:gap-1.5 cpk:sm:px-3 cpk:sm:text-xs"},a.$attrs),[t.isLoading?(e.openBlock(),e.createElementBlock("span",zs,[e.createVNode(e.unref(oe.Loader2),{class:"cpk:h-3.5 cpk:w-3.5 cpk:animate-spin cpk:sm:h-4 cpk:sm:w-4","aria-hidden":"true"})])):a.$slots.icon||t.icon?(e.openBlock(),e.createElementBlock("span",js,[e.renderSlot(a.$slots,"icon",{},()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))])])):e.createCommentVNode("",!0),e.createElementVNode("span",_s,[e.renderSlot(a.$slots,"default")])],16,Us))}}),tt=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatSuggestionView",props:{suggestions:{},loadingIndexes:{default:()=>[]}},emits:["select-suggestion"],setup(t,{emit:o}){const n=t,a=o,i=e.useAttrs(),s=e.computed(()=>new Set(n.loadingIndexes)),r=e.computed(()=>["cpk:flex cpk:flex-wrap cpk:items-center cpk:gap-1.5 cpk:pl-0 cpk:pr-4 cpk:pointer-events-none cpk:sm:gap-2 cpk:@3xl:px-0",i.class]),l=e.computed(()=>{const{class:k,...y}=i;return y});function c(k,y){return s.value.has(k)||y.isLoading===!0}function u(k,y){a("select-suggestion",k,y)}const d=e.computed(()=>({suggestions:n.suggestions,loadingIndexes:n.loadingIndexes,onSelectSuggestion:u,containerClass:r.value,containerAttrs:l.value}));return(k,y)=>e.renderSlot(k.$slots,"layout",e.normalizeProps(e.guardReactiveProps(d.value)),()=>[e.renderSlot(k.$slots,"container",e.normalizeProps(e.guardReactiveProps(d.value)),()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-chat-suggestion-view",class:r.value},l.value),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.suggestions,(p,m)=>e.renderSlot(k.$slots,"suggestion",{key:`${p.title}-${m}`,suggestion:p,index:m,isLoading:c(m,p),onSelect:()=>u(p,m)},()=>[e.createVNode(Un,{"is-loading":c(m,p),type:"button",onClick:v=>u(p,m)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.title),1)]),_:2},1032,["is-loading","onClick"])])),128))],16)])])}}),Hs=["pin-to-bottom","pin-to-send","none"];function Ws(t){return t===void 0||t===!0?"pin-to-bottom":t===!1?"none":Hs.includes(t)?t:"pin-to-bottom"}const qs={key:0,class:"cpk:absolute cpk:inset-0 cpk:z-50 cpk:pointer-events-none cpk:flex cpk:items-center cpk:justify-center cpk:bg-primary/5 cpk:border-2 cpk:border-dashed cpk:border-primary/40 cpk:rounded-lg cpk:m-2","data-testid":"copilot-chat-drop-overlay"},Ks={class:"cpk:flex cpk:h-full cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4","data-testid":"copilot-chat-view-welcome-screen"},Gs={class:"cpk:w-full cpk:max-w-3xl cpk:flex cpk:flex-col cpk:items-center"},Js={class:"cpk:mb-6"},Qs={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},Xs={class:"cpk:w-full"},Ys={key:0,class:"cpk:mt-4 cpk:flex cpk:justify-center"},Zs={class:"cpk:px-4 cpk:@3xl:px-0 cpk:[div[data-sidebar-chat]_&]:px-8 cpk:[div[data-popup-chat]_&]:px-6"},er={class:"cpk:max-w-3xl cpk:mx-auto"},tr={key:0,class:"cpk:mt-4 cpk:pl-0 cpk:pr-4 cpk:@3xl:px-0"},nr={key:0,class:"cpk:max-w-3xl cpk:mx-auto cpk:w-full cpk:pointer-events-auto"},or=16,ar=12,at=e.defineComponent({__name:"CopilotChatView",props:{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:()=>[]},onSubmitMessage:{},onStop:{},onInputChange:{},onSelectSuggestion:{},onStartTranscribe:{},onCancelTranscribe:{},onFinishTranscribe:{},isConnecting:{type:Boolean,default:!1},hasExplicitThreadId:{type:Boolean,default:!1},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,i=pe(),s=e.computed(()=>i.value?.labels??Ve),r=e.useSlots(),l=e.ref(null),c=e.ref(null),u=e.ref(null),d=e.ref(null),k=e.ref(0),y=e.ref(!0),p=e.computed(()=>n.inputValue!==void 0),m=e.ref(n.inputValue??""),v=e.computed(()=>Ws(n.autoScroll)),g=e.computed(()=>v.value==="pin-to-bottom"),b=e.computed(()=>v.value==="pin-to-send");Ma({scrollRef:l,contentRef:c,spacerRef:u,topOffset:16});const{isKeyboardOpen:f,keyboardHeight:S}=Vn(),w=e.computed(()=>f.value?S.value:0),A=e.computed(()=>p.value?n.inputValue??"":m.value),h=e.computed(()=>!n.isConnecting&&!n.isRunning&&Array.isArray(n.suggestions)&&n.suggestions.length>0),E=e.computed(()=>Array.isArray(n.attachments)&&n.attachments.length>0),T=e.computed(()=>Object.keys(r).filter(V=>V!=="message-view"&&V!=="scroll-view"&&V!=="feather"&&V!=="scroll-to-bottom-button"&&V!=="input"&&V!=="suggestion-view"&&V!=="welcome-screen"&&V!=="welcome-message")),R=e.computed(()=>n.messages.length===0&&n.welcomeScreen!==!1&&!n.isConnecting&&!n.hasExplicitThreadId),B=e.computed(()=>`${k.value+(h.value?4:32)}px`),F=e.computed(()=>!R.value&&!y.value);let N=null,j=null;function C(){if(typeof ResizeObserver>"u")return;N?.disconnect(),N=null;const V=d.value;V&&(N=new ResizeObserver(Y=>{const fe=y.value,Ne=Y[0]?.contentRect?.height;typeof Ne=="number"?k.value=Ne:$(),L(),g.value&&fe&&O("auto")}),N.observe(V))}function I(){if(typeof ResizeObserver>"u")return;j?.disconnect(),j=null;const V=c.value;V&&(j=new ResizeObserver(()=>{const Y=y.value;L(),g.value&&Y&&O("auto")}),j.observe(V))}e.watch(R,async V=>{V||(await e.nextTick(),$(),C(),I())}),e.watch(()=>n.inputValue,V=>{p.value&&(m.value=V??"")}),e.watch([()=>n.messages,()=>n.suggestions,()=>n.isRunning],async()=>{const V=y.value;await e.nextTick(),!(!g.value||!V)&&(O("auto"),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{O("auto")}))},{deep:!0});function L(){const V=l.value;if(!V){y.value=!0;return}const Y=V.scrollHeight-V.scrollTop-V.clientHeight;y.value=Y<=ar}function $(){const V=d.value;k.value=V?.offsetHeight??0}function O(V="smooth"){const Y=l.value;Y&&(typeof Y.scrollTo=="function"?Y.scrollTo({top:Y.scrollHeight,behavior:V}):Y.scrollTop=Y.scrollHeight,L())}function G(){L()}function M(V){p.value||(m.value=V),a("input-change",V)}function H(V){a("submit-message",V)}function z(){a("stop")}function q(V,Y){a("select-suggestion",V,Y)}function te(){a("add-file")}function W(V){n.onDragOver?.(V)}function ce(V){n.onDragLeave?.(V)}function me(V){n.onDrop?.(V)}function ve(){a("start-transcribe")}function Be(){a("cancel-transcribe")}function Fe(){a("finish-transcribe")}async function Ee(V){await n.onFinishTranscribeWithAudio?.(V)}const De=e.computed(()=>{const V={"onUpdate:modelValue":M,onSubmitMessage:n.onSubmitMessage?H:void 0};return n.onStop&&(V.onStop=z),n.onAddFile&&(V.onAddFile=te),n.onStartTranscribe&&(V.onStartTranscribe=ve),n.onCancelTranscribe&&(V.onCancelTranscribe=Be),n.onFinishTranscribe&&(V.onFinishTranscribe=Fe),n.onFinishTranscribeWithAudio&&(V.onFinishTranscribeWithAudio=Ee),V}),xe=e.computed(()=>!!n.onStop),ye=e.computed(()=>!!n.onAddFile),le=e.computed(()=>!!n.onStartTranscribe);return e.onMounted(async()=>{await e.nextTick(),$(),L(),g.value&&(O("auto"),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{O("auto")})),C(),I()}),e.onBeforeUnmount(()=>{N?.disconnect(),j?.disconnect(),N=null,j=null}),(V,Y)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:@container cpk:relative cpk:h-full","data-testid":"copilot-chat-view"},V.$attrs,{onDragover:W,onDragleave:ce,onDrop:me}),[t.dragOver?(e.openBlock(),e.createElementBlock("div",qs,[...Y[3]||(Y[3]=[e.createElementVNode("span",{class:"cpk:text-sm cpk:font-medium cpk:text-primary/70"}," Drop files here ",-1)])])):e.createCommentVNode("",!0),R.value?e.renderSlot(V.$slots,"welcome-screen",{key:1,suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,attachments:t.attachments??[],modelValue:A.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,canStop:xe.value,canAddFile:ye.value,canTranscribe:le.value,onUpdateModelValue:M,onSubmitMessage:H,onStop:z,onAddFile:te,onStartTranscribe:ve,onCancelTranscribe:Be,onFinishTranscribe:Fe,onFinishTranscribeWithAudio:Ee,onSelectSuggestion:q},()=>[e.createElementVNode("div",Ks,[e.createElementVNode("div",Gs,[e.createElementVNode("div",Js,[e.renderSlot(V.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",Qs,e.toDisplayString(s.value.welcomeMessageText),1)])]),e.createElementVNode("div",Xs,[E.value?(e.openBlock(),e.createBlock(Ct,{key:0,attachments:t.attachments??[],"class-name":"cpk:mb-2",onRemoveAttachment:Y[0]||(Y[0]=fe=>t.onRemoveAttachment&&t.onRemoveAttachment(fe))},null,8,["attachments"])):e.createCommentVNode("",!0),e.renderSlot(V.$slots,"input",{modelValue:A.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,attachments:t.attachments??[],canStop:xe.value,canAddFile:ye.value,canTranscribe:le.value,onUpdateModelValue:M,onSubmitMessage:H,onStop:z,onAddFile:te,onStartTranscribe:ve,onCancelTranscribe:Be,onFinishTranscribe:Fe,onFinishTranscribeWithAudio:Ee},()=>[e.createVNode(et,e.mergeProps({"model-value":A.value,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0,"keyboard-height":w.value},De.value),null,16,["model-value","is-running","mode","tools-menu","keyboard-height"])])]),h.value?(e.openBlock(),e.createElementBlock("div",Ys,[e.renderSlot(V.$slots,"suggestion-view",{suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,onSelectSuggestion:q},()=>[e.createVNode(tt,{suggestions:t.suggestions,"loading-indexes":t.suggestionLoadingIndexes,onSelectSuggestion:q},null,8,["suggestions","loading-indexes"])])])):e.createCommentVNode("",!0)])])]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(V.$slots,"scroll-view",{messages:t.messages,isRunning:t.isRunning,suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,messagePaddingBottom:B.value,showScrollToBottomButton:F.value,onSelectSuggestion:q,onScroll:G,scrollToBottom:O},()=>[e.createElementVNode("div",{ref_key:"scrollContainerRef",ref:l,"data-testid":"copilot-chat-view-scroll",class:"cpk:h-full cpk:max-h-full cpk:min-h-0 cpk:overflow-y-scroll cpk:overflow-x-hidden cpk:relative",onScroll:G},[e.createElementVNode("div",Zs,[e.createElementVNode("div",{ref_key:"scrollContentRef",ref:c,"data-testid":"copilot-scroll-content",style:e.normalizeStyle({paddingBottom:B.value})},[e.createElementVNode("div",er,[e.renderSlot(V.$slots,"message-view",{messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(Pn,{messages:t.messages,"is-running":t.isRunning},e.createSlots({_:2},[e.renderList(T.value,fe=>({name:fe,fn:e.withCtx(Ne=>[e.renderSlot(V.$slots,fe,e.normalizeProps(e.guardReactiveProps(Ne)))])}))]),1032,["messages","is-running"])]),h.value?(e.openBlock(),e.createElementBlock("div",tr,[e.renderSlot(V.$slots,"suggestion-view",{suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,onSelectSuggestion:q},()=>[e.createVNode(tt,{class:"cpk:mb-3 cpk:lg:ml-4 cpk:lg:mr-4 cpk:ml-0 cpk:mr-0",suggestions:t.suggestions,"loading-indexes":t.suggestionLoadingIndexes,onSelectSuggestion:q},null,8,["suggestions","loading-indexes"])])])):e.createCommentVNode("",!0)])],4),b.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"spacerRef",ref:u,"data-pin-to-send-spacer":"","aria-hidden":"true",style:{height:"0px",flex:"0 0 auto"}},null,512)):e.createCommentVNode("",!0)])],544)]),e.renderSlot(V.$slots,"feather",{},()=>[Y[4]||(Y[4]=e.createElementVNode("div",{"data-testid":"copilot-chat-view-feather"},null,-1))]),F.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"cpk:absolute cpk:inset-x-0 cpk:flex cpk:justify-center cpk:z-30 cpk:pointer-events-none",style:e.normalizeStyle({bottom:`${k.value+or}px`})},[e.renderSlot(V.$slots,"scroll-to-bottom-button",{onClick:()=>O()},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-view-scroll-to-bottom",class:"cpk:rounded-full cpk:w-10 cpk:h-10 cpk:p-0 cpk:pointer-events-auto cpk:bg-white cpk:dark:bg-gray-900 cpk:shadow-lg cpk:border cpk:border-gray-200 cpk:dark:border-gray-700 cpk:hover:bg-gray-50 cpk:dark:hover:bg-gray-800 cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer",onClick:Y[1]||(Y[1]=fe=>O())},[e.createVNode(e.unref(oe.ChevronDown),{class:"cpk:w-4 cpk:h-4 cpk:text-gray-600 cpk:dark:text-white"})])])],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"inputContainerRef",ref:d,class:"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none","data-testid":"copilot-input-overlay"},[E.value?(e.openBlock(),e.createElementBlock("div",nr,[e.createVNode(Ct,{attachments:t.attachments??[],"class-name":"cpk:px-4",onRemoveAttachment:Y[2]||(Y[2]=fe=>t.onRemoveAttachment&&t.onRemoveAttachment(fe))},null,8,["attachments"])])):e.createCommentVNode("",!0),e.renderSlot(V.$slots,"input",{modelValue:A.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,attachments:t.attachments??[],canStop:xe.value,canAddFile:ye.value,canTranscribe:le.value,onUpdateModelValue:M,onSubmitMessage:H,onStop:z,onAddFile:te,onStartTranscribe:ve,onCancelTranscribe:Be,onFinishTranscribe:Fe,onFinishTranscribeWithAudio:Ee},()=>[e.createVNode(et,e.mergeProps({"model-value":A.value,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0,"keyboard-height":w.value,"bottom-anchored":!0},De.value),null,16,["model-value","is-running","mode","tools-menu","keyboard-height"])])],512)],64))],16))}});function sr(t){const o=e.ref(null),n=(i,s)=>{o.value=null,Z.emitInspectorActiveThread({requestId:i.requestId,threadId:s,agentId:i.agentId,source:"app"})},a=i=>{const s=o.value;!s||s.requestId!==i||(Z.emitInspectorViewThreadResult({requestId:i,threadId:s.threadId,agentId:s.agentId,ok:!1,reason:"connect-failed"}),n(s,s.previousThreadId))};if(Z.isInspectorThreadBridgeEnabled()){const i=Z.onInspectorViewThread(r=>r.agentId!==t.agentId.value?!1:(o.value=o.value?{...o.value,...r}:{...r,previousThreadId:t.baseThreadId.value},Z.emitInspectorViewThreadResult({...r,ok:!0}),Z.emitInspectorActiveThread({...r,source:"override"}),!0)),s=Z.onInspectorStopViewing(r=>{const l=o.value;l&&r.requestId===l.requestId&&r.agentId===l.agentId&&n(l,l.previousThreadId)});e.onBeforeUnmount(()=>{i(),s()})}return e.watch([t.agentId,t.baseThreadId],([i,s])=>{const r=o.value;if(r){if(i!==r.agentId){n(r,r.previousThreadId);return}s!==r.previousThreadId&&s!==r.threadId&&n(r,s)}}),{inspectorThreadId:e.computed(()=>o.value?.threadId??null),inspectorRequestId:e.computed(()=>o.value?.requestId??null),failInspectorOverride:a}}const rr=["accept"],ir={key:2,style:{position:"absolute",bottom:"100px",left:"50%",transform:"translateX(-50%)","background-color":"#ef4444",color:"white",padding:"8px 16px","border-radius":"8px","font-size":"14px","z-index":"50"}},Et=e.defineComponent({inheritAttrs:!1,__name:"CopilotChat",props:{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,{emit:o}){const n=t,a=o,i=e.useAttrs(),s=e.useSlots(),r=pe(),{copilotkit:l}=Ce(),c=e.computed(()=>Object.keys(s).filter(U=>U!=="chat-view")),u=e.ref(_.randomUUID()),d=e.ref("input"),k=e.ref(n.inputValue??""),y=e.ref(null),p=e.ref(!1),m=e.ref(!1),v=e.ref(!1),g=e.shallowRef(null),b=e.computed(()=>n.agentId??r.value?.agentId??_.DEFAULT_AGENT_ID),f=e.computed(()=>n.threadId??r.value?.threadId),S=e.computed(()=>f.value??u.value),w=e.computed(()=>!!n.threadId||!!r.value?.hasExplicitThreadId),{inspectorThreadId:A,inspectorRequestId:h,failInspectorOverride:E}=sr({agentId:b,baseThreadId:S}),T=e.computed(()=>A.value??S.value),R=e.computed(()=>A.value!==null||w.value),B=e.ref(null),F=e.computed(()=>R.value&&B.value!==T.value),N=Sn(e.computed(()=>n.labels)),j=e.computed(()=>N.value),{agent:C}=ft({agentId:b,throttleMs:e.computed(()=>n.throttleMs)}),{suggestions:I}=Fn({agentId:b}),L=ot(),$=e.computed(()=>L.value.checkFeature("chat"));e.watch($,U=>{U||console.warn('[CopilotKit] Warning: "chat" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0});const O=e.computed(()=>l.value.audioFileTranscriptionEnabled),G=e.computed(()=>typeof window<"u"&&typeof MediaRecorder<"u"),M=e.computed(()=>O.value&&G.value),{attachments:H,enabled:z,dragOver:q,fileInputRef:te,containerRef:W,handleFileUpload:ce,handleDragOver:me,handleDragLeave:ve,handleDrop:Be,removeAttachment:Fe,consumeAttachments:Ee}=Nn({config:e.computed(()=>n.attachments)}),De=e.computed(()=>p.value?"processing":d.value),xe=e.ref(0),ye=e.computed(()=>[...C.value?.messages??[]]),le=e.computed(()=>(xe.value,C.value?.isRunning??!1)),V=e.computed(()=>le.value&&ye.value.length>0),Y=e.computed(()=>{for(let U=ye.value.length-1;U>=0;U--){const J=ye.value[U];if(J?.role==="user")return J.id}return null}),fe=e.ref(0);let Ne=Y.value;e.watch(Y,U=>{U&&U!==Ne&&(fe.value+=1,Ne=U)});const ge=e.computed(()=>({id:Y.value,sendNonce:fe.value}));e.provide(Dn,ge),e.watch(()=>C.value,(U,J,Q)=>{if(!U)return;const re=U.subscribe({onRunStartedEvent:()=>{xe.value+=1},onRunFinishedEvent:()=>{xe.value+=1},onRunErrorEvent:()=>{xe.value+=1}});Q(()=>re.unsubscribe())},{immediate:!0}),e.watch(()=>n.inputValue,U=>{U!==void 0&&(k.value=U)}),e.watch([()=>n.threadId,()=>r.value?.threadId],([U,J],Q)=>{U||J||Q&&(Q[0]||Q[1])&&(u.value=_.randomUUID())}),e.watch([()=>l.value,b,()=>n.onError],([U,J,Q],re,Oe)=>{if(!Q)return;const $e=U.subscribe({onError:Le=>{(Le.context?.agentId===J||!Le.context?.agentId)&&Q({error:Le.error,code:Le.code,context:Le.context})}});Oe(()=>$e.unsubscribe())},{immediate:!0}),e.watch([()=>l.value,b,T,h],([U,J,Q,re],Oe,$e)=>{if(!re)return;const Le=U.subscribe({onError:x=>{x.code===Z.CopilotKitCoreErrorCode.AGENT_CONNECT_FAILED&&x.context?.agentId===J&&x.context?.threadId===Q&&E(re)}});$e(()=>Le.unsubscribe())},{immediate:!0}),e.watch([m,()=>l.value,()=>C.value,T,R,h],([U,J,Q,re,Oe,$e],Le,x)=>{if(!U||typeof window>"u"||!Q)return;const D=g.value;if(D!==null&&D.threadId!==re&&D.inspectorRequestId!==$e&&(D.inspectorRequestId!==null||$e!==null))try{J.stopAgent({agent:Q})}catch{}if(Q.threadId=re,!Oe)return;const ee=Qe.AbstractAgent.prototype,we=Q,ie=we.connect!==ee.connect,Ae=we.connectAgent!==ee.connectAgent;if(!ie&&!Ae){B.value=re;return}const Se=g.value,ze=Se&&Se.core===J&&Se.agent===Q&&Se.threadId===re&&Se.inspectorRequestId===$e;let Re;if(ze&&Se)Re=Se;else{const de=new AbortController;Q instanceof Qe.HttpAgent&&(Q.abortController=de),Re={core:J,agent:Q,threadId:re,inspectorRequestId:$e,abortController:de,detached:!1},g.value=Re,J.connectAgent({agent:Q}).catch(je=>{Re.detached||je instanceof Qe.AGUIConnectNotImplementedError||(console.error("CopilotChat: connectAgent failed",je),$e&&E($e))}).finally(()=>{if(Re.detached)return;(typeof requestAnimationFrame=="function"?requestAnimationFrame:Ye=>setTimeout(Ye,16))(()=>{Re.detached||(B.value=Re.threadId)})})}x(()=>{const de=g.value;!de||de!==Re||!(v.value||l.value!==de.core||C.value!==de.agent||T.value!==de.threadId)||(de.detached=!0,de.abortController.abort(),de.agent.detachActiveRun?.(),g.value=null)})},{immediate:!0});const He=e.ref(void 0);e.watch([T,R,()=>C.value],([U,J,Q])=>{const re=He.value;He.value=U,Q&&(J||re!==void 0&&U!==re&&Q.setMessages([]))},{immediate:!0}),e.onBeforeUnmount(()=>{v.value=!0}),e.onMounted(()=>{m.value=!0}),e.watch(y,(U,J,Q)=>{if(!U)return;const re=setTimeout(()=>{y.value=null},5e3);Q(()=>clearTimeout(re))});async function _e(){const U=C.value;if(U)try{const J=g.value;J&&J.agent===U&&J.threadId===T.value&&(J.detached=!0,J.abortController.abort(),g.value=null,await J.agent.detachActiveRun?.()),await l.value.runAgent({agent:U})}catch(J){console.error("CopilotChat: runAgent failed",J)}}async function We(U){if(H.value.some(re=>re.status==="uploading")){console.error("[CopilotKit] Cannot send while attachments are uploading");return}if(a("submit-message",U),!C.value){console.error("[CopilotKit] Cannot send message: no agent available");return}const Q=Ee();if(Q.length>0){const re=[];U.trim()&&re.push({type:"text",text:U});for(const Oe of Q)re.push(_.createAttachmentContent(Oe));C.value.addMessage({id:_.randomUUID(),role:"user",content:re})}else C.value.addMessage({id:_.randomUUID(),role:"user",content:U});k.value="",await _e()}async function qe(U,J){a("select-suggestion",U,J),C.value?.addMessage({id:_.randomUUID(),role:"user",content:U.message}),await _e()}function P(){const U=C.value;if(U)try{l.value.stopAgent({agent:U})}catch(J){console.error("CopilotChat: stopAgent failed",J);try{U.abortRun()}catch(Q){console.error("CopilotChat: abortRun fallback failed",Q)}}}function ae(){a("stop"),V.value&&P()}function ne(U){k.value=U,a("input-change",U)}function Te(){a("add-file"),z.value&&setTimeout(()=>{te.value?.click()},100)}function Ie(){M.value&&(y.value=null,d.value="transcribe",a("start-transcribe"))}function ue(){M.value&&(y.value=null,d.value="input",a("cancel-transcribe"))}function be(){M.value&&(d.value="input",a("finish-transcribe"))}async function Me(U){if(M.value){if(n.onFinishTranscribeWithAudio){await n.onFinishTranscribeWithAudio(U);return}p.value=!0;try{y.value=null;const J=await Aa(l.value,U),Q=k.value.trim();k.value=Q?`${Q} ${J.text}`:J.text}catch(J){if(console.error("CopilotChat: Transcription failed",J),J instanceof Je){const{code:Q,retryable:re,message:Oe}=J.info;switch(Q){case _.TranscriptionErrorCode.RATE_LIMITED:y.value="Too many requests. Please wait a moment.";break;case _.TranscriptionErrorCode.AUTH_FAILED:y.value="Authentication error. Please check your configuration.";break;case _.TranscriptionErrorCode.AUDIO_TOO_LONG:y.value="Recording is too long. Please try a shorter recording.";break;case _.TranscriptionErrorCode.AUDIO_TOO_SHORT:y.value="Recording is too short. Please try again.";break;case _.TranscriptionErrorCode.INVALID_AUDIO_FORMAT:y.value="Audio format not supported.";break;case _.TranscriptionErrorCode.SERVICE_NOT_CONFIGURED:y.value="Transcription service is not available.";break;case _.TranscriptionErrorCode.NETWORK_ERROR:y.value="Network error. Please check your connection.";break;default:y.value=re?"Transcription failed. Please try again.":Oe}}else y.value="Transcription failed. Please try again."}finally{p.value=!1}}}const se=e.computed(()=>({messages:ye.value,autoScroll:n.autoScroll,isRunning:le.value,suggestions:I.value,suggestionLoadingIndexes:[],welcomeScreen:n.welcomeScreen,attachments:H.value,dragOver:q.value,inputValue:k.value,inputMode:De.value,inputToolsMenu:n.inputToolsMenu,isConnecting:F.value,hasExplicitThreadId:R.value,canStop:V.value,canAddFile:z.value,canTranscribe:M.value,onSubmitMessage:We,onStop:ae,onInputChange:ne,onSelectSuggestion:qe,onRemoveAttachment:Fe,onAddFile:Te,onDragOver:z.value?me:void 0,onDragLeave:z.value?ve:void 0,onDrop:z.value?Be:void 0,onStartTranscribe:Ie,onCancelTranscribe:ue,onFinishTranscribe:be,onFinishTranscribeWithAudio:Me})),Ue=e.computed(()=>{const U={...i,onSubmitMessage:We,onInputChange:ne,onSelectSuggestion:qe};return V.value&&(U.onStop=ae),z.value&&(U.onAddFile=Te,U.attachments=H.value,U.onRemoveAttachment=Fe,U.dragOver=q.value,U.onDragOver=me,U.onDragLeave=ve,U.onDrop=Be),M.value&&(U.onStartTranscribe=Ie,U.onCancelTranscribe=ue,U.onFinishTranscribe=be),U});return(U,J)=>(e.openBlock(),e.createBlock(mt,{"agent-id":b.value,"thread-id":T.value,"has-explicit-thread-id":R.value,labels:j.value},{default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"attachmentContainerRef",ref:W,style:{display:"contents"}},[e.unref(z)?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"fileInputRef",ref:te,type:"file",multiple:"",accept:n.attachments?.accept??"*/*",style:{display:"none"},onChange:J[0]||(J[0]=Q=>{e.unref(ce)(Q)})},null,40,rr)):e.createCommentVNode("",!0),$.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Rt,{key:1,"feature-name":"Chat"})),y.value?(e.openBlock(),e.createElementBlock("div",ir,e.toDisplayString(y.value),1)):e.createCommentVNode("",!0),e.renderSlot(U.$slots,"chat-view",e.normalizeProps(e.guardReactiveProps(se.value)),()=>[e.createVNode(at,e.mergeProps(Ue.value,{messages:se.value.messages,"auto-scroll":se.value.autoScroll,"is-running":se.value.isRunning,suggestions:se.value.suggestions,"suggestion-loading-indexes":se.value.suggestionLoadingIndexes,"welcome-screen":se.value.welcomeScreen,"input-value":se.value.inputValue,"input-mode":se.value.inputMode,"input-tools-menu":se.value.inputToolsMenu,"is-connecting":se.value.isConnecting,"has-explicit-thread-id":se.value.hasExplicitThreadId,"on-finish-transcribe-with-audio":se.value.onFinishTranscribeWithAudio}),e.createSlots({_:2},[e.renderList(c.value,Q=>({name:Q,fn:e.withCtx(re=>[e.renderSlot(U.$slots,Q,e.normalizeProps(e.guardReactiveProps(re)))])}))]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","is-connecting","has-explicit-thread-id","on-finish-transcribe-with-audio"])])],512)]),_:3},8,["agent-id","thread-id","has-explicit-thread-id","labels"]))}}),lr=["src"],cr=["src"],ur={key:0,class:"cpk:text-xs cpk:text-muted-foreground cpk:truncate cpk:max-w-[300px]","data-testid":"copilot-chat-attachment-renderer-audio-filename"},dr=["src"],pr={class:"cpk:text-xs cpk:font-bold cpk:uppercase","data-testid":"copilot-chat-attachment-renderer-document-icon"},mr={class:"cpk:text-sm cpk:text-muted-foreground cpk:truncate","data-testid":"copilot-chat-attachment-renderer-document-label"},fr=e.defineComponent({__name:"CopilotChatAttachmentRenderer",props:{type:{},source:{},filename:{default:void 0},className:{default:""}},setup(t){const o=t,n=e.ref(!1),a=e.computed(()=>_.getSourceUrl(o.source)),i=e.computed(()=>o.filename||o.source.mimeType||"Unknown type");return(s,r)=>o.type==="image"&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:a.value,alt:"Image attachment",class:e.normalizeClass(["cpk:max-w-full cpk:h-auto cpk:rounded-lg",o.className]),"data-testid":"copilot-chat-attachment-renderer-image",onError:r[0]||(r[0]=l=>n.value=!0)},null,42,lr)):o.type==="image"?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:rounded-lg cpk:bg-muted cpk:p-4 cpk:text-sm cpk:text-muted-foreground",o.className]),"data-testid":"copilot-chat-attachment-renderer-image-fallback"},[...r[1]||(r[1]=[e.createElementVNode("span",null,"Failed to load image",-1)])],2)):o.type==="audio"?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["cpk:flex cpk:flex-col cpk:gap-1",o.className]),"data-testid":"copilot-chat-attachment-renderer-audio"},[e.createElementVNode("audio",{src:a.value,controls:"",preload:"metadata",class:"cpk:max-w-[300px] cpk:w-full cpk:h-10"},null,8,cr),o.filename?(e.openBlock(),e.createElementBlock("span",ur,e.toDisplayString(o.filename),1)):e.createCommentVNode("",!0)],2)):o.type==="video"?(e.openBlock(),e.createElementBlock("video",{key:3,src:a.value,controls:"",preload:"metadata",class:e.normalizeClass(["cpk:max-w-[400px] cpk:w-full cpk:rounded-lg",o.className]),"data-testid":"copilot-chat-attachment-renderer-video"},null,10,dr)):(e.openBlock(),e.createElementBlock("div",{key:4,class:e.normalizeClass(["cpk:inline-flex cpk:items-center cpk:gap-2 cpk:px-3 cpk:py-2 cpk:border cpk:border-border cpk:rounded-lg cpk:bg-muted",o.className]),"data-testid":"copilot-chat-attachment-renderer-document"},[e.createElementVNode("span",pr,e.toDisplayString(e.unref(_.getDocumentIcon)(o.source.mimeType??"")),1),e.createElementVNode("span",mr,e.toDisplayString(i.value),1)],2))}});function Ke(t,o,n){n.value=o(t.getState());const a=t.select(o).subscribe(()=>{n.value=o(t.getState())});e.onScopeDispose(()=>a.unsubscribe())}function zn(t){const{copilotkit:o}=Ce(),n=Z.ɵcreateThreadStore({fetch:o.value.ɵruntimeFetch}),a=e.computed(()=>e.toValue(t.agentId)),i=e.computed(()=>e.toValue(t.includeArchived)),s=e.computed(()=>e.toValue(t.limit)),r=e.computed(()=>e.toValue(t.enabled)??!0),l=e.computed(()=>o.value.threadEndpoints?.list!==!1),c=e.computed(()=>o.value.threadEndpoints?.mutations!==!1),u=e.computed(()=>!!o.value.runtimeUrl&&o.value.runtimeConnectionStatus===Z.CopilotKitCoreRuntimeConnectionStatus.Connected&&!l.value),d=e.computed(()=>u.value?new Error("Thread endpoints are not available on this CopilotKit runtime"):null),k=e.computed(()=>c.value?null:new Error("Thread mutations are not available on this CopilotKit runtime")),y=e.computed(()=>JSON.stringify(Object.entries(o.value.headers??{}).sort(([F],[N])=>F.localeCompare(N)))),p=e.ref([]),m=e.ref(!1),v=e.ref(null),g=e.ref(null),b=e.ref(!1),f=e.ref(!1),S=e.ref(!1);Ke(n,Z.ɵselectThreads,p),Ke(n,Z.ɵselectThreadsIsLoading,m),Ke(n,Z.ɵselectThreadsError,v),Ke(n,Z.ɵselectFetchMoreError,g),Ke(n,Z.ɵselectHasNextPage,b),Ke(n,Z.ɵselectIsFetchingNextPage,f),Ke(n,Z.ɵselectIsMutating,S),n.start(),e.onScopeDispose(()=>{n.stop()}),e.watch([r,a],([F,N],j,C)=>{F&&(o.value.registerThreadStore(N,n),C(()=>{o.value.unregisterThreadStore(N)}))},{immediate:!0});const w=e.ref(!1);e.watch([()=>o.value.runtimeUrl,()=>o.value.runtimeConnectionStatus,y,()=>o.value.intelligence?.wsUrl,a,i,s,r,l],([F,N,,j,C,I,L,$,O])=>{if(!F||!$){n.setContext(null),w.value=!1;return}if(N!==Z.CopilotKitCoreRuntimeConnectionStatus.Connected)return;if(!O){n.setContext(null),w.value=!1;return}const G={runtimeUrl:F,headers:{...o.value.headers},wsUrl:j,agentId:C,includeArchived:I,limit:L};n.setContext(G),w.value=!0},{immediate:!0});const A=e.computed(()=>o.value.runtimeUrl?null:new Error("Runtime URL is not configured")),h=e.computed(()=>!!o.value.runtimeUrl&&r.value&&!u.value&&!w.value),E=e.computed(()=>A.value||d.value?!1:h.value||m.value),T=e.computed(()=>A.value??d.value??v.value),R=e.computed(()=>v.value);function B(F){return(...N)=>k.value?Promise.reject(k.value):F(...N)}return{threads:e.computed(()=>p.value.map(({id:F,agentId:N,name:j,archived:C,createdAt:I,updatedAt:L,lastRunAt:$})=>({id:F,agentId:N,name:j,archived:C,createdAt:I,updatedAt:L,...$!==void 0?{lastRunAt:$}:{}}))),isLoading:E,error:T,listError:R,fetchMoreError:g,hasMoreThreads:b,isFetchingMoreThreads:f,isMutating:S,fetchMoreThreads:()=>n.fetchNextPage(),refetchThreads:()=>n.refetchThreads(),startNewThread:()=>n.startNewThread(),renameThread:B((F,N)=>n.renameThread(F,N)),archiveThread:B(F=>n.archiveThread(F)),unarchiveThread:B(F=>n.unarchiveThread(F)),deleteThread:B(F=>n.deleteThread(F))}}const Qt="copilot-chat-input-textarea",gr="copilot-chat-view",hr=e.defineComponent({__name:"CopilotThreadsDrawer",props:{agentId:{},onThreadSelect:{},onNewThread:{},onLicensed:{},licenseUrl:{},label:{},recentLabel:{},collapsible:{type:Boolean,default:!0},limit:{},dataTestId:{default:"copilot-threads-drawer"}},emits:["collapse-change"],setup(t,{emit:o}){const n=t,a=o,i=pe(),s=ot(),r=e.computed(()=>{const $=s.value.status;return $==="unknown"?!0:($==="valid"||$==="expiring")&&s.value.checkFeature("threads")}),l=e.computed(()=>s.value.status===null),c=e.computed(()=>n.agentId??i.value?.agentId??_.DEFAULT_AGENT_ID),u=e.computed(()=>i.value?.threadId??null),d=e.ref(!1),k=e.computed(()=>i.value?i.value.drawerOpen:d.value);function y($){i.value?i.value.setDrawerOpen?.($):d.value=$}const p=zn({agentId:c,includeArchived:!0,enabled:r,limit:()=>n.limit});function m($){return{id:$.id,name:$.name,archived:$.archived,createdAt:$.createdAt,updatedAt:$.updatedAt,...$.lastRunAt!==void 0?{lastRunAt:$.lastRunAt}:{}}}const v=e.computed(()=>p.threads.value.map(m)),g=e.ref(!1),b=e.ref(null),f=e.ref(null);e.onMounted(async()=>{const $=await import("@copilotkit/web-components/threads-drawer");$.defineCopilotKitThreadsDrawer(),b.value=$.COPILOTKIT_THREADS_DRAWER_TAG,g.value=!0}),e.watchEffect(()=>{const $=f.value;$&&($.threads=v.value,$.loading=p.isLoading.value||l.value,$.error=p.listError.value?.message??null,$.activeThreadId=u.value,$.licensed=r.value||l.value,$.hasMore=p.hasMoreThreads.value,$.fetchingMore=p.isFetchingMoreThreads.value,$.fetchMoreError=p.fetchMoreError.value?.message??null,$.open=k.value,n.label!==void 0&&($.label=n.label),n.licenseUrl!==void 0&&($.licenseUrl=n.licenseUrl),n.collapsible!==void 0&&($.collapsible=n.collapsible))},{flush:"post"});const S=i.value?.registerDrawer?.();S&&e.onScopeDispose(S);function w($){if(typeof document>"u")return null;const O=$?.closest?.(`[data-testid="${gr}"]`);if(O){const G=O.querySelector(`[data-testid="${Qt}"]`);if(G)return G}return document.querySelector(`[data-testid="${Qt}"]`)}function A(){w(f.value)?.focus()}function h($){const{threadId:O}=$.detail;n.onThreadSelect?n.onThreadSelect(O):i.value?.setActiveThreadId?.(O,{explicit:!0}),A()}function E(){p.startNewThread(),n.onNewThread?n.onNewThread():i.value?.startNewThread?.()}function T($){const{threadId:O}=$.detail;p.archiveThread(O).catch(G=>console.error("CopilotThreadsDrawer: archiveThread failed",G))}function R($){const{threadId:O}=$.detail;p.unarchiveThread(O).catch(G=>console.error("CopilotThreadsDrawer: unarchiveThread failed",G))}function B($){const{threadId:O}=$.detail,G=O===u.value;p.deleteThread(O).then(()=>{G&&E()}).catch(M=>console.error("CopilotThreadsDrawer: deleteThread failed",M))}function F(){p.refetchThreads()}function N($){const{collapsed:O}=$.detail;a("collapse-change",O)}function j($){const{scope:O}=$.detail;O==="fetch-more"?p.fetchMoreThreads():p.refetchThreads()}function C(){p.fetchMoreThreads()}function I($){const{open:O}=$.detail;y(O)}function L(){n.onLicensed?.()}return($,O)=>g.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b.value),{key:0,ref_key:"elRef",ref:f,"data-testid":t.dataTestId,"recent-label":t.recentLabel,onThreadSelected:h,onNewThread:E,onArchive:T,onUnarchive:R,onDelete:B,onFilterChange:F,onCollapseChange:N,onRetry:j,onLoadMore:C,onOpenChange:I,onLicensed:L},{default:e.withCtx(()=>[e.renderSlot($.$slots,"default"),$.$slots.row?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(e.unref(p).threads.value,G=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:G.id},{ref_for:!0},{slot:`row:${G.id}`}),[e.renderSlot($.$slots,"row",{thread:G})],16))),128)):e.createCommentVNode("",!0)]),_:3},40,["data-testid","recent-label"])):e.createCommentVNode("",!0)}}),Mt=e.defineComponent({name:"CopilotChatToggleButtonCloseIcon",inheritAttrs:!1,setup(t,{attrs:o}){return()=>{const{class:n,...a}=o;return e.h(oe.X,{...a,class:["cpk:h-6 cpk:w-6",n],strokeWidth:1.75})}}}),$t=e.defineComponent({name:"CopilotChatToggleButtonOpenIcon",inheritAttrs:!1,setup(t,{attrs:o}){return()=>{const{class:n,...a}=o;return e.h(oe.MessageCircle,{...a,class:["cpk:h-6 cpk:w-6",n],strokeWidth:1.75,fill:"currentColor"})}}}),vr=["type","data-state","aria-label","aria-pressed","disabled"],lt="cpk:h-6 cpk:w-6",Xt="cpk:pointer-events-none cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:will-change-transform",Bt=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatToggleButton",props:{disabled:{type:Boolean,default:!1},type:{default:"button"}},setup(t){const o=t,n=e.useAttrs(),a=pe(),i=e.ref(!1),s=e.computed(()=>a.value?.labels??Ve),r=e.computed(()=>a.value?.isModalOpen??i.value),l=e.computed(()=>r.value?s.value.chatToggleCloseLabel:s.value.chatToggleOpenLabel),c=e.computed(()=>["cpk:fixed cpk:bottom-6 cpk:right-6 cpk:z-[1100] cpk:flex cpk:h-14 cpk:w-14 cpk:items-center cpk:justify-center","cpk:rounded-full cpk:border cpk:border-primary cpk:bg-primary cpk:text-primary-foreground","cpk:shadow-sm cpk:transition-all cpk:duration-200 cpk:ease-out","cpk:hover:scale-[1.04] cpk:hover:shadow-md cpk:cursor-pointer cpk:active:scale-[0.96]","cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-primary/50 cpk:focus-visible:ring-offset-2 cpk:focus-visible:ring-offset-background","cpk:disabled:pointer-events-none cpk:disabled:opacity-60",n.class]),u=e.computed(()=>{const{class:m,onClick:v,...g}=n;return g}),d=Object.freeze({transition:"opacity 120ms ease-out, transform 260ms cubic-bezier(0.22, 1, 0.36, 1)"});function k(m){if(a.value?.setModalOpen){a.value.setModalOpen(m);return}i.value=m}function y(){const m=n.onClick;return Array.isArray(m)?m.filter(v=>typeof v=="function"):typeof m=="function"?[m]:[]}function p(m){if(!o.disabled){for(const v of y())v(m);m.defaultPrevented||k(!r.value)}}return(m,v)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps({"data-copilotkit":"",type:t.type,"data-slot":"chat-toggle-button","data-state":r.value?"open":"closed",class:c.value,"aria-label":l.value,"aria-pressed":r.value,disabled:t.disabled},u.value,{onClick:p}),[e.createElementVNode("span",{"aria-hidden":"true","data-slot":"chat-toggle-button-open-icon",class:e.normalizeClass(Xt),style:e.normalizeStyle({...e.unref(d),opacity:r.value?0:1,transform:`scale(${r.value?.75:1}) rotate(${r.value?90:0}deg)`})},[e.renderSlot(m.$slots,"open-icon",{iconClass:lt,isOpen:r.value},()=>[e.createVNode(e.unref($t),{class:e.normalizeClass(lt),"aria-hidden":"true",focusable:!1})])],4),e.createElementVNode("span",{"aria-hidden":"true","data-slot":"chat-toggle-button-close-icon",class:e.normalizeClass(Xt),style:e.normalizeStyle({...e.unref(d),opacity:r.value?1:0,transform:`scale(${r.value?1:.75}) rotate(${r.value?0:-90}deg)`})},[e.renderSlot(m.$slots,"close-icon",{iconClass:lt,isOpen:r.value},()=>[e.createVNode(e.unref(Mt),{class:e.normalizeClass(lt),"aria-hidden":"true",focusable:!1})])],4)],16,vr))}}),jn=e.defineComponent({name:"CopilotModalHeaderCloseButton",inheritAttrs:!1,setup(t,{slots:o}){const n=e.useAttrs(),a=e.computed(()=>typeof n["aria-label"]=="string"?n["aria-label"]:"Close");return()=>{const{class:i,type:s,...r}=n;return e.h("button",{...r,type:typeof s=="string"?s:"button",class:["cpk:inline-flex cpk:size-8 cpk:items-center cpk:justify-center cpk:rounded-full cpk:text-muted-foreground cpk:transition cpk:cursor-pointer","cpk:hover:bg-muted cpk:hover:text-foreground cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-ring",i],"aria-label":a.value},o.default?o.default():[e.h(oe.X,{class:"cpk:h-4 cpk:w-4","aria-hidden":!0})])}}}),_n=e.defineComponent({name:"CopilotModalHeaderTitle",inheritAttrs:!1,setup(t,{attrs:o,slots:n}){return()=>{const{class:a,...i}=o;return e.h("div",{...i,class:["cpk:w-full cpk:text-base cpk:font-medium cpk:leading-none cpk:tracking-tight cpk:text-foreground",a]},n.default?n.default():[])}}}),br={class:"cpk:flex cpk:w-full cpk:items-center cpk:gap-2"},kr={class:"cpk:flex cpk:flex-1 cpk:justify-start"},yr=["aria-expanded"],wr={key:1,"aria-hidden":"true"},Cr={class:"cpk:flex cpk:flex-1 cpk:justify-center cpk:text-center"},Sr={class:"cpk:flex cpk:flex-1 cpk:justify-end"},Ft=e.defineComponent({inheritAttrs:!1,__name:"CopilotModalHeader",props:{title:{}},setup(t){const o=t,n=e.useAttrs(),a=pe(),i=e.computed(()=>o.title??a.value?.labels.modalHeaderTitle??Ve.modalHeaderTitle),s=e.computed(()=>["cpk:flex cpk:items-center cpk:justify-between cpk:border-b cpk:border-border cpk:px-4 cpk:py-4","cpk:bg-background/95 cpk:backdrop-blur cpk:supports-[backdrop-filter]:bg-background/80",n.class]),r=e.computed(()=>{const{class:p,...m}=n;return m});function l(){a.value?.setModalOpen?.(!1)}const c=e.ref(!1);let u=null;function d(){u&&(c.value=u.matches)}e.onMounted(()=>{typeof window>"u"||typeof window.matchMedia!="function"||(u=window.matchMedia(xn),u.addEventListener("change",d),d())}),e.onBeforeUnmount(()=>{u?.removeEventListener("change",d),u=null});const k=e.computed(()=>(a.value?.drawerRegistered??!1)&&c.value);function y(){a.value?.setDrawerOpen?.(!a.value?.drawerOpen)}return(p,m)=>(e.openBlock(),e.createElementBlock("header",e.mergeProps({"data-copilotkit":"","data-slot":"copilot-modal-header",class:s.value},r.value),[e.renderSlot(p.$slots,"layout",{title:i.value,onClose:l},()=>[e.createElementVNode("div",br,[e.createElementVNode("div",kr,[k.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"drawer-launcher",class:"cpk:inline-flex cpk:size-8 cpk:items-center cpk:justify-center cpk:rounded-full cpk:text-muted-foreground cpk:transition cpk:cursor-pointer cpk:hover:bg-muted cpk:hover:text-foreground cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-ring","aria-expanded":e.unref(a)?.drawerOpen??!1,"aria-label":"Open threads",onClick:y},[e.createVNode(e.unref(oe.PanelLeftOpen),{class:"cpk:h-4 cpk:w-4","aria-hidden":"true"})],8,yr)):(e.openBlock(),e.createElementBlock("span",wr))]),e.createElementVNode("div",Cr,[e.renderSlot(p.$slots,"title-content",{title:i.value},()=>[e.createVNode(e.unref(_n),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.value),1)]),_:1})])]),e.createElementVNode("div",Sr,[e.renderSlot(p.$slots,"close-button",{onClose:l},()=>[e.createVNode(e.unref(jn),{onClick:l})])])])])],16))}}),xr={key:0,"data-copilotkit":"",class:"cpk:fixed cpk:inset-0 cpk:z-[1200] cpk:flex cpk:max-w-full cpk:flex-col cpk:items-stretch cpk:md:inset-auto cpk:md:bottom-24 cpk:md:right-6 cpk:md:items-end cpk:md:gap-4"},Tr=["aria-label"],Ir={class:"cpk:flex-1 cpk:overflow-hidden","data-popup-chat":""},Ar=420,Rr=560,Yt=200,Er=e.defineComponent({inheritAttrs:!1,__name:"CopilotPopupViewInternal",props:{width:{default:void 0},height:{default:void 0},clickOutsideToClose:{type:Boolean,default:!1},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:()=>[]},onSubmitMessage:{},onStop:{},onInputChange:{},onSelectSuggestion:{},onStartTranscribe:{},onCancelTranscribe:{},onFinishTranscribe:{},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,i=e.useAttrs(),s=pe(),r=e.ref(null),l=e.ref(s.value?.isModalOpen??!1),c=e.ref(!1);let u,d;const k=e.computed(()=>s.value?.isModalOpen??!1),y=e.computed(()=>s.value?.labels??Ve),p=e.computed(()=>y.value.modalHeaderTitle),m=e.computed(()=>k.value&&!c.value?"cpk:pointer-events-auto cpk:translate-y-0 cpk:opacity-100 cpk:md:scale-100":"cpk:pointer-events-none cpk:translate-y-4 cpk:opacity-0 cpk:md:translate-y-5 cpk:md:scale-[0.95]"),v=e.computed(()=>({"--copilot-popup-width":g(n.width,Ar),"--copilot-popup-height":g(n.height,Rr),"--copilot-popup-max-width":"calc(100vw - 3rem)","--copilot-popup-max-height":"calc(100dvh - 7.5rem)",width:"var(--copilot-popup-width)",height:"var(--copilot-popup-height)",maxWidth:"var(--copilot-popup-max-width)",maxHeight:"var(--copilot-popup-max-height)",paddingTop:"env(safe-area-inset-top)",paddingBottom:"env(safe-area-inset-bottom)",paddingLeft:"env(safe-area-inset-left)",paddingRight:"env(safe-area-inset-right)"}));function g(C,I){return typeof C=="number"&&Number.isFinite(C)?`${C}px`:typeof C=="string"&&C.trim().length>0?C:`${I}px`}function b(){s.value?.setModalOpen?.(!1)}function f(){s.value?.setModalOpen?.(!0)}function S(){s.value?.setModalOpen?.(!k.value)}function w(C){a("submit-message",C)}function A(){a("stop")}function h(C){a("input-change",C)}function E(C,I){a("select-suggestion",C,I)}function T(){a("add-file")}function R(){a("start-transcribe")}function B(){a("cancel-transcribe")}function F(){a("finish-transcribe")}const N=e.computed(()=>{const C={onSubmitMessage:w,onInputChange:h,onSelectSuggestion:E};return n.onStop&&(C.onStop=A),n.onAddFile&&(C.onAddFile=T),n.onStartTranscribe&&(C.onStartTranscribe=R),n.onCancelTranscribe&&(C.onCancelTranscribe=B),n.onFinishTranscribe&&(C.onFinishTranscribe=F),C}),j=e.computed(()=>({...i,...N.value}));return e.watch(k,C=>{if(u&&(clearTimeout(u),u=void 0),C){l.value=!0,c.value=!1;return}l.value&&(c.value=!0,u=setTimeout(()=>{l.value=!1,c.value=!1,u=void 0},Yt))},{immediate:!0}),e.watch(k,(C,I,L)=>{if(!C||typeof window>"u")return;const $=O=>{O.key==="Escape"&&(O.preventDefault(),b())};window.addEventListener("keydown",$),L(()=>{window.removeEventListener("keydown",$)})},{immediate:!0}),e.watch(k,(C,I,L)=>{C&&(d=setTimeout(()=>{if(typeof document>"u")return;const $=r.value;$&&!$.contains(document.activeElement)&&$.focus({preventScroll:!0})},Yt),L(()=>{d&&(clearTimeout(d),d=void 0)}))},{immediate:!0}),e.watch([k,()=>n.clickOutsideToClose],([C,I],L,$)=>{if(!C||!I||typeof document>"u")return;const O=G=>{const M=G.target;!M||r.value?.contains(M)||document.querySelector("[data-slot='chat-toggle-button']")?.contains(M)||b()};document.addEventListener("pointerdown",O),$(()=>{document.removeEventListener("pointerdown",O)})},{immediate:!0}),e.onMounted(async()=>{await e.nextTick()}),e.onBeforeUnmount(()=>{u&&clearTimeout(u),d&&clearTimeout(d)}),(C,I)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(C.$slots,"toggle-button",{isOpen:k.value,toggle:S,open:f,close:b},()=>[e.createVNode(Bt)]),l.value?(e.openBlock(),e.createElementBlock("div",xr,[e.createElementVNode("div",{ref_key:"containerRef",ref:r,tabindex:"-1",role:"dialog","aria-label":y.value.modalHeaderTitle,"data-copilot-popup":"",class:e.normalizeClass(["cpk:relative cpk:flex cpk:h-full cpk:w-full cpk:flex-col cpk:overflow-hidden cpk:bg-background cpk:text-foreground","cpk:origin-bottom cpk:focus:outline-none cpk:transform-gpu cpk:transition-transform cpk:transition-opacity cpk:duration-200 cpk:ease-out","cpk:md:transition-transform cpk:md:transition-opacity","cpk:rounded-none cpk:border cpk:border-border/0 cpk:shadow-none cpk:ring-0","cpk:md:h-[var(--copilot-popup-height)] cpk:md:w-[var(--copilot-popup-width)]","cpk:md:max-h-[var(--copilot-popup-max-height)] cpk:md:max-w-[var(--copilot-popup-max-width)]","cpk:md:origin-bottom-right cpk:md:rounded-2xl cpk:md:border-border cpk:md:shadow-xl cpk:md:ring-1 cpk:md:ring-border/40",m.value]),style:e.normalizeStyle(v.value)},[e.renderSlot(C.$slots,"header",{title:p.value,onClose:b,isOpen:k.value},()=>[e.createVNode(Ft,{title:p.value},null,8,["title"])]),e.createElementVNode("div",Ir,[e.createVNode(at,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},j.value),e.createSlots({_:2},[C.$slots["message-view"]?{name:"message-view",fn:e.withCtx(L=>[e.renderSlot(C.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(L)))]),key:"0"}:void 0,C.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(L=>[e.renderSlot(C.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(L)))]),key:"1"}:void 0,C.$slots.feather?{name:"feather",fn:e.withCtx(()=>[e.renderSlot(C.$slots,"feather")]),key:"2"}:void 0,C.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(L=>[e.renderSlot(C.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(L)))]),key:"3"}:void 0,C.$slots.input?{name:"input",fn:e.withCtx(L=>[e.renderSlot(C.$slots,"input",e.normalizeProps(e.guardReactiveProps(L)))]),key:"4"}:void 0,C.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(L=>[e.renderSlot(C.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(L)))]),key:"5"}:void 0,C.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(L=>[e.renderSlot(C.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(L)))]),key:"6"}:void 0,C.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(C.$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"])])],14,Tr)])):e.createCommentVNode("",!0)],64))}}),Hn=e.defineComponent({inheritAttrs:!1,__name:"CopilotPopupView",props:{width:{default:void 0},height:{default:void 0},clickOutsideToClose:{type:Boolean,default:!1},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:()=>[]},onSubmitMessage:{},onStop:{},onInputChange:{},onSelectSuggestion:{},onStartTranscribe:{},onCancelTranscribe:{},onFinishTranscribe:{},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,i=e.useAttrs(),s=e.computed(()=>{const{defaultOpen:c,...u}=n;return u}),r=e.computed(()=>{const c={onSubmitMessage:u=>a("submit-message",u),onInputChange:u=>a("input-change",u),onSelectSuggestion:(u,d)=>a("select-suggestion",u,d)};return n.onStop&&(c.onStop=()=>a("stop")),n.onAddFile&&(c.onAddFile=()=>a("add-file")),n.onStartTranscribe&&(c.onStartTranscribe=()=>a("start-transcribe")),n.onCancelTranscribe&&(c.onCancelTranscribe=()=>a("cancel-transcribe")),n.onFinishTranscribe&&(c.onFinishTranscribe=()=>a("finish-transcribe")),c}),l=e.computed(()=>({...i,...s.value,...r.value}));return(c,u)=>(e.openBlock(),e.createBlock(mt,{"is-modal-default-open":t.defaultOpen},{default:e.withCtx(()=>[e.createVNode(Er,e.normalizeProps(e.guardReactiveProps(l.value)),e.createSlots({_:2},[c.$slots.header?{name:"header",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"header",e.normalizeProps(e.guardReactiveProps(d)))]),key:"0"}:void 0,c.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"1"}:void 0,c.$slots["message-view"]?{name:"message-view",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"2"}:void 0,c.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"3"}:void 0,c.$slots.feather?{name:"feather",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"feather",e.normalizeProps(e.guardReactiveProps(d)))]),key:"4"}:void 0,c.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"5"}:void 0,c.$slots.input?{name:"input",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"input",e.normalizeProps(e.guardReactiveProps(d)))]),key:"6"}:void 0,c.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"7"}:void 0,c.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(d)))]),key:"8"}:void 0,c.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(c.$slots,"welcome-message")]),key:"9"}:void 0]),1040)]),_:3},8,["is-modal-default-open"]))}}),Mr={"data-copilotkit":"",class:"cpk:h-full cpk:flex cpk:flex-col","data-testid":"copilot-popup-welcome-screen"},$r={class:"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4"},Br={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},Fr={class:"cpk:mb-4 cpk:flex cpk:justify-center cpk:px-4"},Wn=e.defineComponent({__name:"CopilotPopupWelcomeScreen",props:{modelValue:{default:""},isRunning:{type:Boolean,default:!1},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},onUpdateModelValue:{},onSubmitMessage:{},suggestions:{default:()=>[]},loadingIndexes:{default:()=>[]},onSelectSuggestion:{},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},canStop:{type:Boolean,default:void 0},canAddFile:{type:Boolean,default:void 0},canTranscribe:{type:Boolean,default:void 0}},setup(t){const o=t,n=pe(),a=e.computed(()=>n.value?.labels??Ve);function i(){o.onStop?.()}function s(){o.onAddFile?.()}function r(){o.onStartTranscribe?.()}function l(){o.onCancelTranscribe?.()}function c(){o.onFinishTranscribe?.()}async function u(m){await o.onFinishTranscribeWithAudio?.(m)}const d=e.computed(()=>({modelValue:o.modelValue,isRunning:o.isRunning,inputMode:o.inputMode,inputToolsMenu:o.inputToolsMenu,canStop:o.canStop??!!o.onStop,canAddFile:o.canAddFile??!!o.onAddFile,canTranscribe:o.canTranscribe??!!o.onStartTranscribe,onUpdateModelValue:o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:i,onAddFile:s,onStartTranscribe:r,onCancelTranscribe:l,onFinishTranscribe:c,onFinishTranscribeWithAudio:u})),k=e.computed(()=>({suggestions:o.suggestions,loadingIndexes:o.loadingIndexes,onSelectSuggestion:o.onSelectSuggestion})),y=e.computed(()=>({...d.value,...k.value})),p=e.computed(()=>{const m={"onUpdate:modelValue":o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop};return o.onAddFile&&(m.onAddFile=o.onAddFile),o.onStartTranscribe&&(m.onStartTranscribe=o.onStartTranscribe),o.onCancelTranscribe&&(m.onCancelTranscribe=o.onCancelTranscribe),o.onFinishTranscribe&&(m.onFinishTranscribe=o.onFinishTranscribe),o.onFinishTranscribeWithAudio&&(m.onFinishTranscribeWithAudio=o.onFinishTranscribeWithAudio),m});return(m,v)=>e.renderSlot(m.$slots,"layout",e.normalizeProps(e.guardReactiveProps(y.value)),()=>[e.createElementVNode("div",Mr,[e.createElementVNode("div",$r,[e.renderSlot(m.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",Br,e.toDisplayString(a.value.welcomeMessageText),1)])]),e.createElementVNode("div",null,[e.createElementVNode("div",Fr,[e.renderSlot(m.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(k.value)),()=>[e.createVNode(tt,{suggestions:t.suggestions,"loading-indexes":t.loadingIndexes,onSelectSuggestion:t.onSelectSuggestion},null,8,["suggestions","loading-indexes","onSelectSuggestion"])])]),e.renderSlot(m.$slots,"input",e.normalizeProps(e.guardReactiveProps(d.value)),()=>[e.createVNode(et,e.mergeProps({"model-value":t.modelValue,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0},p.value),null,16,["model-value","is-running","mode","tools-menu"])])])])])}}),Nr=["aria-hidden"],Vr={class:"cpk:flex cpk:h-full cpk:w-full cpk:flex-col cpk:overflow-hidden"},Dr={class:"cpk:flex-1 cpk:overflow-hidden","data-sidebar-chat":""},Or=480,Lr=260,Pr=e.defineComponent({inheritAttrs:!1,__name:"CopilotSidebarViewInternal",props:{width:{default:void 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:()=>[]},onSubmitMessage:{},onStop:{},onInputChange:{},onSelectSuggestion:{},onStartTranscribe:{},onCancelTranscribe:{},onFinishTranscribe:{},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,i=e.useAttrs(),s=pe(),r=e.ref(null),l=e.ref(n.width??Or);let c=null;const u=e.computed(()=>s.value?.isModalOpen??!1),d=e.computed(()=>n.width??l.value),k=e.computed(()=>s.value?.labels.modalHeaderTitle??Ve.modalHeaderTitle),y=e.computed(()=>["cpk:fixed cpk:right-0 cpk:top-0 cpk:z-[1200] cpk:flex cpk:h-[100vh] cpk:h-[100dvh] cpk:max-h-screen cpk:w-full","cpk:border-l cpk:border-border cpk:bg-background cpk:text-foreground cpk:shadow-xl","cpk:transition-transform cpk:duration-300 cpk:ease-out",u.value?"cpk:translate-x-0":"cpk:translate-x-full cpk:pointer-events-none",i.class]),p=e.computed(()=>{const{class:I,...L}=i;return L}),m=e.computed(()=>({"--sidebar-width":g(d.value),paddingTop:"env(safe-area-inset-top)",paddingBottom:"env(safe-area-inset-bottom)"})),v=e.computed(()=>`
|
|
76
|
+
@media (min-width: 768px) {
|
|
77
|
+
body {
|
|
78
|
+
margin-inline-end: ${b(d.value)};
|
|
79
|
+
transition: margin-inline-end ${Lr}ms ease;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
`);function g(I){return typeof I=="number"?`${I}px`:I}function b(I){return typeof I=="number"?`${I}px`:I}function f(){if(n.width!==void 0||!r.value)return;const I=r.value.getBoundingClientRect().width;I>0&&(l.value=I)}function S(){s.value?.setModalOpen?.(!1)}function w(){s.value?.setModalOpen?.(!0)}function A(){s.value?.setModalOpen?.(!u.value)}function h(I){a("submit-message",I)}function E(){a("stop")}function T(I){a("input-change",I)}function R(I,L){a("select-suggestion",I,L)}function B(){a("add-file")}function F(){a("start-transcribe")}function N(){a("cancel-transcribe")}function j(){a("finish-transcribe")}const C=e.computed(()=>{const I={onSubmitMessage:h,onInputChange:T,onSelectSuggestion:R};return n.onStop&&(I.onStop=E),n.onAddFile&&(I.onAddFile=B),n.onStartTranscribe&&(I.onStartTranscribe=F),n.onCancelTranscribe&&(I.onCancelTranscribe=N),n.onFinishTranscribe&&(I.onFinishTranscribe=j),I});return e.watch(()=>n.width,I=>{if(I!==void 0){l.value=I;return}f()}),e.onMounted(async()=>{await e.nextTick(),f(),!(n.width!==void 0||!r.value||typeof ResizeObserver>"u")&&(c=new ResizeObserver(()=>{f()}),c.observe(r.value))}),e.onBeforeUnmount(()=>{c?.disconnect(),c=null}),(I,L)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[u.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent("style"),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value),1)]),_:1})):e.createCommentVNode("",!0),e.renderSlot(I.$slots,"toggle-button",{isOpen:u.value,toggle:A,open:w,close:S},()=>[e.createVNode(Bt)]),e.createElementVNode("aside",e.mergeProps({ref_key:"sidebarRef",ref:r,"data-copilotkit":"","data-copilot-sidebar":"",class:y.value,style:m.value,"aria-label":"Copilot chat sidebar","aria-hidden":!u.value,role:"complementary"},p.value),[e.createElementVNode("div",Vr,[e.renderSlot(I.$slots,"header",{title:k.value,onClose:S,isOpen:u.value},()=>[e.createVNode(Ft,{title:k.value},null,8,["title"])]),e.createElementVNode("div",Dr,[e.createVNode(at,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},C.value),e.createSlots({_:2},[I.$slots["message-view"]?{name:"message-view",fn:e.withCtx($=>[e.renderSlot(I.$slots,"message-view",e.normalizeProps(e.guardReactiveProps($)))]),key:"0"}:void 0,I.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx($=>[e.renderSlot(I.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps($)))]),key:"1"}:void 0,I.$slots.feather?{name:"feather",fn:e.withCtx(()=>[e.renderSlot(I.$slots,"feather")]),key:"2"}:void 0,I.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx($=>[e.renderSlot(I.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps($)))]),key:"3"}:void 0,I.$slots.input?{name:"input",fn:e.withCtx($=>[e.renderSlot(I.$slots,"input",e.normalizeProps(e.guardReactiveProps($)))]),key:"4"}:void 0,I.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx($=>[e.renderSlot(I.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps($)))]),key:"5"}:void 0,I.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx($=>[e.renderSlot(I.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps($)))]),key:"6"}:void 0,I.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(I.$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,Nr)],64))}}),qn=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:()=>[]},onSubmitMessage:{},onStop:{},onInputChange:{},onSelectSuggestion:{},onStartTranscribe:{},onCancelTranscribe:{},onFinishTranscribe:{},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,i=e.useAttrs(),s=e.computed(()=>{const{defaultOpen:c,...u}=n;return u}),r=e.computed(()=>({...i,...s.value,...l.value})),l=e.computed(()=>{const c={onSubmitMessage:u=>a("submit-message",u),onInputChange:u=>a("input-change",u),onSelectSuggestion:(u,d)=>a("select-suggestion",u,d)};return n.onStop&&(c.onStop=()=>a("stop")),n.onAddFile&&(c.onAddFile=()=>a("add-file")),n.onStartTranscribe&&(c.onStartTranscribe=()=>a("start-transcribe")),n.onCancelTranscribe&&(c.onCancelTranscribe=()=>a("cancel-transcribe")),n.onFinishTranscribe&&(c.onFinishTranscribe=()=>a("finish-transcribe")),c});return(c,u)=>(e.openBlock(),e.createBlock(mt,{"is-modal-default-open":t.defaultOpen},{default:e.withCtx(()=>[e.createVNode(Pr,e.normalizeProps(e.guardReactiveProps(r.value)),e.createSlots({_:2},[c.$slots.header?{name:"header",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"header",e.normalizeProps(e.guardReactiveProps(d)))]),key:"0"}:void 0,c.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"1"}:void 0,c.$slots["message-view"]?{name:"message-view",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"2"}:void 0,c.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"3"}:void 0,c.$slots.feather?{name:"feather",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"feather",e.normalizeProps(e.guardReactiveProps(d)))]),key:"4"}:void 0,c.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"5"}:void 0,c.$slots.input?{name:"input",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"input",e.normalizeProps(e.guardReactiveProps(d)))]),key:"6"}:void 0,c.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"7"}:void 0,c.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(d=>[e.renderSlot(c.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(d)))]),key:"8"}:void 0,c.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(c.$slots,"welcome-message")]),key:"9"}:void 0]),1040)]),_:3},8,["is-modal-default-open"]))}}),Ur={"data-copilotkit":"",class:"cpk:h-full cpk:flex cpk:flex-col","data-testid":"copilot-sidebar-welcome-screen"},zr={class:"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4"},jr={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"},Hr={class:"cpk:max-w-3xl cpk:mx-auto"},Wr={class:"cpk:mb-4 cpk:flex cpk:justify-center"},Kn=e.defineComponent({__name:"CopilotSidebarWelcomeScreen",props:{modelValue:{default:""},isRunning:{type:Boolean,default:!1},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},onUpdateModelValue:{},onSubmitMessage:{},suggestions:{default:()=>[]},loadingIndexes:{default:()=>[]},onSelectSuggestion:{},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},canStop:{type:Boolean,default:void 0},canAddFile:{type:Boolean,default:void 0},canTranscribe:{type:Boolean,default:void 0}},setup(t){const o=t,n=pe(),a=e.computed(()=>n.value?.labels??Ve);function i(){o.onStop?.()}function s(){o.onAddFile?.()}function r(){o.onStartTranscribe?.()}function l(){o.onCancelTranscribe?.()}function c(){o.onFinishTranscribe?.()}async function u(m){await o.onFinishTranscribeWithAudio?.(m)}const d=e.computed(()=>({modelValue:o.modelValue,isRunning:o.isRunning,inputMode:o.inputMode,inputToolsMenu:o.inputToolsMenu,canStop:o.canStop??!!o.onStop,canAddFile:o.canAddFile??!!o.onAddFile,canTranscribe:o.canTranscribe??!!o.onStartTranscribe,onUpdateModelValue:o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:i,onAddFile:s,onStartTranscribe:r,onCancelTranscribe:l,onFinishTranscribe:c,onFinishTranscribeWithAudio:u})),k=e.computed(()=>({suggestions:o.suggestions,loadingIndexes:o.loadingIndexes,onSelectSuggestion:o.onSelectSuggestion})),y=e.computed(()=>({...d.value,...k.value})),p=e.computed(()=>{const m={"onUpdate:modelValue":o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop};return o.onAddFile&&(m.onAddFile=o.onAddFile),o.onStartTranscribe&&(m.onStartTranscribe=o.onStartTranscribe),o.onCancelTranscribe&&(m.onCancelTranscribe=o.onCancelTranscribe),o.onFinishTranscribe&&(m.onFinishTranscribe=o.onFinishTranscribe),o.onFinishTranscribeWithAudio&&(m.onFinishTranscribeWithAudio=o.onFinishTranscribeWithAudio),m});return(m,v)=>e.renderSlot(m.$slots,"layout",e.normalizeProps(e.guardReactiveProps(y.value)),()=>[e.createElementVNode("div",Ur,[e.createElementVNode("div",zr,[e.renderSlot(m.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",jr,e.toDisplayString(a.value.welcomeMessageText),1)])]),e.createElementVNode("div",_r,[e.createElementVNode("div",Hr,[e.createElementVNode("div",Wr,[e.renderSlot(m.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(k.value)),()=>[e.createVNode(tt,{suggestions:t.suggestions,"loading-indexes":t.loadingIndexes,onSelectSuggestion:t.onSelectSuggestion},null,8,["suggestions","loading-indexes","onSelectSuggestion"])])]),e.renderSlot(m.$slots,"input",e.normalizeProps(e.guardReactiveProps(d.value)),()=>[e.createVNode(et,e.mergeProps({"model-value":t.modelValue,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0},p.value),null,16,["model-value","is-running","mode","tools-menu"])])])])])])}}),qr=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.canStop?{onStop:s.onStop}:{},...s.canAddFile?{onAddFile:s.onAddFile}:{},...s.canTranscribe?{onStartTranscribe:s.onStartTranscribe,onCancelTranscribe:s.onCancelTranscribe,onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=ot(),i=e.computed(()=>a.value.checkFeature("popup"));return e.watch(i,s=>{s||console.warn('[CopilotKit] Warning: "popup" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[i.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Rt,{key:0,"feature-name":"Popup"})),e.createVNode(Et,e.mergeProps(n,{onSubmitMessage:r[0]||(r[0]=l=>s.$emit("submit-message",l)),onStop:r[1]||(r[1]=l=>s.$emit("stop")),onInputChange:r[2]||(r[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:r[3]||(r[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:r[4]||(r[4]=l=>s.$emit("add-file")),onStartTranscribe:r[5]||(r[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:r[6]||(r[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:r[7]||(r[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,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(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(u=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(u)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(u=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(u)))]),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))}}),Kr=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.canStop?{onStop:s.onStop}:{},...s.canAddFile?{onAddFile:s.onAddFile}:{},...s.canTranscribe?{onStartTranscribe:s.onStartTranscribe,onCancelTranscribe:s.onCancelTranscribe,onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=ot(),i=e.computed(()=>a.value.checkFeature("sidebar"));return e.watch(i,s=>{s||console.warn('[CopilotKit] Warning: "sidebar" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[i.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Rt,{key:0,"feature-name":"Sidebar"})),e.createVNode(Et,e.mergeProps(n,{onSubmitMessage:r[0]||(r[0]=l=>s.$emit("submit-message",l)),onStop:r[1]||(r[1]=l=>s.$emit("stop")),onInputChange:r[2]||(r[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:r[3]||(r[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:r[4]||(r[4]=l=>s.$emit("add-file")),onStartTranscribe:r[5]||(r[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:r[6]||(r[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:r[7]||(r[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(qn,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(Kn,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(u=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(u)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(u=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(u)))]),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))}}),Gr=Object.assign(Et,{View:at}),Jr=Object.assign(Bt,{OpenIcon:$t,CloseIcon:Mt}),Qr=Object.assign(Ft,{Title:_n,CloseButton:jn}),Xr=Object.assign(Hn,{WelcomeScreen:Wn}),Yr=Object.assign(qn,{WelcomeScreen:Kn});function Zr(t){const{copilotkit:o}=Ce(),n=e.computed(()=>e.toValue(t.description)),a=e.computed(()=>e.toValue(t.value)),i=e.computed(()=>typeof a.value=="string"?a.value:JSON.stringify(a.value));e.watch([()=>o.value,n,i],(s,r,l)=>{const c=o.value,u=c.addContext({description:n.value,value:i.value});l(()=>c.removeContext(u))},{immediate:!0})}const ei=[];function Nt(t,o){const{copilotkit:n}=Ce(),a=o??ei;e.watch([()=>t.name,()=>t.available,()=>JSON.stringify(t.webmcp??null),()=>a.length,...a],(i,s,r)=>{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}),r(()=>{l.removeTool(c,t.agentId)})},{immediate:!0})}function ti(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
|
+
|
|
84
|
+
${t.description}`:n;Nt({name:t.name,description:a,parameters:t.parameters,render:({args:i})=>{const s=t.render;return e.h(s,i)},agentId:t.agentId},o)}const ni=[];function Gn(t,o){const{copilotkit:n}=Ce(),a=o??ni;e.watch([()=>n.value,()=>t.name,()=>t.agentId,()=>a.length,...a],()=>{const i=r=>typeof t.render=="function"?t.render(r):e.h(t.render,r),s=t.name==="*"&&!t.parameters?ct({name:"*",render:r=>i({...r,parameters:r.args}),...t.agentId?{agentId:t.agentId}:{}}):ct({name:t.name,args:t.parameters,render:r=>i({...r,parameters:r.args}),...t.agentId?{agentId:t.agentId}:{}});n.value.addHookRenderToolCall(s)},{immediate:!0})}const Zt=new Set;function oi(t){switch(t){case Z.ToolCallStatus.Complete:return"complete";case Z.ToolCallStatus.Executing:return"executing";case Z.ToolCallStatus.InProgress:return"inProgress";default:{const o=String(t);return Zt.has(o)||(Zt.add(o),console.warn(`[CopilotKit] Unknown ToolCallStatus "${o}" in default tool-call renderer; falling back to "inProgress".`)),"inProgress"}}}function vt(t){const o=t.parameters!==void 0?t.parameters:t.args,n=t.status,a=n==="inProgress"||n==="executing"||n==="complete"?n:oi(n);return{name:t.name,toolCallId:t.toolCallId,parameters:o,status:a,result:t.result}}function en(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 ai=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",i=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":tn(t.parameters),"data-result":tn(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"},i)]),o.value?e.h("div",{style:{marginTop:"12px"}},[e.h("div","Arguments"),e.h("pre",en(t.parameters??{})),t.result!==void 0?e.h("div",[e.h("div","Result"),e.h("pre",typeof t.result=="string"?t.result:en(t.result))]):null]):null])])}}});function tn(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 si(t,o){const n=t?.render;let a;if(typeof n=="function"){const i=n;a=(s=>{const r=vt(s);return i(r)})}else if(n){const i=n;a=(s=>{const r=vt(s);return e.h(i,{name:r.name,toolCallId:r.toolCallId,parameters:r.parameters,status:r.status,result:r.result})})}else a=(i=>{const s=vt(i);return e.h(ai,{name:s.name,toolCallId:s.toolCallId,parameters:s.parameters,status:s.status,result:s.result})});Gn({name:"*",render:a},o)}function ri(t,o){const{copilotkit:n}=Ce(),a=e.ref(null),i=e.ref(null),s=e.ref(null),r=async d=>{a.value&&(s.value?.(),s.value=null,a.value(d),a.value=null,i.value=null)},u={...t,type:"human-in-the-loop",handler:async(d,k)=>{const y=k?.signal;return new Promise((p,m)=>{if(y?.aborted){m(new Error("Human-in-the-loop interaction aborted"));return}if(a.value=p,i.value=m,y){const v=()=>{s.value=null,a.value=null;const g=i.value;i.value=null,g?.(new Error("Human-in-the-loop interaction aborted"))};y.addEventListener("abort",v,{once:!0}),s.value=()=>{y.removeEventListener("abort",v)}}})},render:d=>{const k=t.render;return d.status===Z.ToolCallStatus.InProgress?e.h(k,{...d,name:t.name,description:t.description||"",agentId:t.agentId,respond:void 0}):d.status===Z.ToolCallStatus.Executing?e.h(k,{...d,name:t.name,description:t.description||"",agentId:t.agentId,respond:r}):d.status===Z.ToolCallStatus.Complete?e.h(k,{...d,name:t.name,description:t.description||"",agentId:t.agentId,respond:void 0}):d}};Nt(u,o),e.onScopeDispose(()=>{n.value.removeHookRenderToolCall(t.name,t.agentId)})}function ii(t){return"instructions"in t}function li(t){return t.map(o=>({...o,isLoading:o.isLoading??!1}))}function ci(t,o){const{copilotkit:n}=Ce(),a=pe(),i=o??[],s=e.computed(()=>a.value?.agentId??_.DEFAULT_AGENT_ID),r=e.computed(()=>t?t.consumerAgentId:void 0),l=e.computed(()=>{if(!t||t.available==="disabled")return null;if(ii(t))return{...t};const g=li(t.suggestions);return{...t,suggestions:g}}),c=e.computed(()=>l.value?JSON.stringify(l.value):null),u=e.computed(()=>{if(!l.value)return s.value;const g=l.value.consumerAgentId;return!g||g==="*"?s.value:g}),d=e.computed(()=>r.value===void 0||r.value==="*"),k=e.ref(!1),y=e.ref(null),p=e.ref(null),m=()=>{if(!k.value||!d.value)return;if(Object.values(n.value.agents??{}).some(b=>!!b.agentId&&b.isRunning)){y.value=setTimeout(()=>{y.value=null,m()},0);return}k.value=!1,v()},v=()=>{if(l.value){if(d.value){let g=!1;const b=Object.values(n.value.agents??{});for(const f of b){const S=f.agentId;S&&(f.isRunning?g=!0:n.value.reloadSuggestions(S))}k.value=g,g&&y.value===null&&(y.value=setTimeout(()=>{y.value=null,m()},0));return}u.value&&n.value.reloadSuggestions(u.value)}};e.watch([()=>n.value,c],([g,b],f,S)=>{if(!b||!l.value)return;const w=n.value,A=l.value,h=w.addSuggestionsConfig(A);v(),S(()=>w.removeSuggestionsConfig(h))},{immediate:!0}),e.watch([l,c],([g,b])=>{if(!g){p.value=null;return}b&&p.value===b||(b&&(p.value=b),v())},{immediate:!1}),e.watch([l,()=>i.length,...i],([g])=>{!g||i.length===0||v()},{immediate:!0}),e.watch([()=>n.value,k],(g,b,f)=>{f(()=>{y.value!==null&&(clearTimeout(y.value),y.value=null)})},{immediate:!0}),e.watch([()=>n.value,d],([g,b],f,S)=>{if(!b)return;const w=Object.values(g.agents??{}).filter(A=>!!A).map(A=>A.subscribe({onRunStartedEvent:m,onRunFinishedEvent:m,onRunFinalized:m,onRunFailed:m,onRunErrorEvent:m}));S(()=>{for(const A of w)A.unsubscribe()})},{immediate:!0})}const Jn="on_interrupt";function ui(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof Reflect.get(t,"then")=="function"}function di(t){return t instanceof Promise?t:new Promise((o,n)=>{try{t.then(o,n)}catch(a){n(a)}})}function bt(t){return t.kind==="legacy"?t.event:{name:Jn,value:t.interrupts[0]}}function pi(t={}){const{copilotkit:o}=Ce(),{agent:n}=ft({agentId:t.agentId}),a=e.shallowRef(null),i=e.shallowRef(null),s={};e.watch(n,(p,m,v)=>{if(!p){a.value=null,i.value=null;return}let g=null,b=null;const f=p.subscribe({onCustomEvent:({event:S})=>{S.name===Jn&&(g={name:S.name,value:S.value})},onRunFinishedEvent:S=>{S.outcome==="interrupt"&&(b=S.interrupts)},onRunStartedEvent:()=>{g=null,b=null;for(const S of Object.keys(s))delete s[S];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 S of Object.keys(s))delete s[S];a.value=null}});v(()=>f.unsubscribe())},{immediate:!0});const r=async p=>{if(!p.every(f=>s[f.id]))return;const v=p.find(f=>Qe.isInterruptExpired(f));if(v){console.error(`[CopilotKit] useInterrupt: interrupt ${v.id} expired at ${v.expiresAt}; not resuming.`);for(const f of Object.keys(s))delete s[f];a.value=null;return}const g=Qe.buildResumeArray(p,s);for(const f of Object.keys(s))delete s[f];const b=n.value;if(b)try{return await o.value.runAgent({agent:b,resume:g})}catch(f){throw console.error("[CopilotKit] useInterrupt resolve: runAgent rejected; clearing pending + rethrowing",f),a.value=null,f}},l=async(p,m)=>{const v=a.value;if(!v)return;const g=n.value;if(!g)return;if(v.kind==="legacy"){const f=v.event.value;try{return await o.value.runAgent({agent:g,forwardedProps:{command:{resume:p,interruptEvent:f}}})}catch(S){throw console.error("[CopilotKit] useInterrupt resolve: runAgent rejected; clearing pending + rethrowing",S),a.value=null,S}}v.interrupts.length>1&&m===void 0&&console.warn(`[CopilotKit] useInterrupt: resolve()/cancel() called without an interruptId while ${v.interrupts.length} interrupts are open; defaulting to the first. Pass an interruptId to address a specific interrupt.`);const b=m??v.interrupts[0]?.id;if(b)return s[b]={status:"resolved",payload:p},r(v.interrupts)},c=async p=>{const m=a.value;if(!m)return;if(m.kind==="legacy"){console.warn("[CopilotKit] useInterrupt: cancel() is not supported for legacy on_interrupt interrupts; dismissing."),a.value=null;return}m.interrupts.length>1&&p===void 0&&console.warn(`[CopilotKit] useInterrupt: resolve()/cancel() called without an interruptId while ${m.interrupts.length} interrupts are open; defaulting to the first. Pass an interruptId to address a specific interrupt.`);const v=p??m.interrupts[0]?.id;if(v)return s[v]={status:"cancelled"},r(m.interrupts)},u=l,d=c;e.watch(a,(p,m,v)=>{if(!p){i.value=null;return}const g=bt(p);if(t.enabled&&!t.enabled(g)){i.value=null;return}const b=t.handler;if(!b){i.value=null;return}let f=!1;const S=b({event:g,interrupt:p.kind==="standard"?p.interrupts[0]??null:null,interrupts:p.kind==="standard"?p.interrupts:[],resolve:l,cancel:c});ui(S)?di(S).then(w=>{f||(i.value=w)}).catch(w=>{f||(console.error("[CopilotKit] useInterrupt handler failed:",w),i.value=null)}):i.value=S,v(()=>{f=!0})},{immediate:!0});const k=e.computed(()=>a.value?bt(a.value):null),y=e.computed(()=>{const p=a.value;if(!p)return null;const m=bt(p);return t.enabled&&!t.enabled(m)?null:{event:m,interrupt:p.kind==="standard"?p.interrupts[0]??null:null,interrupts:p.kind==="standard"?p.interrupts:[],result:i.value,resolve:l,cancel:c}});return e.watch([()=>o.value,y,()=>t.renderInChat!==!1],([p,m,v],g,b)=>{if(!v)return;p.setInterruptState(m);const f=m;b(()=>{p.interruptState===f&&p.setInterruptState(null)})},{immediate:!0}),e.onScopeDispose(()=>{const p=o.value;t.renderInChat!==!1&&p.interruptState===y.value&&p.setInterruptState(null)}),{interrupt:k,result:i,hasInterrupt:e.computed(()=>y.value!==null),resolve:l,resolveInterrupt:u,cancel:c,cancelInterrupt:d,slotProps:y}}function mi(t){const{agent:o}=ft({agentId:t});return e.computed(()=>{const n=o.value;if(n&&"capabilities"in n)return n.capabilities})}function fi(){const{copilotkit:t}=Ce(),o=pe();return function(a){const i=o.value;if(!i)return null;const s=i.agentId||_.DEFAULT_AGENT_ID,{threadId:r}=i,l=t.value,c=[...l.renderCustomMessages].filter(A=>A.agentId===void 0||A.agentId===s).sort((A,h)=>{const E=A.agentId!==void 0,T=h.agentId!==void 0;return E===T?0:E?-1:1});if(!c.length)return null;const{message:u,position:d}=a,k=l.getRunIdForMessage(s,r,u.id)??l.getRunIdsForThread(s,r).slice(-1)[0],y=k??`missing-run-id:${u.id}`,p=l.getAgent(s);if(!p)return null;const m=k?p.messages.filter(A=>l.getRunIdForMessage(s,r,A.id)===k).map(A=>A.id):[u.id],v=p.messages.findIndex(A=>A.id===u.id);v<0&&console.warn(`[CopilotKit] useRenderCustomMessages: message "${u.id}" not found in agent "${s}" messages`);const g=Math.max(0,v),b=k?Math.max(m.indexOf(u.id),0):0,f=k?m.length:1,S=k?l.getStateByRun(s,r,k):void 0,w={message:u,position:d,runId:y,messageIndex:g,messageIndexInRun:b,numberOfMessagesInRun:f,agentId:s,stateSnapshot:S};for(const A of c)if(A.render)return{renderer:A.render,props:w};return null}}function gi(){const{copilotkit:t}=Ce(),o=pe(),n=e.computed(()=>o.value?.agentId??_.DEFAULT_AGENT_ID),a=e.computed(()=>[...t.value.renderActivityMessages]);function i(r){const l=a.value;if(!l.length)return null;const c=l.filter(u=>u.activityType===r);return c.find(u=>u.agentId===n.value)??c.find(u=>u.agentId===void 0)??l.find(u=>u.activityType==="*")??null}function s(r){const l=i(r.activityType);if(!l)return null;const c=l.content.safeParse(r.content);if(!c.success)return console.warn(`Failed to parse content for activity message '${r.activityType}':`,c.error),null;const u=t.value.getAgent(n.value);return{renderer:l.render,props:{activityType:r.activityType,content:c.data,message:r,agent:u}}}return{renderActivityMessage:s,findRenderer:i}}exports.A2UIActivityContentSchema=po;exports.A2UISurfaceActivityType=uo;exports.CopilotChat=Gr;exports.CopilotChatDefaultLabels=Ve;exports.CopilotChatToggleButton=Jr;exports.CopilotChatToggleButtonCloseIcon=Mt;exports.CopilotChatToggleButtonOpenIcon=$t;exports.CopilotKitCoreVue=un;exports.CopilotModalHeader=Qr;exports.CopilotPopupView=Xr;exports.CopilotSidebarView=Yr;exports.GenerateSandboxedUiArgsSchema=bn;exports.LicenseContextKey=It;exports.MCPAppsActivityContentSchema=ln;exports.MCPAppsActivityRenderer=cn;exports.MCPAppsActivityType=rn;exports.OpenGenerativeUIActivityRenderer=yn;exports.OpenGenerativeUIActivityType=hn;exports.OpenGenerativeUIContentSchema=vn;exports.OpenGenerativeUIRenderer=kn;exports.OpenGenerativeUIToolRenderer=wn;exports.UseAgentUpdate=Bn;exports._sfc_main=In;exports._sfc_main$1=Mn;exports._sfc_main$10=tt;exports._sfc_main$11=Rn;exports._sfc_main$12=Ln;exports._sfc_main$13=at;exports._sfc_main$14=on;exports._sfc_main$15=na;exports._sfc_main$16=qr;exports._sfc_main$17=Kr;exports._sfc_main$18=hr;exports._sfc_main$2=Ct;exports._sfc_main$3=fr;exports._sfc_main$4=$n;exports._sfc_main$5=mt;exports._sfc_main$6=et;exports._sfc_main$7=Pn;exports._sfc_main$8=On;exports._sfc_main$9=Un;exports.createA2UIMessageRenderer=dn;exports.createDefaultLicenseRef=Cn;exports.defineToolCallRenderer=ct;exports.extractCompleteStyles=mn;exports.getOperationSurfaceId=yt;exports.processPartialHtml=fn;exports.useAgent=ft;exports.useAgentContext=Zr;exports.useAttachments=Nn;exports.useCapabilities=mi;exports.useComponent=ti;exports.useConfigureSuggestions=ci;exports.useCopilotChatConfiguration=pe;exports.useCopilotKit=Ce;exports.useDefaultRenderTool=si;exports.useFrontendTool=Nt;exports.useHumanInTheLoop=ri;exports.useInterrupt=pi;exports.useKatexStyles=En;exports.useKeyboardHeight=Vn;exports.useLicenseContext=ot;exports.useRenderActivityMessage=gi;exports.useRenderCustomMessages=fi;exports.useRenderTool=Gn;exports.useSandboxFunctions=gn;exports.useSuggestions=Fn;exports.useThreads=zn;exports.vueBasicCatalog=Xe;
|
|
85
|
+
//# sourceMappingURL=use-render-activity-message-CGdS03Xj.cjs.map
|