@copilotkit/vue 1.69.1 → 1.69.3

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