@ag-ui/client 0.1.1-canary.beta.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/index.d.mts +284 -76
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +284 -76
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +24 -8
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`uuid`),l=require(`@ag-ui/core`),u=require(`fast-json-patch`);u=s(u);let d=require(`rxjs`),f=require(`rxjs/operators`),p=require(`untruncate-json`);p=s(p);let m=require(`@ag-ui/core/schemas`),h=require(`@ag-ui/proto`);h=s(h);let g=require(`zod/v4`),_=require(`compare-versions`);const v=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function y(){return(0,c.v4)()}function b(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&b(t);return e}const x=512*1024;function S(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 C(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&&!S(t,n,x),c=s?v(t):t,l=s?v(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(b(c),b(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=v(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=v(e.state),d=!0,n=!0),s&&n&&S(c,l,x)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(o&&e instanceof TypeError){if(a)throw e;console.error(`AG-UI: Subscriber attempted to mutate frozen inputs in-place. Return mutations via AgentStateMutation instead of mutating directly.`,e)}else a||console.error(`Subscriber error:`,e);continue}return{...u?{messages:Object.isFrozen(c)?v(c):c}:{},...d?{state:Object.isFrozen(l)?v(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function w(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 T(e){if(e instanceof E)return e;if(e===!0)return new E(w(!0))}var E=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 D(e){return e.enabled?new E(e):void 0}function ee(e,t,n){if(t){let r=e.find(e=>e.id===t);if(r?.role===`assistant`)return r;r&&console.warn(`TOOL_CALL_START: parentMessageId '${t}' matches a '${r.role}' message, not assistant — falling back to toolCallId`);let i={id:r?n:t,role:`assistant`,toolCalls:[]};return e.push(i),i}let r={id:n,role:`assistant`,toolCalls:[]};return e.push(r),r}const O=(e,t,n,r,i)=>{let a=T(i),o=v(n.messages),s=v(e.state),c={},m=e=>{e.messages!==void 0&&(o=e.messages,c.messages=e.messages),e.state!==void 0&&(s=e.state,c.state=e.state)},h=()=>{let e=v(c);return c={},e.messages!==void 0||e.state!==void 0?(0,d.of)(e):d.EMPTY};return t.pipe((0,f.concatMap)(async t=>{let i=await C(r,o,s,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(m(i),i.stopPropagation===!0?a?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):a?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:r.length}),i.stopPropagation===!0)return h();switch(t.type){case l.EventType.TEXT_MESSAGE_START:{let i=await C(r,o,s,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r}=t;if(!o.find(t=>t.id===e)){let t={id:e,role:n,content:``,...r!==void 0&&{name:r}};o.push(t),m({messages:o})}}return h()}case l.EventType.TEXT_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${i}'`),h();let l=await C(r,o,s,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof c.content==`string`?c.content:``}));return m(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,m({messages:o})),h()}case l.EventType.TEXT_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);return a?(m(await C(r,o,s,(r,i,o)=>r.onTextMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}))),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),h()):(console.warn(`TEXT_MESSAGE_END: No message found with ID '${i}'`),h())}case l.EventType.TOOL_CALL_START:{let i=await C(r,o,s,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r}=t,i=ee(o,r,e);i.toolCalls??=[],i.toolCalls.push({id:e,type:`function`,function:{name:n,arguments:``}}),m({messages:o})}return h()}case l.EventType.TOOL_CALL_ARGS:{let{toolCallId:i,delta:a}=t,c=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!c)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${i}'`),h();let l=c.toolCalls?.find(e=>e.id===i);if(!l)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${i}'`),h();let u=await C(r,o,s,(r,i,a)=>{let o=l.function.arguments,s=l.function.name,c={};try{c=(0,p.default)(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:c})});return m(u),u.stopPropagation!==!0&&(l.function.arguments+=a,m({messages:o})),h()}case l.EventType.TOOL_CALL_END:{let{toolCallId:i}=t,a=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!a)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${i}'`),h();let c=a.toolCalls?.find(e=>e.id===i);return c?(m(await C(r,o,s,(r,i,a)=>{let o=c.function.arguments,s=c.function.name,l={};try{l=JSON.parse(o)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallName:s,toolCallArgs:l})})),await Promise.all(r.map(t=>{t.onNewToolCall?.({toolCall:c,messages:o,state:s,agent:n,input:e})})),h()):(console.warn(`TOOL_CALL_END: No tool call found with ID '${i}'`),h())}case l.EventType.TOOL_CALL_RESULT:{let i=await C(r,o,s,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let{messageId:i,toolCallId:a,content:c,role:l}=t,u={id:i,toolCallId:a,role:l||`tool`,content:c},d=o.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===a));if(d===-1)o.push(u);else{let e=d+1;for(;e<o.length&&o[e].role===`tool`;)e++;o.splice(e,0,u)}await Promise.all(r.map(t=>{t.onNewMessage?.({message:u,messages:o,state:s,agent:n,input:e})})),m({messages:o})}return h()}case l.EventType.STATE_SNAPSHOT:{let i=await C(r,o,s,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let{snapshot:e}=t;s=e,m({state:s})}return h()}case l.EventType.STATE_DELTA:{let i=await C(r,o,s,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let{delta:e}=t;try{s=u.default.applyPatch(s,e,!0,!1).newDocument,m({state:s})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(s,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return h()}case l.EventType.MESSAGES_SNAPSHOT:{let i=await C(r,o,s,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let{messages:e}=t,n=new Map(e.map(e=>[e.id,e])),r=e.some(e=>e.role===`activity`),i=e.some(e=>e.role===`reasoning`),a=e=>e.role===`activity`&&!r||e.role===`reasoning`&&!i;o=o.filter(e=>a(e)||n.has(e.id)).map(e=>a(e)?e:n.get(e.id));let s=new Set(o.map(e=>e.id));for(let t of e)s.has(t.id)||o.push(t);m({messages:o})}return h()}case l.EventType.ACTIVITY_SNAPSHOT:{let i=t,a=o.findIndex(e=>e.id===i.messageId),c=a>=0?o[a]:void 0,l=c?.role===`activity`?c:void 0,u=i.replace??!0,d=await C(r,o,s,(t,r,a)=>t.onActivitySnapshotEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l,existingMessage:c}));if(m(d),d.stopPropagation!==!0){let t={id:i.messageId,role:`activity`,activityType:i.activityType,content:v(i.content)},c;a===-1?(o.push(t),c=t):l?u&&(o[a]={...l,activityType:i.activityType,content:v(i.content)}):u&&(o[a]=t,c=t),m({messages:o}),c&&await Promise.all(r.map(t=>t.onNewMessage?.({message:c,messages:o,state:s,agent:n,input:e})))}return h()}case l.EventType.ACTIVITY_DELTA:{let i=t,a=o.findIndex(e=>e.id===i.messageId);if(a===-1)return h();let c=o[a];if(c.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${i.messageId}' is not an activity message`),h();let l=c,d=await C(r,o,s,(t,r,a)=>t.onActivityDeltaEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l}));if(m(d),d.stopPropagation!==!0)try{let e=v(l.content??{}),t=u.default.applyPatch(e,i.patch??[],!0,!1).newDocument;o[a]={...l,content:v(t),activityType:i.activityType},m({messages:o})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${i.messageId}': ${t}`)}return h()}case l.EventType.RAW:return m(await C(r,o,s,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),h();case l.EventType.CUSTOM:return m(await C(r,o,s,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),h();case l.EventType.RUN_STARTED:{let i=await C(r,o,s,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let e=t;if(e.input?.messages){for(let t of e.input.messages)o.find(e=>e.id===t.id)||o.push(t);m({messages:o})}}return h()}case l.EventType.RUN_FINISHED:{let i=t,a=i.outcome?.type===`interrupt`?{event:i,outcome:`interrupt`,interrupts:i.outcome.interrupts}:{event:i,outcome:`success`,result:i.result},c=await C(r,o,s,(t,r,i)=>t.onRunFinishedEvent?.({...a,messages:r,state:i,agent:n,input:e}));return m(c),c.stopPropagation!==!0&&(n.pendingInterrupts=a.outcome===`interrupt`?[...a.interrupts]:[]),h()}case l.EventType.RUN_ERROR:return m(await C(r,o,s,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),h();case l.EventType.STEP_STARTED:return m(await C(r,o,s,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),h();case l.EventType.STEP_FINISHED:return m(await C(r,o,s,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),h();case l.EventType.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be tranformed before being applied`);case l.EventType.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be tranformed before being applied`);case l.EventType.THINKING_START:return h();case l.EventType.THINKING_END:return h();case l.EventType.THINKING_TEXT_MESSAGE_START:return h();case l.EventType.THINKING_TEXT_MESSAGE_CONTENT:return h();case l.EventType.THINKING_TEXT_MESSAGE_END:return h();case l.EventType.REASONING_START:return m(await C(r,o,s,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),h();case l.EventType.REASONING_MESSAGE_START:{let i=await C(r,o,s,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(i),i.stopPropagation!==!0){let{messageId:e}=t;if(!o.find(t=>t.id===e)){let t={id:e,role:`reasoning`,content:``};o.push(t),m({messages:o})}}return h()}case l.EventType.REASONING_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${i}'`),h();let l=await C(r,o,s,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof c.content==`string`?c.content:``}));return m(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,m({messages:o})),h()}case l.EventType.REASONING_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);return a?(m(await C(r,o,s,(r,i,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}))),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),h()):(console.warn(`REASONING_MESSAGE_END: No message found with ID '${i}'`),h())}case l.EventType.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case l.EventType.REASONING_END:return m(await C(r,o,s,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),h();case l.EventType.REASONING_ENCRYPTED_VALUE:{let{subtype:i,entityId:a,encryptedValue:l}=t,u=await C(r,o,s,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(m(u),u.stopPropagation!==!0){let e=!1;if(i===`tool-call`){for(let t of o)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===a);if(n){n.encryptedValue=l,e=!0;break}}}else{let t=o.find(e=>e.id===a);t?.role!==`activity`&&t&&(t.encryptedValue=l,e=!0)}e&&(c.messages=o)}return h()}}return t.type,h()}),(0,f.mergeAll)(),r.length>0?(0,f.defaultIfEmpty)({}):e=>e)},k=e=>t=>{let n=T(e),r=new Map,i=new Map,a=!1,o=!1,s=!1,c=new Map,u=!1,p=!1,m=!1,h=()=>{r.clear(),i.clear(),c.clear(),u=!1,p=!1,a=!1,o=!1,m=!0};return t.pipe((0,f.mergeMap)(e=>{let t=e.type;if(n?.event(`VERIFY`,`Event:`,e,{type:e.type}),o)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(a&&t!==l.EventType.RUN_ERROR&&t!==l.EventType.RUN_STARTED)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!s){if(s=!0,t!==l.EventType.RUN_STARTED&&t!==l.EventType.RUN_ERROR)return(0,d.throwError)(()=>new l.AGUIError(`First event must be 'RUN_STARTED'`))}else if(t===l.EventType.RUN_STARTED){if(m&&!a)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));a&&h()}switch(t){case l.EventType.TEXT_MESSAGE_START:{let t=e.messageId;return r.has(t)?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${t}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(r.set(t,!0),(0,d.of)(e))}case l.EventType.TEXT_MESSAGE_CONTENT:{let t=e.messageId;return r.has(t)?(0,d.of)(e):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${t}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case l.EventType.TEXT_MESSAGE_END:{let t=e.messageId;return r.has(t)?(r.delete(t),(0,d.of)(e)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${t}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case l.EventType.TOOL_CALL_START:{let t=e.toolCallId;return i.has(t)?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${t}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(i.set(t,!0),(0,d.of)(e))}case l.EventType.TOOL_CALL_ARGS:{let t=e.toolCallId;return i.has(t)?(0,d.of)(e):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${t}'. Start a tool call with 'TOOL_CALL_START' first.`))}case l.EventType.TOOL_CALL_END:{let t=e.toolCallId;return i.has(t)?(i.delete(t),(0,d.of)(e)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${t}'. A 'TOOL_CALL_START' event must be sent first.`))}case l.EventType.STEP_STARTED:{let t=e.stepName;return c.has(t)?(0,d.throwError)(()=>new l.AGUIError(`Step "${t}" is already active for 'STEP_STARTED'`)):(c.set(t,!0),(0,d.of)(e))}case l.EventType.STEP_FINISHED:{let t=e.stepName;return c.has(t)?(c.delete(t),(0,d.of)(e)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}case l.EventType.RUN_STARTED:return m=!0,(0,d.of)(e);case l.EventType.RUN_FINISHED:if(c.size>0){let e=Array.from(c.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while steps are still active: ${e}`))}if(r.size>0){let e=Array.from(r.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(i.size>0){let e=Array.from(i.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}return a=!0,(0,d.of)(e);case l.EventType.RUN_ERROR:return o=!0,(0,d.of)(e);case l.EventType.CUSTOM:return(0,d.of)(e);case l.EventType.THINKING_TEXT_MESSAGE_START:return u?p?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.`)):(p=!0,(0,d.of)(e)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first.`));case l.EventType.THINKING_TEXT_MESSAGE_CONTENT:return p?(0,d.of)(e):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first.`));case l.EventType.THINKING_TEXT_MESSAGE_END:return p?(p=!1,(0,d.of)(e)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first.`));case l.EventType.THINKING_START:return u?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.`)):(u=!0,(0,d.of)(e));case l.EventType.THINKING_END:return u?(u=!1,(0,d.of)(e)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first.`));default:return(0,d.of)(e)}}))};let A=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({});const j=e=>(0,d.defer)(()=>(0,d.from)(e())).pipe((0,f.switchMap)(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return(0,d.from)(e.text()).pipe((0,f.mergeMap)(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,(0,d.throwError)(()=>i)}))}let t={type:A.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new d.Observable(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:A.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):(0,d.throwError)(()=>Error(`Failed to getReader() from response`))})),M=(e,t)=>{let n=T(t),r=new d.Subject,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==A.HEADERS&&e.type===A.DATA&&e.data){let t=i.decode(e.data,{stream:!0});a+=t;let n=a.split(/\n\n/);a=n.pop()||``;for(let e of n)o(e)}},error:e=>r.error(e),complete:()=>{a&&(a+=i.decode(),o(a)),r.complete()}});function o(e){let t=e.split(`
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`uuid`),l=require(`@ag-ui/core`),u=require(`fast-json-patch`);u=s(u);let d=require(`rxjs`),f=require(`rxjs/operators`),p=require(`untruncate-json`);p=s(p);let m=require(`@ag-ui/proto`);m=s(m);let h=require(`compare-versions`),g=require(`@ag-ui/core/schemas`),_=require(`zod/v4`);const v=`@ag-ui/client`;function y(e){if(!e.metadata||!Object.prototype.hasOwnProperty.call(e.metadata,v))return;let t=e.metadata?.[v];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 ee(e,t){let n=e.metadata?.[v],r=y(e),i=r===null||r===void 0&&e.messages.some(e=>e.role===`activity`);return{...e,metadata:{...e.metadata,[v]:{...n&&typeof n==`object`&&!Array.isArray(n)?n:{},authoritativeActivityTypes:i?null:[...new Set([...r??[],...t])]}}}}const b=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function x(){return(0,c.v4)()}function te(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 S(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&S(t);return e}const ne=512*1024;function re(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 C(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&&!re(t,n,ne),c=s?b(t):t,l=s?b(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(S(c),S(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=b(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=b(e.state),d=!0,n=!0),s&&n&&re(c,l,ne)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(a&&e instanceof TypeError)throw e;s&&o&&te(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)?b(c):c}:{},...d?{state:Object.isFrozen(l)?b(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function w(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 T(e){if(e instanceof E)return e;if(e===!0)return new E(w(!0))}var E=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 D(e){return e.enabled?new E(e):void 0}function ie(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 O(e,t){return!e||t.metadata===void 0?!1:(e.metadata=(0,l.mergeMetadata)(e.metadata,b(t.metadata)),!0)}const k=(e,t,n,r,i)=>{let a=T(i),o=b(n.messages),s=b(e.state),c={},m=[],h=new Set,g=e=>{let t=e.outcome?.type===`success`?e.outcome.pendingToolCallIds:void 0;return t!==void 0&&t.length>0?[...t]:m.filter(e=>!h.has(e))},_=e=>{e.messages!==void 0&&(o=e.messages,c.messages=e.messages),e.state!==void 0&&(s=e.state,c.state=e.state)},v=()=>{let e=b(c);return c={},e.messages!==void 0||e.state!==void 0?(0,d.of)(e):d.EMPTY};return t.pipe((0,f.concatMap)(async t=>{let i=await C(r,o,s,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(_(i),i.stopPropagation===!0?a?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):a?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:r.length}),i.stopPropagation===!0)return v();switch(t.type){case l.EventType.TEXT_MESSAGE_START:{let i=await C(r,o,s,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),i.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r,subagentRunId:i}=t,a=o.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`),v();let s=a;if(!s){let t={id:e,role:n,content:``,...r!==void 0&&{name:r},...i!=null&&{subagentRunId:i}};o.push(t),s=t}let c=O(s,t);(!a||c)&&_({messages:o})}return v()}case l.EventType.TEXT_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${i}'`),v();if(c.role===`activity`)return console.warn(`TEXT_MESSAGE_CONTENT: Message '${i}' is an activity message — message ids must be unique across activity and text messages`),v();let l=await C(r,o,s,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof c.content==`string`?c.content:``}));return _(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,O(c,t),_({messages:o})),v()}case l.EventType.TEXT_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);if(!a)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${i}'`),v();if(a.role===`activity`)return console.warn(`TEXT_MESSAGE_END: Message '${i}' is an activity message — message ids must be unique across activity and text messages`),v();let c=await C(r,o,s,(r,i,o)=>r.onTextMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}));return _(c),c.stopPropagation!==!0&&O(a,t)&&_({messages:o}),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),v()}case l.EventType.TOOL_CALL_START:{let i=await C(r,o,s,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),i.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r,subagentRunId:i}=t;m.includes(e)||m.push(e);let a=o.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),(O(a,t)||r)&&_({messages:o}),v()}let s=new Set(o.map(e=>e.id)),c=ie(o,r,e);!s.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),O(l,t),_({messages:o})}return v()}case l.EventType.TOOL_CALL_ARGS:{let{toolCallId:i,delta:a}=t,c=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!c)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${i}'`),v();let l=c.toolCalls?.find(e=>e.id===i);if(!l)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${i}'`),v();let u=await C(r,o,s,(r,i,a)=>{let o=l.function.arguments,s=l.function.name,c={};try{c=(0,p.default)(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:c})});return _(u),u.stopPropagation!==!0&&(l.function.arguments+=a,O(l,t),_({messages:o})),v()}case l.EventType.TOOL_CALL_END:{let{toolCallId:i}=t,a=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!a)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${i}'`),v();let c=a.toolCalls?.find(e=>e.id===i);if(!c)return console.warn(`TOOL_CALL_END: No tool call found with ID '${i}'`),v();let l=await C(r,o,s,(r,i,a)=>{let o=c.function.arguments,s=c.function.name,l={};try{l=JSON.parse(o)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallName:s,toolCallArgs:l})});return _(l),l.stopPropagation!==!0&&O(c,t)&&_({messages:o}),await Promise.all(r.map(t=>{t.onNewToolCall?.({toolCall:c,messages:o,state:s,agent:n,input:e})})),v()}case l.EventType.TOOL_CALL_RESULT:{let i=await C(r,o,s,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),i.stopPropagation!==!0){let{messageId:i,toolCallId:a,content:c,role:l,subagentRunId:u}=t;h.add(a);let d={id:i,toolCallId:a,role:l||`tool`,content:c,...u!=null&&{subagentRunId:u}};O(d,t);let f=o.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===a));if(f===-1)o.push(d);else{let e=f+1;for(;e<o.length&&o[e].role===`tool`;)e++;o.splice(e,0,d)}await Promise.all(r.map(t=>{t.onNewMessage?.({message:d,messages:o,state:s,agent:n,input:e})})),_({messages:o})}return v()}case l.EventType.STATE_SNAPSHOT:{let i=await C(r,o,s,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),i.stopPropagation!==!0){let{snapshot:e}=t;s=e,_({state:s})}return v()}case l.EventType.STATE_DELTA:{let i=await C(r,o,s,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),i.stopPropagation!==!0){let{delta:e}=t;try{s=u.default.applyPatch(s,e,!0,!1).newDocument,_({state:s})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(s,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return v()}case l.EventType.MESSAGES_SNAPSHOT:{let i=await C(r,o,s,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),i.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=y(t),a=n.some(e=>e.role===`activity`),s=n.some(e=>e.role===`reasoning`),c=e=>e.role===`activity`&&(i?!i.includes(e.activityType):i!==null&&!a)||e.role===`reasoning`&&!s;o=o.filter(e=>r.has(e.id)||c(e)).map(e=>r.get(e.id)??e);let l=new Set(o.map(e=>e.id));for(let e of n)l.has(e.id)||o.push(e);_({messages:o})}return v()}case l.EventType.ACTIVITY_SNAPSHOT:{let i=t,a=o.findIndex(e=>e.id===i.messageId),c=a>=0?o[a]:void 0,l=c?.role===`activity`?c:void 0,u=i.replace??!0,d=await C(r,o,s,(t,r,a)=>t.onActivitySnapshotEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l,existingMessage:c}));if(_(d),d.stopPropagation!==!0){let t={id:i.messageId,role:`activity`,activityType:i.activityType,content:b(i.content),...i.subagentRunId!=null&&{subagentRunId:i.subagentRunId}},c,d;a===-1?(o.push(t),c=t,d=t):l?(u&&(o[a]={...l,activityType:i.activityType,content:b(i.content),subagentRunId:i.subagentRunId},i.subagentRunId??delete o[a].subagentRunId),d=o[a]):u&&(o[a]=t,c=t,d=t),O(d,i),_({messages:o}),c&&await Promise.all(r.map(t=>t.onNewMessage?.({message:c,messages:o,state:s,agent:n,input:e})))}return v()}case l.EventType.ACTIVITY_DELTA:{let i=t,a=o.findIndex(e=>e.id===i.messageId);if(a===-1)return v();let c=o[a];if(c.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${i.messageId}' is not an activity message`),v();let l=c,d=await C(r,o,s,(t,r,a)=>t.onActivityDeltaEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l}));if(_(d),d.stopPropagation!==!0)try{O(l,i)&&_({messages:o});let e=b(l.content??{}),t=u.default.applyPatch(e,i.patch??[],!0,!1).newDocument;o[a]={...l,content:b(t),activityType:i.activityType},_({messages:o})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${i.messageId}': ${t}`)}return v()}case l.EventType.RAW:return _(await C(r,o,s,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.CUSTOM:return _(await C(r,o,s,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.RUN_STARTED:{let i=await C(r,o,s,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),m=[],h=new Set,i.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}o.find(t=>t.id===e.id)||o.push(e)}_({messages:o})}}return v()}case l.EventType.RUN_FINISHED:{let i=t,a=i.outcome?.type===`interrupt`?{event:i,outcome:`interrupt`,interrupts:i.outcome.interrupts}:i.outcome?.type===`cancelled`?{event:i,outcome:`cancelled`}:{event:i,outcome:`success`,result:i.result,pendingToolCallIds:g(i)},c=await C(r,o,s,(t,r,i)=>t.onRunFinishedEvent?.({...a,messages:r,state:i,agent:n,input:e}));return _(c),c.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}):[]),v()}case l.EventType.RUN_ERROR:return _(await C(r,o,s,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.STEP_STARTED:return _(await C(r,o,s,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.STEP_FINISHED:return _(await C(r,o,s,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be transformed before being applied`);case l.EventType.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be transformed before being applied`);case l.EventType.REASONING_START:return _(await C(r,o,s,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.REASONING_MESSAGE_START:{let i=await C(r,o,s,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(i),i.stopPropagation!==!0){let{messageId:e,subagentRunId:n}=t,r=o.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`),v();let i=r;if(!i){let t={id:e,role:`reasoning`,content:``,...n!=null&&{subagentRunId:n}};o.push(t),i=t}let a=O(i,t);(!r||a)&&_({messages:o})}return v()}case l.EventType.REASONING_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${i}'`),v();if(c.role===`activity`)return console.warn(`REASONING_MESSAGE_CONTENT: Message '${i}' is an activity message — message ids must be unique across activity and reasoning messages`),v();let l=await C(r,o,s,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof c.content==`string`?c.content:``}));return _(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,O(c,t),_({messages:o})),v()}case l.EventType.REASONING_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);if(!a)return console.warn(`REASONING_MESSAGE_END: No message found with ID '${i}'`),v();if(a.role===`activity`)return console.warn(`REASONING_MESSAGE_END: Message '${i}' is an activity message — message ids must be unique across activity and reasoning messages`),v();let c=await C(r,o,s,(r,i,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}));return _(c),c.stopPropagation!==!0&&O(a,t)&&_({messages:o}),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),v()}case l.EventType.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case l.EventType.REASONING_END:return _(await C(r,o,s,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.REASONING_ENCRYPTED_VALUE:{let{subtype:i,entityId:a,encryptedValue:l}=t,u=await C(r,o,s,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(_(u),u.stopPropagation!==!0){let e=!1;if(i===`tool-call`){for(let t of o)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===a);if(n){n.encryptedValue=l,e=!0;break}}}else{let t=o.find(e=>e.id===a);t?.role!==`activity`&&t&&(t.encryptedValue=l,e=!0)}e&&(c.messages=o)}return v()}case l.EventType.SUBAGENT_STARTED:return _(await C(r,o,s,(r,i,a)=>r.onSubagentStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.SUBAGENT_FINISHED:return _(await C(r,o,s,(r,i,a)=>r.onSubagentFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v();case l.EventType.SUBAGENT_ERROR:return _(await C(r,o,s,(r,i,a)=>r.onSubagentErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),v()}return t.type,v()}),(0,f.mergeAll)(),r.length>0?(0,f.defaultIfEmpty)({}):e=>e)},A=e=>t=>{let n=T(e),r=new Set,i=new Set,a=new Set,o=new Set,s={message:new Map,toolCall:new Map,activity:new Map,reasoning:new Map},c=!1,u=!1,p=!1,m=new Map,h=e=>{let t=m.get(e);return t||(t=new Map,m.set(e,t)),t},g=()=>{for(let e of m.values())if(e.size>0)return!0;return!1},_=new Map,v=new Set,y=!1,ee=()=>{r.clear(),i.clear(),a.clear(),o.clear(),s.message.clear(),s.toolCall.clear(),s.activity.clear(),s.reasoning.clear(),m.clear(),_.clear(),v.clear(),c=!1,u=!1,y=!0},b=(e,t)=>{let n=e??[];if(Array.isArray(n))for(let e of n){if(!e||typeof e.id!=`string`)continue;if(e.subagentRunId===null)return new l.AGUIError(`Cannot send a message (id '${e.id}') with 'subagentRunId: null'. The field is optional — omit it entirely.`);let n=e.role===`reasoning`?s.reasoning:e.role===`activity`?s.activity:s.message;(t||!n.has(e.id))&&n.set(e.id,{subagentRunId:e.subagentRunId});for(let n of e.toolCalls??[])n&&typeof n.id==`string`&&(t||!s.toolCall.has(n.id))&&s.toolCall.set(n.id,{subagentRunId:e.subagentRunId??void 0})}},x=(e,t,n,r,i)=>{if(t!==void 0&&n&&n.subagentRunId!==t)return new l.AGUIError(`Cannot send '${e}': subagentRunId '${t}' does not match the ${r} '${i}' opener's subagent '${n.subagentRunId??`(the parent agent)`}'.`)};return t.pipe((0,f.mergeMap)(e=>{let t=e.type;if(n?.event(`VERIFY`,`Event:`,e,{type:e.type}),u&&t!==l.EventType.RUN_STARTED)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(c&&t!==l.EventType.RUN_ERROR&&t!==l.EventType.RUN_STARTED)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!p){if(p=!0,t!==l.EventType.RUN_STARTED&&t!==l.EventType.RUN_ERROR)return(0,d.throwError)(()=>new l.AGUIError(`First event must be 'RUN_STARTED'`))}else if(t===l.EventType.RUN_STARTED){if(y&&!c&&!u)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));(c||u)&&ee()}if(e.subagentRunId===null)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send '${t}' with 'subagentRunId: null'. The field is optional — omit it entirely.`));if(t===l.EventType.SUBAGENT_STARTED||t===l.EventType.SUBAGENT_FINISHED||t===l.EventType.SUBAGENT_ERROR){let n=t===l.EventType.SUBAGENT_STARTED?[`description`,`parentSubagentRunId`,`parentToolCallId`,`parentMessageId`]:t===l.EventType.SUBAGENT_FINISHED?[`outcome`]:[`code`];for(let r of n)if(e[r]===null)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send '${t}' with '${r}: null'. The field is optional — omit it entirely.`));let r=e.outcome;if(r!=null&&r.type!==`success`&&r.type!==`suspended`)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send '${t}' with outcome type '${String(r.type)}'. The outcome is either { type: "success" } or { type: "suspended" }.`));if(r&&r.interruptIds===null)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send '${t}' with 'outcome.interruptIds: null'. The field is optional — omit it entirely.`));if(r&&Array.isArray(r.interruptIds)&&r.interruptIds.some(e=>typeof e!=`string`))return(0,d.throwError)(()=>new l.AGUIError(`Cannot send '${t}' with a non-string entry in 'outcome.interruptIds'. Interrupt ids are strings.`))}if(t===l.EventType.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(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' with an interrupt (id '${e.id}') carrying 'subagentRunId: null'. The field is optional — omit it entirely.`))}}switch(t){case l.EventType.TEXT_MESSAGE_START:{let n=e.messageId;if(r.has(n))return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${n}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`));let i=s.message.get(n);if(i){let r=x(t,e.subagentRunId,i,`message`,n);if(r)return(0,d.throwError)(()=>r)}return r.add(n),i||s.message.set(n,{subagentRunId:e.subagentRunId}),(0,d.of)(e)}case l.EventType.TEXT_MESSAGE_CONTENT:{let n=e.messageId;if(!r.has(n))return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${n}'. Start a text message with 'TEXT_MESSAGE_START' first.`));let i=x(t,e.subagentRunId,s.message.get(n),`message`,n);return i?(0,d.throwError)(()=>i):(0,d.of)(e)}case l.EventType.TEXT_MESSAGE_END:{let n=e.messageId;if(!r.has(n))return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${n}'. A 'TEXT_MESSAGE_START' event must be sent first.`));let i=x(t,e.subagentRunId,s.message.get(n),`message`,n);return i?(0,d.throwError)(()=>i):(r.delete(n),(0,d.of)(e))}case l.EventType.TOOL_CALL_START:{let n=e.toolCallId;if(i.has(n))return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${n}' is already in progress. Complete it with 'TOOL_CALL_END' first.`));let r=e.parentMessageId,a=e.subagentRunId,o;if(r!==void 0){let e=s.message.get(r);if(e){if(a!==void 0&&a!==e.subagentRunId)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_START': subagentRunId '${a}' does not match its parent message '${r}' owner '${e.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`));o=e}}let c=s.toolCall.get(n);if(c){let e=x(t,a,c,`tool call`,n);if(e)return(0,d.throwError)(()=>e);if(a===void 0&&o&&o.subagentRunId!==c.subagentRunId)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_START': tool call '${n}' is owned by '${c.subagentRunId??`(the parent agent)`}' but its parent message '${r}' is owned by '${o.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`))}return i.add(n),c||s.toolCall.set(n,a===void 0?o??{subagentRunId:void 0}:{subagentRunId:a}),(0,d.of)(e)}case l.EventType.TOOL_CALL_ARGS:{let n=e.toolCallId;if(!i.has(n))return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${n}'. Start a tool call with 'TOOL_CALL_START' first.`));let r=x(t,e.subagentRunId,s.toolCall.get(n),`tool call`,n);return r?(0,d.throwError)(()=>r):(0,d.of)(e)}case l.EventType.TOOL_CALL_END:{let n=e.toolCallId;if(!i.has(n))return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${n}'. A 'TOOL_CALL_START' event must be sent first.`));let r=x(t,e.subagentRunId,s.toolCall.get(n),`tool call`,n);return r?(0,d.throwError)(()=>r):(i.delete(n),(0,d.of)(e))}case l.EventType.STEP_STARTED:{let t=e.stepName,n=e.subagentRunId;return h(n).has(t)?(0,d.throwError)(()=>new l.AGUIError(`Step "${t}" is already active for 'STEP_STARTED'${n===void 0?``:` in subagent '${n}'`}`)):(h(n).set(t,!0),(0,d.of)(e))}case l.EventType.STEP_FINISHED:{let t=e.stepName,n=e.subagentRunId;if(!h(n).has(t)){let e,r=!1;for(let[i,a]of m)if(i!==n&&a.has(t)){e=i,r=!0;break}return r?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'STEP_FINISHED' for step "${t}" attributed to ${n===void 0?`the parent agent`:`subagent '${n}'`}: that step is open under ${e===void 0?`the parent agent`:`subagent '${e}'`}. A step must be finished by whoever started it.`)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}return h(n).delete(t),(0,d.of)(e)}case l.EventType.ACTIVITY_SNAPSHOT:{let t=e.messageId;return(!s.activity.has(t)||e.replace!==!1)&&s.activity.set(t,{subagentRunId:e.subagentRunId}),(0,d.of)(e)}case l.EventType.TOOL_CALL_RESULT:{let t=e.messageId;return typeof t==`string`&&s.message.set(t,{subagentRunId:e.subagentRunId}),(0,d.of)(e)}case l.EventType.REASONING_START:case l.EventType.REASONING_MESSAGE_START:{let n=e.messageId,r=t===l.EventType.REASONING_START,i=r?a:o;if(i.has(n))return(0,d.throwError)(()=>new l.AGUIError(r?`Cannot send 'REASONING_START' event: A reasoning span with ID '${n}' is already in progress. Complete it with 'REASONING_END' first.`:`Cannot send 'REASONING_MESSAGE_START' event: A reasoning message with ID '${n}' is already in progress. Complete it with 'REASONING_MESSAGE_END' first.`));let c=s.reasoning.get(n);if(c){let r=x(t,e.subagentRunId,c,`reasoning message`,n);if(r)return(0,d.throwError)(()=>r)}return i.add(n),c||s.reasoning.set(n,{subagentRunId:e.subagentRunId}),(0,d.of)(e)}case l.EventType.REASONING_MESSAGE_CONTENT:case l.EventType.REASONING_MESSAGE_END:case l.EventType.REASONING_END:{let n=e.messageId,r=t===l.EventType.REASONING_END,i=r?a:o;if(!i.has(n))return(0,d.throwError)(()=>new l.AGUIError(r?`Cannot send 'REASONING_END' event: No active reasoning span found with ID '${n}'. A 'REASONING_START' event must be sent first.`:`Cannot send '${t}' event: No active reasoning message found with ID '${n}'. Start a reasoning message with 'REASONING_MESSAGE_START' first.`));let c=x(t,e.subagentRunId,s.reasoning.get(n),`reasoning message`,n);return c?(0,d.throwError)(()=>c):((t===l.EventType.REASONING_END||t===l.EventType.REASONING_MESSAGE_END)&&i.delete(n),(0,d.of)(e))}case l.EventType.REASONING_ENCRYPTED_VALUE:{let n=e.entityId,r=e.subtype,i=r===`tool-call`?s.toolCall.get(n):r===`message`?s.message.get(n)??s.reasoning.get(n):s.reasoning.get(n),a=r===`tool-call`?`tool call`:r===`message`?`message`:`reasoning message`,o=x(t,e.subagentRunId,i,a,n);return o?(0,d.throwError)(()=>o):(0,d.of)(e)}case l.EventType.ACTIVITY_DELTA:{let n=e.messageId,r=x(t,e.subagentRunId,s.activity.get(n),`activity`,n);return r?(0,d.throwError)(()=>r):(0,d.of)(e)}case l.EventType.SUBAGENT_STARTED:{if(typeof e.subagentRunId!=`string`)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'SUBAGENT_STARTED' without a 'subagentRunId'.`));if(typeof e.name!=`string`)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'SUBAGENT_STARTED' without a 'name'.`));let t=e.subagentRunId,n=e.parentSubagentRunId;return _.has(t)?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' is already active. Finish it with 'SUBAGENT_FINISHED' first.`)):v.has(t)?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' has already finished in this run. Subagent IDs are per-invocation and cannot be reused.`)):n!==void 0&&!_.has(n)&&!v.has(n)?(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'SUBAGENT_STARTED': parentSubagentRunId '${n}' has not been started in this run.`)):(_.set(t,!0),(0,d.of)(e))}case l.EventType.SUBAGENT_FINISHED:case l.EventType.SUBAGENT_ERROR:{if(typeof e.subagentRunId!=`string`)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send '${t}' without a 'subagentRunId'.`));if(t===l.EventType.SUBAGENT_ERROR&&typeof e.message!=`string`)return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'SUBAGENT_ERROR' without a 'message'.`));let n=e.subagentRunId;return _.has(n)?(_.delete(n),v.add(n),(0,d.of)(e)):(0,d.throwError)(()=>new l.AGUIError(`Cannot send '${t}': no active subagent found with ID '${n}'. A 'SUBAGENT_STARTED' event must be sent first.`))}case l.EventType.MESSAGES_SNAPSHOT:{let t=b(e.messages,!0);if(t)return(0,d.throwError)(()=>t)}return(0,d.of)(e);case l.EventType.RUN_STARTED:y=!0;{let t=b((e.input??{}).messages,!1);if(t)return(0,d.throwError)(()=>t)}return(0,d.of)(e);case l.EventType.RUN_FINISHED:if(g()){let e=[];for(let[t,n]of m)for(let r of n.keys())e.push(t===void 0?r:`${r} (subagent '${t}')`);let t=e.join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while steps are still active: ${t}`))}if(r.size>0){let e=Array.from(r.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(o.size>0){let e=Array.from(o.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while reasoning messages are still active: ${e}`))}if(a.size>0){let e=Array.from(a.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while reasoning spans are still active: ${e}`))}if(i.size>0){let e=Array.from(i.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}if(_.size>0){let e=Array.from(_.keys()).join(`, `);return(0,d.throwError)(()=>new l.AGUIError(`Cannot send 'RUN_FINISHED' while subagents are still active: ${e}`))}return c=!0,(0,d.of)(e);case l.EventType.RUN_ERROR:return u=!0,(0,d.of)(e);case l.EventType.CUSTOM:return(0,d.of)(e);default:return(0,d.of)(e)}}))};let j=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({});const ae=e=>(0,d.defer)(()=>(0,d.from)(e())).pipe((0,f.switchMap)(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return(0,d.from)(e.text()).pipe((0,f.mergeMap)(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,(0,d.throwError)(()=>i)}))}let t={type:j.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new d.Observable(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:j.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):(0,d.throwError)(()=>Error(`Failed to getReader() from response`))})),oe=10*1024*1024,se=(e,t)=>{let n=T(t),r=new d.Subject,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==j.HEADERS&&e.type===j.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>oe){r.error(Error(`SSE buffer size exceeded maximum limit of ${oe/(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
|
|
4
|
-
`)},I=(e,t,n)=>r=>{let i={},a=!0,o=!0,s=``,c=null,d=null,m=[],h={},g=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,i=e)};return r.pipe((0,f.mergeMap)(r=>{switch(r.type){case l.EventType.TEXT_MESSAGE_START:{let e=r;return[{type:F.enum.TextMessageStart,messageId:e.messageId,role:e.role}]}case l.EventType.TEXT_MESSAGE_CONTENT:{let e=r;return[{type:F.enum.TextMessageContent,messageId:e.messageId,content:e.delta}]}case l.EventType.TEXT_MESSAGE_END:{let e=r;return[{type:F.enum.TextMessageEnd,messageId:e.messageId}]}case l.EventType.TOOL_CALL_START:{let e=r;return m.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),o=!0,h[e.toolCallId]=e.toolCallName,[{type:F.enum.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case l.EventType.TOOL_CALL_ARGS:{let c=r,l=m.find(e=>e.id===c.toolCallId);if(!l)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];l.function.arguments+=c.delta;let u=!1;if(d){let e=d.find(e=>e.tool==l.function.name);if(e)try{let t=JSON.parse((0,p.default)(l.function.arguments));e.tool_argument&&e.tool_argument in t?(g({...i,[e.state_key]:t[e.tool_argument]}),u=!0):e.tool_argument||(g({...i,[e.state_key]:t}),u=!0)}catch{}}return[{type:F.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...u?[{type:F.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]:[]]}case l.EventType.TOOL_CALL_END:{let e=r;return[{type:F.enum.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case l.EventType.TOOL_CALL_RESULT:{let e=r;return[{type:F.enum.ActionExecutionResult,actionExecutionId:e.toolCallId,result:e.content,actionName:h[e.toolCallId]||`unknown`}]}case l.EventType.RAW:return[];case l.EventType.CUSTOM:{let e=r;switch(e.name){case`Exit`:a=!1;break;case`PredictState`:d=e.value;break}return[{type:F.enum.MetaEvent,name:e.name,value:e.value}]}case l.EventType.STATE_SNAPSHOT:return g(r.snapshot),[{type:F.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}];case l.EventType.STATE_DELTA:{let c=r,l=u.default.applyPatch(i,c.delta,!0,!1);return l?(g(l.newDocument),[{type:F.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]):[]}case l.EventType.MESSAGES_SNAPSHOT:return c=r.messages,[{type:F.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:c}:{}}),active:!0}];case l.EventType.RUN_STARTED:return[];case l.EventType.RUN_FINISHED:return c&&(i.messages=c),Object.keys(i).length===0?[]:[{type:F.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:pe(c)}:{}}),active:!1}];case l.EventType.RUN_ERROR:{let e=r;return[{type:F.enum.RunError,message:e.message,code:e.code}]}case l.EventType.STEP_STARTED:return s=r.stepName,m=[],d=null,[{type:F.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!0}];case l.EventType.STEP_FINISHED:return m=[],d=null,[{type:F.enum.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!1}];default:return[]}}))};function pe(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=fe(n.content);if(e){let r={id:n.id,role:n.role,content:e};t.push(r)}if(n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0)for(let e of n.toolCalls){let r={id:e.id,name:e.function.name,arguments:JSON.parse(e.function.arguments),parentMessageId:n.id};t.push(r)}}else if(n.role===`tool`){let r=`unknown`;for(let t of e)if(t.role===`assistant`&&t.toolCalls?.length){for(let e of t.toolCalls)if(e.id===n.toolCallId){r=e.function.name;break}}let i={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}const L=e=>t=>{let n=T(e),r,i,a,o,s=()=>{if(!r||o!==`text`)throw Error(`No text message to close`);let e={type:l.EventType.TEXT_MESSAGE_END,messageId:r.messageId};return o=void 0,r=void 0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_END`,e,{messageId:e.messageId}),e},c=()=>{if(!i||o!==`tool`)throw Error(`No tool call to close`);let e={type:l.EventType.TOOL_CALL_END,toolCallId:i.toolCallId};return o=void 0,i=void 0,n?.event(`TRANSFORM`,`TOOL_CALL_END`,e,{toolCallId:e.toolCallId}),e},u=()=>{if(!a||o!==`reasoning`)throw Error(`No reasoning message to close`);let e={type:l.EventType.REASONING_MESSAGE_END,messageId:a.messageId};return o=void 0,a=void 0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_END`,e,{messageId:e.messageId}),e},f=()=>o===`text`?[s()]:o===`tool`?[c()]:o===`reasoning`?[u()]:[];return t.pipe((0,d.mergeMap)(e=>{switch(e.type){case l.EventType.TEXT_MESSAGE_START:case l.EventType.TEXT_MESSAGE_CONTENT:case l.EventType.TEXT_MESSAGE_END:case l.EventType.TOOL_CALL_START:case l.EventType.TOOL_CALL_ARGS:case l.EventType.TOOL_CALL_END:case l.EventType.TOOL_CALL_RESULT:case l.EventType.STATE_SNAPSHOT:case l.EventType.STATE_DELTA:case l.EventType.MESSAGES_SNAPSHOT:case l.EventType.CUSTOM:case l.EventType.RUN_STARTED:case l.EventType.RUN_FINISHED:case l.EventType.RUN_ERROR:case l.EventType.STEP_STARTED:case l.EventType.STEP_FINISHED:case l.EventType.THINKING_START:case l.EventType.THINKING_END:case l.EventType.THINKING_TEXT_MESSAGE_START:case l.EventType.THINKING_TEXT_MESSAGE_CONTENT:case l.EventType.THINKING_TEXT_MESSAGE_END:case l.EventType.REASONING_START:case l.EventType.REASONING_MESSAGE_START:case l.EventType.REASONING_MESSAGE_CONTENT:case l.EventType.REASONING_MESSAGE_END:case l.EventType.REASONING_END:return[...f(),e];case l.EventType.RAW:case l.EventType.ACTIVITY_SNAPSHOT:case l.EventType.ACTIVITY_DELTA:case l.EventType.REASONING_ENCRYPTED_VALUE:return[e];case l.EventType.TEXT_MESSAGE_CHUNK:let t=e,s=[];if((o!==`text`||t.messageId!==void 0&&t.messageId!==r?.messageId)&&s.push(...f()),o!==`text`){if(t.messageId===void 0)throw Error(`First TEXT_MESSAGE_CHUNK must have a messageId`);r={messageId:t.messageId,name:t.name},o=`text`;let e={type:l.EventType.TEXT_MESSAGE_START,messageId:t.messageId,role:t.role||`assistant`,...t.name!==void 0&&{name:t.name}};s.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0){let e={type:l.EventType.TEXT_MESSAGE_CONTENT,messageId:r.messageId,delta:t.delta};s.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,e,{messageId:r.messageId})}return s;case l.EventType.TOOL_CALL_CHUNK:let c=e,u=[];if((o!==`tool`||c.toolCallId!==void 0&&c.toolCallId!==i?.toolCallId)&&u.push(...f()),o!==`tool`){if(c.toolCallId===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallId`);if(c.toolCallName===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallName`);i={toolCallId:c.toolCallId,toolCallName:c.toolCallName,parentMessageId:c.parentMessageId},o=`tool`;let e={type:l.EventType.TOOL_CALL_START,toolCallId:c.toolCallId,toolCallName:c.toolCallName,parentMessageId:c.parentMessageId};u.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_START`,e,{toolCallId:c.toolCallId,toolCallName:c.toolCallName})}if(c.delta!==void 0){let e={type:l.EventType.TOOL_CALL_ARGS,toolCallId:i.toolCallId,delta:c.delta};u.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,e,{toolCallId:i.toolCallId})}return u;case l.EventType.REASONING_MESSAGE_CHUNK:let d=e,p=[];if((o!==`reasoning`||d.messageId&&d.messageId!==a?.messageId)&&p.push(...f()),o!==`reasoning`){if(d.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);a={messageId:d.messageId},o=`reasoning`;let e={type:l.EventType.REASONING_MESSAGE_START,messageId:d.messageId};p.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_START`,e,{messageId:d.messageId})}if(d.delta!==void 0){let e={type:l.EventType.REASONING_MESSAGE_CONTENT,messageId:a.messageId,delta:d.delta};p.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,e,{messageId:a.messageId})}return p}return e.type,[]}),(0,d.finalize)(()=>{f()}))};function me(e){return e.outcome}function R(e,t=new Date){return e.expiresAt===void 0?!1:new Date(e.expiresAt)<=t}function he(e,t){let n=new Set(e.map(e=>e.id)),r=new Set(Object.keys(t)),i=[...n].filter(e=>!r.has(e));if(i.length>0)throw Error(`buildResumeArray: missing responses for open interrupts: ${i.join(`, `)}`);let a=[...r].filter(e=>!n.has(e));if(a.length>0)throw Error(`buildResumeArray: responses reference unknown interrupt ids: ${a.join(`, `)}`);return e.map(e=>{let n=t[e.id];if(n.status===`resolved`){let t={interruptId:e.id,status:`resolved`};return n.payload!==void 0&&(t.payload=n.payload),t}return{interruptId:e.id,status:`cancelled`}})}var z=class{runNext(e,t){return t.run(e).pipe(L(!1))}runNextWithState(e,t){let n=v(e.messages||[]),r=v(e.state||{}),i=new d.ReplaySubject;return O(e,i,t,[]).subscribe(e=>{e.messages!==void 0&&(n=e.messages),e.state!==void 0&&(r=e.state)}),this.runNext(e,t).pipe((0,f.concatMap)(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:v(n),state:v(r)})))}},B=class extends z{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}},ge=class extends z{constructor(e){if(super(),this.blockedToolCallIds=new Set,e.allowedToolCalls&&e.disallowedToolCalls)throw Error(`Cannot specify both allowedToolCalls and disallowedToolCalls`);if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw Error(`Must specify either allowedToolCalls or disallowedToolCalls`);e.allowedToolCalls?this.allowedTools=new Set(e.allowedToolCalls):e.disallowedToolCalls&&(this.disallowedTools=new Set(e.disallowedToolCalls))}run(e,t){return this.runNext(e,t).pipe((0,f.filter)(e=>{if(e.type===l.EventType.TOOL_CALL_START){let t=e;return this.shouldFilterTool(t.toolCallName)?(this.blockedToolCallIds.add(t.toolCallId),!1):!0}if(e.type===l.EventType.TOOL_CALL_ARGS){let t=e;return!this.blockedToolCallIds.has(t.toolCallId)}if(e.type===l.EventType.TOOL_CALL_END){let t=e;return!this.blockedToolCallIds.has(t.toolCallId)}if(e.type===l.EventType.TOOL_CALL_RESULT){let t=e;return this.blockedToolCallIds.has(t.toolCallId)?(this.blockedToolCallIds.delete(t.toolCallId),!1):!0}return!0}))}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function _e(e){let t=e.content;if(Array.isArray(t)){let n=t.filter(e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(``);return{...e,content:n}}return typeof t==`string`?e:{...e,content:``}}var V=class extends z{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(_e)};return this.runNext(i,t)}};const H=`THINKING_START`,U=`THINKING_END`,W=`THINKING_TEXT_MESSAGE_START`,G=`THINKING_TEXT_MESSAGE_CONTENT`,K=`THINKING_TEXT_MESSAGE_END`;var q=class extends z{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((0,f.map)(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case H:{this.currentReasoningId=y();let{title:t,...n}=e;return this.warnAboutTransformation(H,l.EventType.REASONING_START),{...n,type:l.EventType.REASONING_START,messageId:this.currentReasoningId}}case W:return this.currentMessageId=y(),this.warnAboutTransformation(W,l.EventType.REASONING_MESSAGE_START),{...e,type:l.EventType.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`assistant`};case G:{let{delta:t,...n}=e;return this.warnAboutTransformation(G,l.EventType.REASONING_MESSAGE_CONTENT),{...n,type:l.EventType.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??y(),delta:t}}case K:{let t=this.currentMessageId??y();return this.warnAboutTransformation(K,l.EventType.REASONING_MESSAGE_END),{...e,type:l.EventType.REASONING_MESSAGE_END,messageId:t}}case U:{let t=this.currentReasoningId??y();return this.warnAboutTransformation(U,l.EventType.REASONING_END),{...e,type:l.EventType.REASONING_END,messageId:t}}default:return e}}};function ve(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function ye(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function be(e){let t=ve(e.mimeType);return e.data?{type:t,source:{type:`data`,value:e.data,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e.url?{type:t,source:{type:`url`,value:e.url,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e}function J(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.map(e=>ye(e)?be(e):e);return{...e,content:n}}var Y=class extends z{run(e,t){let n={...e,messages:e.messages.map(J)};return this.runNext(n,t)}},xe=`0.1.1-canary.beta.0`,X=class{get maxVersion(){return xe}get debug(){return this._debug}set debug(e){this._debug=w(e),this._debugLogger=D(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){typeof e==`boolean`?this._debugLogger=e?D(w(!0)):void 0:this._debugLogger=e}constructor({agentId:e,description:t,threadId:n,initialMessages:r,initialState:i,debug:a}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.agentId=e,this.description=t??``,this.threadId=n??(0,c.v4)(),this.messages=v(r??[]),this.state=v(i??{}),this._debug=w(a),this._debugLogger=D(this._debug),(0,_.compareVersions)(this.maxVersion,`0.0.39`)<=0&&this.middlewares.unshift(new V),(0,_.compareVersions)(this.maxVersion,`0.0.45`)<=0&&this.middlewares.unshift(new q),(0,_.compareVersions)(this.maxVersion,`0.0.47`)<=0&&this.middlewares.unshift(new Y)}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 B(e):e);return this.middlewares.push(...t),this}async runAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??(0,c.v4)();let n=this.prepareRunAgentInput(e);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new d.Subject;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await(0,d.lastValueFrom)((0,d.pipe)(()=>this.middlewares.length===0?this.run(n):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(n),L(this.debugLogger),k(this.debugLogger),e=>e.pipe((0,f.takeUntil)(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),(0,f.catchError)(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(n,e,a))),(0,f.finalize)(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))((0,d.of)(null)));let s=v(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}connect(e){throw new l.AGUIConnectNotImplementedError}async connectAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??(0,c.v4)();let n=this.prepareRunAgentInput(e),r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new d.Subject;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await(0,d.lastValueFrom)((0,d.pipe)(()=>(0,d.defer)(()=>this.connect(n)),L(this.debugLogger),k(this.debugLogger),e=>e.pipe((0,f.takeUntil)(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),(0,f.catchError)(e=>(this.isRunning=!1,e instanceof l.AGUIConnectNotImplementedError?d.EMPTY:this.onError(n,e,a))),(0,f.finalize)(()=>{this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))((0,d.of)(null)),{defaultValue:void 0});let s=v(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}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 O(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe((0,f.tap)(t=>{t.messages&&(this.messages=t.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),t.state&&(this.state=t.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}))}prepareRunAgentInput(e){let t=v(this.messages).filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:e?.runId||(0,c.v4)(),tools:v(e?.tools??[]),context:v(e?.context??[]),forwardedProps:v(e?.forwardedProps??{}),state:v(this.state),messages:t,...e?.resume===void 0?{}:{resume:v(e.resume)}}}async onInitialize(e,t){if(this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),n=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(n.length>0)throw new l.AGUIError(`Thread has ${n.length} pending interrupt(s) not addressed by resume: ${n.join(`, `)}`);for(let e of this.pendingInterrupts)if(R(e))throw new l.AGUIError(`Interrupt ${e.id} expired at ${e.expiresAt}`)}let n=await C(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,e.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state&&(this.state=n.state,e.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}onError(e,t,n){return(0,d.from)(C(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe((0,f.map)(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 C(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=v(this.messages),e.state=v(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=v(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=v(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=v(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(e){this.agentId=this.agentId??(0,c.v4)();let t=this.prepareRunAgentInput(e);return(this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(t)).pipe(L(this.debugLogger),k(this.debugLogger),I(this.threadId,t.runId,this.agentId),e=>e.pipe((0,f.map)(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}},Se=class extends X{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,t){return this.abortController=e?.abortController??new AbortController,super.runAgent(e,t)}abortRun(){this.abortController.abort(),super.abortRun()}constructor(e){super(e),this.abortController=new AbortController,this.url=e.url,this.headers=v(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return P(j(()=>this.fetch(this.url,this.requestInit(e))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=v(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 Ce(e){let t=[],n=new Map,r=new Map,i=[];for(let a of e)if(a.type===l.EventType.TEXT_MESSAGE_START){let e=a,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.start=e}else if(a.type===l.EventType.TEXT_MESSAGE_CONTENT){let e=a,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]}),n.get(t).contents.push(e)}else if(a.type===l.EventType.TEXT_MESSAGE_END){let e=a,r=e.messageId;n.has(r)||n.set(r,{contents:[],otherEvents:[]});let i=n.get(r);i.end=e,Z(r,i,t),n.delete(r)}else if(a.type===l.EventType.TOOL_CALL_START){let e=a,t=e.toolCallId;r.has(t)||r.set(t,{args:[],otherEvents:[]});let n=r.get(t);n.start=e}else if(a.type===l.EventType.TOOL_CALL_ARGS){let e=a,t=e.toolCallId;r.has(t)||r.set(t,{args:[],otherEvents:[]}),r.get(t).args.push(e)}else if(a.type===l.EventType.TOOL_CALL_END){let e=a,n=e.toolCallId;r.has(n)||r.set(n,{args:[],otherEvents:[]});let i=r.get(n);i.end=e,Q(n,i,t),r.delete(n)}else if(a.type===l.EventType.RUN_STARTED)$(i,t),i=[],t.push(a);else if(a.type===l.EventType.RUN_FINISHED||a.type===l.EventType.RUN_ERROR)$(i,t),i=[],t.push(a);else if(a.type===l.EventType.STATE_SNAPSHOT||a.type===l.EventType.STATE_DELTA)i.push(a);else{let e=!1;for(let[t,r]of n)if(r.start&&!r.end){r.otherEvents.push(a),e=!0;break}if(!e){for(let[t,n]of r)if(n.start&&!n.end){n.otherEvents.push(a),e=!0;break}}e||t.push(a)}for(let[e,r]of n)Z(e,r,t);for(let[e,n]of r)Q(e,n,t);return $(i,t),t}function Z(e,t,n){if(t.start&&n.push(t.start),t.contents.length>0){let r=t.contents.map(e=>e.delta).join(``),i={type:l.EventType.TEXT_MESSAGE_CONTENT,messageId:e,delta:r};n.push(i)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}function Q(e,t,n){if(t.start&&n.push(t.start),t.args.length>0){let r=t.args.map(e=>e.delta).join(``),i={type:l.EventType.TOOL_CALL_ARGS,toolCallId:e,delta:r};n.push(i)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}function $(e,t){if(e.length===0)return;let n={};for(let t of e)n=t.type===l.EventType.STATE_SNAPSHOT?v(t.snapshot):u.default.applyPatch(n,v(t.delta),!0,!1).newDocument;let r={type:l.EventType.STATE_SNAPSHOT,snapshot:n};t.push(r)}exports.AbstractAgent=X,exports.BackwardCompatibility_0_0_39=V,exports.BackwardCompatibility_0_0_45=q,exports.BackwardCompatibility_0_0_47=Y,exports.DebugLogger=E,exports.FilterToolCallsMiddleware=ge,exports.FunctionMiddleware=B,exports.HttpAgent=Se,exports.Middleware=z,exports.buildResumeArray=he,exports.compactEvents=Ce,exports.convertToLegacyEvents=I,exports.createDebugLogger=D,exports.defaultApplyEvents=O,exports.getRunOutcome=me,exports.isInterruptExpired=R,exports.parseProtoStream=N,exports.parseSSEStream=M,exports.randomUUID=y,exports.resolveAgentDebugConfig=w,exports.resolveDebugLogger=T,exports.runHttpRequest=j,exports.structuredClone_=v,exports.transformChunks=L,exports.transformHttpEventStream=P,exports.verifyEvents=k,Object.keys(l).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return l[e]}})}),Object.keys(m).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return m[e]}})});
|
|
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,le=()=>typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS,ue=(e,t)=>{let n=T(t),r=new d.Subject,i=new Uint8Array,a=!1;e.subscribe({next:e=>{if(e.type!==j.HEADERS&&e.type===j.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=m.decode(t);n?.event(`PROTO`,`Event received:`,a,{type:a.type}),r.next(a)}catch(e){if(e instanceof m.AGUIUnknownEventTypeError)le()||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()},de=(e,t)=>{let n=T(t),r=new d.Subject,i=new d.ReplaySubject(1),a=!1,o,s=!1,c=()=>{s=!0,o?.unsubscribe()},u=e=>{c(),r.error(e)},f=()=>{c(),r.complete()};return o=e.subscribe({next:e=>{if(i.next(e),e.type===j.HEADERS&&!a){a=!0;let t=e.headers.get(`content-type`);n?.lifecycle(`HTTP`,`Stream format detected:`,{contentType:t,parser:t===m.AGUI_MEDIA_TYPE?`protobuf`:`sse`}),t===m.AGUI_MEDIA_TYPE?ue(i,n).subscribe({next:e=>r.next(e),error:e=>u(e),complete:()=>f()}):se(i,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}),r.next(e)},error:e=>{if(e?.name===`AbortError`){r.next({type:l.EventType.RUN_ERROR,message:e.message||`Request aborted`,code:`abort`,rawEvent:e}),f();return}return u(e)},complete:()=>f()})}else a||u(Error(`No headers event received before data events`))},error:e=>{i.error(e),u(e)},complete:()=>{i.complete()}}),s&&o.unsubscribe(),r.asObservable()},M={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`},fe=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 pe(e,t){return(0,l.contentHasMedia)(t)&&N(`[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.`),(0,l.contentToText)(t)}const N=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)},me=(e,t,n)=>r=>{let i={},a=!0,o=!0,s=``,c=null,d=null,m=[],h={},g=!1,_=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,i=e)};return r.pipe((0,f.mergeMap)(r=>{switch(r.type){case l.EventType.TEXT_MESSAGE_START:{let e=r;return[{type:M.TextMessageStart,messageId:e.messageId,role:e.role}]}case l.EventType.TEXT_MESSAGE_CONTENT:{let e=r;return[{type:M.TextMessageContent,messageId:e.messageId,content:e.delta}]}case l.EventType.TEXT_MESSAGE_END:{let e=r;return[{type:M.TextMessageEnd,messageId:e.messageId}]}case l.EventType.TOOL_CALL_START:{let e=r;return m.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),o=!0,h[e.toolCallId]=e.toolCallName,[{type:M.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case l.EventType.TOOL_CALL_ARGS:{let c=r,l=m.find(e=>e.id===c.toolCallId);if(!l)return N(`[ag-ui][legacy] TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];l.function.arguments+=c.delta;let u=!1;if(d){let e=d.find(e=>e.tool==l.function.name);if(e)try{let t=JSON.parse((0,p.default)(l.function.arguments));e.tool_argument&&e.tool_argument in t?(_({...i,[e.state_key]:t[e.tool_argument]}),u=!0):e.tool_argument||(_({...i,[e.state_key]:t}),u=!0)}catch{}}return[{type:M.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...u?[{type:M.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]:[]]}case l.EventType.TOOL_CALL_END:{let e=r;return[{type:M.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case l.EventType.TOOL_CALL_RESULT:{let e=r,t=h[e.toolCallId];return(t===void 0||t===``)&&N(`[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:M.ActionExecutionResult,actionExecutionId:e.toolCallId,result:pe(e.toolCallId,e.content),actionName:t||`unknown`}]}case l.EventType.RAW:return g||(g=!0,N(`[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 l.EventType.CUSTOM:{let e=r;switch(e.name){case`Exit`:a=!1;break;case`PredictState`:d=e.value;break}return[{type:M.MetaEvent,name:e.name,value:e.value}]}case l.EventType.STATE_SNAPSHOT:return _(r.snapshot),[{type:M.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}];case l.EventType.STATE_DELTA:{let c=r,l;try{l=u.default.applyPatch(i,c.delta,!0,!1).newDocument}catch(e){let t=e instanceof Error?e.message:String(e);return N(`[ag-ui][legacy] Failed to apply state patch:\nCurrent state: ${JSON.stringify(i,null,2)}\nPatch operations: ${JSON.stringify(c.delta,null,2)}\nError: ${t}`),[]}return _(l),[{type:M.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]}case l.EventType.MESSAGES_SNAPSHOT:return c=r.messages,[{type:M.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:c}:{}}),active:!0}];case l.EventType.RUN_STARTED:return[];case l.EventType.RUN_FINISHED:{if(c&&(i.messages=c),Object.keys(i).length===0)return[];let r=null;if(c)try{r=he(c)}catch(e){return[{type:M.RunError,message:e.message}]}return[{type:M.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...r?{messages:r}:{}}),active:!1}]}case l.EventType.RUN_ERROR:{let e=r;return[{type:M.RunError,message:e.message,code:e.code}]}case l.EventType.STEP_STARTED:return s=r.stepName,m=[],d=null,[{type:M.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!0}];case l.EventType.STEP_FINISHED:return m=[],d=null,[{type:M.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!1}];default:return[]}}))};function he(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=fe(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:pe(n.toolCallId,n.content),actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}const ge=e=>e.kind===`tool`?e.fields.toolCallId:e.fields.messageId,_e=e=>e===`tool`?`toolCallId`:`messageId`,P=(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}'`}.`)},F=(e,t)=>t.metadata===void 0?e:{...e,metadata:t.metadata},I=(e,t)=>{let n=F(e,t);return t.rawEvent===void 0?n:{...n,rawEvent:t.rawEvent}},L=e=>new Set(Object.keys(e.shape)),ve=L(g.TextMessageChunkEventSchema),ye=L(g.ToolCallChunkEventSchema),be=L(g.ReasoningMessageChunkEventSchema),xe=(e,t)=>{let n;for(let r of Object.keys(e))t.has(r)||((n??={})[r]=e[r]);return n},Se=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.`)},Ce=(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&&Se(`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}},R=e=>t=>{let n=T(e),r=new Map,i=e=>{let t=r.get(e);if(!t)return[];switch(r.delete(e),t.kind){case`text`:{let e={type:l.EventType.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:l.EventType.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:l.EventType.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]}}},a=()=>[...r.keys()].flatMap(e=>i(e)),o=(e,t)=>{for(let[n,i]of r)if(i.kind===e&&ge(i)===t)return{owner:n}},s=(e,t,n,i,a)=>{if(t!==void 0){let r=o(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(r.get(void 0)?.kind===e)return;let s=[...r.entries()].filter(([,t])=>t.kind===e);if(s.length===1)return s[0][0];if(s.length>1)throw Error(`Ambiguous ${i}: it carries neither a ${_e(e)} nor a subagentRunId, but ${s.length} lanes have an open ${a}. Attribute the chunk to the subagent it belongs to.`)};return t.pipe((0,d.mergeMap)(e=>{switch(e.type){case l.EventType.TEXT_MESSAGE_START:case l.EventType.TEXT_MESSAGE_CONTENT:case l.EventType.TEXT_MESSAGE_END:case l.EventType.TOOL_CALL_START:case l.EventType.TOOL_CALL_ARGS:case l.EventType.TOOL_CALL_END:case l.EventType.TOOL_CALL_RESULT:case l.EventType.STATE_SNAPSHOT:case l.EventType.STATE_DELTA:case l.EventType.CUSTOM:case l.EventType.STEP_STARTED:case l.EventType.STEP_FINISHED:case l.EventType.REASONING_START:case l.EventType.REASONING_MESSAGE_START:case l.EventType.REASONING_MESSAGE_CONTENT:case l.EventType.REASONING_MESSAGE_END:case l.EventType.REASONING_END:return[...i(e.subagentRunId??void 0),e];case l.EventType.RUN_STARTED:case l.EventType.RUN_FINISHED:case l.EventType.RUN_ERROR:case l.EventType.MESSAGES_SNAPSHOT:return[...a(),e];case l.EventType.RAW:case l.EventType.ACTIVITY_SNAPSHOT:case l.EventType.ACTIVITY_DELTA:case l.EventType.REASONING_ENCRYPTED_VALUE:case l.EventType.SUBAGENT_STARTED:return[e];case l.EventType.SUBAGENT_FINISHED:case l.EventType.SUBAGENT_ERROR:{let t=e.subagentRunId;return t==null?[e]:[...i(t),e]}case l.EventType.TEXT_MESSAGE_CHUNK:{let t=e,a=xe(e,ve),o=s(`text`,t.messageId,t.subagentRunId??void 0,`TEXT_MESSAGE_CHUNK`,`text message`),c=r.get(o),u=[],d=!1,f;if(c?.kind===`text`&&(t.messageId===void 0||t.messageId===c.fields.messageId))P(`text message`,c.fields.messageId,`role`,t.role,c.fields.role),P(`text message`,c.fields.messageId,`name`,t.name,c.fields.name),f=c.fields;else{if(u.push(...i(o)),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},r.set(o,{kind:`text`,fields:f});let e=F({type:l.EventType.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,r=I({...a,type:l.EventType.TEXT_MESSAGE_CONTENT,messageId:f.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);u.push(r),d=!0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,r,{messageId:f.messageId})}if(u.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId;u.push({...a,type:l.EventType.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 Ce(u,a,d,`TEXT_MESSAGE_CHUNK`),u}case l.EventType.TOOL_CALL_CHUNK:{let t=e,a=xe(e,ye),o=s(`tool`,t.toolCallId,t.subagentRunId??void 0,`TOOL_CALL_CHUNK`,`tool call`),c=r.get(o),u=[],d=!1,f;if(c?.kind===`tool`&&(t.toolCallId===void 0||t.toolCallId===c.fields.toolCallId))P(`tool call`,c.fields.toolCallId,`toolCallName`,t.toolCallName,c.fields.toolCallName),P(`tool call`,c.fields.toolCallId,`parentMessageId`,t.parentMessageId,c.fields.parentMessageId),f=c.fields;else{if(u.push(...i(o)),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},r.set(o,{kind:`tool`,fields:f});let e=F({type:l.EventType.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,r=I({...a,type:l.EventType.TOOL_CALL_ARGS,toolCallId:f.toolCallId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);u.push(r),d=!0,n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,r,{toolCallId:f.toolCallId})}if(u.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId;u.push({...a,type:l.EventType.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 Ce(u,a,d,`TOOL_CALL_CHUNK`),u}case l.EventType.REASONING_MESSAGE_CHUNK:{let t=e,a=xe(e,be),o=s(`reasoning`,t.messageId,t.subagentRunId??void 0,`REASONING_MESSAGE_CHUNK`,`reasoning message`),c=r.get(o),u=[],d=!1,f;if(c?.kind===`reasoning`&&(t.messageId===void 0||t.messageId===c.fields.messageId))f=c.fields;else{if(u.push(...i(o)),t.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);f={messageId:t.messageId,subagentRunId:t.subagentRunId},r.set(o,{kind:`reasoning`,fields:f});let e=F({type:l.EventType.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,r=I({...a,type:l.EventType.REASONING_MESSAGE_CONTENT,messageId:f.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);u.push(r),d=!0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,r,{messageId:f.messageId})}if(u.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?f.subagentRunId:t.subagentRunId;u.push({...a,type:l.EventType.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 Ce(u,a,d,`REASONING_MESSAGE_CHUNK`),u}}return e.type,[e]}),(0,d.finalize)(()=>{a()}))},z=Symbol(`agui.strip.drop`);function B(e){let t=e;for(;;){if(t instanceof _.z.ZodOptional||t instanceof _.z.ZodNullable||t instanceof _.z.ZodDefault||t instanceof _.z.ZodReadonly||t instanceof _.z.ZodCatch){t=t.unwrap();continue}if(t instanceof _.z.ZodPipe){t=t.def.in;continue}if(t instanceof _.z.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 Te(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 Ee(e){let t=B(e);return t instanceof _.z.ZodLiteral?Te(t):void 0}function V(e,t,n,r){let i=B(t);if(i instanceof _.z.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=V(a[e],i,`${n}/${e}`,r);if(l===z){if(r.length=c,i.safeParse(void 0).success){r.push(`${n}/${e}`);continue}return z}o[e]=l}return o}if(i instanceof _.z.ZodArray){if(!Array.isArray(e))return e;let t=i.element,a=[];return e.forEach((e,i)=>{let o=r.length,s=V(e,t,`${n}/${i}`,r);if(s===z){r.length=o,r.push(`${n}/${i}`);return}a.push(s)}),a}if(i instanceof _.z.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=V(a[e],t,`${n}/${e}`,r);if(s===z){r.length=i,r.push(`${n}/${e}`);continue}o[e]=s}return o}if(i instanceof _.z.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=B(o);if(!(t instanceof _.z.ZodObject))continue;let s=t.shape;if(Ee(s[a])===i)return V(e,o,n,r)}return z}let o=t.filter(e=>B(e)instanceof _.z.ZodObject),s=typeof e==`object`&&!!e&&!Array.isArray(e);if(o.length>1&&s)return e;for(let i of t){let t=B(i);if(t instanceof _.z.ZodArray&&Array.isArray(e)||t instanceof _.z.ZodObject&&s)return V(e,i,n,r)}return e}return e}function De(e,t){let n=[],r=V(e,t,``,n);if(r===z)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 Oe=new Set(Object.values(l.EventType));function ke(e){return Oe.has(e.type)}const Ae=new Map(g.EventSchema.options.map(e=>{let t=e.shape;return[String(Te(t.type)),e]})),je=()=>typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS;function Me(e){je()||console.warn(`[ag-ui][enforce] ${e}`)}const H=e=>t=>{let n=T(e);return t.pipe((0,f.mergeMap)(e=>{if(!ke(e))return Me(`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}),d.EMPTY;let t=Ae.get(e.type);if(t===void 0)throw Error(`No validator for recognised event type '${String(e.type)}'`);let{value:r,stripped:i}=De(e,t);for(let t of i)Me(`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(0,d.of)(t.parse(r))}))};function Ne(e){let{value:t,stripped:n}=De((0,l.omitOptionalNulls)(e,`RunAgentInput`),g.RunAgentInputSchema);for(let e of n)Me(`Removed unrecognised material at '${e}' from the outgoing input.`);return g.RunAgentInputSchema.parse(t)}var U=class{runNext(e,t){return t.run(e).pipe(R(!1))}runNextWithState(e,t){let n=b(e.messages||[]),r=b(e.state===void 0?{}:e.state),i=new d.ReplaySubject;return k(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((0,f.concatMap)(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:b(n),state:b(r)})))}},Pe=class extends U{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}};function Fe(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function Ie(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function Le(e){let t=Fe(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 Re(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 ze(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.flatMap(e=>{if(Ie(e)){let n=Le(e);return n.type!==`binary`&&t.some(t=>Re(t,n,e.filename))?[]:[n]}return[e]});return{...e,content:n}}const W=`THINKING_START`,G=`THINKING_END`,Be=`THINKING_TEXT_MESSAGE_START`,K=`THINKING_TEXT_MESSAGE_CONTENT`,q=`THINKING_TEXT_MESSAGE_END`;function Ve(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 J(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Y(e,t,n){if(!J(e)||e[t]!==null)return e;Ve(`${n}.${t}: null`,`an absent field`);let{[t]:r,...i}=e;return i}function X(e,t,n){if(!J(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 He(e){return X(e,`content`,e=>{if(!J(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 Ue(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`,He)}var Z=class extends U{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warn(e,t){Ve(e,t)}mintedContinuationId(e,t){if(t!==null)return t;let n=x();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(ze),t.run(e).pipe((0,f.map)(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===l.EventType.RUN_FINISHED||e.type===l.EventType.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 W:{this.currentReasoningId=x();let{title:t,...n}=e;return this.warn(W,l.EventType.REASONING_START),t!==void 0&&this.warnAside(`Dropping ${W}.title ${JSON.stringify(t)}: ${l.EventType.REASONING_START} has no title field, so the span's label cannot be carried and nothing downstream can recover it.`),{...n,type:l.EventType.REASONING_START,messageId:this.currentReasoningId}}case Be:return this.currentMessageId=x(),this.warn(Be,l.EventType.REASONING_MESSAGE_START),{...e,type:l.EventType.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case K:{let{delta:t,...n}=e;return this.warn(K,l.EventType.REASONING_MESSAGE_CONTENT),{...n,type:l.EventType.REASONING_MESSAGE_CONTENT,messageId:this.mintedContinuationId(K,this.currentMessageId),delta:t}}case q:{let t=this.mintedContinuationId(q,this.currentMessageId);return this.currentMessageId=null,this.warn(q,l.EventType.REASONING_MESSAGE_END),{...e,type:l.EventType.REASONING_MESSAGE_END,messageId:t}}case G:{let t=this.mintedContinuationId(G,this.currentReasoningId);return this.currentReasoningId=null,this.warn(G,l.EventType.REASONING_END),{...e,type:l.EventType.REASONING_END,messageId:t}}case l.EventType.TOOL_CALL_START:case l.EventType.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 l.EventType.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 l.EventType.MESSAGES_SNAPSHOT:{let t=e;return Array.isArray(t.messages)?{...t,messages:t.messages.map(e=>this.upgradeInboundMessage(e))}:e}case l.EventType.RUN_STARTED:{let t=Ue(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=He(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`),ze(e))}};const We=()=>e=>(0,d.defer)(()=>{let t=new Z;return e.pipe((0,f.map)(e=>t.transformEvent(e)))});function Ge(e){return e.outcome}function Ke(e,t=new Date){return e.expiresAt===void 0?!1:new Date(e.expiresAt)<=t}function qe(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 Je=class extends U{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(0,d.defer)(()=>{let n=new Set;return this.runNext(e,t).pipe((0,f.filter)(e=>{if(e.type===l.EventType.RUN_STARTED)return n.clear(),!0;if(e.type===l.EventType.TOOL_CALL_START){let t=e;return this.shouldFilterTool(t.toolCallName)?(n.add(t.toolCallId),!1):!0}if(e.type===l.EventType.TOOL_CALL_ARGS){let t=e;return!n.has(t.toolCallId)}if(e.type===l.EventType.TOOL_CALL_END){let t=e;return!n.has(t.toolCallId)}if(e.type===l.EventType.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 Ye(){return typeof process<`u`&&process.env!==void 0&&!!process.env.SUPPRESS_TRANSFORMATION_WARNINGS}function Xe(e){Ye()||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 Ze(e){Ye()||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 Qe(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 Ze(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&&Xe(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 $e=class extends U{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(Qe)};return this.runNext(i,t)}};const et=`THINKING_START`,tt=`THINKING_END`,nt=`THINKING_TEXT_MESSAGE_START`,rt=`THINKING_TEXT_MESSAGE_CONTENT`,it=`THINKING_TEXT_MESSAGE_END`;var at=class extends U{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((0,f.map)(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case et:{this.currentReasoningId=x();let{title:t,...n}=e;return this.warnAboutTransformation(et,l.EventType.REASONING_START),{...n,type:l.EventType.REASONING_START,messageId:this.currentReasoningId}}case nt:return this.currentMessageId=x(),this.warnAboutTransformation(nt,l.EventType.REASONING_MESSAGE_START),{...e,type:l.EventType.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case rt:{let{delta:t,...n}=e;return this.warnAboutTransformation(rt,l.EventType.REASONING_MESSAGE_CONTENT),{...n,type:l.EventType.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??x(),delta:t}}case it:{let t=this.currentMessageId??x();return this.warnAboutTransformation(it,l.EventType.REASONING_MESSAGE_END),{...e,type:l.EventType.REASONING_MESSAGE_END,messageId:t}}case tt:{let t=this.currentReasoningId??x();return this.warnAboutTransformation(tt,l.EventType.REASONING_END),{...e,type:l.EventType.REASONING_END,messageId:t}}default:return e}}};const ot=`SUBAGENT_STARTED`,st=`SUBAGENT_FINISHED`,ct=`SUBAGENT_ERROR`;function Q(e){if(e&&typeof e==`object`&&`subagentRunId`in e){let{subagentRunId:t,...n}=e;return n}return e}function lt(e){return e.map(e=>Q(e))}var ut=class extends U{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((0,f.tap)(e=>{let t=e.type;(t===ot||t===st||t===ct)&&this.warnDroppedLifecycleEvent(t)}),(0,f.filter)(e=>{let t=e.type;return t!==ot&&t!==st&&t!==ct}),(0,f.map)(e=>{let t=Q(e);if(t.type===l.EventType.MESSAGES_SNAPSHOT){let e=t;if(Array.isArray(e.messages))return{...e,messages:lt(e.messages)}}if(t.type===l.EventType.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===l.EventType.RUN_STARTED){let e=t;if(e.input&&Array.isArray(e.input.messages))return{...e,input:{...e.input,messages:lt(e.input.messages)}}}return t}))}},$=`1.0.0`;let dt=!1;const ft=(e,t)=>/^\d+\.\d+$/.test(e)?(0,h.compareVersions)(e,t)>0?`newer`:`not-newer`:`uninterpretable`,pt=e=>{let t=e.protocolVersion;if(!(t===void 0||t===l.PROTOCOL_VERSION))switch(ft(t,l.PROTOCOL_VERSION)){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 ${l.PROTOCOL_VERSION}. Unrecognised material will be stripped with warnings.`);return;case`not-newer`:return}};var mt=class e{resolvePeerCeiling(t){if(this.resolvingPeerCeiling)return $;let n=Object.getOwnPropertyDescriptor(this,`maxVersion`),r=Object.getOwnPropertyDescriptor(this,`maxProtocolVersion`),i=Object.getPrototypeOf(this);for(;i&&i!==e.prototype;)n??=Object.getOwnPropertyDescriptor(i,`maxVersion`),r??=Object.getOwnPropertyDescriptor(i,`maxProtocolVersion`),i=Object.getPrototypeOf(i);if(t===`maxVersion`&&n)return $;let a=t===`maxProtocolVersion`?n:r;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&&!dt&&(dt=!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=w(e),this._debugLogger=D(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){typeof e==`boolean`?this._debugLogger=e?D(w(!0)):void 0:this._debugLogger=e}resolvedCeilingDuringConstruction(){let e=this.maxProtocolVersion;if(typeof e!=`string`||!(0,h.validate)(e))throw new l.AGUIError(`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:e,description:t,threadId:n,initialMessages:r,initialState:i,debug:a}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.resolvingPeerCeiling=!1,this.agentId=e,this.description=t??``,this.threadId=n??(0,c.v4)(),this.messages=b(r??[]),this.state=b(i??{}),this._debug=w(a),this._debugLogger=D(this._debug);let o=this.resolvedCeilingDuringConstruction();(0,h.compareVersions)(o,`0.0.39`)<=0&&this.middlewares.unshift(new $e),(0,h.compareVersions)(o,`0.0.45`)<=0&&this.middlewares.unshift(new at),(0,h.compareVersions)(o,`0.0.57`)<=0&&this.middlewares.unshift(new ut)}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 Pe(e):e);return this.middlewares.push(...t),this}async runAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??(0,c.v4)();let n=this.prepareRunAgentInput(e);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunStartedEvent:({event:e})=>pt(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new d.Subject;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await(0,d.lastValueFrom)((0,d.pipe)(()=>[...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),H(this.debugLogger),R(this.debugLogger),A(this.debugLogger),e=>e.pipe((0,f.takeUntil)(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),(0,f.catchError)(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(n,e,a))),(0,f.finalize)(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))((0,d.of)(null)));let s=b(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}connect(e){throw new l.AGUIConnectNotImplementedError}async connectAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??(0,c.v4)();let n=this.prepareRunAgentInput(e),r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunStartedEvent:({event:e})=>pt(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new d.Subject;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await(0,d.lastValueFrom)((0,d.pipe)(()=>(0,d.defer)(()=>this.connect(n)),e=>H(this.debugLogger)(We()(e)),R(this.debugLogger),A(this.debugLogger),e=>e.pipe((0,f.takeUntil)(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),(0,f.catchError)(e=>(this.isRunning=!1,e instanceof l.AGUIConnectNotImplementedError?d.EMPTY:this.onError(n,e,a))),(0,f.finalize)(()=>{this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))((0,d.of)(null)),{defaultValue:void 0});let s=b(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}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 k(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe((0,f.tap)(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(e){let t=b(this.messages);for(let e of t)e.subagentRunId===null&&delete e.subagentRunId;let n=t.filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:e?.runId||(0,c.v4)(),...(0,h.compareVersions)(this.maxProtocolVersion,$)>=0&&{protocolVersion:l.PROTOCOL_VERSION},tools:b(e?.tools??[]),context:b(e?.context??[]),forwardedProps:b(e?.forwardedProps??{}),state:b(this.state),messages:n,...e?.resume===void 0?{}:{resume:b(e.resume)}}}async onInitialize(e,t){if(this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),n=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(n.length>0)throw new l.AGUIError(`Thread has ${n.length} pending interrupt(s) not addressed by resume: ${n.join(`, `)}`);for(let t of this.pendingInterrupts)if(Ke(t)&&(e.resume??[]).find(e=>e.interruptId===t.id)?.status!==`cancelled`)throw new l.AGUIError(`Interrupt ${t.id} expired at ${t.expiresAt} and can no longer be answered. Cancel it to continue the thread.`)}let n=await C(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));if(n.messages!==void 0||n.state!==void 0){if(n.messages){this.messages=n.messages;for(let e of n.messages)e.subagentRunId===null&&delete e.subagentRunId;e.messages=n.messages.filter(e=>e.role!==`activity`),t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})}n.state!==void 0&&(this.state=n.state,e.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}}onError(e,t,n){return(0,d.from)(C(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe((0,f.map)(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 C(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=b(this.messages),e.state=b(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=b(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=b(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=b(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(e){this.agentId=this.agentId??(0,c.v4)();let t=this.prepareRunAgentInput(e);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(t).pipe(H(this.debugLogger),R(this.debugLogger),A(this.debugLogger),me(this.threadId,t.runId,this.agentId),e=>e.pipe((0,f.map)(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}};function ht(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 gt=class extends mt{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(ht(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=b(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return de(ae(()=>this.fetch(this.url,this.requestInit(Ne(e)))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=b(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 _t(e,t){if(e===void 0)return t;let n=(0,l.mergeMetadata)(e.metadata,t.metadata);return n===void 0?t:{...t,metadata:n}}function vt(e,t){let{metadata:n,...r}=t,i=e?.metadata;return i===void 0?r:{...r,metadata:i}}function yt(e){let t;for(let n of e)t=(0,l.mergeMetadata)(t,n.metadata);return t}function bt(e){let t=[],n=new Map,r=new Map,i=[];for(let a of e)if(a.type===l.EventType.TEXT_MESSAGE_START){let e=a,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.contents.length===0?r.start=_t(r.start,e):(r.start=vt(r.start,e),r.postStartMetadata=(0,l.mergeMetadata)(r.postStartMetadata,e.metadata))}else if(a.type===l.EventType.TEXT_MESSAGE_CONTENT){let e=a,t=e.messageId;n.has(t)||n.set(t,{contents:[],otherEvents:[]});let r=n.get(t);r.contents.push(e),r.postStartMetadata=(0,l.mergeMetadata)(r.postStartMetadata,e.metadata)}else if(a.type===l.EventType.TEXT_MESSAGE_END){let e=a,r=e.messageId;n.has(r)||n.set(r,{contents:[],otherEvents:[]});let i=n.get(r);i.end=e,xt(r,i,t),n.delete(r)}else if(a.type===l.EventType.TOOL_CALL_START){let e=a,t=e.toolCallId;r.has(t)||r.set(t,{args:[],otherEvents:[]});let n=r.get(t);n.args.length===0?n.start=_t(n.start,e):(n.start=vt(n.start,e),n.postStartMetadata=(0,l.mergeMetadata)(n.postStartMetadata,e.metadata))}else if(a.type===l.EventType.TOOL_CALL_ARGS){let e=a,t=e.toolCallId;r.has(t)||r.set(t,{args:[],otherEvents:[]});let n=r.get(t);n.args.push(e),n.postStartMetadata=(0,l.mergeMetadata)(n.postStartMetadata,e.metadata)}else if(a.type===l.EventType.TOOL_CALL_END){let e=a,n=e.toolCallId;r.has(n)||r.set(n,{args:[],otherEvents:[]});let i=r.get(n);i.end=e,St(n,i,t),r.delete(n)}else if(a.type===l.EventType.RUN_STARTED)wt(i,t),i=[],t.push(a);else if(a.type===l.EventType.RUN_FINISHED||a.type===l.EventType.RUN_ERROR)wt(i,t),i=[],t.push(a);else if(a.type===l.EventType.STATE_SNAPSHOT||a.type===l.EventType.STATE_DELTA)i.push(a);else{let e=!1;for(let[,t]of n)if(t.start&&!t.end){t.otherEvents.push(a),e=!0;break}if(!e){for(let[,t]of r)if(t.start&&!t.end){t.otherEvents.push(a),e=!0;break}}e||t.push(a)}for(let[e,r]of n)xt(e,r,t);for(let[e,n]of r)St(e,n,t);return wt(i,t),t}function xt(e,t,n){if(t.start&&n.push(t.start),t.contents.length>0){let r=t.contents.map(e=>e.delta).join(``),i=t.postStartMetadata,a={type:l.EventType.TEXT_MESSAGE_CONTENT,messageId:e,delta:r,...i!==void 0&&{metadata:i}};n.push(a)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}function St(e,t,n){if(t.start&&n.push(t.start),t.args.length>0){let r=t.args.map(e=>e.delta).join(``),i=t.postStartMetadata,a={type:l.EventType.TOOL_CALL_ARGS,toolCallId:e,delta:r,...i!==void 0&&{metadata:i}};n.push(a)}t.end&&n.push(t.end);for(let e of t.otherEvents)n.push(e)}const Ct=e=>{typeof process<`u`&&process.env!==void 0&&process.env.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)};function wt(e,t){if(e.length===0)return;let n=-1;for(let t=e.length-1;t>=0;t--)if(e[t].type===l.EventType.STATE_SNAPSHOT){n=t;break}if(n===-1){t.push(...e);return}let r={};for(let t of e.slice(n))if(t.type===l.EventType.STATE_SNAPSHOT)r=b(t.snapshot);else try{r=u.default.applyPatch(r,b(t.delta),!0,!1).newDocument}catch(e){let n=e instanceof Error?e.message:String(e);Ct(`[ag-ui][compact] Failed to apply state patch while compacting:\nCurrent state: ${JSON.stringify(r,null,2)}\nPatch operations: ${JSON.stringify(t.delta,null,2)}\nError: ${n}`)}let i=yt(e),a={type:l.EventType.STATE_SNAPSHOT,snapshot:r,...i!==void 0&&{metadata:i}};t.push(a)}exports.ACTIVITY_HISTORY_METADATA=v,exports.AbstractAgent=mt,exports.BackwardCompatibility_0_0_39=$e,exports.BackwardCompatibility_0_0_45=at,exports.BackwardCompatibility_0_0_57=ut,exports.CompatibilityBoundary=Z,exports.DebugLogger=E,exports.FilterToolCallsMiddleware=Je,exports.FunctionMiddleware=Pe,exports.HttpAgent=gt,exports.Middleware=U,exports.authoritativeActivityTypes=y,exports.buildResumeArray=qe,exports.compactEvents=bt,exports.convertToLegacyEvents=me,exports.createDebugLogger=D,exports.defaultApplyEvents=k,exports.enforceEvents=H,exports.enforceOutgoingInput=Ne,exports.getRunOutcome=Ge,exports.isInterruptExpired=Ke,exports.isRecognizedEvent=ke,exports.parseProtoStream=ue,exports.parseSSEStream=se,exports.randomUUID=x,exports.resolveAgentDebugConfig=w,exports.resolveDebugLogger=T,exports.runHttpRequest=ae,exports.structuredClone_=b,exports.transformChunks=R,exports.transformHttpEventStream=de,exports.verifyEvents=A,exports.withAuthoritativeActivityTypes=ee,Object.keys(l).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return l[e]}})});
|
|
5
5
|
//# sourceMappingURL=index.js.map
|