@copilotkit/vue 1.73.0 → 1.73.1

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