@ag-ui/client 1.0.0-canary.1789569879.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,contentHasMedia as i,contentToText as a,mergeMetadata as o,omitOptionalNulls as s}from"@ag-ui/core";import c from"fast-json-patch";import{EMPTY as l,Observable as u,ReplaySubject as d,Subject as f,defer as p,finalize as m,from as h,lastValueFrom as g,mergeMap as _,of as v,pipe as y,throwError as b}from"rxjs";import{catchError as ee,concatMap as x,defaultIfEmpty as S,filter as te,finalize as ne,map as C,mergeAll as re,mergeMap as w,switchMap as ie,takeUntil as ae,tap as oe}from"rxjs/operators";import se from"untruncate-json";import*as T from"@ag-ui/proto";import{compareVersions as E,validate as ce}from"compare-versions";import{EventSchema as le,ReasoningMessageChunkEventSchema as ue,RunAgentInputSchema as de,TextMessageChunkEventSchema as fe,ToolCallChunkEventSchema as pe}from"@ag-ui/core/schemas";import{z as D}from"zod/v4";export*from"@ag-ui/core";const O=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function k(){return e()}function me(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 he(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&he(t);return e}const ge=512*1024;function _e(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 A(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&&!_e(t,n,ge),c=s?O(t):t,l=s?O(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(he(c),he(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=O(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=O(e.state),d=!0,n=!0),s&&n&&_e(c,l,ge)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(a&&e instanceof TypeError)throw e;s&&o&&me(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)?O(c):c}:{},...d?{state:Object.isFrozen(l)?O(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function j(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 M(e){if(e instanceof N)return e;if(e===!0)return new N(j(!0))}var N=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 P(e){return e.enabled?new N(e):void 0}function ve(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 F(e,t){return!e||t.metadata===void 0?!1:(e.metadata=o(e.metadata,O(t.metadata)),!0)}const ye=(e,t,n,i,a)=>{let o=M(a),s=O(n.messages),u=O(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&&(u=e.state,d.state=e.state)},g=()=>{let e=O(d);return d={},e.messages!==void 0||e.state!==void 0?v(e):l};return t.pipe(x(async t=>{let a=await A(i,s,u,(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 A(i,s,u,(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=F(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 c=await A(i,s,u,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof o.content==`string`?o.content:``}));return h(c),c.stopPropagation!==!0&&(o.content=`${typeof o.content==`string`?o.content:``}${a}`,F(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 A(i,s,u,(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&&F(a,t)&&h({messages:s}),await Promise.all(i.map(t=>{t.onNewMessage?.({message:a,messages:s,state:u,agent:n,input:e})})),g()}case r.TOOL_CALL_START:{let r=await A(i,s,u,(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),(F(a,t)||r)&&h({messages:s}),g()}let o=new Set(s.map(e=>e.id)),c=ve(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),F(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 c=o.toolCalls?.find(e=>e.id===r);if(!c)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${r}'`),g();let l=await A(i,s,u,(r,i,a)=>{let o=c.function.arguments,s=c.function.name,l={};try{l=se(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:l})});return h(l),l.stopPropagation!==!0&&(c.function.arguments+=a,F(c,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 c=await A(i,s,u,(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(c),c.stopPropagation!==!0&&F(o,t)&&h({messages:s}),await Promise.all(i.map(t=>{t.onNewToolCall?.({toolCall:o,messages:s,state:u,agent:n,input:e})})),g()}case r.TOOL_CALL_RESULT:{let r=await A(i,s,u,(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:c,subagentRunId:l}=t;p.add(a);let d={id:r,toolCallId:a,role:c||`tool`,content:o,...l!=null&&{subagentRunId:l}};F(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:u,agent:n,input:e})})),h({messages:s})}return g()}case r.STATE_SNAPSHOT:{let r=await A(i,s,u,(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;u=e,h({state:u})}return g()}case r.STATE_DELTA:{let r=await A(i,s,u,(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{u=c.applyPatch(u,e,!0,!1).newDocument,h({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 g()}case r.MESSAGES_SNAPSHOT:{let r=await A(i,s,u,(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=n.some(e=>e.role===`activity`),a=n.some(e=>e.role===`reasoning`),o=e=>e.role===`activity`&&!i||e.role===`reasoning`&&!a;s=s.filter(e=>o(e)||r.has(e.id)).map(e=>o(e)?e:r.get(e.id));let c=new Set(s.map(e=>e.id));for(let e of n)c.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,c=o?.role===`activity`?o:void 0,l=r.replace??!0,d=await A(i,s,u,(t,i,a)=>t.onActivitySnapshotEvent?.({event:r,messages:i,state:a,agent:n,input:e,activityMessage:c,existingMessage:o}));if(h(d),d.stopPropagation!==!0){let t={id:r.messageId,role:`activity`,activityType:r.activityType,content:O(r.content),...r.subagentRunId!=null&&{subagentRunId:r.subagentRunId}},o,d;a===-1?(s.push(t),o=t,d=t):c?(l&&(s[a]={...c,activityType:r.activityType,content:O(r.content),subagentRunId:r.subagentRunId},r.subagentRunId??delete s[a].subagentRunId),d=s[a]):l&&(s[a]=t,o=t,d=t),F(d,r),h({messages:s}),o&&await Promise.all(i.map(t=>t.onNewMessage?.({message:o,messages:s,state:u,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 l=o,d=await A(i,s,u,(t,i,a)=>t.onActivityDeltaEvent?.({event:r,messages:i,state:a,agent:n,input:e,activityMessage:l}));if(h(d),d.stopPropagation!==!0)try{F(l,r)&&h({messages:s});let e=O(l.content??{}),t=c.applyPatch(e,r.patch??[],!0,!1).newDocument;s[a]={...l,content:O(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 A(i,s,u,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.CUSTOM:return h(await A(i,s,u,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.RUN_STARTED:{let r=await A(i,s,u,(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 A(i,s,u,(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 A(i,s,u,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.STEP_STARTED:return h(await A(i,s,u,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.STEP_FINISHED:return h(await A(i,s,u,(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 A(i,s,u,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.REASONING_MESSAGE_START:{let r=await A(i,s,u,(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=F(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 c=await A(i,s,u,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof o.content==`string`?o.content:``}));return h(c),c.stopPropagation!==!0&&(o.content=`${typeof o.content==`string`?o.content:``}${a}`,F(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 A(i,s,u,(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&&F(a,t)&&h({messages:s}),await Promise.all(i.map(t=>{t.onNewMessage?.({message:a,messages:s,state:u,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 A(i,s,u,(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,c=await A(i,s,u,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(h(c),c.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 A(i,s,u,(r,i,a)=>r.onSubagentStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.SUBAGENT_FINISHED:return h(await A(i,s,u,(r,i,a)=>r.onSubagentFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g();case r.SUBAGENT_ERROR:return h(await A(i,s,u,(r,i,a)=>r.onSubagentErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),g()}return t.type,g()}),re(),i.length>0?S({}):e=>e)},I=e=>t=>{let i=M(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,y=!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,y=!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(y&&!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}),v(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):v(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),v(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}),v(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):v(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),v(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),v(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),v(e)}case r.ACTIVITY_SNAPSHOT:{let t=e.messageId;return(!l.activity.has(t)||e.replace!==!1)&&l.activity.set(t,{subagentRunId:e.subagentRunId}),v(e)}case r.TOOL_CALL_RESULT:{let t=e.messageId;return typeof t==`string`&&l.message.set(t,{subagentRunId:e.subagentRunId}),v(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}),v(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),v(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):v(e)}case r.ACTIVITY_DELTA:{let n=e.messageId,r=S(t,e.subagentRunId,l.activity.get(n),`activity`,n);return r?b(()=>r):v(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),v(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),v(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 v(e);case r.RUN_STARTED:y=!0;{let t=x((e.input??{}).messages,!1);if(t)return b(()=>t)}return v(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,v(e);case r.RUN_ERROR:return d=!0,v(e);case r.CUSTOM:return v(e);default:return v(e)}}))};let L=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({});const be=e=>p(()=>h(e())).pipe(ie(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return h(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:L.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new u(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:L.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`))})),xe=10*1024*1024,Se=(e,t)=>{let n=M(t),r=new f,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==L.HEADERS&&e.type===L.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>xe){r.error(Error(`SSE buffer size exceeded maximum limit of ${xe/(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(`
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()},Ce=10*1024*1024,we=()=>typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS,Te=(e,t)=>{let n=M(t),r=new f,i=new Uint8Array,a=!1;e.subscribe({next:e=>{if(e.type!==L.HEADERS&&e.type===L.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>Ce){r.error(Error(`Protobuf message size exceeded maximum limit of ${Ce/(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)we()||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()},Ee=(e,t)=>{let n=M(t),i=new f,a=new d(1),o=!1,s,c=!1,l=()=>{c=!0,s?.unsubscribe()},u=e=>{l(),i.error(e)},p=()=>{l(),i.complete()};return s=e.subscribe({next:e=>{if(a.next(e),e.type===L.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?Te(a,n).subscribe({next:e=>i.next(e),error:e=>u(e),complete:()=>p()}):Se(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}),p();return}return u(e)},complete:()=>p()})}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()},R={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`},De=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 Oe(e,t){return i(t)&&z(`[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.`),a(t)}const z=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)},ke=(e,t,n)=>i=>{let a={},o=!0,s=!0,l=``,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:R.TextMessageStart,messageId:e.messageId,role:e.role}]}case r.TEXT_MESSAGE_CONTENT:{let e=i;return[{type:R.TextMessageContent,messageId:e.messageId,content:e.delta}]}case r.TEXT_MESSAGE_END:{let e=i;return[{type:R.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:R.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case r.TOOL_CALL_ARGS:{let r=i,c=f.find(e=>e.id===r.toolCallId);if(!c)return z(`[ag-ui][legacy] TOOL_CALL_ARGS: No tool call found with ID '${r.toolCallId}'`),[];c.function.arguments+=r.delta;let u=!1;if(d){let e=d.find(e=>e.tool==c.function.name);if(e)try{let t=JSON.parse(se(c.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:R.ActionExecutionArgs,actionExecutionId:r.toolCallId,args:r.delta},...u?[{type:R.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:s}]:[]]}case r.TOOL_CALL_END:{let e=i;return[{type:R.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case r.TOOL_CALL_RESULT:{let e=i,t=p[e.toolCallId];return(t===void 0||t===``)&&z(`[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:R.ActionExecutionResult,actionExecutionId:e.toolCallId,result:Oe(e.toolCallId,e.content),actionName:t||`unknown`}]}case r.RAW:return m||(m=!0,z(`[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:R.MetaEvent,name:e.name,value:e.value}]}case r.STATE_SNAPSHOT:return h(i.snapshot),[{type:R.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:s}];case r.STATE_DELTA:{let r=i,u;try{u=c.applyPatch(a,r.delta,!0,!1).newDocument}catch(e){let t=e instanceof Error?e.message:String(e);return z(`[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:R.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:s}]}case r.MESSAGES_SNAPSHOT:return u=i.messages,[{type:R.AgentStateMessage,threadId:e,agentName:n,nodeName:l,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=Ae(u)}catch(e){return[{type:R.RunError,message:e.message}]}return[{type:R.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:o,role:`assistant`,state:JSON.stringify({...a,...r?{messages:r}:{}}),active:!1}]}case r.RUN_ERROR:{let e=i;return[{type:R.RunError,message:e.message,code:e.code}]}case r.STEP_STARTED:return l=i.stepName,f=[],d=null,[{type:R.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:!0}];case r.STEP_FINISHED:return f=[],d=null,[{type:R.AgentStateMessage,threadId:e,agentName:n,nodeName:l,runId:t,running:o,role:`assistant`,state:JSON.stringify(a),active:!1}];default:return[]}}))};function Ae(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=De(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:Oe(n.toolCallId,n.content),actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}const je=e=>e.kind===`tool`?e.fields.toolCallId:e.fields.messageId,Me=e=>e===`tool`?`toolCallId`:`messageId`,B=(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}'`}.`)},V=(e,t)=>t.metadata===void 0?e:{...e,metadata:t.metadata},Ne=(e,t)=>{let n=V(e,t);return t.rawEvent===void 0?n:{...n,rawEvent:t.rawEvent}},H=e=>new Set(Object.keys(e.shape)),Pe=H(fe),Fe=H(pe),Ie=H(ue),Le=(e,t)=>{let n;for(let r of Object.keys(e))t.has(r)||((n??={})[r]=e[r]);return n},Re=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.`)},ze=(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&&Re(`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=M(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&&je(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 ${Me(e)} nor a subagentRunId, but ${o.length} lanes have an open ${a}. Attribute the chunk to the subagent it belongs to.`)};return t.pipe(_(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=Le(e,Pe),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))B(`text message`,l.fields.messageId,`role`,t.role,l.fields.role),B(`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=V({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=Ne({...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 ze(u,o,d,`TEXT_MESSAGE_CHUNK`),u}case r.TOOL_CALL_CHUNK:{let t=e,o=Le(e,Fe),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))B(`tool call`,l.fields.toolCallId,`toolCallName`,t.toolCallName,l.fields.toolCallName),B(`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=V({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=Ne({...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 ze(u,o,d,`TOOL_CALL_CHUNK`),u}case r.REASONING_MESSAGE_CHUNK:{let t=e,o=Le(e,Ie),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=V({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=Ne({...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 ze(u,o,d,`REASONING_MESSAGE_CHUNK`),u}}return e.type,[e]}),m(()=>{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 Be(e){let t=e.def;return typeof t?.discriminator==`string`?t.discriminator:void 0}function Ve(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 He(e){let t=G(e);return t instanceof D.ZodLiteral?Ve(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=Be(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(He(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 Ue(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 We=new Set(Object.values(r));function Ge(e){return We.has(e.type)}const Ke=new Map(le.options.map(e=>{let t=e.shape;return[String(Ve(t.type)),e]})),qe=()=>typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS;function Je(e){qe()||console.warn(`[ag-ui][enforce] ${e}`)}const q=e=>t=>{let n=M(e);return t.pipe(w(e=>{if(!Ge(e))return Je(`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}),l;let t=Ke.get(e.type);if(t===void 0)throw Error(`No validator for recognised event type '${String(e.type)}'`);let{value:r,stripped:i}=Ue(e,t);for(let t of i)Je(`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 v(t.parse(r))}))};function Ye(e){let{value:t,stripped:n}=Ue(s(e,`RunAgentInput`),de);for(let e of n)Je(`Removed unrecognised material at '${e}' from the outgoing input.`);return de.parse(t)}var J=class{runNext(e,t){return t.run(e).pipe(U(!1))}runNextWithState(e,t){let n=O(e.messages||[]),r=O(e.state===void 0?{}:e.state),i=new d;return ye(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(x(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:O(n),state:O(r)})))}},Xe=class extends J{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}};function Ze(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function Qe(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function $e(e){let t=Ze(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 et(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 tt(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.flatMap(e=>{if(Qe(e)){let n=$e(e);return n.type!==`binary`&&t.some(t=>et(t,n,e.filename))?[]:[n]}return[e]});return{...e,content:n}}const nt=`THINKING_START`,rt=`THINKING_END`,it=`THINKING_TEXT_MESSAGE_START`,at=`THINKING_TEXT_MESSAGE_CONTENT`,ot=`THINKING_TEXT_MESSAGE_END`;function st(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 ct(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Y(e,t,n){if(!ct(e)||e[t]!==null)return e;st(`${n}.${t}: null`,`an absent field`);let{[t]:r,...i}=e;return i}function X(e,t,n){if(!ct(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 lt(e){return X(e,`content`,e=>{if(!ct(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 ut(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`,lt)}var Z=class extends J{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warn(e,t){st(e,t)}mintedContinuationId(e,t){if(t!==null)return t;let n=k();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(tt),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 nt:{this.currentReasoningId=k();let{title:t,...n}=e;return this.warn(nt,r.REASONING_START),t!==void 0&&this.warnAside(`Dropping ${nt}.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 it:return this.currentMessageId=k(),this.warn(it,r.REASONING_MESSAGE_START),{...e,type:r.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case at:{let{delta:t,...n}=e;return this.warn(at,r.REASONING_MESSAGE_CONTENT),{...n,type:r.REASONING_MESSAGE_CONTENT,messageId:this.mintedContinuationId(at,this.currentMessageId),delta:t}}case ot:{let t=this.mintedContinuationId(ot,this.currentMessageId);return this.currentMessageId=null,this.warn(ot,r.REASONING_MESSAGE_END),{...e,type:r.REASONING_MESSAGE_END,messageId:t}}case rt:{let t=this.mintedContinuationId(rt,this.currentReasoningId);return this.currentReasoningId=null,this.warn(rt,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=ut(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=lt(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`),tt(e))}};const dt=()=>e=>p(()=>{let t=new Z;return e.pipe(C(e=>t.transformEvent(e)))});function ft(e){return e.outcome}function pt(e,t=new Date){return e.expiresAt===void 0?!1:new Date(e.expiresAt)<=t}function mt(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 ht=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 p(()=>{let n=new Set;return this.runNext(e,t).pipe(te(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 gt(){return typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS}function _t(e){gt()||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 vt(e){gt()||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 yt(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 vt(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&&_t(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 bt=class extends J{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(yt)};return this.runNext(i,t)}};const xt=`THINKING_START`,St=`THINKING_END`,Ct=`THINKING_TEXT_MESSAGE_START`,wt=`THINKING_TEXT_MESSAGE_CONTENT`,Tt=`THINKING_TEXT_MESSAGE_END`;var Et=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 xt:{this.currentReasoningId=k();let{title:t,...n}=e;return this.warnAboutTransformation(xt,r.REASONING_START),{...n,type:r.REASONING_START,messageId:this.currentReasoningId}}case Ct:return this.currentMessageId=k(),this.warnAboutTransformation(Ct,r.REASONING_MESSAGE_START),{...e,type:r.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case wt:{let{delta:t,...n}=e;return this.warnAboutTransformation(wt,r.REASONING_MESSAGE_CONTENT),{...n,type:r.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??k(),delta:t}}case Tt:{let t=this.currentMessageId??k();return this.warnAboutTransformation(Tt,r.REASONING_MESSAGE_END),{...e,type:r.REASONING_MESSAGE_END,messageId:t}}case St:{let t=this.currentReasoningId??k();return this.warnAboutTransformation(St,r.REASONING_END),{...e,type:r.REASONING_END,messageId:t}}default:return e}}};const Dt=`SUBAGENT_STARTED`,Ot=`SUBAGENT_FINISHED`,kt=`SUBAGENT_ERROR`;function Q(e){if(e&&typeof e==`object`&&`subagentRunId`in e){let{subagentRunId:t,...n}=e;return n}return e}function At(e){return e.map(e=>Q(e))}var jt=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(oe(e=>{let t=e.type;(t===Dt||t===Ot||t===kt)&&this.warnDroppedLifecycleEvent(t)}),te(e=>{let t=e.type;return t!==Dt&&t!==Ot&&t!==kt}),C(e=>{let t=Q(e);if(t.type===r.MESSAGES_SNAPSHOT){let e=t;if(Array.isArray(e.messages))return{...e,messages:At(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:At(e.input.messages)}}}return t}))}},$=`1.0.0-canary.1789569879.0`;let Mt=!1;const Nt=(e,t)=>/^\d+\.\d+$/.test(e)?E(e,t)>0?`newer`:`not-newer`:`uninterpretable`,Pt=e=>{let t=e.protocolVersion;if(!(t===void 0||t===`1.0`))switch(Nt(t,`1.0`)){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 1.0. Unrecognised material will be stripped with warnings.`);return;case`not-newer`:return}};var Ft=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&&!Mt&&(Mt=!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=j(e),this._debugLogger=P(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){typeof e==`boolean`?this._debugLogger=e?P(j(!0)):void 0:this._debugLogger=e}resolvedCeilingDuringConstruction(){let e=this.maxProtocolVersion;if(typeof e!=`string`||!ce(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=O(i??[]),this.state=O(a??{}),this._debug=j(o),this._debugLogger=P(this._debug);let s=this.resolvedCeilingDuringConstruction();E(s,`0.0.39`)<=0&&this.middlewares.unshift(new bt),E(s,`0.0.45`)<=0&&this.middlewares.unshift(new Et),E(s,`0.0.57`)<=0&&this.middlewares.unshift(new jt)}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 Xe(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})=>Pt(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(i=e.result)}},...this.subscribers,n??{}];await this.onInitialize(r,o),this.activeRunDetach$=new f;let s;this.activeRunCompletionPromise=new Promise(e=>{s=e}),await g(y(()=>[...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),I(this.debugLogger),e=>e.pipe(ae(this.activeRunDetach$)),e=>this.apply(r,e,o),e=>this.processApplyEvents(r,e,o),ee(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))),ne(()=>{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}))(v(null)));let c=O(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})=>Pt(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(a=e.result)}},...this.subscribers,r??{}];await this.onInitialize(i,s),this.activeRunDetach$=new f;let c;this.activeRunCompletionPromise=new Promise(e=>{c=e}),await g(y(()=>p(()=>this.connect(i)),e=>q(this.debugLogger)(dt()(e)),U(this.debugLogger),I(this.debugLogger),e=>e.pipe(ae(this.activeRunDetach$)),e=>this.apply(i,e,s),e=>this.processApplyEvents(i,e,s),ee(e=>(this.isRunning=!1,e instanceof t?l:this.onError(i,e,s))),ne(()=>{this.isRunning=!1,this.onFinalize(i,s),c?.(),c=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(v(null)),{defaultValue:void 0});let u=O(this.messages).filter(e=>!o.has(e.id));return{result:a,newMessages:u}}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 ye(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe(oe(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=O(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:`1.0`},tools:O(t?.tools??[]),context:O(t?.context??[]),forwardedProps:O(t?.forwardedProps??{}),state:O(this.state),messages:r,...t?.resume===void 0?{}:{resume:O(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(pt(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 A(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 h(A(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 A(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=O(this.messages),e.state=O(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=O(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=O(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=O(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),I(this.debugLogger),ke(this.threadId,n.runId,this.agentId),e=>e.pipe(C(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}};function It(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 Lt=class extends Ft{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(It(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=O(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return Ee(be(()=>this.fetch(this.url,this.requestInit(Ye(e)))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=O(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 Rt(e,t){if(e===void 0)return t;let n=o(e.metadata,t.metadata);return n===void 0?t:{...t,metadata:n}}function zt(e,t){let{metadata:n,...r}=t,i=e?.metadata;return i===void 0?r:{...r,metadata:i}}function Bt(e){let t;for(let n of e)t=o(t,n.metadata);return t}function Vt(e){let t=[],n=new Map,i=new Map,a=[];for(let s of e)if(s.type===r.TEXT_MESSAGE_START){let e=s,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.contents.length===0?r.start=Rt(r.start,e):(r.start=zt(r.start,e),r.postStartMetadata=o(r.postStartMetadata,e.metadata))}else if(s.type===r.TEXT_MESSAGE_CONTENT){let e=s,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.contents.push(e),r.postStartMetadata=o(r.postStartMetadata,e.metadata)}else if(s.type===r.TEXT_MESSAGE_END){let e=s,r=e.messageId;n.has(r)||n.set(r,{contents:[],otherEvents:[]});let i=n.get(r);i.end=e,Ht(r,i,t),n.delete(r)}else if(s.type===r.TOOL_CALL_START){let e=s,t=e.toolCallId;i.has(t)||i.set(t,{args:[],otherEvents:[]});let n=i.get(t);n.args.length===0?n.start=Rt(n.start,e):(n.start=zt(n.start,e),n.postStartMetadata=o(n.postStartMetadata,e.metadata))}else if(s.type===r.TOOL_CALL_ARGS){let e=s,t=e.toolCallId;i.has(t)||i.set(t,{args:[],otherEvents:[]});let n=i.get(t);n.args.push(e),n.postStartMetadata=o(n.postStartMetadata,e.metadata)}else if(s.type===r.TOOL_CALL_END){let e=s,n=e.toolCallId;i.has(n)||i.set(n,{args:[],otherEvents:[]});let r=i.get(n);r.end=e,Ut(n,r,t),i.delete(n)}else if(s.type===r.RUN_STARTED)Gt(a,t),a=[],t.push(s);else if(s.type===r.RUN_FINISHED||s.type===r.RUN_ERROR)Gt(a,t),a=[],t.push(s);else if(s.type===r.STATE_SNAPSHOT||s.type===r.STATE_DELTA)a.push(s);else{let e=!1;for(let[,t]of n)if(t.start&&!t.end){t.otherEvents.push(s),e=!0;break}if(!e){for(let[,t]of i)if(t.start&&!t.end){t.otherEvents.push(s),e=!0;break}}e||t.push(s)}for(let[e,r]of n)Ht(e,r,t);for(let[e,n]of i)Ut(e,n,t);return Gt(a,t),t}function Ht(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 Ut(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 Wt=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)};function Gt(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=O(t.snapshot);else try{i=c.applyPatch(i,O(t.delta),!0,!1).newDocument}catch(e){let n=e instanceof Error?e.message:String(e);Wt(`[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=Bt(e),o={type:r.STATE_SNAPSHOT,snapshot:i,...a!==void 0&&{metadata:a}};t.push(o)}export{Ft as AbstractAgent,bt as BackwardCompatibility_0_0_39,Et as BackwardCompatibility_0_0_45,jt as BackwardCompatibility_0_0_57,Z as CompatibilityBoundary,N as DebugLogger,ht as FilterToolCallsMiddleware,Xe as FunctionMiddleware,Lt as HttpAgent,J as Middleware,mt as buildResumeArray,Vt as compactEvents,ke as convertToLegacyEvents,P as createDebugLogger,ye as defaultApplyEvents,q as enforceEvents,Ye as enforceOutgoingInput,ft as getRunOutcome,pt as isInterruptExpired,Ge as isRecognizedEvent,Te as parseProtoStream,Se as parseSSEStream,k as randomUUID,j as resolveAgentDebugConfig,M as resolveDebugLogger,be as runHttpRequest,O as structuredClone_,U as transformChunks,Ee as transformHttpEventStream,I 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.1`;let It=!1;const Lt=new WeakSet,Rt=(e,t)=>/^\d+\.\d+$/.test(e)?E(e,t)>0?`newer`:`not-newer`:`uninterpretable`,zt=e=>{let t=e.protocolVersion;if(!(t===void 0||t===i))switch(Rt(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 Bt=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})=>zt(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(i=e.result)}},...this.subscribers,n??{}];Lt.add(r),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})=>zt(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(Lt.has(e)&&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 Vt(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 Ht=class extends Bt{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(Vt(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 Ut(e,t){if(e===void 0)return t;let n=s(e.metadata,t.metadata);return n===void 0?t:{...t,metadata:n}}function Wt(e,t){let{metadata:n,...r}=t,i=e?.metadata;return i===void 0?r:{...r,metadata:i}}function Gt(e){let t;for(let n of e)t=s(t,n.metadata);return t}function Kt(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=Ut(r.start,e):(r.start=Wt(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,qt(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=Ut(n.start,e):(n.start=Wt(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,Jt(n,r,t),i.delete(n)}else if(o.type===r.RUN_STARTED)Xt(a,t),a=[],t.push(o);else if(o.type===r.RUN_FINISHED||o.type===r.RUN_ERROR)Xt(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)qt(e,r,t);for(let[e,n]of i)Jt(e,n,t);return Xt(a,t),t}function qt(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 Jt(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 Yt=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)};function Xt(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);Yt(`[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=Gt(e),o={type:r.STATE_SNAPSHOT,snapshot:i,...a!==void 0&&{metadata:a}};t.push(o)}export{O as ACTIVITY_HISTORY_METADATA,Bt 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,Ht as HttpAgent,J as Middleware,he as authoritativeActivityTypes,vt as buildResumeArray,Kt 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