@ag-ui/client 0.0.40-alpha.7 → 0.0.40-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- var ut=Object.defineProperty,pt=Object.defineProperties;var dt=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var mt=Object.prototype.hasOwnProperty,ft=Object.prototype.propertyIsEnumerable;var Q=(E,a,e)=>a in E?ut(E,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):E[a]=e,O=(E,a)=>{for(var e in a||(a={}))mt.call(a,e)&&Q(E,e,a[e]);if(Y)for(var e of Y(a))ft.call(a,e)&&Q(E,e,a[e]);return E},G=(E,a)=>pt(E,dt(a));import{EventType as M}from"@ag-ui/core";import{mergeAll as Tt,defaultIfEmpty as At,concatMap as vt}from"rxjs/operators";import{of as ht,EMPTY as Mt}from"rxjs";import{v4 as St}from"uuid";var h=E=>{if(typeof structuredClone=="function")return structuredClone(E);try{return JSON.parse(JSON.stringify(E))}catch(a){return O({},E)}};function ie(){return St()}import{applyPatch as yt}from"fast-json-patch";async function y(E,a,e,s){let t=a,n=e,i;for(let r of E)try{let l=await s(r,h(t),h(n));if(l===void 0)continue;if(l.messages!==void 0&&(t=l.messages),l.state!==void 0&&(n=l.state),i=l.stopPropagation,i===!0)break}catch(l){process.env.NODE_ENV==="test"||process.env.JEST_WORKER_ID!==void 0||console.error("Subscriber error:",l);continue}return O(O(O({},JSON.stringify(t)!==JSON.stringify(a)?{messages:t}:{}),JSON.stringify(n)!==JSON.stringify(e)?{state:n}:{}),i!==void 0?{stopPropagation:i}:{})}import Ct from"untruncate-json";var j=(E,a,e,s)=>{let t=h(E.messages),n=h(E.state),i={},r=u=>{u.messages!==void 0&&(t=u.messages,i.messages=u.messages),u.state!==void 0&&(n=u.state,i.state=u.state)},l=()=>{let u=h(i);return i={},u.messages!==void 0||u.state!==void 0?ht(u):Mt};return a.pipe(vt(async u=>{var f,T;let S=await y(s,t,n,(o,g,m)=>{var p;return(p=o.onEvent)==null?void 0:p.call(o,{event:u,agent:e,input:E,messages:g,state:m})});if(r(S),S.stopPropagation===!0)return l();switch(u.type){case M.TEXT_MESSAGE_START:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onTextMessageStartEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});if(r(o),o.stopPropagation!==!0){let{messageId:g,role:m="assistant"}=u,p={id:g,role:m,content:""};t.push(p),r({messages:t})}return l()}case M.TEXT_MESSAGE_CONTENT:{let{messageId:o,delta:g}=u,m=t.find(c=>c.id===o);if(!m)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${o}'`),l();let p=await y(s,t,n,(c,C,I)=>{var w;return(w=c.onTextMessageContentEvent)==null?void 0:w.call(c,{event:u,messages:C,state:I,agent:e,input:E,textMessageBuffer:typeof m.content=="string"?m.content:""})});if(r(p),p.stopPropagation!==!0){let c=typeof m.content=="string"?m.content:"";m.content=`${c}${g}`,r({messages:t})}return l()}case M.TEXT_MESSAGE_END:{let{messageId:o}=u,g=t.find(p=>p.id===o);if(!g)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${o}'`),l();let m=await y(s,t,n,(p,c,C)=>{var I;return(I=p.onTextMessageEndEvent)==null?void 0:I.call(p,{event:u,messages:c,state:C,agent:e,input:E,textMessageBuffer:typeof g.content=="string"?g.content:""})});return r(m),await Promise.all(s.map(p=>{var c;(c=p.onNewMessage)==null||c.call(p,{message:g,messages:t,state:n,agent:e,input:E})})),l()}case M.TOOL_CALL_START:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onToolCallStartEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});if(r(o),o.stopPropagation!==!0){let{toolCallId:g,toolCallName:m,parentMessageId:p}=u,c;p&&t.length>0&&t[t.length-1].id===p?c=t[t.length-1]:(c={id:p||g,role:"assistant",toolCalls:[]},t.push(c)),(f=c.toolCalls)!=null||(c.toolCalls=[]),c.toolCalls.push({id:g,type:"function",function:{name:m,arguments:""}}),r({messages:t})}return l()}case M.TOOL_CALL_ARGS:{let{toolCallId:o,delta:g}=u,m=t.find(C=>{var I;return(I=C.toolCalls)==null?void 0:I.some(w=>w.id===o)});if(!m)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${o}'`),l();let p=m.toolCalls.find(C=>C.id===o);if(!p)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${o}'`),l();let c=await y(s,t,n,(C,I,w)=>{var K;let B=p.function.arguments,k=p.function.name,H={};try{H=Ct(B)}catch(ae){}return(K=C.onToolCallArgsEvent)==null?void 0:K.call(C,{event:u,messages:I,state:w,agent:e,input:E,toolCallBuffer:B,toolCallName:k,partialToolCallArgs:H})});return r(c),c.stopPropagation!==!0&&(p.function.arguments+=g,r({messages:t})),l()}case M.TOOL_CALL_END:{let{toolCallId:o}=u,g=t.find(c=>{var C;return(C=c.toolCalls)==null?void 0:C.some(I=>I.id===o)});if(!g)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${o}'`),l();let m=g.toolCalls.find(c=>c.id===o);if(!m)return console.warn(`TOOL_CALL_END: No tool call found with ID '${o}'`),l();let p=await y(s,t,n,(c,C,I)=>{var H;let w=m.function.arguments,B=m.function.name,k={};try{k=JSON.parse(w)}catch(K){}return(H=c.onToolCallEndEvent)==null?void 0:H.call(c,{event:u,messages:C,state:I,agent:e,input:E,toolCallName:B,toolCallArgs:k})});return r(p),await Promise.all(s.map(c=>{var C;(C=c.onNewToolCall)==null||C.call(c,{toolCall:m,messages:t,state:n,agent:e,input:E})})),l()}case M.TOOL_CALL_RESULT:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onToolCallResultEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});if(r(o),o.stopPropagation!==!0){let{messageId:g,toolCallId:m,content:p,role:c}=u,C={id:g,toolCallId:m,role:c||"tool",content:p};t.push(C),await Promise.all(s.map(I=>{var w;(w=I.onNewMessage)==null||w.call(I,{message:C,messages:t,state:n,agent:e,input:E})})),r({messages:t})}return l()}case M.STATE_SNAPSHOT:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onStateSnapshotEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});if(r(o),o.stopPropagation!==!0){let{snapshot:g}=u;n=g,r({state:n})}return l()}case M.STATE_DELTA:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onStateDeltaEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});if(r(o),o.stopPropagation!==!0){let{delta:g}=u;try{n=yt(n,g,!0,!1).newDocument,r({state:n})}catch(m){let p=m instanceof Error?m.message:String(m);console.warn(`Failed to apply state patch:
1
+ var mt=Object.defineProperty,ft=Object.defineProperties;var Tt=Object.getOwnPropertyDescriptors;var Z=Object.getOwnPropertySymbols;var St=Object.prototype.hasOwnProperty,At=Object.prototype.propertyIsEnumerable;var tt=(E,a,e)=>a in E?mt(E,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):E[a]=e,O=(E,a)=>{for(var e in a||(a={}))St.call(a,e)&&tt(E,e,a[e]);if(Z)for(var e of Z(a))At.call(a,e)&&tt(E,e,a[e]);return E},U=(E,a)=>ft(E,Tt(a));import{EventType as R}from"@ag-ui/core";import{mergeAll as ht,defaultIfEmpty as yt,concatMap as Mt}from"rxjs/operators";import{of as Ct,EMPTY as Rt}from"rxjs";import{v4 as vt}from"uuid";var M=E=>{if(typeof structuredClone=="function")return structuredClone(E);try{return JSON.parse(JSON.stringify(E))}catch(a){return O({},E)}};function ge(){return vt()}import{applyPatch as et}from"fast-json-patch";async function _(E,a,e,s){let t=a,n=e,r;for(let o of E)try{let l=await s(o,M(t),M(n));if(l===void 0)continue;if(l.messages!==void 0&&(t=l.messages),l.state!==void 0&&(n=l.state),r=l.stopPropagation,r===!0)break}catch(l){process.env.NODE_ENV==="test"||process.env.JEST_WORKER_ID!==void 0||console.error("Subscriber error:",l);continue}return O(O(O({},JSON.stringify(t)!==JSON.stringify(a)?{messages:t}:{}),JSON.stringify(n)!==JSON.stringify(e)?{state:n}:{}),r!==void 0?{stopPropagation:r}:{})}import _t from"untruncate-json";var $=(E,a,e,s)=>{let t=M(E.messages),n=M(E.state),r={},o=u=>{u.messages!==void 0&&(t=u.messages,r.messages=u.messages),u.state!==void 0&&(n=u.state,r.state=u.state)},l=()=>{let u=M(r);return r={},u.messages!==void 0||u.state!==void 0?Ct(u):Rt};return a.pipe(Mt(async u=>{var T,v,g,G;let S=await _(s,t,n,(p,i,d)=>{var m;return(m=p.onEvent)==null?void 0:m.call(p,{event:u,agent:e,input:E,messages:i,state:d})});if(o(S),S.stopPropagation===!0)return l();switch(u.type){case R.TEXT_MESSAGE_START:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onTextMessageStartEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});if(o(p),p.stopPropagation!==!0){let{messageId:i,role:d="assistant"}=u,m={id:i,role:d,content:""};t.push(m),o({messages:t})}return l()}case R.TEXT_MESSAGE_CONTENT:{let{messageId:p,delta:i}=u,d=t.find(c=>c.id===p);if(!d)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${p}'`),l();let m=await _(s,t,n,(c,A,h)=>{var I;return(I=c.onTextMessageContentEvent)==null?void 0:I.call(c,{event:u,messages:A,state:h,agent:e,input:E,textMessageBuffer:typeof d.content=="string"?d.content:""})});if(o(m),m.stopPropagation!==!0){let c=typeof d.content=="string"?d.content:"";d.content=`${c}${i}`,o({messages:t})}return l()}case R.TEXT_MESSAGE_END:{let{messageId:p}=u,i=t.find(m=>m.id===p);if(!i)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${p}'`),l();let d=await _(s,t,n,(m,c,A)=>{var h;return(h=m.onTextMessageEndEvent)==null?void 0:h.call(m,{event:u,messages:c,state:A,agent:e,input:E,textMessageBuffer:typeof i.content=="string"?i.content:""})});return o(d),await Promise.all(s.map(m=>{var c;(c=m.onNewMessage)==null||c.call(m,{message:i,messages:t,state:n,agent:e,input:E})})),l()}case R.TOOL_CALL_START:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onToolCallStartEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});if(o(p),p.stopPropagation!==!0){let{toolCallId:i,toolCallName:d,parentMessageId:m}=u,c;m&&t.length>0&&t[t.length-1].id===m?c=t[t.length-1]:(c={id:m||i,role:"assistant",toolCalls:[]},t.push(c)),(T=c.toolCalls)!=null||(c.toolCalls=[]),c.toolCalls.push({id:i,type:"function",function:{name:d,arguments:""}}),o({messages:t})}return l()}case R.TOOL_CALL_ARGS:{let{toolCallId:p,delta:i}=u,d=t.find(A=>{var h;return(h=A.toolCalls)==null?void 0:h.some(I=>I.id===p)});if(!d)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${p}'`),l();let m=d.toolCalls.find(A=>A.id===p);if(!m)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${p}'`),l();let c=await _(s,t,n,(A,h,I)=>{var J;let D=m.function.arguments,F=m.function.name,B={};try{B=_t(D)}catch(re){}return(J=A.onToolCallArgsEvent)==null?void 0:J.call(A,{event:u,messages:h,state:I,agent:e,input:E,toolCallBuffer:D,toolCallName:F,partialToolCallArgs:B})});return o(c),c.stopPropagation!==!0&&(m.function.arguments+=i,o({messages:t})),l()}case R.TOOL_CALL_END:{let{toolCallId:p}=u,i=t.find(c=>{var A;return(A=c.toolCalls)==null?void 0:A.some(h=>h.id===p)});if(!i)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${p}'`),l();let d=i.toolCalls.find(c=>c.id===p);if(!d)return console.warn(`TOOL_CALL_END: No tool call found with ID '${p}'`),l();let m=await _(s,t,n,(c,A,h)=>{var B;let I=d.function.arguments,D=d.function.name,F={};try{F=JSON.parse(I)}catch(J){}return(B=c.onToolCallEndEvent)==null?void 0:B.call(c,{event:u,messages:A,state:h,agent:e,input:E,toolCallName:D,toolCallArgs:F})});return o(m),await Promise.all(s.map(c=>{var A;(A=c.onNewToolCall)==null||A.call(c,{toolCall:d,messages:t,state:n,agent:e,input:E})})),l()}case R.TOOL_CALL_RESULT:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onToolCallResultEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});if(o(p),p.stopPropagation!==!0){let{messageId:i,toolCallId:d,content:m,role:c}=u,A={id:i,toolCallId:d,role:c||"tool",content:m};t.push(A),await Promise.all(s.map(h=>{var I;(I=h.onNewMessage)==null||I.call(h,{message:A,messages:t,state:n,agent:e,input:E})})),o({messages:t})}return l()}case R.STATE_SNAPSHOT:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onStateSnapshotEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});if(o(p),p.stopPropagation!==!0){let{snapshot:i}=u;n=i,o({state:n})}return l()}case R.STATE_DELTA:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onStateDeltaEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});if(o(p),p.stopPropagation!==!0){let{delta:i}=u;try{n=et(n,i,!0,!1).newDocument,o({state:n})}catch(d){let m=d instanceof Error?d.message:String(d);console.warn(`Failed to apply state patch:
2
2
  Current state: ${JSON.stringify(n,null,2)}
3
- Patch operations: ${JSON.stringify(g,null,2)}
4
- Error: ${p}`)}}return l()}case M.MESSAGES_SNAPSHOT:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onMessagesSnapshotEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});if(r(o),o.stopPropagation!==!0){let{messages:g}=u;t=g,r({messages:t})}return l()}case M.RAW:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onRawEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});return r(o),l()}case M.CUSTOM:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onCustomEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});return r(o),l()}case M.RUN_STARTED:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onRunStartedEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});if(r(o),o.stopPropagation!==!0){let g=u;if((T=g.input)!=null&&T.messages){for(let m of g.input.messages)t.find(c=>c.id===m.id)||t.push(m);r({messages:t})}}return l()}case M.RUN_FINISHED:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onRunFinishedEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E,result:u.result})});return r(o),l()}case M.RUN_ERROR:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onRunErrorEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});return r(o),l()}case M.STEP_STARTED:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onStepStartedEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});return r(o),l()}case M.STEP_FINISHED:{let o=await y(s,t,n,(g,m,p)=>{var c;return(c=g.onStepFinishedEvent)==null?void 0:c.call(g,{event:u,messages:m,state:p,agent:e,input:E})});return r(o),l()}case M.TEXT_MESSAGE_CHUNK:throw new Error("TEXT_MESSAGE_CHUNK must be tranformed before being applied");case M.TOOL_CALL_CHUNK:throw new Error("TOOL_CALL_CHUNK must be tranformed before being applied");case M.THINKING_START:return l();case M.THINKING_END:return l();case M.THINKING_TEXT_MESSAGE_START:return l();case M.THINKING_TEXT_MESSAGE_CONTENT:return l();case M.THINKING_TEXT_MESSAGE_END:return l()}let P=u.type;return l()}),Tt(),s.length>0?At({}):u=>u)};import{EventType as R,AGUIError as _}from"@ag-ui/core";import{throwError as x,of as N}from"rxjs";import{mergeMap as Rt}from"rxjs/operators";var F=E=>a=>{let e=new Map,s=new Map,t=!1,n=!1,i=!1,r=new Map,l=!1,u=!1,S=!1,P=()=>{e.clear(),s.clear(),r.clear(),l=!1,u=!1,t=!1,n=!1,S=!0};return a.pipe(Rt(f=>{let T=f.type;if(E&&console.debug("[VERIFY]:",JSON.stringify(f)),n)return x(()=>new _(`Cannot send event type '${T}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(t&&T!==R.RUN_ERROR&&T!==R.RUN_STARTED)return x(()=>new _(`Cannot send event type '${T}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(i){if(T===R.RUN_STARTED){if(S&&!t)return x(()=>new _("Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run."));t&&P()}}else if(i=!0,T!==R.RUN_STARTED&&T!==R.RUN_ERROR)return x(()=>new _("First event must be 'RUN_STARTED'"));switch(T){case R.TEXT_MESSAGE_START:{let o=f.messageId;return e.has(o)?x(()=>new _(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${o}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(e.set(o,!0),N(f))}case R.TEXT_MESSAGE_CONTENT:{let o=f.messageId;return e.has(o)?N(f):x(()=>new _(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${o}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case R.TEXT_MESSAGE_END:{let o=f.messageId;return e.has(o)?(e.delete(o),N(f)):x(()=>new _(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${o}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case R.TOOL_CALL_START:{let o=f.toolCallId;return s.has(o)?x(()=>new _(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${o}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(s.set(o,!0),N(f))}case R.TOOL_CALL_ARGS:{let o=f.toolCallId;return s.has(o)?N(f):x(()=>new _(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${o}'. Start a tool call with 'TOOL_CALL_START' first.`))}case R.TOOL_CALL_END:{let o=f.toolCallId;return s.has(o)?(s.delete(o),N(f)):x(()=>new _(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${o}'. A 'TOOL_CALL_START' event must be sent first.`))}case R.STEP_STARTED:{let o=f.stepName;return r.has(o)?x(()=>new _(`Step "${o}" is already active for 'STEP_STARTED'`)):(r.set(o,!0),N(f))}case R.STEP_FINISHED:{let o=f.stepName;return r.has(o)?(r.delete(o),N(f)):x(()=>new _(`Cannot send 'STEP_FINISHED' for step "${o}" that was not started`))}case R.RUN_STARTED:return S=!0,N(f);case R.RUN_FINISHED:{if(r.size>0){let o=Array.from(r.keys()).join(", ");return x(()=>new _(`Cannot send 'RUN_FINISHED' while steps are still active: ${o}`))}if(e.size>0){let o=Array.from(e.keys()).join(", ");return x(()=>new _(`Cannot send 'RUN_FINISHED' while text messages are still active: ${o}`))}if(s.size>0){let o=Array.from(s.keys()).join(", ");return x(()=>new _(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${o}`))}return t=!0,N(f)}case R.RUN_ERROR:return n=!0,N(f);case R.CUSTOM:return N(f);case R.THINKING_TEXT_MESSAGE_START:return l?u?x(()=>new _("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.")):(u=!0,N(f)):x(()=>new _("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first."));case R.THINKING_TEXT_MESSAGE_CONTENT:return u?N(f):x(()=>new _("Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first."));case R.THINKING_TEXT_MESSAGE_END:return u?(u=!1,N(f)):x(()=>new _("Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first."));case R.THINKING_START:return l?x(()=>new _("Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.")):(l=!0,N(f));case R.THINKING_END:return l?(l=!1,N(f)):x(()=>new _("Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first."));default:return N(f)}}))};import{EventSchemas as wt}from"@ag-ui/core";import{Subject as Pt,ReplaySubject as Dt}from"rxjs";import{Observable as _t,from as Z,defer as xt,throwError as tt}from"rxjs";import{mergeMap as Nt,switchMap as It}from"rxjs/operators";var z=(E,a)=>xt(()=>Z(fetch(E,a))).pipe(It(e=>{var n;if(!e.ok){let i=e.headers.get("content-type")||"";return Z(e.text()).pipe(Nt(r=>{let l=r;if(i.includes("application/json"))try{l=JSON.parse(r)}catch(S){}let u=new Error(`HTTP ${e.status}: ${typeof l=="string"?l:JSON.stringify(l)}`);return u.status=e.status,u.payload=l,tt(()=>u)}))}let s={type:"headers",status:e.status,headers:e.headers},t=(n=e.body)==null?void 0:n.getReader();return t?new _t(i=>(i.next(s),(async()=>{try{for(;;){let{done:r,value:l}=await t.read();if(r)break;let u={type:"data",data:l};i.next(u)}i.complete()}catch(r){i.error(r)}})(),()=>{t.cancel().catch(r=>{if((r==null?void 0:r.name)!=="AbortError")throw r})})):tt(()=>new Error("Failed to getReader() from response"))}));import{Subject as Lt}from"rxjs";var J=E=>{let a=new Lt,e=new TextDecoder("utf-8",{fatal:!1}),s="";E.subscribe({next:n=>{if(n.type!=="headers"&&n.type==="data"&&n.data){let i=e.decode(n.data,{stream:!0});s+=i;let r=s.split(/\n\n/);s=r.pop()||"";for(let l of r)t(l)}},error:n=>a.error(n),complete:()=>{s&&(s+=e.decode(),t(s)),a.complete()}});function t(n){let i=n.split(`
5
- `),r=[];for(let l of i)l.startsWith("data: ")&&r.push(l.slice(6));if(r.length>0)try{let l=r.join(`
6
- `),u=JSON.parse(l);a.next(u)}catch(l){a.error(l)}}return a.asObservable()};import{Subject as Ot}from"rxjs";import*as et from"@ag-ui/proto";var $=E=>{let a=new Ot,e=new Uint8Array(0);E.subscribe({next:t=>{if(t.type!=="headers"&&t.type==="data"&&t.data){let n=new Uint8Array(e.length+t.data.length);n.set(e,0),n.set(t.data,e.length),e=n,s()}},error:t=>a.error(t),complete:()=>{if(e.length>0)try{s()}catch(t){console.warn("Incomplete or invalid protocol buffer data at stream end")}a.complete()}});function s(){for(;e.length>=4;){let i=4+new DataView(e.buffer,e.byteOffset,4).getUint32(0,!1);if(e.length<i)break;try{let r=e.slice(4,i),l=et.decode(r);a.next(l),e=e.slice(i)}catch(r){let l=r instanceof Error?r.message:String(r);a.error(new Error(`Failed to decode protocol buffer message: ${l}`));return}}}return a.asObservable()};import*as nt from"@ag-ui/proto";import{EventType as Ht}from"@ag-ui/core";var q=E=>{let a=new Pt,e=new Dt,s=!1;return E.subscribe({next:t=>{e.next(t),t.type==="headers"&&!s?(s=!0,t.headers.get("content-type")===nt.AGUI_MEDIA_TYPE?$(e).subscribe({next:i=>a.next(i),error:i=>a.error(i),complete:()=>a.complete()}):J(e).subscribe({next:i=>{try{let r=wt.parse(i);a.next(r)}catch(r){a.error(r)}},error:i=>{if((i==null?void 0:i.name)==="AbortError"){a.next({type:Ht.RUN_ERROR,rawEvent:i}),a.complete();return}return a.error(i)},complete:()=>a.complete()})):s||a.error(new Error("No headers event received before data events"))},error:t=>{e.error(t),a.error(t)},complete:()=>{e.complete()}}),a.asObservable()};import{mergeMap as $t}from"rxjs/operators";import{applyPatch as qt}from"fast-json-patch";import{EventType as L}from"@ag-ui/core";import{z as d}from"zod";var v=d.enum(["TextMessageStart","TextMessageContent","TextMessageEnd","ActionExecutionStart","ActionExecutionArgs","ActionExecutionEnd","ActionExecutionResult","AgentStateMessage","MetaEvent","RunStarted","RunFinished","RunError","NodeStarted","NodeFinished"]),Gt=d.enum(["LangGraphInterruptEvent","PredictState","Exit"]),Ft=d.object({type:d.literal(v.enum.TextMessageStart),messageId:d.string(),parentMessageId:d.string().optional(),role:d.string().optional()}),Ut=d.object({type:d.literal(v.enum.TextMessageContent),messageId:d.string(),content:d.string()}),Xt=d.object({type:d.literal(v.enum.TextMessageEnd),messageId:d.string()}),Bt=d.object({type:d.literal(v.enum.ActionExecutionStart),actionExecutionId:d.string(),actionName:d.string(),parentMessageId:d.string().optional()}),kt=d.object({type:d.literal(v.enum.ActionExecutionArgs),actionExecutionId:d.string(),args:d.string()}),bt=d.object({type:d.literal(v.enum.ActionExecutionEnd),actionExecutionId:d.string()}),Kt=d.object({type:d.literal(v.enum.ActionExecutionResult),actionName:d.string(),actionExecutionId:d.string(),result:d.string()}),jt=d.object({type:d.literal(v.enum.AgentStateMessage),threadId:d.string(),agentName:d.string(),nodeName:d.string(),runId:d.string(),active:d.boolean(),role:d.string(),state:d.string(),running:d.boolean()}),zt=d.object({type:d.literal(v.enum.MetaEvent),name:Gt,value:d.any()}),Jt=d.object({type:d.literal(v.enum.RunError),message:d.string(),code:d.string().optional()}),Ln=d.discriminatedUnion("type",[Ft,Ut,Xt,Bt,kt,bt,Kt,jt,zt,Jt]),On=d.object({id:d.string(),role:d.string(),content:d.string(),parentMessageId:d.string().optional()}),wn=d.object({id:d.string(),name:d.string(),arguments:d.any(),parentMessageId:d.string().optional()}),Pn=d.object({id:d.string(),result:d.any(),actionExecutionId:d.string(),actionName:d.string()});import Wt from"untruncate-json";var Vt=E=>{if(typeof E=="string")return E;if(!Array.isArray(E))return;let a=E.filter(e=>e.type==="text").map(e=>e.text).filter(e=>e.length>0);if(a.length!==0)return a.join(`
7
- `)},W=(E,a,e)=>s=>{let t={},n=!0,i=!0,r="",l=null,u=null,S=[],P={},f=T=>{typeof T=="object"&&T!==null&&("messages"in T&&delete T.messages,t=T)};return s.pipe($t(T=>{switch(T.type){case L.TEXT_MESSAGE_START:{let o=T;return[{type:v.enum.TextMessageStart,messageId:o.messageId,role:o.role}]}case L.TEXT_MESSAGE_CONTENT:{let o=T;return[{type:v.enum.TextMessageContent,messageId:o.messageId,content:o.delta}]}case L.TEXT_MESSAGE_END:{let o=T;return[{type:v.enum.TextMessageEnd,messageId:o.messageId}]}case L.TOOL_CALL_START:{let o=T;return S.push({id:o.toolCallId,type:"function",function:{name:o.toolCallName,arguments:""}}),i=!0,P[o.toolCallId]=o.toolCallName,[{type:v.enum.ActionExecutionStart,actionExecutionId:o.toolCallId,actionName:o.toolCallName,parentMessageId:o.parentMessageId}]}case L.TOOL_CALL_ARGS:{let o=T,g=S.find(p=>p.id===o.toolCallId);if(!g)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${o.toolCallId}'`),[];g.function.arguments+=o.delta;let m=!1;if(u){let p=u.find(c=>c.tool==g.function.name);if(p)try{let c=JSON.parse(Wt(g.function.arguments));p.tool_argument&&p.tool_argument in c?(f(G(O({},t),{[p.state_key]:c[p.tool_argument]})),m=!0):p.tool_argument||(f(G(O({},t),{[p.state_key]:c})),m=!0)}catch(c){}}return[{type:v.enum.ActionExecutionArgs,actionExecutionId:o.toolCallId,args:o.delta},...m?[{type:v.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:r,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:i}]:[]]}case L.TOOL_CALL_END:{let o=T;return[{type:v.enum.ActionExecutionEnd,actionExecutionId:o.toolCallId}]}case L.TOOL_CALL_RESULT:{let o=T;return[{type:v.enum.ActionExecutionResult,actionExecutionId:o.toolCallId,result:o.content,actionName:P[o.toolCallId]||"unknown"}]}case L.RAW:return[];case L.CUSTOM:{let o=T;switch(o.name){case"Exit":n=!1;break;case"PredictState":u=o.value;break}return[{type:v.enum.MetaEvent,name:o.name,value:o.value}]}case L.STATE_SNAPSHOT:return f(T.snapshot),[{type:v.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:r,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:i}];case L.STATE_DELTA:{let g=qt(t,T.delta,!0,!1);return g?(f(g.newDocument),[{type:v.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:r,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:i}]):[]}case L.MESSAGES_SNAPSHOT:return l=T.messages,[{type:v.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:r,runId:a,running:n,role:"assistant",state:JSON.stringify(O(O({},t),l?{messages:l}:{})),active:!0}];case L.RUN_STARTED:return[];case L.RUN_FINISHED:return l&&(t.messages=l),Object.keys(t).length===0?[]:[{type:v.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:r,runId:a,running:n,role:"assistant",state:JSON.stringify(O(O({},t),l?{messages:Yt(l)}:{})),active:!1}];case L.RUN_ERROR:{let o=T;return[{type:v.enum.RunError,message:o.message,code:o.code}]}case L.STEP_STARTED:return r=T.stepName,S=[],u=null,[{type:v.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:r,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:!0}];case L.STEP_FINISHED:return S=[],u=null,[{type:v.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:r,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:!1}];default:return[]}}))};function Yt(E){var e;let a=[];for(let s of E)if(s.role==="assistant"||s.role==="user"||s.role==="system"){let t=Vt(s.content);if(t){let n={id:s.id,role:s.role,content:t};a.push(n)}if(s.role==="assistant"&&s.toolCalls&&s.toolCalls.length>0)for(let n of s.toolCalls){let i={id:n.id,name:n.function.name,arguments:JSON.parse(n.function.arguments),parentMessageId:s.id};a.push(i)}}else if(s.role==="tool"){let t="unknown";for(let i of E)if(i.role==="assistant"&&((e=i.toolCalls)!=null&&e.length)){for(let r of i.toolCalls)if(r.id===s.toolCallId){t=r.function.name;break}}let n={id:s.id,result:s.content,actionExecutionId:s.toolCallId,actionName:t};a.push(n)}return a}import{v4 as U}from"uuid";import{catchError as st,map as at,tap as te}from"rxjs/operators";import{finalize as ot}from"rxjs/operators";import{pipe as rt,from as ee,of as it,EMPTY as ne}from"rxjs";import{lastValueFrom as lt}from"rxjs";import{mergeMap as Qt,finalize as Zt}from"rxjs";import{EventType as A}from"@ag-ui/core";var b=E=>a=>{let e,s,t,n=()=>{if(!e||t!=="text")throw new Error("No text message to close");let l={type:A.TEXT_MESSAGE_END,messageId:e.messageId};return t=void 0,e=void 0,E&&console.debug("[TRANSFORM]: TEXT_MESSAGE_END",JSON.stringify(l)),l},i=()=>{if(!s||t!=="tool")throw new Error("No tool call to close");let l={type:A.TOOL_CALL_END,toolCallId:s.toolCallId};return t=void 0,s=void 0,E&&console.debug("[TRANSFORM]: TOOL_CALL_END",JSON.stringify(l)),l},r=()=>t==="text"?[n()]:t==="tool"?[i()]:[];return a.pipe(Qt(l=>{switch(l.type){case A.TEXT_MESSAGE_START:case A.TEXT_MESSAGE_CONTENT:case A.TEXT_MESSAGE_END:case A.TOOL_CALL_START:case A.TOOL_CALL_ARGS:case A.TOOL_CALL_END:case A.TOOL_CALL_RESULT:case A.STATE_SNAPSHOT:case A.STATE_DELTA:case A.MESSAGES_SNAPSHOT:case A.CUSTOM:case A.RUN_STARTED:case A.RUN_FINISHED:case A.RUN_ERROR:case A.STEP_STARTED:case A.STEP_FINISHED:case A.THINKING_START:case A.THINKING_END:case A.THINKING_TEXT_MESSAGE_START:case A.THINKING_TEXT_MESSAGE_CONTENT:case A.THINKING_TEXT_MESSAGE_END:return[...r(),l];case A.RAW:return[l];case A.TEXT_MESSAGE_CHUNK:let S=l,P=[];if((t!=="text"||S.messageId!==void 0&&S.messageId!==(e==null?void 0:e.messageId))&&P.push(...r()),t!=="text"){if(S.messageId===void 0)throw new Error("First TEXT_MESSAGE_CHUNK must have a messageId");e={messageId:S.messageId},t="text";let o={type:A.TEXT_MESSAGE_START,messageId:S.messageId,role:S.role||"assistant"};P.push(o),E&&console.debug("[TRANSFORM]: TEXT_MESSAGE_START",JSON.stringify(o))}if(S.delta!==void 0){let o={type:A.TEXT_MESSAGE_CONTENT,messageId:e.messageId,delta:S.delta};P.push(o),E&&console.debug("[TRANSFORM]: TEXT_MESSAGE_CONTENT",JSON.stringify(o))}return P;case A.TOOL_CALL_CHUNK:let f=l,T=[];if((t!=="tool"||f.toolCallId!==void 0&&f.toolCallId!==(s==null?void 0:s.toolCallId))&&T.push(...r()),t!=="tool"){if(f.toolCallId===void 0)throw new Error("First TOOL_CALL_CHUNK must have a toolCallId");if(f.toolCallName===void 0)throw new Error("First TOOL_CALL_CHUNK must have a toolCallName");s={toolCallId:f.toolCallId,toolCallName:f.toolCallName,parentMessageId:f.parentMessageId},t="tool";let o={type:A.TOOL_CALL_START,toolCallId:f.toolCallId,toolCallName:f.toolCallName,parentMessageId:f.parentMessageId};T.push(o),E&&console.debug("[TRANSFORM]: TOOL_CALL_START",JSON.stringify(o))}if(f.delta!==void 0){let o={type:A.TOOL_CALL_ARGS,toolCallId:s.toolCallId,delta:f.delta};T.push(o),E&&console.debug("[TRANSFORM]: TOOL_CALL_ARGS",JSON.stringify(o))}return T}let u=l.type}),Zt(()=>r()))};import{AGUIConnectNotImplementedError as gt}from"@ag-ui/core";var X=class{constructor({agentId:a,description:e,threadId:s,initialMessages:t,initialState:n,debug:i}={}){this.debug=!1;this.subscribers=[];this.isRunning=!1;this.agentId=a,this.description=e!=null?e:"",this.threadId=s!=null?s:U(),this.messages=h(t!=null?t:[]),this.state=h(n!=null?n:{}),this.debug=i!=null?i:!1}subscribe(a){return this.subscribers.push(a),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(e=>e!==a)}}}async runAgent(a,e){var s;try{this.isRunning=!0,this.agentId=(s=this.agentId)!=null?s:U();let t=this.prepareRunAgentInput(a),n,i=new Set(this.messages.map(S=>S.id)),r=[{onRunFinishedEvent:S=>{n=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,r);let l=rt(()=>this.run(t),b(this.debug),F(this.debug),S=>this.apply(t,S,r),S=>this.processApplyEvents(t,S,r),st(S=>(this.isRunning=!1,this.onError(t,S,r))),ot(()=>{this.isRunning=!1,this.onFinalize(t,r)}));await lt(l(it(null)));let u=h(this.messages).filter(S=>!i.has(S.id));return{result:n,newMessages:u}}finally{this.isRunning=!1}}connect(a){throw new gt}async connectAgent(a,e){var s;try{this.isRunning=!0,this.agentId=(s=this.agentId)!=null?s:U();let t=this.prepareRunAgentInput(a),n,i=new Set(this.messages.map(S=>S.id)),r=[{onRunFinishedEvent:S=>{n=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,r);let l=rt(()=>this.connect(t),b(this.debug),F(this.debug),S=>this.apply(t,S,r),S=>this.processApplyEvents(t,S,r),st(S=>(this.isRunning=!1,S instanceof gt?ne:this.onError(t,S,r))),ot(()=>{this.isRunning=!1,this.onFinalize(t,r)}));await lt(l(it(null)));let u=h(this.messages).filter(S=>!i.has(S.id));return{result:n,newMessages:u}}finally{this.isRunning=!1}}abortRun(){}apply(a,e,s){return j(a,e,this,s)}processApplyEvents(a,e,s){return e.pipe(te(t=>{t.messages&&(this.messages=t.messages,s.forEach(n=>{var i;(i=n.onMessagesChanged)==null||i.call(n,{messages:this.messages,state:this.state,agent:this,input:a})})),t.state&&(this.state=t.state,s.forEach(n=>{var i;(i=n.onStateChanged)==null||i.call(n,{state:this.state,messages:this.messages,agent:this,input:a})}))}))}prepareRunAgentInput(a){var e,s,t;return{threadId:this.threadId,runId:(a==null?void 0:a.runId)||U(),tools:h((e=a==null?void 0:a.tools)!=null?e:[]),context:h((s=a==null?void 0:a.context)!=null?s:[]),forwardedProps:h((t=a==null?void 0:a.forwardedProps)!=null?t:{}),state:h(this.state),messages:h(this.messages)}}async onInitialize(a,e){let s=await y(e,this.messages,this.state,(t,n,i)=>{var r;return(r=t.onRunInitialized)==null?void 0:r.call(t,{messages:n,state:i,agent:this,input:a})});(s.messages!==void 0||s.state!==void 0)&&(s.messages&&(this.messages=s.messages,a.messages=s.messages,e.forEach(t=>{var n;(n=t.onMessagesChanged)==null||n.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),s.state&&(this.state=s.state,a.state=s.state,e.forEach(t=>{var n;(n=t.onStateChanged)==null||n.call(t,{state:this.state,messages:this.messages,agent:this,input:a})})))}onError(a,e,s){return ee(y(s,this.messages,this.state,(t,n,i)=>{var r;return(r=t.onRunFailed)==null?void 0:r.call(t,{error:e,messages:n,state:i,agent:this,input:a})})).pipe(at(t=>{let n=t;if((n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,s.forEach(i=>{var r;(r=i.onMessagesChanged)==null||r.call(i,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state!==void 0&&(this.state=n.state,s.forEach(i=>{var r;(r=i.onStateChanged)==null||r.call(i,{state:this.state,messages:this.messages,agent:this,input:a})}))),n.stopPropagation!==!0)throw console.error("Agent execution failed:",e),e;return{}}))}async onFinalize(a,e){let s=await y(e,this.messages,this.state,(t,n,i)=>{var r;return(r=t.onRunFinalized)==null?void 0:r.call(t,{messages:n,state:i,agent:this,input:a})});(s.messages!==void 0||s.state!==void 0)&&(s.messages!==void 0&&(this.messages=s.messages,e.forEach(t=>{var n;(n=t.onMessagesChanged)==null||n.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),s.state!==void 0&&(this.state=s.state,e.forEach(t=>{var n;(n=t.onStateChanged)==null||n.call(t,{state:this.state,messages:this.messages,agent:this,input:a})})))}clone(){let a=Object.create(Object.getPrototypeOf(this));return a.agentId=this.agentId,a.description=this.description,a.threadId=this.threadId,a.messages=h(this.messages),a.state=h(this.state),a.debug=this.debug,a.isRunning=this.isRunning,a.subscribers=[...this.subscribers],a}addMessage(a){this.messages.push(a),(async()=>{var e,s,t;for(let n of this.subscribers)await((e=n.onNewMessage)==null?void 0:e.call(n,{message:a,messages:this.messages,state:this.state,agent:this}));if(a.role==="assistant"&&a.toolCalls)for(let n of a.toolCalls)for(let i of this.subscribers)await((s=i.onNewToolCall)==null?void 0:s.call(i,{toolCall:n,messages:this.messages,state:this.state,agent:this}));for(let n of this.subscribers)await((t=n.onMessagesChanged)==null?void 0:t.call(n,{messages:this.messages,state:this.state,agent:this}))})()}addMessages(a){this.messages.push(...a),(async()=>{var e,s,t;for(let n of a){for(let i of this.subscribers)await((e=i.onNewMessage)==null?void 0:e.call(i,{message:n,messages:this.messages,state:this.state,agent:this}));if(n.role==="assistant"&&n.toolCalls)for(let i of n.toolCalls)for(let r of this.subscribers)await((s=r.onNewToolCall)==null?void 0:s.call(r,{toolCall:i,messages:this.messages,state:this.state,agent:this}))}for(let n of this.subscribers)await((t=n.onMessagesChanged)==null?void 0:t.call(n,{messages:this.messages,state:this.state,agent:this}))})()}setMessages(a){this.messages=h(a),(async()=>{var e;for(let s of this.subscribers)await((e=s.onMessagesChanged)==null?void 0:e.call(s,{messages:this.messages,state:this.state,agent:this}))})()}setState(a){this.state=h(a),(async()=>{var e;for(let s of this.subscribers)await((e=s.onStateChanged)==null?void 0:e.call(s,{messages:this.messages,state:this.state,agent:this}))})()}legacy_to_be_removed_runAgentBridged(a){var s;this.agentId=(s=this.agentId)!=null?s:U();let e=this.prepareRunAgentInput(a);return this.run(e).pipe(b(this.debug),F(this.debug),W(this.threadId,e.runId,this.agentId),t=>t.pipe(at(n=>(this.debug&&console.debug("[LEGACY]:",JSON.stringify(n)),n))))}};var V=class extends X{constructor(e){var s;super(e);this.abortController=new AbortController;this.url=e.url,this.headers=h((s=e.headers)!=null?s:{})}requestInit(e){return{method:"POST",headers:G(O({},this.headers),{"Content-Type":"application/json",Accept:"text/event-stream"}),body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,s){var t;return this.abortController=(t=e==null?void 0:e.abortController)!=null?t:new AbortController,super.runAgent(e,s)}abortRun(){this.abortController.abort(),super.abortRun()}run(e){let s=z(this.url,this.requestInit(e));return q(s)}clone(){var n;let e=super.clone();e.url=this.url,e.headers=h((n=this.headers)!=null?n:{});let s=new AbortController,t=this.abortController.signal;return t.aborted&&s.abort(t.reason),e.abortController=s,e}};import{EventType as D}from"@ag-ui/core";function se(E){let a=[],e=new Map,s=new Map;for(let t of E)if(t.type===D.TEXT_MESSAGE_START){let n=t,i=n.messageId;e.has(i)||e.set(i,{contents:[],otherEvents:[]});let r=e.get(i);r.start=n}else if(t.type===D.TEXT_MESSAGE_CONTENT){let n=t,i=n.messageId;e.has(i)||e.set(i,{contents:[],otherEvents:[]}),e.get(i).contents.push(n)}else if(t.type===D.TEXT_MESSAGE_END){let n=t,i=n.messageId;e.has(i)||e.set(i,{contents:[],otherEvents:[]});let r=e.get(i);r.end=n,ct(i,r,a),e.delete(i)}else if(t.type===D.TOOL_CALL_START){let n=t,i=n.toolCallId;s.has(i)||s.set(i,{args:[],otherEvents:[]});let r=s.get(i);r.start=n}else if(t.type===D.TOOL_CALL_ARGS){let n=t,i=n.toolCallId;s.has(i)||s.set(i,{args:[],otherEvents:[]}),s.get(i).args.push(n)}else if(t.type===D.TOOL_CALL_END){let n=t,i=n.toolCallId;s.has(i)||s.set(i,{args:[],otherEvents:[]});let r=s.get(i);r.end=n,Et(i,r,a),s.delete(i)}else{let n=!1;for(let[i,r]of e)if(r.start&&!r.end){r.otherEvents.push(t),n=!0;break}if(!n){for(let[i,r]of s)if(r.start&&!r.end){r.otherEvents.push(t),n=!0;break}}n||a.push(t)}for(let[t,n]of e)ct(t,n,a);for(let[t,n]of s)Et(t,n,a);return a}function ct(E,a,e){if(a.start&&e.push(a.start),a.contents.length>0){let s=a.contents.map(n=>n.delta).join(""),t={type:D.TEXT_MESSAGE_CONTENT,messageId:E,delta:s};e.push(t)}a.end&&e.push(a.end);for(let s of a.otherEvents)e.push(s)}function Et(E,a,e){if(a.start&&e.push(a.start),a.args.length>0){let s=a.args.map(n=>n.delta).join(""),t={type:D.TOOL_CALL_ARGS,toolCallId:E,delta:s};e.push(t)}a.end&&e.push(a.end);for(let s of a.otherEvents)e.push(s)}export*from"@ag-ui/core";export{X as AbstractAgent,V as HttpAgent,se as compactEvents,W as convertToLegacyEvents,j as defaultApplyEvents,$ as parseProtoStream,J as parseSSEStream,ie as randomUUID,z as runHttpRequest,h as structuredClone_,b as transformChunks,q as transformHttpEventStream,F as verifyEvents};
3
+ Patch operations: ${JSON.stringify(i,null,2)}
4
+ Error: ${m}`)}}return l()}case R.MESSAGES_SNAPSHOT:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onMessagesSnapshotEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});if(o(p),p.stopPropagation!==!0){let{messages:i}=u;t=i,o({messages:t})}return l()}case R.ACTIVITY_SNAPSHOT:{let p=u,i=t.findIndex(h=>h.id===p.messageId),d=i>=0?t[i]:void 0,m=(d==null?void 0:d.role)==="activity"?d:void 0,c=(v=p.replace)!=null?v:!0,A=await _(s,t,n,(h,I,D)=>{var F;return(F=h.onActivitySnapshotEvent)==null?void 0:F.call(h,{event:p,messages:I,state:D,agent:e,input:E,activityMessage:m,existingMessage:d})});if(o(A),A.stopPropagation!==!0){let h={id:p.messageId,role:"activity",activityType:p.activityType,content:M(p.content)},I;i===-1?(t.push(h),I=h):m?c&&(t[i]=U(O({},m),{activityType:p.activityType,content:M(p.content)})):c&&(t[i]=h,I=h),o({messages:t}),I&&await Promise.all(s.map(D=>{var F;return(F=D.onNewMessage)==null?void 0:F.call(D,{message:I,messages:t,state:n,agent:e,input:E})}))}return l()}case R.ACTIVITY_DELTA:{let p=u,i=t.findIndex(A=>A.id===p.messageId);if(i===-1)return console.warn(`ACTIVITY_DELTA: No message found with ID '${p.messageId}' to apply patch`),l();let d=t[i];if(d.role!=="activity")return console.warn(`ACTIVITY_DELTA: Message '${p.messageId}' is not an activity message`),l();let m=d,c=await _(s,t,n,(A,h,I)=>{var D;return(D=A.onActivityDeltaEvent)==null?void 0:D.call(A,{event:p,messages:h,state:I,agent:e,input:E,activityMessage:m})});if(o(c),c.stopPropagation!==!0)try{let A=M(m);A.activityType=p.activityType,(g=A.content)!=null||(A.content={});let I=et(A,p.patch,!0,!1).newDocument;t[i]=U(O({},I),{id:m.id,role:"activity",activityType:p.activityType}),o({messages:t})}catch(A){let h=A instanceof Error?A.message:String(A);console.warn(`Failed to apply activity patch for '${p.messageId}': ${h}`)}return l()}case R.RAW:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onRawEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});return o(p),l()}case R.CUSTOM:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onCustomEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});return o(p),l()}case R.RUN_STARTED:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onRunStartedEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});if(o(p),p.stopPropagation!==!0){let i=u;if((G=i.input)!=null&&G.messages){for(let d of i.input.messages)t.find(c=>c.id===d.id)||t.push(d);o({messages:t})}}return l()}case R.RUN_FINISHED:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onRunFinishedEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E,result:u.result})});return o(p),l()}case R.RUN_ERROR:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onRunErrorEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});return o(p),l()}case R.STEP_STARTED:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onStepStartedEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});return o(p),l()}case R.STEP_FINISHED:{let p=await _(s,t,n,(i,d,m)=>{var c;return(c=i.onStepFinishedEvent)==null?void 0:c.call(i,{event:u,messages:d,state:m,agent:e,input:E})});return o(p),l()}case R.TEXT_MESSAGE_CHUNK:throw new Error("TEXT_MESSAGE_CHUNK must be tranformed before being applied");case R.TOOL_CALL_CHUNK:throw new Error("TOOL_CALL_CHUNK must be tranformed before being applied");case R.THINKING_START:return l();case R.THINKING_END:return l();case R.THINKING_TEXT_MESSAGE_START:return l();case R.THINKING_TEXT_MESSAGE_CONTENT:return l();case R.THINKING_TEXT_MESSAGE_END:return l()}let H=u.type;return l()}),ht(),s.length>0?yt({}):u=>u)};import{EventType as x,AGUIError as N}from"@ag-ui/core";import{throwError as L,of as w}from"rxjs";import{mergeMap as It}from"rxjs/operators";var k=E=>a=>{let e=new Map,s=new Map,t=!1,n=!1,r=!1,o=new Map,l=!1,u=!1,S=!1,H=()=>{e.clear(),s.clear(),o.clear(),l=!1,u=!1,t=!1,n=!1,S=!0};return a.pipe(It(T=>{let v=T.type;if(E&&console.debug("[VERIFY]:",JSON.stringify(T)),n)return L(()=>new N(`Cannot send event type '${v}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(t&&v!==x.RUN_ERROR&&v!==x.RUN_STARTED)return L(()=>new N(`Cannot send event type '${v}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(r){if(v===x.RUN_STARTED){if(S&&!t)return L(()=>new N("Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run."));t&&H()}}else if(r=!0,v!==x.RUN_STARTED&&v!==x.RUN_ERROR)return L(()=>new N("First event must be 'RUN_STARTED'"));switch(v){case x.TEXT_MESSAGE_START:{let g=T.messageId;return e.has(g)?L(()=>new N(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${g}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(e.set(g,!0),w(T))}case x.TEXT_MESSAGE_CONTENT:{let g=T.messageId;return e.has(g)?w(T):L(()=>new N(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${g}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case x.TEXT_MESSAGE_END:{let g=T.messageId;return e.has(g)?(e.delete(g),w(T)):L(()=>new N(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${g}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case x.TOOL_CALL_START:{let g=T.toolCallId;return s.has(g)?L(()=>new N(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${g}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(s.set(g,!0),w(T))}case x.TOOL_CALL_ARGS:{let g=T.toolCallId;return s.has(g)?w(T):L(()=>new N(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${g}'. Start a tool call with 'TOOL_CALL_START' first.`))}case x.TOOL_CALL_END:{let g=T.toolCallId;return s.has(g)?(s.delete(g),w(T)):L(()=>new N(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${g}'. A 'TOOL_CALL_START' event must be sent first.`))}case x.STEP_STARTED:{let g=T.stepName;return o.has(g)?L(()=>new N(`Step "${g}" is already active for 'STEP_STARTED'`)):(o.set(g,!0),w(T))}case x.STEP_FINISHED:{let g=T.stepName;return o.has(g)?(o.delete(g),w(T)):L(()=>new N(`Cannot send 'STEP_FINISHED' for step "${g}" that was not started`))}case x.RUN_STARTED:return S=!0,w(T);case x.RUN_FINISHED:{if(o.size>0){let g=Array.from(o.keys()).join(", ");return L(()=>new N(`Cannot send 'RUN_FINISHED' while steps are still active: ${g}`))}if(e.size>0){let g=Array.from(e.keys()).join(", ");return L(()=>new N(`Cannot send 'RUN_FINISHED' while text messages are still active: ${g}`))}if(s.size>0){let g=Array.from(s.keys()).join(", ");return L(()=>new N(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${g}`))}return t=!0,w(T)}case x.RUN_ERROR:return n=!0,w(T);case x.CUSTOM:return w(T);case x.THINKING_TEXT_MESSAGE_START:return l?u?L(()=>new N("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.")):(u=!0,w(T)):L(()=>new N("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first."));case x.THINKING_TEXT_MESSAGE_CONTENT:return u?w(T):L(()=>new N("Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first."));case x.THINKING_TEXT_MESSAGE_END:return u?(u=!1,w(T)):L(()=>new N("Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first."));case x.THINKING_START:return l?L(()=>new N("Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.")):(l=!0,w(T));case x.THINKING_END:return l?(l=!1,w(T)):L(()=>new N("Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first."));default:return w(T)}}))};import{EventSchemas as Dt}from"@ag-ui/core";import{Subject as Ht,ReplaySubject as Gt}from"rxjs";import{Observable as xt,from as nt,defer as Nt,throwError as st}from"rxjs";import{mergeMap as Lt,switchMap as Ot}from"rxjs/operators";var V=(E,a)=>Nt(()=>nt(fetch(E,a))).pipe(Ot(e=>{var n;if(!e.ok){let r=e.headers.get("content-type")||"";return nt(e.text()).pipe(Lt(o=>{let l=o;if(r.includes("application/json"))try{l=JSON.parse(o)}catch(S){}let u=new Error(`HTTP ${e.status}: ${typeof l=="string"?l:JSON.stringify(l)}`);return u.status=e.status,u.payload=l,st(()=>u)}))}let s={type:"headers",status:e.status,headers:e.headers},t=(n=e.body)==null?void 0:n.getReader();return t?new xt(r=>(r.next(s),(async()=>{try{for(;;){let{done:o,value:l}=await t.read();if(o)break;let u={type:"data",data:l};r.next(u)}r.complete()}catch(o){r.error(o)}})(),()=>{t.cancel().catch(o=>{if((o==null?void 0:o.name)!=="AbortError")throw o})})):st(()=>new Error("Failed to getReader() from response"))}));import{Subject as wt}from"rxjs";var b=E=>{let a=new wt,e=new TextDecoder("utf-8",{fatal:!1}),s="";E.subscribe({next:n=>{if(n.type!=="headers"&&n.type==="data"&&n.data){let r=e.decode(n.data,{stream:!0});s+=r;let o=s.split(/\n\n/);s=o.pop()||"";for(let l of o)t(l)}},error:n=>a.error(n),complete:()=>{s&&(s+=e.decode(),t(s)),a.complete()}});function t(n){let r=n.split(`
5
+ `),o=[];for(let l of r)l.startsWith("data: ")&&o.push(l.slice(6));if(o.length>0)try{let l=o.join(`
6
+ `),u=JSON.parse(l);a.next(u)}catch(l){a.error(l)}}return a.asObservable()};import{Subject as Pt}from"rxjs";import*as at from"@ag-ui/proto";var Y=E=>{let a=new Pt,e=new Uint8Array(0);E.subscribe({next:t=>{if(t.type!=="headers"&&t.type==="data"&&t.data){let n=new Uint8Array(e.length+t.data.length);n.set(e,0),n.set(t.data,e.length),e=n,s()}},error:t=>a.error(t),complete:()=>{if(e.length>0)try{s()}catch(t){console.warn("Incomplete or invalid protocol buffer data at stream end")}a.complete()}});function s(){for(;e.length>=4;){let r=4+new DataView(e.buffer,e.byteOffset,4).getUint32(0,!1);if(e.length<r)break;try{let o=e.slice(4,r),l=at.decode(o);a.next(l),e=e.slice(r)}catch(o){let l=o instanceof Error?o.message:String(o);a.error(new Error(`Failed to decode protocol buffer message: ${l}`));return}}}return a.asObservable()};import*as ot from"@ag-ui/proto";import{EventType as Ft}from"@ag-ui/core";var W=E=>{let a=new Ht,e=new Gt,s=!1;return E.subscribe({next:t=>{e.next(t),t.type==="headers"&&!s?(s=!0,t.headers.get("content-type")===ot.AGUI_MEDIA_TYPE?Y(e).subscribe({next:r=>a.next(r),error:r=>a.error(r),complete:()=>a.complete()}):b(e).subscribe({next:r=>{try{let o=Dt.parse(r);a.next(o)}catch(o){a.error(o)}},error:r=>{if((r==null?void 0:r.name)==="AbortError"){a.next({type:Ft.RUN_ERROR,rawEvent:r}),a.complete();return}return a.error(r)},complete:()=>a.complete()})):s||a.error(new Error("No headers event received before data events"))},error:t=>{e.error(t),a.error(t)},complete:()=>{e.complete()}}),a.asObservable()};import{mergeMap as Yt}from"rxjs/operators";import{applyPatch as Wt}from"fast-json-patch";import{EventType as P}from"@ag-ui/core";import{z as f}from"zod";var C=f.enum(["TextMessageStart","TextMessageContent","TextMessageEnd","ActionExecutionStart","ActionExecutionArgs","ActionExecutionEnd","ActionExecutionResult","AgentStateMessage","MetaEvent","RunStarted","RunFinished","RunError","NodeStarted","NodeFinished"]),Ut=f.enum(["LangGraphInterruptEvent","PredictState","Exit"]),Xt=f.object({type:f.literal(C.enum.TextMessageStart),messageId:f.string(),parentMessageId:f.string().optional(),role:f.string().optional()}),Bt=f.object({type:f.literal(C.enum.TextMessageContent),messageId:f.string(),content:f.string()}),kt=f.object({type:f.literal(C.enum.TextMessageEnd),messageId:f.string()}),Kt=f.object({type:f.literal(C.enum.ActionExecutionStart),actionExecutionId:f.string(),actionName:f.string(),parentMessageId:f.string().optional()}),jt=f.object({type:f.literal(C.enum.ActionExecutionArgs),actionExecutionId:f.string(),args:f.string()}),zt=f.object({type:f.literal(C.enum.ActionExecutionEnd),actionExecutionId:f.string()}),Jt=f.object({type:f.literal(C.enum.ActionExecutionResult),actionName:f.string(),actionExecutionId:f.string(),result:f.string()}),$t=f.object({type:f.literal(C.enum.AgentStateMessage),threadId:f.string(),agentName:f.string(),nodeName:f.string(),runId:f.string(),active:f.boolean(),role:f.string(),state:f.string(),running:f.boolean()}),Vt=f.object({type:f.literal(C.enum.MetaEvent),name:Ut,value:f.any()}),bt=f.object({type:f.literal(C.enum.RunError),message:f.string(),code:f.string().optional()}),Gn=f.discriminatedUnion("type",[Xt,Bt,kt,Kt,jt,zt,Jt,$t,Vt,bt]),Fn=f.object({id:f.string(),role:f.string(),content:f.string(),parentMessageId:f.string().optional()}),Un=f.object({id:f.string(),name:f.string(),arguments:f.any(),parentMessageId:f.string().optional()}),Xn=f.object({id:f.string(),result:f.any(),actionExecutionId:f.string(),actionName:f.string()});import qt from"untruncate-json";var Qt=E=>{if(typeof E=="string")return E;if(!Array.isArray(E))return;let a=E.filter(e=>e.type==="text").map(e=>e.text).filter(e=>e.length>0);if(a.length!==0)return a.join(`
7
+ `)},q=(E,a,e)=>s=>{let t={},n=!0,r=!0,o="",l=null,u=null,S=[],H={},T=v=>{typeof v=="object"&&v!==null&&("messages"in v&&delete v.messages,t=v)};return s.pipe(Yt(v=>{switch(v.type){case P.TEXT_MESSAGE_START:{let g=v;return[{type:C.enum.TextMessageStart,messageId:g.messageId,role:g.role}]}case P.TEXT_MESSAGE_CONTENT:{let g=v;return[{type:C.enum.TextMessageContent,messageId:g.messageId,content:g.delta}]}case P.TEXT_MESSAGE_END:{let g=v;return[{type:C.enum.TextMessageEnd,messageId:g.messageId}]}case P.TOOL_CALL_START:{let g=v;return S.push({id:g.toolCallId,type:"function",function:{name:g.toolCallName,arguments:""}}),r=!0,H[g.toolCallId]=g.toolCallName,[{type:C.enum.ActionExecutionStart,actionExecutionId:g.toolCallId,actionName:g.toolCallName,parentMessageId:g.parentMessageId}]}case P.TOOL_CALL_ARGS:{let g=v,G=S.find(i=>i.id===g.toolCallId);if(!G)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${g.toolCallId}'`),[];G.function.arguments+=g.delta;let p=!1;if(u){let i=u.find(d=>d.tool==G.function.name);if(i)try{let d=JSON.parse(qt(G.function.arguments));i.tool_argument&&i.tool_argument in d?(T(U(O({},t),{[i.state_key]:d[i.tool_argument]})),p=!0):i.tool_argument||(T(U(O({},t),{[i.state_key]:d})),p=!0)}catch(d){}}return[{type:C.enum.ActionExecutionArgs,actionExecutionId:g.toolCallId,args:g.delta},...p?[{type:C.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:o,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:r}]:[]]}case P.TOOL_CALL_END:{let g=v;return[{type:C.enum.ActionExecutionEnd,actionExecutionId:g.toolCallId}]}case P.TOOL_CALL_RESULT:{let g=v;return[{type:C.enum.ActionExecutionResult,actionExecutionId:g.toolCallId,result:g.content,actionName:H[g.toolCallId]||"unknown"}]}case P.RAW:return[];case P.CUSTOM:{let g=v;switch(g.name){case"Exit":n=!1;break;case"PredictState":u=g.value;break}return[{type:C.enum.MetaEvent,name:g.name,value:g.value}]}case P.STATE_SNAPSHOT:return T(v.snapshot),[{type:C.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:o,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:r}];case P.STATE_DELTA:{let G=Wt(t,v.delta,!0,!1);return G?(T(G.newDocument),[{type:C.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:o,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:r}]):[]}case P.MESSAGES_SNAPSHOT:return l=v.messages,[{type:C.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:o,runId:a,running:n,role:"assistant",state:JSON.stringify(O(O({},t),l?{messages:l}:{})),active:!0}];case P.RUN_STARTED:return[];case P.RUN_FINISHED:return l&&(t.messages=l),Object.keys(t).length===0?[]:[{type:C.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:o,runId:a,running:n,role:"assistant",state:JSON.stringify(O(O({},t),l?{messages:Zt(l)}:{})),active:!1}];case P.RUN_ERROR:{let g=v;return[{type:C.enum.RunError,message:g.message,code:g.code}]}case P.STEP_STARTED:return o=v.stepName,S=[],u=null,[{type:C.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:o,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:!0}];case P.STEP_FINISHED:return S=[],u=null,[{type:C.enum.AgentStateMessage,threadId:E,agentName:e,nodeName:o,runId:a,running:n,role:"assistant",state:JSON.stringify(t),active:!1}];default:return[]}}))};function Zt(E){var e;let a=[];for(let s of E)if(s.role==="assistant"||s.role==="user"||s.role==="system"){let t=Qt(s.content);if(t){let n={id:s.id,role:s.role,content:t};a.push(n)}if(s.role==="assistant"&&s.toolCalls&&s.toolCalls.length>0)for(let n of s.toolCalls){let r={id:n.id,name:n.function.name,arguments:JSON.parse(n.function.arguments),parentMessageId:s.id};a.push(r)}}else if(s.role==="tool"){let t="unknown";for(let r of E)if(r.role==="assistant"&&((e=r.toolCalls)!=null&&e.length)){for(let o of r.toolCalls)if(o.id===s.toolCallId){t=o.function.name;break}}let n={id:s.id,result:s.content,actionExecutionId:s.toolCallId,actionName:t};a.push(n)}return a}import{v4 as K}from"uuid";import{catchError as rt,map as it,tap as ne}from"rxjs/operators";import{finalize as lt}from"rxjs/operators";import{pipe as gt,from as se,of as ct,EMPTY as ae}from"rxjs";import{lastValueFrom as Et}from"rxjs";import{mergeMap as te,finalize as ee}from"rxjs";import{EventType as y}from"@ag-ui/core";var z=E=>a=>{let e,s,t,n=()=>{if(!e||t!=="text")throw new Error("No text message to close");let l={type:y.TEXT_MESSAGE_END,messageId:e.messageId};return t=void 0,e=void 0,E&&console.debug("[TRANSFORM]: TEXT_MESSAGE_END",JSON.stringify(l)),l},r=()=>{if(!s||t!=="tool")throw new Error("No tool call to close");let l={type:y.TOOL_CALL_END,toolCallId:s.toolCallId};return t=void 0,s=void 0,E&&console.debug("[TRANSFORM]: TOOL_CALL_END",JSON.stringify(l)),l},o=()=>t==="text"?[n()]:t==="tool"?[r()]:[];return a.pipe(te(l=>{switch(l.type){case y.TEXT_MESSAGE_START:case y.TEXT_MESSAGE_CONTENT:case y.TEXT_MESSAGE_END:case y.TOOL_CALL_START:case y.TOOL_CALL_ARGS:case y.TOOL_CALL_END:case y.TOOL_CALL_RESULT:case y.STATE_SNAPSHOT:case y.STATE_DELTA:case y.MESSAGES_SNAPSHOT:case y.CUSTOM:case y.RUN_STARTED:case y.RUN_FINISHED:case y.RUN_ERROR:case y.STEP_STARTED:case y.STEP_FINISHED:case y.THINKING_START:case y.THINKING_END:case y.THINKING_TEXT_MESSAGE_START:case y.THINKING_TEXT_MESSAGE_CONTENT:case y.THINKING_TEXT_MESSAGE_END:return[...o(),l];case y.RAW:case y.ACTIVITY_SNAPSHOT:case y.ACTIVITY_DELTA:return[l];case y.TEXT_MESSAGE_CHUNK:let S=l,H=[];if((t!=="text"||S.messageId!==void 0&&S.messageId!==(e==null?void 0:e.messageId))&&H.push(...o()),t!=="text"){if(S.messageId===void 0)throw new Error("First TEXT_MESSAGE_CHUNK must have a messageId");e={messageId:S.messageId},t="text";let g={type:y.TEXT_MESSAGE_START,messageId:S.messageId,role:S.role||"assistant"};H.push(g),E&&console.debug("[TRANSFORM]: TEXT_MESSAGE_START",JSON.stringify(g))}if(S.delta!==void 0){let g={type:y.TEXT_MESSAGE_CONTENT,messageId:e.messageId,delta:S.delta};H.push(g),E&&console.debug("[TRANSFORM]: TEXT_MESSAGE_CONTENT",JSON.stringify(g))}return H;case y.TOOL_CALL_CHUNK:let T=l,v=[];if((t!=="tool"||T.toolCallId!==void 0&&T.toolCallId!==(s==null?void 0:s.toolCallId))&&v.push(...o()),t!=="tool"){if(T.toolCallId===void 0)throw new Error("First TOOL_CALL_CHUNK must have a toolCallId");if(T.toolCallName===void 0)throw new Error("First TOOL_CALL_CHUNK must have a toolCallName");s={toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId},t="tool";let g={type:y.TOOL_CALL_START,toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId};v.push(g),E&&console.debug("[TRANSFORM]: TOOL_CALL_START",JSON.stringify(g))}if(T.delta!==void 0){let g={type:y.TOOL_CALL_ARGS,toolCallId:s.toolCallId,delta:T.delta};v.push(g),E&&console.debug("[TRANSFORM]: TOOL_CALL_ARGS",JSON.stringify(g))}return v}let u=l.type;return[]}),ee(()=>{o()}))};import{AGUIConnectNotImplementedError as ut}from"@ag-ui/core";var j=class{constructor({agentId:a,description:e,threadId:s,initialMessages:t,initialState:n,debug:r}={}){this.debug=!1;this.subscribers=[];this.isRunning=!1;this.agentId=a,this.description=e!=null?e:"",this.threadId=s!=null?s:K(),this.messages=M(t!=null?t:[]),this.state=M(n!=null?n:{}),this.debug=r!=null?r:!1}subscribe(a){return this.subscribers.push(a),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(e=>e!==a)}}}async runAgent(a,e){var s;try{this.isRunning=!0,this.agentId=(s=this.agentId)!=null?s:K();let t=this.prepareRunAgentInput(a),n,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{n=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o);let l=gt(()=>this.run(t),z(this.debug),k(this.debug),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),rt(S=>(this.isRunning=!1,this.onError(t,S,o))),lt(()=>{this.isRunning=!1,this.onFinalize(t,o)}));await Et(l(ct(null)));let u=M(this.messages).filter(S=>!r.has(S.id));return{result:n,newMessages:u}}finally{this.isRunning=!1}}connect(a){throw new ut}async connectAgent(a,e){var s;try{this.isRunning=!0,this.agentId=(s=this.agentId)!=null?s:K();let t=this.prepareRunAgentInput(a),n,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{n=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o);let l=gt(()=>this.connect(t),z(this.debug),k(this.debug),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),rt(S=>(this.isRunning=!1,S instanceof ut?ae:this.onError(t,S,o))),lt(()=>{this.isRunning=!1,this.onFinalize(t,o)}));await Et(l(ct(null)));let u=M(this.messages).filter(S=>!r.has(S.id));return{result:n,newMessages:u}}finally{this.isRunning=!1}}abortRun(){}apply(a,e,s){return $(a,e,this,s)}processApplyEvents(a,e,s){return e.pipe(ne(t=>{t.messages&&(this.messages=t.messages,s.forEach(n=>{var r;(r=n.onMessagesChanged)==null||r.call(n,{messages:this.messages,state:this.state,agent:this,input:a})})),t.state&&(this.state=t.state,s.forEach(n=>{var r;(r=n.onStateChanged)==null||r.call(n,{state:this.state,messages:this.messages,agent:this,input:a})}))}))}prepareRunAgentInput(a){var t,n,r;let s=M(this.messages).filter(o=>o.role!=="activity");return{threadId:this.threadId,runId:(a==null?void 0:a.runId)||K(),tools:M((t=a==null?void 0:a.tools)!=null?t:[]),context:M((n=a==null?void 0:a.context)!=null?n:[]),forwardedProps:M((r=a==null?void 0:a.forwardedProps)!=null?r:{}),state:M(this.state),messages:s}}async onInitialize(a,e){let s=await _(e,this.messages,this.state,(t,n,r)=>{var o;return(o=t.onRunInitialized)==null?void 0:o.call(t,{messages:n,state:r,agent:this,input:a})});(s.messages!==void 0||s.state!==void 0)&&(s.messages&&(this.messages=s.messages,a.messages=s.messages,e.forEach(t=>{var n;(n=t.onMessagesChanged)==null||n.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),s.state&&(this.state=s.state,a.state=s.state,e.forEach(t=>{var n;(n=t.onStateChanged)==null||n.call(t,{state:this.state,messages:this.messages,agent:this,input:a})})))}onError(a,e,s){return se(_(s,this.messages,this.state,(t,n,r)=>{var o;return(o=t.onRunFailed)==null?void 0:o.call(t,{error:e,messages:n,state:r,agent:this,input:a})})).pipe(it(t=>{let n=t;if((n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,s.forEach(r=>{var o;(o=r.onMessagesChanged)==null||o.call(r,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state!==void 0&&(this.state=n.state,s.forEach(r=>{var o;(o=r.onStateChanged)==null||o.call(r,{state:this.state,messages:this.messages,agent:this,input:a})}))),n.stopPropagation!==!0)throw console.error("Agent execution failed:",e),e;return{}}))}async onFinalize(a,e){let s=await _(e,this.messages,this.state,(t,n,r)=>{var o;return(o=t.onRunFinalized)==null?void 0:o.call(t,{messages:n,state:r,agent:this,input:a})});(s.messages!==void 0||s.state!==void 0)&&(s.messages!==void 0&&(this.messages=s.messages,e.forEach(t=>{var n;(n=t.onMessagesChanged)==null||n.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),s.state!==void 0&&(this.state=s.state,e.forEach(t=>{var n;(n=t.onStateChanged)==null||n.call(t,{state:this.state,messages:this.messages,agent:this,input:a})})))}clone(){let a=Object.create(Object.getPrototypeOf(this));return a.agentId=this.agentId,a.description=this.description,a.threadId=this.threadId,a.messages=M(this.messages),a.state=M(this.state),a.debug=this.debug,a.isRunning=this.isRunning,a.subscribers=[...this.subscribers],a}addMessage(a){this.messages.push(a),(async()=>{var e,s,t;for(let n of this.subscribers)await((e=n.onNewMessage)==null?void 0:e.call(n,{message:a,messages:this.messages,state:this.state,agent:this}));if(a.role==="assistant"&&a.toolCalls)for(let n of a.toolCalls)for(let r of this.subscribers)await((s=r.onNewToolCall)==null?void 0:s.call(r,{toolCall:n,messages:this.messages,state:this.state,agent:this}));for(let n of this.subscribers)await((t=n.onMessagesChanged)==null?void 0:t.call(n,{messages:this.messages,state:this.state,agent:this}))})()}addMessages(a){this.messages.push(...a),(async()=>{var e,s,t;for(let n of a){for(let r of this.subscribers)await((e=r.onNewMessage)==null?void 0:e.call(r,{message:n,messages:this.messages,state:this.state,agent:this}));if(n.role==="assistant"&&n.toolCalls)for(let r of n.toolCalls)for(let o of this.subscribers)await((s=o.onNewToolCall)==null?void 0:s.call(o,{toolCall:r,messages:this.messages,state:this.state,agent:this}))}for(let n of this.subscribers)await((t=n.onMessagesChanged)==null?void 0:t.call(n,{messages:this.messages,state:this.state,agent:this}))})()}setMessages(a){this.messages=M(a),(async()=>{var e;for(let s of this.subscribers)await((e=s.onMessagesChanged)==null?void 0:e.call(s,{messages:this.messages,state:this.state,agent:this}))})()}setState(a){this.state=M(a),(async()=>{var e;for(let s of this.subscribers)await((e=s.onStateChanged)==null?void 0:e.call(s,{messages:this.messages,state:this.state,agent:this}))})()}legacy_to_be_removed_runAgentBridged(a){var s;this.agentId=(s=this.agentId)!=null?s:K();let e=this.prepareRunAgentInput(a);return this.run(e).pipe(z(this.debug),k(this.debug),q(this.threadId,e.runId,this.agentId),t=>t.pipe(it(n=>(this.debug&&console.debug("[LEGACY]:",JSON.stringify(n)),n))))}};var Q=class extends j{constructor(e){var s;super(e);this.abortController=new AbortController;this.url=e.url,this.headers=M((s=e.headers)!=null?s:{})}requestInit(e){return{method:"POST",headers:U(O({},this.headers),{"Content-Type":"application/json",Accept:"text/event-stream"}),body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,s){var t;return this.abortController=(t=e==null?void 0:e.abortController)!=null?t:new AbortController,super.runAgent(e,s)}abortRun(){this.abortController.abort(),super.abortRun()}run(e){let s=V(this.url,this.requestInit(e));return W(s)}clone(){var n;let e=super.clone();e.url=this.url,e.headers=M((n=this.headers)!=null?n:{});let s=new AbortController,t=this.abortController.signal;return t.aborted&&s.abort(t.reason),e.abortController=s,e}};import{EventType as X}from"@ag-ui/core";function oe(E){let a=[],e=new Map,s=new Map;for(let t of E)if(t.type===X.TEXT_MESSAGE_START){let n=t,r=n.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.start=n}else if(t.type===X.TEXT_MESSAGE_CONTENT){let n=t,r=n.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]}),e.get(r).contents.push(n)}else if(t.type===X.TEXT_MESSAGE_END){let n=t,r=n.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.end=n,pt(r,o,a),e.delete(r)}else if(t.type===X.TOOL_CALL_START){let n=t,r=n.toolCallId;s.has(r)||s.set(r,{args:[],otherEvents:[]});let o=s.get(r);o.start=n}else if(t.type===X.TOOL_CALL_ARGS){let n=t,r=n.toolCallId;s.has(r)||s.set(r,{args:[],otherEvents:[]}),s.get(r).args.push(n)}else if(t.type===X.TOOL_CALL_END){let n=t,r=n.toolCallId;s.has(r)||s.set(r,{args:[],otherEvents:[]});let o=s.get(r);o.end=n,dt(r,o,a),s.delete(r)}else{let n=!1;for(let[r,o]of e)if(o.start&&!o.end){o.otherEvents.push(t),n=!0;break}if(!n){for(let[r,o]of s)if(o.start&&!o.end){o.otherEvents.push(t),n=!0;break}}n||a.push(t)}for(let[t,n]of e)pt(t,n,a);for(let[t,n]of s)dt(t,n,a);return a}function pt(E,a,e){if(a.start&&e.push(a.start),a.contents.length>0){let s=a.contents.map(n=>n.delta).join(""),t={type:X.TEXT_MESSAGE_CONTENT,messageId:E,delta:s};e.push(t)}a.end&&e.push(a.end);for(let s of a.otherEvents)e.push(s)}function dt(E,a,e){if(a.start&&e.push(a.start),a.args.length>0){let s=a.args.map(n=>n.delta).join(""),t={type:X.TOOL_CALL_ARGS,toolCallId:E,delta:s};e.push(t)}a.end&&e.push(a.end);for(let s of a.otherEvents)e.push(s)}export*from"@ag-ui/core";export{j as AbstractAgent,Q as HttpAgent,oe as compactEvents,q as convertToLegacyEvents,$ as defaultApplyEvents,Y as parseProtoStream,b as parseSSEStream,ge as randomUUID,V as runHttpRequest,M as structuredClone_,z as transformChunks,W as transformHttpEventStream,k as verifyEvents};
8
8
  //# sourceMappingURL=index.mjs.map