@ag-ui/client 0.1.1-canary.beta.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import{v4 as e}from"uuid";import{AGUIConnectNotImplementedError as t,AGUIError as n,EventType as r}from"@ag-ui/core";import i from"fast-json-patch";import{EMPTY as a,Observable as o,ReplaySubject as s,Subject as c,defer as l,finalize as u,from as d,lastValueFrom as f,mergeMap as p,of as m,pipe as h,throwError as g}from"rxjs";import{catchError as _,concatMap as v,defaultIfEmpty as ee,filter as te,finalize as y,map as b,mergeAll as ne,mergeMap as x,switchMap as re,takeUntil as S,tap as ie}from"rxjs/operators";import C from"untruncate-json";import{EventSchemas as ae}from"@ag-ui/core/schemas";import*as w from"@ag-ui/proto";import{z as T}from"zod/v4";import{compareVersions as E}from"compare-versions";export*from"@ag-ui/core";export*from"@ag-ui/core/schemas";const D=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function O(){return e()}function k(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&k(t);return e}const oe=512*1024;function A(e,t,n){let r=0,i=[e,t],a=new WeakSet;for(;i.length>0;){let e=i.pop();if(typeof e==`string`){if(r+=e.length,r>n)return!0}else if(typeof e==`object`&&e){if(a.has(e))continue;if(a.add(e),Array.isArray(e))for(let t=0;t<e.length;t++)i.push(e[t]);else{let t=Object.keys(e);for(let a=0;a<t.length;a++){let o=t[a];if(r+=o.length,r>n)return!0;i.push(e[o])}}}}return!1}async function j(e,t,n,r){let i=typeof process<`u`&&process.env!==void 0,a=i&&(process.env.NODE_ENV===`test`||!!process.env.VITEST_WORKER_ID),o=i&&(process.env.NODE_ENV===`development`||process.env.NODE_ENV===`test`||!!process.env.VITEST_WORKER_ID),s=o&&!A(t,n,oe),c=s?D(t):t,l=s?D(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(k(c),k(l));let e=await r(t,c,l);if(e===void 0)continue;let n=!1;if(e.messages!==void 0&&e.messages!==c&&(c=D(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=D(e.state),d=!0,n=!0),s&&n&&A(c,l,oe)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(o&&e instanceof TypeError){if(a)throw e;console.error(`AG-UI: Subscriber attempted to mutate frozen inputs in-place. Return mutations via AgentStateMutation instead of mutating directly.`,e)}else a||console.error(`Subscriber error:`,e);continue}return{...u?{messages:Object.isFrozen(c)?D(c):c}:{},...d?{state:Object.isFrozen(l)?D(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function M(e){if(!e)return{enabled:!1,events:!1,lifecycle:!1,verbose:!1};if(e===!0)return{enabled:!0,events:!0,lifecycle:!0,verbose:!0};let t=e.events??!0,n=e.lifecycle??!0,r=e.verbose??!1;return{enabled:t||n,events:t,lifecycle:n,verbose:r}}function N(e){if(e instanceof P)return e;if(e===!0)return new P(M(!0))}var P=class{constructor(e){this.config=e}event(e,t,n,r){this.config.events&&(this.config.verbose?console.debug(`[${e}] ${t}`,typeof n==`string`?n:JSON.stringify(n)):console.debug(`[${e}] ${t}`,r??n))}lifecycle(e,t,n){this.config.lifecycle&&(n?console.debug(`[${e}] ${t}`,n):console.debug(`[${e}] ${t}`))}get eventsEnabled(){return this.config.events}get lifecycleEnabled(){return this.config.lifecycle}get enabled(){return this.config.enabled}};function F(e){return e.enabled?new P(e):void 0}function se(e,t,n){if(t){let r=e.find(e=>e.id===t);if(r?.role===`assistant`)return r;r&&console.warn(`TOOL_CALL_START: parentMessageId '${t}' matches a '${r.role}' message, not assistant — falling back to toolCallId`);let i={id:r?n:t,role:`assistant`,toolCalls:[]};return e.push(i),i}let r={id:n,role:`assistant`,toolCalls:[]};return e.push(r),r}const I=(e,t,n,o,s)=>{let c=N(s),l=D(n.messages),u=D(e.state),d={},f=e=>{e.messages!==void 0&&(l=e.messages,d.messages=e.messages),e.state!==void 0&&(u=e.state,d.state=e.state)},p=()=>{let e=D(d);return d={},e.messages!==void 0||e.state!==void 0?m(e):a};return t.pipe(v(async t=>{let a=await j(o,l,u,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(f(a),a.stopPropagation===!0?c?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):c?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:o.length}),a.stopPropagation===!0)return p();switch(t.type){case r.TEXT_MESSAGE_START:{let r=await j(o,l,u,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r}=t;if(!l.find(t=>t.id===e)){let t={id:e,role:n,content:``,...r!==void 0&&{name:r}};l.push(t),f({messages:l})}}return p()}case r.TEXT_MESSAGE_CONTENT:{let{messageId:r,delta:i}=t,a=l.find(e=>e.id===r);if(!a)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${r}'`),p();let s=await j(o,l,u,(r,i,o)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}));return f(s),s.stopPropagation!==!0&&(a.content=`${typeof a.content==`string`?a.content:``}${i}`,f({messages:l})),p()}case r.TEXT_MESSAGE_END:{let{messageId:r}=t,i=l.find(e=>e.id===r);return i?(f(await j(o,l,u,(r,a,o)=>r.onTextMessageEndEvent?.({event:t,messages:a,state:o,agent:n,input:e,textMessageBuffer:typeof i.content==`string`?i.content:``}))),await Promise.all(o.map(t=>{t.onNewMessage?.({message:i,messages:l,state:u,agent:n,input:e})})),p()):(console.warn(`TEXT_MESSAGE_END: No message found with ID '${r}'`),p())}case r.TOOL_CALL_START:{let r=await j(o,l,u,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r}=t,i=se(l,r,e);i.toolCalls??=[],i.toolCalls.push({id:e,type:`function`,function:{name:n,arguments:``}}),f({messages:l})}return p()}case r.TOOL_CALL_ARGS:{let{toolCallId:r,delta:i}=t,a=l.find(e=>e.toolCalls?.some(e=>e.id===r));if(!a)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${r}'`),p();let s=a.toolCalls?.find(e=>e.id===r);if(!s)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${r}'`),p();let c=await j(o,l,u,(r,i,a)=>{let o=s.function.arguments,c=s.function.name,l={};try{l=C(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:c,partialToolCallArgs:l})});return f(c),c.stopPropagation!==!0&&(s.function.arguments+=i,f({messages:l})),p()}case r.TOOL_CALL_END:{let{toolCallId:r}=t,i=l.find(e=>e.toolCalls?.some(e=>e.id===r));if(!i)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${r}'`),p();let a=i.toolCalls?.find(e=>e.id===r);return a?(f(await j(o,l,u,(r,i,o)=>{let s=a.function.arguments,c=a.function.name,l={};try{l=JSON.parse(s)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,toolCallName:c,toolCallArgs:l})})),await Promise.all(o.map(t=>{t.onNewToolCall?.({toolCall:a,messages:l,state:u,agent:n,input:e})})),p()):(console.warn(`TOOL_CALL_END: No tool call found with ID '${r}'`),p())}case r.TOOL_CALL_RESULT:{let r=await j(o,l,u,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let{messageId:r,toolCallId:i,content:a,role:s}=t,c={id:r,toolCallId:i,role:s||`tool`,content:a},d=l.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===i));if(d===-1)l.push(c);else{let e=d+1;for(;e<l.length&&l[e].role===`tool`;)e++;l.splice(e,0,c)}await Promise.all(o.map(t=>{t.onNewMessage?.({message:c,messages:l,state:u,agent:n,input:e})})),f({messages:l})}return p()}case r.STATE_SNAPSHOT:{let r=await j(o,l,u,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let{snapshot:e}=t;u=e,f({state:u})}return p()}case r.STATE_DELTA:{let r=await j(o,l,u,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let{delta:e}=t;try{u=i.applyPatch(u,e,!0,!1).newDocument,f({state:u})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(u,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return p()}case r.MESSAGES_SNAPSHOT:{let r=await j(o,l,u,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let{messages:e}=t,n=new Map(e.map(e=>[e.id,e])),r=e.some(e=>e.role===`activity`),i=e.some(e=>e.role===`reasoning`),a=e=>e.role===`activity`&&!r||e.role===`reasoning`&&!i;l=l.filter(e=>a(e)||n.has(e.id)).map(e=>a(e)?e:n.get(e.id));let o=new Set(l.map(e=>e.id));for(let t of e)o.has(t.id)||l.push(t);f({messages:l})}return p()}case r.ACTIVITY_SNAPSHOT:{let r=t,i=l.findIndex(e=>e.id===r.messageId),a=i>=0?l[i]:void 0,s=a?.role===`activity`?a:void 0,c=r.replace??!0,d=await j(o,l,u,(t,i,o)=>t.onActivitySnapshotEvent?.({event:r,messages:i,state:o,agent:n,input:e,activityMessage:s,existingMessage:a}));if(f(d),d.stopPropagation!==!0){let t={id:r.messageId,role:`activity`,activityType:r.activityType,content:D(r.content)},a;i===-1?(l.push(t),a=t):s?c&&(l[i]={...s,activityType:r.activityType,content:D(r.content)}):c&&(l[i]=t,a=t),f({messages:l}),a&&await Promise.all(o.map(t=>t.onNewMessage?.({message:a,messages:l,state:u,agent:n,input:e})))}return p()}case r.ACTIVITY_DELTA:{let r=t,a=l.findIndex(e=>e.id===r.messageId);if(a===-1)return p();let s=l[a];if(s.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${r.messageId}' is not an activity message`),p();let c=s,d=await j(o,l,u,(t,i,a)=>t.onActivityDeltaEvent?.({event:r,messages:i,state:a,agent:n,input:e,activityMessage:c}));if(f(d),d.stopPropagation!==!0)try{let e=D(c.content??{}),t=i.applyPatch(e,r.patch??[],!0,!1).newDocument;l[a]={...c,content:D(t),activityType:r.activityType},f({messages:l})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${r.messageId}': ${t}`)}return p()}case r.RAW:return f(await j(o,l,u,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case r.CUSTOM:return f(await j(o,l,u,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case r.RUN_STARTED:{let r=await j(o,l,u,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let e=t;if(e.input?.messages){for(let t of e.input.messages)l.find(e=>e.id===t.id)||l.push(t);f({messages:l})}}return p()}case r.RUN_FINISHED:{let r=t,i=r.outcome?.type===`interrupt`?{event:r,outcome:`interrupt`,interrupts:r.outcome.interrupts}:{event:r,outcome:`success`,result:r.result},a=await j(o,l,u,(t,r,a)=>t.onRunFinishedEvent?.({...i,messages:r,state:a,agent:n,input:e}));return f(a),a.stopPropagation!==!0&&(n.pendingInterrupts=i.outcome===`interrupt`?[...i.interrupts]:[]),p()}case r.RUN_ERROR:return f(await j(o,l,u,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case r.STEP_STARTED:return f(await j(o,l,u,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case r.STEP_FINISHED:return f(await j(o,l,u,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case r.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be tranformed before being applied`);case r.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be tranformed before being applied`);case r.THINKING_START:return p();case r.THINKING_END:return p();case r.THINKING_TEXT_MESSAGE_START:return p();case r.THINKING_TEXT_MESSAGE_CONTENT:return p();case r.THINKING_TEXT_MESSAGE_END:return p();case r.REASONING_START:return f(await j(o,l,u,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case r.REASONING_MESSAGE_START:{let r=await j(o,l,u,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(r),r.stopPropagation!==!0){let{messageId:e}=t;if(!l.find(t=>t.id===e)){let t={id:e,role:`reasoning`,content:``};l.push(t),f({messages:l})}}return p()}case r.REASONING_MESSAGE_CONTENT:{let{messageId:r,delta:i}=t,a=l.find(e=>e.id===r);if(!a)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${r}'`),p();let s=await j(o,l,u,(r,i,o)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}));return f(s),s.stopPropagation!==!0&&(a.content=`${typeof a.content==`string`?a.content:``}${i}`,f({messages:l})),p()}case r.REASONING_MESSAGE_END:{let{messageId:r}=t,i=l.find(e=>e.id===r);return i?(f(await j(o,l,u,(r,a,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:a,state:o,agent:n,input:e,reasoningMessageBuffer:typeof i.content==`string`?i.content:``}))),await Promise.all(o.map(t=>{t.onNewMessage?.({message:i,messages:l,state:u,agent:n,input:e})})),p()):(console.warn(`REASONING_MESSAGE_END: No message found with ID '${r}'`),p())}case r.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case r.REASONING_END:return f(await j(o,l,u,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case r.REASONING_ENCRYPTED_VALUE:{let{subtype:r,entityId:i,encryptedValue:a}=t,s=await j(o,l,u,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(s),s.stopPropagation!==!0){let e=!1;if(r===`tool-call`){for(let t of l)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===i);if(n){n.encryptedValue=a,e=!0;break}}}else{let t=l.find(e=>e.id===i);t?.role!==`activity`&&t&&(t.encryptedValue=a,e=!0)}e&&(d.messages=l)}return p()}}return t.type,p()}),ne(),o.length>0?ee({}):e=>e)},L=e=>t=>{let i=N(e),a=new Map,o=new Map,s=!1,c=!1,l=!1,u=new Map,d=!1,f=!1,p=!1,h=()=>{a.clear(),o.clear(),u.clear(),d=!1,f=!1,s=!1,c=!1,p=!0};return t.pipe(x(e=>{let t=e.type;if(i?.event(`VERIFY`,`Event:`,e,{type:e.type}),c)return g(()=>new n(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(s&&t!==r.RUN_ERROR&&t!==r.RUN_STARTED)return g(()=>new n(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!l){if(l=!0,t!==r.RUN_STARTED&&t!==r.RUN_ERROR)return g(()=>new n(`First event must be 'RUN_STARTED'`))}else if(t===r.RUN_STARTED){if(p&&!s)return g(()=>new n(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));s&&h()}switch(t){case r.TEXT_MESSAGE_START:{let t=e.messageId;return a.has(t)?g(()=>new n(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${t}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(a.set(t,!0),m(e))}case r.TEXT_MESSAGE_CONTENT:{let t=e.messageId;return a.has(t)?m(e):g(()=>new n(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${t}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case r.TEXT_MESSAGE_END:{let t=e.messageId;return a.has(t)?(a.delete(t),m(e)):g(()=>new n(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${t}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case r.TOOL_CALL_START:{let t=e.toolCallId;return o.has(t)?g(()=>new n(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${t}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(o.set(t,!0),m(e))}case r.TOOL_CALL_ARGS:{let t=e.toolCallId;return o.has(t)?m(e):g(()=>new n(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${t}'. Start a tool call with 'TOOL_CALL_START' first.`))}case r.TOOL_CALL_END:{let t=e.toolCallId;return o.has(t)?(o.delete(t),m(e)):g(()=>new n(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${t}'. A 'TOOL_CALL_START' event must be sent first.`))}case r.STEP_STARTED:{let t=e.stepName;return u.has(t)?g(()=>new n(`Step "${t}" is already active for 'STEP_STARTED'`)):(u.set(t,!0),m(e))}case r.STEP_FINISHED:{let t=e.stepName;return u.has(t)?(u.delete(t),m(e)):g(()=>new n(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}case r.RUN_STARTED:return p=!0,m(e);case r.RUN_FINISHED:if(u.size>0){let e=Array.from(u.keys()).join(`, `);return g(()=>new n(`Cannot send 'RUN_FINISHED' while steps are still active: ${e}`))}if(a.size>0){let e=Array.from(a.keys()).join(`, `);return g(()=>new n(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(o.size>0){let e=Array.from(o.keys()).join(`, `);return g(()=>new n(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}return s=!0,m(e);case r.RUN_ERROR:return c=!0,m(e);case r.CUSTOM:return m(e);case r.THINKING_TEXT_MESSAGE_START:return d?f?g(()=>new n(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.`)):(f=!0,m(e)):g(()=>new n(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first.`));case r.THINKING_TEXT_MESSAGE_CONTENT:return f?m(e):g(()=>new n(`Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first.`));case r.THINKING_TEXT_MESSAGE_END:return f?(f=!1,m(e)):g(()=>new n(`Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first.`));case r.THINKING_START:return d?g(()=>new n(`Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.`)):(d=!0,m(e));case r.THINKING_END:return d?(d=!1,m(e)):g(()=>new n(`Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first.`));default:return m(e)}}))};let R=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({});const z=e=>l(()=>d(e())).pipe(re(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return d(e.text()).pipe(x(n=>{let r=n;if(t.includes(`application/json`))try{r=JSON.parse(n)}catch{}let i=Error(`HTTP ${e.status}: ${typeof r==`string`?r:JSON.stringify(r)}`);return i.status=e.status,i.payload=r,g(()=>i)}))}let t={type:R.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new o(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:R.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):g(()=>Error(`Failed to getReader() from response`))})),B=(e,t)=>{let n=N(t),r=new c,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==R.HEADERS&&e.type===R.DATA&&e.data){let t=i.decode(e.data,{stream:!0});a+=t;let n=a.split(/\n\n/);a=n.pop()||``;for(let e of n)o(e)}},error:e=>r.error(e),complete:()=>{a&&(a+=i.decode(),o(a)),r.complete()}});function o(e){let t=e.split(`
1
+ import{v4 as e}from"uuid";import{AGUIConnectNotImplementedError as t,AGUIError as n,EventType as r,PROTOCOL_VERSION as i,contentHasMedia as a,contentToText as o,mergeMetadata as s,omitOptionalNulls as c}from"@ag-ui/core";import l from"fast-json-patch";import{EMPTY as u,Observable as d,ReplaySubject as f,Subject as p,defer as m,finalize as h,from as g,lastValueFrom as _,mergeMap as v,of as y,pipe as ee,throwError as b}from"rxjs";import{catchError as x,concatMap as S,defaultIfEmpty as te,filter as ne,finalize as re,map as C,mergeAll as ie,mergeMap as w,switchMap as ae,takeUntil as oe,tap as se}from"rxjs/operators";import ce from"untruncate-json";import*as T from"@ag-ui/proto";import{compareVersions as E,validate as le}from"compare-versions";import{EventSchema as ue,ReasoningMessageChunkEventSchema as de,RunAgentInputSchema as fe,TextMessageChunkEventSchema as pe,ToolCallChunkEventSchema as me}from"@ag-ui/core/schemas";import{z as D}from"zod/v4";export*from"@ag-ui/core";const O=`@ag-ui/client`;function he(e){if(!e.metadata||!Object.prototype.hasOwnProperty.call(e.metadata,O))return;let t=e.metadata?.[O];if(!t||typeof t!=`object`||Array.isArray(t))return[];if(!Object.prototype.hasOwnProperty.call(t,`authoritativeActivityTypes`))return;let n=t.authoritativeActivityTypes;return n===null?null:Array.isArray(n)&&n.every(e=>typeof e==`string`)?n:[]}function ge(e,t){let n=e.metadata?.[O],r=he(e),i=r===null||r===void 0&&e.messages.some(e=>e.role===`activity`);return{...e,metadata:{...e.metadata,[O]:{...n&&typeof n==`object`&&!Array.isArray(n)?n:{},authoritativeActivityTypes:i?null:[...new Set([...r??[],...t])]}}}}const k=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function A(){return e()}function _e(e){return e instanceof TypeError?/read[- ]?only|not extensible|cannot add property|cannot delete property|can't be deleted|unable to delete property|object is frozen|is not writable/i.test(e.message):!1}function ve(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&ve(t);return e}const ye=512*1024;function be(e,t,n){let r=0,i=[e,t],a=new WeakSet;for(;i.length>0;){let e=i.pop();if(typeof e==`string`){if(r+=e.length,r>n)return!0}else if(typeof e==`object`&&e){if(a.has(e))continue;if(a.add(e),Array.isArray(e))for(let t=0;t<e.length;t++)i.push(e[t]);else{let t=Object.keys(e);for(let a=0;a<t.length;a++){let o=t[a];if(r+=o.length,r>n)return!0;i.push(e[o])}}}}return!1}async function j(e,t,n,r){let i=typeof process<`u`&&process.env!==void 0,a=i&&(process.env.NODE_ENV===`test`||!!process.env.VITEST_WORKER_ID),o=i&&(process.env.NODE_ENV===`development`||process.env.NODE_ENV===`test`||!!process.env.VITEST_WORKER_ID),s=o&&!be(t,n,ye),c=s?k(t):t,l=s?k(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(ve(c),ve(l));let e=await r(t,c,l);if(e===void 0)continue;let n=!1;if(e.messages!==void 0&&e.messages!==c&&(c=k(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=k(e.state),d=!0,n=!0),s&&n&&be(c,l,ye)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(a&&e instanceof TypeError)throw e;s&&o&&_e(e)?console.error(`AG-UI: Subscriber attempted to mutate frozen inputs in-place. Return mutations via AgentStateMutation instead of mutating directly.`,e):console.error(`Subscriber error:`,e);continue}return{...u?{messages:Object.isFrozen(c)?k(c):c}:{},...d?{state:Object.isFrozen(l)?k(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function M(e){if(!e)return{enabled:!1,events:!1,lifecycle:!1,verbose:!1};if(e===!0)return{enabled:!0,events:!0,lifecycle:!0,verbose:!0};let t=e.events??!0,n=e.lifecycle??!0,r=e.verbose??!1;return{enabled:t||n,events:t,lifecycle:n,verbose:r}}function N(e){if(e instanceof P)return e;if(e===!0)return new P(M(!0))}var P=class{constructor(e){this.config=e}event(e,t,n,r){this.config.events&&(this.config.verbose?console.debug(`[${e}] ${t}`,typeof n==`string`?n:JSON.stringify(n)):console.debug(`[${e}] ${t}`,r??n))}lifecycle(e,t,n){this.config.lifecycle&&(n?console.debug(`[${e}] ${t}`,n):console.debug(`[${e}] ${t}`))}get eventsEnabled(){return this.config.events}get lifecycleEnabled(){return this.config.lifecycle}get enabled(){return this.config.enabled}};function F(e){return e.enabled?new P(e):void 0}function xe(e,t,n){if(t){let r=e.find(e=>e.id===t);if(r?.role===`assistant`)return r;r&&console.warn(`TOOL_CALL_START: parentMessageId '${t}' matches a '${r.role}' message, not assistant — falling back to toolCallId`);let i={id:r?n:t,role:`assistant`,toolCalls:[]};return e.push(i),i}let r={id:n,role:`assistant`,toolCalls:[]};return e.push(r),r}function I(e,t){return!e||t.metadata===void 0?!1:(e.metadata=s(e.metadata,k(t.metadata)),!0)}const Se=(e,t,n,i,a)=>{let o=N(a),s=k(n.messages),c=k(e.state),d={},f=[],p=new Set,m=e=>{let t=e.outcome?.type===`success`?e.outcome.pendingToolCallIds:void 0;return t!==void 0&&t.length>0?[...t]:f.filter(e=>!p.has(e))},h=e=>{e.messages!==void 0&&(s=e.messages,d.messages=e.messages),e.state!==void 0&&(c=e.state,d.state=e.state)},g=()=>{let e=k(d);return d={},e.messages!==void 0||e.state!==void 0?y(e):u};return t.pipe(S(async t=>{let a=await j(i,s,c,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(h(a),a.stopPropagation===!0?o?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):o?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:i.length}),a.stopPropagation===!0)return g();switch(t.type){case r.TEXT_MESSAGE_START:{let r=await j(i,s,c,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),r.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r,subagentRunId:i}=t,a=s.find(t=>t.id===e);if(a?.role===`activity`)return console.warn(`TEXT_MESSAGE_START: Message '${e}' is an activity message — message ids must be unique across activity and text messages`),g();let o=a;if(!o){let t={id:e,role:n,content:``,...r!==void 0&&{name:r},...i!=null&&{subagentRunId:i}};s.push(t),o=t}let c=I(o,t);(!a||c)&&h({messages:s})}return g()}case r.TEXT_MESSAGE_CONTENT:{let{messageId:r,delta:a}=t,o=s.find(e=>e.id===r);if(!o)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${r}'`),g();if(o.role===`activity`)return console.warn(`TEXT_MESSAGE_CONTENT: Message '${r}' is an activity message — message ids must be unique across activity and text messages`),g();let l=await j(i,s,c,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof o.content==`string`?o.content:``}));return h(l),l.stopPropagation!==!0&&(o.content=`${typeof o.content==`string`?o.content:``}${a}`,I(o,t),h({messages:s})),g()}case r.TEXT_MESSAGE_END:{let{messageId:r}=t,a=s.find(e=>e.id===r);if(!a)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${r}'`),g();if(a.role===`activity`)return console.warn(`TEXT_MESSAGE_END: Message '${r}' is an activity message — message ids must be unique across activity and text messages`),g();let o=await j(i,s,c,(r,i,o)=>r.onTextMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}));return h(o),o.stopPropagation!==!0&&I(a,t)&&h({messages:s}),await Promise.all(i.map(t=>{t.onNewMessage?.({message:a,messages:s,state:c,agent:n,input:e})})),g()}case r.TOOL_CALL_START:{let r=await j(i,s,c,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),r.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r,subagentRunId:i}=t;f.includes(e)||f.push(e);let a=s.find(t=>t.toolCalls?.some(t=>t.id===e))?.toolCalls?.find(t=>t.id===e);if(a){let r=a.function.name!==n;return r&&(console.warn(`TOOL_CALL_START: tool call '${e}' already exists with name '${a.function.name}' — updating it to '${n}'`),a.function.name=n),(I(a,t)||r)&&h({messages:s}),g()}let o=new Set(s.map(e=>e.id)),c=xe(s,r,e);!o.has(c.id)&&i!=null&&c.subagentRunId===void 0&&(c.subagentRunId=i),c.toolCalls??=[];let l={id:e,type:`function`,function:{name:n,arguments:``}};c.toolCalls.push(l),I(l,t),h({messages:s})}return g()}case r.TOOL_CALL_ARGS:{let{toolCallId:r,delta:a}=t,o=s.find(e=>e.toolCalls?.some(e=>e.id===r));if(!o)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${r}'`),g();let l=o.toolCalls?.find(e=>e.id===r);if(!l)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${r}'`),g();let u=await j(i,s,c,(r,i,a)=>{let o=l.function.arguments,s=l.function.name,c={};try{c=ce(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:c})});return h(u),u.stopPropagation!==!0&&(l.function.arguments+=a,I(l,t),h({messages:s})),g()}case r.TOOL_CALL_END:{let{toolCallId:r}=t,a=s.find(e=>e.toolCalls?.some(e=>e.id===r));if(!a)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${r}'`),g();let o=a.toolCalls?.find(e=>e.id===r);if(!o)return console.warn(`TOOL_CALL_END: No tool call found with ID '${r}'`),g();let l=await j(i,s,c,(r,i,a)=>{let s=o.function.arguments,c=o.function.name,l={};try{l=JSON.parse(s)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallName:c,toolCallArgs:l})});return h(l),l.stopPropagation!==!0&&I(o,t)&&h({messages:s}),await Promise.all(i.map(t=>{t.onNewToolCall?.({toolCall:o,messages:s,state:c,agent:n,input:e})})),g()}case r.TOOL_CALL_RESULT:{let r=await j(i,s,c,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),r.stopPropagation!==!0){let{messageId:r,toolCallId:a,content:o,role:l,subagentRunId:u}=t;p.add(a);let d={id:r,toolCallId:a,role:l||`tool`,content:o,...u!=null&&{subagentRunId:u}};I(d,t);let f=s.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===a));if(f===-1)s.push(d);else{let e=f+1;for(;e<s.length&&s[e].role===`tool`;)e++;s.splice(e,0,d)}await Promise.all(i.map(t=>{t.onNewMessage?.({message:d,messages:s,state:c,agent:n,input:e})})),h({messages:s})}return g()}case r.STATE_SNAPSHOT:{let r=await j(i,s,c,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),r.stopPropagation!==!0){let{snapshot:e}=t;c=e,h({state:c})}return g()}case r.STATE_DELTA:{let r=await j(i,s,c,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),r.stopPropagation!==!0){let{delta:e}=t;try{c=l.applyPatch(c,e,!0,!1).newDocument,h({state:c})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(c,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return g()}case r.MESSAGES_SNAPSHOT:{let r=await j(i,s,c,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),r.stopPropagation!==!0){let{messages:e}=t,n=e.map(e=>{if(e.subagentRunId!==null)return e;let t={...e};return delete t.subagentRunId,t}),r=new Map(n.map(e=>[e.id,e])),i=he(t),a=n.some(e=>e.role===`activity`),o=n.some(e=>e.role===`reasoning`),c=e=>e.role===`activity`&&(i?!i.includes(e.activityType):i!==null&&!a)||e.role===`reasoning`&&!o;s=s.filter(e=>r.has(e.id)||c(e)).map(e=>r.get(e.id)??e);let l=new Set(s.map(e=>e.id));for(let e of n)l.has(e.id)||s.push(e);h({messages:s})}return g()}case r.ACTIVITY_SNAPSHOT:{let r=t,a=s.findIndex(e=>e.id===r.messageId),o=a>=0?s[a]:void 0,l=o?.role===`activity`?o:void 0,u=r.replace??!0,d=await j(i,s,c,(t,i,a)=>t.onActivitySnapshotEvent?.({event:r,messages:i,state:a,agent:n,input:e,activityMessage:l,existingMessage:o}));if(h(d),d.stopPropagation!==!0){let t={id:r.messageId,role:`activity`,activityType:r.activityType,content:k(r.content),...r.subagentRunId!=null&&{subagentRunId:r.subagentRunId}},o,d;a===-1?(s.push(t),o=t,d=t):l?(u&&(s[a]={...l,activityType:r.activityType,content:k(r.content),subagentRunId:r.subagentRunId},r.subagentRunId??delete s[a].subagentRunId),d=s[a]):u&&(s[a]=t,o=t,d=t),I(d,r),h({messages:s}),o&&await Promise.all(i.map(t=>t.onNewMessage?.({message:o,messages:s,state:c,agent:n,input:e})))}return g()}case r.ACTIVITY_DELTA:{let r=t,a=s.findIndex(e=>e.id===r.messageId);if(a===-1)return g();let o=s[a];if(o.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${r.messageId}' is not an activity message`),g();let u=o,d=await j(i,s,c,(t,i,a)=>t.onActivityDeltaEvent?.({event:r,messages:i,state:a,agent:n,input:e,activityMessage:u}));if(h(d),d.stopPropagation!==!0)try{I(u,r)&&h({messages:s});let e=k(u.content??{}),t=l.applyPatch(e,r.patch??[],!0,!1).newDocument;s[a]={...u,content:k(t),activityType:r.activityType},h({messages:s})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${r.messageId}': ${t}`)}return g()}case r.RAW:return h(await j(i,s,c,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.CUSTOM:return h(await j(i,s,c,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.RUN_STARTED:{let r=await j(i,s,c,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),f=[],p=new Set,r.stopPropagation!==!0){let e=t;if(e.input?.messages){for(let t of e.input.messages){let e=t;if(t.subagentRunId===null){let n={...t};delete n.subagentRunId,e=n}s.find(t=>t.id===e.id)||s.push(e)}h({messages:s})}}return g()}case r.RUN_FINISHED:{let r=t,a=r.outcome?.type===`interrupt`?{event:r,outcome:`interrupt`,interrupts:r.outcome.interrupts}:r.outcome?.type===`cancelled`?{event:r,outcome:`cancelled`}:{event:r,outcome:`success`,result:r.result,pendingToolCallIds:m(r)},o=await j(i,s,c,(t,r,i)=>t.onRunFinishedEvent?.({...a,messages:r,state:i,agent:n,input:e}));return h(o),o.stopPropagation!==!0&&(n.pendingInterrupts=a.outcome===`interrupt`?a.interrupts.map(e=>{if(e.subagentRunId!==null)return e;let t={...e};return delete t.subagentRunId,t}):[]),g()}case r.RUN_ERROR:return h(await j(i,s,c,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.STEP_STARTED:return h(await j(i,s,c,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.STEP_FINISHED:return h(await j(i,s,c,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be transformed before being applied`);case r.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be transformed before being applied`);case r.REASONING_START:return h(await j(i,s,c,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.REASONING_MESSAGE_START:{let r=await j(i,s,c,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(r),r.stopPropagation!==!0){let{messageId:e,subagentRunId:n}=t,r=s.find(t=>t.id===e);if(r?.role===`activity`)return console.warn(`REASONING_MESSAGE_START: Message '${e}' is an activity message — message ids must be unique across activity and reasoning messages`),g();let i=r;if(!i){let t={id:e,role:`reasoning`,content:``,...n!=null&&{subagentRunId:n}};s.push(t),i=t}let a=I(i,t);(!r||a)&&h({messages:s})}return g()}case r.REASONING_MESSAGE_CONTENT:{let{messageId:r,delta:a}=t,o=s.find(e=>e.id===r);if(!o)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${r}'`),g();if(o.role===`activity`)return console.warn(`REASONING_MESSAGE_CONTENT: Message '${r}' is an activity message — message ids must be unique across activity and reasoning messages`),g();let l=await j(i,s,c,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof o.content==`string`?o.content:``}));return h(l),l.stopPropagation!==!0&&(o.content=`${typeof o.content==`string`?o.content:``}${a}`,I(o,t),h({messages:s})),g()}case r.REASONING_MESSAGE_END:{let{messageId:r}=t,a=s.find(e=>e.id===r);if(!a)return console.warn(`REASONING_MESSAGE_END: No message found with ID '${r}'`),g();if(a.role===`activity`)return console.warn(`REASONING_MESSAGE_END: Message '${r}' is an activity message — message ids must be unique across activity and reasoning messages`),g();let o=await j(i,s,c,(r,i,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}));return h(o),o.stopPropagation!==!0&&I(a,t)&&h({messages:s}),await Promise.all(i.map(t=>{t.onNewMessage?.({message:a,messages:s,state:c,agent:n,input:e})})),g()}case r.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case r.REASONING_END:return h(await j(i,s,c,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.REASONING_ENCRYPTED_VALUE:{let{subtype:r,entityId:a,encryptedValue:o}=t,l=await j(i,s,c,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(l),l.stopPropagation!==!0){let e=!1;if(r===`tool-call`){for(let t of s)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===a);if(n){n.encryptedValue=o,e=!0;break}}}else{let t=s.find(e=>e.id===a);t?.role!==`activity`&&t&&(t.encryptedValue=o,e=!0)}e&&(d.messages=s)}return g()}case r.SUBAGENT_STARTED:return h(await j(i,s,c,(r,i,a)=>r.onSubagentStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.SUBAGENT_FINISHED:return h(await j(i,s,c,(r,i,a)=>r.onSubagentFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.SUBAGENT_ERROR:return h(await j(i,s,c,(r,i,a)=>r.onSubagentErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g()}return t.type,g()}),ie(),i.length>0?te({}):e=>e)},L=e=>t=>{let i=N(e),a=new Set,o=new Set,s=new Set,c=new Set,l={message:new Map,toolCall:new Map,activity:new Map,reasoning:new Map},u=!1,d=!1,f=!1,p=new Map,m=e=>{let t=p.get(e);return t||(t=new Map,p.set(e,t)),t},h=()=>{for(let e of p.values())if(e.size>0)return!0;return!1},g=new Map,_=new Set,v=!1,ee=()=>{a.clear(),o.clear(),s.clear(),c.clear(),l.message.clear(),l.toolCall.clear(),l.activity.clear(),l.reasoning.clear(),p.clear(),g.clear(),_.clear(),u=!1,d=!1,v=!0},x=(e,t)=>{let r=e??[];if(Array.isArray(r))for(let e of r){if(!e||typeof e.id!=`string`)continue;if(e.subagentRunId===null)return new n(`Cannot send a message (id '${e.id}') with 'subagentRunId: null'. The field is optional — omit it entirely.`);let r=e.role===`reasoning`?l.reasoning:e.role===`activity`?l.activity:l.message;(t||!r.has(e.id))&&r.set(e.id,{subagentRunId:e.subagentRunId});for(let n of e.toolCalls??[])n&&typeof n.id==`string`&&(t||!l.toolCall.has(n.id))&&l.toolCall.set(n.id,{subagentRunId:e.subagentRunId??void 0})}},S=(e,t,r,i,a)=>{if(t!==void 0&&r&&r.subagentRunId!==t)return new n(`Cannot send '${e}': subagentRunId '${t}' does not match the ${i} '${a}' opener's subagent '${r.subagentRunId??`(the parent agent)`}'.`)};return t.pipe(w(e=>{let t=e.type;if(i?.event(`VERIFY`,`Event:`,e,{type:e.type}),d&&t!==r.RUN_STARTED)return b(()=>new n(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(u&&t!==r.RUN_ERROR&&t!==r.RUN_STARTED)return b(()=>new n(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!f){if(f=!0,t!==r.RUN_STARTED&&t!==r.RUN_ERROR)return b(()=>new n(`First event must be 'RUN_STARTED'`))}else if(t===r.RUN_STARTED){if(v&&!u&&!d)return b(()=>new n(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));(u||d)&&ee()}if(e.subagentRunId===null)return b(()=>new n(`Cannot send '${t}' with 'subagentRunId: null'. The field is optional — omit it entirely.`));if(t===r.SUBAGENT_STARTED||t===r.SUBAGENT_FINISHED||t===r.SUBAGENT_ERROR){let i=t===r.SUBAGENT_STARTED?[`description`,`parentSubagentRunId`,`parentToolCallId`,`parentMessageId`]:t===r.SUBAGENT_FINISHED?[`outcome`]:[`code`];for(let r of i)if(e[r]===null)return b(()=>new n(`Cannot send '${t}' with '${r}: null'. The field is optional — omit it entirely.`));let a=e.outcome;if(a!=null&&a.type!==`success`&&a.type!==`suspended`)return b(()=>new n(`Cannot send '${t}' with outcome type '${String(a.type)}'. The outcome is either { type: "success" } or { type: "suspended" }.`));if(a&&a.interruptIds===null)return b(()=>new n(`Cannot send '${t}' with 'outcome.interruptIds: null'. The field is optional — omit it entirely.`));if(a&&Array.isArray(a.interruptIds)&&a.interruptIds.some(e=>typeof e!=`string`))return b(()=>new n(`Cannot send '${t}' with a non-string entry in 'outcome.interruptIds'. Interrupt ids are strings.`))}if(t===r.RUN_FINISHED){let t=e.outcome;if(t?.type===`interrupt`&&Array.isArray(t.interrupts)){for(let e of t.interrupts)if(e&&e.subagentRunId===null)return b(()=>new n(`Cannot send 'RUN_FINISHED' with an interrupt (id '${e.id}') carrying 'subagentRunId: null'. The field is optional — omit it entirely.`))}}switch(t){case r.TEXT_MESSAGE_START:{let r=e.messageId;if(a.has(r))return b(()=>new n(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${r}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`));let i=l.message.get(r);if(i){let n=S(t,e.subagentRunId,i,`message`,r);if(n)return b(()=>n)}return a.add(r),i||l.message.set(r,{subagentRunId:e.subagentRunId}),y(e)}case r.TEXT_MESSAGE_CONTENT:{let r=e.messageId;if(!a.has(r))return b(()=>new n(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${r}'. Start a text message with 'TEXT_MESSAGE_START' first.`));let i=S(t,e.subagentRunId,l.message.get(r),`message`,r);return i?b(()=>i):y(e)}case r.TEXT_MESSAGE_END:{let r=e.messageId;if(!a.has(r))return b(()=>new n(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${r}'. A 'TEXT_MESSAGE_START' event must be sent first.`));let i=S(t,e.subagentRunId,l.message.get(r),`message`,r);return i?b(()=>i):(a.delete(r),y(e))}case r.TOOL_CALL_START:{let r=e.toolCallId;if(o.has(r))return b(()=>new n(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${r}' is already in progress. Complete it with 'TOOL_CALL_END' first.`));let i=e.parentMessageId,a=e.subagentRunId,s;if(i!==void 0){let e=l.message.get(i);if(e){if(a!==void 0&&a!==e.subagentRunId)return b(()=>new n(`Cannot send 'TOOL_CALL_START': subagentRunId '${a}' does not match its parent message '${i}' owner '${e.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`));s=e}}let c=l.toolCall.get(r);if(c){let e=S(t,a,c,`tool call`,r);if(e)return b(()=>e);if(a===void 0&&s&&s.subagentRunId!==c.subagentRunId)return b(()=>new n(`Cannot send 'TOOL_CALL_START': tool call '${r}' is owned by '${c.subagentRunId??`(the parent agent)`}' but its parent message '${i}' is owned by '${s.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`))}return o.add(r),c||l.toolCall.set(r,a===void 0?s??{subagentRunId:void 0}:{subagentRunId:a}),y(e)}case r.TOOL_CALL_ARGS:{let r=e.toolCallId;if(!o.has(r))return b(()=>new n(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${r}'. Start a tool call with 'TOOL_CALL_START' first.`));let i=S(t,e.subagentRunId,l.toolCall.get(r),`tool call`,r);return i?b(()=>i):y(e)}case r.TOOL_CALL_END:{let r=e.toolCallId;if(!o.has(r))return b(()=>new n(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${r}'. A 'TOOL_CALL_START' event must be sent first.`));let i=S(t,e.subagentRunId,l.toolCall.get(r),`tool call`,r);return i?b(()=>i):(o.delete(r),y(e))}case r.STEP_STARTED:{let t=e.stepName,r=e.subagentRunId;return m(r).has(t)?b(()=>new n(`Step "${t}" is already active for 'STEP_STARTED'${r===void 0?``:` in subagent '${r}'`}`)):(m(r).set(t,!0),y(e))}case r.STEP_FINISHED:{let t=e.stepName,r=e.subagentRunId;if(!m(r).has(t)){let e,i=!1;for(let[n,a]of p)if(n!==r&&a.has(t)){e=n,i=!0;break}return b(i?()=>new n(`Cannot send 'STEP_FINISHED' for step "${t}" attributed to ${r===void 0?`the parent agent`:`subagent '${r}'`}: that step is open under ${e===void 0?`the parent agent`:`subagent '${e}'`}. A step must be finished by whoever started it.`):()=>new n(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}return m(r).delete(t),y(e)}case r.ACTIVITY_SNAPSHOT:{let t=e.messageId;return(!l.activity.has(t)||e.replace!==!1)&&l.activity.set(t,{subagentRunId:e.subagentRunId}),y(e)}case r.TOOL_CALL_RESULT:{let t=e.messageId;return typeof t==`string`&&l.message.set(t,{subagentRunId:e.subagentRunId}),y(e)}case r.REASONING_START:case r.REASONING_MESSAGE_START:{let i=e.messageId,a=t===r.REASONING_START,o=a?s:c;if(o.has(i))return b(()=>new n(a?`Cannot send 'REASONING_START' event: A reasoning span with ID '${i}' is already in progress. Complete it with 'REASONING_END' first.`:`Cannot send 'REASONING_MESSAGE_START' event: A reasoning message with ID '${i}' is already in progress. Complete it with 'REASONING_MESSAGE_END' first.`));let u=l.reasoning.get(i);if(u){let n=S(t,e.subagentRunId,u,`reasoning message`,i);if(n)return b(()=>n)}return o.add(i),u||l.reasoning.set(i,{subagentRunId:e.subagentRunId}),y(e)}case r.REASONING_MESSAGE_CONTENT:case r.REASONING_MESSAGE_END:case r.REASONING_END:{let i=e.messageId,a=t===r.REASONING_END,o=a?s:c;if(!o.has(i))return b(()=>new n(a?`Cannot send 'REASONING_END' event: No active reasoning span found with ID '${i}'. A 'REASONING_START' event must be sent first.`:`Cannot send '${t}' event: No active reasoning message found with ID '${i}'. Start a reasoning message with 'REASONING_MESSAGE_START' first.`));let u=S(t,e.subagentRunId,l.reasoning.get(i),`reasoning message`,i);return u?b(()=>u):((t===r.REASONING_END||t===r.REASONING_MESSAGE_END)&&o.delete(i),y(e))}case r.REASONING_ENCRYPTED_VALUE:{let n=e.entityId,r=e.subtype,i=r===`tool-call`?l.toolCall.get(n):r===`message`?l.message.get(n)??l.reasoning.get(n):l.reasoning.get(n),a=r===`tool-call`?`tool call`:r===`message`?`message`:`reasoning message`,o=S(t,e.subagentRunId,i,a,n);return o?b(()=>o):y(e)}case r.ACTIVITY_DELTA:{let n=e.messageId,r=S(t,e.subagentRunId,l.activity.get(n),`activity`,n);return r?b(()=>r):y(e)}case r.SUBAGENT_STARTED:{if(typeof e.subagentRunId!=`string`)return b(()=>new n(`Cannot send 'SUBAGENT_STARTED' without a 'subagentRunId'.`));if(typeof e.name!=`string`)return b(()=>new n(`Cannot send 'SUBAGENT_STARTED' without a 'name'.`));let t=e.subagentRunId,r=e.parentSubagentRunId;return g.has(t)?b(()=>new n(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' is already active. Finish it with 'SUBAGENT_FINISHED' first.`)):_.has(t)?b(()=>new n(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' has already finished in this run. Subagent IDs are per-invocation and cannot be reused.`)):r!==void 0&&!g.has(r)&&!_.has(r)?b(()=>new n(`Cannot send 'SUBAGENT_STARTED': parentSubagentRunId '${r}' has not been started in this run.`)):(g.set(t,!0),y(e))}case r.SUBAGENT_FINISHED:case r.SUBAGENT_ERROR:{if(typeof e.subagentRunId!=`string`)return b(()=>new n(`Cannot send '${t}' without a 'subagentRunId'.`));if(t===r.SUBAGENT_ERROR&&typeof e.message!=`string`)return b(()=>new n(`Cannot send 'SUBAGENT_ERROR' without a 'message'.`));let i=e.subagentRunId;return g.has(i)?(g.delete(i),_.add(i),y(e)):b(()=>new n(`Cannot send '${t}': no active subagent found with ID '${i}'. A 'SUBAGENT_STARTED' event must be sent first.`))}case r.MESSAGES_SNAPSHOT:{let t=x(e.messages,!0);if(t)return b(()=>t)}return y(e);case r.RUN_STARTED:v=!0;{let t=x((e.input??{}).messages,!1);if(t)return b(()=>t)}return y(e);case r.RUN_FINISHED:if(h()){let e=[];for(let[t,n]of p)for(let r of n.keys())e.push(t===void 0?r:`${r} (subagent '${t}')`);let t=e.join(`, `);return b(()=>new n(`Cannot send 'RUN_FINISHED' while steps are still active: ${t}`))}if(a.size>0){let e=Array.from(a.keys()).join(`, `);return b(()=>new n(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(c.size>0){let e=Array.from(c.keys()).join(`, `);return b(()=>new n(`Cannot send 'RUN_FINISHED' while reasoning messages are still active: ${e}`))}if(s.size>0){let e=Array.from(s.keys()).join(`, `);return b(()=>new n(`Cannot send 'RUN_FINISHED' while reasoning spans are still active: ${e}`))}if(o.size>0){let e=Array.from(o.keys()).join(`, `);return b(()=>new n(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}if(g.size>0){let e=Array.from(g.keys()).join(`, `);return b(()=>new n(`Cannot send 'RUN_FINISHED' while subagents are still active: ${e}`))}return u=!0,y(e);case r.RUN_ERROR:return d=!0,y(e);case r.CUSTOM:return y(e);default:return y(e)}}))};let R=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({});const Ce=e=>m(()=>g(e())).pipe(ae(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return g(e.text()).pipe(w(n=>{let r=n;if(t.includes(`application/json`))try{r=JSON.parse(n)}catch{}let i=Error(`HTTP ${e.status}: ${typeof r==`string`?r:JSON.stringify(r)}`);return i.status=e.status,i.payload=r,b(()=>i)}))}let t={type:R.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new d(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:R.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):b(()=>Error(`Failed to getReader() from response`))})),we=10*1024*1024,Te=(e,t)=>{let n=N(t),r=new p,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==R.HEADERS&&e.type===R.DATA&&e.data){let t=i.decode(e.data,{stream:!0});a+=t;let n=a.split(/\n\n/);a=n.pop()||``;for(let e of n)o(e);if(a.length>we){r.error(Error(`SSE buffer size exceeded maximum limit of ${we/(1024*1024)} MB`));return}}},error:e=>r.error(e),complete:()=>{a&&(a+=i.decode(),o(a)),r.complete()}});function o(e){let t=e.split(`
2
2
  `),i=[];for(let e of t)e.startsWith(`data:`)&&i.push(e.slice(5).replace(/^ /,``));if(i.length>0)try{let e=i.join(`
3
- `),t=JSON.parse(e);n?.event(`SSE`,`Event received:`,t,{type:t.type}),r.next(t)}catch(e){r.error(e)}}return r.asObservable()},V=e=>{let t=new c,n=new Uint8Array;e.subscribe({next:e=>{if(e.type!==R.HEADERS&&e.type===R.DATA&&e.data){let t=new Uint8Array(n.length+e.data.length);t.set(n,0),t.set(e.data,n.length),n=t,r()}},error:e=>t.error(e),complete:()=>{if(n.length>0)try{r()}catch{console.warn(`Incomplete or invalid protocol buffer data at stream end`)}t.complete()}});function r(){for(;n.length>=4;){let e=4+new DataView(n.buffer,n.byteOffset,4).getUint32(0,!1);if(n.length<e)break;try{let r=n.slice(4,e),i=w.decode(r);t.next(i),n=n.slice(e)}catch(e){let n=e instanceof Error?e.message:String(e);t.error(Error(`Failed to decode protocol buffer message: ${n}`));return}}}return t.asObservable()},H=(e,t)=>{let n=N(t),i=new c,a=new s,o=!1;return e.subscribe({next:e=>{if(a.next(e),e.type===R.HEADERS&&!o){o=!0;let t=e.headers.get(`content-type`);n?.lifecycle(`HTTP`,`Stream format detected:`,{contentType:t,parser:t===w.AGUI_MEDIA_TYPE?`protobuf`:`sse`}),t===w.AGUI_MEDIA_TYPE?V(a).subscribe({next:e=>i.next(e),error:e=>i.error(e),complete:()=>i.complete()}):B(a,n).subscribe({next:e=>{try{let t=ae.parse(e);n?.event(`HTTP`,`Event validated:`,t,{type:t.type,valid:!0}),i.next(t)}catch(t){n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),i.error(t)}},error:e=>{if(e?.name===`AbortError`){i.next({type:r.RUN_ERROR,message:e.message||`Request aborted`,code:`abort`,rawEvent:e}),i.complete();return}return i.error(e)},complete:()=>i.complete()})}else o||i.error(Error(`No headers event received before data events`))},error:e=>{a.error(e),i.error(e)},complete:()=>{a.complete()}}),i.asObservable()},U=T.enum([`TextMessageStart`,`TextMessageContent`,`TextMessageEnd`,`ActionExecutionStart`,`ActionExecutionArgs`,`ActionExecutionEnd`,`ActionExecutionResult`,`AgentStateMessage`,`MetaEvent`,`RunStarted`,`RunFinished`,`RunError`,`NodeStarted`,`NodeFinished`]),ce=T.enum([`LangGraphInterruptEvent`,`PredictState`,`Exit`]),le=T.object({type:T.literal(U.enum.TextMessageStart),messageId:T.string(),parentMessageId:T.string().optional(),role:T.string().optional()}),ue=T.object({type:T.literal(U.enum.TextMessageContent),messageId:T.string(),content:T.string()}),de=T.object({type:T.literal(U.enum.TextMessageEnd),messageId:T.string()}),fe=T.object({type:T.literal(U.enum.ActionExecutionStart),actionExecutionId:T.string(),actionName:T.string(),parentMessageId:T.string().optional()}),pe=T.object({type:T.literal(U.enum.ActionExecutionArgs),actionExecutionId:T.string(),args:T.string()}),me=T.object({type:T.literal(U.enum.ActionExecutionEnd),actionExecutionId:T.string()}),he=T.object({type:T.literal(U.enum.ActionExecutionResult),actionName:T.string(),actionExecutionId:T.string(),result:T.string()}),ge=T.object({type:T.literal(U.enum.AgentStateMessage),threadId:T.string(),agentName:T.string(),nodeName:T.string(),runId:T.string(),active:T.boolean(),role:T.string(),state:T.string(),running:T.boolean()}),_e=T.object({type:T.literal(U.enum.MetaEvent),name:ce,value:T.any()}),ve=T.object({type:T.literal(U.enum.RunError),message:T.string(),code:T.string().optional()});T.discriminatedUnion(`type`,[le,ue,de,fe,pe,me,he,ge,_e,ve]),T.object({id:T.string(),role:T.string(),content:T.string(),parentMessageId:T.string().optional()}),T.object({id:T.string(),name:T.string(),arguments:T.any(),parentMessageId:T.string().optional()}),T.object({id:T.string(),result:T.any(),actionExecutionId:T.string(),actionName:T.string()});const ye=e=>{if(typeof e==`string`)return e;if(!Array.isArray(e))return;let t=e.filter(e=>e.type===`text`).map(e=>e.text).filter(e=>e.length>0);if(t.length!==0)return t.join(`
4
- `)},W=(e,t,n)=>a=>{let o={},s=!0,c=!0,l=``,u=null,d=null,f=[],p={},m=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,o=e)};return a.pipe(x(a=>{switch(a.type){case r.TEXT_MESSAGE_START:{let e=a;return[{type:U.enum.TextMessageStart,messageId:e.messageId,role:e.role}]}case r.TEXT_MESSAGE_CONTENT:{let e=a;return[{type:U.enum.TextMessageContent,messageId:e.messageId,content:e.delta}]}case r.TEXT_MESSAGE_END:{let e=a;return[{type:U.enum.TextMessageEnd,messageId:e.messageId}]}case r.TOOL_CALL_START:{let e=a;return f.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),c=!0,p[e.toolCallId]=e.toolCallName,[{type:U.enum.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case r.TOOL_CALL_ARGS:{let r=a,i=f.find(e=>e.id===r.toolCallId);if(!i)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${r.toolCallId}'`),[];i.function.arguments+=r.delta;let u=!1;if(d){let e=d.find(e=>e.tool==i.function.name);if(e)try{let t=JSON.parse(C(i.function.arguments));e.tool_argument&&e.tool_argument in t?(m({...o,[e.state_key]:t[e.tool_argument]}),u=!0):e.tool_argument||(m({...o,[e.state_key]:t}),u=!0)}catch{}}return[{type:U.enum.ActionExecutionArgs,actionExecutionId:r.toolCallId,args:r.delta},...u?[{type:U.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:s,role:`assistant`,state:JSON.stringify(o),active:c}]:[]]}case r.TOOL_CALL_END:{let e=a;return[{type:U.enum.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case r.TOOL_CALL_RESULT:{let e=a;return[{type:U.enum.ActionExecutionResult,actionExecutionId:e.toolCallId,result:e.content,actionName:p[e.toolCallId]||`unknown`}]}case r.RAW:return[];case r.CUSTOM:{let e=a;switch(e.name){case`Exit`:s=!1;break;case`PredictState`:d=e.value;break}return[{type:U.enum.MetaEvent,name:e.name,value:e.value}]}case r.STATE_SNAPSHOT:return m(a.snapshot),[{type:U.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:s,role:`assistant`,state:JSON.stringify(o),active:c}];case r.STATE_DELTA:{let r=a,u=i.applyPatch(o,r.delta,!0,!1);return u?(m(u.newDocument),[{type:U.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:s,role:`assistant`,state:JSON.stringify(o),active:c}]):[]}case r.MESSAGES_SNAPSHOT:return u=a.messages,[{type:U.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:s,role:`assistant`,state:JSON.stringify({...o,...u?{messages:u}:{}}),active:!0}];case r.RUN_STARTED:return[];case r.RUN_FINISHED:return u&&(o.messages=u),Object.keys(o).length===0?[]:[{type:U.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:s,role:`assistant`,state:JSON.stringify({...o,...u?{messages:be(u)}:{}}),active:!1}];case r.RUN_ERROR:{let e=a;return[{type:U.enum.RunError,message:e.message,code:e.code}]}case r.STEP_STARTED:return l=a.stepName,f=[],d=null,[{type:U.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:s,role:`assistant`,state:JSON.stringify(o),active:!0}];case r.STEP_FINISHED:return f=[],d=null,[{type:U.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:s,role:`assistant`,state:JSON.stringify(o),active:!1}];default:return[]}}))};function be(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=ye(n.content);if(e){let r={id:n.id,role:n.role,content:e};t.push(r)}if(n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0)for(let e of n.toolCalls){let r={id:e.id,name:e.function.name,arguments:JSON.parse(e.function.arguments),parentMessageId:n.id};t.push(r)}}else if(n.role===`tool`){let r=`unknown`;for(let t of e)if(t.role===`assistant`&&t.toolCalls?.length){for(let e of t.toolCalls)if(e.id===n.toolCallId){r=e.function.name;break}}let i={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}const G=e=>t=>{let n=N(e),i,a,o,s,c=()=>{if(!i||s!==`text`)throw Error(`No text message to close`);let e={type:r.TEXT_MESSAGE_END,messageId:i.messageId};return s=void 0,i=void 0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_END`,e,{messageId:e.messageId}),e},l=()=>{if(!a||s!==`tool`)throw Error(`No tool call to close`);let e={type:r.TOOL_CALL_END,toolCallId:a.toolCallId};return s=void 0,a=void 0,n?.event(`TRANSFORM`,`TOOL_CALL_END`,e,{toolCallId:e.toolCallId}),e},d=()=>{if(!o||s!==`reasoning`)throw Error(`No reasoning message to close`);let e={type:r.REASONING_MESSAGE_END,messageId:o.messageId};return s=void 0,o=void 0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_END`,e,{messageId:e.messageId}),e},f=()=>s===`text`?[c()]:s===`tool`?[l()]:s===`reasoning`?[d()]:[];return t.pipe(p(e=>{switch(e.type){case r.TEXT_MESSAGE_START:case r.TEXT_MESSAGE_CONTENT:case r.TEXT_MESSAGE_END:case r.TOOL_CALL_START:case r.TOOL_CALL_ARGS:case r.TOOL_CALL_END:case r.TOOL_CALL_RESULT:case r.STATE_SNAPSHOT:case r.STATE_DELTA:case r.MESSAGES_SNAPSHOT:case r.CUSTOM:case r.RUN_STARTED:case r.RUN_FINISHED:case r.RUN_ERROR:case r.STEP_STARTED:case r.STEP_FINISHED:case r.THINKING_START:case r.THINKING_END:case r.THINKING_TEXT_MESSAGE_START:case r.THINKING_TEXT_MESSAGE_CONTENT:case r.THINKING_TEXT_MESSAGE_END:case r.REASONING_START:case r.REASONING_MESSAGE_START:case r.REASONING_MESSAGE_CONTENT:case r.REASONING_MESSAGE_END:case r.REASONING_END:return[...f(),e];case r.RAW:case r.ACTIVITY_SNAPSHOT:case r.ACTIVITY_DELTA:case r.REASONING_ENCRYPTED_VALUE:return[e];case r.TEXT_MESSAGE_CHUNK:let t=e,c=[];if((s!==`text`||t.messageId!==void 0&&t.messageId!==i?.messageId)&&c.push(...f()),s!==`text`){if(t.messageId===void 0)throw Error(`First TEXT_MESSAGE_CHUNK must have a messageId`);i={messageId:t.messageId,name:t.name},s=`text`;let e={type:r.TEXT_MESSAGE_START,messageId:t.messageId,role:t.role||`assistant`,...t.name!==void 0&&{name:t.name}};c.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0){let e={type:r.TEXT_MESSAGE_CONTENT,messageId:i.messageId,delta:t.delta};c.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,e,{messageId:i.messageId})}return c;case r.TOOL_CALL_CHUNK:let l=e,u=[];if((s!==`tool`||l.toolCallId!==void 0&&l.toolCallId!==a?.toolCallId)&&u.push(...f()),s!==`tool`){if(l.toolCallId===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallId`);if(l.toolCallName===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallName`);a={toolCallId:l.toolCallId,toolCallName:l.toolCallName,parentMessageId:l.parentMessageId},s=`tool`;let e={type:r.TOOL_CALL_START,toolCallId:l.toolCallId,toolCallName:l.toolCallName,parentMessageId:l.parentMessageId};u.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_START`,e,{toolCallId:l.toolCallId,toolCallName:l.toolCallName})}if(l.delta!==void 0){let e={type:r.TOOL_CALL_ARGS,toolCallId:a.toolCallId,delta:l.delta};u.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,e,{toolCallId:a.toolCallId})}return u;case r.REASONING_MESSAGE_CHUNK:let d=e,p=[];if((s!==`reasoning`||d.messageId&&d.messageId!==o?.messageId)&&p.push(...f()),s!==`reasoning`){if(d.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);o={messageId:d.messageId},s=`reasoning`;let e={type:r.REASONING_MESSAGE_START,messageId:d.messageId};p.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_START`,e,{messageId:d.messageId})}if(d.delta!==void 0){let e={type:r.REASONING_MESSAGE_CONTENT,messageId:o.messageId,delta:d.delta};p.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,e,{messageId:o.messageId})}return p}return e.type,[]}),u(()=>{f()}))};function xe(e){return e.outcome}function K(e,t=new Date){return e.expiresAt===void 0?!1:new Date(e.expiresAt)<=t}function Se(e,t){let n=new Set(e.map(e=>e.id)),r=new Set(Object.keys(t)),i=[...n].filter(e=>!r.has(e));if(i.length>0)throw Error(`buildResumeArray: missing responses for open interrupts: ${i.join(`, `)}`);let a=[...r].filter(e=>!n.has(e));if(a.length>0)throw Error(`buildResumeArray: responses reference unknown interrupt ids: ${a.join(`, `)}`);return e.map(e=>{let n=t[e.id];if(n.status===`resolved`){let t={interruptId:e.id,status:`resolved`};return n.payload!==void 0&&(t.payload=n.payload),t}return{interruptId:e.id,status:`cancelled`}})}var q=class{runNext(e,t){return t.run(e).pipe(G(!1))}runNextWithState(e,t){let n=D(e.messages||[]),r=D(e.state||{}),i=new s;return I(e,i,t,[]).subscribe(e=>{e.messages!==void 0&&(n=e.messages),e.state!==void 0&&(r=e.state)}),this.runNext(e,t).pipe(v(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:D(n),state:D(r)})))}},J=class extends q{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}},Ce=class extends q{constructor(e){if(super(),this.blockedToolCallIds=new Set,e.allowedToolCalls&&e.disallowedToolCalls)throw Error(`Cannot specify both allowedToolCalls and disallowedToolCalls`);if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw Error(`Must specify either allowedToolCalls or disallowedToolCalls`);e.allowedToolCalls?this.allowedTools=new Set(e.allowedToolCalls):e.disallowedToolCalls&&(this.disallowedTools=new Set(e.disallowedToolCalls))}run(e,t){return this.runNext(e,t).pipe(te(e=>{if(e.type===r.TOOL_CALL_START){let t=e;return this.shouldFilterTool(t.toolCallName)?(this.blockedToolCallIds.add(t.toolCallId),!1):!0}if(e.type===r.TOOL_CALL_ARGS){let t=e;return!this.blockedToolCallIds.has(t.toolCallId)}if(e.type===r.TOOL_CALL_END){let t=e;return!this.blockedToolCallIds.has(t.toolCallId)}if(e.type===r.TOOL_CALL_RESULT){let t=e;return this.blockedToolCallIds.has(t.toolCallId)?(this.blockedToolCallIds.delete(t.toolCallId),!1):!0}return!0}))}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function we(e){let t=e.content;if(Array.isArray(t)){let n=t.filter(e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(``);return{...e,content:n}}return typeof t==`string`?e:{...e,content:``}}var Y=class extends q{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(we)};return this.runNext(i,t)}};const X=`THINKING_START`,Z=`THINKING_END`,Te=`THINKING_TEXT_MESSAGE_START`,Ee=`THINKING_TEXT_MESSAGE_CONTENT`,Q=`THINKING_TEXT_MESSAGE_END`;var De=class extends q{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warnAboutTransformation(e,t){typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is converting ${e} to ${t}. To remove this warning, upgrade your AG-UI integration package (e.g. @ag-ui/langgraph). To surpress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,this.runNext(e,t).pipe(b(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case X:{this.currentReasoningId=O();let{title:t,...n}=e;return this.warnAboutTransformation(X,r.REASONING_START),{...n,type:r.REASONING_START,messageId:this.currentReasoningId}}case Te:return this.currentMessageId=O(),this.warnAboutTransformation(Te,r.REASONING_MESSAGE_START),{...e,type:r.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`assistant`};case Ee:{let{delta:t,...n}=e;return this.warnAboutTransformation(Ee,r.REASONING_MESSAGE_CONTENT),{...n,type:r.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??O(),delta:t}}case Q:{let t=this.currentMessageId??O();return this.warnAboutTransformation(Q,r.REASONING_MESSAGE_END),{...e,type:r.REASONING_MESSAGE_END,messageId:t}}case Z:{let t=this.currentReasoningId??O();return this.warnAboutTransformation(Z,r.REASONING_END),{...e,type:r.REASONING_END,messageId:t}}default:return e}}};function Oe(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function ke(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function Ae(e){let t=Oe(e.mimeType);return e.data?{type:t,source:{type:`data`,value:e.data,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e.url?{type:t,source:{type:`url`,value:e.url,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e}function je(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.map(e=>ke(e)?Ae(e):e);return{...e,content:n}}var Me=class extends q{run(e,t){let n={...e,messages:e.messages.map(je)};return this.runNext(n,t)}},Ne=`0.1.1-canary.beta.0`,Pe=class{get maxVersion(){return Ne}get debug(){return this._debug}set debug(e){this._debug=M(e),this._debugLogger=F(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){typeof e==`boolean`?this._debugLogger=e?F(M(!0)):void 0:this._debugLogger=e}constructor({agentId:t,description:n,threadId:r,initialMessages:i,initialState:a,debug:o}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.agentId=t,this.description=n??``,this.threadId=r??e(),this.messages=D(i??[]),this.state=D(a??{}),this._debug=M(o),this._debugLogger=F(this._debug),E(this.maxVersion,`0.0.39`)<=0&&this.middlewares.unshift(new Y),E(this.maxVersion,`0.0.45`)<=0&&this.middlewares.unshift(new De),E(this.maxVersion,`0.0.47`)<=0&&this.middlewares.unshift(new Me)}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(t=>t!==e)}}}use(...e){let t=e.map(e=>typeof e==`function`?new J(e):e);return this.middlewares.push(...t),this}async runAgent(t,n){try{this.isRunning=!0,this.agentId=this.agentId??e();let r=this.prepareRunAgentInput(t);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let i,a=new Set(this.messages.map(e=>e.id)),o=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(i=e.result)}},...this.subscribers,n??{}];await this.onInitialize(r,o),this.activeRunDetach$=new c;let s;this.activeRunCompletionPromise=new Promise(e=>{s=e}),await f(h(()=>this.middlewares.length===0?this.run(r):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(r),G(this.debugLogger),L(this.debugLogger),e=>e.pipe(S(this.activeRunDetach$)),e=>this.apply(r,e,o),e=>this.processApplyEvents(r,e,o),_(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(r,e,o))),y(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(r,o),s?.(),s=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(m(null)));let l=D(this.messages).filter(e=>!a.has(e.id));return{result:i,newMessages:l}}finally{this.isRunning=!1}}connect(e){throw new t}async connectAgent(n,r){try{this.isRunning=!0,this.agentId=this.agentId??e();let i=this.prepareRunAgentInput(n),o,s=new Set(this.messages.map(e=>e.id)),u=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(o=e.result)}},...this.subscribers,r??{}];await this.onInitialize(i,u),this.activeRunDetach$=new c;let d;this.activeRunCompletionPromise=new Promise(e=>{d=e}),await f(h(()=>l(()=>this.connect(i)),G(this.debugLogger),L(this.debugLogger),e=>e.pipe(S(this.activeRunDetach$)),e=>this.apply(i,e,u),e=>this.processApplyEvents(i,e,u),_(e=>(this.isRunning=!1,e instanceof t?a:this.onError(i,e,u))),y(()=>{this.isRunning=!1,this.onFinalize(i,u),d?.(),d=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(m(null)),{defaultValue:void 0});let p=D(this.messages).filter(e=>!s.has(e.id));return{result:o,newMessages:p}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){if(!this.activeRunDetach$)return;let e=this.activeRunCompletionPromise??Promise.resolve();this.activeRunDetach$.next(),this.activeRunDetach$?.complete(),await e}apply(e,t,n){return I(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe(ie(t=>{t.messages&&(this.messages=t.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),t.state&&(this.state=t.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}))}prepareRunAgentInput(t){let n=D(this.messages).filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:t?.runId||e(),tools:D(t?.tools??[]),context:D(t?.context??[]),forwardedProps:D(t?.forwardedProps??{}),state:D(this.state),messages:n,...t?.resume===void 0?{}:{resume:D(t.resume)}}}async onInitialize(e,t){if(this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),r=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(r.length>0)throw new n(`Thread has ${r.length} pending interrupt(s) not addressed by resume: ${r.join(`, `)}`);for(let e of this.pendingInterrupts)if(K(e))throw new n(`Interrupt ${e.id} expired at ${e.expiresAt}`)}let r=await j(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));(r.messages!==void 0||r.state!==void 0)&&(r.messages&&(this.messages=r.messages,e.messages=r.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),r.state&&(this.state=r.state,e.state=r.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}onError(e,t,n){return d(j(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe(b(r=>{let i=r;if((i.messages!==void 0||i.state!==void 0)&&(i.messages!==void 0&&(this.messages=i.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),i.state!==void 0&&(this.state=i.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))),i.stopPropagation!==!0){let e=String(t);if(!(t.name===`AbortError`||t.message===`Fetch is aborted`||t.message===`signal is aborted without reason`||t.message===`component unmounted`||e===`component unmounted`))throw console.error(`Agent execution failed:`,t),t}return{}}))}async onFinalize(e,t){let n=await j(t,this.messages,this.state,(t,n,r)=>t.onRunFinalized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state!==void 0&&(this.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}clone(){let e=Object.create(Object.getPrototypeOf(this));return e.agentId=this.agentId,e.description=this.description,e.threadId=this.threadId,e.messages=D(this.messages),e.state=D(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=D(this.pendingInterrupts),e}addMessage(e){this.messages.push(e),(async()=>{for(let t of this.subscribers)await t.onNewMessage?.({message:e,messages:this.messages,state:this.state,agent:this});if(e.role===`assistant`&&e.toolCalls)for(let t of e.toolCalls)for(let e of this.subscribers)await e.onNewToolCall?.({toolCall:t,messages:this.messages,state:this.state,agent:this});for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}addMessages(e){this.messages.push(...e),(async()=>{for(let t of e){for(let e of this.subscribers)await e.onNewMessage?.({message:t,messages:this.messages,state:this.state,agent:this});if(t.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)for(let t of this.subscribers)await t.onNewToolCall?.({toolCall:e,messages:this.messages,state:this.state,agent:this})}for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setMessages(e){this.messages=D(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=D(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(t){this.agentId=this.agentId??e();let n=this.prepareRunAgentInput(t);return(this.middlewares.length===0?this.run(n):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(n)).pipe(G(this.debugLogger),L(this.debugLogger),W(this.threadId,n.runId,this.agentId),e=>e.pipe(b(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}},Fe=class extends Pe{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,t){return this.abortController=e?.abortController??new AbortController,super.runAgent(e,t)}abortRun(){this.abortController.abort(),super.abortRun()}constructor(e){super(e),this.abortController=new AbortController,this.url=e.url,this.headers=D(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return H(z(()=>this.fetch(this.url,this.requestInit(e))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=D(this.headers??{}),e.fetch=this.fetch;let t=new AbortController,n=this.abortController.signal;return n.aborted&&t.abort(n.reason),e.abortController=t,e}};function Ie(e){let t=[],n=new Map,i=new Map,a=[];for(let o of e)if(o.type===r.TEXT_MESSAGE_START){let e=o,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.start=e}else if(o.type===r.TEXT_MESSAGE_CONTENT){let e=o,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]}),n.get(t).contents.push(e)}else if(o.type===r.TEXT_MESSAGE_END){let e=o,r=e.messageId;n.has(r)||n.set(r,{contents:[],otherEvents:[]});let i=n.get(r);i.end=e,Le(r,i,t),n.delete(r)}else if(o.type===r.TOOL_CALL_START){let e=o,t=e.toolCallId;i.has(t)||i.set(t,{args:[],otherEvents:[]});let n=i.get(t);n.start=e}else if(o.type===r.TOOL_CALL_ARGS){let e=o,t=e.toolCallId;i.has(t)||i.set(t,{args:[],otherEvents:[]}),i.get(t).args.push(e)}else if(o.type===r.TOOL_CALL_END){let e=o,n=e.toolCallId;i.has(n)||i.set(n,{args:[],otherEvents:[]});let r=i.get(n);r.end=e,Re(n,r,t),i.delete(n)}else if(o.type===r.RUN_STARTED)$(a,t),a=[],t.push(o);else if(o.type===r.RUN_FINISHED||o.type===r.RUN_ERROR)$(a,t),a=[],t.push(o);else if(o.type===r.STATE_SNAPSHOT||o.type===r.STATE_DELTA)a.push(o);else{let e=!1;for(let[t,r]of n)if(r.start&&!r.end){r.otherEvents.push(o),e=!0;break}if(!e){for(let[t,n]of i)if(n.start&&!n.end){n.otherEvents.push(o),e=!0;break}}e||t.push(o)}for(let[e,r]of n)Le(e,r,t);for(let[e,n]of i)Re(e,n,t);return $(a,t),t}function Le(e,t,n){if(t.start&&n.push(t.start),t.contents.length>0){let i=t.contents.map(e=>e.delta).join(``),a={type:r.TEXT_MESSAGE_CONTENT,messageId:e,delta:i};n.push(a)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}function Re(e,t,n){if(t.start&&n.push(t.start),t.args.length>0){let i=t.args.map(e=>e.delta).join(``),a={type:r.TOOL_CALL_ARGS,toolCallId:e,delta:i};n.push(a)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}function $(e,t){if(e.length===0)return;let n={};for(let t of e)n=t.type===r.STATE_SNAPSHOT?D(t.snapshot):i.applyPatch(n,D(t.delta),!0,!1).newDocument;let a={type:r.STATE_SNAPSHOT,snapshot:n};t.push(a)}export{Pe as AbstractAgent,Y as BackwardCompatibility_0_0_39,De as BackwardCompatibility_0_0_45,Me as BackwardCompatibility_0_0_47,P as DebugLogger,Ce as FilterToolCallsMiddleware,J as FunctionMiddleware,Fe as HttpAgent,q as Middleware,Se as buildResumeArray,Ie as compactEvents,W as convertToLegacyEvents,F as createDebugLogger,I as defaultApplyEvents,xe as getRunOutcome,K as isInterruptExpired,V as parseProtoStream,B as parseSSEStream,O as randomUUID,M as resolveAgentDebugConfig,N as resolveDebugLogger,z as runHttpRequest,D as structuredClone_,G as transformChunks,H as transformHttpEventStream,L as verifyEvents};
3
+ `),t=JSON.parse(e);n?.event(`SSE`,`Event received:`,t,{type:t?.type}),r.next(t)}catch(e){r.error(e)}}return r.asObservable()},Ee=10*1024*1024,De=()=>typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS,Oe=(e,t)=>{let n=N(t),r=new p,i=new Uint8Array,a=!1;e.subscribe({next:e=>{if(e.type!==R.HEADERS&&e.type===R.DATA&&e.data){let t=new Uint8Array(i.length+e.data.length);t.set(i,0),t.set(e.data,i.length),i=t,o()}},error:e=>r.error(e),complete:()=>{if(o(),!a){if(i.length>0){r.error(Error(`The binary stream ended mid-frame: ${i.length} trailing bytes could not be read as a complete message.`));return}r.complete()}}});function o(){if(!a)for(;i.length>=4;){let e=4+new DataView(i.buffer,i.byteOffset,4).getUint32(0,!1);if(e>Ee){r.error(Error(`Protobuf message size exceeded maximum limit of ${Ee/(1024*1024)} MB`));return}if(i.length<e)break;try{let t=i.slice(4,e),a=T.decode(t);n?.event(`PROTO`,`Event received:`,a,{type:a.type}),r.next(a)}catch(e){if(e instanceof T.AGUIUnknownEventTypeError)De()||console.warn(`[ag-ui][proto] Dropped an event this build does not know: the protocol has a variant this SDK predates.`);else{let t=e instanceof Error?e.message:String(e);a=!0,r.error(Error(`Failed to decode protocol buffer message: ${t}`));return}}i=i.slice(e)}}return r.asObservable()},ke=(e,t)=>{let n=N(t),i=new p,a=new f(1),o=!1,s,c=!1,l=()=>{c=!0,s?.unsubscribe()},u=e=>{l(),i.error(e)},d=()=>{l(),i.complete()};return s=e.subscribe({next:e=>{if(a.next(e),e.type===R.HEADERS&&!o){o=!0;let t=e.headers.get(`content-type`);n?.lifecycle(`HTTP`,`Stream format detected:`,{contentType:t,parser:t===T.AGUI_MEDIA_TYPE?`protobuf`:`sse`}),t===T.AGUI_MEDIA_TYPE?Oe(a,n).subscribe({next:e=>i.next(e),error:e=>u(e),complete:()=>d()}):Te(a,n).subscribe({next:e=>{if(typeof e!=`object`||!e||Array.isArray(e)){let t=Error(`Invalid event: the frame is not a JSON object.`);n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),u(t);return}let t=e;if(typeof t.type!=`string`||t.type.length===0){let t=Error(`Invalid event: the frame carries no event type.`);n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),u(t);return}n?.event(`HTTP`,`Event received:`,e,{type:t.type}),i.next(e)},error:e=>{if(e?.name===`AbortError`){i.next({type:r.RUN_ERROR,message:e.message||`Request aborted`,code:`abort`,rawEvent:e}),d();return}return u(e)},complete:()=>d()})}else o||u(Error(`No headers event received before data events`))},error:e=>{a.error(e),u(e)},complete:()=>{a.complete()}}),c&&s.unsubscribe(),i.asObservable()},z={TextMessageStart:`TextMessageStart`,TextMessageContent:`TextMessageContent`,TextMessageEnd:`TextMessageEnd`,ActionExecutionStart:`ActionExecutionStart`,ActionExecutionArgs:`ActionExecutionArgs`,ActionExecutionEnd:`ActionExecutionEnd`,ActionExecutionResult:`ActionExecutionResult`,AgentStateMessage:`AgentStateMessage`,MetaEvent:`MetaEvent`,RunStarted:`RunStarted`,RunFinished:`RunFinished`,RunError:`RunError`,NodeStarted:`NodeStarted`,NodeFinished:`NodeFinished`},Ae=e=>{if(typeof e==`string`)return e;if(!Array.isArray(e))return;let t=e.filter(e=>e.type===`text`).map(e=>e.text).filter(e=>e.length>0);if(t.length!==0)return t.join(`
4
+ `)};function je(e,t){return a(t)&&B(`[ag-ui][legacy] The result of tool call '${e}' carries content parts the legacy protocol cannot represent; only its text parts are bridged and the rest is dropped.`),o(t)}const B=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)},Me=(e,t,n)=>i=>{let a={},o=!0,s=!0,c=``,u=null,d=null,f=[],p={},m=!1,h=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,a=e)};return i.pipe(w(i=>{switch(i.type){case r.TEXT_MESSAGE_START:{let e=i;return[{type:z.TextMessageStart,messageId:e.messageId,role:e.role}]}case r.TEXT_MESSAGE_CONTENT:{let e=i;return[{type:z.TextMessageContent,messageId:e.messageId,content:e.delta}]}case r.TEXT_MESSAGE_END:{let e=i;return[{type:z.TextMessageEnd,messageId:e.messageId}]}case r.TOOL_CALL_START:{let e=i;return f.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),s=!0,p[e.toolCallId]=e.toolCallName,[{type:z.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case r.TOOL_CALL_ARGS:{let r=i,l=f.find(e=>e.id===r.toolCallId);if(!l)return B(`[ag-ui][legacy] TOOL_CALL_ARGS: No tool call found with ID '${r.toolCallId}'`),[];l.function.arguments+=r.delta;let u=!1;if(d){let e=d.find(e=>e.tool==l.function.name);if(e)try{let t=JSON.parse(ce(l.function.arguments));e.tool_argument&&e.tool_argument in t?(h({...a,[e.state_key]:t[e.tool_argument]}),u=!0):e.tool_argument||(h({...a,[e.state_key]:t}),u=!0)}catch{}}return[{type:z.ActionExecutionArgs,actionExecutionId:r.toolCallId,args:r.delta},...u?[{type:z.AgentStateMessage,threadId:e,agentName:n,nodeName:c,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:s}]:[]]}case r.TOOL_CALL_END:{let e=i;return[{type:z.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case r.TOOL_CALL_RESULT:{let e=i,t=p[e.toolCallId];return(t===void 0||t===``)&&B(`[ag-ui][legacy] No usable tool name was seen for tool call '${e.toolCallId}' (${t===void 0?`no TOOL_CALL_START reached this bridge`:`its TOOL_CALL_START carried an empty toolCallName`}), so its result is being bridged with the fabricated action name "unknown". Downstream consumers route on that name.`),[{type:z.ActionExecutionResult,actionExecutionId:e.toolCallId,result:je(e.toolCallId,e.content),actionName:t||`unknown`}]}case r.RAW:return m||(m=!0,B(`[ag-ui][legacy] Dropping RAW events: the legacy runtime protocol has no equivalent, so the provider payloads they carry do not reach the legacy stream. Reported once per stream.`)),[];case r.CUSTOM:{let e=i;switch(e.name){case`Exit`:o=!1;break;case`PredictState`:d=e.value;break}return[{type:z.MetaEvent,name:e.name,value:e.value}]}case r.STATE_SNAPSHOT:return h(i.snapshot),[{type:z.AgentStateMessage,threadId:e,agentName:n,nodeName:c,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:s}];case r.STATE_DELTA:{let r=i,u;try{u=l.applyPatch(a,r.delta,!0,!1).newDocument}catch(e){let t=e instanceof Error?e.message:String(e);return B(`[ag-ui][legacy] Failed to apply state patch:\nCurrent state: ${JSON.stringify(a,null,2)}\nPatch operations: ${JSON.stringify(r.delta,null,2)}\nError: ${t}`),[]}return h(u),[{type:z.AgentStateMessage,threadId:e,agentName:n,nodeName:c,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:s}]}case r.MESSAGES_SNAPSHOT:return u=i.messages,[{type:z.AgentStateMessage,threadId:e,agentName:n,nodeName:c,runId:t,running:o,role:`assistant`,state:JSON.stringify({...a,...u?{messages:u}:{}}),active:!0}];case r.RUN_STARTED:return[];case r.RUN_FINISHED:{if(u&&(a.messages=u),Object.keys(a).length===0)return[];let r=null;if(u)try{r=Ne(u)}catch(e){return[{type:z.RunError,message:e.message}]}return[{type:z.AgentStateMessage,threadId:e,agentName:n,nodeName:c,runId:t,running:o,role:`assistant`,state:JSON.stringify({...a,...r?{messages:r}:{}}),active:!1}]}case r.RUN_ERROR:{let e=i;return[{type:z.RunError,message:e.message,code:e.code}]}case r.STEP_STARTED:return c=i.stepName,f=[],d=null,[{type:z.AgentStateMessage,threadId:e,agentName:n,nodeName:c,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:!0}];case r.STEP_FINISHED:return f=[],d=null,[{type:z.AgentStateMessage,threadId:e,agentName:n,nodeName:c,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:!1}];default:return[]}}))};function Ne(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=Ae(n.content);if(e){let r={id:n.id,role:n.role,content:e};t.push(r)}if(n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0)for(let e of n.toolCalls){let r;try{r=JSON.parse(e.function.arguments)}catch(t){throw Error(`Failed to parse arguments for tool call '${e.id}' (${e.function.name}): ${t.message}`)}let i={id:e.id,name:e.function.name,arguments:r,parentMessageId:n.id};t.push(i)}}else if(n.role===`tool`){let r=`unknown`;for(let t of e)if(t.role===`assistant`&&t.toolCalls?.length){for(let e of t.toolCalls)if(e.id===n.toolCallId){r=e.function.name;break}}let i={id:n.id,result:je(n.toolCallId,n.content),actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}const Pe=e=>e.kind===`tool`?e.fields.toolCallId:e.fields.messageId,Fe=e=>e===`tool`?`toolCallId`:`messageId`,V=(e,t,n,r,i)=>{if(r!==void 0&&r!==i)throw Error(`Cannot continue ${e} '${t}': chunk ${n} '${r}' does not match the open stream's ${n} ${i===void 0?`(absent)`:`'${i}'`}.`)},H=(e,t)=>t.metadata===void 0?e:{...e,metadata:t.metadata},Ie=(e,t)=>{let n=H(e,t);return t.rawEvent===void 0?n:{...n,rawEvent:t.rawEvent}},Le=e=>new Set(Object.keys(e.shape)),Re=Le(pe),ze=Le(me),Be=Le(de),Ve=(e,t)=>{let n;for(let r of Object.keys(e))t.has(r)||((n??={})[r]=e[r]);return n},He=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][transform] ${e} Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)},Ue=(e,t,n,r)=>{if(t===void 0||n||e.length===0)return;let i=e[e.length-1],a=Object.keys(t).filter(e=>Object.prototype.hasOwnProperty.call(i,e));a.length>0&&He(`A ${r} carried ${a.map(e=>`'${e}'`).join(`, `)}, which the synthesized ${String(i.type)} already describes. The synthesized value is kept and the chunk's is dropped — this stage does not judge a described field, so the producer's value cannot be substituted for its own.`),e[e.length-1]={...t,...i}},U=e=>t=>{let n=N(e),i=new Map,a=e=>{let t=i.get(e);if(!t)return[];switch(i.delete(e),t.kind){case`text`:{let e={type:r.TEXT_MESSAGE_END,messageId:t.fields.messageId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`TEXT_MESSAGE_END`,e,{messageId:e.messageId}),[e]}case`tool`:{let e={type:r.TOOL_CALL_END,toolCallId:t.fields.toolCallId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`TOOL_CALL_END`,e,{toolCallId:e.toolCallId}),[e]}case`reasoning`:{let e={type:r.REASONING_MESSAGE_END,messageId:t.fields.messageId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`REASONING_MESSAGE_END`,e,{messageId:e.messageId}),[e]}}},o=()=>[...i.keys()].flatMap(e=>a(e)),s=(e,t)=>{for(let[n,r]of i)if(r.kind===e&&Pe(r)===t)return{owner:n}},c=(e,t,n,r,a)=>{if(t!==void 0){let r=s(e,t);if(r){if(n!==void 0&&n!==r.owner)throw Error(`Cannot continue ${a} '${t}': chunk subagentRunId '${n}' does not match the open stream's subagent '${r.owner??`(the parent agent)`}'.`);return r.owner}return n}if(n!==void 0)return n;if(i.get(void 0)?.kind===e)return;let o=[...i.entries()].filter(([,t])=>t.kind===e);if(o.length===1)return o[0][0];if(o.length>1)throw Error(`Ambiguous ${r}: it carries neither a ${Fe(e)} nor a subagentRunId, but ${o.length} lanes have an open ${a}. Attribute the chunk to the subagent it belongs to.`)};return t.pipe(v(e=>{switch(e.type){case r.TEXT_MESSAGE_START:case r.TEXT_MESSAGE_CONTENT:case r.TEXT_MESSAGE_END:case r.TOOL_CALL_START:case r.TOOL_CALL_ARGS:case r.TOOL_CALL_END:case r.TOOL_CALL_RESULT:case r.STATE_SNAPSHOT:case r.STATE_DELTA:case r.CUSTOM:case r.STEP_STARTED:case r.STEP_FINISHED:case r.REASONING_START:case r.REASONING_MESSAGE_START:case r.REASONING_MESSAGE_CONTENT:case r.REASONING_MESSAGE_END:case r.REASONING_END:return[...a(e.subagentRunId??void 0),e];case r.RUN_STARTED:case r.RUN_FINISHED:case r.RUN_ERROR:case r.MESSAGES_SNAPSHOT:return[...o(),e];case r.RAW:case r.ACTIVITY_SNAPSHOT:case r.ACTIVITY_DELTA:case r.REASONING_ENCRYPTED_VALUE:case r.SUBAGENT_STARTED:return[e];case r.SUBAGENT_FINISHED:case r.SUBAGENT_ERROR:{let t=e.subagentRunId;return t==null?[e]:[...a(t),e]}case r.TEXT_MESSAGE_CHUNK:{let t=e,o=Ve(e,Re),s=c(`text`,t.messageId,t.subagentRunId??void 0,`TEXT_MESSAGE_CHUNK`,`text message`),l=i.get(s),u=[],d=!1,f;if(l?.kind===`text`&&(t.messageId===void 0||t.messageId===l.fields.messageId))V(`text message`,l.fields.messageId,`role`,t.role,l.fields.role),V(`text message`,l.fields.messageId,`name`,t.name,l.fields.name),f=l.fields;else{if(u.push(...a(s)),t.messageId===void 0)throw Error(`First TEXT_MESSAGE_CHUNK must have a messageId`);f={messageId:t.messageId,role:t.role===void 0?`assistant`:t.role,name:t.name,subagentRunId:t.subagentRunId},i.set(s,{kind:`text`,fields:f});let e=H({type:r.TEXT_MESSAGE_START,messageId:t.messageId,role:f.role,...t.name!==void 0&&{name:t.name},...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);u.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId,i=Ie({...o,type:r.TEXT_MESSAGE_CONTENT,messageId:f.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);u.push(i),d=!0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,i,{messageId:f.messageId})}if(u.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||o!==void 0)){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId;u.push({...o,type:r.TEXT_MESSAGE_CONTENT,messageId:f.messageId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),d=!0}return Ue(u,o,d,`TEXT_MESSAGE_CHUNK`),u}case r.TOOL_CALL_CHUNK:{let t=e,o=Ve(e,ze),s=c(`tool`,t.toolCallId,t.subagentRunId??void 0,`TOOL_CALL_CHUNK`,`tool call`),l=i.get(s),u=[],d=!1,f;if(l?.kind===`tool`&&(t.toolCallId===void 0||t.toolCallId===l.fields.toolCallId))V(`tool call`,l.fields.toolCallId,`toolCallName`,t.toolCallName,l.fields.toolCallName),V(`tool call`,l.fields.toolCallId,`parentMessageId`,t.parentMessageId,l.fields.parentMessageId),f=l.fields;else{if(u.push(...a(s)),t.toolCallId===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallId`);if(t.toolCallName===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallName`);f={toolCallId:t.toolCallId,toolCallName:t.toolCallName,parentMessageId:t.parentMessageId,subagentRunId:t.subagentRunId},i.set(s,{kind:`tool`,fields:f});let e=H({type:r.TOOL_CALL_START,toolCallId:t.toolCallId,toolCallName:t.toolCallName,...t.parentMessageId!==void 0&&{parentMessageId:t.parentMessageId},...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);u.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_START`,e,{toolCallId:t.toolCallId,toolCallName:t.toolCallName})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId,i=Ie({...o,type:r.TOOL_CALL_ARGS,toolCallId:f.toolCallId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);u.push(i),d=!0,n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,i,{toolCallId:f.toolCallId})}if(u.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||o!==void 0)){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId;u.push({...o,type:r.TOOL_CALL_ARGS,toolCallId:f.toolCallId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),d=!0}return Ue(u,o,d,`TOOL_CALL_CHUNK`),u}case r.REASONING_MESSAGE_CHUNK:{let t=e,o=Ve(e,Be),s=c(`reasoning`,t.messageId,t.subagentRunId??void 0,`REASONING_MESSAGE_CHUNK`,`reasoning message`),l=i.get(s),u=[],d=!1,f;if(l?.kind===`reasoning`&&(t.messageId===void 0||t.messageId===l.fields.messageId))f=l.fields;else{if(u.push(...a(s)),t.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);f={messageId:t.messageId,subagentRunId:t.subagentRunId},i.set(s,{kind:`reasoning`,fields:f});let e=H({type:r.REASONING_MESSAGE_START,messageId:t.messageId,role:`reasoning`,...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);u.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId,i=Ie({...o,type:r.REASONING_MESSAGE_CONTENT,messageId:f.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);u.push(i),d=!0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,i,{messageId:f.messageId})}if(u.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||o!==void 0)){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId;u.push({...o,type:r.REASONING_MESSAGE_CONTENT,messageId:f.messageId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),d=!0}return Ue(u,o,d,`REASONING_MESSAGE_CHUNK`),u}}return e.type,[e]}),h(()=>{o()}))},W=Symbol(`agui.strip.drop`);function G(e){let t=e;for(;;){if(t instanceof D.ZodOptional||t instanceof D.ZodNullable||t instanceof D.ZodDefault||t instanceof D.ZodReadonly||t instanceof D.ZodCatch){t=t.unwrap();continue}if(t instanceof D.ZodPipe){t=t.def.in;continue}if(t instanceof D.ZodLazy){t=t.def.getter();continue}return t}}function We(e){let t=e.def;return typeof t?.discriminator==`string`?t.discriminator:void 0}function Ge(e){let t=e,n=Array.isArray(t.def?.values)?t.def.values:t.values?Array.from(t.values):void 0;return n&&n.length===1?n[0]:t.value}function Ke(e){let t=G(e);return t instanceof D.ZodLiteral?Ge(t):void 0}function K(e,t,n,r){let i=G(t);if(i instanceof D.ZodObject){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=i.shape,a=e,o={},s=i.meta()?.specOpen===!0;for(let e of Object.keys(a)){let i=Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;if(i===void 0){if(s){o[e]=a[e];continue}r.push(`${n}/${e}`);continue}let c=r.length,l=K(a[e],i,`${n}/${e}`,r);if(l===W){if(r.length=c,i.safeParse(void 0).success){r.push(`${n}/${e}`);continue}return W}o[e]=l}return o}if(i instanceof D.ZodArray){if(!Array.isArray(e))return e;let t=i.element,a=[];return e.forEach((e,i)=>{let o=r.length,s=K(e,t,`${n}/${i}`,r);if(s===W){r.length=o,r.push(`${n}/${i}`);return}a.push(s)}),a}if(i instanceof D.ZodRecord){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=i.def.valueType,a=e,o={};for(let e of Object.keys(a)){let i=r.length,s=K(a[e],t,`${n}/${e}`,r);if(s===W){r.length=i,r.push(`${n}/${e}`);continue}o[e]=s}return o}if(i instanceof D.ZodUnion){let t=i.options,a=We(i);if(a!==void 0){if(typeof e!=`object`||!e||Array.isArray(e))return e;let i=e[a];for(let o of t){let t=G(o);if(!(t instanceof D.ZodObject))continue;let s=t.shape;if(Ke(s[a])===i)return K(e,o,n,r)}return W}let o=t.filter(e=>G(e)instanceof D.ZodObject),s=typeof e==`object`&&!!e&&!Array.isArray(e);if(o.length>1&&s)return e;for(let i of t){let t=G(i);if(t instanceof D.ZodArray&&Array.isArray(e)||t instanceof D.ZodObject&&s)return K(e,i,n,r)}return e}return e}function qe(e,t){let n=[],r=K(e,t,``,n);if(r===W)throw Error(`Internal error: the stripper found the whole value unrecognisable, which the schemas are not supposed to allow — schema/stripper mismatch.`);return{value:r,stripped:n}}const Je=new Set(Object.values(r));function Ye(e){return Je.has(e.type)}const Xe=new Map(ue.options.map(e=>{let t=e.shape;return[String(Ge(t.type)),e]})),Ze=()=>typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS;function Qe(e){Ze()||console.warn(`[ag-ui][enforce] ${e}`)}const q=e=>t=>{let n=N(e);return t.pipe(w(e=>{if(!Ye(e))return Qe(`Dropping unrecognised event '${String(e.type)}': no middleware translated it and the protocol does not describe it.`),n?.event(`ENFORCE`,`Unrecognised event dropped:`,e,{type:e.type}),u;let t=Xe.get(e.type);if(t===void 0)throw Error(`No validator for recognised event type '${String(e.type)}'`);let{value:r,stripped:i}=qe(e,t);for(let t of i)Qe(`Removed unrecognised material at '${t}' on ${String(e.type)}. Nothing handled it; see the repo-root DEPRECATIONS.md if it is a retired shape.`);return y(t.parse(r))}))};function $e(e){let{value:t,stripped:n}=qe(c(e,`RunAgentInput`),fe);for(let e of n)Qe(`Removed unrecognised material at '${e}' from the outgoing input.`);return fe.parse(t)}var J=class{runNext(e,t){return t.run(e).pipe(U(!1))}runNextWithState(e,t){let n=k(e.messages||[]),r=k(e.state===void 0?{}:e.state),i=new f;return Se(e,i,t,[]).subscribe({next:e=>{e.messages!==void 0&&(n=e.messages),e.state!==void 0&&(r=e.state)},error:()=>{}}),this.runNext(e,t).pipe(S(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:k(n),state:k(r)})))}},et=class extends J{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}};function tt(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function nt(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function rt(e){let t=tt(e.mimeType);return e.data?{type:t,source:{type:`data`,value:e.data,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e.url?{type:t,source:{type:`url`,value:e.url,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:((typeof process>`u`||process.env===void 0||!process.env.SUPPRESS_TRANSFORMATION_WARNINGS)&&console.warn(`[ag-ui][compat] A binary content part carries only an id ('${e.id??``}') and cannot be converted to a modern media part; a 1.0 peer will not accept it. Provide data or a url. See the repo-root DEPRECATIONS.md.`),e)}function it(e,t,n){if(typeof e!=`object`||!e||!(`type`in e)||e.type!==t.type||!(`source`in e))return!1;let r=e.source;return typeof r!=`object`||!r||!(`type`in r)||r.type!==t.source.type||!(`value`in r)||r.value!==t.source.value||!(`mimeType`in r)||r.mimeType!==t.source.mimeType?!1:!n||`metadata`in e&&typeof e.metadata==`object`&&e.metadata!==null&&`filename`in e.metadata&&e.metadata.filename===n}function at(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.flatMap(e=>{if(nt(e)){let n=rt(e);return n.type!==`binary`&&t.some(t=>it(t,n,e.filename))?[]:[n]}return[e]});return{...e,content:n}}const ot=`THINKING_START`,st=`THINKING_END`,ct=`THINKING_TEXT_MESSAGE_START`,lt=`THINKING_TEXT_MESSAGE_CONTENT`,ut=`THINKING_TEXT_MESSAGE_END`;function dt(e,t){typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][compat] Converting deprecated ${e} to ${t}. The old shape leaves the protocol after its shim window — see the repo-root DEPRECATIONS.md. Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)}function ft(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Y(e,t,n){if(!ft(e)||e[t]!==null)return e;dt(`${n}.${t}: null`,`an absent field`);let{[t]:r,...i}=e;return i}function X(e,t,n){if(!ft(e)||!Array.isArray(e[t]))return e;let r=e[t],i=r.map(n);return i.some((e,t)=>e!==r[t])?{...e,[t]:i}:e}function pt(e){return X(e,`content`,e=>{if(!ft(e))return e;switch(e.type){case`image`:case`audio`:case`video`:case`document`:return Y(e,`metadata`,`${e.type} input content`);default:return e}})}function mt(e){let t=Y(e,`forwardedProps`,`RunAgentInput`);return t=X(t,`tools`,e=>Y(e,`parameters`,`Tool`)),t=X(t,`resume`,e=>Y(e,`payload`,`ResumeEntry`)),X(t,`messages`,pt)}var Z=class extends J{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warn(e,t){dt(e,t)}mintedContinuationId(e,t){if(t!==null)return t;let n=A();return this.warnAside(`Minting a messageId ('${n}') for ${e}: no THINKING opener preceded it, so there was no id to continue. The id is this client's invention, not the producer's, and verification will reject the translated event for naming something nothing opened.`),n}warnAside(e){typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][compat] ${e} Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,e.messages=e.messages.map(at),t.run(e).pipe(C(e=>this.transformEvent(e)))}transformEvent(e){if(e.rawEvent===null){this.warn(`${e.type}.rawEvent: null`,`an absent field`);let{rawEvent:t,...n}=e;e=n}if((e.type===r.RUN_FINISHED||e.type===r.SUBAGENT_FINISHED)&&e.result===null){this.warn(`${e.type}.result: null`,`an absent field`);let{result:t,...n}=e;e=n}switch(e.type){case ot:{this.currentReasoningId=A();let{title:t,...n}=e;return this.warn(ot,r.REASONING_START),t!==void 0&&this.warnAside(`Dropping ${ot}.title ${JSON.stringify(t)}: ${r.REASONING_START} has no title field, so the span's label cannot be carried and nothing downstream can recover it.`),{...n,type:r.REASONING_START,messageId:this.currentReasoningId}}case ct:return this.currentMessageId=A(),this.warn(ct,r.REASONING_MESSAGE_START),{...e,type:r.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case lt:{let{delta:t,...n}=e;return this.warn(lt,r.REASONING_MESSAGE_CONTENT),{...n,type:r.REASONING_MESSAGE_CONTENT,messageId:this.mintedContinuationId(lt,this.currentMessageId),delta:t}}case ut:{let t=this.mintedContinuationId(ut,this.currentMessageId);return this.currentMessageId=null,this.warn(ut,r.REASONING_MESSAGE_END),{...e,type:r.REASONING_MESSAGE_END,messageId:t}}case st:{let t=this.mintedContinuationId(st,this.currentReasoningId);return this.currentReasoningId=null,this.warn(st,r.REASONING_END),{...e,type:r.REASONING_END,messageId:t}}case r.TOOL_CALL_START:case r.TOOL_CALL_CHUNK:{let t=e;if(t.parentMessageId===null){this.warn(`${e.type}.parentMessageId: null`,`an absent field`);let{parentMessageId:n,...r}=t;return r}return e}case r.RUN_FINISHED:{let t=e;if(t.outcome===null){this.warn(`RUN_FINISHED.outcome: null`,`an absent field`);let{outcome:e,...n}=t;return n}return e}case r.MESSAGES_SNAPSHOT:{let t=e;return Array.isArray(t.messages)?{...t,messages:t.messages.map(e=>this.upgradeInboundMessage(e))}:e}case r.RUN_STARTED:{let t=mt(e.input),n=t===e.input?e:{...e,input:t},r=n;return!r.input||!Array.isArray(r.input.messages)?n:{...r,input:{...r.input,messages:r.input.messages.map(e=>this.upgradeInboundMessage(e))}}}default:return e}}upgradeInboundMessage(e){e=pt(e);let t=e.content;return!Array.isArray(t)||!t.some(e=>typeof e==`object`&&!!e&&e.type===`binary`)?e:(this.warn(`binary input content`,`the modern media content parts`),at(e))}};const ht=()=>e=>m(()=>{let t=new Z;return e.pipe(C(e=>t.transformEvent(e)))});function gt(e){return e.outcome}function _t(e,t=new Date){return e.expiresAt===void 0?!1:new Date(e.expiresAt)<=t}function vt(e,t){let n=new Set(e.map(e=>e.id)),r=new Set(Object.keys(t)),i=[...n].filter(e=>!r.has(e));if(i.length>0)throw Error(`buildResumeArray: missing responses for open interrupts: ${i.join(`, `)}`);let a=[...r].filter(e=>!n.has(e));if(a.length>0)throw Error(`buildResumeArray: responses reference unknown interrupt ids: ${a.join(`, `)}`);return e.map(e=>{let n=t[e.id],r={interruptId:e.id,status:n.status};return n.status===`resolved`&&n.payload!==void 0&&(r.payload=n.payload),n.metadata!==void 0&&(r.metadata=n.metadata),r})}var yt=class extends J{constructor(e){if(super(),e.allowedToolCalls&&e.disallowedToolCalls)throw Error(`Cannot specify both allowedToolCalls and disallowedToolCalls`);if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw Error(`Must specify either allowedToolCalls or disallowedToolCalls`);e.allowedToolCalls?this.allowedTools=new Set(e.allowedToolCalls):e.disallowedToolCalls&&(this.disallowedTools=new Set(e.disallowedToolCalls))}run(e,t){return m(()=>{let n=new Set;return this.runNext(e,t).pipe(ne(e=>{if(e.type===r.RUN_STARTED)return n.clear(),!0;if(e.type===r.TOOL_CALL_START){let t=e;return this.shouldFilterTool(t.toolCallName)?(n.add(t.toolCallId),!1):!0}if(e.type===r.TOOL_CALL_ARGS){let t=e;return!n.has(t.toolCallId)}if(e.type===r.TOOL_CALL_END){let t=e;return!n.has(t.toolCallId)}if(e.type===r.TOOL_CALL_RESULT){let t=e;return n.has(t.toolCallId)?(n.delete(t.toolCallId),!1):!0}return!0}))})}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function bt(){return typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS}function xt(e){bt()||console.warn(`[ag-ui][compat] Flattening message content for a <=0.0.39 peer DROPS non-text parts (${e.join(`, `)}). The peer cannot receive them; upgrade it to keep media content. See the repo-root DEPRECATIONS.md.`)}function St(e){bt()||console.warn(`[ag-ui][compat] Not flattening message content for a <=0.0.39 peer: ${e} content part(s) claim type "text" but carry a malformed 'text' value. That is a defect in the message, not media the peer cannot represent, and a downgrade must not repair it — the content is passed on unchanged so the outgoing enforcement boundary reports it. See the repo-root DEPRECATIONS.md.`)}function Ct(e){let t=e.content;if(Array.isArray(t)){let n=e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`text`,r=e=>n(e)&&typeof e.text==`string`,i=t.filter(e=>n(e)&&!r(e));if(i.length>0)return St(i.length),e;let a=t.filter(e=>!r(e)).map(e=>typeof e==`object`&&e&&`type`in e?String(e.type):typeof e);a.length>0&&xt(a);let o=t.filter(r).map(e=>e.text).join(``);return{...e,content:o}}return typeof t==`string`?e:t===void 0?{...e,content:``}:e}var wt=class extends J{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(Ct)};return this.runNext(i,t)}};const Tt=`THINKING_START`,Et=`THINKING_END`,Dt=`THINKING_TEXT_MESSAGE_START`,Ot=`THINKING_TEXT_MESSAGE_CONTENT`,kt=`THINKING_TEXT_MESSAGE_END`;var At=class extends J{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warnAboutTransformation(e,t){typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is converting ${e} to ${t}. To remove this warning, upgrade your AG-UI integration package (e.g. @ag-ui/langgraph). To surpress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,this.runNext(e,t).pipe(C(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case Tt:{this.currentReasoningId=A();let{title:t,...n}=e;return this.warnAboutTransformation(Tt,r.REASONING_START),{...n,type:r.REASONING_START,messageId:this.currentReasoningId}}case Dt:return this.currentMessageId=A(),this.warnAboutTransformation(Dt,r.REASONING_MESSAGE_START),{...e,type:r.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case Ot:{let{delta:t,...n}=e;return this.warnAboutTransformation(Ot,r.REASONING_MESSAGE_CONTENT),{...n,type:r.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??A(),delta:t}}case kt:{let t=this.currentMessageId??A();return this.warnAboutTransformation(kt,r.REASONING_MESSAGE_END),{...e,type:r.REASONING_MESSAGE_END,messageId:t}}case Et:{let t=this.currentReasoningId??A();return this.warnAboutTransformation(Et,r.REASONING_END),{...e,type:r.REASONING_END,messageId:t}}default:return e}}};const jt=`SUBAGENT_STARTED`,Mt=`SUBAGENT_FINISHED`,Nt=`SUBAGENT_ERROR`;function Q(e){if(e&&typeof e==`object`&&`subagentRunId`in e){let{subagentRunId:t,...n}=e;return n}return e}function Pt(e){return e.map(e=>Q(e))}var Ft=class extends J{warnDroppedLifecycleEvent(e){typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is dropping ${e} because the target agent predates subagent support. To remove this warning, upgrade your AG-UI integration package. To suppress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){let n={...e,messages:(e.messages??[]).map(e=>Q(e))};return this.runNext(n,t).pipe(se(e=>{let t=e.type;(t===jt||t===Mt||t===Nt)&&this.warnDroppedLifecycleEvent(t)}),ne(e=>{let t=e.type;return t!==jt&&t!==Mt&&t!==Nt}),C(e=>{let t=Q(e);if(t.type===r.MESSAGES_SNAPSHOT){let e=t;if(Array.isArray(e.messages))return{...e,messages:Pt(e.messages)}}if(t.type===r.RUN_FINISHED){let e=t;if(e.outcome&&Array.isArray(e.outcome.interrupts))return{...e,outcome:{...e.outcome,interrupts:e.outcome.interrupts.map(e=>Q(e))}}}if(t.type===r.RUN_STARTED){let e=t;if(e.input&&Array.isArray(e.input.messages))return{...e,input:{...e.input,messages:Pt(e.input.messages)}}}return t}))}},$=`1.0.0`;let It=!1;const Lt=(e,t)=>/^\d+\.\d+$/.test(e)?E(e,t)>0?`newer`:`not-newer`:`uninterpretable`,Rt=e=>{let t=e.protocolVersion;if(!(t===void 0||t===i))switch(Lt(t,i)){case`uninterpretable`:console.warn(`[ag-ui] The producer declared protocol version '${t}', which this client cannot interpret.`);return;case`newer`:console.warn(`[ag-ui] The producer speaks protocol ${t}; this client speaks ${i}. Unrecognised material will be stripped with warnings.`);return;case`not-newer`:return}};var zt=class r{resolvePeerCeiling(e){if(this.resolvingPeerCeiling)return $;let t=Object.getOwnPropertyDescriptor(this,`maxVersion`),n=Object.getOwnPropertyDescriptor(this,`maxProtocolVersion`),i=Object.getPrototypeOf(this);for(;i&&i!==r.prototype;)t??=Object.getOwnPropertyDescriptor(i,`maxVersion`),n??=Object.getOwnPropertyDescriptor(i,`maxProtocolVersion`),i=Object.getPrototypeOf(i);if(e===`maxVersion`&&t)return $;let a=e===`maxProtocolVersion`?t:n;if(!a)return $;this.resolvingPeerCeiling=!0;try{return a.get?a.get.call(this):a.value}finally{this.resolvingPeerCeiling=!1}}get maxProtocolVersion(){return this.resolvePeerCeiling(`maxProtocolVersion`)}get maxVersion(){return!this.resolvingPeerCeiling&&!It&&(It=!0,console.warn(`[ag-ui] AbstractAgent.maxVersion is deprecated — use maxProtocolVersion. Same value; the new name says whose version it is and that it is a ceiling.`)),this.resolvePeerCeiling(`maxVersion`)}get debug(){return this._debug}set debug(e){this._debug=M(e),this._debugLogger=F(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){typeof e==`boolean`?this._debugLogger=e?F(M(!0)):void 0:this._debugLogger=e}resolvedCeilingDuringConstruction(){let e=this.maxProtocolVersion;if(typeof e!=`string`||!le(e))throw new n(`maxProtocolVersion resolved to ${JSON.stringify(e)} during construction, which is not a version this client can compare. A ceiling read from an instance field is not available yet — return a literal from the getter.`);return e}constructor({agentId:t,description:n,threadId:r,initialMessages:i,initialState:a,debug:o}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.resolvingPeerCeiling=!1,this.agentId=t,this.description=n??``,this.threadId=r??e(),this.messages=k(i??[]),this.state=k(a??{}),this._debug=M(o),this._debugLogger=F(this._debug);let s=this.resolvedCeilingDuringConstruction();E(s,`0.0.39`)<=0&&this.middlewares.unshift(new wt),E(s,`0.0.45`)<=0&&this.middlewares.unshift(new At),E(s,`0.0.57`)<=0&&this.middlewares.unshift(new Ft)}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(t=>t!==e)}}}use(...e){let t=e.map(e=>typeof e==`function`?new et(e):e);return this.middlewares.push(...t),this}async runAgent(t,n){try{this.isRunning=!0,this.agentId=this.agentId??e();let r=this.prepareRunAgentInput(t);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let i,a=new Set(this.messages.map(e=>e.id)),o=[{onRunStartedEvent:({event:e})=>Rt(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(i=e.result)}},...this.subscribers,n??{}];await this.onInitialize(r,o),this.activeRunDetach$=new p;let s;this.activeRunCompletionPromise=new Promise(e=>{s=e}),await _(ee(()=>[...this.middlewares,new Z].reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(r),q(this.debugLogger),U(this.debugLogger),L(this.debugLogger),e=>e.pipe(oe(this.activeRunDetach$)),e=>this.apply(r,e,o),e=>this.processApplyEvents(r,e,o),x(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(r,e,o))),re(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(r,o),s?.(),s=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(y(null)));let c=k(this.messages).filter(e=>!a.has(e.id));return{result:i,newMessages:c}}finally{this.isRunning=!1}}connect(e){throw new t}async connectAgent(n,r){try{this.isRunning=!0,this.agentId=this.agentId??e();let i=this.prepareRunAgentInput(n),a,o=new Set(this.messages.map(e=>e.id)),s=[{onRunStartedEvent:({event:e})=>Rt(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(a=e.result)}},...this.subscribers,r??{}];await this.onInitialize(i,s),this.activeRunDetach$=new p;let c;this.activeRunCompletionPromise=new Promise(e=>{c=e}),await _(ee(()=>m(()=>this.connect(i)),e=>q(this.debugLogger)(ht()(e)),U(this.debugLogger),L(this.debugLogger),e=>e.pipe(oe(this.activeRunDetach$)),e=>this.apply(i,e,s),e=>this.processApplyEvents(i,e,s),x(e=>(this.isRunning=!1,e instanceof t?u:this.onError(i,e,s))),re(()=>{this.isRunning=!1,this.onFinalize(i,s),c?.(),c=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(y(null)),{defaultValue:void 0});let l=k(this.messages).filter(e=>!o.has(e.id));return{result:a,newMessages:l}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){if(!this.activeRunDetach$)return;let e=this.activeRunCompletionPromise??Promise.resolve();this.activeRunDetach$.next(),this.activeRunDetach$?.complete(),await e}apply(e,t,n){return Se(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe(se(t=>{t.messages&&(this.messages=t.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),t.state!==void 0&&(this.state=t.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}))}prepareRunAgentInput(t){let n=k(this.messages);for(let e of n)e.subagentRunId===null&&delete e.subagentRunId;let r=n.filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:t?.runId||e(),...E(this.maxProtocolVersion,$)>=0&&{protocolVersion:i},tools:k(t?.tools??[]),context:k(t?.context??[]),forwardedProps:k(t?.forwardedProps??{}),state:k(this.state),messages:r,...t?.resume===void 0?{}:{resume:k(t.resume)}}}async onInitialize(e,t){if(this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),r=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(r.length>0)throw new n(`Thread has ${r.length} pending interrupt(s) not addressed by resume: ${r.join(`, `)}`);for(let t of this.pendingInterrupts)if(_t(t)&&(e.resume??[]).find(e=>e.interruptId===t.id)?.status!==`cancelled`)throw new n(`Interrupt ${t.id} expired at ${t.expiresAt} and can no longer be answered. Cancel it to continue the thread.`)}let r=await j(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));if(r.messages!==void 0||r.state!==void 0){if(r.messages){this.messages=r.messages;for(let e of r.messages)e.subagentRunId===null&&delete e.subagentRunId;e.messages=r.messages.filter(e=>e.role!==`activity`),t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})}r.state!==void 0&&(this.state=r.state,e.state=r.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}}onError(e,t,n){return g(j(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe(C(r=>{let i=r;if((i.messages!==void 0||i.state!==void 0)&&(i.messages!==void 0&&(this.messages=i.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),i.state!==void 0&&(this.state=i.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))),i.stopPropagation!==!0){let e=String(t);if(!(t.name===`AbortError`||t.message===`Fetch is aborted`||t.message===`signal is aborted without reason`||t.message===`component unmounted`||e===`component unmounted`))throw console.error(`Agent execution failed:`,t),t}return{}}))}async onFinalize(e,t){let n=await j(t,this.messages,this.state,(t,n,r)=>t.onRunFinalized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state!==void 0&&(this.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}clone(){let e=Object.create(Object.getPrototypeOf(this));return e.agentId=this.agentId,e.description=this.description,e.threadId=this.threadId,e.messages=k(this.messages),e.state=k(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=k(this.pendingInterrupts),e}addMessage(e){this.messages.push(e),(async()=>{for(let t of this.subscribers)await t.onNewMessage?.({message:e,messages:this.messages,state:this.state,agent:this});if(e.role===`assistant`&&e.toolCalls)for(let t of e.toolCalls)for(let e of this.subscribers)await e.onNewToolCall?.({toolCall:t,messages:this.messages,state:this.state,agent:this});for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}addMessages(e){this.messages.push(...e),(async()=>{for(let t of e){for(let e of this.subscribers)await e.onNewMessage?.({message:t,messages:this.messages,state:this.state,agent:this});if(t.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)for(let t of this.subscribers)await t.onNewToolCall?.({toolCall:e,messages:this.messages,state:this.state,agent:this})}for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setMessages(e){this.messages=k(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=k(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(t){this.agentId=this.agentId??e();let n=this.prepareRunAgentInput(t);return[...this.middlewares,new Z].reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(n).pipe(q(this.debugLogger),U(this.debugLogger),L(this.debugLogger),Me(this.threadId,n.runId,this.agentId),e=>e.pipe(C(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}};function Bt(e){if(!Array.isArray(e.messages))return e;let t=!1,n=e.messages.map(e=>{if(e.subagentRunId===null){t=!0;let n={...e};return delete n.subagentRunId,n}return e});return t?{...e,messages:n}:e}var Vt=class extends zt{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(Bt(e)),signal:this.abortController.signal}}runAgent(e,t){return this.abortController=e?.abortController??new AbortController,super.runAgent(e,t)}abortRun(){this.abortController.abort(),super.abortRun()}constructor(e){super(e),this.abortController=new AbortController,this.url=e.url,this.headers=k(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return ke(Ce(()=>this.fetch(this.url,this.requestInit($e(e)))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=k(this.headers??{}),e.fetch=this.fetch;let t=new AbortController,n=this.abortController.signal;return n.aborted&&t.abort(n.reason),e.abortController=t,e}};function Ht(e,t){if(e===void 0)return t;let n=s(e.metadata,t.metadata);return n===void 0?t:{...t,metadata:n}}function Ut(e,t){let{metadata:n,...r}=t,i=e?.metadata;return i===void 0?r:{...r,metadata:i}}function Wt(e){let t;for(let n of e)t=s(t,n.metadata);return t}function Gt(e){let t=[],n=new Map,i=new Map,a=[];for(let o of e)if(o.type===r.TEXT_MESSAGE_START){let e=o,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.contents.length===0?r.start=Ht(r.start,e):(r.start=Ut(r.start,e),r.postStartMetadata=s(r.postStartMetadata,e.metadata))}else if(o.type===r.TEXT_MESSAGE_CONTENT){let e=o,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.contents.push(e),r.postStartMetadata=s(r.postStartMetadata,e.metadata)}else if(o.type===r.TEXT_MESSAGE_END){let e=o,r=e.messageId;n.has(r)||n.set(r,{contents:[],otherEvents:[]});let i=n.get(r);i.end=e,Kt(r,i,t),n.delete(r)}else if(o.type===r.TOOL_CALL_START){let e=o,t=e.toolCallId;i.has(t)||i.set(t,{args:[],otherEvents:[]});let n=i.get(t);n.args.length===0?n.start=Ht(n.start,e):(n.start=Ut(n.start,e),n.postStartMetadata=s(n.postStartMetadata,e.metadata))}else if(o.type===r.TOOL_CALL_ARGS){let e=o,t=e.toolCallId;i.has(t)||i.set(t,{args:[],otherEvents:[]});let n=i.get(t);n.args.push(e),n.postStartMetadata=s(n.postStartMetadata,e.metadata)}else if(o.type===r.TOOL_CALL_END){let e=o,n=e.toolCallId;i.has(n)||i.set(n,{args:[],otherEvents:[]});let r=i.get(n);r.end=e,qt(n,r,t),i.delete(n)}else if(o.type===r.RUN_STARTED)Yt(a,t),a=[],t.push(o);else if(o.type===r.RUN_FINISHED||o.type===r.RUN_ERROR)Yt(a,t),a=[],t.push(o);else if(o.type===r.STATE_SNAPSHOT||o.type===r.STATE_DELTA)a.push(o);else{let e=!1;for(let[,t]of n)if(t.start&&!t.end){t.otherEvents.push(o),e=!0;break}if(!e){for(let[,t]of i)if(t.start&&!t.end){t.otherEvents.push(o),e=!0;break}}e||t.push(o)}for(let[e,r]of n)Kt(e,r,t);for(let[e,n]of i)qt(e,n,t);return Yt(a,t),t}function Kt(e,t,n){if(t.start&&n.push(t.start),t.contents.length>0){let i=t.contents.map(e=>e.delta).join(``),a=t.postStartMetadata,o={type:r.TEXT_MESSAGE_CONTENT,messageId:e,delta:i,...a!==void 0&&{metadata:a}};n.push(o)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}function qt(e,t,n){if(t.start&&n.push(t.start),t.args.length>0){let i=t.args.map(e=>e.delta).join(``),a=t.postStartMetadata,o={type:r.TOOL_CALL_ARGS,toolCallId:e,delta:i,...a!==void 0&&{metadata:a}};n.push(o)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}const Jt=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)};function Yt(e,t){if(e.length===0)return;let n=-1;for(let t=e.length-1;t>=0;t--)if(e[t].type===r.STATE_SNAPSHOT){n=t;break}if(n===-1){t.push(...e);return}let i={};for(let t of e.slice(n))if(t.type===r.STATE_SNAPSHOT)i=k(t.snapshot);else try{i=l.applyPatch(i,k(t.delta),!0,!1).newDocument}catch(e){let n=e instanceof Error?e.message:String(e);Jt(`[ag-ui][compact] Failed to apply state patch while compacting:\nCurrent state: ${JSON.stringify(i,null,2)}\nPatch operations: ${JSON.stringify(t.delta,null,2)}\nError: ${n}`)}let a=Wt(e),o={type:r.STATE_SNAPSHOT,snapshot:i,...a!==void 0&&{metadata:a}};t.push(o)}export{O as ACTIVITY_HISTORY_METADATA,zt as AbstractAgent,wt as BackwardCompatibility_0_0_39,At as BackwardCompatibility_0_0_45,Ft as BackwardCompatibility_0_0_57,Z as CompatibilityBoundary,P as DebugLogger,yt as FilterToolCallsMiddleware,et as FunctionMiddleware,Vt as HttpAgent,J as Middleware,he as authoritativeActivityTypes,vt as buildResumeArray,Gt as compactEvents,Me as convertToLegacyEvents,F as createDebugLogger,Se as defaultApplyEvents,q as enforceEvents,$e as enforceOutgoingInput,gt as getRunOutcome,_t as isInterruptExpired,Ye as isRecognizedEvent,Oe as parseProtoStream,Te as parseSSEStream,A as randomUUID,M as resolveAgentDebugConfig,N as resolveDebugLogger,Ce as runHttpRequest,k as structuredClone_,U as transformChunks,ke as transformHttpEventStream,L as verifyEvents,ge as withAuthoritativeActivityTypes};
5
5
  //# sourceMappingURL=index.mjs.map