@copilotkit/vue 1.62.1 → 1.62.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-By5nIKxT.js +1632 -0
- package/dist/index-By5nIKxT.js.map +1 -0
- package/dist/index-LFxZI63k.cjs +748 -0
- package/dist/index-LFxZI63k.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +70 -69
- package/dist/styles.css +1 -1
- package/dist/{use-render-activity-message-8_HyVZWc.js → use-render-activity-message-DbGuwvBd.js} +3361 -3064
- package/dist/use-render-activity-message-DbGuwvBd.js.map +1 -0
- package/dist/use-render-activity-message-hlNcbV9l.cjs +85 -0
- package/dist/use-render-activity-message-hlNcbV9l.cjs.map +1 -0
- package/dist/v2/components/chat/CopilotChat.vue.d.ts.map +1 -1
- package/dist/v2/components/chat/CopilotModalHeader.vue.d.ts.map +1 -1
- package/dist/v2/components/chat/CopilotThreadsDrawer.vue.d.ts +42 -0
- package/dist/v2/components/chat/CopilotThreadsDrawer.vue.d.ts.map +1 -0
- package/dist/v2/components/chat/index.d.ts +1 -0
- package/dist/v2/components/chat/index.d.ts.map +1 -1
- package/dist/v2/components/icons/index.d.ts +1 -1
- package/dist/v2/components/icons/index.d.ts.map +1 -1
- package/dist/v2/hooks/use-threads.d.ts +12 -0
- package/dist/v2/hooks/use-threads.d.ts.map +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.mjs +44 -43
- package/dist/v2/lib/is-mobile-viewport.d.ts +15 -0
- package/dist/v2/lib/is-mobile-viewport.d.ts.map +1 -0
- package/dist/v2/providers/CopilotChatConfigurationProvider.vue.d.ts.map +1 -1
- package/dist/v2/providers/types.d.ts +24 -0
- package/dist/v2/providers/types.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/v2/components/chat/CopilotChat.vue +22 -4
- package/src/v2/components/chat/CopilotModalHeader.vue +61 -2
- package/src/v2/components/chat/CopilotThreadsDrawer.vue +285 -0
- package/src/v2/components/chat/__tests__/CopilotChat.clearOnFresh.test.ts +160 -0
- package/src/v2/components/chat/__tests__/CopilotModalHeader.drawerLauncher.test.ts +125 -0
- package/src/v2/components/chat/__tests__/CopilotThreadsDrawer.ssr.test.ts +25 -0
- package/src/v2/components/chat/__tests__/CopilotThreadsDrawer.test.ts +835 -0
- package/src/v2/components/chat/index.ts +1 -0
- package/src/v2/components/icons/index.ts +1 -0
- package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.ts +4 -4
- package/src/v2/hooks/__tests__/use-threads.test.ts +303 -6
- package/src/v2/hooks/use-threads.ts +137 -8
- package/src/v2/lib/__tests__/is-mobile-viewport.test.ts +48 -0
- package/src/v2/lib/is-mobile-viewport.ts +23 -0
- package/src/v2/providers/CopilotChatConfigurationProvider.vue +120 -4
- package/src/v2/providers/__tests__/CopilotChatConfigurationProvider.test.ts +105 -1
- package/src/v2/providers/types.ts +25 -0
- package/dist/use-render-activity-message-8_HyVZWc.js.map +0 -1
- package/dist/use-render-activity-message-BqgmNPCz.cjs +0 -85
- package/dist/use-render-activity-message-BqgmNPCz.cjs.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";var Zn=Object.create;var Lt=Object.defineProperty;var eo=Object.getOwnPropertyDescriptor;var to=Object.getOwnPropertyNames;var no=Object.getPrototypeOf,oo=Object.prototype.hasOwnProperty;var ao=(t,o,n,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of to(o))!oo.call(t,r)&&r!==n&&Lt(t,r,{get:()=>o[r],enumerable:!(a=eo(o,r))||a.enumerable});return t};var Pt=(t,o,n)=>(n=t!=null?Zn(no(t)):{},ao(o||!t||!t.__esModule?Lt(n,"default",{value:t,enumerable:!0}):n,t));const e=require("vue"),X=require("zod"),j=require("@copilotkit/shared"),It=require("zod-to-json-schema"),ue=require("@copilotkit/core"),dt=require("@a2ui/web_core/v0_9"),ve=require("@a2ui/web_core/v0_9/basic_catalog"),Le=require("@ag-ui/client"),oe=require("lucide-vue-next"),sn=require("streamdown-vue"),rn=e.defineComponent({inheritAttrs:!1,__name:"CopilotKitInspector",props:{core:{}},setup(t){const o=t,n=e.useAttrs(),a=e.shallowRef(null);let r=!0;return e.onMounted(()=>{import("@copilotkit/web-inspector").then(s=>{s.defineWebInspector?.(),r&&(a.value=s.WEB_INSPECTOR_TAG)}).catch(s=>{console.error("Failed to load CopilotKit inspector:",s)})}),e.onUnmounted(()=>{r=!1}),(s,i)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.mergeProps({key:0},e.unref(n),{".core":o.core??null}),null,48,[".core"])):e.createCommentVNode("",!0)}}),ln=Symbol("CopilotKit"),wt=Symbol("CopilotChatConfiguration"),cn=Symbol("SandboxFunctions");function be(){const t=e.inject(ln);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(" ")}`:"",r=`${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 ${r}; 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((r,s)=>{let i=this.queues.get(a);i||(i=[],this.queues.set(a,i)),i.push({execute:n,resolve:r,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 r=a[0];try{await this.waitForAgentIdle(n);const s=await r.execute();r.resolve(s)}catch(s){r.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 r=!1;const s=setTimeout(()=>{r||(r=!0,clearInterval(c),l.unsubscribe(),a(new Error("[CopilotKit] Timed out waiting for agent to become idle")))},3e4),i=()=>{r||(r=!0,clearTimeout(s),clearInterval(c),l.unsubscribe(),n())},l=o.subscribe({onRunFinalized:i,onRunFailed:i}),c=setInterval(()=>{o.isRunning||i()},500)})}}const rt=new io,un="mcp-apps",dn=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 pn=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}=be(),n=e.ref(null),a=e.ref(null),r=e.ref(!1),s=e.ref(null),i=e.ref(!0),l=e.ref({}),c=e.ref(null),f=e.ref({inProgress:!1,promise:null,resourceUri:null}),C=b=>{a.value?.contentWindow&&a.value.contentWindow.postMessage(b,"*")},u=(b,g)=>{C({jsonrpc:"2.0",id:b,result:g})},m=(b,g,w)=>{C({jsonrpc:"2.0",id:b,error:{code:g,message:w}})},d=(b,g)=>{C({jsonrpc:"2.0",method:b,params:g||{}})};e.watch([()=>t.agent,()=>t.content],([b,g])=>{i.value=!0,s.value=null,r.value=!1,l.value={},c.value=null;const{resourceUri:w,serverHash:p,serverId:k}=g;if(f.value.inProgress&&f.value.resourceUri===w){f.value.promise?.then(y=>{y&&(c.value=y,i.value=!1)}).catch(y=>{s.value=y instanceof Error?y:new Error(String(y)),i.value=!1});return}if(!b){s.value=new Error("No agent available to fetch resource"),i.value=!1;return}f.value.inProgress=!0,f.value.resourceUri=w;const v=(async()=>{try{const E=(await rt.enqueue(b,()=>b.runAgent({forwardedProps:{__proxiedMCPRequest:{serverHash:p,serverId:k,method:"resources/read",params:{uri:w}}}}))).result?.contents?.[0];if(!E)throw new Error("No resource content in response");return E}finally{f.value.inProgress=!1}})();f.value.promise=v,v.then(y=>{y&&(c.value=y,i.value=!1)}).catch(y=>{s.value=y instanceof Error?y:new Error(String(y)),i.value=!1})},{immediate:!0}),e.watch([i,c],([b,g],w,p)=>{if(b||!g)return;const k=n.value;if(!k)return;let v=!0,y=null,x=null,E=null;(async()=>{try{const A=document.createElement("iframe");E=A,A.style.width="100%",A.style.height="100px",A.style.border="none",A.style.backgroundColor="transparent",A.style.display="block",A.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms");const R=new Promise(z=>{x=I=>{I.source===A.contentWindow&&I.data?.method==="ui/notifications/sandbox-proxy-ready"&&(x&&(window.removeEventListener("message",x),x=null),z())},window.addEventListener("message",x)});if(!v){x&&(window.removeEventListener("message",x),x=null);return}const P=c.value?._meta?.ui?.csp?.resourceDomains;if(A.srcdoc=ro(P),a.value=A,k.appendChild(A),await R,!v)return;y=async z=>{if(z.source!==A.contentWindow)return;const I=z.data;if(!(!I||typeof I!="object"||I.jsonrpc!=="2.0")){if(lo(I))switch(I.method){case"ui/initialize":{u(I.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 M=t.agent;if(!M){u(I.id,{isError:!1});break}try{const U=I.params,G=U?.role||"user",T=U?.content?.filter(D=>D.type==="text"&&D.text).map(D=>D.text).join(`
|
|
32
|
+
`)||"";T&&M.addMessage({id:j.randomUUID(),role:G,content:T}),u(I.id,{isError:!1}),(U?.followUp??G==="user")&&T&&rt.enqueue(M,()=>o.value.runAgent({agent:M})).catch(D=>{console.error("[MCPAppsRenderer] ui/message agent run failed:",D)})}catch(U){console.error("[CopilotKit] MCPApps ui/message handler error:",U),u(I.id,{isError:!0})}break}case"ui/open-link":{const M=I.params?.url;if(!M){m(I.id,-32602,"Missing url parameter");break}window.open(M,"_blank","noopener,noreferrer"),u(I.id,{isError:!1});break}case"tools/call":{const{serverHash:M,serverId:U}=t.content,G=t.agent;if(!M){m(I.id,-32603,"No server hash available for proxying");break}if(!G){m(I.id,-32603,"No agent available for proxying");break}try{const T=await rt.enqueue(G,()=>G.runAgent({forwardedProps:{__proxiedMCPRequest:{serverHash:M,serverId:U,method:"tools/call",params:I.params}}}));u(I.id,T.result||{})}catch(T){m(I.id,-32603,String(T))}break}default:m(I.id,-32601,`Method not found: ${I.method}`)}if(co(I))switch(I.method){case"ui/notifications/initialized":v&&(r.value=!0);break;case"ui/notifications/size-changed":{const{width:M,height:U}=I.params||{};v&&(l.value={width:typeof M=="number"?M:void 0,height:typeof U=="number"?U:void 0});break}}}},window.addEventListener("message",y);const Q=g.text?g.text:g.blob?atob(g.blob):null;if(!Q)throw new Error("Resource has no text or blob content");d("ui/notifications/sandbox-resource-ready",{html:Q})}catch(A){v&&(s.value=A instanceof Error?A:new Error(String(A)))}})(),p(()=>{v=!1,x&&(window.removeEventListener("message",x),x=null),y&&window.removeEventListener("message",y),E&&(E.remove(),E=null),a.value=null})},{flush:"post"}),e.watch(l,b=>{a.value&&(b.width!==void 0&&(a.value.style.minWidth=`min(${b.width}px, 100%)`,a.value.style.width="100%"),b.height!==void 0&&(a.value.style.height=`${b.height}px`))},{deep:!0}),e.watch([r,()=>t.content.toolInput],([b,g])=>{b&&g&&d("ui/notifications/tool-input",{arguments:g})},{deep:!0}),e.watch([r,()=>t.content.result],([b,g])=>{b&&g&&d("ui/notifications/tool-result",g)},{deep:!0});const h=e.computed(()=>c.value?._meta?.ui?.prefersBorder!==!0?{}:{borderRadius:"8px",backgroundColor:"#f9f9f9",border:"1px solid #e0e0e0"});return e.onBeforeUnmount(()=>{const b=t.agent?.threadId||"default";rt.cancel(b)}),()=>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",...h.value}},[i.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 Ct(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 mn extends ue.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 Ut="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 fn(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?.[Ut])?o.content[Ut]:[]);return()=>n.value.length===0?t.loadingComponent?e.h(t.loadingComponent):e.h(mo):e.h(En,{activityType:"a2ui-surface",content:{operations:n.value},message:o.message,agent:o.agent,theme:t.theme,catalog:t.catalog})}})}}function ut(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 kt="render_a2ui";function fo(t,o){e.watch([()=>t.value,o],([n,a],r,s)=>{if(!a)return;const i=ut({name:kt,args:X.z.any(),render:({status:c,args:f})=>{if(c==="complete")return null;const C=f,u=C?.items;if(Array.isArray(u)&&u.length>0)return null;const m=C?.components;return Array.isArray(m)&&m.length>2?null:go(f)}}),l=n.propRenderToolCalls;n.setRenderToolCalls([...l.filter(c=>c.name!==kt),i]),s(()=>{const c=n.propRenderToolCalls;n.setRenderToolCalls(c.filter(f=>f.name!==kt)),xt.clear()})},{immediate:!0})}const xt=new Map;function go(t){const o=t,n=typeof o?.name=="string"?o.name:"__default__";let a=xt.get(n);a||(a={lastTime:0,lastTokens:0},xt.set(n,a));const r=Date.now();let s=a.lastTokens;if(r-a.lastTime>200){const u=JSON.stringify(t??{}).length;s=Math.round(u/4),a.lastTime=r,a.lastTokens=s}const i=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"}}),f=(u,m,d,h,b,g)=>e.h("div",{style:{width:`${u}px`,height:`${m}px`,borderRadius:"9999px",backgroundColor:d,...h!==void 0?{animation:`cpk-a2ui-fade 2.4s ease-in-out ${h}s infinite`}:{},...b!==void 0?{opacity:b}:{},...g?{transition:g}:{}}}),C=(u,m,d)=>e.h("div",{style:{display:"flex",alignItems:"center",gap:"6px",opacity:u?1:0,transition:`opacity 0.4s ${m}s`}},d);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()]),f(64,6,"#e4e4e7",void 0,i>=1?1:.4,"opacity 0.5s")]),e.h("div",{style:{display:"grid",gap:"7px"}},[C(i>=0,0,[f(36,7,"rgba(147,197,253,0.7)",0),f(80,7,"rgba(219,234,254,0.8)",.2)]),C(i>=0,.1,[c(),l(),f(100,7,"rgba(24,24,27,0.2)",.3)]),C(i>=1,.15,[c(),f(48,7,"rgba(24,24,27,0.15)",.1),f(40,7,"rgba(153,246,228,0.6)",.5),f(56,7,"rgba(147,197,253,0.6)",.3)]),C(i>=1,.2,[c(),l(),f(60,7,"rgba(24,24,27,0.15)",.4)]),C(i>=2,.25,[f(40,7,"rgba(153,246,228,0.5)",.2),l(),f(48,7,"rgba(24,24,27,0.15)",.6),f(64,7,"rgba(147,197,253,0.5)",.1)]),C(i>=2,.3,[f(36,7,"rgba(147,197,253,0.6)",.5),f(36,7,"rgba(24,24,27,0.12)",.7)]),C(i>=3,.35,[l(),f(44,7,"rgba(24,24,27,0.18)",.3),l(),f(56,7,"rgba(153,246,228,0.5)",.8),f(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(r){const s=e.ref({});let i=null;const l=n?n():void 0;function c(f){i&&i.dispose(),i=new dt.GenericBinder(f,t.schema),s.value=i.snapshot,i.subscribe(C=>{s.value=C})}return c(r.context),e.watch(()=>r.context,f=>{c(f)}),e.onUnmounted(()=>{i&&(i.dispose(),i=null)}),()=>o({props:s.value,buildChild:r.buildChild,context:r.context,state:l})}});return{name:t.name,schema:t.schema,render:a}}const Ve="8px",ho="16px",Qe="1px solid #ccc",pt="8px",gn=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"}},At=t=>{switch(t){case"start":return"flex-start";case"center":return"center";case"end":return"flex-end";case"stretch":return"stretch";default:return"stretch"}},Ze=()=>({margin:Ve,boxSizing:"border-box"}),vo=()=>({margin:Ve,padding:ho,border:Qe,borderRadius:pt,boxSizing:"border-box"});function Rt(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 ko=0;function mt(){return`a2ui-vue-${++ko}`}const bo=ke(ve.TextApi,({props:t})=>{const o=t.text??"",n={...Ze(),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(ve.ImageApi,({props:t})=>{const o=a=>a==="scaleDown"?"scale-down":a||"fill",n={...Ze(),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(ve.IconApi,({props:t})=>{const o=typeof t.name=="string"?t.name:t.name?.path,n={...Ze(),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(ve.VideoApi,({props:t})=>{const o={...Ze(),width:"100%",aspectRatio:"16/9"};return e.h("video",{src:t.url,controls:!0,style:o})}),xo=ke(ve.AudioPlayerApi,({props:t})=>{const o={...Ze(),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})])}),So=ke(ve.RowApi,({props:t,buildChild:o})=>e.h("div",{style:{display:"flex",flexDirection:"row",justifyContent:gn(t.justify),alignItems:At(t.align),width:"100%",margin:"0",padding:"0"}},Rt(t.children,o))),To=ke(ve.ColumnApi,({props:t,buildChild:o})=>e.h("div",{style:{display:"flex",flexDirection:"column",justifyContent:gn(t.justify),alignItems:At(t.align),width:"100%",margin:"0",padding:"0"}},Rt(t.children,o))),Io=ke(ve.ListApi,({props:t,buildChild:o})=>{const n=t.direction==="horizontal",a={display:"flex",flexDirection:n?"row":"column",alignItems:At(t.align),overflowX:n?"auto":"hidden",overflowY:n?"hidden":"auto",width:"100%",margin:"0",padding:"0"};return e.h("div",{style:a},Rt(t.children,o))}),Ao=ke(ve.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(ve.TabsApi,({props:t,buildChild:o,state:n})=>{const a=t.tabs||[];return e.h("div",{style:{display:"flex",flexDirection:"column",width:"100%",margin:Ve}},[e.h("div",{style:{display:"flex",borderBottom:"1px solid #ccc",marginBottom:"8px"}},a.map((r,s)=>{const i=typeof r.title=="string"?r.title:String(r.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"}},i)})),e.h("div",{style:{flex:"1"}},[a[n.selectedIndex.value]?.child?o(a[n.selectedIndex.value].child):null])])},()=>({selectedIndex:e.ref(0)})),Eo=ke(ve.DividerApi,({props:t})=>{const o=t.axis==="vertical",n={margin:Ve,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(ve.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(ve.ButtonApi,({props:t,buildChild:o})=>{const n={margin:Ve,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(ve.TextFieldApi,({props:t,state:o})=>{const n=o.id,a=t.variant==="longText",r=t.variant==="number"?"number":t.variant==="obscured"?"password":"text",s={padding:"8px",width:"100%",border:t.validationErrors&&t.validationErrors.length>0?"1px solid red":Qe,borderRadius:pt,boxSizing:"border-box"},i=t.validationErrors&&t.validationErrors.length>0;return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%",margin:Ve}},[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:r,style:s,value:t.value||"",onInput:l=>t.setValue(l.target.value)}),i?e.h("span",{style:{fontSize:"12px",color:"red"}},t.validationErrors[0]):null])},()=>({id:mt()})),No=ke(ve.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:Ve}},[e.h("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},[e.h("input",{id:n,type:"checkbox",checked:!!t.value,onChange:r=>t.setValue(r.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:mt()})),Vo=ke(ve.ChoicePickerApi,({props:t,context:o,state:n})=>{const a=Array.isArray(t.value)?t.value:[],r=t.variant==="mutuallyExclusive",s=l=>{if(r)t.setValue([l]);else{const c=a.includes(l)?a.filter(f=>f!==l):[...a,l];t.setValue(c)}},i=(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:Ve,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:Qe,borderRadius:pt}}):null,e.h("div",{style:{display:"flex",flexDirection:t.displayStyle==="chips"?"row":"column",flexWrap:t.displayStyle==="chips"?"wrap":"nowrap",gap:"8px"}},i.map((l,c)=>{const f=a.includes(l.value),C=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:f?"1px solid var(--a2ui-primary-color, #007bff)":Qe,backgroundColor:f?"var(--a2ui-primary-color, #007bff)":"#fff",color:f?"#fff":"inherit",cursor:"pointer",fontSize:"12px"}},C):e.h("label",{key:c,style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer"}},[e.h("input",{type:r?"radio":"checkbox",checked:f,onChange:()=>s(l.value),name:r?`choice-${o.componentModel.id}`:void 0}),e.h("span",{style:{fontSize:"14px"}},C)])}))])},()=>({filter:e.ref("")})),Fo=ke(ve.SliderApi,({props:t,state:o})=>{const n=o.id;return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",margin:Ve,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:mt()})),Do=ke(ve.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 r={padding:"8px",width:"100%",border:Qe,borderRadius:pt,boxSizing:"border-box"};return e.h("div",{style:{display:"flex",flexDirection:"column",gap:"4px",width:"100%",margin:Ve}},[t.label?e.h("label",{for:n,style:{fontSize:"14px",fontWeight:"bold"}},t.label):null,e.h("input",{id:n,type:a,style:r,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:mt()})),Oo=[bo,yo,wo,Co,xo,So,To,Io,Ao,Ro,Eo,Mo,$o,Bo,No,Vo,Fo,Do],We=new dt.Catalog("https://a2ui.org/specification/v0_9/basic_catalog.json",Oo,ve.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??We,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 r=!0;for(const i of We.components.keys())if(!o.components.has(i)){r=!1;break}const s=[];for(const i of o.components.keys())We.components.has(i)||s.push(i);a.push(`- ${o.id}`),r?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 i of s){const l=o.components.get(i);if(!l)continue;const c=It.zodToJsonSchema(l.schema);a.push(` - ${i}:`),a.push(` ${JSON.stringify(c,null,2).split(`
|
|
46
|
+
`).join(`
|
|
47
|
+
`)}`)}return a.join(`
|
|
48
|
+
`)}function Uo(t){const o=t??We,n={};for(const[a,r]of o.components){const s=It.zodToJsonSchema(r.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],([r,s,i],l,c)=>{if(!s)return;const f=r.a2uiAgents,C=r.addContext({description:"A2UI catalog capabilities: available catalog IDs and custom component definitions the client can render.",value:i,...f?{agentIds:f}:{}});c(()=>r.removeContext(C))},{immediate:!0});const a=e.computed(()=>o.includeSchema()?JSON.stringify(Uo(o.catalog())):null);e.watch([()=>t.value,o.enabled,a],([r,s,i],l,c)=>{if(!s||!i)return;const f=r.a2uiAgents,C=f?{agentIds:f}:{},u=[];u.push(r.addContext({description:Lo,value:i,...C})),u.push(r.addContext({description:"A2UI generation guidelines — protocol rules, tool arguments, path rules, data model format, and form/two-way-binding instructions.",value:j.A2UI_DEFAULT_GENERATION_GUIDELINES,...C})),u.push(r.addContext({description:"A2UI design guidelines — visual design rules, component hierarchy tips, and action handler patterns.",value:j.A2UI_DEFAULT_DESIGN_GUIDELINES,...C})),c(()=>{for(const m of u)r.removeContext(m)})},{immediate:!0})}function hn(t){const o=t.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi);return o?o.join(""):""}function vn(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 kn(){const t=e.inject(cn,e.computed(()=>[]));return e.computed(()=>t.value)}const bn="open-generative-ui",yn=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()}),wn=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 zt(){const t=await import("@jetbrains/websandbox");return t.default?.default??t.default}const Cn=e.defineComponent({name:"OpenGenerativeUIRenderer",props:{content:{type:Object,required:!0}},setup(t){const o=kn(),n=e.ref(null),a=e.ref(t.content),r=e.ref(t.content),s=e.ref(null),i=e.ref(null),l=e.ref(null),c=e.ref(!1),f=e.ref(!1),C=e.ref(0),u=e.ref(!1),m=e.ref([]),d=e.computed(()=>{const A={};for(const R of o.value)A[R.name]=R.handler;return A});e.watch(()=>t.content,A=>{if(r.value=A,jo(a.value,A)){s.value!==null&&(window.clearTimeout(s.value),s.value=null),a.value=A;return}s.value===null&&(s.value=window.setTimeout(()=>{a.value=r.value,s.value=null},1e3))},{immediate:!0}),e.onBeforeUnmount(()=>{s.value!==null&&window.clearTimeout(s.value)});const h=e.computed(()=>{if(!a.value.htmlComplete&&a.value.html?.length)return a.value.html.join("")}),b=e.computed(()=>h.value?vn(h.value):void 0),g=e.computed(()=>h.value?hn(h.value):""),w=e.computed(()=>a.value.htmlComplete&&a.value.html?.length?a.value.html.join(""):void 0),p=e.computed(()=>a.value.cssComplete?a.value.css:void 0),k=e.computed(()=>!!a.value.cssComplete&&!!b.value&&b.value.trim().length>0),v=e.computed(()=>!!w.value||k.value),y=e.computed(()=>`${a.value.initialHeight??200}px`),x=()=>{l.value&&(l.value.destroy(),l.value=null),f.value=!1},E=()=>{i.value&&(i.value.destroy(),i.value=null),c.value=!1,m.value=[],C.value=0,u.value=!1};e.watch([k,w,p,b,g,()=>n.value],async([A,R],P,Q)=>{if(!A||R||!n.value||l.value)return;let z=!1;try{const I=await zt();if(z||!n.value)return;const M=I.create({},{frameContainer:n.value,frameContent:"<head></head><body></body>",allowAdditionalAttributes:""});l.value=M,M.iframe.setAttribute("data-testid","open-generative-ui-preview-sandbox"),M.iframe.style.width="100%",M.iframe.style.height="100%",M.iframe.style.border="none",M.iframe.style.backgroundColor="transparent",M.promise.then(()=>{z||!l.value||(f.value=!0,M.run("var s=document.createElement('style');s.textContent='html, body { overflow: hidden !important; }';document.head.appendChild(s);"))})}catch(I){console.error("[OpenGenerativeUI] Failed to load sandbox module:",I)}Q(()=>{z=!0})},{immediate:!0}),e.watch([b,g,p,f],([A,R,P,Q])=>{if(!l.value||!Q)return;const z=[];P&&z.push(`<style>${P}</style>`),R&&z.push(R),z.length&&l.value.run(`document.head.innerHTML = ${JSON.stringify(z.join(""))}`),A&&l.value.run(`document.body.innerHTML = ${JSON.stringify(A)}`)},{immediate:!0}),e.watch([w,p,d,()=>n.value],async([A,R,P],Q,z)=>{if(E(),!A||!n.value)return;x();let I=!1;try{const M=await zt();if(I||!n.value)return;const U=_o(A),G=R?Ho(U,R):U,T=M.create(P,{frameContainer:n.value,frameContent:G,allowAdditionalAttributes:""});i.value=T,T.iframe.setAttribute("data-testid","open-generative-ui-final-sandbox"),T.iframe.style.width="100%",T.iframe.style.height="100%",T.iframe.style.border="none",T.iframe.style.backgroundColor="transparent",T.promise.then(()=>{if(I||!i.value)return;c.value=!0,T.run("var s=document.createElement('style');s.textContent='html, body { overflow: hidden !important; }';document.head.appendChild(s);");const $=a.value.jsFunctions;$&&!u.value&&(u.value=!0,m.value.unshift($));const D=a.value.jsExpressions;if(D?.length){const re=C.value;re<D.length&&(m.value.push(...D.slice(re)),C.value=D.length)}const q=[...m.value];m.value=[];for(const re of q)T.run(re)})}catch(M){console.error("[OpenGenerativeUI] Failed to load sandbox module:",M)}z(()=>{I=!0})},{immediate:!0}),e.watch(()=>a.value.jsFunctions,A=>{!A||u.value||(u.value=!0,c.value&&i.value?i.value.run(A):m.value.push(A))}),e.watch(()=>a.value.jsExpressions,A=>{if(!A?.length)return;const R=C.value;if(R>=A.length)return;const P=A.slice(R);if(C.value=A.length,c.value&&i.value)for(const Q of P)i.value.run(Q);else m.value.push(...P)},{deep:!0});const B=e.computed(()=>a.value.generating!==!1);return e.watch([k,w],([A,R])=>{R&&x(),A||x()},{immediate:!0}),e.onBeforeUnmount(()=>{s.value!==null&&window.clearTimeout(s.value),x(),E()}),()=>e.h("div",{ref:n,"data-testid":"open-generative-ui-renderer",style:{position:"relative",width:"100%",height:y.value,borderRadius:"8px",backgroundColor:v.value?"transparent":"#f5f5f5",border:v.value?"none":"1px solid #e0e0e0",overflow:"hidden",display:v.value?"block":"flex",alignItems:v.value?void 0:"center",justifyContent:v.value?void 0:"center"}},[v.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) } }")]),B.value?e.h("div",{"data-testid":"open-generative-ui-progress-overlay",style:{position:"absolute",inset:0,backgroundColor:"rgba(255,255,255,0.45)"}}):null])}}),xn=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(Cn,{content:t.content})}}),Sn=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,r)=>{if(!n?.length||t.status===ue.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);r(()=>window.clearInterval(s))},{immediate:!0}),()=>{if(t.status===ue.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)}}}),Et=Symbol("LicenseContext");function Tn(){return e.ref(j.createLicenseContextValue(null))}const Wo={style:{display:"flex",gap:"8px",alignItems:"center"}},qo=["href"],Ko=52,jt="--copilotkit-license-banner-offset",it=e.defineComponent({__name:"LicenseWarningBanner",props:{type:{},featureName:{default:void 0},expiryDate:{default:void 0},graceRemaining:{default:void 0}},emits:["dismiss"],setup(t,{emit:o}){const n=t,a=o,r=e.computed(()=>{switch(n.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 "${n.featureName??""}" feature requires a CopilotKit license.`,actionLabel:"Get a license",actionUrl:"https://copilotkit.ai/pricing"};case"expiring":{const u=n.graceRemaining;return{severity:"warning",message:`Your CopilotKit license expires in ${u} ${u===1?"day":"days"}. Please renew.`,actionLabel:"Renew",actionUrl:"https://dashboard.operations.copilotkit.ai"}}case"expired":return{severity:"critical",message:`Your CopilotKit license expired${n.expiryDate?` on ${n.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}}),s={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(r.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"}}}),l=e.computed(()=>({...s,...i.value})),c=e.getCurrentInstance(),f=e.computed(()=>typeof(c?.vnode.props??{}).onDismiss=="function");function C(){a("dismiss")}return e.onMounted(()=>{typeof document>"u"||document.documentElement.style.setProperty(jt,`${Ko}px`)}),e.onBeforeUnmount(()=>{typeof document>"u"||document.documentElement.style.removeProperty(jt)}),(u,m)=>r.value?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(l.value),"data-testid":"copilot-license-banner"},[e.createElementVNode("span",null,e.toDisplayString(r.value.message),1),e.createElementVNode("div",Wo,[e.createElementVNode("a",{href:r.value.actionUrl,target:"_blank",rel:"noopener noreferrer",style:{fontWeight:600,textDecoration:"underline",color:"inherit"}},e.toDisplayString(r.value.actionLabel),9,qo),f.value?(e.openBlock(),e.createElementBlock("button",{key:0,style:{background:"none",border:"none",cursor:"pointer",color:"inherit",fontSize:"16px"},onClick:C}," × ")):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0)}}),_t="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.",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:{},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],default:!1},onError:{},a2ui:{default:void 0},inspectorDefaultAnchor:{},debug:{type:[Boolean,Object]}},setup(t){const o={},n=t,a=e.ref(!1),r=()=>{if(n.showDevConsole===!0){a.value=!0;return}if(n.showDevConsole==="auto"){if(typeof window>"u"){a.value=!1;return}const F=new Set(["localhost","127.0.0.1"]);a.value=F.has(window.location.hostname);return}a.value=!1};e.watch(()=>n.showDevConsole,r,{immediate:!0});const s=n.frontendTools,i=n.humanInTheLoop,l=n.renderCustomMessages,c=n.renderActivityMessages,f=n.openGenerativeUI?.sandboxFunctions;e.watch(()=>n.frontendTools,F=>{F!==s&&console.error(Jo)}),e.watch(()=>n.humanInTheLoop,F=>{F!==i&&console.error(Qo)}),e.watch(()=>n.renderCustomMessages,F=>{F!==l&&console.error(Xo)}),e.watch(()=>n.renderActivityMessages,F=>{F!==c&&console.error(Yo)}),e.watch(()=>n.openGenerativeUI?.sandboxFunctions,F=>{F!==f&&console.error(Zo)});const C=e.computed(()=>n.publicApiKey??n.publicLicenseKey),u=e.computed(()=>({...n.agents__unsafe_dev_only,...n.selfManagedAgents})),m=e.computed(()=>Object.keys(u.value).length>0),d=e.computed(()=>typeof n.headers=="function"?n.headers():n.headers),h=e.computed(()=>{const F=d.value;return!C.value||F[_t]?F:{...F,[_t]:C.value}}),b=e.computed(()=>n.runtimeUrl??(C.value?Go:void 0));e.watch([b,C,m],([F,te,ee])=>{if(F||te||ee)return;const Se="Missing required prop: 'runtimeUrl' or 'publicApiKey' or 'publicLicenseKey'";if(process.env.NODE_ENV==="production")throw new Error(Se);console.warn(Se)},{immediate:!0});const g=e.computed(()=>{const F=[],te=[];for(const ee of n.humanInTheLoop)F.push({name:ee.name,description:ee.description,parameters:ee.parameters,followUp:ee.followUp,...ee.agentId&&{agentId:ee.agentId},handler:async()=>{console.warn(`Human-in-the-loop tool '${ee.name}' called but no interactive handler is set up.`)}}),ee.render&&te.push({name:ee.name,args:ee.parameters??X.z.any(),render:ee.render,...ee.agentId&&{agentId:ee.agentId}});return{tools:F,renderToolCalls:te}}),w=e.computed(()=>{const F=[];for(const te of n.frontendTools)F.push(te);for(const te of z.value)F.push(te);return F.push(...g.value.tools),F}),p=e.computed(()=>{const F=[...n.renderToolCalls??[]];for(const te of[...n.frontendTools,...z.value])if(te.render){const ee=te.parameters??(te.name==="*"?X.z.any():void 0);ee&&F.push({name:te.name,args:ee,render:te.render})}return F.push(...g.value.renderToolCalls),F}),k=e.computed(()=>n.renderCustomMessages??[]),v=e.ref(!1),y=e.ref(!1),x=e.ref(void 0),E=e.computed(()=>y.value||!!n.openGenerativeUI),B=e.computed(()=>!!n.a2ui?.catalog),A=e.computed(()=>v.value||B.value),R=e.computed(()=>B.value?{...n.properties,a2uiCatalogAvailable:!0}:n.properties),P=e.computed(()=>n.openGenerativeUI?.sandboxFunctions??[]),Q=(F,te)=>It.zodToJsonSchema(F,te),z=e.computed(()=>E.value?[{name:"generateSandboxedUi",description:ta,parameters:wn,handler:async()=>"UI generated",followUp:!0,render:Sn}]:[]),I=e.computed(()=>{const F=[{activityType:un,content:dn,render:pn}];return E.value&&F.push({activityType:bn,content:yn,render:xn}),A.value&&F.unshift(fn({theme:n.a2ui?.theme??o,catalog:n.a2ui?.catalog,loadingComponent:n.a2ui?.loadingComponent})),F}),M=e.computed(()=>[...n.renderActivityMessages??[],...I.value]),U=F=>{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.`),F.setDefaultThrottleMs(n.defaultThrottleMs)},G=()=>{const F=new mn({runtimeUrl:b.value,runtimeTransport:n.useSingleEndpoint===!0?"single":n.useSingleEndpoint===!1?"rest":"auto",headers:h.value,credentials:n.credentials,properties:R.value,agents__unsafe_dev_only:u.value,tools:w.value,renderToolCalls:p.value,renderActivityMessages:M.value,renderCustomMessages:k.value,debug:n.debug});return U(F),F},T=e.shallowRef(G()),$=e.ref(!1),D=e.ref(new Set);e.watch(T,(F,te,ee)=>{const Se=F.subscribe({onToolExecutionStart:({toolCallId:me})=>{D.value=new Set(D.value).add(me)},onToolExecutionEnd:({toolCallId:me})=>{setTimeout(()=>{const Ae=new Set(D.value);Ae.delete(me),D.value=Ae,e.triggerRef(T)},0)}}),Ie=F.subscribe({onRenderToolCallsChanged:()=>{e.triggerRef(T)}}),fe=F.subscribe({onRenderCustomMessagesChanged:()=>{e.triggerRef(T)}}),se=F.subscribe({onRuntimeConnectionStatusChanged:()=>{v.value=F.a2uiEnabled,y.value=F.openGenerativeUIEnabled,x.value=F.licenseStatus,e.triggerRef(T)}}),ie=F.subscribe({onError:me=>{n.onError?.({error:me.error,code:me.code,context:me.context})}});ee(()=>{Se.unsubscribe(),Ie.unsubscribe(),fe.unsubscribe(),se.unsubscribe(),ie.unsubscribe()})},{immediate:!0}),e.watch([w],([F])=>{$.value&&T.value.setTools(F)}),e.watch([p],([F])=>{$.value&&T.value.setRenderToolCalls(F)}),e.watch([k],([F])=>{$.value&&(T.value.setRenderCustomMessages(F),e.triggerRef(T))}),e.watch([M],([F])=>{$.value&&(T.value.setRenderActivityMessages(F),e.triggerRef(T))});function q(){T.value.setRuntimeUrl(b.value),T.value.setRuntimeTransport(n.useSingleEndpoint===!0?"single":n.useSingleEndpoint===!1?"rest":"auto"),T.value.setHeaders(h.value),T.value.setCredentials(n.credentials),T.value.setProperties(R.value),T.value.setAgents__unsafe_dev_only(u.value),T.value.setDebug(n.debug),U(T.value)}e.watch([()=>b.value,()=>h.value,()=>n.credentials,()=>R.value,()=>u.value,()=>n.useSingleEndpoint,()=>n.debug],()=>{$.value&&q()}),e.watch(()=>n.defaultThrottleMs,()=>{$.value&&(U(T.value),e.triggerRef(T))}),e.onMounted(()=>{q(),v.value=T.value.a2uiEnabled,y.value=T.value.openGenerativeUIEnabled,x.value=T.value.licenseStatus,$.value=!0});const re=e.computed(()=>n.a2ui?.theme),V=e.computed(()=>n.a2ui?.catalog),_=e.computed(()=>n.a2ui?.loadingComponent),H=e.computed(()=>n.a2ui?.includeSchema??!0);fo(T,()=>A.value),zo(T,{enabled:()=>A.value,catalog:()=>n.a2ui?.catalog,includeSchema:()=>n.a2ui?.includeSchema??!0});const W=e.ref([]);e.watch([E,P,()=>n.openGenerativeUI?.designSkill],([F,te,ee],Se,Ie)=>{if(!F)return;const fe=[];if(fe.push(T.value.addContext({description:"Design guidelines for the generateSandboxedUi tool. Follow these when building UI.",value:ee??ea})),te.length>0){const se=JSON.stringify(te.map(ie=>({name:ie.name,description:ie.description,parameters:j.schemaToJsonSchema(ie.parameters,{zodToJsonSchema:Q})})));fe.push(T.value.addContext({description:"Sandbox functions available in generated sandboxed UI code. Call via Websandbox.connection.remote.<functionName>(args).",value:se}))}W.value=fe,Ie(()=>{for(const se of fe)T.value.removeContext(se)})},{immediate:!0}),e.provide(ln,{copilotkit:T,executingToolCallIds:D,a2uiTheme:re,a2uiCatalog:V,a2uiLoadingComponent:_,a2uiIncludeSchema:H}),e.provide(cn,P);const ae=e.computed(()=>j.createLicenseContextValue(x.value));e.provide(Et,ae);const de=e.computed(()=>x.value==="none"&&!C.value),pe=e.computed(()=>x.value==="expired"),ge=e.computed(()=>x.value==="invalid"),ye=e.computed(()=>x.value==="expiring");return(F,te)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(F.$slots,"default"),a.value?(e.openBlock(),e.createBlock(rn,{key:0,core:T.value,"default-anchor":n.inspectorDefaultAnchor},null,8,["core","default-anchor"])):e.createCommentVNode("",!0),de.value?(e.openBlock(),e.createBlock(it,{key:1,type:"no_license"})):e.createCommentVNode("",!0),pe.value?(e.openBlock(),e.createBlock(it,{key:2,type:"expired"})):e.createCommentVNode("",!0),ge.value?(e.openBlock(),e.createBlock(it,{key:3,type:"invalid"})):e.createCommentVNode("",!0),ye.value?(e.openBlock(),e.createBlock(it,{key:4,type:"expiring"})):e.createCommentVNode("",!0)],64))}}),$e={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 r of n)if(t[r]!==o[r])return!1;return!0}function Ht(t){return t!==null&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"}function In(t){const o=e.shallowRef(e.toValue(t));return e.watch(()=>e.toValue(t),n=>{const a=o.value;a!==n&&(Ht(a)&&Ht(n)&&oa(a,n)||(o.value=n))},{immediate:!0}),o}const An="(max-width: 767px)";function Wt(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia(An).matches}const ft=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(wt,null),a=e.computed(()=>n?.value??null),r=e.computed(()=>o.threadId!==void 0&&o.hasExplicitThreadId!==!1),s=e.ref(null),i=In(e.computed(()=>o.labels)),l=e.computed(()=>({...$e,...a.value?.labels,...i.value})),c=e.computed(()=>o.agentId??a.value?.agentId??j.DEFAULT_AGENT_ID),f=j.randomUUID(),C=e.computed(()=>r.value?o.threadId:s.value?s.value.threadId:o.threadId?o.threadId:a.value?.threadId?a.value.threadId:f),u=e.computed(()=>r.value?!0:(s.value?s.value.explicit:o.hasExplicitThreadId!==void 0?o.hasExplicitThreadId:!!o.threadId)||!!a.value?.hasExplicitThreadId),m=e.computed(()=>o.isModalDefaultOpen!==void 0),d=e.computed(()=>o.isModalDefaultOpen??!0),h=e.ref(a.value?.isModalOpen??d.value);function b(I){h.value=I}const g=e.computed(()=>m.value?h.value:a.value?.isModalOpen),w=e.computed(()=>m.value?b:a.value?.setModalOpen);function p(I,M){if(r.value){console.warn("[CopilotKit] Ignoring setActiveThreadId(): threadId is controlled via the `threadId` prop on CopilotChatConfigurationProvider.");return}s.value={threadId:I,explicit:M?.explicit??!0}}function k(){if(r.value){console.warn("[CopilotKit] Ignoring startNewThread(): threadId is controlled via the `threadId` prop on CopilotChatConfigurationProvider.");return}s.value={threadId:j.randomUUID(),explicit:!1}}const v=e.ref(!1),y=e.ref(0);function x(I){v.value=I,I&&Wt()&&w.value?.(!1)}function E(){return y.value+=1,()=>{y.value=Math.max(0,y.value-1)}}const B=e.computed(()=>a.value?a.value.drawerOpen:v.value),A=e.computed(()=>a.value?a.value.setDrawerOpen:x),R=e.computed(()=>a.value?a.value.drawerRegistered:y.value>0),P=e.computed(()=>a.value?a.value.registerDrawer:E),Q=e.computed(()=>{const I=w.value;if(I)return M=>{M&&Wt()&&A.value?.(!1),I(M)}}),z=e.computed(()=>({labels:l.value,agentId:c.value,threadId:C.value,hasExplicitThreadId:u.value,isModalOpen:g.value,setModalOpen:Q.value,drawerOpen:B.value,setDrawerOpen:A.value,drawerRegistered:R.value,registerDrawer:P.value,setActiveThreadId:p,startNewThread:k}));return e.provide(wt,z),(I,M)=>e.renderSlot(I.$slots,"default")}});function et(){const t=e.inject(Et,Tn(),!0);return e.computed(()=>t.value)}function he(){const t=e.inject(wt,void 0);return e.computed(()=>t?.value??null)}const Rn=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 r(s,i){const l=i||t.basePath;return e.h(Rn,{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 i=t.surface.catalog.components.get(s.type);if(!i)return e.h("div",{style:{color:"red"}},`Unknown component: ${s.type}`);const l=new dt.ComponentContext(t.surface,t.id,t.basePath);return e.h(i.render,{context:l,buildChild:r})}}}),aa=e.defineComponent({name:"A2uiSurface",props:{surface:{type:Object,required:!0}},setup(t){return()=>e.h(Rn,{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"},qt="default",En=e.defineComponent({__name:"A2UISurfaceActivityRenderer",props:{activityType:{},content:{},message:{},agent:{},theme:{},catalog:{}},setup(t){const o=t,{copilotkit:n}=be(),a=e.shallowRef(null),r=e.ref(0),s=e.ref(null);let i="";function l(){if(!a.value){const m=o.catalog??We;a.value=new dt.MessageProcessor([m],d=>{c(d)})}return a.value}async function c(m){if(o.agent)try{n.value.setProperties({...n.value.properties??{},a2uiAction:m}),await n.value.runAgent({agent:o.agent})}finally{const{a2uiAction:d,...h}=n.value.properties??{};n.value.setProperties(h)}}function f(m){if(!m?.length)return;const d=JSON.stringify(m);if(d===i)return;i=d;const h=l();try{const b=new Map;for(const g of m){const w=Ct(g)??qt;b.has(w)||b.set(w,[]),b.get(w).push(g)}for(const[g,w]of b){const k=h.model.getSurface(g)?w.filter(v=>!v?.createSurface):w;h.processMessages(k)}s.value=null}catch(b){console.warn("[A2UI Vue] processMessages error:",b),s.value=b instanceof Error?b.message:String(b)}r.value++}e.watch(()=>[o.content.operations,o.theme,o.catalog,o.agent],()=>{f(o.content.operations)},{deep:!0,immediate:!0}),e.onBeforeUnmount(()=>{a.value=null,i=""});const C=e.computed(()=>(o.content.operations??[]).length>0),u=e.computed(()=>{if(r.value,!a.value)return[];const m=[],d=new Map;for(const h of o.content.operations??[]){const b=Ct(h)??qt;d.has(b)||d.set(b,[]),d.get(b).push(h)}for(const[h]of d){const b=a.value.model.getSurface(h);b&&m.push({surfaceId:h,surface:b})}return m});return(m,d)=>C.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(u.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.surfaceId,class:"cpk:flex cpk:w-full cpk:flex-none cpk:flex-col cpk:gap-4","data-surface-id":h.surfaceId},[e.createElementVNode("div",ca,[e.createVNode(e.unref(aa),{surface:h.surface},null,8,["surface"])])],8,la))),128))]))],8,sa)):e.createCommentVNode("",!0)}}),Mn=e.defineComponent({__name:"CopilotChatToolCallsView",props:{message:{},messages:{default:()=>[]}},setup(t){const o=t,{copilotkit:n,executingToolCallIds:a}=be(),r=he();function s(m){return o.messages.find(d=>d.role==="tool"&&d.toolCallId===m)}function i(m){return`tool-call-${m}`}function l(m){return a.value.has(m)}function c(m){return s(m)?.content}function f(m){const d=s(m.id),h=j.partialJSONParse(m.function.arguments);if(d)return{name:m.function.name,args:h,status:ue.ToolCallStatus.Complete,result:d.content,toolCall:m,toolMessage:d};const b=l(m.id);return{name:m.function.name,args:h,status:b?ue.ToolCallStatus.Executing:ue.ToolCallStatus.InProgress,result:void 0,toolCall:m,toolMessage:void 0}}function C(m){const d=s(m.id),h=j.partialJSONParse(m.function.arguments);return d?{name:m.function.name,toolCallId:m.id,args:h,status:ue.ToolCallStatus.Complete,result:d.content}:l(m.id)?{name:m.function.name,toolCallId:m.id,args:h,status:ue.ToolCallStatus.Executing,result:void 0}:{name:m.function.name,toolCallId:m.id,args:h&&typeof h=="object"?h:{},status:ue.ToolCallStatus.InProgress,result:void 0}}function u(m){const d=n.value.renderToolCalls,h=r.value?.agentId??j.DEFAULT_AGENT_ID,b=d.filter(g=>g.name===m.function.name);return b.find(g=>g.agentId===h)??b.find(g=>!g.agentId)??b[0]??d.find(g=>g.name==="*")}return(m,d)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.message.toolCalls??[],h=>e.renderSlot(m.$slots,i(h.function.name),e.mergeProps({key:h.id,ref_for:!0},f(h)),()=>[e.renderSlot(m.$slots,"tool-call",e.mergeProps({ref_for:!0},f(h)),()=>[u(h)?e.withMemo([h.id,h.function.arguments,c(h.id),l(h.id),u(h)?.render],()=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u(h)?.render),e.mergeProps({key:0,ref_for:!0},C(h)),null,16)),d,0):e.createCommentVNode("",!0)])])),128))}});let Kt=!1;function $n(){e.onMounted(()=>{if(Kt||typeof document>"u")return;Kt=!0,import("katex/dist/katex.min.css").catch(()=>{console.warn("[CopilotKit] Failed to load katex styles — math content may render without formatting")})})}const ua=["data-message-id"],da={class:"cpk:w-full cpk:bg-transparent cpk:flex cpk:items-center cpk:-ml-[5px] cpk:-mt-[0px]"},pa={class:"cpk:flex cpk:items-center cpk:gap-1"},ma=["aria-label","title"],fa=["aria-label","title"],ga=["aria-label","title"],ha=["aria-label","title"],va=["aria-label","title"],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",Jt="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",lt="cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted/40",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",Bn=e.defineComponent({__name:"CopilotChatAssistantMessage",props:{message:{},messages:{default:()=>[]},isRunning:{type:Boolean,default:!1},toolbarVisible:{type:Boolean,default:!0}},emits:["thumbs-up","thumbs-down","read-aloud","regenerate"],setup(t,{emit:o}){$n();const n=t,a=o,r=he(),s=e.computed(()=>r.value?.labels??$e),i=e.getCurrentInstance(),l=e.ref(!1);let c=null;const f=e.computed(()=>i?.vnode.props??{}),C=["cpk:inline-flex cpk:h-8 cpk:w-8 cpk:items-center cpk:justify-center cpk:rounded-md cpk:p-0","cpk:cursor-pointer cpk:text-[rgb(93,93,93)] cpk:transition-colors cpk:hover:bg-[#E8E8E8]","cpk:hover:text-[rgb(93,93,93)] cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]","cpk:dark:hover:text-[rgb(243,243,243)] cpk:disabled:pointer-events-none cpk:disabled:opacity-50"].join(" ");function u(V,_){try{const W=new URL(V,"https://copilotkit.local").pathname.split("/").filter(Boolean).pop();if(W)return decodeURIComponent(W)}catch{return _}return _}function m(V,_){if(typeof document>"u")return;const H=document.createElement("a");H.href=V,H.download=_,H.rel="noopener noreferrer",document.body.appendChild(H),H.click(),document.body.removeChild(H)}function d(V){const _=Array.from(V.querySelectorAll("thead th")).map(W=>(W.textContent??"").trim()),H=Array.from(V.querySelectorAll("tbody tr")).map(W=>Array.from(W.querySelectorAll("td")).map(ae=>(ae.textContent??"").trim()));return{headers:_,rows:H}}function h(V,_){const H=ae=>{const de=ae.includes(_)||ae.includes('"')||ae.includes(`
|
|
67
|
+
`),pe=ae.replace(/"/g,'""');return de?`"${pe}"`:pe},W=[];V.headers.length>0&&W.push(V.headers.map(H).join(_));for(const ae of V.rows)W.push(ae.map(H).join(_));return W.join(`
|
|
68
|
+
`)}function b(V){if(V.headers.length===0)return V.rows.map(W=>`| ${W.join(" | ")} |`).join(`
|
|
69
|
+
`);const _=`| ${V.headers.map(()=>"---").join(" | ")} |`,H=V.rows.map(W=>`| ${W.join(" | ")} |`);return[`| ${V.headers.join(" | ")} |`,_,...H].join(`
|
|
70
|
+
`)}function g(V,_,H){if(typeof document>"u")return;const W=new Blob([V],{type:H}),ae=URL.createObjectURL(W);m(ae,_),URL.revokeObjectURL(ae)}const w=e.defineComponent({name:"CopilotMarkdownImage",inheritAttrs:!1,props:{src:{type:String,default:""},alt:{type:String,default:""}},setup(V,{attrs:_}){async function H(){if(!V.src)return;const W=u(V.src,"image");try{const ae=await fetch(V.src);if(!ae.ok)throw new Error("Failed to fetch image");const de=await ae.blob(),pe=URL.createObjectURL(de);m(pe,W),URL.revokeObjectURL(pe)}catch{m(V.src,W)}}return()=>{const W={..._,src:V.src,alt:V.alt,class:["cpk:max-w-full cpk:rounded-lg",_.class].filter(Boolean).join(" "),"data-streamdown":"image"};return delete W.className,e.h("div",{class:"cpk:group cpk:relative cpk:my-4 cpk:inline-block","data-streamdown":"image-wrapper"},[e.h("img",W),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:H},[e.h(oe.Download,{class:"cpk:size-[14px]"})])])}}}),p=e.defineComponent({name:"CopilotMarkdownTable",inheritAttrs:!1,setup(V,{attrs:_,slots:H}){const W=e.ref(null),ae=e.ref(!1),de=e.ref(!1),pe=e.ref(!1);let ge=null;const ye=()=>{ae.value=!1,de.value=!1},F=()=>{ge&&clearTimeout(ge),pe.value=!0,ge=setTimeout(()=>{pe.value=!1,ge=null},2e3)},te=()=>W.value?W.value.querySelector("table"):null,ee=()=>{const se=te();return se?d(se):null},Se=async se=>{const ie=ee();if(!ie)return;const Ae=h(ie,se==="csv"?",":" ");if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(Ae)}catch{return}ye(),F()},Ie=se=>{const ie=ee();ie&&(se==="csv"?g(h(ie,","),"table.csv","text/csv"):g(b(ie),"table.md","text/markdown"),ye())},fe=se=>{if(!W.value)return;const ie=se.target;ie&&!W.value.contains(ie)&&ye()};return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("mousedown",fe)}),e.onBeforeUnmount(()=>{ge&&clearTimeout(ge),typeof document<"u"&&document.removeEventListener("mousedown",fe)}),()=>{const se={..._,class:["cpk:w-full cpk:border-collapse cpk:border cpk:border-border",_.class].filter(Boolean).join(" "),"data-streamdown":"table"};return delete se.className,e.h("div",{ref:W,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:Gt,title:"Copy table",onClick:()=>{ae.value=!ae.value,de.value=!1}},[pe.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})]),ae.value?e.h("div",{class:Jt},[e.h("button",{type:"button",class:lt,title:"Copy table as CSV",onClick:()=>Se("csv")},"CSV"),e.h("button",{type:"button",class:lt,title:"Copy table as TSV",onClick:()=>Se("tsv")},"TSV")]):null]),e.h("div",{class:"cpk:relative"},[e.h("button",{type:"button",class:Gt,title:"Download table",onClick:()=>{de.value=!de.value,ae.value=!1}},[e.h(oe.Download,{class:"cpk:size-[14px]"})]),de.value?e.h("div",{class:Jt},[e.h("button",{type:"button",class:lt,title:"Download table as CSV",onClick:()=>Ie("csv")},"CSV"),e.h("button",{type:"button",class:lt,title:"Download table as Markdown",onClick:()=>Ie("markdown")},"Markdown")]):null])]),e.h("div",{class:"cpk:overflow-x-auto"},[e.h("table",se,H.default?H.default():[])])])}}}),k={javascript:"js",js:"js",typescript:"ts",ts:"ts",json:"json",vue:"vue",html:"html",css:"css",md:"md",markdown:"md",sh:"sh",bash:"sh",py:"py",python:"py",go:"go",rust:"rs",rs:"rs"},v=e.defineComponent({name:"CopilotCodeBlockCopyAction",props:{code:{type:String,default:""}},setup(V){const _=e.ref(!1);let H=null;const W=async()=>{if(V.code){if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(V.code)}catch{return}H&&clearTimeout(H),_.value=!0,H=setTimeout(()=>{_.value=!1,H=null},2e3)}};return e.onBeforeUnmount(()=>{H&&clearTimeout(H)}),()=>e.h("button",{type:"button",class:Qt,title:"Copy Code","data-streamdown":"code-block-copy-button",onClick:W},[_.value?e.h(oe.Check,{class:"cpk:size-[14px]"}):e.h(oe.Copy,{class:"cpk:size-[14px]"})])}}),y=e.defineComponent({name:"CopilotCodeBlockDownloadAction",props:{code:{type:String,default:""},language:{type:String,default:""}},setup(V){const _=()=>{if(!V.code)return;const H=k[V.language.toLowerCase()]??"txt";g(V.code,`file.${H}`,"text/plain")};return()=>e.h("button",{type:"button",class:Qt,title:"Download file","data-streamdown":"code-block-download-button",onClick:_},[e.h(oe.Download,{class:"cpk:size-[14px]"})])}}),x={img:w,table:p};function E(V){return V?typeof V=="string"?V:Array.isArray(V)?V.map(H=>H&&typeof H=="object"&&"type"in H&&H.type==="text"&&typeof H.text=="string"?H.text:"").filter(H=>H.length>0).join(`
|
|
71
|
+
`):"":""}const B=e.computed(()=>E(n.message.content)),A=e.computed(()=>B.value.trim().length>0);function R(V){const _=f.value[V];return Array.isArray(_)?_.length>0:!!_}const P=e.computed(()=>R("onThumbsUp")),Q=e.computed(()=>R("onThumbsDown")),z=e.computed(()=>R("onReadAloud")),I=e.computed(()=>R("onRegenerate")),M=e.computed(()=>n.messages[n.messages.length-1]?.id===n.message.id),U=e.computed(()=>n.toolbarVisible&&A.value&&!(n.isRunning&&M.value));function G(){c&&clearTimeout(c),l.value=!0,c=setTimeout(()=>{l.value=!1,c=null},2e3)}async function T(){const V=B.value;if(V&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(V),G()}catch(_){console.error("Failed to copy to clipboard:",_)}}function $(){a("thumbs-up",n.message)}function D(){a("thumbs-down",n.message)}function q(){a("read-aloud",n.message)}function re(){a("regenerate",n.message)}return e.onBeforeUnmount(()=>{c&&clearTimeout(c)}),(V,_)=>e.renderSlot(V.$slots,"layout",{message:t.message,content:B.value,isRunning:t.isRunning,toolbarVisible:t.toolbarVisible,shouldShowToolbar:U.value,messageRenderer:V.$slots["message-renderer"]??(()=>null),toolbar:V.$slots.toolbar??(()=>null),copyButton:V.$slots["copy-button"]??(()=>null),thumbsUpButton:V.$slots["thumbs-up-button"]??(()=>null),thumbsDownButton:V.$slots["thumbs-down-button"]??(()=>null),readAloudButton:V.$slots["read-aloud-button"]??(()=>null),regenerateButton:V.$slots["regenerate-button"]??(()=>null),toolCallsView:V.$slots["tool-calls-view"]??(()=>null),onCopy:T,onThumbsUp:$,onThumbsDown:D,onReadAloud:q,onRegenerate:re},()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-assistant-message",class:"cpk:prose cpk:max-w-full cpk:break-words cpk:dark:prose-invert","data-message-id":t.message.id},V.$attrs),[e.renderSlot(V.$slots,"message-renderer",{message:t.message,content:B.value},()=>[A.value?(e.openBlock(),e.createBlock(e.unref(sn.StreamMarkdown),{key:0,class:"copilot-chat-assistant-markdown",content:B.value,components:x,"code-block-actions":[e.unref(y),e.unref(v)],"code-block-show-line-numbers":!1,"code-block-hide-copy":!0,"code-block-hide-download":!0,"allowed-link-prefixes":["https://","http://","#","/","./","../"],"shiki-theme":{light:"github-light",dark:"github-dark"}},null,8,["content","code-block-actions"])):e.createCommentVNode("",!0)]),e.renderSlot(V.$slots,"tool-calls-view",{message:t.message,messages:t.messages},()=>[e.createVNode(Mn,{message:t.message,messages:t.messages},e.createSlots({_:2},[e.renderList(V.$slots,(H,W)=>({name:W,fn:e.withCtx(ae=>[e.renderSlot(V.$slots,W,e.normalizeProps(e.guardReactiveProps(ae)))])}))]),1032,["message","messages"])]),U.value?e.renderSlot(V.$slots,"toolbar",{key:0,message:t.message,shouldShowToolbar:U.value},()=>[e.createElementVNode("div",da,[e.createElementVNode("div",pa,[e.renderSlot(V.$slots,"copy-button",{onCopy:T,copied:l.value,label:s.value.assistantMessageToolbarCopyMessageLabel},()=>[e.createElementVNode("button",{"data-testid":"copilot-copy-button",type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarCopyMessageLabel,title:s.value.assistantMessageToolbarCopyMessageLabel,onClick:T},[l.value?(e.openBlock(),e.createBlock(e.unref(oe.Check),{key:0,class:"cpk:size-[18px]"})):(e.openBlock(),e.createBlock(e.unref(oe.Copy),{key:1,class:"cpk:size-[18px]"}))],10,ma)]),P.value?e.renderSlot(V.$slots,"thumbs-up-button",{key:0,onThumbsUp:$,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:$},[e.createVNode(e.unref(oe.ThumbsUp),{class:"cpk:size-[18px]"})],10,fa)]):e.createCommentVNode("",!0),Q.value?e.renderSlot(V.$slots,"thumbs-down-button",{key:1,onThumbsDown:D,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:D},[e.createVNode(e.unref(oe.ThumbsDown),{class:"cpk:size-[18px]"})],10,ga)]):e.createCommentVNode("",!0),z.value?e.renderSlot(V.$slots,"read-aloud-button",{key:2,onReadAloud:q,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:q},[e.createVNode(e.unref(oe.Volume2),{class:"cpk:size-[20px]"})],10,ha)]):e.createCommentVNode("",!0),I.value?e.renderSlot(V.$slots,"regenerate-button",{key:3,onRegenerate:re,label:s.value.assistantMessageToolbarRegenerateLabel},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(C)),"aria-label":s.value.assistantMessageToolbarRegenerateLabel,title:s.value.assistantMessageToolbarRegenerateLabel,onClick:re},[e.createVNode(e.unref(oe.RefreshCw),{class:"cpk:size-[18px]"})],10,va)]):e.createCommentVNode("",!0),e.renderSlot(V.$slots,"toolbar-items")])])]):e.createCommentVNode("",!0)],16,ua)])}});class je extends Error{constructor(o){super(o),this.name="AudioRecorderError"}}const Nn=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatAudioRecorder",setup(t,{expose:o}){const n=e.useAttrs(),a=e.ref(null),r=e.ref("idle"),s=e.ref(null),i=e.ref(null),l=e.ref(null),c=e.ref(null),f=e.ref(null),C=e.ref([]),u=e.ref([]),m=e.ref(0),d=e.ref(0),h=e.ref(0);function b(){f.value!==null&&(cancelAnimationFrame(f.value),f.value=null);const v=s.value;if(v&&v.state!=="inactive")try{v.stop()}catch{}i.value&&(i.value.getTracks().forEach(x=>x.stop()),i.value=null);const y=c.value;y&&y.state!=="closed"&&y.close().catch(()=>{}),s.value=null,l.value=null,c.value=null,C.value=[],u.value=[],m.value=0,d.value=0,h.value=0}async function g(){if(r.value!=="idle")throw new je("Recorder is already active");try{const v=await navigator.mediaDevices.getUserMedia({audio:!0});i.value=v;const y=new AudioContext;c.value=y;const x=y.createMediaStreamSource(v),E=y.createAnalyser();E.fftSize=2048,x.connect(E),l.value=E;const B=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":MediaRecorder.isTypeSupported("audio/webm")?"audio/webm":MediaRecorder.isTypeSupported("audio/mp4")?"audio/mp4":"",A=B?{mimeType:B}:{},R=new MediaRecorder(v,A);s.value=R,C.value=[],R.ondataavailable=P=>{P.data.size>0&&C.value.push(P.data)},R.start(100),r.value="recording"}catch(v){throw b(),v instanceof Error&&v.name==="NotAllowedError"?new je("Microphone permission denied"):v instanceof Error&&v.name==="NotFoundError"?new je("No microphone found"):new je(v instanceof Error?v.message:"Failed to start recording")}}function w(){return new Promise((v,y)=>{const x=s.value;if(!x||r.value!=="recording"){y(new je("No active recording"));return}r.value="processing",x.onstop=()=>{const E=new Blob(C.value,{type:x.mimeType||"audio/webm"});b(),r.value="idle",v(E)},x.onerror=()=>{b(),r.value="idle",y(new je("Recording failed"))},x.stop()})}function p(v){let y=0;for(let x=0;x<v.length;x+=1){const E=(v[x]??128)/128-1;y+=E*E}return Math.sqrt(y/v.length)}function k(){const v=a.value;if(!v)return;const y=v.getContext("2d");if(!y)return;const x=v.getBoundingClientRect(),E=window.devicePixelRatio||1;(v.width!==x.width*E||v.height!==x.height*E)&&(v.width=x.width*E,v.height=x.height*E,y.scale(E,E));const B=2,R=B+1,P=Math.floor(x.width/R)+2;if(l.value&&r.value==="recording"){u.value.length===0&&(u.value=Array.from({length:P},()=>0)),h.value<1&&(h.value=Math.min(1,h.value+.03)),m.value+=1/3;const U=l.value.fftSize,G=new Uint8Array(U);l.value.getByteTimeDomainData(G);const T=p(G),q=T>d.value?.12:.08;d.value+=(T-d.value)*q,m.value>=R&&(m.value-=R,u.value.push(d.value),u.value.length>P&&(u.value=u.value.slice(-P)))}y.clearRect(0,0,x.width,x.height);const Q=window.getComputedStyle(v);y.fillStyle=Q.color,y.globalAlpha=h.value;const z=x.height/2,I=x.height/2-2,M=12;for(let U=0;U<u.value.length;U+=1){const G=u.value[U]??0,T=Math.min(G*4,1),$=Math.max(2,T*I*2),D=x.width-(u.value.length-U)*R-m.value,q=z-$/2;if(D+B<=0||D>=x.width)continue;let re=1;D<M?re=Math.max(0,D/M):D>x.width-M&&(re=Math.max(0,(x.width-D)/M)),y.globalAlpha=h.value*re,y.fillRect(D,q,B,$)}f.value=requestAnimationFrame(k)}return e.watch(r,()=>{f.value!==null&&(cancelAnimationFrame(f.value),f.value=null),f.value=requestAnimationFrame(k)},{immediate:!0}),e.onBeforeUnmount(()=>{b()}),o({get state(){return r.value},start:g,stop:w,dispose:b}),(v,y)=>(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))}}),Mt=e.defineComponent({__name:"InlineFeatureWarning",props:{featureName:{}},setup(t){const o={padding:"8px 12px",backgroundColor:"#fffbeb",border:"1px solid #fbbf24",borderRadius:"6px",fontSize:"13px",color:"#92400e",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif"},n={color:"#b45309",textDecoration:"underline"};return(a,r)=>(e.openBlock(),e.createElementBlock("div",{style:o,"data-testid":"copilot-inline-feature-warning"},[e.createTextVNode(' ⚠ The "'+e.toDisplayString(t.featureName)+'" feature requires a CopilotKit license. ',1),e.createElementVNode("a",{href:"https://copilotkit.ai/pricing",target:"_blank",rel:"noopener noreferrer",style:n}," Get one at copilotkit.ai/pricing ")]))}});var Vn=(t=>(t.OnMessagesChanged="OnMessagesChanged",t.OnStateChanged="OnStateChanged",t.OnRunStatusChanged="OnRunStatusChanged",t))(Vn||{});const ka=["OnMessagesChanged","OnStateChanged","OnRunStatusChanged"];function ba(t,o,n){const a=t.clone();if(a===t)throw new Error(`useAgent: ${t.constructor.name}.clone() returned the same instance. clone() must return a new, independent object.`);return a.threadId=o,a.setMessages([]),a.setState({}),a instanceof Le.HttpAgent&&(a.headers={...n}),a}const St=new WeakMap;function Xt(t,o){if(!(!t||!o))return St.get(t)?.get(o)}function ya(t,o,n){let a=St.get(t);a||(a=new Map,St.set(t,a));const r=a.get(o);if(r)return r.threadId=o,r instanceof Le.HttpAgent&&(r.headers={...n}),r;const s=ba(t,o,n);return a.set(o,s),s}function gt(t={}){const o=he(),n=e.computed(()=>e.toValue(t.agentId)??o.value?.agentId??j.DEFAULT_AGENT_ID),a=e.computed(()=>e.toValue(t.threadId)??o.value?.threadId),{copilotkit:r}=be(),s=e.computed(()=>t.updates??ka),i=e.computed(()=>r.value.defaultThrottleMs),l=e.computed(()=>e.toValue(t.throttleMs)),c=e.shallowRef(null),f=e.shallowRef(null),C=new Map,u=(d,h,b,g)=>{const w=new ue.ProxiedCopilotRuntimeAgent({runtimeUrl:h,agentId:d,transport:b,runtimeMode:"pending"});return w.headers={...g},w},m=()=>{const d=n.value,h=a.value,b=h?`${d}:${h}`:d,g=r.value,w=g.getAgent(d);if(w){C.delete(b),C.delete(d);const x=h?ya(w,h,g.headers):w,E=c.value===x;c.value=x,f.value=x,E&&e.triggerRef(c);return}const p=g.runtimeUrl!==void 0,k=g.runtimeConnectionStatus;if(p&&(k===ue.CopilotKitCoreRuntimeConnectionStatus.Disconnected||k===ue.CopilotKitCoreRuntimeConnectionStatus.Connecting||k===ue.CopilotKitCoreRuntimeConnectionStatus.Error)){const x=C.get(b);if(x){x.headers={...g.headers},h&&(x.threadId=h),c.value=x,f.value=x;return}const E=u(d,g.runtimeUrl,g.runtimeTransport,g.headers);h&&(E.threadId=h),C.set(b,E),c.value=E,f.value=E;return}const v=Object.keys(g.agents??{}),y=p?`runtimeUrl=${g.runtimeUrl}`:"no runtimeUrl";throw new Error(`useAgent: Agent '${d}' not found after runtime sync (${y}). `+(v.length?`Known agents: [${v.join(", ")}]`:"No agents registered.")+" Verify your runtime /info and/or agents__unsafe_dev_only.")};return e.watch([n,()=>r.value.agents,()=>r.value.runtimeConnectionStatus,()=>r.value.runtimeUrl,()=>r.value.runtimeTransport,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([d],[h])=>d.localeCompare(h))),a],m,{immediate:!0}),e.watch([f,()=>JSON.stringify(Object.entries(r.value.headers??{}).sort(([d],[h])=>d.localeCompare(h)))],([d])=>{d instanceof Le.HttpAgent&&(d.headers={...r.value.headers})},{immediate:!0}),e.watch([f,s,l,i],([d,h],b,g)=>{const w=h;if(!d||w.length===0)return;let p=!0,k=!1;const v=()=>{p&&(k||(k=!0,queueMicrotask(()=>{k=!1,p&&e.triggerRef(c)})))},y={};w.includes("OnMessagesChanged")&&(y.onMessagesChanged=()=>{p&&e.triggerRef(c)}),w.includes("OnStateChanged")&&(y.onStateChanged=v),w.includes("OnRunStatusChanged")&&(y.onRunInitialized=v,y.onRunFinalized=v,y.onRunFailed=v,y.onRunErrorEvent=v);const x=r.value.subscribeToAgentWithOptions(d,y,{throttleMs:e.toValue(t.throttleMs)});g(()=>{p=!1,x.unsubscribe()})},{immediate:!0}),{agent:c}}function Fn(t={}){const{copilotkit:o}=be(),n=he(),a=e.computed(()=>e.toValue(t.agentId)??n.value?.agentId??j.DEFAULT_AGENT_ID),r=e.ref([]),s=e.ref(!1),i=()=>{const f=o.value.getSuggestions(a.value);r.value=f.suggestions,s.value=f.isLoading};return e.watch([()=>o.value,a],()=>i(),{immediate:!0}),e.watch([()=>o.value,a],(f,C,u)=>{const m=o.value,d=a.value,h=m.subscribe({onSuggestionsChanged:({agentId:b,suggestions:g})=>{if(b!==d)return;r.value=g;const w=m.getSuggestions(d);s.value=w.isLoading},onSuggestionsStartedLoading:({agentId:b})=>{b===d&&(s.value=!0)},onSuggestionsFinishedLoading:({agentId:b})=>{b===d&&(s.value=!1)},onSuggestionsConfigChanged:()=>{const b=m.getSuggestions(d);r.value=b.suggestions,s.value=b.isLoading}});u(()=>h.unsubscribe())},{immediate:!0}),{suggestions:r,isLoading:s,reloadSuggestions:()=>{o.value.reloadSuggestions(a.value)},clearSuggestions:()=>{o.value.clearSuggestions(a.value)}}}function Dn(t){const o=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(null),s=e.ref(e.toValue(t.config)),i=e.ref(o.value),l=e.computed(()=>s.value?.enabled??!1);e.watch(()=>e.toValue(t.config),p=>{s.value=p},{immediate:!0});const c=p=>{o.value=p,i.value=p},f=p=>{c(p(i.value))};async function C(p){const k=s.value,v=k?.accept??"*/*",y=k?.maxSize??20*1024*1024,x=p.filter(B=>!j.matchesAcceptFilter(B,v));for(const B of x)k?.onUploadFailed?.({reason:"invalid-type",file:B,message:`File "${B.name}" is not accepted. Supported types: ${v}`});const E=p.filter(B=>j.matchesAcceptFilter(B,v));for(const B of E){if(j.exceedsMaxSize(B,y)){k?.onUploadFailed?.({reason:"file-too-large",file:B,message:`File "${B.name}" exceeds the maximum size of ${j.formatFileSize(y)}`});continue}const A=j.getModalityFromMimeType(B.type),R=j.randomUUID();f(P=>[...P,{id:R,type:A,source:{type:"data",value:"",mimeType:B.type},filename:B.name,size:B.size,status:"uploading"}]);try{let P,Q;if(k?.onUpload){const I=await k.onUpload(B),{metadata:M,...U}=I;P=U,Q=M}else P={type:"data",value:await j.readFileAsBase64(B),mimeType:B.type};let z;A==="video"&&(z=await j.generateVideoThumbnail(B)),f(I=>I.map(M=>M.id===R?{...M,source:P,status:"ready",thumbnail:z,metadata:Q}:M))}catch(P){f(Q=>Q.filter(z=>z.id!==R)),console.error(`[CopilotKit] Failed to upload "${B.name}":`,P),k?.onUploadFailed?.({reason:"upload-failed",file:B,message:P instanceof Error?P.message:`Failed to upload "${B.name}"`})}}}async function u(p){const k=p.target;k?.files?.length&&(await C(Array.from(k.files)),k&&(k.value=""))}function m(p){l.value&&(p.preventDefault(),p.stopPropagation(),n.value=!0)}function d(p){p.preventDefault(),p.stopPropagation(),n.value=!1}async function h(p){if(p.preventDefault(),p.stopPropagation(),n.value=!1,!l.value)return;const k=Array.from(p.dataTransfer?.files??[]);k.length>0&&await C(k)}function b(p){f(k=>k.filter(v=>v.id!==p))}function g(){const p=i.value.filter(k=>k.status==="ready");return p.length===0||(f(k=>k.filter(v=>v.status!=="ready")),a.value&&(a.value.value="")),p}async function w(p){if(!l.value)return;const k=p.target;if(!k||!r.value?.contains(k))return;const v=s.value?.accept??"*/*",x=Array.from(p.clipboardData?.items??[]).filter(B=>{if(B.kind!=="file")return!1;const A=B.getAsFile();return A!==null&&j.matchesAcceptFilter(A,v)});if(x.length===0)return;p.preventDefault();const E=x.map(B=>B.getAsFile()).filter(B=>B!==null);await C(E)}return e.onMounted(()=>{typeof document<"u"&&document.addEventListener("paste",w)}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.removeEventListener("paste",w)}),{attachments:o,enabled:l,dragOver:n,fileInputRef:a,containerRef:r,processFiles:C,handleFileUpload:u,handleDragOver:m,handleDragLeave:d,handleDrop:h,removeAttachment:b,consumeAttachments:g}}async function wa(t){return await new Promise((o,n)=>{const a=new FileReader;a.onloadend=()=>{const r=a.result;o(r.split(",")[1]??"")},a.addEventListener("error",()=>n(new Error("Failed to read audio data"))),a.readAsDataURL(t)})}function Ca(t){return typeof t=="object"&&t!==null&&"error"in t&&"message"in t&&typeof t.error=="string"&&typeof t.message=="string"}function xa(t){return{code:t.error,message:t.message,retryable:t.retryable??!1}}class He extends Error{info;constructor(o){super(o.message),this.name="TranscriptionError",this.info=o}}async function Sa(t,o,n="recording.webm"){const a=t.runtimeUrl;if(!a)throw new He({code:j.TranscriptionErrorCode.INVALID_REQUEST,message:"Runtime URL is not configured",retryable:!1});const r={...t.headers};let s;try{if(t.runtimeTransport==="single"){const i=await wa(o);r["Content-Type"]="application/json",s=await fetch(a,{method:"POST",headers:r,body:JSON.stringify({method:"transcribe",body:{audio:i,mimeType:o.type||"audio/webm",filename:n}})})}else{delete r["Content-Type"];const i=new FormData;i.append("audio",o,n),s=await fetch(`${a}/transcribe`,{method:"POST",headers:r,body:i})}}catch(i){throw new He({code:j.TranscriptionErrorCode.NETWORK_ERROR,message:i instanceof Error?i.message:"Network request failed",retryable:!0})}if(!s.ok){let i;try{i=await s.json()}catch{throw new He({code:j.TranscriptionErrorCode.PROVIDER_ERROR,message:`HTTP ${s.status}: ${s.statusText}`,retryable:s.status>=500})}throw Ca(i)?new He(xa(i)):new He({code:j.TranscriptionErrorCode.PROVIDER_ERROR,message:typeof i=="object"&&i!==null&&"message"in i?String(i.message):"Transcription failed",retryable:s.status>=500})}return await s.json()}function On(){const t=typeof window<"u"?window.innerHeight:0,o=e.ref(!1),n=e.ref(0),a=e.ref(t),r=e.ref(t),s=()=>{if(typeof window>"u")return;const l=window.visualViewport;if(!l)return;const c=window.innerHeight,f=l.height,C=Math.max(0,c-f),u=C>150;n.value=C,o.value=u,a.value=f,r.value=c};let i=null;return e.onMounted(()=>{typeof window>"u"||(i=window.visualViewport??null,i&&(s(),i.addEventListener("resize",s),i.addEventListener("scroll",s)))}),e.onBeforeUnmount(()=>{i&&(i.removeEventListener("resize",s),i.removeEventListener("scroll",s),i=null)}),{isKeyboardOpen:e.readonly(o),keyboardHeight:e.readonly(n),availableHeight:e.readonly(a),viewportHeight:e.readonly(r)}}const Ta={id:null,sendNonce:0},Ln=Symbol("LastUserMessage");function Ia(){return e.ref({...Ta})}function Aa({scrollRef:t,contentRef:o,spacerRef:n,topOffset:a=16}){const r=e.inject(Ln,Ia(),!0);let s=-1,i=null,l=null;function c(){i!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(i),i=null,l?.disconnect(),l=null}e.watch([()=>r.value.id,()=>r.value.sendNonce,t,o,n,()=>a],([f,C,u,m,d],h,b)=>{if(b(c),C===s||(s=C,!f)||!u||!m||!d)return;const g=typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(f):f.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&"),w=m.querySelector(`[data-message-id="${g}"]`);if(!w)return;const p=u.clientHeight,k=w.getBoundingClientRect().height,v=parseFloat(getComputedStyle(w).paddingTop)||0,y=Math.max(0,k-v),x=Math.max(0,p-y-a);d.style.height=`${x}px`,typeof requestAnimationFrame=="function"&&(i=requestAnimationFrame(()=>{const E=Yt(w,u)+v-a;u.scrollTo({top:Math.max(0,E),behavior:"smooth"})})),typeof ResizeObserver<"u"&&(l=new ResizeObserver(()=>{if(!m||!d||!u)return;const E=m.getBoundingClientRect().height,B=Yt(w,m),A=E-B-k,R=Math.max(0,x-A);d.style.height=`${R}px`}),l.observe(m))},{immediate:!0,flush:"post"})}function Yt(t,o){const n=t.getBoundingClientRect(),a=o.getBoundingClientRect();return n.top-a.top+o.scrollTop}const Ra={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"},Ea=["data-layout"],Ma=["data-layout"],$a=["aria-label","disabled"],Ba={key:0,class:"cpk:my-1 cpk:h-px cpk:bg-border cpk:dark:bg-[#333333]"},Na=["onClick"],Va={key:1,class:"cpk:flex cpk:w-full cpk:items-center cpk:justify-center cpk:px-5 cpk:py-3"},Fa=["value","placeholder","disabled"],Da={key:0,class:"cpk:px-3 cpk:py-2 cpk:text-sm cpk:text-muted-foreground"},Oa=["data-slash-index","aria-selected","data-active","onMouseenter","onMousedown"],La=["aria-label","disabled"],Pa=["aria-label","disabled"],Ua=["aria-label","disabled"],za={class:"cpk:mr-[10px]"},ja=["disabled"],_a={"data-testid":"copilot-chat-input-disclaimer",class:"cpk:mx-auto cpk:max-w-3xl cpk:px-4 cpk:py-3 cpk:text-center cpk:text-xs cpk:text-muted-foreground"},Xe=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatInput",props:{modelValue:{},disabled:{type:Boolean,default:!1},placeholder:{},autoFocus:{type:Boolean,default:!0},clearOnSubmit:{type:Boolean,default:!0},mode:{default:"input"},toolsMenu:{default:()=>[]},isRunning:{type:Boolean,default:!1},positioning:{default:"static"},keyboardHeight:{default:0},showDisclaimer:{type:Boolean,default:void 0},maxRows:{default:5},bottomAnchored:{type:Boolean,default:!1}},emits:["update:modelValue","submit-message","stop","add-file","start-transcribe","cancel-transcribe","finish-transcribe","finish-transcribe-with-audio"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=he(),i=e.getCurrentInstance(),l=e.ref(null),c=e.ref(null),f=e.ref(null),C=e.ref(null),u=e.ref(null),m=e.ref(null),d=e.ref(null),h=e.ref(null),b=e.ref(n.modelValue??""),g=e.ref(!1),w=e.ref("compact"),p=e.ref(null),k=e.ref(0),v=e.ref(null),y=e.ref(!1),x=e.ref({singleLineHeight:0,maxHeight:0,paddingLeft:0,paddingRight:0}),E=e.ref(null),B=e.ref(!1),A=e.ref(null),R=e.ref(null),P=e.ref(!1),Q=e.ref(!1);let z=null,I=null;const M=e.computed(()=>i?.vnode.props??{}),U=e.computed(()=>n.modelValue!==void 0),G=e.computed(()=>U.value?n.modelValue??"":b.value),T=e.computed(()=>s.value?.labels??$e),$=e.computed(()=>n.placeholder??T.value.chatInputPlaceholder),D=e.computed(()=>n.mode==="input"&&w.value==="expanded"),q=e.computed(()=>n.mode!=="transcribe"&&n.isRunning),re=e.computed(()=>n.showDisclaimer??n.positioning==="absolute"),V=e.computed(()=>ee("onSubmitMessage")),_=e.computed(()=>ee("onStop")),H=e.computed(()=>ee("onAddFile")),W=e.computed(()=>ee("onStartTranscribe")),ae=e.computed(()=>ee("onCancelTranscribe")),de=e.computed(()=>ee("onFinishTranscribe")),pe=e.computed(()=>n.mode==="input"&&!n.disabled&&V.value&&G.value.trim().length>0),ge=e.computed(()=>q.value?!_.value:!pe.value),ye=e.computed(()=>[n.positioning==="absolute"&&"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none",r.class]),F=e.computed(()=>{const S={...r};return delete S.class,S});function te(S){return Array.isArray(S.items)}function ee(S){const N=M.value[S];return Array.isArray(N)?N.length>0:!!N}function Se(){return H.value?{label:T.value.chatInputToolbarAddButtonLabel,action:()=>a("add-file")}:null}function Ie(){const S=[],N=Se();if(N&&S.push(N),n.toolsMenu.length>0){S.length>0&&S.push("-");for(const K of n.toolsMenu){if(K==="-"){if(S.length===0||S[S.length-1]==="-")continue;S.push("-");continue}S.push(K)}}for(;S.length>0&&S[S.length-1]==="-";)S.pop();return S}const fe=e.computed(()=>Ie()),se=e.computed(()=>fe.value.length>0);function ie(S){const N=new Set,K=[],ne=Te=>{for(const ce of Te)if(ce!=="-"){if(te(ce)&&ce.items.length>0){ne(ce.items);continue}!ce.action||N.has(ce.label)||(N.add(ce.label),K.push(ce))}};return ne(S),K}const me=e.computed(()=>ie(fe.value));function Ae(S,N=0,K="root"){const ne=[];for(const[Te,ce]of S.entries()){const Ee=`${K}-${Te}`;if(ce==="-"){ne.push({type:"separator",key:`sep-${Ee}`});continue}if(te(ce)&&ce.items.length>0){ne.push({type:"label",key:`label-${Ee}`,label:ce.label,depth:N}),ne.push(...Ae(ce.items,N+1,Ee));continue}ce.action&&ne.push({type:"item",key:`item-${Ee}`,label:ce.label,depth:N,action:ce.action})}return ne}const O=e.computed(()=>Ae(fe.value)),J=e.computed(()=>{if(p.value===null||me.value.length===0)return[];const S=p.value.trim().toLowerCase();if(S.length===0)return me.value;const N=[],K=[];for(const ne of me.value){const Te=ne.label.toLowerCase();if(Te.startsWith(S)){N.push(ne);continue}Te.includes(S)&&K.push(ne)}return[...N,...K]}),xe=e.computed(()=>p.value!==null&&me.value.length>0);function Be(S){U.value||(b.value=S),a("update:modelValue",S)}function qe(){Be("")}function nt(S){if(me.value.length===0){p.value=null;return}if(S.startsWith("/")){const N=S.split(/\r?\n/,1)[0]??"";p.value=N.slice(1);return}p.value=null}function we(S){qe(),S.action?.(),p.value=null,k.value=0,requestAnimationFrame(()=>{c.value?.focus()})}function Ke(){if(n.mode!=="input"||n.disabled||!V.value)return;const N=(c.value?.value??G.value).trim();N&&(a("submit-message",N),n.clearOnSubmit&&qe(),c.value?.focus())}function L(S){const N=S.target.value;Be(N),nt(N)}function Y(){if(q.value){_.value&&a("stop");return}Ke()}function Z(S){if(!n.disabled&&!(g.value||S.isComposing||S.keyCode===229)){if(p.value!==null&&n.mode==="input"){if(S.key==="ArrowDown"){J.value.length>0&&(S.preventDefault(),k.value=k.value<0?0:(k.value+1)%J.value.length);return}if(S.key==="ArrowUp"){J.value.length>0&&(S.preventDefault(),k.value<0?k.value=J.value.length-1:k.value=k.value<=0?J.value.length-1:k.value-1);return}if(S.key==="Enter"){const N=k.value>=0?J.value[k.value]:void 0;if(N){S.preventDefault(),we(N);return}}if(S.key==="Escape"){S.preventDefault(),p.value=null;return}}if(S.key==="Enter"&&!S.shiftKey&&n.mode==="input"){if(S.preventDefault(),q.value){_.value&&a("stop");return}Ke()}}}function le(){!se.value||n.mode==="transcribe"||n.disabled||(y.value=!y.value)}function Ce(){y.value=!1}function Ge(S){S(),Ce(),e.nextTick(()=>{c.value?.focus()})}async function Ne(){const S=h.value;if(S&&S.state==="recording")try{const N=await S.stop();a("finish-transcribe-with-audio",N)}catch(N){console.error("Failed to stop recording:",N)}a("finish-transcribe")}function ot(S){const N=S.target;!N||n.mode!=="input"||N.tagName==="BUTTON"||N.closest("button")||c.value?.focus()}function Ue(){const S=c.value;if(!S||g.value)return;const N=S.value,K=S.style.height;S.style.height="auto";const ne=window.getComputedStyle(S),Te=parseFloat(ne.paddingLeft)||0,ce=parseFloat(ne.paddingRight)||0,Ee=parseFloat(ne.paddingTop)||0,De=parseFloat(ne.paddingBottom)||0;S.value="";const Pe=S.scrollHeight;S.value=N;const Oe=(Pe-Ee-De)*n.maxRows+Ee+De;x.value={singleLineHeight:Pe,maxHeight:Oe,paddingLeft:Te,paddingRight:ce},S.style.height=K,S.style.maxHeight=`${Oe}px`}function at(){const S=c.value;if(!S)return 0;x.value.singleLineHeight===0&&Ue();const{maxHeight:N}=x.value;N&&(S.style.maxHeight=`${N}px`),S.style.height="auto";const K=S.scrollHeight;return S.style.height=`${N?Math.min(K,N):K}px`,K}function Je(S){w.value!==S&&(B.value=!0,w.value=S)}function Fe(S){const N=window.getComputedStyle(S);if(N.font?.trim())return N.font;if(N.fontSize&&N.fontFamily){const K=`${N.fontStyle} ${N.fontVariant} ${N.fontWeight} ${N.fontSize}/${N.lineHeight} ${N.fontFamily}`;if(K.trim())return K}return process.env.NODE_ENV!=="production"&&!P.value&&(P.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 ht(){const S=f.value,N=C.value,K=u.value;if(!S||!N||!K)return R.value=null,null;const ne=window.getComputedStyle(S),Te=parseFloat(ne.paddingLeft)||0,ce=parseFloat(ne.paddingRight)||0,Ee=parseFloat(ne.columnGap)||0,De=S.clientWidth-Te-ce;if(De<=0)return R.value=null,null;const Pe=N.getBoundingClientRect().width,ze=K.getBoundingClientRect().width,Oe=Math.max(De-Pe-ze-Ee*2,0);if(Oe<=0)return R.value=null,null;const st={compactWidth:Oe};return R.value=st,st}function Me(){if(n.mode!=="input"){Je("compact");return}if(typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches){Ue(),at(),Je("expanded");return}const S=c.value;if(!S||!f.value||!C.value||!u.value)return;x.value.singleLineHeight===0&&Ue();const N=at(),K=x.value.singleLineHeight,ne=G.value.includes(`
|
|
72
|
+
`),Te=K>0?N>K+1:!1;let ce=ne||Te;if(!ce){const Ee=R.value??ht();if(Ee&&Ee.compactWidth>0){const De=Math.max(Ee.compactWidth-x.value.paddingLeft-x.value.paddingRight,0);if(De>0){const Pe=A.value??document.createElement("canvas");A.value||(A.value=Pe);const ze=Pe.getContext("2d");if(ze){const Oe=Fe(S);if(Oe){ze.font=Oe;const st=G.value.length>0?G.value.split(`
|
|
73
|
+
`):[""];let vt=0;for(const Yn of st){const Ot=ze.measureText(Yn||" ").width;Ot>vt&&(vt=Ot)}vt>De&&(ce=!0)}}else process.env.NODE_ENV!=="production"&&!Q.value&&(Q.value=!0,console.warn("[CopilotChatInput] canvas.getContext('2d') returned null. Text-width-based expansion will be skipped."))}}}Je(ce?"expanded":"compact")}function Re(S){if(B.value){B.value=!1;return}S&&(R.value=null,P.value=!1,Q.value=!1),E.value!==null&&cancelAnimationFrame(E.value),E.value=requestAnimationFrame(()=>{E.value=null,Me()})}return e.watch(()=>n.modelValue,S=>{U.value&&(b.value=S??"")}),e.watch(G,S=>{nt(S),Me()}),e.watch(me,()=>{me.value.length===0&&(p.value=null)}),e.watch([p,()=>J.value.length],([S,N])=>{S!==null&&S!==v.value&&N>0&&(k.value=0),v.value=S},{immediate:!0}),e.watch([p,J],()=>{if(p.value===null){k.value=0;return}if(J.value.length===0){k.value=-1;return}(k.value<0||k.value>=J.value.length)&&(k.value=0)},{immediate:!0}),e.watch(()=>n.mode,async S=>{S!=="input"&&(w.value="compact",p.value=null,Ce());const N=h.value;if(N){if(S==="transcribe"){try{await N.start()}catch(K){console.error(K)}return}if(N.state==="recording")try{await N.stop()}catch{}}},{immediate:!0}),e.watch(h,async S=>{if(!(!S||n.mode!=="transcribe")&&S.state==="idle")try{await S.start()}catch(N){console.error(N)}},{immediate:!0}),e.watch(k,async S=>{if(!xe.value||S<0)return;await e.nextTick(),m.value?.querySelector(`[data-slash-index="${S}"]`)?.scrollIntoView?.({block:"nearest"})}),e.watch(()=>n.disabled,S=>{S&&Ce()}),e.onMounted(()=>{if(n.autoFocus&&n.mode==="input"&&c.value?.focus(),Me(),typeof ResizeObserver<"u"){const S=new Set;f.value&&S.add(f.value),C.value&&S.add(C.value),u.value&&S.add(u.value),z=new ResizeObserver(N=>{const K=N.some(ne=>S.has(ne.target));Re(K)}),f.value&&z.observe(f.value),C.value&&z.observe(C.value),u.value&&z.observe(u.value),c.value&&z.observe(c.value)}I=S=>{if(!y.value)return;const N=S.target;N&&(d.value?.contains(N)||C.value?.contains(N)||Ce())},document.addEventListener("mousedown",I)}),e.onBeforeUnmount(()=>{I&&(document.removeEventListener("mousedown",I),I=null),z?.disconnect(),z=null,E.value!==null&&(cancelAnimationFrame(E.value),E.value=null)}),(S,N)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-chat-input-container",class:ye.value,style:{transform:t.keyboardHeight>0?`translateY(-${t.keyboardHeight}px)`:void 0,transition:"transform 0.2s ease-out",...t.positioning==="absolute"||t.bottomAnchored?{paddingBottom:"var(--copilotkit-license-banner-offset, 0px)"}:{}}},F.value),[e.createElementVNode("div",Ra,[e.renderSlot(S.$slots,"layout",{mode:t.mode,isMultiline:D.value,value:G.value,disabled:t.disabled,placeholder:$.value,isProcessing:q.value,sendDisabled:ge.value,menuOpen:y.value,menuItems:O.value,onToggleMenu:le,onMenuAction:Ge,onUpdateValue:Be,onSubmit:Ke,onKeydown:Z,onSendClick:Y,onStartTranscribe:()=>a("start-transcribe"),onCancelTranscribe:()=>a("cancel-transcribe"),onFinishTranscribe:Ne},()=>[e.createElementVNode("div",{ref_key:"shellRef",ref:l,"data-testid":"copilot-chat-input-shell",class:"cpk:flex cpk:w-full cpk:cursor-text cpk:flex-col cpk:items-center cpk:justify-center cpk:overflow-visible cpk:rounded-[28px] cpk:bg-white cpk:bg-clip-padding cpk:shadow-[0_4px_4px_0_#0000000a,0_0_1px_0_#0000009e] cpk:contain-inline-size cpk:dark:bg-[#303030]","data-layout":D.value?"expanded":"compact",onClick:ot},[e.createElementVNode("div",{ref_key:"gridRef",ref:f,class:e.normalizeClass(["cpk:grid cpk:w-full cpk:gap-x-3 cpk:gap-y-3 cpk:px-3 cpk:py-2",D.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":D.value?"expanded":"compact"},[e.createElementVNode("div",{ref_key:"addButtonContainerRef",ref:C,class:e.normalizeClass(["cpk:relative cpk:flex cpk:items-center cpk:col-start-1",D.value?"cpk:row-start-2":"cpk:row-start-1"])},[e.renderSlot(S.$slots,"add-menu-button",{disabled:t.disabled||t.mode==="transcribe"||!se.value,menuOpen:y.value,toggleMenu:le,labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-add","aria-label":T.value.chatInputToolbarAddButtonLabel,disabled:t.disabled||t.mode==="transcribe"||!se.value,class:"cpk:ml-1 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444] cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF] cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]",onClick:e.withModifiers(le,["stop"])},[e.createVNode(e.unref(oe.Plus),{class:"cpk:size-[20px]"})],8,$a)]),y.value&&se.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"addMenuRef",ref:d,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(O.value,K=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:K.key},[K.type==="separator"?(e.openBlock(),e.createElementBlock("div",Ba)):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:ne=>Ge(K.action)},e.toDisplayString(K.label),13,Na))],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",D.value?"cpk:col-span-3 cpk:row-start-1":"cpk:col-start-2 cpk:row-start-1"])},[t.mode==="transcribe"?e.renderSlot(S.$slots,"audio-recorder",{key:0},()=>[e.createVNode(Nn,{ref_key:"audioRecorderRef",ref:h},null,512)]):t.mode==="processing"?(e.openBlock(),e.createElementBlock("div",Va,[e.createVNode(e.unref(oe.Loader2),{class:"cpk:size-[26px] cpk:animate-spin cpk:text-muted-foreground"})])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(S.$slots,"text-area",{value:G.value,disabled:t.disabled,placeholder:$.value,onInput:L,onKeydown:Z,autoFocus:t.autoFocus,isExpanded:D.value,rows:1,labels:T.value},()=>[e.createElementVNode("textarea",{ref_key:"textareaRef",ref:c,"data-testid":"copilot-chat-input-textarea",value:G.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]",D.value?"cpk:px-5":"cpk:pr-5"]),style:{overflow:"auto",resize:"none"},onInput:L,onKeydown:Z,onCompositionstart:N[0]||(N[0]=K=>g.value=!0),onCompositionend:N[1]||(N[1]=K=>g.value=!1)},null,42,Fa)]),xe.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"slashMenuRef",ref:m,"data-testid":"copilot-slash-menu",role:"listbox","aria-label":"Slash commands",class:"cpk:absolute cpk:bottom-full cpk:left-0 cpk:right-0 cpk:z-30 cpk:mb-2 cpk:max-h-64 cpk:overflow-y-auto cpk:rounded-lg cpk:border cpk:border-border cpk:bg-white cpk:shadow-lg cpk:dark:border-[#3a3a3a] cpk:dark:bg-[#1f1f1f]",style:{maxHeight:"200px"}},[J.value.length===0?(e.openBlock(),e.createElementBlock("div",Da," No commands found ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(J.value,(K,ne)=>(e.openBlock(),e.createElementBlock("button",{key:`${K.label}-${ne}`,type:"button",role:"option","data-slash-index":ne,"aria-selected":ne===k.value,"data-active":ne===k.value?"true":void 0,class:e.normalizeClass(["cpk:w-full cpk:px-3 cpk:py-2 cpk:text-left cpk:text-sm cpk:transition-colors cpk:hover:bg-muted cpk:dark:hover:bg-[#2f2f2f]",ne===k.value?"cpk:bg-muted cpk:dark:bg-[#2f2f2f]":"cpk:bg-transparent"]),onMouseenter:Te=>k.value=ne,onMousedown:e.withModifiers(Te=>we(K),["prevent"])},e.toDisplayString(K.label),43,Oa))),128))],512)):e.createCommentVNode("",!0)],64))],2),e.createElementVNode("div",{ref_key:"actionsContainerRef",ref:u,class:e.normalizeClass(["cpk:flex cpk:items-center cpk:justify-end cpk:gap-2",D.value?"cpk:col-start-3 cpk:row-start-2":"cpk:col-start-3 cpk:row-start-1"])},[t.mode==="transcribe"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[ae.value?e.renderSlot(S.$slots,"cancel-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("cancel-transcribe"),labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-cancel-transcribe","aria-label":T.value.chatInputToolbarCancelTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-2 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]",onClick:N[2]||(N[2]=K=>a("cancel-transcribe"))},[e.createVNode(e.unref(oe.X),{class:"cpk:size-[18px]"})],8,La)]):e.createCommentVNode("",!0),de.value?e.renderSlot(S.$slots,"finish-transcribe-button",{key:1,disabled:t.disabled,onClick:Ne,labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-finish-transcribe","aria-label":T.value.chatInputToolbarFinishTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-[10px] cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF]",onClick:Ne},[e.createVNode(e.unref(oe.Check),{class:"cpk:size-[18px]"})],8,Pa)]):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[W.value?e.renderSlot(S.$slots,"start-transcribe-button",{key:0,disabled:t.disabled,onClick:()=>a("start-transcribe"),labels:T.value},()=>[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-start-transcribe","aria-label":T.value.chatInputToolbarStartTranscribeButtonLabel,disabled:t.disabled,class:"cpk:mr-2 cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-transparent cpk:text-[#444444] cpk:transition-colors cpk:hover:bg-[#f8f8f8] cpk:hover:text-[#333333] cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:hover:bg-transparent cpk:disabled:hover:text-[#444444] cpk:dark:text-white cpk:dark:hover:bg-[#404040] cpk:dark:hover:text-[#FFFFFF] cpk:dark:disabled:hover:bg-transparent cpk:dark:disabled:hover:text-[#CCCCCC]",onClick:N[3]||(N[3]=K=>a("start-transcribe"))},[e.createVNode(e.unref(oe.Mic),{class:"cpk:size-[18px]"})],8,Ua)]):e.createCommentVNode("",!0),e.renderSlot(S.$slots,"send-button",{disabled:ge.value,isProcessing:q.value,onClick:Y},()=>[e.createElementVNode("div",za,[e.createElementVNode("button",{type:"button","data-testid":"copilot-chat-input-send","aria-label":"Send message",disabled:ge.value,class:"cpk:inline-flex cpk:h-9 cpk:w-9 cpk:shrink-0 cpk:items-center cpk:justify-center cpk:rounded-full cpk:bg-black cpk:text-white cpk:transition-colors cpk:hover:opacity-70 cpk:disabled:cursor-not-allowed cpk:disabled:opacity-50 cpk:disabled:bg-[#00000014] cpk:disabled:text-[rgb(13,13,13)] cpk:disabled:hover:opacity-100 cpk:dark:bg-white cpk:dark:text-black cpk:dark:disabled:bg-[#454545] cpk:dark:disabled:text-white",onClick:Y},[q.value&&_.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,ja)])])],64))],2)],10,Ma)],8,Ea)])]),re.value?e.renderSlot(S.$slots,"disclaimer",{key:0,labels:T.value},()=>[e.createElementVNode("p",_a,e.toDisplayString(T.value.chatDisclaimerText),1)]):e.createCommentVNode("",!0)],16))}}),Ha=["data-card-type"],Wa={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"},qa=["onClick"],Ka=["src","alt"],Ga={key:1,class:"cpk:w-full cpk:h-full cpk:relative"},Ja=["src","alt"],Qa=["src"],Xa=["onClick"],Ya={key:2,class:"cpk:flex cpk:flex-col cpk:gap-1 cpk:w-full"},Za=["src"],es={key:0,class:"cpk:text-xs cpk:font-medium cpk:overflow-hidden cpk:text-ellipsis cpk:whitespace-nowrap"},ts=["onClick"],ns={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"},os={class:"cpk:flex cpk:flex-col cpk:min-w-0"},as={class:"cpk:text-xs cpk:font-medium cpk:break-all cpk:leading-tight","data-testid":"copilot-chat-attachment-document-filename"},ss={key:0,class:"cpk:text-[11px] cpk:text-muted-foreground"},rs={key:2,class:"cpk:w-full cpk:h-full cpk:bg-muted-foreground/20","data-testid":"copilot-chat-attachment-placeholder"},is=["onClick"],ls=["src","alt"],cs=["src"],us=["src","title"],ds={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"},ps={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"},ms=["src","title"],fs={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"},gs={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"},hs={class:"cpk:text-center"},vs={class:"cpk:text-base cpk:font-medium cpk:text-gray-800 cpk:dark:text-gray-200"},ks={class:"cpk:text-sm cpk:text-gray-500 cpk:dark:text-gray-400 cpk:mt-1"},Tt=e.defineComponent({__name:"CopilotChatAttachmentQueue",props:{attachments:{default:()=>[]},className:{default:""}},emits:["remove-attachment"],setup(t,{emit:o}){const n=t,a=o,r=e.ref(null),s=e.ref(null),i=e.computed(()=>r.value!==null),l=e.computed(()=>{const g=r.value;if(!g||g.type!=="document")return!1;const w=g.source.mimeType;return d(w)||h(w)}),c=e.computed(()=>{const g=r.value;if(!g||g.type!=="document")return null;const w=g.source.mimeType;if(!h(w)||g.source.type!=="data")return null;try{return atob(g.source.value)}catch{return g.source.value}}),f=e.computed(()=>{const g=r.value;return!g||g.type!=="document"?null:g.source.type==="url"?g.source.value:s.value});e.watch(r,(g,w)=>{if(s.value&&(URL.revokeObjectURL(s.value),s.value=null),!g||g.type!=="document"||g.source.type!=="data"||typeof window>"u")return;const p=g.source.mimeType;if(!d(p)&&!h(p))return;const k=b(g.source.value,p);s.value=k},{immediate:!0}),e.watch(i,(g,w,p)=>{if(!g||typeof document>"u")return;const k=v=>{v.key==="Escape"&&u()};document.addEventListener("keydown",k),p(()=>{document.removeEventListener("keydown",k)})}),e.onBeforeUnmount(()=>{s.value&&(URL.revokeObjectURL(s.value),s.value=null)});function C(g){if(typeof document<"u"){const w=document;if(typeof w.startViewTransition=="function"){w.startViewTransition(()=>{r.value=g});return}}r.value=g}function u(){r.value=null}function m(g){return g.type==="image"||g.type==="video"?"cpk:w-[72px] cpk:h-[72px]":g.type==="audio"?"cpk:min-w-[200px] cpk:max-w-[280px] cpk:flex-col cpk:p-1 cpk:pr-8":"cpk:p-2 cpk:px-3 cpk:pr-8 cpk:max-w-[240px]"}function d(g){return!!g&&g.includes("pdf")}function h(g){return!!g&&g.startsWith("text/")}function b(g,w){try{const p=atob(g),k=new Uint8Array(p.length);for(let y=0;y<p.length;y+=1)k[y]=p.charCodeAt(y);const v=new Blob([k],{type:w||"application/octet-stream"});return URL.createObjectURL(v)}catch(p){return console.error("[CopilotKit] Failed to decode attachment data:",p),null}}return(g,w)=>(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,p=>(e.openBlock(),e.createElementBlock("div",{key:p.id,class:e.normalizeClass(["cpk:relative cpk:inline-flex cpk:rounded-lg cpk:overflow-hidden cpk:border cpk:border-border",m(p)]),"data-testid":"copilot-chat-attachment-item","data-card-type":p.type},[p.status==="uploading"?(e.openBlock(),e.createElementBlock("div",Wa,[...w[1]||(w[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),p.status==="ready"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[p.type==="image"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"cpk:w-full cpk:h-full cpk:border-none cpk:bg-transparent cpk:p-0 cpk:cursor-pointer","data-testid":"copilot-chat-attachment-image-button",onClick:k=>C(p)},[e.createElementVNode("img",{src:e.unref(j.getSourceUrl)(p.source),alt:p.filename||"Image attachment",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-image-thumbnail"},null,8,Ka)],8,qa)):p.type==="video"?(e.openBlock(),e.createElementBlock("div",Ga,[p.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:0,src:p.thumbnail,alt:p.filename||"Video thumbnail",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-thumbnail"},null,8,Ja)):(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(j.getSourceUrl)(p.source),preload:"metadata",muted:"",class:"cpk:w-full cpk:h-full cpk:object-cover","data-testid":"copilot-chat-attachment-video-fallback"},null,8,Qa)),e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:z-10 cpk:cursor-pointer cpk:bg-black/20 cpk:border-none cpk:p-0","aria-label":"Play video","data-testid":"copilot-chat-attachment-video-play",onClick:k=>C(p)},[...w[2]||(w[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,Xa)])):p.type==="audio"?(e.openBlock(),e.createElementBlock("div",Ya,[e.createElementVNode("audio",{src:e.unref(j.getSourceUrl)(p.source),controls:"",preload:"metadata",class:"cpk:w-full cpk:h-8","data-testid":"copilot-chat-attachment-audio-player"},null,8,Za),p.filename?(e.openBlock(),e.createElementBlock("span",es,e.toDisplayString(p.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",d(p.source.mimeType)||h(p.source.mimeType)?"cpk:cursor-pointer":"cpk:cursor-default"]),"data-testid":"copilot-chat-attachment-document-button",onClick:k=>(d(p.source.mimeType)||h(p.source.mimeType))&&C(p)},[e.createElementVNode("div",ns,e.toDisplayString(e.unref(j.getDocumentIcon)(p.source.mimeType??"")),1),e.createElementVNode("div",os,[e.createElementVNode("span",as,e.toDisplayString(p.filename||"Document"),1),p.size!=null?(e.openBlock(),e.createElementBlock("span",ss,e.toDisplayString(e.unref(j.formatFileSize)(p.size)),1)):e.createCommentVNode("",!0)])],10,ts))],64)):(e.openBlock(),e.createElementBlock("div",rs)),e.createElementVNode("button",{type:"button",class:"cpk:absolute cpk:bg-black/60 cpk:text-white cpk:border-none cpk:rounded-full cpk:w-5 cpk:h-5 cpk:flex cpk:items-center cpk:justify-center cpk:cursor-pointer cpk:text-[10px] cpk:z-20 cpk:top-1 cpk:right-1","aria-label":"Remove attachment",onClick:k=>a("remove-attachment",p.id)}," ✕ ",8,is)],10,Ha))),128))],2)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"cpk:fixed cpk:inset-0 cpk:z-[9999] cpk:flex cpk:items-center cpk:justify-center cpk:bg-black/80","data-testid":"copilot-chat-attachment-lightbox",onClick:u},[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(u,["stop"])}," ✕ "),e.createElementVNode("div",{"data-testid":"copilot-chat-attachment-lightbox-content",onClick:w[0]||(w[0]=e.withModifiers(()=>{},["stop"]))},[r.value.type==="image"?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(j.getSourceUrl)(r.value.source),alt:r.value.filename||"Image attachment",class:"cpk:max-w-[90vw] cpk:max-h-[90vh] cpk:object-contain cpk:rounded-lg","data-testid":"copilot-chat-attachment-lightbox-image"},null,8,ls)):r.value.type==="video"?(e.openBlock(),e.createElementBlock("video",{key:1,src:e.unref(j.getSourceUrl)(r.value.source),controls:"",autoplay:"",class:"cpk:max-w-[90vw] cpk:max-h-[90vh] cpk:rounded-lg","data-testid":"copilot-chat-attachment-lightbox-video"},null,8,cs)):r.value.type==="document"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[l.value&&d(r.value.source.mimeType)&&f.value?(e.openBlock(),e.createElementBlock("iframe",{key:0,src:f.value,title:r.value.filename||"PDF preview",class:"cpk:w-[90vw] cpk:h-[90vh] cpk:max-w-[1000px] cpk:rounded-lg cpk:bg-white","data-testid":"copilot-chat-attachment-lightbox-document-iframe"},null,8,us)):l.value&&h(r.value.source.mimeType)?(e.openBlock(),e.createElementBlock("div",ds,[c.value!==null?(e.openBlock(),e.createElementBlock("pre",ps,e.toDisplayString(c.value),1)):f.value?(e.openBlock(),e.createElementBlock("iframe",{key:1,src:f.value,title:r.value.filename||"Text preview",class:"cpk:w-full cpk:h-[80vh] cpk:border-none","data-testid":"copilot-chat-attachment-lightbox-document-iframe"},null,8,ms)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",fs,[e.createElementVNode("div",gs,e.toDisplayString(e.unref(j.getDocumentIcon)(r.value.source.mimeType??"")),1),e.createElementVNode("div",hs,[e.createElementVNode("div",vs,e.toDisplayString(r.value.filename||"Document"),1),e.createElementVNode("div",ks,e.toDisplayString(r.value.source.mimeType||"Unknown type")+" "+e.toDisplayString(r.value.size!=null?` · ${e.unref(j.formatFileSize)(r.value.size)}`:""),1)]),w[3]||(w[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))}}),bs=["data-message-id"],ys=["aria-expanded"],ws={class:"cpk:font-medium"},Cs={key:0,class:"cpk:inline-flex cpk:items-center cpk:ml-1"},xs={class:"cpk:overflow-hidden"},Ss={key:0,class:"cpk:pb-2 cpk:pt-1"},Ts={class:"cpk:text-sm cpk:text-muted-foreground"},Is={key:0,class:"cpk:inline-flex cpk:items-center cpk:ml-1 cpk:align-middle"},Pn=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 w=Math.floor(g/60),p=Math.round(g%60);return p===0?`${w} minute${w>1?"s":""}`:`${w}m ${p}s`}const a=e.computed(()=>typeof o.message.content=="string"?o.message.content:""),r=e.computed(()=>a.value.length>0),s=e.computed(()=>o.messages[o.messages.length-1]?.id===o.message.id),i=e.computed(()=>!!(o.isRunning&&s.value)),l=e.ref(0),c=e.ref(i.value),f=e.ref(!1);let C=null,u=null;function m(){u&&(clearInterval(u),u=null)}function d(){C!==null&&(l.value=(Date.now()-C)/1e3)}e.watch(i,g=>{if(g){C===null&&(C=Date.now()),m(),u=setInterval(d,1e3),f.value=!1,c.value=!0;return}m(),d(),f.value||(c.value=!1)},{immediate:!0}),e.onBeforeUnmount(()=>{m()});const h=e.computed(()=>i.value?"Thinking…":`Thought for ${n(l.value)}`);function b(){r.value&&(f.value=!0,c.value=!c.value)}return(g,w)=>(e.openBlock(),e.createElementBlock("div",{"data-copilotkit":"",class:"cpk:my-1","data-message-id":t.message.id},[e.renderSlot(g.$slots,"layout",{message:t.message,messages:t.messages,isRunning:t.isRunning,header:{isOpen:c.value,label:h.value,hasContent:r.value,isStreaming:i.value,onClick:r.value?b:void 0},contentView:{isStreaming:i.value,hasContent:r.value,content:a.value},toggle:{isOpen:c.value,contentView:{isStreaming:i.value,hasContent:r.value,content:a.value}}},()=>[e.renderSlot(g.$slots,"header",{isOpen:c.value,label:h.value,hasContent:r.value,isStreaming:i.value,onClick:r.value?b:void 0},()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["cpk:inline-flex cpk:items-center cpk:gap-1 cpk:py-1 cpk:text-sm cpk:text-muted-foreground cpk:transition-colors cpk:select-none",r.value?"cpk:hover:text-foreground cpk:cursor-pointer":"cpk:cursor-default"]),"aria-expanded":r.value?c.value:void 0,onClick:w[0]||(w[0]=p=>r.value?b():void 0)},[e.createElementVNode("span",ws,e.toDisplayString(h.value),1),i.value&&!r.value?(e.openBlock(),e.createElementBlock("span",Cs,[...w[1]||(w[1]=[e.createElementVNode("span",{class:"cpk:w-1.5 cpk:h-1.5 cpk:rounded-full cpk:bg-muted-foreground cpk:animate-pulse"},null,-1)])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(e.unref(oe.ChevronRight),{key:1,class:e.normalizeClass(["cpk:size-3.5 cpk:shrink-0 cpk:transition-transform cpk:duration-200",{"cpk:rotate-90":c.value}])},null,8,["class"])):e.createCommentVNode("",!0)],10,ys)]),e.renderSlot(g.$slots,"toggle",{isOpen:c.value,contentView:{isStreaming:i.value,hasContent:r.value,content:a.value}},()=>[e.createElementVNode("div",{class:"cpk:grid cpk:transition-[grid-template-rows] cpk:duration-200 cpk:ease-in-out",style:e.normalizeStyle({gridTemplateRows:c.value?"1fr":"0fr"})},[e.createElementVNode("div",xs,[e.renderSlot(g.$slots,"content-view",{isStreaming:i.value,hasContent:r.value,content:a.value},()=>[r.value||i.value?(e.openBlock(),e.createElementBlock("div",Ss,[e.createElementVNode("div",Ts,[e.createVNode(e.unref(sn.StreamMarkdown),{content:a.value},null,8,["content"]),i.value&&r.value?(e.openBlock(),e.createElementBlock("span",Is,[...w[2]||(w[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,bs))}}),As=["data-message-id"],Rs=["data-multiline"],Es={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"},Ms={class:"cpk:flex cpk:items-center cpk:gap-1 cpk:justify-end"},$s=["aria-label","title"],Bs=["aria-label","title"],Ns={class:"cpk:flex cpk:items-center cpk:gap-1"},Vs=["disabled"],Fs={class:"cpk:text-sm cpk:text-muted-foreground cpk:px-0 cpk:font-medium"},Ds=["disabled"],Un=e.defineComponent({__name:"CopilotChatUserMessage",props:{message:{},branchIndex:{default:0},numberOfBranches:{default:1}},emits:["edit-message","switch-to-branch"],setup(t,{emit:o}){const n=t,a=o,r=he(),s=e.computed(()=>r.value?.labels??$e),i=e.getCurrentInstance(),l=e.ref(!1);let c=null;const f=e.computed(()=>i?.vnode.props??{}),C=["cpk:inline-flex cpk:h-8 cpk:w-8 cpk:items-center cpk:justify-center cpk:rounded-md cpk:p-0","cpk:cursor-pointer cpk:text-[rgb(93,93,93)] cpk:transition-colors cpk:hover:bg-[#E8E8E8]","cpk:hover:text-[rgb(93,93,93)] cpk:dark:text-[rgb(243,243,243)] cpk:dark:hover:bg-[#303030]","cpk:dark:hover:text-[rgb(243,243,243)] cpk:disabled:pointer-events-none cpk:disabled:opacity-50"].join(" ");function u(A){return A?typeof A=="string"?A:A.map(R=>R&&typeof R=="object"&&"type"in R&&R.type==="text"&&typeof R.text=="string"?R.text:"").filter(R=>R.length>0).join(`
|
|
74
|
+
`):""}const m=e.computed(()=>u(n.message.content)),d=e.computed(()=>m.value.includes(`
|
|
75
|
+
`));function h(A){const R=f.value[A];return Array.isArray(R)?R.length>0:!!R}const b=e.computed(()=>h("onEditMessage")),g=e.computed(()=>n.numberOfBranches>1&&h("onSwitchToBranch")),w=e.computed(()=>n.branchIndex>0),p=e.computed(()=>n.branchIndex<n.numberOfBranches-1);function k(){c&&clearTimeout(c),l.value=!0,c=setTimeout(()=>{l.value=!1,c=null},2e3)}async function v(){if(m.value&&!(typeof navigator>"u"||typeof navigator.clipboard?.writeText!="function"))try{await navigator.clipboard.writeText(m.value),k()}catch(A){console.error("Failed to copy to clipboard:",A)}}function y(){if(!b.value)return;const A={message:n.message};a("edit-message",A)}function x(A){if(!g.value)return;const R={branchIndex:A,numberOfBranches:n.numberOfBranches,message:n.message};a("switch-to-branch",R)}function E(){w.value&&x(n.branchIndex-1)}function B(){p.value&&x(n.branchIndex+1)}return e.onBeforeUnmount(()=>{c&&clearTimeout(c)}),(A,R)=>e.renderSlot(A.$slots,"layout",{message:t.message,content:m.value,isMultiline:d.value,showBranchNavigation:g.value,hasEditAction:b.value,branchIndex:t.branchIndex,numberOfBranches:t.numberOfBranches,canGoPrev:w.value,canGoNext:p.value,onCopy:v,onEdit:y,goPrev:E,goNext:B,copied:l.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},A.$attrs),[e.renderSlot(A.$slots,"message-renderer",{message:t.message,content:m.value,isMultiline:d.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":d.value}]),"data-multiline":d.value?"true":void 0},e.toDisplayString(m.value),11,Rs)]),e.renderSlot(A.$slots,"toolbar",{message:t.message,showBranchNavigation:g.value,hasEditAction:b.value},()=>[e.createElementVNode("div",Es,[e.createElementVNode("div",Ms,[e.renderSlot(A.$slots,"toolbar-items"),e.renderSlot(A.$slots,"copy-button",{onCopy:v,copied:l.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:v},[l.value?(e.openBlock(),e.createBlock(e.unref(oe.Check),{key:0,class:"cpk:size-[18px]"})):(e.openBlock(),e.createBlock(e.unref(oe.Copy),{key:1,class:"cpk:size-[18px]"}))],10,$s)]),b.value?e.renderSlot(A.$slots,"edit-button",{key:0,onEdit:y,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:y},[e.createVNode(e.unref(oe.Edit),{class:"cpk:size-[18px]"})],10,Bs)]):e.createCommentVNode("",!0),g.value?e.renderSlot(A.$slots,"branch-navigation",{key:1,branchIndex:t.branchIndex,numberOfBranches:t.numberOfBranches,canGoPrev:w.value,canGoNext:p.value,goPrev:E,goNext:B},()=>[e.createElementVNode("div",Ns,[e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(C),"cpk:h-6 cpk:w-6 cpk:p-0"]),disabled:!w.value,"aria-label":"Previous branch",title:"Previous branch",onClick:E},[e.createVNode(e.unref(oe.ChevronLeft),{class:"cpk:size-[20px]"})],10,Vs),e.createElementVNode("span",Fs,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:!p.value,"aria-label":"Next branch",title:"Next branch",onClick:B},[e.createVNode(e.unref(oe.ChevronRight),{class:"cpk:size-[20px]"})],10,Ds)])]):e.createCommentVNode("",!0)])])])],16,As)])}}),zn=e.defineComponent({__name:"CopilotChatMessageView",props:{messages:{default:()=>[]},isRunning:{type:Boolean,default:!1}},setup(t){const o=t,{copilotkit:n}=be(),a=he(),r=e.ref(0),s=e.ref(null),i=e.useSlots(),l=e.computed(()=>Object.keys(i)),c=e.computed(()=>a.value?.agentId??j.DEFAULT_AGENT_ID),f=e.computed(()=>{const p=c.value,k=n.value.getAgent(p);return Xt(k,a.value?.threadId)??k});e.watch([c,()=>a.value?.threadId,()=>n.value,()=>n.value.runtimeConnectionStatus],([p,k],v,y)=>{const x=n.value.getAgent(c.value),E=Xt(x,k)??x;if(!E)return;const B=E.subscribe({onStateChanged:()=>{r.value+=1},onRunStartedEvent:()=>{r.value+=1},onRunFinishedEvent:()=>{r.value+=1},onRunErrorEvent:()=>{r.value+=1}});y(()=>B.unsubscribe())},{immediate:!0}),e.watch(()=>n.value,(p,k,v)=>{s.value=p.interruptState;const y=p.subscribe({onInterruptStateChanged:({interruptState:x})=>{s.value=x},onRuntimeConnectionStatusChanged:()=>{r.value+=1}});v(()=>y.unsubscribe())},{immediate:!0});function C(p){const k=new Map;for(const v of p){const y=k.get(v.id);if(y&&v.role==="assistant"&&y.role==="assistant"){const x=v.content||y.content,E=v.toolCalls??y.toolCalls;k.set(v.id,{...y,...v,content:x,toolCalls:E})}else k.set(v.id,v)}return[...k.values()]}const u=e.computed(()=>C(o.messages)),m=e.computed(()=>o.messages[o.messages.length-1]),d=e.computed(()=>o.isRunning&&m.value?.role!=="reasoning");e.watch([()=>o.messages.length,()=>u.value.length],([p,k])=>{process.env.NODE_ENV==="development"&&k<p&&console.warn(`CopilotChatMessageView: Deduplicated ${p-k} message(s) with duplicate IDs.`)},{immediate:!0});function h(p){r.value+=0;const k=c.value,v=a.value?.threadId??"",y=n.value,x=y.getRunIdForMessage(k,v,p.id)??y.getRunIdsForThread(k,v).slice(-1)[0],E=x??`missing-run-id:${p.id}`,B=f.value??y.getAgent(k),A=x&&B?B.messages.filter(M=>y.getRunIdForMessage(k,v,M.id)===x).map(M=>M.id):[p.id],R=B?B.messages.findIndex(M=>M.id===p.id):-1,P=R>=0?R:0,Q=x?Math.max(A.indexOf(p.id),0):0,z=x?A.length:1,I=x?y.getStateByRun(k,v,x):void 0;return{runId:E,messageIndex:P,messageIndexInRun:Q,numberOfMessagesInRun:z,agentId:k,stateSnapshot:I}}function b(p){return`activity-${p}`}function g(p,k){if(r.value+=0,i[k==="before"?"message-before":"message-after"])return null;const y=c.value,E=[...n.value.renderCustomMessages].filter(B=>B.agentId===void 0||B.agentId===y).sort((B,A)=>{const R=B.agentId!==void 0,P=A.agentId!==void 0;return R===P?0:R?-1:1})[0];return E?.render?{renderer:E.render,props:{...h(p),message:p,position:k}}:null}function w(p){r.value+=0;const k=c.value,v=[...n.value.renderActivityMessages].filter(x=>x.activityType===p.activityType&&(x.agentId===void 0||x.agentId===k)).sort((x,E)=>{const B=x.agentId!==void 0,A=E.agentId!==void 0;return B===A?0:B?-1:1})[0];if(!v)return null;const y=v.content.safeParse(p.content);return y.success?{renderer:v.render,props:{activityType:p.activityType,content:y.data,message:p,agent:f.value}}:null}return(p,k)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:flex cpk:flex-col"},p.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,v=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:v.id},[e.unref(i)["message-before"]?e.renderSlot(p.$slots,"message-before",{key:0,message:v,position:"before",runId:h(v).runId,messageIndex:h(v).messageIndex,messageIndexInRun:h(v).messageIndexInRun,numberOfMessagesInRun:h(v).numberOfMessagesInRun,agentId:h(v).agentId,stateSnapshot:h(v).stateSnapshot}):g(v,"before")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(g(v,"before").renderer),e.mergeProps({key:1,ref_for:!0},g(v,"before").props),null,16)):e.createCommentVNode("",!0),v.role==="assistant"?e.renderSlot(p.$slots,"assistant-message",{key:2,message:v,messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(Bn,{message:v,messages:t.messages,"is-running":t.isRunning},e.createSlots({_:2},[e.renderList(l.value,y=>({name:y,fn:e.withCtx(x=>[e.renderSlot(p.$slots,y,e.mergeProps({ref_for:!0},x))])}))]),1032,["message","messages","is-running"])]):v.role==="user"?e.renderSlot(p.$slots,"user-message",{key:3,message:v},()=>[e.createVNode(Un,{message:v},e.createSlots({_:2},[e.renderList(l.value,y=>({name:y,fn:e.withCtx(x=>[e.renderSlot(p.$slots,y,e.mergeProps({ref_for:!0},x))])}))]),1032,["message"])]):v.role==="reasoning"?e.renderSlot(p.$slots,"reasoning-message",{key:4,message:v,messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(Pn,{message:v,messages:t.messages,"is-running":t.isRunning},null,8,["message","messages","is-running"])]):v.role==="activity"?e.renderSlot(p.$slots,b(v.activityType),{key:5,activityType:v.activityType,content:v.content,message:v,agent:f.value},()=>[e.renderSlot(p.$slots,"activity-message",{activityType:v.activityType,content:v.content,message:v,agent:f.value},()=>[w(v)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(v).renderer),e.mergeProps({key:0,ref_for:!0},w(v).props),null,16)):e.createCommentVNode("",!0)])]):e.createCommentVNode("",!0),e.unref(i)["message-after"]?e.renderSlot(p.$slots,"message-after",{key:6,message:v,position:"after",runId:h(v).runId,messageIndex:h(v).messageIndex,messageIndexInRun:h(v).messageIndexInRun,numberOfMessagesInRun:h(v).numberOfMessagesInRun,agentId:h(v).agentId,stateSnapshot:h(v).stateSnapshot}):g(v,"after")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(g(v,"after").renderer),e.mergeProps({key:7,ref_for:!0},g(v,"after").props),null,16)):e.createCommentVNode("",!0)],64))),128)),s.value?e.renderSlot(p.$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),d.value?e.renderSlot(p.$slots,"cursor",{key:1},()=>[k[0]||(k[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))}}),Os=["type","aria-busy","disabled"],Ls={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"},Ps={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"},Us={class:"cpk:whitespace-nowrap cpk:font-medium cpk:leading-none"},jn=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,r)=>(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",Ls,[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",Ps,[e.renderSlot(a.$slots,"icon",{},()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))])])):e.createCommentVNode("",!0),e.createElementVNode("span",Us,[e.renderSlot(a.$slots,"default")])],16,Os))}}),Ye=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatSuggestionView",props:{suggestions:{},loadingIndexes:{default:()=>[]}},emits:["select-suggestion"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.computed(()=>new Set(n.loadingIndexes)),i=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",r.class]),l=e.computed(()=>{const{class:u,...m}=r;return m});function c(u,m){return s.value.has(u)||m.isLoading===!0}function f(u,m){a("select-suggestion",u,m)}const C=e.computed(()=>({suggestions:n.suggestions,loadingIndexes:n.loadingIndexes,onSelectSuggestion:f,containerClass:i.value,containerAttrs:l.value}));return(u,m)=>e.renderSlot(u.$slots,"layout",e.normalizeProps(e.guardReactiveProps(C.value)),()=>[e.renderSlot(u.$slots,"container",e.normalizeProps(e.guardReactiveProps(C.value)),()=>[e.createElementVNode("div",e.mergeProps({"data-copilotkit":"","data-testid":"copilot-chat-suggestion-view",class:i.value},l.value),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.suggestions,(d,h)=>e.renderSlot(u.$slots,"suggestion",{key:`${d.title}-${h}`,suggestion:d,index:h,isLoading:c(h,d),onSelect:()=>f(d,h)},()=>[e.createVNode(jn,{"is-loading":c(h,d),type:"button",onClick:b=>f(d,h)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.title),1)]),_:2},1032,["is-loading","onClick"])])),128))],16)])])}}),zs=["pin-to-bottom","pin-to-send","none"];function js(t){return t===void 0||t===!0?"pin-to-bottom":t===!1?"none":zs.includes(t)?t:"pin-to-bottom"}const _s={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"},Hs={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"},Ws={class:"cpk:w-full cpk:max-w-3xl cpk:flex cpk:flex-col cpk:items-center"},qs={class:"cpk:mb-6"},Ks={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},Gs={class:"cpk:w-full"},Js={key:0,class:"cpk:mt-4 cpk:flex cpk:justify-center"},Qs={class:"cpk:px-4 cpk:@3xl:px-0 cpk:[div[data-sidebar-chat]_&]:px-8 cpk:[div[data-popup-chat]_&]:px-6"},Xs={class:"cpk:max-w-3xl cpk:mx-auto"},Ys={key:0,class:"cpk:mt-4 cpk:pl-0 cpk:pr-4 cpk:@3xl:px-0"},Zs={key:0,class:"cpk:max-w-3xl cpk:mx-auto cpk:w-full cpk:pointer-events-auto"},er=16,tr=12,tt=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:()=>[]},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,r=he(),s=e.computed(()=>r.value?.labels??$e),i=e.getCurrentInstance(),l=e.useSlots(),c=e.ref(null),f=e.ref(null),C=e.ref(null),u=e.ref(null),m=e.ref(0),d=e.ref(!0),h=e.computed(()=>n.inputValue!==void 0),b=e.ref(n.inputValue??""),g=e.computed(()=>js(n.autoScroll)),w=e.computed(()=>g.value==="pin-to-bottom"),p=e.computed(()=>g.value==="pin-to-send");Aa({scrollRef:c,contentRef:f,spacerRef:C,topOffset:16});const{isKeyboardOpen:k,keyboardHeight:v}=On(),y=e.computed(()=>k.value?v.value:0),x=e.computed(()=>h.value?n.inputValue??"":b.value),E=e.computed(()=>!n.isConnecting&&!n.isRunning&&Array.isArray(n.suggestions)&&n.suggestions.length>0),B=e.computed(()=>Array.isArray(n.attachments)&&n.attachments.length>0),A=e.computed(()=>i?.vnode.props??{}),R=e.computed(()=>Object.keys(l).filter(O=>O!=="message-view"&&O!=="scroll-view"&&O!=="feather"&&O!=="scroll-to-bottom-button"&&O!=="input"&&O!=="suggestion-view"&&O!=="welcome-screen"&&O!=="welcome-message")),P=e.computed(()=>n.messages.length===0&&n.welcomeScreen!==!1&&!n.isConnecting&&!n.hasExplicitThreadId),Q=e.computed(()=>de("onAddFile")),z=e.computed(()=>de("onStop")),I=e.computed(()=>de("onStartTranscribe")),M=e.computed(()=>de("onCancelTranscribe")),U=e.computed(()=>de("onFinishTranscribe")),G=e.computed(()=>typeof n.onFinishTranscribeWithAudio=="function"),T=e.computed(()=>`${m.value+(E.value?4:32)}px`),$=e.computed(()=>!P.value&&!d.value);let D=null,q=null;function re(){if(typeof ResizeObserver>"u")return;D?.disconnect(),D=null;const O=u.value;O&&(D=new ResizeObserver(J=>{const xe=d.value,Be=J[0]?.contentRect?.height;typeof Be=="number"?m.value=Be:H(),_(),w.value&&xe&&W("auto")}),D.observe(O))}function V(){if(typeof ResizeObserver>"u")return;q?.disconnect(),q=null;const O=f.value;O&&(q=new ResizeObserver(()=>{const J=d.value;_(),w.value&&J&&W("auto")}),q.observe(O))}e.watch(P,async O=>{O||(await e.nextTick(),H(),re(),V())}),e.watch(()=>n.inputValue,O=>{h.value&&(b.value=O??"")}),e.watch([()=>n.messages,()=>n.suggestions,()=>n.isRunning],async()=>{const O=d.value;await e.nextTick(),!(!w.value||!O)&&(W("auto"),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{W("auto")}))},{deep:!0});function _(){const O=c.value;if(!O){d.value=!0;return}const J=O.scrollHeight-O.scrollTop-O.clientHeight;d.value=J<=tr}function H(){const O=u.value;m.value=O?.offsetHeight??0}function W(O="smooth"){const J=c.value;J&&(typeof J.scrollTo=="function"?J.scrollTo({top:J.scrollHeight,behavior:O}):J.scrollTop=J.scrollHeight,_())}function ae(){_()}function de(O){const J=A.value[O];return Array.isArray(J)?J.length>0:!!J}function pe(O){h.value||(b.value=O),a("input-change",O)}function ge(O){a("submit-message",O)}function ye(){a("stop")}function F(O,J){a("select-suggestion",O,J)}function te(){a("add-file")}function ee(O){n.onDragOver?.(O)}function Se(O){n.onDragLeave?.(O)}function Ie(O){n.onDrop?.(O)}function fe(){a("start-transcribe")}function se(){a("cancel-transcribe")}function ie(){a("finish-transcribe")}async function me(O){await n.onFinishTranscribeWithAudio?.(O)}const Ae=e.computed(()=>{const O={"onUpdate:modelValue":pe,onSubmitMessage:ge};return z.value&&(O.onStop=ye),Q.value&&(O.onAddFile=te),I.value&&(O.onStartTranscribe=fe),M.value&&(O.onCancelTranscribe=se),U.value&&(O.onFinishTranscribe=ie),G.value&&(O.onFinishTranscribeWithAudio=me),O});return e.onMounted(async()=>{await e.nextTick(),H(),_(),w.value&&(W("auto"),typeof requestAnimationFrame=="function"&&requestAnimationFrame(()=>{W("auto")})),re(),V()}),e.onBeforeUnmount(()=>{D?.disconnect(),q?.disconnect(),D=null,q=null}),(O,J)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({"data-copilotkit":"",class:"cpk:@container cpk:relative cpk:h-full","data-testid":"copilot-chat-view"},O.$attrs,{onDragover:ee,onDragleave:Se,onDrop:Ie}),[t.dragOver?(e.openBlock(),e.createElementBlock("div",_s,[...J[3]||(J[3]=[e.createElementVNode("span",{class:"cpk:text-sm cpk:font-medium cpk:text-primary/70"}," Drop files here ",-1)])])):e.createCommentVNode("",!0),P.value?e.renderSlot(O.$slots,"welcome-screen",{key:1,suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,attachments:t.attachments??[],modelValue:x.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,onUpdateModelValue:pe,onSubmitMessage:ge,onStop:z.value?ye:void 0,onAddFile:te,onStartTranscribe:fe,onCancelTranscribe:se,onFinishTranscribe:ie,onFinishTranscribeWithAudio:me,onSelectSuggestion:F},()=>[e.createElementVNode("div",Hs,[e.createElementVNode("div",Ws,[e.createElementVNode("div",qs,[e.renderSlot(O.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",Ks,e.toDisplayString(s.value.welcomeMessageText),1)])]),e.createElementVNode("div",Gs,[B.value?(e.openBlock(),e.createBlock(Tt,{key:0,attachments:t.attachments??[],"class-name":"cpk:mb-2",onRemoveAttachment:J[0]||(J[0]=xe=>t.onRemoveAttachment&&t.onRemoveAttachment(xe))},null,8,["attachments"])):e.createCommentVNode("",!0),e.renderSlot(O.$slots,"input",{modelValue:x.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,attachments:t.attachments??[],onUpdateModelValue:pe,onSubmitMessage:ge,onStop:z.value?ye:void 0,onAddFile:te,onStartTranscribe:fe,onCancelTranscribe:se,onFinishTranscribe:ie,onFinishTranscribeWithAudio:me},()=>[e.createVNode(Xe,e.mergeProps({"model-value":x.value,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0,"keyboard-height":y.value},Ae.value),null,16,["model-value","is-running","mode","tools-menu","keyboard-height"])])]),E.value?(e.openBlock(),e.createElementBlock("div",Js,[e.renderSlot(O.$slots,"suggestion-view",{suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,onSelectSuggestion:F},()=>[e.createVNode(Ye,{suggestions:t.suggestions,"loading-indexes":t.suggestionLoadingIndexes,onSelectSuggestion:F},null,8,["suggestions","loading-indexes"])])])):e.createCommentVNode("",!0)])])]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(O.$slots,"scroll-view",{messages:t.messages,isRunning:t.isRunning,suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,messagePaddingBottom:T.value,showScrollToBottomButton:$.value,onSelectSuggestion:F,onScroll:ae,scrollToBottom:W},()=>[e.createElementVNode("div",{ref_key:"scrollContainerRef",ref:c,"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:ae},[e.createElementVNode("div",Qs,[e.createElementVNode("div",{ref_key:"scrollContentRef",ref:f,"data-testid":"copilot-scroll-content",style:e.normalizeStyle({paddingBottom:T.value})},[e.createElementVNode("div",Xs,[e.renderSlot(O.$slots,"message-view",{messages:t.messages,isRunning:t.isRunning},()=>[e.createVNode(zn,{messages:t.messages,"is-running":t.isRunning},e.createSlots({_:2},[e.renderList(R.value,xe=>({name:xe,fn:e.withCtx(Be=>[e.renderSlot(O.$slots,xe,e.normalizeProps(e.guardReactiveProps(Be)))])}))]),1032,["messages","is-running"])]),E.value?(e.openBlock(),e.createElementBlock("div",Ys,[e.renderSlot(O.$slots,"suggestion-view",{suggestions:t.suggestions,loadingIndexes:t.suggestionLoadingIndexes,onSelectSuggestion:F},()=>[e.createVNode(Ye,{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:F},null,8,["suggestions","loading-indexes"])])])):e.createCommentVNode("",!0)])],4),p.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"spacerRef",ref:C,"data-pin-to-send-spacer":"","aria-hidden":"true",style:{height:"0px",flex:"0 0 auto"}},null,512)):e.createCommentVNode("",!0)])],544)]),e.renderSlot(O.$slots,"feather",{},()=>[J[4]||(J[4]=e.createElementVNode("div",{"data-testid":"copilot-chat-view-feather"},null,-1))]),$.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:`${m.value+er}px`})},[e.renderSlot(O.$slots,"scroll-to-bottom-button",{onClick:()=>W()},()=>[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:J[1]||(J[1]=xe=>W())},[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:u,class:"cpk:absolute cpk:bottom-0 cpk:left-0 cpk:right-0 cpk:z-20 cpk:pointer-events-none","data-testid":"copilot-input-overlay"},[B.value?(e.openBlock(),e.createElementBlock("div",Zs,[e.createVNode(Tt,{attachments:t.attachments??[],"class-name":"cpk:px-4",onRemoveAttachment:J[2]||(J[2]=xe=>t.onRemoveAttachment&&t.onRemoveAttachment(xe))},null,8,["attachments"])])):e.createCommentVNode("",!0),e.renderSlot(O.$slots,"input",{modelValue:x.value,isRunning:t.isRunning,inputMode:t.inputMode,inputToolsMenu:t.inputToolsMenu,attachments:t.attachments??[],onUpdateModelValue:pe,onSubmitMessage:ge,onStop:z.value?ye:void 0,onAddFile:te,onStartTranscribe:fe,onCancelTranscribe:se,onFinishTranscribe:ie,onFinishTranscribeWithAudio:me},()=>[e.createVNode(Xe,e.mergeProps({"model-value":x.value,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0,"keyboard-height":y.value,"bottom-anchored":!0},Ae.value),null,16,["model-value","is-running","mode","tools-menu","keyboard-height"])])],512)],64))],16))}}),nr=["accept"],or={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"}},$t=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,r=e.useAttrs(),s=e.useSlots(),i=he(),{copilotkit:l}=be(),c=e.computed(()=>Object.keys(s).filter(L=>L!=="chat-view")),f=e.ref(j.randomUUID()),C=e.ref("input"),u=e.ref(n.inputValue??""),m=e.ref(null),d=e.ref(!1),h=e.ref(!1),b=e.ref(!1),g=e.shallowRef(null),w=e.computed(()=>n.agentId??i.value?.agentId??j.DEFAULT_AGENT_ID),p=e.computed(()=>n.threadId??i.value?.threadId),k=e.computed(()=>p.value??f.value),v=e.computed(()=>!!n.threadId||!!i.value?.hasExplicitThreadId),y=e.ref(null),x=e.computed(()=>v.value&&y.value!==k.value),E=In(e.computed(()=>n.labels)),B=e.computed(()=>E.value),{agent:A}=gt({agentId:w,threadId:k,throttleMs:e.computed(()=>n.throttleMs)}),{suggestions:R}=Fn({agentId:w}),P=et(),Q=e.computed(()=>P.value.checkFeature("chat"));e.watch(Q,L=>{L||console.warn('[CopilotKit] Warning: "chat" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0});const z=e.computed(()=>l.value.audioFileTranscriptionEnabled),I=e.computed(()=>typeof window<"u"&&typeof MediaRecorder<"u"),M=e.computed(()=>z.value&&I.value),{attachments:U,enabled:G,dragOver:T,fileInputRef:$,containerRef:D,handleFileUpload:q,handleDragOver:re,handleDragLeave:V,handleDrop:_,removeAttachment:H,consumeAttachments:W}=Dn({config:e.computed(()=>n.attachments)}),ae=e.computed(()=>d.value?"processing":C.value),de=e.ref(0),pe=e.computed(()=>[...A.value?.messages??[]]),ge=e.computed(()=>(de.value,A.value?.isRunning??!1)),ye=e.computed(()=>ge.value&&pe.value.length>0),F=e.computed(()=>{for(let L=pe.value.length-1;L>=0;L--){const Y=pe.value[L];if(Y?.role==="user")return Y.id}return null}),te=e.ref(0);let ee=F.value;e.watch(F,L=>{L&&L!==ee&&(te.value+=1,ee=L)});const Se=e.computed(()=>({id:F.value,sendNonce:te.value}));e.provide(Ln,Se),e.watch(()=>A.value,(L,Y,Z)=>{if(!L)return;const le=L.subscribe({onRunStartedEvent:()=>{de.value+=1},onRunFinishedEvent:()=>{de.value+=1},onRunErrorEvent:()=>{de.value+=1}});Z(()=>le.unsubscribe())},{immediate:!0}),e.watch(()=>n.inputValue,L=>{L!==void 0&&(u.value=L)}),e.watch([()=>n.threadId,()=>i.value?.threadId],([L,Y],Z)=>{L||Y||Z&&(Z[0]||Z[1])&&(f.value=j.randomUUID())}),e.watch([()=>l.value,w,()=>n.onError],([L,Y,Z],le,Ce)=>{if(!Z)return;const Ge=L.subscribe({onError:Ne=>{(Ne.context?.agentId===Y||!Ne.context?.agentId)&&Z({error:Ne.error,code:Ne.code,context:Ne.context})}});Ce(()=>Ge.unsubscribe())},{immediate:!0}),e.watch([h,()=>l.value,()=>A.value,k,v],([L,Y,Z,le,Ce],Ge,Ne)=>{if(!L||typeof window>"u"||!Z||!Ce)return;const ot=Le.AbstractAgent.prototype,Ue=Z,at=Ue.connect!==ot.connect,Je=Ue.connectAgent!==ot.connectAgent;if(!at&&!Je){y.value=le;return}const Fe=g.value,ht=Fe&&Fe.core===Y&&Fe.agent===Z&&Fe.threadId===le;let Me;if(ht&&Fe)Me=Fe;else{const Re=new AbortController;Z instanceof Le.HttpAgent&&(Z.abortController=Re),Me={core:Y,agent:Z,threadId:le,abortController:Re,detached:!1},g.value=Me,Y.connectAgent({agent:Z}).catch(S=>{Me.detached||S instanceof Le.AGUIConnectNotImplementedError||console.error("CopilotChat: connectAgent failed",S)}).finally(()=>{if(Me.detached)return;(typeof requestAnimationFrame=="function"?requestAnimationFrame:N=>setTimeout(N,16))(()=>{Me.detached||(y.value=Me.threadId)})})}Ne(()=>{const Re=g.value;!Re||Re!==Me||!(b.value||l.value!==Re.core||A.value!==Re.agent||k.value!==Re.threadId)||(Re.detached=!0,Re.abortController.abort(),Re.agent.detachActiveRun?.(),g.value=null)})},{immediate:!0});const Ie=e.ref(void 0);e.watch([k,v,()=>A.value],([L,Y,Z])=>{const le=Ie.value;Ie.value=L,Z&&(Y||le!==void 0&&L!==le&&Z.setMessages([]))},{immediate:!0}),e.onBeforeUnmount(()=>{b.value=!0}),e.onMounted(()=>{h.value=!0}),e.watch(m,(L,Y,Z)=>{if(!L)return;const le=setTimeout(()=>{m.value=null},5e3);Z(()=>clearTimeout(le))});async function fe(){const L=A.value;if(L)try{const Y=g.value;Y&&Y.agent===L&&Y.threadId===k.value&&(Y.detached=!0,Y.abortController.abort(),g.value=null,await Y.agent.detachActiveRun?.()),await l.value.runAgent({agent:L})}catch(Y){console.error("CopilotChat: runAgent failed",Y)}}async function se(L){if(U.value.some(le=>le.status==="uploading")){console.error("[CopilotKit] Cannot send while attachments are uploading");return}if(a("submit-message",L),!A.value){console.error("[CopilotKit] Cannot send message: no agent available");return}const Z=W();if(Z.length>0){const le=[];L.trim()&&le.push({type:"text",text:L});for(const Ce of Z)le.push({type:Ce.type,source:Ce.source,metadata:{...Ce.filename?{filename:Ce.filename}:{},...Ce.metadata}});A.value.addMessage({id:j.randomUUID(),role:"user",content:le})}else A.value.addMessage({id:j.randomUUID(),role:"user",content:L});u.value="",await fe()}async function ie(L,Y){a("select-suggestion",L,Y),A.value?.addMessage({id:j.randomUUID(),role:"user",content:L.message}),await fe()}function me(){const L=A.value;if(L)try{l.value.stopAgent({agent:L})}catch(Y){console.error("CopilotChat: stopAgent failed",Y);try{L.abortRun()}catch(Z){console.error("CopilotChat: abortRun fallback failed",Z)}}}function Ae(){a("stop"),ye.value&&me()}function O(L){u.value=L,a("input-change",L)}function J(){a("add-file"),G.value&&setTimeout(()=>{$.value?.click()},100)}function xe(){m.value=null,C.value="transcribe",a("start-transcribe")}function Be(){m.value=null,C.value="input",a("cancel-transcribe")}function qe(){C.value="input",a("finish-transcribe")}async function nt(L){if(n.onFinishTranscribeWithAudio){await n.onFinishTranscribeWithAudio(L);return}d.value=!0;try{m.value=null;const Y=await Sa(l.value,L),Z=u.value.trim();u.value=Z?`${Z} ${Y.text}`:Y.text}catch(Y){if(console.error("CopilotChat: Transcription failed",Y),Y instanceof He){const{code:Z,retryable:le,message:Ce}=Y.info;switch(Z){case j.TranscriptionErrorCode.RATE_LIMITED:m.value="Too many requests. Please wait a moment.";break;case j.TranscriptionErrorCode.AUTH_FAILED:m.value="Authentication error. Please check your configuration.";break;case j.TranscriptionErrorCode.AUDIO_TOO_LONG:m.value="Recording is too long. Please try a shorter recording.";break;case j.TranscriptionErrorCode.AUDIO_TOO_SHORT:m.value="Recording is too short. Please try again.";break;case j.TranscriptionErrorCode.INVALID_AUDIO_FORMAT:m.value="Audio format not supported.";break;case j.TranscriptionErrorCode.SERVICE_NOT_CONFIGURED:m.value="Transcription service is not available.";break;case j.TranscriptionErrorCode.NETWORK_ERROR:m.value="Network error. Please check your connection.";break;default:m.value=le?"Transcription failed. Please try again.":Ce}}else m.value="Transcription failed. Please try again."}finally{d.value=!1}}const we=e.computed(()=>({messages:pe.value,autoScroll:n.autoScroll,isRunning:ge.value,suggestions:R.value,suggestionLoadingIndexes:[],welcomeScreen:n.welcomeScreen,attachments:U.value,dragOver:T.value,inputValue:u.value,inputMode:ae.value,inputToolsMenu:n.inputToolsMenu,isConnecting:x.value,hasExplicitThreadId:v.value,onSubmitMessage:se,onStop:ye.value?Ae:void 0,onInputChange:O,onSelectSuggestion:ie,onRemoveAttachment:H,onAddFile:G.value?J:void 0,onDragOver:G.value?re:void 0,onDragLeave:G.value?V:void 0,onDrop:G.value?_:void 0,onStartTranscribe:M.value?xe:void 0,onCancelTranscribe:M.value?Be:void 0,onFinishTranscribe:M.value?qe:void 0,onFinishTranscribeWithAudio:M.value?nt:void 0})),Ke=e.computed(()=>{const L={...r,onSubmitMessage:se,onInputChange:O,onSelectSuggestion:ie};return ye.value&&(L.onStop=Ae),G.value&&(L.onAddFile=J,L.attachments=U.value,L.onRemoveAttachment=H,L.dragOver=T.value,L.onDragOver=re,L.onDragLeave=V,L.onDrop=_),M.value&&(L.onStartTranscribe=xe,L.onCancelTranscribe=Be,L.onFinishTranscribe=qe),L});return(L,Y)=>(e.openBlock(),e.createBlock(ft,{"agent-id":w.value,"thread-id":k.value,"has-explicit-thread-id":v.value,labels:B.value},{default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"attachmentContainerRef",ref:D,style:{display:"contents"}},[e.unref(G)?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"fileInputRef",ref:$,type:"file",multiple:"",accept:n.attachments?.accept??"*/*",style:{display:"none"},onChange:Y[0]||(Y[0]=Z=>{e.unref(q)(Z)})},null,40,nr)):e.createCommentVNode("",!0),Q.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Mt,{key:1,"feature-name":"Chat"})),m.value?(e.openBlock(),e.createElementBlock("div",or,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0),e.renderSlot(L.$slots,"chat-view",e.normalizeProps(e.guardReactiveProps(we.value)),()=>[e.createVNode(tt,e.mergeProps(Ke.value,{messages:we.value.messages,"auto-scroll":we.value.autoScroll,"is-running":we.value.isRunning,suggestions:we.value.suggestions,"suggestion-loading-indexes":we.value.suggestionLoadingIndexes,"welcome-screen":we.value.welcomeScreen,"input-value":we.value.inputValue,"input-mode":we.value.inputMode,"input-tools-menu":we.value.inputToolsMenu,"is-connecting":we.value.isConnecting,"has-explicit-thread-id":we.value.hasExplicitThreadId,"on-finish-transcribe-with-audio":we.value.onFinishTranscribeWithAudio}),e.createSlots({_:2},[e.renderList(c.value,Z=>({name:Z,fn:e.withCtx(le=>[e.renderSlot(L.$slots,Z,e.normalizeProps(e.guardReactiveProps(le)))])}))]),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"]))}}),ar=["src"],sr=["src"],rr={key:0,class:"cpk:text-xs cpk:text-muted-foreground cpk:truncate cpk:max-w-[300px]","data-testid":"copilot-chat-attachment-renderer-audio-filename"},ir=["src"],lr={class:"cpk:text-xs cpk:font-bold cpk:uppercase","data-testid":"copilot-chat-attachment-renderer-document-icon"},cr={class:"cpk:text-sm cpk:text-muted-foreground cpk:truncate","data-testid":"copilot-chat-attachment-renderer-document-label"},ur=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(()=>j.getSourceUrl(o.source)),r=e.computed(()=>o.filename||o.source.mimeType||"Unknown type");return(s,i)=>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:i[0]||(i[0]=l=>n.value=!0)},null,42,ar)):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"},[...i[1]||(i[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,sr),o.filename?(e.openBlock(),e.createElementBlock("span",rr,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,ir)):(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",lr,e.toDisplayString(e.unref(j.getDocumentIcon)(o.source.mimeType??"")),1),e.createElementVNode("span",cr,e.toDisplayString(r.value),1)],2))}});function _e(t,o,n){n.value=o(t.getState());const a=t.select(o).subscribe(()=>{n.value=o(t.getState())});e.onScopeDispose(()=>a.unsubscribe())}function _n(t){const{copilotkit:o}=be(),n=ue.ɵcreateThreadStore({fetch:globalThis.fetch}),a=e.computed(()=>e.toValue(t.agentId)),r=e.computed(()=>e.toValue(t.includeArchived)),s=e.computed(()=>e.toValue(t.limit)),i=e.computed(()=>e.toValue(t.enabled)??!0),l=e.computed(()=>o.value.threadEndpoints?.list!==!1),c=e.computed(()=>o.value.threadEndpoints?.mutations!==!1),f=e.computed(()=>!!o.value.runtimeUrl&&o.value.runtimeConnectionStatus===ue.CopilotKitCoreRuntimeConnectionStatus.Connected&&!l.value),C=e.computed(()=>f.value?new Error("Thread endpoints are not available on this CopilotKit runtime"):null),u=e.computed(()=>c.value?null:new Error("Thread mutations are not available on this CopilotKit runtime")),m=e.computed(()=>JSON.stringify(Object.entries(o.value.headers??{}).sort(([R],[P])=>R.localeCompare(P)))),d=e.ref([]),h=e.ref(!1),b=e.ref(null),g=e.ref(!1),w=e.ref(!1),p=e.ref(!1);_e(n,ue.ɵselectThreads,d),_e(n,ue.ɵselectThreadsIsLoading,h),_e(n,ue.ɵselectThreadsError,b),_e(n,ue.ɵselectHasNextPage,g),_e(n,ue.ɵselectIsFetchingNextPage,w),_e(n,ue.ɵselectIsMutating,p),n.start(),e.onScopeDispose(()=>{n.stop()}),e.watch([i,a],([R,P],Q,z)=>{R&&(o.value.registerThreadStore(P,n),z(()=>{o.value.unregisterThreadStore(P)}))},{immediate:!0});const k=e.ref(!1);e.watch([()=>o.value.runtimeUrl,()=>o.value.runtimeConnectionStatus,m,()=>o.value.intelligence?.wsUrl,a,r,s,i,l],([R,P,,Q,z,I,M,U,G])=>{if(!R||!U){n.setContext(null),k.value=!1;return}if(P!==ue.CopilotKitCoreRuntimeConnectionStatus.Connected)return;if(!G){n.setContext(null),k.value=!1;return}const T={runtimeUrl:R,headers:{...o.value.headers},wsUrl:Q,agentId:z,includeArchived:I,limit:M};n.setContext(T),k.value=!0},{immediate:!0});const v=e.computed(()=>o.value.runtimeUrl?null:new Error("Runtime URL is not configured")),y=e.computed(()=>!!o.value.runtimeUrl&&i.value&&!f.value&&!k.value),x=e.computed(()=>v.value||C.value?!1:y.value||h.value),E=e.computed(()=>v.value??C.value??b.value),B=e.computed(()=>b.value);function A(R){return(...P)=>u.value?Promise.reject(u.value):R(...P)}return{threads:e.computed(()=>d.value.map(({id:R,agentId:P,name:Q,archived:z,createdAt:I,updatedAt:M,lastRunAt:U})=>({id:R,agentId:P,name:Q,archived:z,createdAt:I,updatedAt:M,...U!==void 0?{lastRunAt:U}:{}}))),isLoading:x,error:E,listError:B,hasMoreThreads:g,isFetchingMoreThreads:w,isMutating:p,fetchMoreThreads:()=>n.fetchNextPage(),refetchThreads:()=>n.refetchThreads(),startNewThread:()=>n.startNewThread(),renameThread:A((R,P)=>n.renameThread(R,P)),archiveThread:A(R=>n.archiveThread(R)),unarchiveThread:A(R=>n.unarchiveThread(R)),deleteThread:A(R=>n.deleteThread(R))}}const Zt="copilot-chat-input-textarea",dr="copilot-chat-view",pr=e.defineComponent({__name:"CopilotThreadsDrawer",props:{agentId:{},onThreadSelect:{},onNewThread:{},onLicensed:{},licenseUrl:{},label:{},limit:{},dataTestId:{default:"copilot-threads-drawer"}},setup(t){const o=t,n=he(),a=et(),r=e.computed(()=>{const I=a.value.status;return(I==="valid"||I==="expiring")&&a.value.checkFeature("threads")}),s=e.computed(()=>a.value.status===null),i=e.computed(()=>o.agentId??n.value?.agentId??j.DEFAULT_AGENT_ID),l=e.computed(()=>n.value?.threadId??null),c=e.ref(!1),f=e.computed(()=>n.value?n.value.drawerOpen:c.value);function C(I){n.value?n.value.setDrawerOpen?.(I):c.value=I}const u=_n({agentId:i,includeArchived:!0,enabled:r,limit:()=>o.limit});function m(I){return{id:I.id,name:I.name,archived:I.archived,createdAt:I.createdAt,updatedAt:I.updatedAt,...I.lastRunAt!==void 0?{lastRunAt:I.lastRunAt}:{}}}const d=e.computed(()=>u.threads.value.map(m)),h=e.ref(!1),b=e.ref(null),g=e.ref(null);e.onMounted(async()=>{const I=await Promise.resolve().then(()=>require("./index-LFxZI63k.cjs"));I.defineCopilotKitThreadsDrawer(),b.value=I.COPILOTKIT_THREADS_DRAWER_TAG,h.value=!0}),e.watchEffect(()=>{const I=g.value;I&&(I.threads=d.value,I.loading=u.isLoading.value||s.value,I.error=u.listError.value?.message??null,I.activeThreadId=l.value,I.licensed=r.value||s.value,I.hasMore=u.hasMoreThreads.value,I.fetchingMore=u.isFetchingMoreThreads.value,I.open=f.value,o.label!==void 0&&(I.label=o.label),o.licenseUrl!==void 0&&(I.licenseUrl=o.licenseUrl))},{flush:"post"});const w=n.value?.registerDrawer?.();w&&e.onScopeDispose(w);function p(I){if(typeof document>"u")return null;const M=I?.closest?.(`[data-testid="${dr}"]`);if(M){const U=M.querySelector(`[data-testid="${Zt}"]`);if(U)return U}return document.querySelector(`[data-testid="${Zt}"]`)}function k(){p(g.value)?.focus()}function v(I){const{threadId:M}=I.detail;o.onThreadSelect?o.onThreadSelect(M):n.value?.setActiveThreadId?.(M,{explicit:!0}),k()}function y(){u.startNewThread(),o.onNewThread?o.onNewThread():n.value?.startNewThread?.()}function x(I){const{threadId:M}=I.detail;u.archiveThread(M).catch(U=>console.error("CopilotThreadsDrawer: archiveThread failed",U))}function E(I){const{threadId:M}=I.detail;u.unarchiveThread(M).catch(U=>console.error("CopilotThreadsDrawer: unarchiveThread failed",U))}function B(I){const{threadId:M}=I.detail,U=M===l.value;u.deleteThread(M).then(()=>{U&&y()}).catch(G=>console.error("CopilotThreadsDrawer: deleteThread failed",G))}function A(){u.refetchThreads()}function R(I){const{scope:M}=I.detail;M==="fetch-more"?u.fetchMoreThreads():u.refetchThreads()}function P(){u.fetchMoreThreads()}function Q(I){const{open:M}=I.detail;C(M)}function z(){o.onLicensed?.()}return(I,M)=>h.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b.value),{key:0,ref_key:"elRef",ref:g,"data-testid":t.dataTestId,onThreadSelected:v,onNewThread:y,onArchive:x,onUnarchive:E,onDelete:B,onFilterChange:A,onRetry:R,onLoadMore:P,onOpenChange:Q,onLicensed:z},{default:e.withCtx(()=>[e.renderSlot(I.$slots,"default"),I.$slots.row?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(e.unref(u).threads.value,U=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:U.id},{ref_for:!0},{slot:`row:${U.id}`}),[e.renderSlot(I.$slots,"row",{thread:U})],16))),128)):e.createCommentVNode("",!0)]),_:3},40,["data-testid"])):e.createCommentVNode("",!0)}}),Bt=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})}}}),Nt=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"})}}}),mr=["type","data-state","aria-label","aria-pressed","disabled"],ct="cpk:h-6 cpk:w-6",en="cpk:pointer-events-none cpk:absolute cpk:inset-0 cpk:flex cpk:items-center cpk:justify-center cpk:will-change-transform",Vt=e.defineComponent({inheritAttrs:!1,__name:"CopilotChatToggleButton",props:{disabled:{type:Boolean,default:!1},type:{default:"button"}},setup(t){const o=t,n=e.useAttrs(),a=he(),r=e.ref(!1),s=e.computed(()=>a.value?.labels??$e),i=e.computed(()=>a.value?.isModalOpen??r.value),l=e.computed(()=>i.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]),f=e.computed(()=>{const{class:h,onClick:b,...g}=n;return g}),C=Object.freeze({transition:"opacity 120ms ease-out, transform 260ms cubic-bezier(0.22, 1, 0.36, 1)"});function u(h){if(a.value?.setModalOpen){a.value.setModalOpen(h);return}r.value=h}function m(){const h=n.onClick;return Array.isArray(h)?h.filter(b=>typeof b=="function"):typeof h=="function"?[h]:[]}function d(h){if(!o.disabled){for(const b of m())b(h);h.defaultPrevented||u(!i.value)}}return(h,b)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps({"data-copilotkit":"",type:t.type,"data-slot":"chat-toggle-button","data-state":i.value?"open":"closed",class:c.value,"aria-label":l.value,"aria-pressed":i.value,disabled:t.disabled},f.value,{onClick:d}),[e.createElementVNode("span",{"aria-hidden":"true","data-slot":"chat-toggle-button-open-icon",class:e.normalizeClass(en),style:e.normalizeStyle({...e.unref(C),opacity:i.value?0:1,transform:`scale(${i.value?.75:1}) rotate(${i.value?90:0}deg)`})},[e.renderSlot(h.$slots,"open-icon",{iconClass:ct,isOpen:i.value},()=>[e.createVNode(e.unref(Nt),{class:e.normalizeClass(ct),"aria-hidden":"true",focusable:!1})])],4),e.createElementVNode("span",{"aria-hidden":"true","data-slot":"chat-toggle-button-close-icon",class:e.normalizeClass(en),style:e.normalizeStyle({...e.unref(C),opacity:i.value?1:0,transform:`scale(${i.value?1:.75}) rotate(${i.value?0:-90}deg)`})},[e.renderSlot(h.$slots,"close-icon",{iconClass:ct,isOpen:i.value},()=>[e.createVNode(e.unref(Bt),{class:e.normalizeClass(ct),"aria-hidden":"true",focusable:!1})])],4)],16,mr))}}),Hn=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:r,type:s,...i}=n;return e.h("button",{...i,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",r],"aria-label":a.value},o.default?o.default():[e.h(oe.X,{class:"cpk:h-4 cpk:w-4","aria-hidden":!0})])}}}),Wn=e.defineComponent({name:"CopilotModalHeaderTitle",inheritAttrs:!1,setup(t,{attrs:o,slots:n}){return()=>{const{class:a,...r}=o;return e.h("div",{...r,class:["cpk:w-full cpk:text-base cpk:font-medium cpk:leading-none cpk:tracking-tight cpk:text-foreground",a]},n.default?n.default():[])}}}),fr={class:"cpk:flex cpk:w-full cpk:items-center cpk:gap-2"},gr={class:"cpk:flex cpk:flex-1 cpk:justify-start"},hr=["aria-expanded"],vr={key:1,"aria-hidden":"true"},kr={class:"cpk:flex cpk:flex-1 cpk:justify-center cpk:text-center"},br={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=he(),r=e.computed(()=>o.title??a.value?.labels.modalHeaderTitle??$e.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]),i=e.computed(()=>{const{class:d,...h}=n;return h});function l(){a.value?.setModalOpen?.(!1)}const c=e.ref(!1);let f=null;function C(){f&&(c.value=f.matches)}e.onMounted(()=>{typeof window>"u"||typeof window.matchMedia!="function"||(f=window.matchMedia(An),f.addEventListener("change",C),C())}),e.onBeforeUnmount(()=>{f?.removeEventListener("change",C),f=null});const u=e.computed(()=>(a.value?.drawerRegistered??!1)&&c.value);function m(){a.value?.setDrawerOpen?.(!a.value?.drawerOpen)}return(d,h)=>(e.openBlock(),e.createElementBlock("header",e.mergeProps({"data-copilotkit":"","data-slot":"copilot-modal-header",class:s.value},i.value),[e.renderSlot(d.$slots,"layout",{title:r.value,onClose:l},()=>[e.createElementVNode("div",fr,[e.createElementVNode("div",gr,[u.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:m},[e.createVNode(e.unref(oe.PanelLeftOpen),{class:"cpk:h-4 cpk:w-4","aria-hidden":"true"})],8,hr)):(e.openBlock(),e.createElementBlock("span",vr))]),e.createElementVNode("div",kr,[e.renderSlot(d.$slots,"title-content",{title:r.value},()=>[e.createVNode(e.unref(Wn),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value),1)]),_:1})])]),e.createElementVNode("div",br,[e.renderSlot(d.$slots,"close-button",{onClose:l},()=>[e.createVNode(e.unref(Hn),{onClick:l})])])])])],16))}}),yr={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"},wr=["aria-label"],Cr={class:"cpk:flex-1 cpk:overflow-hidden","data-popup-chat":""},xr=420,Sr=560,tn=200,Tr=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:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=he(),i=e.getCurrentInstance(),l=e.computed(()=>i?.vnode.props??{}),c=e.ref(null),f=e.ref(s.value?.isModalOpen??!1),C=e.ref(!1);let u,m;const d=e.computed(()=>s.value?.isModalOpen??!1),h=e.computed(()=>s.value?.labels??$e),b=e.computed(()=>h.value.modalHeaderTitle),g=e.computed(()=>v("onStop")),w=e.computed(()=>d.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]"),p=e.computed(()=>({"--copilot-popup-width":k(n.width,xr),"--copilot-popup-height":k(n.height,Sr),"--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 k(T,$){return typeof T=="number"&&Number.isFinite(T)?`${T}px`:typeof T=="string"&&T.trim().length>0?T:`${$}px`}function v(T){const $=l.value[T];return Array.isArray($)?$.length>0:!!$}function y(){s.value?.setModalOpen?.(!1)}function x(){s.value?.setModalOpen?.(!0)}function E(){s.value?.setModalOpen?.(!d.value)}function B(T){a("submit-message",T)}function A(){a("stop")}function R(T){a("input-change",T)}function P(T,$){a("select-suggestion",T,$)}function Q(){a("add-file")}function z(){a("start-transcribe")}function I(){a("cancel-transcribe")}function M(){a("finish-transcribe")}const U=e.computed(()=>{const T={onSubmitMessage:B,onInputChange:R,onSelectSuggestion:P};return g.value&&(T.onStop=A),v("onAddFile")&&(T.onAddFile=Q),v("onStartTranscribe")&&(T.onStartTranscribe=z),v("onCancelTranscribe")&&(T.onCancelTranscribe=I),v("onFinishTranscribe")&&(T.onFinishTranscribe=M),T}),G=e.computed(()=>({...r,...U.value}));return e.watch(d,T=>{if(u&&(clearTimeout(u),u=void 0),T){f.value=!0,C.value=!1;return}f.value&&(C.value=!0,u=setTimeout(()=>{f.value=!1,C.value=!1,u=void 0},tn))},{immediate:!0}),e.watch(d,(T,$,D)=>{if(!T||typeof window>"u")return;const q=re=>{re.key==="Escape"&&(re.preventDefault(),y())};window.addEventListener("keydown",q),D(()=>{window.removeEventListener("keydown",q)})},{immediate:!0}),e.watch(d,(T,$,D)=>{T&&(m=setTimeout(()=>{if(typeof document>"u")return;const q=c.value;q&&!q.contains(document.activeElement)&&q.focus({preventScroll:!0})},tn),D(()=>{m&&(clearTimeout(m),m=void 0)}))},{immediate:!0}),e.watch([d,()=>n.clickOutsideToClose],([T,$],D,q)=>{if(!T||!$||typeof document>"u")return;const re=V=>{const _=V.target;!_||c.value?.contains(_)||document.querySelector("[data-slot='chat-toggle-button']")?.contains(_)||y()};document.addEventListener("pointerdown",re),q(()=>{document.removeEventListener("pointerdown",re)})},{immediate:!0}),e.onMounted(async()=>{await e.nextTick()}),e.onBeforeUnmount(()=>{u&&clearTimeout(u),m&&clearTimeout(m)}),(T,$)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(T.$slots,"toggle-button",{isOpen:d.value,toggle:E,open:x,close:y},()=>[e.createVNode(Vt)]),f.value?(e.openBlock(),e.createElementBlock("div",yr,[e.createElementVNode("div",{ref_key:"containerRef",ref:c,tabindex:"-1",role:"dialog","aria-label":h.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",w.value]),style:e.normalizeStyle(p.value)},[e.renderSlot(T.$slots,"header",{title:b.value,onClose:y,isOpen:d.value},()=>[e.createVNode(Ft,{title:b.value},null,8,["title"])]),e.createElementVNode("div",Cr,[e.createVNode(tt,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},G.value),e.createSlots({_:2},[T.$slots["message-view"]?{name:"message-view",fn:e.withCtx(D=>[e.renderSlot(T.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(D)))]),key:"0"}:void 0,T.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(D=>[e.renderSlot(T.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(D)))]),key:"1"}:void 0,T.$slots.feather?{name:"feather",fn:e.withCtx(()=>[e.renderSlot(T.$slots,"feather")]),key:"2"}:void 0,T.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(D=>[e.renderSlot(T.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(D)))]),key:"3"}:void 0,T.$slots.input?{name:"input",fn:e.withCtx(D=>[e.renderSlot(T.$slots,"input",e.normalizeProps(e.guardReactiveProps(D)))]),key:"4"}:void 0,T.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(D=>[e.renderSlot(T.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(D)))]),key:"5"}:void 0,T.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(D=>[e.renderSlot(T.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(D)))]),key:"6"}:void 0,T.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(T.$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,wr)])):e.createCommentVNode("",!0)],64))}}),qn=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:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.getCurrentInstance(),i=e.computed(()=>s?.vnode.props??{});function l(u){const m=i.value[u];return Array.isArray(m)?m.length>0:!!m}const c=e.computed(()=>{const{defaultOpen:u,...m}=n;return m}),f=e.computed(()=>{const u={onSubmitMessage:m=>a("submit-message",m),onStop:()=>a("stop"),onInputChange:m=>a("input-change",m),onSelectSuggestion:(m,d)=>a("select-suggestion",m,d)};return l("onAddFile")&&(u.onAddFile=()=>a("add-file")),l("onStartTranscribe")&&(u.onStartTranscribe=()=>a("start-transcribe")),l("onCancelTranscribe")&&(u.onCancelTranscribe=()=>a("cancel-transcribe")),l("onFinishTranscribe")&&(u.onFinishTranscribe=()=>a("finish-transcribe")),u}),C=e.computed(()=>({...r,...c.value,...f.value}));return(u,m)=>(e.openBlock(),e.createBlock(ft,{"is-modal-default-open":t.defaultOpen},{default:e.withCtx(()=>[e.createVNode(Tr,e.normalizeProps(e.guardReactiveProps(C.value)),e.createSlots({_:2},[u.$slots.header?{name:"header",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"header",e.normalizeProps(e.guardReactiveProps(d)))]),key:"0"}:void 0,u.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"1"}:void 0,u.$slots["message-view"]?{name:"message-view",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"2"}:void 0,u.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"3"}:void 0,u.$slots.feather?{name:"feather",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"feather",e.normalizeProps(e.guardReactiveProps(d)))]),key:"4"}:void 0,u.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"5"}:void 0,u.$slots.input?{name:"input",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"input",e.normalizeProps(e.guardReactiveProps(d)))]),key:"6"}:void 0,u.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"7"}:void 0,u.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(d)))]),key:"8"}:void 0,u.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(u.$slots,"welcome-message")]),key:"9"}:void 0]),1040)]),_:3},8,["is-modal-default-open"]))}}),Ir={"data-copilotkit":"",class:"cpk:h-full cpk:flex cpk:flex-col","data-testid":"copilot-popup-welcome-screen"},Ar={class:"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4"},Rr={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},Er={class:"cpk:mb-4 cpk:flex cpk:justify-center cpk:px-4"},Kn=e.defineComponent({__name:"CopilotPopupWelcomeScreen",props:{modelValue:{default:""},isRunning:{type:Boolean,default:!1},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},onUpdateModelValue:{},onSubmitMessage:{},onStop:{},onAddFile:{type:Function,default:void 0},onStartTranscribe:{type:Function,default:void 0},onCancelTranscribe:{type:Function,default:void 0},onFinishTranscribe:{type:Function,default:void 0},onFinishTranscribeWithAudio:{type:Function,default:void 0},suggestions:{default:()=>[]},loadingIndexes:{default:()=>[]},onSelectSuggestion:{}},setup(t){const o=t,n=he(),a=e.computed(()=>n.value?.labels??$e),r=e.computed(()=>({modelValue:o.modelValue,isRunning:o.isRunning,inputMode:o.inputMode,inputToolsMenu:o.inputToolsMenu,onUpdateModelValue:o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop,onAddFile:o.onAddFile,onStartTranscribe:o.onStartTranscribe,onCancelTranscribe:o.onCancelTranscribe,onFinishTranscribe:o.onFinishTranscribe,onFinishTranscribeWithAudio:o.onFinishTranscribeWithAudio})),s=e.computed(()=>({suggestions:o.suggestions,loadingIndexes:o.loadingIndexes,onSelectSuggestion:o.onSelectSuggestion})),i=e.computed(()=>({...r.value,...s.value})),l=e.computed(()=>{const c={"onUpdate:modelValue":o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop};return o.onAddFile&&(c.onAddFile=o.onAddFile),o.onStartTranscribe&&(c.onStartTranscribe=o.onStartTranscribe),o.onCancelTranscribe&&(c.onCancelTranscribe=o.onCancelTranscribe),o.onFinishTranscribe&&(c.onFinishTranscribe=o.onFinishTranscribe),o.onFinishTranscribeWithAudio&&(c.onFinishTranscribeWithAudio=o.onFinishTranscribeWithAudio),c});return(c,f)=>e.renderSlot(c.$slots,"layout",e.normalizeProps(e.guardReactiveProps(i.value)),()=>[e.createElementVNode("div",Ir,[e.createElementVNode("div",Ar,[e.renderSlot(c.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",Rr,e.toDisplayString(a.value.welcomeMessageText),1)])]),e.createElementVNode("div",null,[e.createElementVNode("div",Er,[e.renderSlot(c.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(s.value)),()=>[e.createVNode(Ye,{suggestions:t.suggestions,"loading-indexes":t.loadingIndexes,onSelectSuggestion:t.onSelectSuggestion},null,8,["suggestions","loading-indexes","onSelectSuggestion"])])]),e.renderSlot(c.$slots,"input",e.normalizeProps(e.guardReactiveProps(r.value)),()=>[e.createVNode(Xe,e.mergeProps({"model-value":t.modelValue,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0},l.value),null,16,["model-value","is-running","mode","tools-menu"])])])])])}}),Mr=["aria-hidden"],$r={class:"cpk:flex cpk:h-full cpk:w-full cpk:flex-col cpk:overflow-hidden"},Br={class:"cpk:flex-1 cpk:overflow-hidden","data-sidebar-chat":""},Nr=480,Vr=260,Fr=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:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=he(),i=e.getCurrentInstance(),l=e.computed(()=>i?.vnode.props??{}),c=e.ref(null),f=e.ref(n.width??Nr);let C=null;const u=e.computed(()=>s.value?.isModalOpen??!1),m=e.computed(()=>n.width??f.value),d=e.computed(()=>s.value?.labels.modalHeaderTitle??$e.modalHeaderTitle),h=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",r.class]),b=e.computed(()=>{const{class:$,...D}=r;return D}),g=e.computed(()=>k("onStop")),w=e.computed(()=>({"--sidebar-width":v(m.value),paddingTop:"env(safe-area-inset-top)",paddingBottom:"env(safe-area-inset-bottom)"})),p=e.computed(()=>`
|
|
76
|
+
@media (min-width: 768px) {
|
|
77
|
+
body {
|
|
78
|
+
margin-inline-end: ${y(m.value)};
|
|
79
|
+
transition: margin-inline-end ${Vr}ms ease;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
`);function k($){const D=l.value[$];return Array.isArray(D)?D.length>0:!!D}function v($){return typeof $=="number"?`${$}px`:$}function y($){return typeof $=="number"?`${$}px`:$}function x(){if(n.width!==void 0||!c.value)return;const $=c.value.getBoundingClientRect().width;$>0&&(f.value=$)}function E(){s.value?.setModalOpen?.(!1)}function B(){s.value?.setModalOpen?.(!0)}function A(){s.value?.setModalOpen?.(!u.value)}function R($){a("submit-message",$)}function P(){a("stop")}function Q($){a("input-change",$)}function z($,D){a("select-suggestion",$,D)}function I(){a("add-file")}function M(){a("start-transcribe")}function U(){a("cancel-transcribe")}function G(){a("finish-transcribe")}const T=e.computed(()=>{const $={onSubmitMessage:R,onInputChange:Q,onSelectSuggestion:z};return g.value&&($.onStop=P),k("onAddFile")&&($.onAddFile=I),k("onStartTranscribe")&&($.onStartTranscribe=M),k("onCancelTranscribe")&&($.onCancelTranscribe=U),k("onFinishTranscribe")&&($.onFinishTranscribe=G),$});return e.watch(()=>n.width,$=>{if($!==void 0){f.value=$;return}x()}),e.onMounted(async()=>{await e.nextTick(),x(),!(n.width!==void 0||!c.value||typeof ResizeObserver>"u")&&(C=new ResizeObserver(()=>{x()}),C.observe(c.value))}),e.onBeforeUnmount(()=>{C?.disconnect(),C=null}),($,D)=>(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(p.value),1)]),_:1})):e.createCommentVNode("",!0),e.renderSlot($.$slots,"toggle-button",{isOpen:u.value,toggle:A,open:B,close:E},()=>[e.createVNode(Vt)]),e.createElementVNode("aside",e.mergeProps({ref_key:"sidebarRef",ref:c,"data-copilotkit":"","data-copilot-sidebar":"",class:h.value,style:w.value,"aria-label":"Copilot chat sidebar","aria-hidden":!u.value,role:"complementary"},b.value),[e.createElementVNode("div",$r,[e.renderSlot($.$slots,"header",{title:d.value,onClose:E,isOpen:u.value},()=>[e.createVNode(Ft,{title:d.value},null,8,["title"])]),e.createElementVNode("div",Br,[e.createVNode(tt,e.mergeProps({messages:t.messages,"auto-scroll":t.autoScroll,"is-running":t.isRunning,suggestions:t.suggestions,"suggestion-loading-indexes":t.suggestionLoadingIndexes,"welcome-screen":t.welcomeScreen,"input-value":t.inputValue,"input-mode":t.inputMode,"input-tools-menu":t.inputToolsMenu,"on-finish-transcribe-with-audio":t.onFinishTranscribeWithAudio},T.value),e.createSlots({_:2},[$.$slots["message-view"]?{name:"message-view",fn:e.withCtx(q=>[e.renderSlot($.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(q)))]),key:"0"}:void 0,$.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(q=>[e.renderSlot($.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(q)))]),key:"1"}:void 0,$.$slots.feather?{name:"feather",fn:e.withCtx(()=>[e.renderSlot($.$slots,"feather")]),key:"2"}:void 0,$.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(q=>[e.renderSlot($.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(q)))]),key:"3"}:void 0,$.$slots.input?{name:"input",fn:e.withCtx(q=>[e.renderSlot($.$slots,"input",e.normalizeProps(e.guardReactiveProps(q)))]),key:"4"}:void 0,$.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(q=>[e.renderSlot($.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(q)))]),key:"5"}:void 0,$.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(q=>[e.renderSlot($.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(q)))]),key:"6"}:void 0,$.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot($.$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,Mr)],64))}}),Gn=e.defineComponent({inheritAttrs:!1,__name:"CopilotSidebarView",props:{width:{default:void 0},defaultOpen:{type:Boolean,default:!0},messages:{default:()=>[]},autoScroll:{type:[String,Boolean],default:!0},isRunning:{type:Boolean,default:!1},suggestions:{default:()=>[]},suggestionLoadingIndexes:{default:()=>[]},welcomeScreen:{type:Boolean,default:!0},attachments:{},dragOver:{type:Boolean},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onRemoveAttachment:{},onAddFile:{},onDragOver:{},onDragLeave:{},onDrop:{},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t,{emit:o}){const n=t,a=o,r=e.useAttrs(),s=e.getCurrentInstance(),i=e.computed(()=>s?.vnode.props??{}),l=e.computed(()=>{const{defaultOpen:u,...m}=n;return m}),c=e.computed(()=>({...r,...l.value,...C.value}));function f(u){const m=i.value[u];return Array.isArray(m)?m.length>0:!!m}const C=e.computed(()=>{const u={onSubmitMessage:m=>a("submit-message",m),onStop:()=>a("stop"),onInputChange:m=>a("input-change",m),onSelectSuggestion:(m,d)=>a("select-suggestion",m,d)};return f("onAddFile")&&(u.onAddFile=()=>a("add-file")),f("onStartTranscribe")&&(u.onStartTranscribe=()=>a("start-transcribe")),f("onCancelTranscribe")&&(u.onCancelTranscribe=()=>a("cancel-transcribe")),f("onFinishTranscribe")&&(u.onFinishTranscribe=()=>a("finish-transcribe")),u});return(u,m)=>(e.openBlock(),e.createBlock(ft,{"is-modal-default-open":t.defaultOpen},{default:e.withCtx(()=>[e.createVNode(Fr,e.normalizeProps(e.guardReactiveProps(c.value)),e.createSlots({_:2},[u.$slots.header?{name:"header",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"header",e.normalizeProps(e.guardReactiveProps(d)))]),key:"0"}:void 0,u.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"1"}:void 0,u.$slots["message-view"]?{name:"message-view",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"2"}:void 0,u.$slots["scroll-view"]?{name:"scroll-view",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"scroll-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"3"}:void 0,u.$slots.feather?{name:"feather",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"feather",e.normalizeProps(e.guardReactiveProps(d)))]),key:"4"}:void 0,u.$slots["scroll-to-bottom-button"]?{name:"scroll-to-bottom-button",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"scroll-to-bottom-button",e.normalizeProps(e.guardReactiveProps(d)))]),key:"5"}:void 0,u.$slots.input?{name:"input",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"input",e.normalizeProps(e.guardReactiveProps(d)))]),key:"6"}:void 0,u.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(d)))]),key:"7"}:void 0,u.$slots["welcome-screen"]?{name:"welcome-screen",fn:e.withCtx(d=>[e.renderSlot(u.$slots,"welcome-screen",e.normalizeProps(e.guardReactiveProps(d)))]),key:"8"}:void 0,u.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(u.$slots,"welcome-message")]),key:"9"}:void 0]),1040)]),_:3},8,["is-modal-default-open"]))}}),Dr={"data-copilotkit":"",class:"cpk:h-full cpk:flex cpk:flex-col","data-testid":"copilot-sidebar-welcome-screen"},Or={class:"cpk:flex-1 cpk:flex cpk:flex-col cpk:items-center cpk:justify-center cpk:px-4"},Lr={class:"cpk:text-xl cpk:sm:text-2xl cpk:font-medium cpk:text-foreground cpk:text-center"},Pr={class:"cpk:px-8 cpk:pb-4"},Ur={class:"cpk:max-w-3xl cpk:mx-auto"},zr={class:"cpk:mb-4 cpk:flex cpk:justify-center"},Jn=e.defineComponent({__name:"CopilotSidebarWelcomeScreen",props:{modelValue:{default:""},isRunning:{type:Boolean,default:!1},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},onUpdateModelValue:{},onSubmitMessage:{},onStop:{},onAddFile:{type:Function,default:void 0},onStartTranscribe:{type:Function,default:void 0},onCancelTranscribe:{type:Function,default:void 0},onFinishTranscribe:{type:Function,default:void 0},onFinishTranscribeWithAudio:{type:Function,default:void 0},suggestions:{default:()=>[]},loadingIndexes:{default:()=>[]},onSelectSuggestion:{}},setup(t){const o=t,n=he(),a=e.computed(()=>n.value?.labels??$e),r=e.computed(()=>({modelValue:o.modelValue,isRunning:o.isRunning,inputMode:o.inputMode,inputToolsMenu:o.inputToolsMenu,onUpdateModelValue:o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop,onAddFile:o.onAddFile,onStartTranscribe:o.onStartTranscribe,onCancelTranscribe:o.onCancelTranscribe,onFinishTranscribe:o.onFinishTranscribe,onFinishTranscribeWithAudio:o.onFinishTranscribeWithAudio})),s=e.computed(()=>({suggestions:o.suggestions,loadingIndexes:o.loadingIndexes,onSelectSuggestion:o.onSelectSuggestion})),i=e.computed(()=>({...r.value,...s.value})),l=e.computed(()=>{const c={"onUpdate:modelValue":o.onUpdateModelValue,onSubmitMessage:o.onSubmitMessage,onStop:o.onStop};return o.onAddFile&&(c.onAddFile=o.onAddFile),o.onStartTranscribe&&(c.onStartTranscribe=o.onStartTranscribe),o.onCancelTranscribe&&(c.onCancelTranscribe=o.onCancelTranscribe),o.onFinishTranscribe&&(c.onFinishTranscribe=o.onFinishTranscribe),o.onFinishTranscribeWithAudio&&(c.onFinishTranscribeWithAudio=o.onFinishTranscribeWithAudio),c});return(c,f)=>e.renderSlot(c.$slots,"layout",e.normalizeProps(e.guardReactiveProps(i.value)),()=>[e.createElementVNode("div",Dr,[e.createElementVNode("div",Or,[e.renderSlot(c.$slots,"welcome-message",{},()=>[e.createElementVNode("h1",Lr,e.toDisplayString(a.value.welcomeMessageText),1)])]),e.createElementVNode("div",Pr,[e.createElementVNode("div",Ur,[e.createElementVNode("div",zr,[e.renderSlot(c.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(s.value)),()=>[e.createVNode(Ye,{suggestions:t.suggestions,"loading-indexes":t.loadingIndexes,onSelectSuggestion:t.onSelectSuggestion},null,8,["suggestions","loading-indexes","onSelectSuggestion"])])]),e.renderSlot(c.$slots,"input",e.normalizeProps(e.guardReactiveProps(r.value)),()=>[e.createVNode(Xe,e.mergeProps({"model-value":t.modelValue,"is-running":t.isRunning,mode:t.inputMode,"tools-menu":t.inputToolsMenu,positioning:"static","show-disclaimer":!0},l.value),null,16,["model-value","is-running","mode","tools-menu"])])])])])])}}),jr=e.defineComponent({__name:"CopilotPopup",props:{width:{default:void 0},height:{default:void 0},clickOutsideToClose:{type:Boolean,default:!1},defaultOpen:{type:Boolean,default:!0},agentId:{},threadId:{},throttleMs:{},labels:{},attachments:{},onError:{},autoScroll:{type:[String,Boolean],default:!0},welcomeScreen:{type:Boolean,default:!0},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t){function o(s){return{onSubmitMessage:s.onSubmitMessage,onInputChange:s.onInputChange,onSelectSuggestion:s.onSelectSuggestion,...s.onStop?{onStop:s.onStop}:{},...s.onAddFile?{onAddFile:s.onAddFile}:{},...s.onStartTranscribe?{onStartTranscribe:s.onStartTranscribe}:{},...s.onCancelTranscribe?{onCancelTranscribe:s.onCancelTranscribe}:{},...s.onFinishTranscribe?{onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=et(),r=e.computed(()=>a.value.checkFeature("popup"));return e.watch(r,s=>{s||console.warn('[CopilotKit] Warning: "popup" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Mt,{key:0,"feature-name":"Popup"})),e.createVNode($t,e.mergeProps(n,{onSubmitMessage:i[0]||(i[0]=l=>s.$emit("submit-message",l)),onStop:i[1]||(i[1]=l=>s.$emit("stop")),onInputChange:i[2]||(i[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:i[3]||(i[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:i[4]||(i[4]=l=>s.$emit("add-file")),onStartTranscribe:i[5]||(i[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:i[6]||(i[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:i[7]||(i[7]=l=>s.$emit("finish-transcribe"))}),{"chat-view":e.withCtx(l=>[s.$slots["chat-view"]?e.renderSlot(s.$slots,"chat-view",e.normalizeProps(e.mergeProps({key:0},l))):(e.openBlock(),e.createBlock(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,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(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(f=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(f=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(f)))]),key:"2"}:void 0]),1040))]),_:2},[s.$slots.header?{name:"header",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"header",e.normalizeProps(e.guardReactiveProps(c)))]),key:"0"}:void 0,s.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(c)))]),key:"1"}:void 0,s.$slots["message-view"]?{name:"message-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"2"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(c)))]),key:"3"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"4"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","width","height","click-outside-to-close","default-open","on-finish-transcribe-with-audio"]))]),_:3},16)],64))}}),_r=e.defineComponent({__name:"CopilotSidebar",props:{width:{default:void 0},defaultOpen:{type:Boolean,default:!0},agentId:{},threadId:{},throttleMs:{},labels:{},attachments:{},onError:{},autoScroll:{type:[String,Boolean],default:!0},welcomeScreen:{type:Boolean,default:!0},inputValue:{default:void 0},inputMode:{default:"input"},inputToolsMenu:{default:()=>[]},isConnecting:{type:Boolean},hasExplicitThreadId:{type:Boolean},onFinishTranscribeWithAudio:{type:Function,default:void 0}},emits:["submit-message","stop","input-change","select-suggestion","add-file","start-transcribe","cancel-transcribe","finish-transcribe"],setup(t){function o(s){return{onSubmitMessage:s.onSubmitMessage,onInputChange:s.onInputChange,onSelectSuggestion:s.onSelectSuggestion,...s.onStop?{onStop:s.onStop}:{},...s.onAddFile?{onAddFile:s.onAddFile}:{},...s.onStartTranscribe?{onStartTranscribe:s.onStartTranscribe}:{},...s.onCancelTranscribe?{onCancelTranscribe:s.onCancelTranscribe}:{},...s.onFinishTranscribe?{onFinishTranscribe:s.onFinishTranscribe}:{}}}const n=t,a=et(),r=e.computed(()=>a.value.checkFeature("sidebar"));return e.watch(r,s=>{s||console.warn('[CopilotKit] Warning: "sidebar" feature is not licensed. Visit copilotkit.ai/pricing')},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Mt,{key:0,"feature-name":"Sidebar"})),e.createVNode($t,e.mergeProps(n,{onSubmitMessage:i[0]||(i[0]=l=>s.$emit("submit-message",l)),onStop:i[1]||(i[1]=l=>s.$emit("stop")),onInputChange:i[2]||(i[2]=l=>s.$emit("input-change",l)),onSelectSuggestion:i[3]||(i[3]=(l,c)=>s.$emit("select-suggestion",l,c)),onAddFile:i[4]||(i[4]=l=>s.$emit("add-file")),onStartTranscribe:i[5]||(i[5]=l=>s.$emit("start-transcribe")),onCancelTranscribe:i[6]||(i[6]=l=>s.$emit("cancel-transcribe")),onFinishTranscribe:i[7]||(i[7]=l=>s.$emit("finish-transcribe"))}),{"chat-view":e.withCtx(l=>[s.$slots["chat-view"]?e.renderSlot(s.$slots,"chat-view",e.normalizeProps(e.mergeProps({key:0},l))):(e.openBlock(),e.createBlock(Gn,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(Jn,e.normalizeProps(e.mergeProps({key:1},c)),e.createSlots({_:2},[s.$slots["welcome-message"]?{name:"welcome-message",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"welcome-message")]),key:"0"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(f=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(f)))]),key:"1"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(f=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(f)))]),key:"2"}:void 0]),1040))]),_:2},[s.$slots.header?{name:"header",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"header",e.normalizeProps(e.guardReactiveProps(c)))]),key:"0"}:void 0,s.$slots["toggle-button"]?{name:"toggle-button",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"toggle-button",e.normalizeProps(e.guardReactiveProps(c)))]),key:"1"}:void 0,s.$slots["message-view"]?{name:"message-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"message-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"2"}:void 0,s.$slots.input?{name:"input",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"input",e.normalizeProps(e.guardReactiveProps(c)))]),key:"3"}:void 0,s.$slots["suggestion-view"]?{name:"suggestion-view",fn:e.withCtx(c=>[e.renderSlot(s.$slots,"suggestion-view",e.normalizeProps(e.guardReactiveProps(c)))]),key:"4"}:void 0]),1040,["messages","auto-scroll","is-running","suggestions","suggestion-loading-indexes","welcome-screen","input-value","input-mode","input-tools-menu","width","default-open","on-finish-transcribe-with-audio"]))]),_:3},16)],64))}}),Hr=Object.assign($t,{View:tt}),Wr=Object.assign(Vt,{OpenIcon:Nt,CloseIcon:Bt}),qr=Object.assign(Ft,{Title:Wn,CloseButton:Hn}),Kr=Object.assign(qn,{WelcomeScreen:Kn}),Gr=Object.assign(Gn,{WelcomeScreen:Jn});function Jr(t){const{copilotkit:o}=be(),n=e.computed(()=>e.toValue(t.description)),a=e.computed(()=>e.toValue(t.value)),r=e.computed(()=>typeof a.value=="string"?a.value:JSON.stringify(a.value));e.watch([()=>o.value,n,r],(s,i,l)=>{const c=o.value,f=c.addContext({description:n.value,value:r.value});l(()=>c.removeContext(f))},{immediate:!0})}const Qr=[];function Dt(t,o){const{copilotkit:n}=be(),a=o??Qr;e.watch([()=>t.name,()=>t.available,()=>a.length,...a],(r,s,i)=>{const l=n.value,c=t.name;l.getTool({toolName:c,agentId:t.agentId})&&(console.warn(`Tool '${c}' already exists for agent '${t.agentId||"global"}'. Overriding with latest registration.`),l.removeTool(c,t.agentId)),l.addTool(t),t.render&&l.addHookRenderToolCall({name:c,args:t.parameters,agentId:t.agentId,render:t.render}),i(()=>{l.removeTool(c,t.agentId)})},{immediate:!0})}function Xr(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;Dt({name:t.name,description:a,parameters:t.parameters,render:({args:r})=>{const s=t.render;return e.h(s,r)},agentId:t.agentId},o)}const Yr=[];function Qn(t,o){const{copilotkit:n}=be(),a=o??Yr;e.watch([()=>n.value,()=>t.name,()=>t.agentId,()=>a.length,...a],()=>{const r=i=>typeof t.render=="function"?t.render(i):e.h(t.render,i),s=t.name==="*"&&!t.parameters?ut({name:"*",render:i=>r({...i,parameters:i.args}),...t.agentId?{agentId:t.agentId}:{}}):ut({name:t.name,args:t.parameters,render:i=>r({...i,parameters:i.args}),...t.agentId?{agentId:t.agentId}:{}});n.value.addHookRenderToolCall(s)},{immediate:!0})}const nn=new Set;function Zr(t){switch(t){case ue.ToolCallStatus.Complete:return"complete";case ue.ToolCallStatus.Executing:return"executing";case ue.ToolCallStatus.InProgress:return"inProgress";default:{const o=String(t);return nn.has(o)||(nn.add(o),console.warn(`[CopilotKit] Unknown ToolCallStatus "${o}" in default tool-call renderer; falling back to "inProgress".`)),"inProgress"}}}function bt(t){const o=t.parameters!==void 0?t.parameters:t.args,n=t.status,a=n==="inProgress"||n==="executing"||n==="complete"?n:Zr(n);return{name:t.name,toolCallId:t.toolCallId,parameters:o,status:a,result:t.result}}function on(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 ei=e.defineComponent({props:{name:{type:String,required:!0},toolCallId:{type:String,required:!0},parameters:{type:null,required:!1,default:void 0},status:{type:String,required:!0},result:{type:null,required:!1,default:void 0}},setup(t){const o=e.ref(!1);return()=>{const n=t.status==="inProgress"||t.status==="executing",a=t.status==="complete",r=n?"Running":a?"Done":t.status;return e.h("div",{"data-testid":"copilot-tool-render","data-tool-name":t.name,"data-tool-call-id":t.toolCallId,"data-status":t.status,"data-args":an(t.parameters),"data-result":an(t.result),style:{marginTop:"8px",paddingBottom:"8px"}},[e.h("div",{style:{borderRadius:"12px",border:"1px solid #e4e4e7",backgroundColor:"#fafafa",padding:"14px 16px"}},[e.h("button",{type:"button","aria-expanded":String(o.value),onClick:()=>{o.value=!o.value},style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",cursor:"pointer",border:"none",padding:0,margin:0,background:"transparent",textAlign:"left"}},[e.h("span",{"data-testid":"copilot-tool-render-name",style:{fontWeight:"600"}},t.name),e.h("span",{"data-testid":"copilot-tool-render-status"},r)]),o.value?e.h("div",{style:{marginTop:"12px"}},[e.h("div","Arguments"),e.h("pre",on(t.parameters??{})),t.result!==void 0?e.h("div",[e.h("div","Result"),e.h("pre",typeof t.result=="string"?t.result:on(t.result))]):null]):null])])}}});function an(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 ti(t,o){const n=t?.render;let a;if(typeof n=="function"){const r=n;a=(s=>{const i=bt(s);return r(i)})}else if(n){const r=n;a=(s=>{const i=bt(s);return e.h(r,{name:i.name,toolCallId:i.toolCallId,parameters:i.parameters,status:i.status,result:i.result})})}else a=(r=>{const s=bt(r);return e.h(ei,{name:s.name,toolCallId:s.toolCallId,parameters:s.parameters,status:s.status,result:s.result})});Qn({name:"*",render:a},o)}function ni(t,o){const{copilotkit:n}=be(),a=e.ref(null),r=async c=>{a.value&&(a.value(c),a.value=null)},l={...t,handler:async()=>new Promise(c=>{a.value=c}),render:c=>{const f=t.render;return c.status==="inProgress"?e.h(f,{...c,name:t.name,description:t.description||"",respond:void 0}):c.status==="executing"?e.h(f,{...c,name:t.name,description:t.description||"",respond:r}):c.status==="complete"?e.h(f,{...c,name:t.name,description:t.description||"",respond:void 0}):e.h(f,c)}};Dt(l,o),e.onScopeDispose(()=>{n.value.removeHookRenderToolCall(t.name,t.agentId)})}function oi(t){return"instructions"in t}function ai(t){return t.map(o=>({...o,isLoading:o.isLoading??!1}))}function si(t,o){const{copilotkit:n}=be(),a=he(),r=o??[],s=e.computed(()=>a.value?.agentId??j.DEFAULT_AGENT_ID),i=e.computed(()=>t?t.consumerAgentId:void 0),l=e.computed(()=>{if(!t||t.available==="disabled")return null;if(oi(t))return{...t};const g=ai(t.suggestions);return{...t,suggestions:g}}),c=e.computed(()=>l.value?JSON.stringify(l.value):null),f=e.computed(()=>{if(!l.value)return s.value;const g=l.value.consumerAgentId;return!g||g==="*"?s.value:g}),C=e.computed(()=>i.value===void 0||i.value==="*"),u=e.ref(!1),m=e.ref(null),d=e.ref(null),h=()=>{if(!u.value||!C.value)return;if(Object.values(n.value.agents??{}).some(w=>!!w.agentId&&w.isRunning)){m.value=setTimeout(()=>{m.value=null,h()},0);return}u.value=!1,b()},b=()=>{if(l.value){if(C.value){let g=!1;const w=Object.values(n.value.agents??{});for(const p of w){const k=p.agentId;k&&(p.isRunning?g=!0:n.value.reloadSuggestions(k))}u.value=g,g&&m.value===null&&(m.value=setTimeout(()=>{m.value=null,h()},0));return}f.value&&n.value.reloadSuggestions(f.value)}};e.watch([()=>n.value,c],([g,w],p,k)=>{if(!w||!l.value)return;const v=n.value,y=l.value,x=v.addSuggestionsConfig(y);b(),k(()=>v.removeSuggestionsConfig(x))},{immediate:!0}),e.watch([l,c],([g,w])=>{if(!g){d.value=null;return}w&&d.value===w||(w&&(d.value=w),b())},{immediate:!1}),e.watch([l,()=>r.length,...r],([g])=>{!g||r.length===0||b()},{immediate:!0}),e.watch([()=>n.value,u],(g,w,p)=>{p(()=>{m.value!==null&&(clearTimeout(m.value),m.value=null)})},{immediate:!0}),e.watch([()=>n.value,C],([g,w],p,k)=>{if(!w)return;const v=Object.values(g.agents??{}).filter(y=>!!y).map(y=>y.subscribe({onRunStartedEvent:h,onRunFinishedEvent:h,onRunFinalized:h,onRunFailed:h,onRunErrorEvent:h}));k(()=>{for(const y of v)y.unsubscribe()})},{immediate:!0})}const Xn="on_interrupt";function ri(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof Reflect.get(t,"then")=="function"}function ii(t){return t instanceof Promise?t:new Promise((o,n)=>{try{t.then(o,n)}catch(a){n(a)}})}function yt(t){return t.kind==="legacy"?t.event:{name:Xn,value:t.interrupts[0]}}function li(t={}){const{copilotkit:o}=be(),{agent:n}=gt({agentId:t.agentId}),a=e.shallowRef(null),r=e.shallowRef(null),s={};e.watch(n,(d,h,b)=>{if(!d){a.value=null,r.value=null;return}let g=null,w=null;const p=d.subscribe({onCustomEvent:({event:k})=>{k.name===Xn&&(g={name:k.name,value:k.value})},onRunFinishedEvent:k=>{k.outcome==="interrupt"&&(w=k.interrupts)},onRunStartedEvent:()=>{g=null,w=null;for(const k of Object.keys(s))delete s[k];a.value=null},onRunFinalized:()=>{w&&w.length>0?a.value={kind:"standard",interrupts:w}:g&&(a.value={kind:"legacy",event:g}),g=null,w=null},onRunFailed:()=>{g=null,w=null;for(const k of Object.keys(s))delete s[k];a.value=null}});b(()=>p.unsubscribe())},{immediate:!0});const i=async d=>{if(!d.every(p=>s[p.id]))return;const b=d.find(p=>Le.isInterruptExpired(p));if(b){console.error(`[CopilotKit] useInterrupt: interrupt ${b.id} expired at ${b.expiresAt}; not resuming.`);for(const p of Object.keys(s))delete s[p];a.value=null;return}const g=Le.buildResumeArray(d,s);for(const p of Object.keys(s))delete s[p];const w=n.value;if(w)try{return await o.value.runAgent({agent:w,resume:g})}catch(p){throw console.error("[CopilotKit] useInterrupt resolve: runAgent rejected; clearing pending + rethrowing",p),a.value=null,p}},l=async(d,h)=>{const b=a.value;if(!b)return;const g=n.value;if(!g)return;if(b.kind==="legacy"){const p=b.event.value;try{return await o.value.runAgent({agent:g,forwardedProps:{command:{resume:d,interruptEvent:p}}})}catch(k){throw console.error("[CopilotKit] useInterrupt resolve: runAgent rejected; clearing pending + rethrowing",k),a.value=null,k}}b.interrupts.length>1&&h===void 0&&console.warn(`[CopilotKit] useInterrupt: resolve()/cancel() called without an interruptId while ${b.interrupts.length} interrupts are open; defaulting to the first. Pass an interruptId to address a specific interrupt.`);const w=h??b.interrupts[0]?.id;if(w)return s[w]={status:"resolved",payload:d},i(b.interrupts)},c=async d=>{const h=a.value;if(!h)return;if(h.kind==="legacy"){console.warn("[CopilotKit] useInterrupt: cancel() is not supported for legacy on_interrupt interrupts; dismissing."),a.value=null;return}h.interrupts.length>1&&d===void 0&&console.warn(`[CopilotKit] useInterrupt: resolve()/cancel() called without an interruptId while ${h.interrupts.length} interrupts are open; defaulting to the first. Pass an interruptId to address a specific interrupt.`);const b=d??h.interrupts[0]?.id;if(b)return s[b]={status:"cancelled"},i(h.interrupts)},f=l,C=c;e.watch(a,(d,h,b)=>{if(!d){r.value=null;return}const g=yt(d);if(t.enabled&&!t.enabled(g)){r.value=null;return}const w=t.handler;if(!w){r.value=null;return}let p=!1;const k=w({event:g,interrupt:d.kind==="standard"?d.interrupts[0]??null:null,interrupts:d.kind==="standard"?d.interrupts:[],resolve:l,cancel:c});ri(k)?ii(k).then(v=>{p||(r.value=v)}).catch(v=>{p||(console.error("[CopilotKit] useInterrupt handler failed:",v),r.value=null)}):r.value=k,b(()=>{p=!0})},{immediate:!0});const u=e.computed(()=>a.value?yt(a.value):null),m=e.computed(()=>{const d=a.value;if(!d)return null;const h=yt(d);return t.enabled&&!t.enabled(h)?null:{event:h,interrupt:d.kind==="standard"?d.interrupts[0]??null:null,interrupts:d.kind==="standard"?d.interrupts:[],result:r.value,resolve:l,cancel:c}});return e.watch([()=>o.value,m,()=>t.renderInChat!==!1],([d,h,b],g,w)=>{if(!b)return;d.setInterruptState(h);const p=h;w(()=>{d.interruptState===p&&d.setInterruptState(null)})},{immediate:!0}),e.onScopeDispose(()=>{const d=o.value;t.renderInChat!==!1&&d.interruptState===m.value&&d.setInterruptState(null)}),{interrupt:u,result:r,hasInterrupt:e.computed(()=>m.value!==null),resolve:l,resolveInterrupt:f,cancel:c,cancelInterrupt:C,slotProps:m}}function ci(t){const{agent:o}=gt({agentId:t});return e.computed(()=>{const n=o.value;if(n&&"capabilities"in n)return n.capabilities})}function ui(){const{copilotkit:t}=be(),o=he();return function(a){const r=o.value;if(!r)return null;const s=r.agentId||j.DEFAULT_AGENT_ID,{threadId:i}=r,l=t.value,c=[...l.renderCustomMessages].filter(y=>y.agentId===void 0||y.agentId===s).sort((y,x)=>{const E=y.agentId!==void 0,B=x.agentId!==void 0;return E===B?0:E?-1:1});if(!c.length)return null;const{message:f,position:C}=a,u=l.getRunIdForMessage(s,i,f.id)??l.getRunIdsForThread(s,i).slice(-1)[0],m=u??`missing-run-id:${f.id}`,d=l.getAgent(s);if(!d)return null;const h=u?d.messages.filter(y=>l.getRunIdForMessage(s,i,y.id)===u).map(y=>y.id):[f.id],b=d.messages.findIndex(y=>y.id===f.id);b<0&&console.warn(`[CopilotKit] useRenderCustomMessages: message "${f.id}" not found in agent "${s}" messages`);const g=Math.max(0,b),w=u?Math.max(h.indexOf(f.id),0):0,p=u?h.length:1,k=u?l.getStateByRun(s,i,u):void 0,v={message:f,position:C,runId:m,messageIndex:g,messageIndexInRun:w,numberOfMessagesInRun:p,agentId:s,stateSnapshot:k};for(const y of c)if(y.render)return{renderer:y.render,props:v};return null}}function di(){const{copilotkit:t}=be(),o=he(),n=e.computed(()=>o.value?.agentId??j.DEFAULT_AGENT_ID),a=e.computed(()=>[...t.value.renderActivityMessages]);function r(i){const l=a.value;if(!l.length)return null;const c=l.filter(f=>f.activityType===i);return c.find(f=>f.agentId===n.value)??c.find(f=>f.agentId===void 0)??l.find(f=>f.activityType==="*")??null}function s(i){const l=r(i.activityType);if(!l)return null;const c=l.content.safeParse(i.content);if(!c.success)return console.warn(`Failed to parse content for activity message '${i.activityType}':`,c.error),null;const f=t.value.getAgent(n.value);return{renderer:l.render,props:{activityType:i.activityType,content:c.data,message:i,agent:f}}}return{renderActivityMessage:s,findRenderer:r}}exports.A2UIActivityContentSchema=po;exports.A2UISurfaceActivityType=uo;exports.CopilotChat=Hr;exports.CopilotChatDefaultLabels=$e;exports.CopilotChatToggleButton=Wr;exports.CopilotChatToggleButtonCloseIcon=Bt;exports.CopilotChatToggleButtonOpenIcon=Nt;exports.CopilotKitCoreVue=mn;exports.CopilotModalHeader=qr;exports.CopilotPopupView=Kr;exports.CopilotSidebarView=Gr;exports.GenerateSandboxedUiArgsSchema=wn;exports.LicenseContextKey=Et;exports.MCPAppsActivityContentSchema=dn;exports.MCPAppsActivityRenderer=pn;exports.MCPAppsActivityType=un;exports.OpenGenerativeUIActivityRenderer=xn;exports.OpenGenerativeUIActivityType=bn;exports.OpenGenerativeUIContentSchema=yn;exports.OpenGenerativeUIRenderer=Cn;exports.OpenGenerativeUIToolRenderer=Sn;exports.UseAgentUpdate=Vn;exports._sfc_main=En;exports._sfc_main$1=Bn;exports._sfc_main$10=Ye;exports._sfc_main$11=Mn;exports._sfc_main$12=Un;exports._sfc_main$13=tt;exports._sfc_main$14=rn;exports._sfc_main$15=na;exports._sfc_main$16=jr;exports._sfc_main$17=_r;exports._sfc_main$18=pr;exports._sfc_main$2=Tt;exports._sfc_main$3=ur;exports._sfc_main$4=Nn;exports._sfc_main$5=ft;exports._sfc_main$6=Xe;exports._sfc_main$7=zn;exports._sfc_main$8=Pn;exports._sfc_main$9=jn;exports.createA2UIMessageRenderer=fn;exports.createDefaultLicenseRef=Tn;exports.defineToolCallRenderer=ut;exports.extractCompleteStyles=hn;exports.getOperationSurfaceId=Ct;exports.processPartialHtml=vn;exports.useAgent=gt;exports.useAgentContext=Jr;exports.useAttachments=Dn;exports.useCapabilities=ci;exports.useComponent=Xr;exports.useConfigureSuggestions=si;exports.useCopilotChatConfiguration=he;exports.useCopilotKit=be;exports.useDefaultRenderTool=ti;exports.useFrontendTool=Dt;exports.useHumanInTheLoop=ni;exports.useInterrupt=li;exports.useKatexStyles=$n;exports.useKeyboardHeight=On;exports.useLicenseContext=et;exports.useRenderActivityMessage=di;exports.useRenderCustomMessages=ui;exports.useRenderTool=Qn;exports.useSandboxFunctions=kn;exports.useSuggestions=Fn;exports.useThreads=_n;exports.vueBasicCatalog=We;
|
|
85
|
+
//# sourceMappingURL=use-render-activity-message-hlNcbV9l.cjs.map
|