@ag-ui/client
Advanced tools
+2
-1
@@ -1,2 +0,2 @@ | ||
| import { Message, State, RunAgentInput, BaseEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, ActivitySnapshotEvent, ActivityMessage, ActivityDeltaEvent, RawEvent, CustomEvent, ToolCall } from '@ag-ui/core'; | ||
| import { Message, State, RunAgentInput, BaseEvent, FetchRunHistoryOptions, FetchRunHistoryResult, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, ActivitySnapshotEvent, ActivityMessage, ActivityDeltaEvent, RawEvent, CustomEvent, ToolCall } from '@ag-ui/core'; | ||
| export * from '@ag-ui/core'; | ||
@@ -258,2 +258,3 @@ import { Observable } from 'rxjs'; | ||
| protected connect(input: RunAgentInput): Observable<BaseEvent>; | ||
| protected fetchRunHistory(options: FetchRunHistoryOptions): Promise<FetchRunHistoryResult | undefined>; | ||
| connectAgent(parameters?: RunAgentParameters, subscriber?: AgentSubscriber): Promise<RunAgentResult>; | ||
@@ -260,0 +261,0 @@ abortRun(): void; |
+2
-1
@@ -1,2 +0,2 @@ | ||
| import { Message, State, RunAgentInput, BaseEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, ActivitySnapshotEvent, ActivityMessage, ActivityDeltaEvent, RawEvent, CustomEvent, ToolCall } from '@ag-ui/core'; | ||
| import { Message, State, RunAgentInput, BaseEvent, FetchRunHistoryOptions, FetchRunHistoryResult, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, ActivitySnapshotEvent, ActivityMessage, ActivityDeltaEvent, RawEvent, CustomEvent, ToolCall } from '@ag-ui/core'; | ||
| export * from '@ag-ui/core'; | ||
@@ -258,2 +258,3 @@ import { Observable } from 'rxjs'; | ||
| protected connect(input: RunAgentInput): Observable<BaseEvent>; | ||
| protected fetchRunHistory(options: FetchRunHistoryOptions): Promise<FetchRunHistoryResult | undefined>; | ||
| connectAgent(parameters?: RunAgentParameters, subscriber?: AgentSubscriber): Promise<RunAgentResult>; | ||
@@ -260,0 +261,0 @@ abortRun(): void; |
+5
-5
@@ -1,8 +0,8 @@ | ||
| "use strict";var Kt=Object.create;var tt=Object.defineProperty,Jt=Object.defineProperties,Vt=Object.getOwnPropertyDescriptor,Wt=Object.getOwnPropertyDescriptors,Yt=Object.getOwnPropertyNames,st=Object.getOwnPropertySymbols,qt=Object.getPrototypeOf,Tt=Object.prototype.hasOwnProperty,Ct=Object.prototype.propertyIsEnumerable;var Mt=(i,a,e)=>a in i?tt(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e,L=(i,a)=>{for(var e in a||(a={}))Tt.call(a,e)&&Mt(i,e,a[e]);if(st)for(var e of st(a))Ct.call(a,e)&&Mt(i,e,a[e]);return i},b=(i,a)=>Jt(i,Wt(a));var Rt=(i,a)=>{var e={};for(var n in i)Tt.call(i,n)&&a.indexOf(n)<0&&(e[n]=i[n]);if(i!=null&&st)for(var n of st(i))a.indexOf(n)<0&&Ct.call(i,n)&&(e[n]=i[n]);return e};var Qt=(i,a)=>{for(var e in a)tt(i,e,{get:a[e],enumerable:!0})},at=(i,a,e,n)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of Yt(a))!Tt.call(i,t)&&t!==e&&tt(i,t,{get:()=>a[t],enumerable:!(n=Vt(a,t))||n.enumerable});return i},D=(i,a,e)=>(at(i,a,"default"),e&&at(e,a,"default")),ot=(i,a,e)=>(e=i!=null?Kt(qt(i)):{},at(a||!i||!i.__esModule?tt(e,"default",{value:i,enumerable:!0}):e,i)),Zt=i=>at(tt({},"__esModule",{value:!0}),i);var P={};Qt(P,{AbstractAgent:()=>Q,BackwardCompatibility_0_0_39:()=>Y,FilterToolCallsMiddleware:()=>nt,FunctionMiddleware:()=>W,HttpAgent:()=>mt,Middleware:()=>U,compactEvents:()=>zt,convertToLegacyEvents:()=>dt,defaultApplyEvents:()=>J,parseProtoStream:()=>ct,parseSSEStream:()=>gt,randomUUID:()=>te,runHttpRequest:()=>lt,structuredClone_:()=>M,transformChunks:()=>$,transformHttpEventStream:()=>Et,verifyEvents:()=>V});module.exports=Zt(P);var x=require("@ag-ui/core"),K=require("rxjs/operators"),rt=require("rxjs");var xt=require("uuid");var M=i=>{if(typeof structuredClone=="function")return structuredClone(i);try{return JSON.parse(JSON.stringify(i))}catch(a){return L({},i)}};function te(){return(0,xt.v4)()}var St=require("fast-json-patch");async function N(i,a,e,n){let t=a,s=e,r;for(let o of i)try{let l=await n(o,M(t),M(s));if(l===void 0)continue;if(l.messages!==void 0&&(t=l.messages),l.state!==void 0&&(s=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 L(L(L({},JSON.stringify(t)!==JSON.stringify(a)?{messages:t}:{}),JSON.stringify(s)!==JSON.stringify(e)?{state:s}:{}),r!==void 0?{stopPropagation:r}:{})}var It=ot(require("untruncate-json"));var J=(i,a,e,n)=>{let t=M(e.messages),s=M(i.state),r={},o=d=>{d.messages!==void 0&&(t=d.messages,r.messages=d.messages),d.state!==void 0&&(s=d.state,r.state=d.state)},l=()=>{let d=M(r);return r={},d.messages!==void 0||d.state!==void 0?(0,rt.of)(d):rt.EMPTY};return a.pipe((0,K.concatMap)(async d=>{var T,h,c,F,z;let _=await N(n,t,s,(E,g,p)=>{var m;return(m=E.onEvent)==null?void 0:m.call(E,{event:d,agent:e,input:i,messages:g,state:p})});if(o(_),_.stopPropagation===!0)return l();switch(d.type){case x.EventType.TEXT_MESSAGE_START:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onTextMessageStartEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{messageId:g,role:p="assistant"}=d;if(!t.find(u=>u.id===g)){let u={id:g,role:p,content:""};t.push(u),o({messages:t})}}return l()}case x.EventType.TEXT_MESSAGE_CONTENT:{let{messageId:E,delta:g}=d,p=t.find(u=>u.id===E);if(!p)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${E}'`),l();let m=await N(n,t,s,(u,y,C)=>{var w;return(w=u.onTextMessageContentEvent)==null?void 0:w.call(u,{event:d,messages:y,state:C,agent:e,input:i,textMessageBuffer:typeof p.content=="string"?p.content:""})});if(o(m),m.stopPropagation!==!0){let u=typeof p.content=="string"?p.content:"";p.content=`${u}${g}`,o({messages:t})}return l()}case x.EventType.TEXT_MESSAGE_END:{let{messageId:E}=d,g=t.find(m=>m.id===E);if(!g)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${E}'`),l();let p=await N(n,t,s,(m,u,y)=>{var C;return(C=m.onTextMessageEndEvent)==null?void 0:C.call(m,{event:d,messages:u,state:y,agent:e,input:i,textMessageBuffer:typeof g.content=="string"?g.content:""})});return o(p),await Promise.all(n.map(m=>{var u;(u=m.onNewMessage)==null||u.call(m,{message:g,messages:t,state:s,agent:e,input:i})})),l()}case x.EventType.TOOL_CALL_START:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onToolCallStartEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{toolCallId:g,toolCallName:p,parentMessageId:m}=d,u;m&&t.length>0&&t[t.length-1].id===m?u=t[t.length-1]:(u={id:m||g,role:"assistant",toolCalls:[]},t.push(u)),(T=u.toolCalls)!=null||(u.toolCalls=[]),u.toolCalls.push({id:g,type:"function",function:{name:p,arguments:""}}),o({messages:t})}return l()}case x.EventType.TOOL_CALL_ARGS:{let{toolCallId:E,delta:g}=d,p=t.find(y=>{var C;return(C=y.toolCalls)==null?void 0:C.some(w=>w.id===E)});if(!p)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${E}'`),l();let m=p.toolCalls.find(y=>y.id===E);if(!m)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${E}'`),l();let u=await N(n,t,s,(y,C,w)=>{var ft;let H=m.function.arguments,k=m.function.name,Z={};try{Z=(0,It.default)(H)}catch(fe){}return(ft=y.onToolCallArgsEvent)==null?void 0:ft.call(y,{event:d,messages:C,state:w,agent:e,input:i,toolCallBuffer:H,toolCallName:k,partialToolCallArgs:Z})});return o(u),u.stopPropagation!==!0&&(m.function.arguments+=g,o({messages:t})),l()}case x.EventType.TOOL_CALL_END:{let{toolCallId:E}=d,g=t.find(u=>{var y;return(y=u.toolCalls)==null?void 0:y.some(C=>C.id===E)});if(!g)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${E}'`),l();let p=g.toolCalls.find(u=>u.id===E);if(!p)return console.warn(`TOOL_CALL_END: No tool call found with ID '${E}'`),l();let m=await N(n,t,s,(u,y,C)=>{var Z;let w=p.function.arguments,H=p.function.name,k={};try{k=JSON.parse(w)}catch(ft){}return(Z=u.onToolCallEndEvent)==null?void 0:Z.call(u,{event:d,messages:y,state:C,agent:e,input:i,toolCallName:H,toolCallArgs:k})});return o(m),await Promise.all(n.map(u=>{var y;(y=u.onNewToolCall)==null||y.call(u,{toolCall:p,messages:t,state:s,agent:e,input:i})})),l()}case x.EventType.TOOL_CALL_RESULT:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onToolCallResultEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{messageId:g,toolCallId:p,content:m,role:u}=d,y={id:g,toolCallId:p,role:u||"tool",content:m};t.push(y),await Promise.all(n.map(C=>{var w;(w=C.onNewMessage)==null||w.call(C,{message:y,messages:t,state:s,agent:e,input:i})})),o({messages:t})}return l()}case x.EventType.STATE_SNAPSHOT:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onStateSnapshotEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{snapshot:g}=d;s=g,o({state:s})}return l()}case x.EventType.STATE_DELTA:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onStateDeltaEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{delta:g}=d;try{s=(0,St.applyPatch)(s,g,!0,!1).newDocument,o({state:s})}catch(p){let m=p instanceof Error?p.message:String(p);console.warn(`Failed to apply state patch: | ||
| Current state: ${JSON.stringify(s,null,2)} | ||
| "use strict";var Kt=Object.create;var tt=Object.defineProperty,Jt=Object.defineProperties,Vt=Object.getOwnPropertyDescriptor,Wt=Object.getOwnPropertyDescriptors,Yt=Object.getOwnPropertyNames,st=Object.getOwnPropertySymbols,qt=Object.getPrototypeOf,Tt=Object.prototype.hasOwnProperty,Ct=Object.prototype.propertyIsEnumerable;var Mt=(i,s,e)=>s in i?tt(i,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[s]=e,L=(i,s)=>{for(var e in s||(s={}))Tt.call(s,e)&&Mt(i,e,s[e]);if(st)for(var e of st(s))Ct.call(s,e)&&Mt(i,e,s[e]);return i},b=(i,s)=>Jt(i,Wt(s));var Rt=(i,s)=>{var e={};for(var n in i)Tt.call(i,n)&&s.indexOf(n)<0&&(e[n]=i[n]);if(i!=null&&st)for(var n of st(i))s.indexOf(n)<0&&Ct.call(i,n)&&(e[n]=i[n]);return e};var Qt=(i,s)=>{for(var e in s)tt(i,e,{get:s[e],enumerable:!0})},at=(i,s,e,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of Yt(s))!Tt.call(i,t)&&t!==e&&tt(i,t,{get:()=>s[t],enumerable:!(n=Vt(s,t))||n.enumerable});return i},D=(i,s,e)=>(at(i,s,"default"),e&&at(e,s,"default")),ot=(i,s,e)=>(e=i!=null?Kt(qt(i)):{},at(s||!i||!i.__esModule?tt(e,"default",{value:i,enumerable:!0}):e,i)),Zt=i=>at(tt({},"__esModule",{value:!0}),i);var P={};Qt(P,{AbstractAgent:()=>Q,BackwardCompatibility_0_0_39:()=>Y,FilterToolCallsMiddleware:()=>nt,FunctionMiddleware:()=>W,HttpAgent:()=>mt,Middleware:()=>U,compactEvents:()=>zt,convertToLegacyEvents:()=>Et,defaultApplyEvents:()=>J,parseProtoStream:()=>ct,parseSSEStream:()=>gt,randomUUID:()=>te,runHttpRequest:()=>lt,structuredClone_:()=>M,transformChunks:()=>$,transformHttpEventStream:()=>dt,verifyEvents:()=>V});module.exports=Zt(P);var x=require("@ag-ui/core"),K=require("rxjs/operators"),rt=require("rxjs");var xt=require("uuid");var M=i=>{if(typeof structuredClone=="function")return structuredClone(i);try{return JSON.parse(JSON.stringify(i))}catch(s){return L({},i)}};function te(){return(0,xt.v4)()}var St=require("fast-json-patch");async function N(i,s,e,n){let t=s,a=e,r;for(let o of i)try{let l=await n(o,M(t),M(a));if(l===void 0)continue;if(l.messages!==void 0&&(t=l.messages),l.state!==void 0&&(a=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 L(L(L({},JSON.stringify(t)!==JSON.stringify(s)?{messages:t}:{}),JSON.stringify(a)!==JSON.stringify(e)?{state:a}:{}),r!==void 0?{stopPropagation:r}:{})}var It=ot(require("untruncate-json"));var J=(i,s,e,n)=>{let t=M(e.messages),a=M(i.state),r={},o=E=>{E.messages!==void 0&&(t=E.messages,r.messages=E.messages),E.state!==void 0&&(a=E.state,r.state=E.state)},l=()=>{let E=M(r);return r={},E.messages!==void 0||E.state!==void 0?(0,rt.of)(E):rt.EMPTY};return s.pipe((0,K.concatMap)(async E=>{var T,h,c,F,z;let _=await N(n,t,a,(d,g,p)=>{var m;return(m=d.onEvent)==null?void 0:m.call(d,{event:E,agent:e,input:i,messages:g,state:p})});if(o(_),_.stopPropagation===!0)return l();switch(E.type){case x.EventType.TEXT_MESSAGE_START:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onTextMessageStartEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});if(o(d),d.stopPropagation!==!0){let{messageId:g,role:p="assistant"}=E;if(!t.find(u=>u.id===g)){let u={id:g,role:p,content:""};t.push(u),o({messages:t})}}return l()}case x.EventType.TEXT_MESSAGE_CONTENT:{let{messageId:d,delta:g}=E,p=t.find(u=>u.id===d);if(!p)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${d}'`),l();let m=await N(n,t,a,(u,y,C)=>{var w;return(w=u.onTextMessageContentEvent)==null?void 0:w.call(u,{event:E,messages:y,state:C,agent:e,input:i,textMessageBuffer:typeof p.content=="string"?p.content:""})});if(o(m),m.stopPropagation!==!0){let u=typeof p.content=="string"?p.content:"";p.content=`${u}${g}`,o({messages:t})}return l()}case x.EventType.TEXT_MESSAGE_END:{let{messageId:d}=E,g=t.find(m=>m.id===d);if(!g)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${d}'`),l();let p=await N(n,t,a,(m,u,y)=>{var C;return(C=m.onTextMessageEndEvent)==null?void 0:C.call(m,{event:E,messages:u,state:y,agent:e,input:i,textMessageBuffer:typeof g.content=="string"?g.content:""})});return o(p),await Promise.all(n.map(m=>{var u;(u=m.onNewMessage)==null||u.call(m,{message:g,messages:t,state:a,agent:e,input:i})})),l()}case x.EventType.TOOL_CALL_START:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onToolCallStartEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});if(o(d),d.stopPropagation!==!0){let{toolCallId:g,toolCallName:p,parentMessageId:m}=E,u;m&&t.length>0&&t[t.length-1].id===m?u=t[t.length-1]:(u={id:m||g,role:"assistant",toolCalls:[]},t.push(u)),(T=u.toolCalls)!=null||(u.toolCalls=[]),u.toolCalls.push({id:g,type:"function",function:{name:p,arguments:""}}),o({messages:t})}return l()}case x.EventType.TOOL_CALL_ARGS:{let{toolCallId:d,delta:g}=E,p=t.find(y=>{var C;return(C=y.toolCalls)==null?void 0:C.some(w=>w.id===d)});if(!p)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${d}'`),l();let m=p.toolCalls.find(y=>y.id===d);if(!m)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${d}'`),l();let u=await N(n,t,a,(y,C,w)=>{var ft;let H=m.function.arguments,k=m.function.name,Z={};try{Z=(0,It.default)(H)}catch(fe){}return(ft=y.onToolCallArgsEvent)==null?void 0:ft.call(y,{event:E,messages:C,state:w,agent:e,input:i,toolCallBuffer:H,toolCallName:k,partialToolCallArgs:Z})});return o(u),u.stopPropagation!==!0&&(m.function.arguments+=g,o({messages:t})),l()}case x.EventType.TOOL_CALL_END:{let{toolCallId:d}=E,g=t.find(u=>{var y;return(y=u.toolCalls)==null?void 0:y.some(C=>C.id===d)});if(!g)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${d}'`),l();let p=g.toolCalls.find(u=>u.id===d);if(!p)return console.warn(`TOOL_CALL_END: No tool call found with ID '${d}'`),l();let m=await N(n,t,a,(u,y,C)=>{var Z;let w=p.function.arguments,H=p.function.name,k={};try{k=JSON.parse(w)}catch(ft){}return(Z=u.onToolCallEndEvent)==null?void 0:Z.call(u,{event:E,messages:y,state:C,agent:e,input:i,toolCallName:H,toolCallArgs:k})});return o(m),await Promise.all(n.map(u=>{var y;(y=u.onNewToolCall)==null||y.call(u,{toolCall:p,messages:t,state:a,agent:e,input:i})})),l()}case x.EventType.TOOL_CALL_RESULT:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onToolCallResultEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});if(o(d),d.stopPropagation!==!0){let{messageId:g,toolCallId:p,content:m,role:u}=E,y={id:g,toolCallId:p,role:u||"tool",content:m};t.push(y),await Promise.all(n.map(C=>{var w;(w=C.onNewMessage)==null||w.call(C,{message:y,messages:t,state:a,agent:e,input:i})})),o({messages:t})}return l()}case x.EventType.STATE_SNAPSHOT:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStateSnapshotEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});if(o(d),d.stopPropagation!==!0){let{snapshot:g}=E;a=g,o({state:a})}return l()}case x.EventType.STATE_DELTA:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStateDeltaEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});if(o(d),d.stopPropagation!==!0){let{delta:g}=E;try{a=(0,St.applyPatch)(a,g,!0,!1).newDocument,o({state:a})}catch(p){let m=p instanceof Error?p.message:String(p);console.warn(`Failed to apply state patch: | ||
| Current state: ${JSON.stringify(a,null,2)} | ||
| Patch operations: ${JSON.stringify(g,null,2)} | ||
| Error: ${m}`)}}return l()}case x.EventType.MESSAGES_SNAPSHOT:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onMessagesSnapshotEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let{messages:g}=d;t=g,o({messages:t})}return l()}case x.EventType.ACTIVITY_SNAPSHOT:{let E=d,g=t.findIndex(C=>C.id===E.messageId),p=g>=0?t[g]:void 0,m=(p==null?void 0:p.role)==="activity"?p:void 0,u=(h=E.replace)!=null?h:!0,y=await N(n,t,s,(C,w,H)=>{var k;return(k=C.onActivitySnapshotEvent)==null?void 0:k.call(C,{event:E,messages:w,state:H,agent:e,input:i,activityMessage:m,existingMessage:p})});if(o(y),y.stopPropagation!==!0){let C={id:E.messageId,role:"activity",activityType:E.activityType,content:M(E.content)},w;g===-1?(t.push(C),w=C):m?u&&(t[g]=b(L({},m),{activityType:E.activityType,content:M(E.content)})):u&&(t[g]=C,w=C),o({messages:t}),w&&await Promise.all(n.map(H=>{var k;return(k=H.onNewMessage)==null?void 0:k.call(H,{message:w,messages:t,state:s,agent:e,input:i})}))}return l()}case x.EventType.ACTIVITY_DELTA:{let E=d,g=t.findIndex(y=>y.id===E.messageId);if(g===-1)return console.warn(`ACTIVITY_DELTA: No message found with ID '${E.messageId}' to apply patch`),l();let p=t[g];if(p.role!=="activity")return console.warn(`ACTIVITY_DELTA: Message '${E.messageId}' is not an activity message`),l();let m=p,u=await N(n,t,s,(y,C,w)=>{var H;return(H=y.onActivityDeltaEvent)==null?void 0:H.call(y,{event:E,messages:C,state:w,agent:e,input:i,activityMessage:m})});if(o(u),u.stopPropagation!==!0)try{let y=M((c=m.content)!=null?c:{}),w=(0,St.applyPatch)(y,(F=E.patch)!=null?F:[],!0,!1).newDocument;t[g]=b(L({},m),{content:M(w),activityType:E.activityType}),o({messages:t})}catch(y){let C=y instanceof Error?y.message:String(y);console.warn(`Failed to apply activity patch for '${E.messageId}': ${C}`)}return l()}case x.EventType.RAW:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onRawEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.CUSTOM:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onCustomEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.RUN_STARTED:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onRunStartedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});if(o(E),E.stopPropagation!==!0){let g=d;if((z=g.input)!=null&&z.messages){for(let p of g.input.messages)t.find(u=>u.id===p.id)||t.push(p);o({messages:t})}}return l()}case x.EventType.RUN_FINISHED:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onRunFinishedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i,result:d.result})});return o(E),l()}case x.EventType.RUN_ERROR:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onRunErrorEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.STEP_STARTED:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onStepStartedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.STEP_FINISHED:{let E=await N(n,t,s,(g,p,m)=>{var u;return(u=g.onStepFinishedEvent)==null?void 0:u.call(g,{event:d,messages:p,state:m,agent:e,input:i})});return o(E),l()}case x.EventType.TEXT_MESSAGE_CHUNK:throw new Error("TEXT_MESSAGE_CHUNK must be tranformed before being applied");case x.EventType.TOOL_CALL_CHUNK:throw new Error("TOOL_CALL_CHUNK must be tranformed before being applied");case x.EventType.THINKING_START:return l();case x.EventType.THINKING_END:return l();case x.EventType.THINKING_TEXT_MESSAGE_START:return l();case x.EventType.THINKING_TEXT_MESSAGE_CONTENT:return l();case x.EventType.THINKING_TEXT_MESSAGE_END:return l()}let v=d.type;return l()}),(0,K.mergeAll)(),n.length>0?(0,K.defaultIfEmpty)({}):d=>d)};var S=require("@ag-ui/core"),A=require("rxjs"),_t=require("rxjs/operators"),V=i=>a=>{let e=new Map,n=new Map,t=!1,s=!1,r=!1,o=new Map,l=!1,d=!1,_=!1,v=()=>{e.clear(),n.clear(),o.clear(),l=!1,d=!1,t=!1,s=!1,_=!0};return a.pipe((0,_t.mergeMap)(T=>{let h=T.type;if(i&&console.debug("[VERIFY]:",JSON.stringify(T)),s)return(0,A.throwError)(()=>new S.AGUIError(`Cannot send event type '${h}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(t&&h!==S.EventType.RUN_ERROR&&h!==S.EventType.RUN_STARTED)return(0,A.throwError)(()=>new S.AGUIError(`Cannot send event type '${h}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(r){if(h===S.EventType.RUN_STARTED){if(_&&!t)return(0,A.throwError)(()=>new S.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."));t&&v()}}else if(r=!0,h!==S.EventType.RUN_STARTED&&h!==S.EventType.RUN_ERROR)return(0,A.throwError)(()=>new S.AGUIError("First event must be 'RUN_STARTED'"));switch(h){case S.EventType.TEXT_MESSAGE_START:{let c=T.messageId;return e.has(c)?(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${c}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(e.set(c,!0),(0,A.of)(T))}case S.EventType.TEXT_MESSAGE_CONTENT:{let c=T.messageId;return e.has(c)?(0,A.of)(T):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${c}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case S.EventType.TEXT_MESSAGE_END:{let c=T.messageId;return e.has(c)?(e.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${c}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case S.EventType.TOOL_CALL_START:{let c=T.toolCallId;return n.has(c)?(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${c}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(n.set(c,!0),(0,A.of)(T))}case S.EventType.TOOL_CALL_ARGS:{let c=T.toolCallId;return n.has(c)?(0,A.of)(T):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${c}'. Start a tool call with 'TOOL_CALL_START' first.`))}case S.EventType.TOOL_CALL_END:{let c=T.toolCallId;return n.has(c)?(n.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${c}'. A 'TOOL_CALL_START' event must be sent first.`))}case S.EventType.STEP_STARTED:{let c=T.stepName;return o.has(c)?(0,A.throwError)(()=>new S.AGUIError(`Step "${c}" is already active for 'STEP_STARTED'`)):(o.set(c,!0),(0,A.of)(T))}case S.EventType.STEP_FINISHED:{let c=T.stepName;return o.has(c)?(o.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'STEP_FINISHED' for step "${c}" that was not started`))}case S.EventType.RUN_STARTED:return _=!0,(0,A.of)(T);case S.EventType.RUN_FINISHED:{if(o.size>0){let c=Array.from(o.keys()).join(", ");return(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'RUN_FINISHED' while steps are still active: ${c}`))}if(e.size>0){let c=Array.from(e.keys()).join(", ");return(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'RUN_FINISHED' while text messages are still active: ${c}`))}if(n.size>0){let c=Array.from(n.keys()).join(", ");return(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${c}`))}return t=!0,(0,A.of)(T)}case S.EventType.RUN_ERROR:return s=!0,(0,A.of)(T);case S.EventType.CUSTOM:return(0,A.of)(T);case S.EventType.THINKING_TEXT_MESSAGE_START:return l?d?(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.")):(d=!0,(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first."));case S.EventType.THINKING_TEXT_MESSAGE_CONTENT:return d?(0,A.of)(T):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first."));case S.EventType.THINKING_TEXT_MESSAGE_END:return d?(d=!1,(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first."));case S.EventType.THINKING_START:return l?(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.")):(l=!0,(0,A.of)(T));case S.EventType.THINKING_END:return l?(l=!1,(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first."));default:return(0,A.of)(T)}}))};var Ot=require("@ag-ui/core"),ut=require("rxjs");var B=require("rxjs"),it=require("rxjs/operators");var lt=(i,a)=>(0,B.defer)(()=>(0,B.from)(fetch(i,a))).pipe((0,it.switchMap)(e=>{var s;if(!e.ok){let r=e.headers.get("content-type")||"";return(0,B.from)(e.text()).pipe((0,it.mergeMap)(o=>{let l=o;if(r.includes("application/json"))try{l=JSON.parse(o)}catch(_){}let d=new Error(`HTTP ${e.status}: ${typeof l=="string"?l:JSON.stringify(l)}`);return d.status=e.status,d.payload=l,(0,B.throwError)(()=>d)}))}let n={type:"headers",status:e.status,headers:e.headers},t=(s=e.body)==null?void 0:s.getReader();return t?new B.Observable(r=>(r.next(n),(async()=>{try{for(;;){let{done:o,value:l}=await t.read();if(o)break;let d={type:"data",data:l};r.next(d)}r.complete()}catch(o){r.error(o)}})(),()=>{t.cancel().catch(o=>{if((o==null?void 0:o.name)!=="AbortError")throw o})})):(0,B.throwError)(()=>new Error("Failed to getReader() from response"))}));var Nt=require("rxjs");var gt=i=>{let a=new Nt.Subject,e=new TextDecoder("utf-8",{fatal:!1}),n="";i.subscribe({next:s=>{if(s.type!=="headers"&&s.type==="data"&&s.data){let r=e.decode(s.data,{stream:!0});n+=r;let o=n.split(/\n\n/);n=o.pop()||"";for(let l of o)t(l)}},error:s=>a.error(s),complete:()=>{n&&(n+=e.decode(),t(n)),a.complete()}});function t(s){let r=s.split(` | ||
| Error: ${m}`)}}return l()}case x.EventType.MESSAGES_SNAPSHOT:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onMessagesSnapshotEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});if(o(d),d.stopPropagation!==!0){let{messages:g}=E;t=g,o({messages:t})}return l()}case x.EventType.ACTIVITY_SNAPSHOT:{let d=E,g=t.findIndex(C=>C.id===d.messageId),p=g>=0?t[g]:void 0,m=(p==null?void 0:p.role)==="activity"?p:void 0,u=(h=d.replace)!=null?h:!0,y=await N(n,t,a,(C,w,H)=>{var k;return(k=C.onActivitySnapshotEvent)==null?void 0:k.call(C,{event:d,messages:w,state:H,agent:e,input:i,activityMessage:m,existingMessage:p})});if(o(y),y.stopPropagation!==!0){let C={id:d.messageId,role:"activity",activityType:d.activityType,content:M(d.content)},w;g===-1?(t.push(C),w=C):m?u&&(t[g]=b(L({},m),{activityType:d.activityType,content:M(d.content)})):u&&(t[g]=C,w=C),o({messages:t}),w&&await Promise.all(n.map(H=>{var k;return(k=H.onNewMessage)==null?void 0:k.call(H,{message:w,messages:t,state:a,agent:e,input:i})}))}return l()}case x.EventType.ACTIVITY_DELTA:{let d=E,g=t.findIndex(y=>y.id===d.messageId);if(g===-1)return console.warn(`ACTIVITY_DELTA: No message found with ID '${d.messageId}' to apply patch`),l();let p=t[g];if(p.role!=="activity")return console.warn(`ACTIVITY_DELTA: Message '${d.messageId}' is not an activity message`),l();let m=p,u=await N(n,t,a,(y,C,w)=>{var H;return(H=y.onActivityDeltaEvent)==null?void 0:H.call(y,{event:d,messages:C,state:w,agent:e,input:i,activityMessage:m})});if(o(u),u.stopPropagation!==!0)try{let y=M((c=m.content)!=null?c:{}),w=(0,St.applyPatch)(y,(F=d.patch)!=null?F:[],!0,!1).newDocument;t[g]=b(L({},m),{content:M(w),activityType:d.activityType}),o({messages:t})}catch(y){let C=y instanceof Error?y.message:String(y);console.warn(`Failed to apply activity patch for '${d.messageId}': ${C}`)}return l()}case x.EventType.RAW:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRawEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});return o(d),l()}case x.EventType.CUSTOM:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onCustomEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});return o(d),l()}case x.EventType.RUN_STARTED:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRunStartedEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});if(o(d),d.stopPropagation!==!0){let g=E;if((z=g.input)!=null&&z.messages){for(let p of g.input.messages)t.find(u=>u.id===p.id)||t.push(p);o({messages:t})}}return l()}case x.EventType.RUN_FINISHED:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRunFinishedEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i,result:E.result})});return o(d),l()}case x.EventType.RUN_ERROR:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onRunErrorEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});return o(d),l()}case x.EventType.STEP_STARTED:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStepStartedEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});return o(d),l()}case x.EventType.STEP_FINISHED:{let d=await N(n,t,a,(g,p,m)=>{var u;return(u=g.onStepFinishedEvent)==null?void 0:u.call(g,{event:E,messages:p,state:m,agent:e,input:i})});return o(d),l()}case x.EventType.TEXT_MESSAGE_CHUNK:throw new Error("TEXT_MESSAGE_CHUNK must be tranformed before being applied");case x.EventType.TOOL_CALL_CHUNK:throw new Error("TOOL_CALL_CHUNK must be tranformed before being applied");case x.EventType.THINKING_START:return l();case x.EventType.THINKING_END:return l();case x.EventType.THINKING_TEXT_MESSAGE_START:return l();case x.EventType.THINKING_TEXT_MESSAGE_CONTENT:return l();case x.EventType.THINKING_TEXT_MESSAGE_END:return l()}let v=E.type;return l()}),(0,K.mergeAll)(),n.length>0?(0,K.defaultIfEmpty)({}):E=>E)};var S=require("@ag-ui/core"),A=require("rxjs"),_t=require("rxjs/operators"),V=i=>s=>{let e=new Map,n=new Map,t=!1,a=!1,r=!1,o=new Map,l=!1,E=!1,_=!1,v=()=>{e.clear(),n.clear(),o.clear(),l=!1,E=!1,t=!1,a=!1,_=!0};return s.pipe((0,_t.mergeMap)(T=>{let h=T.type;if(i&&console.debug("[VERIFY]:",JSON.stringify(T)),a)return(0,A.throwError)(()=>new S.AGUIError(`Cannot send event type '${h}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(t&&h!==S.EventType.RUN_ERROR&&h!==S.EventType.RUN_STARTED)return(0,A.throwError)(()=>new S.AGUIError(`Cannot send event type '${h}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(r){if(h===S.EventType.RUN_STARTED){if(_&&!t)return(0,A.throwError)(()=>new S.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."));t&&v()}}else if(r=!0,h!==S.EventType.RUN_STARTED&&h!==S.EventType.RUN_ERROR)return(0,A.throwError)(()=>new S.AGUIError("First event must be 'RUN_STARTED'"));switch(h){case S.EventType.TEXT_MESSAGE_START:{let c=T.messageId;return e.has(c)?(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${c}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(e.set(c,!0),(0,A.of)(T))}case S.EventType.TEXT_MESSAGE_CONTENT:{let c=T.messageId;return e.has(c)?(0,A.of)(T):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${c}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case S.EventType.TEXT_MESSAGE_END:{let c=T.messageId;return e.has(c)?(e.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${c}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case S.EventType.TOOL_CALL_START:{let c=T.toolCallId;return n.has(c)?(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${c}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(n.set(c,!0),(0,A.of)(T))}case S.EventType.TOOL_CALL_ARGS:{let c=T.toolCallId;return n.has(c)?(0,A.of)(T):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${c}'. Start a tool call with 'TOOL_CALL_START' first.`))}case S.EventType.TOOL_CALL_END:{let c=T.toolCallId;return n.has(c)?(n.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${c}'. A 'TOOL_CALL_START' event must be sent first.`))}case S.EventType.STEP_STARTED:{let c=T.stepName;return o.has(c)?(0,A.throwError)(()=>new S.AGUIError(`Step "${c}" is already active for 'STEP_STARTED'`)):(o.set(c,!0),(0,A.of)(T))}case S.EventType.STEP_FINISHED:{let c=T.stepName;return o.has(c)?(o.delete(c),(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'STEP_FINISHED' for step "${c}" that was not started`))}case S.EventType.RUN_STARTED:return _=!0,(0,A.of)(T);case S.EventType.RUN_FINISHED:{if(o.size>0){let c=Array.from(o.keys()).join(", ");return(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'RUN_FINISHED' while steps are still active: ${c}`))}if(e.size>0){let c=Array.from(e.keys()).join(", ");return(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'RUN_FINISHED' while text messages are still active: ${c}`))}if(n.size>0){let c=Array.from(n.keys()).join(", ");return(0,A.throwError)(()=>new S.AGUIError(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${c}`))}return t=!0,(0,A.of)(T)}case S.EventType.RUN_ERROR:return a=!0,(0,A.of)(T);case S.EventType.CUSTOM:return(0,A.of)(T);case S.EventType.THINKING_TEXT_MESSAGE_START:return l?E?(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.")):(E=!0,(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first."));case S.EventType.THINKING_TEXT_MESSAGE_CONTENT:return E?(0,A.of)(T):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first."));case S.EventType.THINKING_TEXT_MESSAGE_END:return E?(E=!1,(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first."));case S.EventType.THINKING_START:return l?(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.")):(l=!0,(0,A.of)(T));case S.EventType.THINKING_END:return l?(l=!1,(0,A.of)(T)):(0,A.throwError)(()=>new S.AGUIError("Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first."));default:return(0,A.of)(T)}}))};var Ot=require("@ag-ui/core"),ut=require("rxjs");var B=require("rxjs"),it=require("rxjs/operators");var lt=(i,s)=>(0,B.defer)(()=>(0,B.from)(fetch(i,s))).pipe((0,it.switchMap)(e=>{var a;if(!e.ok){let r=e.headers.get("content-type")||"";return(0,B.from)(e.text()).pipe((0,it.mergeMap)(o=>{let l=o;if(r.includes("application/json"))try{l=JSON.parse(o)}catch(_){}let E=new Error(`HTTP ${e.status}: ${typeof l=="string"?l:JSON.stringify(l)}`);return E.status=e.status,E.payload=l,(0,B.throwError)(()=>E)}))}let n={type:"headers",status:e.status,headers:e.headers},t=(a=e.body)==null?void 0:a.getReader();return t?new B.Observable(r=>(r.next(n),(async()=>{try{for(;;){let{done:o,value:l}=await t.read();if(o)break;let E={type:"data",data:l};r.next(E)}r.complete()}catch(o){r.error(o)}})(),()=>{t.cancel().catch(o=>{if((o==null?void 0:o.name)!=="AbortError")throw o})})):(0,B.throwError)(()=>new Error("Failed to getReader() from response"))}));var Nt=require("rxjs");var gt=i=>{let s=new Nt.Subject,e=new TextDecoder("utf-8",{fatal:!1}),n="";i.subscribe({next:a=>{if(a.type!=="headers"&&a.type==="data"&&a.data){let r=e.decode(a.data,{stream:!0});n+=r;let o=n.split(/\n\n/);n=o.pop()||"";for(let l of o)t(l)}},error:a=>s.error(a),complete:()=>{n&&(n+=e.decode(),t(n)),s.complete()}});function t(a){let r=a.split(` | ||
| `),o=[];for(let l of r)l.startsWith("data:")&&o.push(l.slice(5).replace(/^ /,""));if(o.length>0)try{let l=o.join(` | ||
| `),d=JSON.parse(l);a.next(d)}catch(l){a.error(l)}}return a.asObservable()};var wt=require("rxjs");var Lt=ot(require("@ag-ui/proto")),ct=i=>{let a=new wt.Subject,e=new Uint8Array(0);i.subscribe({next:t=>{if(t.type!=="headers"&&t.type==="data"&&t.data){let s=new Uint8Array(e.length+t.data.length);s.set(e,0),s.set(t.data,e.length),e=s,n()}},error:t=>a.error(t),complete:()=>{if(e.length>0)try{n()}catch(t){console.warn("Incomplete or invalid protocol buffer data at stream end")}a.complete()}});function n(){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=Lt.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()};var Pt=ot(require("@ag-ui/proto")),Dt=require("@ag-ui/core"),Et=i=>{let a=new ut.Subject,e=new ut.ReplaySubject,n=!1;return i.subscribe({next:t=>{e.next(t),t.type==="headers"&&!n?(n=!0,t.headers.get("content-type")===Pt.AGUI_MEDIA_TYPE?ct(e).subscribe({next:r=>a.next(r),error:r=>a.error(r),complete:()=>a.complete()}):gt(e).subscribe({next:r=>{try{let o=Ot.EventSchemas.parse(r);a.next(o)}catch(o){a.error(o)}},error:r=>{if((r==null?void 0:r.name)==="AbortError"){a.next({type:Dt.EventType.RUN_ERROR,message:r.message||"Request aborted",code:"abort",rawEvent:r}),a.complete();return}return a.error(r)},complete:()=>a.complete()})):n||a.error(new Error("No headers event received before data events"))},error:t=>{e.error(t),a.error(t)},complete:()=>{e.complete()}}),a.asObservable()};var Ht=require("rxjs/operators"),Gt=require("fast-json-patch"),O=require("@ag-ui/core");var f=require("zod"),I=f.z.enum(["TextMessageStart","TextMessageContent","TextMessageEnd","ActionExecutionStart","ActionExecutionArgs","ActionExecutionEnd","ActionExecutionResult","AgentStateMessage","MetaEvent","RunStarted","RunFinished","RunError","NodeStarted","NodeFinished"]),ee=f.z.enum(["LangGraphInterruptEvent","PredictState","Exit"]),ne=f.z.object({type:f.z.literal(I.enum.TextMessageStart),messageId:f.z.string(),parentMessageId:f.z.string().optional(),role:f.z.string().optional()}),se=f.z.object({type:f.z.literal(I.enum.TextMessageContent),messageId:f.z.string(),content:f.z.string()}),ae=f.z.object({type:f.z.literal(I.enum.TextMessageEnd),messageId:f.z.string()}),oe=f.z.object({type:f.z.literal(I.enum.ActionExecutionStart),actionExecutionId:f.z.string(),actionName:f.z.string(),parentMessageId:f.z.string().optional()}),re=f.z.object({type:f.z.literal(I.enum.ActionExecutionArgs),actionExecutionId:f.z.string(),args:f.z.string()}),ie=f.z.object({type:f.z.literal(I.enum.ActionExecutionEnd),actionExecutionId:f.z.string()}),le=f.z.object({type:f.z.literal(I.enum.ActionExecutionResult),actionName:f.z.string(),actionExecutionId:f.z.string(),result:f.z.string()}),ge=f.z.object({type:f.z.literal(I.enum.AgentStateMessage),threadId:f.z.string(),agentName:f.z.string(),nodeName:f.z.string(),runId:f.z.string(),active:f.z.boolean(),role:f.z.string(),state:f.z.string(),running:f.z.boolean()}),ce=f.z.object({type:f.z.literal(I.enum.MetaEvent),name:ee,value:f.z.any()}),ue=f.z.object({type:f.z.literal(I.enum.RunError),message:f.z.string(),code:f.z.string().optional()}),_n=f.z.discriminatedUnion("type",[ne,se,ae,oe,re,ie,le,ge,ce,ue]),Nn=f.z.object({id:f.z.string(),role:f.z.string(),content:f.z.string(),parentMessageId:f.z.string().optional()}),wn=f.z.object({id:f.z.string(),name:f.z.string(),arguments:f.z.any(),parentMessageId:f.z.string().optional()}),Ln=f.z.object({id:f.z.string(),result:f.z.any(),actionExecutionId:f.z.string(),actionName:f.z.string()});var bt=ot(require("untruncate-json"));var Ee=i=>{if(typeof i=="string")return i;if(!Array.isArray(i))return;let a=i.filter(e=>e.type==="text").map(e=>e.text).filter(e=>e.length>0);if(a.length!==0)return a.join(` | ||
| `)},dt=(i,a,e)=>n=>{let t={},s=!0,r=!0,o="",l=null,d=null,_=[],v={},T=h=>{typeof h=="object"&&h!==null&&("messages"in h&&delete h.messages,t=h)};return n.pipe((0,Ht.mergeMap)(h=>{switch(h.type){case O.EventType.TEXT_MESSAGE_START:{let c=h;return[{type:I.enum.TextMessageStart,messageId:c.messageId,role:c.role}]}case O.EventType.TEXT_MESSAGE_CONTENT:{let c=h;return[{type:I.enum.TextMessageContent,messageId:c.messageId,content:c.delta}]}case O.EventType.TEXT_MESSAGE_END:{let c=h;return[{type:I.enum.TextMessageEnd,messageId:c.messageId}]}case O.EventType.TOOL_CALL_START:{let c=h;return _.push({id:c.toolCallId,type:"function",function:{name:c.toolCallName,arguments:""}}),r=!0,v[c.toolCallId]=c.toolCallName,[{type:I.enum.ActionExecutionStart,actionExecutionId:c.toolCallId,actionName:c.toolCallName,parentMessageId:c.parentMessageId}]}case O.EventType.TOOL_CALL_ARGS:{let c=h,F=_.find(E=>E.id===c.toolCallId);if(!F)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];F.function.arguments+=c.delta;let z=!1;if(d){let E=d.find(g=>g.tool==F.function.name);if(E)try{let g=JSON.parse((0,bt.default)(F.function.arguments));E.tool_argument&&E.tool_argument in g?(T(b(L({},t),{[E.state_key]:g[E.tool_argument]})),z=!0):E.tool_argument||(T(b(L({},t),{[E.state_key]:g})),z=!0)}catch(g){}}return[{type:I.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...z?[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}]:[]]}case O.EventType.TOOL_CALL_END:{let c=h;return[{type:I.enum.ActionExecutionEnd,actionExecutionId:c.toolCallId}]}case O.EventType.TOOL_CALL_RESULT:{let c=h;return[{type:I.enum.ActionExecutionResult,actionExecutionId:c.toolCallId,result:c.content,actionName:v[c.toolCallId]||"unknown"}]}case O.EventType.RAW:return[];case O.EventType.CUSTOM:{let c=h;switch(c.name){case"Exit":s=!1;break;case"PredictState":d=c.value;break}return[{type:I.enum.MetaEvent,name:c.name,value:c.value}]}case O.EventType.STATE_SNAPSHOT:return T(h.snapshot),[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}];case O.EventType.STATE_DELTA:{let F=(0,Gt.applyPatch)(t,h.delta,!0,!1);return F?(T(F.newDocument),[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}]):[]}case O.EventType.MESSAGES_SNAPSHOT:return l=h.messages,[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(L(L({},t),l?{messages:l}:{})),active:!0}];case O.EventType.RUN_STARTED:return[];case O.EventType.RUN_FINISHED:return l&&(t.messages=l),Object.keys(t).length===0?[]:[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(L(L({},t),l?{messages:de(l)}:{})),active:!1}];case O.EventType.RUN_ERROR:{let c=h;return[{type:I.enum.RunError,message:c.message,code:c.code}]}case O.EventType.STEP_STARTED:return o=h.stepName,_=[],d=null,[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:!0}];case O.EventType.STEP_FINISHED:return _=[],d=null,[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:!1}];default:return[]}}))};function de(i){var e;let a=[];for(let n of i)if(n.role==="assistant"||n.role==="user"||n.role==="system"){let t=Ee(n.content);if(t){let s={id:n.id,role:n.role,content:t};a.push(s)}if(n.role==="assistant"&&n.toolCalls&&n.toolCalls.length>0)for(let s of n.toolCalls){let r={id:s.id,name:s.function.name,arguments:JSON.parse(s.function.arguments),parentMessageId:n.id};a.push(r)}}else if(n.role==="tool"){let t="unknown";for(let r of i)if(r.role==="assistant"&&((e=r.toolCalls)!=null&&e.length)){for(let o of r.toolCalls)if(o.id===n.toolCallId){t=o.function.name;break}}let s={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:t};a.push(s)}return a}var q=require("uuid");var jt=require("compare-versions"),X=require("rxjs/operators"),vt=require("rxjs/operators"),At=require("rxjs/operators"),G=require("rxjs");var ht=require("rxjs");var pt=require("rxjs"),R=require("@ag-ui/core"),$=i=>a=>{let e,n,t,s=()=>{if(!e||t!=="text")throw new Error("No text message to close");let l={type:R.EventType.TEXT_MESSAGE_END,messageId:e.messageId};return t=void 0,e=void 0,i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_END",JSON.stringify(l)),l},r=()=>{if(!n||t!=="tool")throw new Error("No tool call to close");let l={type:R.EventType.TOOL_CALL_END,toolCallId:n.toolCallId};return t=void 0,n=void 0,i&&console.debug("[TRANSFORM]: TOOL_CALL_END",JSON.stringify(l)),l},o=()=>t==="text"?[s()]:t==="tool"?[r()]:[];return a.pipe((0,pt.mergeMap)(l=>{switch(l.type){case R.EventType.TEXT_MESSAGE_START:case R.EventType.TEXT_MESSAGE_CONTENT:case R.EventType.TEXT_MESSAGE_END:case R.EventType.TOOL_CALL_START:case R.EventType.TOOL_CALL_ARGS:case R.EventType.TOOL_CALL_END:case R.EventType.TOOL_CALL_RESULT:case R.EventType.STATE_SNAPSHOT:case R.EventType.STATE_DELTA:case R.EventType.MESSAGES_SNAPSHOT:case R.EventType.CUSTOM:case R.EventType.RUN_STARTED:case R.EventType.RUN_FINISHED:case R.EventType.RUN_ERROR:case R.EventType.STEP_STARTED:case R.EventType.STEP_FINISHED:case R.EventType.THINKING_START:case R.EventType.THINKING_END:case R.EventType.THINKING_TEXT_MESSAGE_START:case R.EventType.THINKING_TEXT_MESSAGE_CONTENT:case R.EventType.THINKING_TEXT_MESSAGE_END:return[...o(),l];case R.EventType.RAW:case R.EventType.ACTIVITY_SNAPSHOT:case R.EventType.ACTIVITY_DELTA:return[l];case R.EventType.TEXT_MESSAGE_CHUNK:let _=l,v=[];if((t!=="text"||_.messageId!==void 0&&_.messageId!==(e==null?void 0:e.messageId))&&v.push(...o()),t!=="text"){if(_.messageId===void 0)throw new Error("First TEXT_MESSAGE_CHUNK must have a messageId");e={messageId:_.messageId},t="text";let c={type:R.EventType.TEXT_MESSAGE_START,messageId:_.messageId,role:_.role||"assistant"};v.push(c),i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_START",JSON.stringify(c))}if(_.delta!==void 0){let c={type:R.EventType.TEXT_MESSAGE_CONTENT,messageId:e.messageId,delta:_.delta};v.push(c),i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_CONTENT",JSON.stringify(c))}return v;case R.EventType.TOOL_CALL_CHUNK:let T=l,h=[];if((t!=="tool"||T.toolCallId!==void 0&&T.toolCallId!==(n==null?void 0:n.toolCallId))&&h.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");n={toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId},t="tool";let c={type:R.EventType.TOOL_CALL_START,toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId};h.push(c),i&&console.debug("[TRANSFORM]: TOOL_CALL_START",JSON.stringify(c))}if(T.delta!==void 0){let c={type:R.EventType.TOOL_CALL_ARGS,toolCallId:n.toolCallId,delta:T.delta};h.push(c),i&&console.debug("[TRANSFORM]: TOOL_CALL_ARGS",JSON.stringify(c))}return h}let d=l.type;return[]}),(0,pt.finalize)(()=>{o()}))};var yt=require("@ag-ui/core");var Ft=require("rxjs"),kt=require("rxjs/operators");var U=class{runNext(a,e){return e.run(a).pipe($(!1))}runNextWithState(a,e){let n=M(a.messages||[]),t=M(a.state||{}),s=new Ft.ReplaySubject;return J(a,s,e,[]).subscribe(o=>{o.messages!==void 0&&(n=o.messages),o.state!==void 0&&(t=o.state)}),this.runNext(a,e).pipe((0,kt.concatMap)(async o=>(s.next(o),await new Promise(l=>setTimeout(l,0)),{event:o,messages:M(n),state:M(t)})))}},W=class extends U{constructor(e){super();this.fn=e}run(e,n){return this.fn(e,n)}};var et=require("@ag-ui/core"),Bt=require("rxjs/operators"),nt=class extends U{constructor(e){super();this.blockedToolCallIds=new Set;if(e.allowedToolCalls&&e.disallowedToolCalls)throw new Error("Cannot specify both allowedToolCalls and disallowedToolCalls");if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw new 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,n){return this.runNext(e,n).pipe((0,Bt.filter)(t=>{if(t.type===et.EventType.TOOL_CALL_START){let s=t;return this.shouldFilterTool(s.toolCallName)?(this.blockedToolCallIds.add(s.toolCallId),!1):!0}if(t.type===et.EventType.TOOL_CALL_ARGS){let s=t;return!this.blockedToolCallIds.has(s.toolCallId)}if(t.type===et.EventType.TOOL_CALL_END){let s=t;return!this.blockedToolCallIds.has(s.toolCallId)}if(t.type===et.EventType.TOOL_CALL_RESULT){let s=t;return this.blockedToolCallIds.has(s.toolCallId)?(this.blockedToolCallIds.delete(s.toolCallId),!1):!0}return!0}))}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function pe(i){let a=i.content;if(Array.isArray(a)){let e=a.filter(n=>typeof n=="object"&&n!==null&&"type"in n&&n.type==="text"&&typeof n.text=="string").map(n=>n.text).join("");return b(L({},i),{content:e})}return typeof a=="string"?i:b(L({},i),{content:""})}var Y=class extends U{run(a,e){let r=a,{parentRunId:n}=r,t=Rt(r,["parentRunId"]),s=b(L({},t),{messages:t.messages.map(pe)});return this.runNext(s,e)}};var Ut={name:"@ag-ui/client",author:"Markus Ecker <markus.ecker@gmail.com>",version:"0.0.44",private:!1,publishConfig:{access:"public"},main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",sideEffects:!1,files:["dist/**","README.md"],scripts:{build:"tsup",dev:"tsup --watch",clean:"rm -rf dist .turbo node_modules",typecheck:"tsc --noEmit",test:"jest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},dependencies:{"@ag-ui/core":"workspace:*","@ag-ui/encoder":"workspace:*","@ag-ui/proto":"workspace:*","@types/uuid":"^10.0.0","compare-versions":"^6.1.1","fast-json-patch":"^3.1.1",rxjs:"7.8.1","untruncate-json":"^0.0.1",uuid:"^11.1.0",zod:"^3.22.4"},devDependencies:{"@types/jest":"^29.5.14","@types/node":"^20.11.19",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.2",typescript:"^5.3.3"}};var Q=class{constructor({agentId:a,description:e,threadId:n,initialMessages:t,initialState:s,debug:r}={}){this.debug=!1;this.subscribers=[];this.isRunning=!1;this.middlewares=[];this.agentId=a,this.description=e!=null?e:"",this.threadId=n!=null?n:(0,q.v4)(),this.messages=M(t!=null?t:[]),this.state=M(s!=null?s:{}),this.debug=r!=null?r:!1,(0,jt.compareVersions)(this.maxVersion,"0.0.39")<=0&&this.middlewares.unshift(new Y)}get maxVersion(){return Ut.version}subscribe(a){return this.subscribers.push(a),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(e=>e!==a)}}}use(...a){let e=a.map(n=>typeof n=="function"?new W(n):n);return this.middlewares.push(...e),this}async runAgent(a,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:(0,q.v4)();let t=this.prepareRunAgentInput(a),s,r=new Set(this.messages.map(v=>v.id)),o=[{onRunFinishedEvent:v=>{s=v.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new G.Subject;let l;this.activeRunCompletionPromise=new Promise(v=>{l=v});let d=(0,G.pipe)(()=>this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((T,h)=>({run:c=>h.run(c,T)}),this).run(t),$(this.debug),V(this.debug),v=>v.pipe((0,At.takeUntil)(this.activeRunDetach$)),v=>this.apply(t,v,o),v=>this.processApplyEvents(t,v,o),(0,X.catchError)(v=>(this.isRunning=!1,this.onError(t,v,o))),(0,vt.finalize)(()=>{this.isRunning=!1,this.onFinalize(t,o),l==null||l(),l=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await(0,ht.lastValueFrom)(d((0,G.of)(null)));let _=M(this.messages).filter(v=>!r.has(v.id));return{result:s,newMessages:_}}finally{this.isRunning=!1}}connect(a){throw new yt.AGUIConnectNotImplementedError}async connectAgent(a,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:(0,q.v4)();let t=this.prepareRunAgentInput(a),s,r=new Set(this.messages.map(v=>v.id)),o=[{onRunFinishedEvent:v=>{s=v.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new G.Subject;let l;this.activeRunCompletionPromise=new Promise(v=>{l=v});let d=(0,G.pipe)(()=>this.connect(t),$(this.debug),V(this.debug),v=>v.pipe((0,At.takeUntil)(this.activeRunDetach$)),v=>this.apply(t,v,o),v=>this.processApplyEvents(t,v,o),(0,X.catchError)(v=>(this.isRunning=!1,v instanceof yt.AGUIConnectNotImplementedError?G.EMPTY:this.onError(t,v,o))),(0,vt.finalize)(()=>{this.isRunning=!1,this.onFinalize(t,o),l==null||l(),l=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await(0,ht.lastValueFrom)(d((0,G.of)(null)));let _=M(this.messages).filter(v=>!r.has(v.id));return{result:s,newMessages:_}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){var e,n;if(!this.activeRunDetach$)return;let a=(e=this.activeRunCompletionPromise)!=null?e:Promise.resolve();this.activeRunDetach$.next(),(n=this.activeRunDetach$)==null||n.complete(),await a}apply(a,e,n){return J(a,e,this,n)}processApplyEvents(a,e,n){return e.pipe((0,X.tap)(t=>{t.messages&&(this.messages=t.messages,n.forEach(s=>{var r;(r=s.onMessagesChanged)==null||r.call(s,{messages:this.messages,state:this.state,agent:this,input:a})})),t.state&&(this.state=t.state,n.forEach(s=>{var r;(r=s.onStateChanged)==null||r.call(s,{state:this.state,messages:this.messages,agent:this,input:a})}))}))}prepareRunAgentInput(a){var t,s,r;let n=M(this.messages).filter(o=>o.role!=="activity");return{threadId:this.threadId,runId:(a==null?void 0:a.runId)||(0,q.v4)(),tools:M((t=a==null?void 0:a.tools)!=null?t:[]),context:M((s=a==null?void 0:a.context)!=null?s:[]),forwardedProps:M((r=a==null?void 0:a.forwardedProps)!=null?r:{}),state:M(this.state),messages:n}}async onInitialize(a,e){let n=await N(e,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunInitialized)==null?void 0:o.call(t,{messages:s,state:r,agent:this,input:a})});(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,a.messages=n.messages,e.forEach(t=>{var s;(s=t.onMessagesChanged)==null||s.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state&&(this.state=n.state,a.state=n.state,e.forEach(t=>{var s;(s=t.onStateChanged)==null||s.call(t,{state:this.state,messages:this.messages,agent:this,input:a})})))}onError(a,e,n){return(0,G.from)(N(n,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunFailed)==null?void 0:o.call(t,{error:e,messages:s,state:r,agent:this,input:a})})).pipe((0,X.map)(t=>{let s=t;if((s.messages!==void 0||s.state!==void 0)&&(s.messages!==void 0&&(this.messages=s.messages,n.forEach(r=>{var o;(o=r.onMessagesChanged)==null||o.call(r,{messages:this.messages,state:this.state,agent:this,input:a})})),s.state!==void 0&&(this.state=s.state,n.forEach(r=>{var o;(o=r.onStateChanged)==null||o.call(r,{state:this.state,messages:this.messages,agent:this,input:a})}))),s.stopPropagation!==!0)throw console.error("Agent execution failed:",e),e;return{}}))}async onFinalize(a,e){let n=await N(e,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunFinalized)==null?void 0:o.call(t,{messages:s,state:r,agent:this,input:a})});(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,e.forEach(t=>{var s;(s=t.onMessagesChanged)==null||s.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state!==void 0&&(this.state=n.state,e.forEach(t=>{var s;(s=t.onStateChanged)==null||s.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.middlewares=[...this.middlewares],a}addMessage(a){this.messages.push(a),(async()=>{var e,n,t;for(let s of this.subscribers)await((e=s.onNewMessage)==null?void 0:e.call(s,{message:a,messages:this.messages,state:this.state,agent:this}));if(a.role==="assistant"&&a.toolCalls)for(let s of a.toolCalls)for(let r of this.subscribers)await((n=r.onNewToolCall)==null?void 0:n.call(r,{toolCall:s,messages:this.messages,state:this.state,agent:this}));for(let s of this.subscribers)await((t=s.onMessagesChanged)==null?void 0:t.call(s,{messages:this.messages,state:this.state,agent:this}))})()}addMessages(a){this.messages.push(...a),(async()=>{var e,n,t;for(let s of a){for(let r of this.subscribers)await((e=r.onNewMessage)==null?void 0:e.call(r,{message:s,messages:this.messages,state:this.state,agent:this}));if(s.role==="assistant"&&s.toolCalls)for(let r of s.toolCalls)for(let o of this.subscribers)await((n=o.onNewToolCall)==null?void 0:n.call(o,{toolCall:r,messages:this.messages,state:this.state,agent:this}))}for(let s of this.subscribers)await((t=s.onMessagesChanged)==null?void 0:t.call(s,{messages:this.messages,state:this.state,agent:this}))})()}setMessages(a){this.messages=M(a),(async()=>{var e;for(let n of this.subscribers)await((e=n.onMessagesChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}setState(a){this.state=M(a),(async()=>{var e;for(let n of this.subscribers)await((e=n.onStateChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}legacy_to_be_removed_runAgentBridged(a){var t;this.agentId=(t=this.agentId)!=null?t:(0,q.v4)();let e=this.prepareRunAgentInput(a);return(this.middlewares.length===0?this.run(e):this.middlewares.reduceRight((r,o)=>({run:l=>o.run(l,r)}),this).run(e)).pipe($(this.debug),V(this.debug),dt(this.threadId,e.runId,this.agentId),s=>s.pipe((0,X.map)(r=>(this.debug&&console.debug("[LEGACY]:",JSON.stringify(r)),r))))}};var mt=class extends Q{constructor(e){var n;super(e);this.abortController=new AbortController;this.url=e.url,this.headers=M((n=e.headers)!=null?n:{})}requestInit(e){return{method:"POST",headers:b(L({},this.headers),{"Content-Type":"application/json",Accept:"text/event-stream"}),body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,n){var t;return this.abortController=(t=e==null?void 0:e.abortController)!=null?t:new AbortController,super.runAgent(e,n)}abortRun(){this.abortController.abort(),super.abortRun()}run(e){let n=lt(this.url,this.requestInit(e));return Et(n)}clone(){var s;let e=super.clone();e.url=this.url,e.headers=M((s=this.headers)!=null?s:{});let n=new AbortController,t=this.abortController.signal;return t.aborted&&n.abort(t.reason),e.abortController=n,e}};var j=require("@ag-ui/core");function zt(i){let a=[],e=new Map,n=new Map;for(let t of i)if(t.type===j.EventType.TEXT_MESSAGE_START){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.start=s}else if(t.type===j.EventType.TEXT_MESSAGE_CONTENT){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]}),e.get(r).contents.push(s)}else if(t.type===j.EventType.TEXT_MESSAGE_END){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.end=s,Xt(r,o,a),e.delete(r)}else if(t.type===j.EventType.TOOL_CALL_START){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.start=s}else if(t.type===j.EventType.TOOL_CALL_ARGS){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]}),n.get(r).args.push(s)}else if(t.type===j.EventType.TOOL_CALL_END){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.end=s,$t(r,o,a),n.delete(r)}else{let s=!1;for(let[r,o]of e)if(o.start&&!o.end){o.otherEvents.push(t),s=!0;break}if(!s){for(let[r,o]of n)if(o.start&&!o.end){o.otherEvents.push(t),s=!0;break}}s||a.push(t)}for(let[t,s]of e)Xt(t,s,a);for(let[t,s]of n)$t(t,s,a);return a}function Xt(i,a,e){if(a.start&&e.push(a.start),a.contents.length>0){let n=a.contents.map(s=>s.delta).join(""),t={type:j.EventType.TEXT_MESSAGE_CONTENT,messageId:i,delta:n};e.push(t)}a.end&&e.push(a.end);for(let n of a.otherEvents)e.push(n)}function $t(i,a,e){if(a.start&&e.push(a.start),a.args.length>0){let n=a.args.map(s=>s.delta).join(""),t={type:j.EventType.TOOL_CALL_ARGS,toolCallId:i,delta:n};e.push(t)}a.end&&e.push(a.end);for(let n of a.otherEvents)e.push(n)}D(P,require("@ag-ui/core"),module.exports);0&&(module.exports={AbstractAgent,BackwardCompatibility_0_0_39,FilterToolCallsMiddleware,FunctionMiddleware,HttpAgent,Middleware,compactEvents,convertToLegacyEvents,defaultApplyEvents,parseProtoStream,parseSSEStream,randomUUID,runHttpRequest,structuredClone_,transformChunks,transformHttpEventStream,verifyEvents,...require("@ag-ui/core")}); | ||
| `),E=JSON.parse(l);s.next(E)}catch(l){s.error(l)}}return s.asObservable()};var wt=require("rxjs");var Lt=ot(require("@ag-ui/proto")),ct=i=>{let s=new wt.Subject,e=new Uint8Array(0);i.subscribe({next:t=>{if(t.type!=="headers"&&t.type==="data"&&t.data){let a=new Uint8Array(e.length+t.data.length);a.set(e,0),a.set(t.data,e.length),e=a,n()}},error:t=>s.error(t),complete:()=>{if(e.length>0)try{n()}catch(t){console.warn("Incomplete or invalid protocol buffer data at stream end")}s.complete()}});function n(){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=Lt.decode(o);s.next(l),e=e.slice(r)}catch(o){let l=o instanceof Error?o.message:String(o);s.error(new Error(`Failed to decode protocol buffer message: ${l}`));return}}}return s.asObservable()};var Pt=ot(require("@ag-ui/proto")),Dt=require("@ag-ui/core"),dt=i=>{let s=new ut.Subject,e=new ut.ReplaySubject,n=!1;return i.subscribe({next:t=>{e.next(t),t.type==="headers"&&!n?(n=!0,t.headers.get("content-type")===Pt.AGUI_MEDIA_TYPE?ct(e).subscribe({next:r=>s.next(r),error:r=>s.error(r),complete:()=>s.complete()}):gt(e).subscribe({next:r=>{try{let o=Ot.EventSchemas.parse(r);s.next(o)}catch(o){s.error(o)}},error:r=>{if((r==null?void 0:r.name)==="AbortError"){s.next({type:Dt.EventType.RUN_ERROR,message:r.message||"Request aborted",code:"abort",rawEvent:r}),s.complete();return}return s.error(r)},complete:()=>s.complete()})):n||s.error(new Error("No headers event received before data events"))},error:t=>{e.error(t),s.error(t)},complete:()=>{e.complete()}}),s.asObservable()};var Ht=require("rxjs/operators"),Gt=require("fast-json-patch"),O=require("@ag-ui/core");var f=require("zod"),I=f.z.enum(["TextMessageStart","TextMessageContent","TextMessageEnd","ActionExecutionStart","ActionExecutionArgs","ActionExecutionEnd","ActionExecutionResult","AgentStateMessage","MetaEvent","RunStarted","RunFinished","RunError","NodeStarted","NodeFinished"]),ee=f.z.enum(["LangGraphInterruptEvent","PredictState","Exit"]),ne=f.z.object({type:f.z.literal(I.enum.TextMessageStart),messageId:f.z.string(),parentMessageId:f.z.string().optional(),role:f.z.string().optional()}),se=f.z.object({type:f.z.literal(I.enum.TextMessageContent),messageId:f.z.string(),content:f.z.string()}),ae=f.z.object({type:f.z.literal(I.enum.TextMessageEnd),messageId:f.z.string()}),oe=f.z.object({type:f.z.literal(I.enum.ActionExecutionStart),actionExecutionId:f.z.string(),actionName:f.z.string(),parentMessageId:f.z.string().optional()}),re=f.z.object({type:f.z.literal(I.enum.ActionExecutionArgs),actionExecutionId:f.z.string(),args:f.z.string()}),ie=f.z.object({type:f.z.literal(I.enum.ActionExecutionEnd),actionExecutionId:f.z.string()}),le=f.z.object({type:f.z.literal(I.enum.ActionExecutionResult),actionName:f.z.string(),actionExecutionId:f.z.string(),result:f.z.string()}),ge=f.z.object({type:f.z.literal(I.enum.AgentStateMessage),threadId:f.z.string(),agentName:f.z.string(),nodeName:f.z.string(),runId:f.z.string(),active:f.z.boolean(),role:f.z.string(),state:f.z.string(),running:f.z.boolean()}),ce=f.z.object({type:f.z.literal(I.enum.MetaEvent),name:ee,value:f.z.any()}),ue=f.z.object({type:f.z.literal(I.enum.RunError),message:f.z.string(),code:f.z.string().optional()}),_n=f.z.discriminatedUnion("type",[ne,se,ae,oe,re,ie,le,ge,ce,ue]),Nn=f.z.object({id:f.z.string(),role:f.z.string(),content:f.z.string(),parentMessageId:f.z.string().optional()}),wn=f.z.object({id:f.z.string(),name:f.z.string(),arguments:f.z.any(),parentMessageId:f.z.string().optional()}),Ln=f.z.object({id:f.z.string(),result:f.z.any(),actionExecutionId:f.z.string(),actionName:f.z.string()});var bt=ot(require("untruncate-json"));var de=i=>{if(typeof i=="string")return i;if(!Array.isArray(i))return;let s=i.filter(e=>e.type==="text").map(e=>e.text).filter(e=>e.length>0);if(s.length!==0)return s.join(` | ||
| `)},Et=(i,s,e)=>n=>{let t={},a=!0,r=!0,o="",l=null,E=null,_=[],v={},T=h=>{typeof h=="object"&&h!==null&&("messages"in h&&delete h.messages,t=h)};return n.pipe((0,Ht.mergeMap)(h=>{switch(h.type){case O.EventType.TEXT_MESSAGE_START:{let c=h;return[{type:I.enum.TextMessageStart,messageId:c.messageId,role:c.role}]}case O.EventType.TEXT_MESSAGE_CONTENT:{let c=h;return[{type:I.enum.TextMessageContent,messageId:c.messageId,content:c.delta}]}case O.EventType.TEXT_MESSAGE_END:{let c=h;return[{type:I.enum.TextMessageEnd,messageId:c.messageId}]}case O.EventType.TOOL_CALL_START:{let c=h;return _.push({id:c.toolCallId,type:"function",function:{name:c.toolCallName,arguments:""}}),r=!0,v[c.toolCallId]=c.toolCallName,[{type:I.enum.ActionExecutionStart,actionExecutionId:c.toolCallId,actionName:c.toolCallName,parentMessageId:c.parentMessageId}]}case O.EventType.TOOL_CALL_ARGS:{let c=h,F=_.find(d=>d.id===c.toolCallId);if(!F)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];F.function.arguments+=c.delta;let z=!1;if(E){let d=E.find(g=>g.tool==F.function.name);if(d)try{let g=JSON.parse((0,bt.default)(F.function.arguments));d.tool_argument&&d.tool_argument in g?(T(b(L({},t),{[d.state_key]:g[d.tool_argument]})),z=!0):d.tool_argument||(T(b(L({},t),{[d.state_key]:g})),z=!0)}catch(g){}}return[{type:I.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...z?[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:r}]:[]]}case O.EventType.TOOL_CALL_END:{let c=h;return[{type:I.enum.ActionExecutionEnd,actionExecutionId:c.toolCallId}]}case O.EventType.TOOL_CALL_RESULT:{let c=h;return[{type:I.enum.ActionExecutionResult,actionExecutionId:c.toolCallId,result:c.content,actionName:v[c.toolCallId]||"unknown"}]}case O.EventType.RAW:return[];case O.EventType.CUSTOM:{let c=h;switch(c.name){case"Exit":a=!1;break;case"PredictState":E=c.value;break}return[{type:I.enum.MetaEvent,name:c.name,value:c.value}]}case O.EventType.STATE_SNAPSHOT:return T(h.snapshot),[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:r}];case O.EventType.STATE_DELTA:{let F=(0,Gt.applyPatch)(t,h.delta,!0,!1);return F?(T(F.newDocument),[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:r}]):[]}case O.EventType.MESSAGES_SNAPSHOT:return l=h.messages,[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(L(L({},t),l?{messages:l}:{})),active:!0}];case O.EventType.RUN_STARTED:return[];case O.EventType.RUN_FINISHED:return l&&(t.messages=l),Object.keys(t).length===0?[]:[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(L(L({},t),l?{messages:Ee(l)}:{})),active:!1}];case O.EventType.RUN_ERROR:{let c=h;return[{type:I.enum.RunError,message:c.message,code:c.code}]}case O.EventType.STEP_STARTED:return o=h.stepName,_=[],E=null,[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:!0}];case O.EventType.STEP_FINISHED:return _=[],E=null,[{type:I.enum.AgentStateMessage,threadId:i,agentName:e,nodeName:o,runId:s,running:a,role:"assistant",state:JSON.stringify(t),active:!1}];default:return[]}}))};function Ee(i){var e;let s=[];for(let n of i)if(n.role==="assistant"||n.role==="user"||n.role==="system"){let t=de(n.content);if(t){let a={id:n.id,role:n.role,content:t};s.push(a)}if(n.role==="assistant"&&n.toolCalls&&n.toolCalls.length>0)for(let a of n.toolCalls){let r={id:a.id,name:a.function.name,arguments:JSON.parse(a.function.arguments),parentMessageId:n.id};s.push(r)}}else if(n.role==="tool"){let t="unknown";for(let r of i)if(r.role==="assistant"&&((e=r.toolCalls)!=null&&e.length)){for(let o of r.toolCalls)if(o.id===n.toolCallId){t=o.function.name;break}}let a={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:t};s.push(a)}return s}var q=require("uuid");var jt=require("compare-versions"),X=require("rxjs/operators"),vt=require("rxjs/operators"),At=require("rxjs/operators"),G=require("rxjs");var ht=require("rxjs");var pt=require("rxjs"),R=require("@ag-ui/core"),$=i=>s=>{let e,n,t,a=()=>{if(!e||t!=="text")throw new Error("No text message to close");let l={type:R.EventType.TEXT_MESSAGE_END,messageId:e.messageId};return t=void 0,e=void 0,i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_END",JSON.stringify(l)),l},r=()=>{if(!n||t!=="tool")throw new Error("No tool call to close");let l={type:R.EventType.TOOL_CALL_END,toolCallId:n.toolCallId};return t=void 0,n=void 0,i&&console.debug("[TRANSFORM]: TOOL_CALL_END",JSON.stringify(l)),l},o=()=>t==="text"?[a()]:t==="tool"?[r()]:[];return s.pipe((0,pt.mergeMap)(l=>{switch(l.type){case R.EventType.TEXT_MESSAGE_START:case R.EventType.TEXT_MESSAGE_CONTENT:case R.EventType.TEXT_MESSAGE_END:case R.EventType.TOOL_CALL_START:case R.EventType.TOOL_CALL_ARGS:case R.EventType.TOOL_CALL_END:case R.EventType.TOOL_CALL_RESULT:case R.EventType.STATE_SNAPSHOT:case R.EventType.STATE_DELTA:case R.EventType.MESSAGES_SNAPSHOT:case R.EventType.CUSTOM:case R.EventType.RUN_STARTED:case R.EventType.RUN_FINISHED:case R.EventType.RUN_ERROR:case R.EventType.STEP_STARTED:case R.EventType.STEP_FINISHED:case R.EventType.THINKING_START:case R.EventType.THINKING_END:case R.EventType.THINKING_TEXT_MESSAGE_START:case R.EventType.THINKING_TEXT_MESSAGE_CONTENT:case R.EventType.THINKING_TEXT_MESSAGE_END:return[...o(),l];case R.EventType.RAW:case R.EventType.ACTIVITY_SNAPSHOT:case R.EventType.ACTIVITY_DELTA:return[l];case R.EventType.TEXT_MESSAGE_CHUNK:let _=l,v=[];if((t!=="text"||_.messageId!==void 0&&_.messageId!==(e==null?void 0:e.messageId))&&v.push(...o()),t!=="text"){if(_.messageId===void 0)throw new Error("First TEXT_MESSAGE_CHUNK must have a messageId");e={messageId:_.messageId},t="text";let c={type:R.EventType.TEXT_MESSAGE_START,messageId:_.messageId,role:_.role||"assistant"};v.push(c),i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_START",JSON.stringify(c))}if(_.delta!==void 0){let c={type:R.EventType.TEXT_MESSAGE_CONTENT,messageId:e.messageId,delta:_.delta};v.push(c),i&&console.debug("[TRANSFORM]: TEXT_MESSAGE_CONTENT",JSON.stringify(c))}return v;case R.EventType.TOOL_CALL_CHUNK:let T=l,h=[];if((t!=="tool"||T.toolCallId!==void 0&&T.toolCallId!==(n==null?void 0:n.toolCallId))&&h.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");n={toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId},t="tool";let c={type:R.EventType.TOOL_CALL_START,toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId};h.push(c),i&&console.debug("[TRANSFORM]: TOOL_CALL_START",JSON.stringify(c))}if(T.delta!==void 0){let c={type:R.EventType.TOOL_CALL_ARGS,toolCallId:n.toolCallId,delta:T.delta};h.push(c),i&&console.debug("[TRANSFORM]: TOOL_CALL_ARGS",JSON.stringify(c))}return h}let E=l.type;return[]}),(0,pt.finalize)(()=>{o()}))};var yt=require("@ag-ui/core");var Ft=require("rxjs"),kt=require("rxjs/operators");var U=class{runNext(s,e){return e.run(s).pipe($(!1))}runNextWithState(s,e){let n=M(s.messages||[]),t=M(s.state||{}),a=new Ft.ReplaySubject;return J(s,a,e,[]).subscribe(o=>{o.messages!==void 0&&(n=o.messages),o.state!==void 0&&(t=o.state)}),this.runNext(s,e).pipe((0,kt.concatMap)(async o=>(a.next(o),await new Promise(l=>setTimeout(l,0)),{event:o,messages:M(n),state:M(t)})))}},W=class extends U{constructor(e){super();this.fn=e}run(e,n){return this.fn(e,n)}};var et=require("@ag-ui/core"),Bt=require("rxjs/operators"),nt=class extends U{constructor(e){super();this.blockedToolCallIds=new Set;if(e.allowedToolCalls&&e.disallowedToolCalls)throw new Error("Cannot specify both allowedToolCalls and disallowedToolCalls");if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw new 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,n){return this.runNext(e,n).pipe((0,Bt.filter)(t=>{if(t.type===et.EventType.TOOL_CALL_START){let a=t;return this.shouldFilterTool(a.toolCallName)?(this.blockedToolCallIds.add(a.toolCallId),!1):!0}if(t.type===et.EventType.TOOL_CALL_ARGS){let a=t;return!this.blockedToolCallIds.has(a.toolCallId)}if(t.type===et.EventType.TOOL_CALL_END){let a=t;return!this.blockedToolCallIds.has(a.toolCallId)}if(t.type===et.EventType.TOOL_CALL_RESULT){let a=t;return this.blockedToolCallIds.has(a.toolCallId)?(this.blockedToolCallIds.delete(a.toolCallId),!1):!0}return!0}))}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function pe(i){let s=i.content;if(Array.isArray(s)){let e=s.filter(n=>typeof n=="object"&&n!==null&&"type"in n&&n.type==="text"&&typeof n.text=="string").map(n=>n.text).join("");return b(L({},i),{content:e})}return typeof s=="string"?i:b(L({},i),{content:""})}var Y=class extends U{run(s,e){let r=s,{parentRunId:n}=r,t=Rt(r,["parentRunId"]),a=b(L({},t),{messages:t.messages.map(pe)});return this.runNext(a,e)}};var Ut={name:"@ag-ui/client",author:"Markus Ecker <markus.ecker@gmail.com>",version:"0.0.45-alpha.0",private:!1,publishConfig:{access:"public"},main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",sideEffects:!1,files:["dist/**","README.md"],scripts:{build:"tsup",dev:"tsup --watch",clean:"rm -rf dist .turbo node_modules",typecheck:"tsc --noEmit",test:"jest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},dependencies:{"@ag-ui/core":"workspace:*","@ag-ui/encoder":"workspace:*","@ag-ui/proto":"workspace:*","@types/uuid":"^10.0.0","compare-versions":"^6.1.1","fast-json-patch":"^3.1.1",rxjs:"7.8.1","untruncate-json":"^0.0.1",uuid:"^11.1.0",zod:"^3.22.4"},devDependencies:{"@types/jest":"^29.5.14","@types/node":"^20.11.19",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.2",typescript:"^5.3.3"}};var Q=class{constructor({agentId:s,description:e,threadId:n,initialMessages:t,initialState:a,debug:r}={}){this.debug=!1;this.subscribers=[];this.isRunning=!1;this.middlewares=[];this.agentId=s,this.description=e!=null?e:"",this.threadId=n!=null?n:(0,q.v4)(),this.messages=M(t!=null?t:[]),this.state=M(a!=null?a:{}),this.debug=r!=null?r:!1,(0,jt.compareVersions)(this.maxVersion,"0.0.39")<=0&&this.middlewares.unshift(new Y)}get maxVersion(){return Ut.version}subscribe(s){return this.subscribers.push(s),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(e=>e!==s)}}}use(...s){let e=s.map(n=>typeof n=="function"?new W(n):n);return this.middlewares.push(...e),this}async runAgent(s,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:(0,q.v4)();let t=this.prepareRunAgentInput(s),a,r=new Set(this.messages.map(v=>v.id)),o=[{onRunFinishedEvent:v=>{a=v.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new G.Subject;let l;this.activeRunCompletionPromise=new Promise(v=>{l=v});let E=(0,G.pipe)(()=>this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((T,h)=>({run:c=>h.run(c,T)}),this).run(t),$(this.debug),V(this.debug),v=>v.pipe((0,At.takeUntil)(this.activeRunDetach$)),v=>this.apply(t,v,o),v=>this.processApplyEvents(t,v,o),(0,X.catchError)(v=>(this.isRunning=!1,this.onError(t,v,o))),(0,vt.finalize)(()=>{this.isRunning=!1,this.onFinalize(t,o),l==null||l(),l=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await(0,ht.lastValueFrom)(E((0,G.of)(null)));let _=M(this.messages).filter(v=>!r.has(v.id));return{result:a,newMessages:_}}finally{this.isRunning=!1}}connect(s){throw new yt.AGUIConnectNotImplementedError}fetchRunHistory(s){return Promise.resolve(void 0)}async connectAgent(s,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:(0,q.v4)();let t=this.prepareRunAgentInput(s),a,r=new Set(this.messages.map(v=>v.id)),o=[{onRunFinishedEvent:v=>{a=v.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new G.Subject;let l;this.activeRunCompletionPromise=new Promise(v=>{l=v});let E=(0,G.pipe)(()=>this.connect(t),$(this.debug),V(this.debug),v=>v.pipe((0,At.takeUntil)(this.activeRunDetach$)),v=>this.apply(t,v,o),v=>this.processApplyEvents(t,v,o),(0,X.catchError)(v=>(this.isRunning=!1,v instanceof yt.AGUIConnectNotImplementedError?G.EMPTY:this.onError(t,v,o))),(0,vt.finalize)(()=>{this.isRunning=!1,this.onFinalize(t,o),l==null||l(),l=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await(0,ht.lastValueFrom)(E((0,G.of)(null)));let _=M(this.messages).filter(v=>!r.has(v.id));return{result:a,newMessages:_}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){var e,n;if(!this.activeRunDetach$)return;let s=(e=this.activeRunCompletionPromise)!=null?e:Promise.resolve();this.activeRunDetach$.next(),(n=this.activeRunDetach$)==null||n.complete(),await s}apply(s,e,n){return J(s,e,this,n)}processApplyEvents(s,e,n){return e.pipe((0,X.tap)(t=>{t.messages&&(this.messages=t.messages,n.forEach(a=>{var r;(r=a.onMessagesChanged)==null||r.call(a,{messages:this.messages,state:this.state,agent:this,input:s})})),t.state&&(this.state=t.state,n.forEach(a=>{var r;(r=a.onStateChanged)==null||r.call(a,{state:this.state,messages:this.messages,agent:this,input:s})}))}))}prepareRunAgentInput(s){var t,a,r;let n=M(this.messages).filter(o=>o.role!=="activity");return{threadId:this.threadId,runId:(s==null?void 0:s.runId)||(0,q.v4)(),tools:M((t=s==null?void 0:s.tools)!=null?t:[]),context:M((a=s==null?void 0:s.context)!=null?a:[]),forwardedProps:M((r=s==null?void 0:s.forwardedProps)!=null?r:{}),state:M(this.state),messages:n}}async onInitialize(s,e){let n=await N(e,this.messages,this.state,(t,a,r)=>{var o;return(o=t.onRunInitialized)==null?void 0:o.call(t,{messages:a,state:r,agent:this,input:s})});(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,s.messages=n.messages,e.forEach(t=>{var a;(a=t.onMessagesChanged)==null||a.call(t,{messages:this.messages,state:this.state,agent:this,input:s})})),n.state&&(this.state=n.state,s.state=n.state,e.forEach(t=>{var a;(a=t.onStateChanged)==null||a.call(t,{state:this.state,messages:this.messages,agent:this,input:s})})))}onError(s,e,n){return(0,G.from)(N(n,this.messages,this.state,(t,a,r)=>{var o;return(o=t.onRunFailed)==null?void 0:o.call(t,{error:e,messages:a,state:r,agent:this,input:s})})).pipe((0,X.map)(t=>{let a=t;if((a.messages!==void 0||a.state!==void 0)&&(a.messages!==void 0&&(this.messages=a.messages,n.forEach(r=>{var o;(o=r.onMessagesChanged)==null||o.call(r,{messages:this.messages,state:this.state,agent:this,input:s})})),a.state!==void 0&&(this.state=a.state,n.forEach(r=>{var o;(o=r.onStateChanged)==null||o.call(r,{state:this.state,messages:this.messages,agent:this,input:s})}))),a.stopPropagation!==!0)throw console.error("Agent execution failed:",e),e;return{}}))}async onFinalize(s,e){let n=await N(e,this.messages,this.state,(t,a,r)=>{var o;return(o=t.onRunFinalized)==null?void 0:o.call(t,{messages:a,state:r,agent:this,input:s})});(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,e.forEach(t=>{var a;(a=t.onMessagesChanged)==null||a.call(t,{messages:this.messages,state:this.state,agent:this,input:s})})),n.state!==void 0&&(this.state=n.state,e.forEach(t=>{var a;(a=t.onStateChanged)==null||a.call(t,{state:this.state,messages:this.messages,agent:this,input:s})})))}clone(){let s=Object.create(Object.getPrototypeOf(this));return s.agentId=this.agentId,s.description=this.description,s.threadId=this.threadId,s.messages=M(this.messages),s.state=M(this.state),s.debug=this.debug,s.isRunning=this.isRunning,s.subscribers=[...this.subscribers],s.middlewares=[...this.middlewares],s}addMessage(s){this.messages.push(s),(async()=>{var e,n,t;for(let a of this.subscribers)await((e=a.onNewMessage)==null?void 0:e.call(a,{message:s,messages:this.messages,state:this.state,agent:this}));if(s.role==="assistant"&&s.toolCalls)for(let a of s.toolCalls)for(let r of this.subscribers)await((n=r.onNewToolCall)==null?void 0:n.call(r,{toolCall:a,messages:this.messages,state:this.state,agent:this}));for(let a of this.subscribers)await((t=a.onMessagesChanged)==null?void 0:t.call(a,{messages:this.messages,state:this.state,agent:this}))})()}addMessages(s){this.messages.push(...s),(async()=>{var e,n,t;for(let a of s){for(let r of this.subscribers)await((e=r.onNewMessage)==null?void 0:e.call(r,{message:a,messages:this.messages,state:this.state,agent:this}));if(a.role==="assistant"&&a.toolCalls)for(let r of a.toolCalls)for(let o of this.subscribers)await((n=o.onNewToolCall)==null?void 0:n.call(o,{toolCall:r,messages:this.messages,state:this.state,agent:this}))}for(let a of this.subscribers)await((t=a.onMessagesChanged)==null?void 0:t.call(a,{messages:this.messages,state:this.state,agent:this}))})()}setMessages(s){this.messages=M(s),(async()=>{var e;for(let n of this.subscribers)await((e=n.onMessagesChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}setState(s){this.state=M(s),(async()=>{var e;for(let n of this.subscribers)await((e=n.onStateChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}legacy_to_be_removed_runAgentBridged(s){var t;this.agentId=(t=this.agentId)!=null?t:(0,q.v4)();let e=this.prepareRunAgentInput(s);return(this.middlewares.length===0?this.run(e):this.middlewares.reduceRight((r,o)=>({run:l=>o.run(l,r)}),this).run(e)).pipe($(this.debug),V(this.debug),Et(this.threadId,e.runId,this.agentId),a=>a.pipe((0,X.map)(r=>(this.debug&&console.debug("[LEGACY]:",JSON.stringify(r)),r))))}};var mt=class extends Q{constructor(e){var n;super(e);this.abortController=new AbortController;this.url=e.url,this.headers=M((n=e.headers)!=null?n:{})}requestInit(e){return{method:"POST",headers:b(L({},this.headers),{"Content-Type":"application/json",Accept:"text/event-stream"}),body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,n){var t;return this.abortController=(t=e==null?void 0:e.abortController)!=null?t:new AbortController,super.runAgent(e,n)}abortRun(){this.abortController.abort(),super.abortRun()}run(e){let n=lt(this.url,this.requestInit(e));return dt(n)}clone(){var a;let e=super.clone();e.url=this.url,e.headers=M((a=this.headers)!=null?a:{});let n=new AbortController,t=this.abortController.signal;return t.aborted&&n.abort(t.reason),e.abortController=n,e}};var j=require("@ag-ui/core");function zt(i){let s=[],e=new Map,n=new Map;for(let t of i)if(t.type===j.EventType.TEXT_MESSAGE_START){let a=t,r=a.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.start=a}else if(t.type===j.EventType.TEXT_MESSAGE_CONTENT){let a=t,r=a.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]}),e.get(r).contents.push(a)}else if(t.type===j.EventType.TEXT_MESSAGE_END){let a=t,r=a.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.end=a,Xt(r,o,s),e.delete(r)}else if(t.type===j.EventType.TOOL_CALL_START){let a=t,r=a.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.start=a}else if(t.type===j.EventType.TOOL_CALL_ARGS){let a=t,r=a.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]}),n.get(r).args.push(a)}else if(t.type===j.EventType.TOOL_CALL_END){let a=t,r=a.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.end=a,$t(r,o,s),n.delete(r)}else{let a=!1;for(let[r,o]of e)if(o.start&&!o.end){o.otherEvents.push(t),a=!0;break}if(!a){for(let[r,o]of n)if(o.start&&!o.end){o.otherEvents.push(t),a=!0;break}}a||s.push(t)}for(let[t,a]of e)Xt(t,a,s);for(let[t,a]of n)$t(t,a,s);return s}function Xt(i,s,e){if(s.start&&e.push(s.start),s.contents.length>0){let n=s.contents.map(a=>a.delta).join(""),t={type:j.EventType.TEXT_MESSAGE_CONTENT,messageId:i,delta:n};e.push(t)}s.end&&e.push(s.end);for(let n of s.otherEvents)e.push(n)}function $t(i,s,e){if(s.start&&e.push(s.start),s.args.length>0){let n=s.args.map(a=>a.delta).join(""),t={type:j.EventType.TOOL_CALL_ARGS,toolCallId:i,delta:n};e.push(t)}s.end&&e.push(s.end);for(let n of s.otherEvents)e.push(n)}D(P,require("@ag-ui/core"),module.exports);0&&(module.exports={AbstractAgent,BackwardCompatibility_0_0_39,FilterToolCallsMiddleware,FunctionMiddleware,HttpAgent,Middleware,compactEvents,convertToLegacyEvents,defaultApplyEvents,parseProtoStream,parseSSEStream,randomUUID,runHttpRequest,structuredClone_,transformChunks,transformHttpEventStream,verifyEvents,...require("@ag-ui/core")}); | ||
| //# sourceMappingURL=index.js.map |
+4
-4
@@ -1,8 +0,8 @@ | ||
| var It=Object.defineProperty,_t=Object.defineProperties;var Nt=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var it=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable;var rt=(g,a,e)=>a in g?It(g,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):g[a]=e,N=(g,a)=>{for(var e in a||(a={}))it.call(a,e)&&rt(g,e,a[e]);if(Y)for(var e of Y(a))lt.call(a,e)&&rt(g,e,a[e]);return g},G=(g,a)=>_t(g,Nt(a));var gt=(g,a)=>{var e={};for(var n in g)it.call(g,n)&&a.indexOf(n)<0&&(e[n]=g[n]);if(g!=null&&Y)for(var n of Y(g))a.indexOf(n)<0&<.call(g,n)&&(e[n]=g[n]);return e};import{EventType as R}from"@ag-ui/core";import{mergeAll as Lt,defaultIfEmpty as Ot,concatMap as Pt}from"rxjs/operators";import{of as Dt,EMPTY as Ht}from"rxjs";import{v4 as wt}from"uuid";var y=g=>{if(typeof structuredClone=="function")return structuredClone(g);try{return JSON.parse(JSON.stringify(g))}catch(a){return N({},g)}};function Re(){return wt()}import{applyPatch as ct}from"fast-json-patch";async function I(g,a,e,n){let t=a,s=e,r;for(let o of g)try{let i=await n(o,y(t),y(s));if(i===void 0)continue;if(i.messages!==void 0&&(t=i.messages),i.state!==void 0&&(s=i.state),r=i.stopPropagation,r===!0)break}catch(i){process.env.NODE_ENV==="test"||process.env.JEST_WORKER_ID!==void 0||console.error("Subscriber error:",i);continue}return N(N(N({},JSON.stringify(t)!==JSON.stringify(a)?{messages:t}:{}),JSON.stringify(s)!==JSON.stringify(e)?{state:s}:{}),r!==void 0?{stopPropagation:r}:{})}import Gt from"untruncate-json";var $=(g,a,e,n)=>{let t=y(e.messages),s=y(g.state),r={},o=d=>{d.messages!==void 0&&(t=d.messages,r.messages=d.messages),d.state!==void 0&&(s=d.state,r.state=d.state)},i=()=>{let d=y(r);return r={},d.messages!==void 0||d.state!==void 0?Dt(d):Ht};return a.pipe(Pt(async d=>{var T,v,c,b,U;let x=await I(n,t,s,(E,l,p)=>{var m;return(m=E.onEvent)==null?void 0:m.call(E,{event:d,agent:e,input:g,messages:l,state:p})});if(o(x),x.stopPropagation===!0)return i();switch(d.type){case R.TEXT_MESSAGE_START:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onTextMessageStartEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});if(o(E),E.stopPropagation!==!0){let{messageId:l,role:p="assistant"}=d;if(!t.find(u=>u.id===l)){let u={id:l,role:p,content:""};t.push(u),o({messages:t})}}return i()}case R.TEXT_MESSAGE_CONTENT:{let{messageId:E,delta:l}=d,p=t.find(u=>u.id===E);if(!p)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${E}'`),i();let m=await I(n,t,s,(u,A,h)=>{var _;return(_=u.onTextMessageContentEvent)==null?void 0:_.call(u,{event:d,messages:A,state:h,agent:e,input:g,textMessageBuffer:typeof p.content=="string"?p.content:""})});if(o(m),m.stopPropagation!==!0){let u=typeof p.content=="string"?p.content:"";p.content=`${u}${l}`,o({messages:t})}return i()}case R.TEXT_MESSAGE_END:{let{messageId:E}=d,l=t.find(m=>m.id===E);if(!l)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${E}'`),i();let p=await I(n,t,s,(m,u,A)=>{var h;return(h=m.onTextMessageEndEvent)==null?void 0:h.call(m,{event:d,messages:u,state:A,agent:e,input:g,textMessageBuffer:typeof l.content=="string"?l.content:""})});return o(p),await Promise.all(n.map(m=>{var u;(u=m.onNewMessage)==null||u.call(m,{message:l,messages:t,state:s,agent:e,input:g})})),i()}case R.TOOL_CALL_START:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onToolCallStartEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});if(o(E),E.stopPropagation!==!0){let{toolCallId:l,toolCallName:p,parentMessageId:m}=d,u;m&&t.length>0&&t[t.length-1].id===m?u=t[t.length-1]:(u={id:m||l,role:"assistant",toolCalls:[]},t.push(u)),(T=u.toolCalls)!=null||(u.toolCalls=[]),u.toolCalls.push({id:l,type:"function",function:{name:p,arguments:""}}),o({messages:t})}return i()}case R.TOOL_CALL_ARGS:{let{toolCallId:E,delta:l}=d,p=t.find(A=>{var h;return(h=A.toolCalls)==null?void 0:h.some(_=>_.id===E)});if(!p)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${E}'`),i();let m=p.toolCalls.find(A=>A.id===E);if(!m)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${E}'`),i();let u=await I(n,t,s,(A,h,_)=>{var Z;let H=m.function.arguments,F=m.function.name,X={};try{X=Gt(H)}catch(ye){}return(Z=A.onToolCallArgsEvent)==null?void 0:Z.call(A,{event:d,messages:h,state:_,agent:e,input:g,toolCallBuffer:H,toolCallName:F,partialToolCallArgs:X})});return o(u),u.stopPropagation!==!0&&(m.function.arguments+=l,o({messages:t})),i()}case R.TOOL_CALL_END:{let{toolCallId:E}=d,l=t.find(u=>{var A;return(A=u.toolCalls)==null?void 0:A.some(h=>h.id===E)});if(!l)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${E}'`),i();let p=l.toolCalls.find(u=>u.id===E);if(!p)return console.warn(`TOOL_CALL_END: No tool call found with ID '${E}'`),i();let m=await I(n,t,s,(u,A,h)=>{var X;let _=p.function.arguments,H=p.function.name,F={};try{F=JSON.parse(_)}catch(Z){}return(X=u.onToolCallEndEvent)==null?void 0:X.call(u,{event:d,messages:A,state:h,agent:e,input:g,toolCallName:H,toolCallArgs:F})});return o(m),await Promise.all(n.map(u=>{var A;(A=u.onNewToolCall)==null||A.call(u,{toolCall:p,messages:t,state:s,agent:e,input:g})})),i()}case R.TOOL_CALL_RESULT:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onToolCallResultEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});if(o(E),E.stopPropagation!==!0){let{messageId:l,toolCallId:p,content:m,role:u}=d,A={id:l,toolCallId:p,role:u||"tool",content:m};t.push(A),await Promise.all(n.map(h=>{var _;(_=h.onNewMessage)==null||_.call(h,{message:A,messages:t,state:s,agent:e,input:g})})),o({messages:t})}return i()}case R.STATE_SNAPSHOT:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStateSnapshotEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});if(o(E),E.stopPropagation!==!0){let{snapshot:l}=d;s=l,o({state:s})}return i()}case R.STATE_DELTA:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStateDeltaEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});if(o(E),E.stopPropagation!==!0){let{delta:l}=d;try{s=ct(s,l,!0,!1).newDocument,o({state:s})}catch(p){let m=p instanceof Error?p.message:String(p);console.warn(`Failed to apply state patch: | ||
| var It=Object.defineProperty,_t=Object.defineProperties;var Nt=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var it=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable;var rt=(g,a,e)=>a in g?It(g,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):g[a]=e,N=(g,a)=>{for(var e in a||(a={}))it.call(a,e)&&rt(g,e,a[e]);if(Y)for(var e of Y(a))lt.call(a,e)&&rt(g,e,a[e]);return g},G=(g,a)=>_t(g,Nt(a));var gt=(g,a)=>{var e={};for(var n in g)it.call(g,n)&&a.indexOf(n)<0&&(e[n]=g[n]);if(g!=null&&Y)for(var n of Y(g))a.indexOf(n)<0&<.call(g,n)&&(e[n]=g[n]);return e};import{EventType as R}from"@ag-ui/core";import{mergeAll as Lt,defaultIfEmpty as Ot,concatMap as Pt}from"rxjs/operators";import{of as Dt,EMPTY as Ht}from"rxjs";import{v4 as wt}from"uuid";var y=g=>{if(typeof structuredClone=="function")return structuredClone(g);try{return JSON.parse(JSON.stringify(g))}catch(a){return N({},g)}};function Re(){return wt()}import{applyPatch as ct}from"fast-json-patch";async function I(g,a,e,n){let t=a,s=e,r;for(let o of g)try{let i=await n(o,y(t),y(s));if(i===void 0)continue;if(i.messages!==void 0&&(t=i.messages),i.state!==void 0&&(s=i.state),r=i.stopPropagation,r===!0)break}catch(i){process.env.NODE_ENV==="test"||process.env.JEST_WORKER_ID!==void 0||console.error("Subscriber error:",i);continue}return N(N(N({},JSON.stringify(t)!==JSON.stringify(a)?{messages:t}:{}),JSON.stringify(s)!==JSON.stringify(e)?{state:s}:{}),r!==void 0?{stopPropagation:r}:{})}import Gt from"untruncate-json";var $=(g,a,e,n)=>{let t=y(e.messages),s=y(g.state),r={},o=E=>{E.messages!==void 0&&(t=E.messages,r.messages=E.messages),E.state!==void 0&&(s=E.state,r.state=E.state)},i=()=>{let E=y(r);return r={},E.messages!==void 0||E.state!==void 0?Dt(E):Ht};return a.pipe(Pt(async E=>{var T,v,c,b,U;let x=await I(n,t,s,(d,l,p)=>{var m;return(m=d.onEvent)==null?void 0:m.call(d,{event:E,agent:e,input:g,messages:l,state:p})});if(o(x),x.stopPropagation===!0)return i();switch(E.type){case R.TEXT_MESSAGE_START:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onTextMessageStartEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});if(o(d),d.stopPropagation!==!0){let{messageId:l,role:p="assistant"}=E;if(!t.find(u=>u.id===l)){let u={id:l,role:p,content:""};t.push(u),o({messages:t})}}return i()}case R.TEXT_MESSAGE_CONTENT:{let{messageId:d,delta:l}=E,p=t.find(u=>u.id===d);if(!p)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${d}'`),i();let m=await I(n,t,s,(u,A,h)=>{var _;return(_=u.onTextMessageContentEvent)==null?void 0:_.call(u,{event:E,messages:A,state:h,agent:e,input:g,textMessageBuffer:typeof p.content=="string"?p.content:""})});if(o(m),m.stopPropagation!==!0){let u=typeof p.content=="string"?p.content:"";p.content=`${u}${l}`,o({messages:t})}return i()}case R.TEXT_MESSAGE_END:{let{messageId:d}=E,l=t.find(m=>m.id===d);if(!l)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${d}'`),i();let p=await I(n,t,s,(m,u,A)=>{var h;return(h=m.onTextMessageEndEvent)==null?void 0:h.call(m,{event:E,messages:u,state:A,agent:e,input:g,textMessageBuffer:typeof l.content=="string"?l.content:""})});return o(p),await Promise.all(n.map(m=>{var u;(u=m.onNewMessage)==null||u.call(m,{message:l,messages:t,state:s,agent:e,input:g})})),i()}case R.TOOL_CALL_START:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onToolCallStartEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});if(o(d),d.stopPropagation!==!0){let{toolCallId:l,toolCallName:p,parentMessageId:m}=E,u;m&&t.length>0&&t[t.length-1].id===m?u=t[t.length-1]:(u={id:m||l,role:"assistant",toolCalls:[]},t.push(u)),(T=u.toolCalls)!=null||(u.toolCalls=[]),u.toolCalls.push({id:l,type:"function",function:{name:p,arguments:""}}),o({messages:t})}return i()}case R.TOOL_CALL_ARGS:{let{toolCallId:d,delta:l}=E,p=t.find(A=>{var h;return(h=A.toolCalls)==null?void 0:h.some(_=>_.id===d)});if(!p)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${d}'`),i();let m=p.toolCalls.find(A=>A.id===d);if(!m)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${d}'`),i();let u=await I(n,t,s,(A,h,_)=>{var Z;let H=m.function.arguments,F=m.function.name,X={};try{X=Gt(H)}catch(ye){}return(Z=A.onToolCallArgsEvent)==null?void 0:Z.call(A,{event:E,messages:h,state:_,agent:e,input:g,toolCallBuffer:H,toolCallName:F,partialToolCallArgs:X})});return o(u),u.stopPropagation!==!0&&(m.function.arguments+=l,o({messages:t})),i()}case R.TOOL_CALL_END:{let{toolCallId:d}=E,l=t.find(u=>{var A;return(A=u.toolCalls)==null?void 0:A.some(h=>h.id===d)});if(!l)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${d}'`),i();let p=l.toolCalls.find(u=>u.id===d);if(!p)return console.warn(`TOOL_CALL_END: No tool call found with ID '${d}'`),i();let m=await I(n,t,s,(u,A,h)=>{var X;let _=p.function.arguments,H=p.function.name,F={};try{F=JSON.parse(_)}catch(Z){}return(X=u.onToolCallEndEvent)==null?void 0:X.call(u,{event:E,messages:A,state:h,agent:e,input:g,toolCallName:H,toolCallArgs:F})});return o(m),await Promise.all(n.map(u=>{var A;(A=u.onNewToolCall)==null||A.call(u,{toolCall:p,messages:t,state:s,agent:e,input:g})})),i()}case R.TOOL_CALL_RESULT:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onToolCallResultEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});if(o(d),d.stopPropagation!==!0){let{messageId:l,toolCallId:p,content:m,role:u}=E,A={id:l,toolCallId:p,role:u||"tool",content:m};t.push(A),await Promise.all(n.map(h=>{var _;(_=h.onNewMessage)==null||_.call(h,{message:A,messages:t,state:s,agent:e,input:g})})),o({messages:t})}return i()}case R.STATE_SNAPSHOT:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStateSnapshotEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});if(o(d),d.stopPropagation!==!0){let{snapshot:l}=E;s=l,o({state:s})}return i()}case R.STATE_DELTA:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStateDeltaEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});if(o(d),d.stopPropagation!==!0){let{delta:l}=E;try{s=ct(s,l,!0,!1).newDocument,o({state:s})}catch(p){let m=p instanceof Error?p.message:String(p);console.warn(`Failed to apply state patch: | ||
| Current state: ${JSON.stringify(s,null,2)} | ||
| Patch operations: ${JSON.stringify(l,null,2)} | ||
| Error: ${m}`)}}return i()}case R.MESSAGES_SNAPSHOT:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onMessagesSnapshotEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});if(o(E),E.stopPropagation!==!0){let{messages:l}=d;t=l,o({messages:t})}return i()}case R.ACTIVITY_SNAPSHOT:{let E=d,l=t.findIndex(h=>h.id===E.messageId),p=l>=0?t[l]:void 0,m=(p==null?void 0:p.role)==="activity"?p:void 0,u=(v=E.replace)!=null?v:!0,A=await I(n,t,s,(h,_,H)=>{var F;return(F=h.onActivitySnapshotEvent)==null?void 0:F.call(h,{event:E,messages:_,state:H,agent:e,input:g,activityMessage:m,existingMessage:p})});if(o(A),A.stopPropagation!==!0){let h={id:E.messageId,role:"activity",activityType:E.activityType,content:y(E.content)},_;l===-1?(t.push(h),_=h):m?u&&(t[l]=G(N({},m),{activityType:E.activityType,content:y(E.content)})):u&&(t[l]=h,_=h),o({messages:t}),_&&await Promise.all(n.map(H=>{var F;return(F=H.onNewMessage)==null?void 0:F.call(H,{message:_,messages:t,state:s,agent:e,input:g})}))}return i()}case R.ACTIVITY_DELTA:{let E=d,l=t.findIndex(A=>A.id===E.messageId);if(l===-1)return console.warn(`ACTIVITY_DELTA: No message found with ID '${E.messageId}' to apply patch`),i();let p=t[l];if(p.role!=="activity")return console.warn(`ACTIVITY_DELTA: Message '${E.messageId}' is not an activity message`),i();let m=p,u=await I(n,t,s,(A,h,_)=>{var H;return(H=A.onActivityDeltaEvent)==null?void 0:H.call(A,{event:E,messages:h,state:_,agent:e,input:g,activityMessage:m})});if(o(u),u.stopPropagation!==!0)try{let A=y((c=m.content)!=null?c:{}),_=ct(A,(b=E.patch)!=null?b:[],!0,!1).newDocument;t[l]=G(N({},m),{content:y(_),activityType:E.activityType}),o({messages:t})}catch(A){let h=A instanceof Error?A.message:String(A);console.warn(`Failed to apply activity patch for '${E.messageId}': ${h}`)}return i()}case R.RAW:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRawEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});return o(E),i()}case R.CUSTOM:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onCustomEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});return o(E),i()}case R.RUN_STARTED:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRunStartedEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});if(o(E),E.stopPropagation!==!0){let l=d;if((U=l.input)!=null&&U.messages){for(let p of l.input.messages)t.find(u=>u.id===p.id)||t.push(p);o({messages:t})}}return i()}case R.RUN_FINISHED:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRunFinishedEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g,result:d.result})});return o(E),i()}case R.RUN_ERROR:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRunErrorEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});return o(E),i()}case R.STEP_STARTED:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStepStartedEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});return o(E),i()}case R.STEP_FINISHED:{let E=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStepFinishedEvent)==null?void 0:u.call(l,{event:d,messages:p,state:m,agent:e,input:g})});return o(E),i()}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 i();case R.THINKING_END:return i();case R.THINKING_TEXT_MESSAGE_START:return i();case R.THINKING_TEXT_MESSAGE_CONTENT:return i();case R.THINKING_TEXT_MESSAGE_END:return i()}let S=d.type;return i()}),Lt(),n.length>0?Ot({}):d=>d)};import{EventType as w,AGUIError as L}from"@ag-ui/core";import{throwError as O,of as P}from"rxjs";import{mergeMap as bt}from"rxjs/operators";var z=g=>a=>{let e=new Map,n=new Map,t=!1,s=!1,r=!1,o=new Map,i=!1,d=!1,x=!1,S=()=>{e.clear(),n.clear(),o.clear(),i=!1,d=!1,t=!1,s=!1,x=!0};return a.pipe(bt(T=>{let v=T.type;if(g&&console.debug("[VERIFY]:",JSON.stringify(T)),s)return O(()=>new L(`Cannot send event type '${v}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(t&&v!==w.RUN_ERROR&&v!==w.RUN_STARTED)return O(()=>new L(`Cannot send event type '${v}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(r){if(v===w.RUN_STARTED){if(x&&!t)return O(()=>new L("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&&S()}}else if(r=!0,v!==w.RUN_STARTED&&v!==w.RUN_ERROR)return O(()=>new L("First event must be 'RUN_STARTED'"));switch(v){case w.TEXT_MESSAGE_START:{let c=T.messageId;return e.has(c)?O(()=>new L(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${c}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(e.set(c,!0),P(T))}case w.TEXT_MESSAGE_CONTENT:{let c=T.messageId;return e.has(c)?P(T):O(()=>new L(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${c}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case w.TEXT_MESSAGE_END:{let c=T.messageId;return e.has(c)?(e.delete(c),P(T)):O(()=>new L(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${c}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case w.TOOL_CALL_START:{let c=T.toolCallId;return n.has(c)?O(()=>new L(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${c}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(n.set(c,!0),P(T))}case w.TOOL_CALL_ARGS:{let c=T.toolCallId;return n.has(c)?P(T):O(()=>new L(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${c}'. Start a tool call with 'TOOL_CALL_START' first.`))}case w.TOOL_CALL_END:{let c=T.toolCallId;return n.has(c)?(n.delete(c),P(T)):O(()=>new L(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${c}'. A 'TOOL_CALL_START' event must be sent first.`))}case w.STEP_STARTED:{let c=T.stepName;return o.has(c)?O(()=>new L(`Step "${c}" is already active for 'STEP_STARTED'`)):(o.set(c,!0),P(T))}case w.STEP_FINISHED:{let c=T.stepName;return o.has(c)?(o.delete(c),P(T)):O(()=>new L(`Cannot send 'STEP_FINISHED' for step "${c}" that was not started`))}case w.RUN_STARTED:return x=!0,P(T);case w.RUN_FINISHED:{if(o.size>0){let c=Array.from(o.keys()).join(", ");return O(()=>new L(`Cannot send 'RUN_FINISHED' while steps are still active: ${c}`))}if(e.size>0){let c=Array.from(e.keys()).join(", ");return O(()=>new L(`Cannot send 'RUN_FINISHED' while text messages are still active: ${c}`))}if(n.size>0){let c=Array.from(n.keys()).join(", ");return O(()=>new L(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${c}`))}return t=!0,P(T)}case w.RUN_ERROR:return s=!0,P(T);case w.CUSTOM:return P(T);case w.THINKING_TEXT_MESSAGE_START:return i?d?O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.")):(d=!0,P(T)):O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first."));case w.THINKING_TEXT_MESSAGE_CONTENT:return d?P(T):O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first."));case w.THINKING_TEXT_MESSAGE_END:return d?(d=!1,P(T)):O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first."));case w.THINKING_START:return i?O(()=>new L("Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.")):(i=!0,P(T));case w.THINKING_END:return i?(i=!1,P(T)):O(()=>new L("Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first."));default:return P(T)}}))};import{EventSchemas as $t}from"@ag-ui/core";import{Subject as zt,ReplaySubject as Kt}from"rxjs";import{Observable as Ft,from as ut,defer as kt,throwError as Et}from"rxjs";import{mergeMap as Bt,switchMap as Ut}from"rxjs/operators";var tt=(g,a)=>kt(()=>ut(fetch(g,a))).pipe(Ut(e=>{var s;if(!e.ok){let r=e.headers.get("content-type")||"";return ut(e.text()).pipe(Bt(o=>{let i=o;if(r.includes("application/json"))try{i=JSON.parse(o)}catch(x){}let d=new Error(`HTTP ${e.status}: ${typeof i=="string"?i:JSON.stringify(i)}`);return d.status=e.status,d.payload=i,Et(()=>d)}))}let n={type:"headers",status:e.status,headers:e.headers},t=(s=e.body)==null?void 0:s.getReader();return t?new Ft(r=>(r.next(n),(async()=>{try{for(;;){let{done:o,value:i}=await t.read();if(o)break;let d={type:"data",data:i};r.next(d)}r.complete()}catch(o){r.error(o)}})(),()=>{t.cancel().catch(o=>{if((o==null?void 0:o.name)!=="AbortError")throw o})})):Et(()=>new Error("Failed to getReader() from response"))}));import{Subject as jt}from"rxjs";var et=g=>{let a=new jt,e=new TextDecoder("utf-8",{fatal:!1}),n="";g.subscribe({next:s=>{if(s.type!=="headers"&&s.type==="data"&&s.data){let r=e.decode(s.data,{stream:!0});n+=r;let o=n.split(/\n\n/);n=o.pop()||"";for(let i of o)t(i)}},error:s=>a.error(s),complete:()=>{n&&(n+=e.decode(),t(n)),a.complete()}});function t(s){let r=s.split(` | ||
| Error: ${m}`)}}return i()}case R.MESSAGES_SNAPSHOT:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onMessagesSnapshotEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});if(o(d),d.stopPropagation!==!0){let{messages:l}=E;t=l,o({messages:t})}return i()}case R.ACTIVITY_SNAPSHOT:{let d=E,l=t.findIndex(h=>h.id===d.messageId),p=l>=0?t[l]:void 0,m=(p==null?void 0:p.role)==="activity"?p:void 0,u=(v=d.replace)!=null?v:!0,A=await I(n,t,s,(h,_,H)=>{var F;return(F=h.onActivitySnapshotEvent)==null?void 0:F.call(h,{event:d,messages:_,state:H,agent:e,input:g,activityMessage:m,existingMessage:p})});if(o(A),A.stopPropagation!==!0){let h={id:d.messageId,role:"activity",activityType:d.activityType,content:y(d.content)},_;l===-1?(t.push(h),_=h):m?u&&(t[l]=G(N({},m),{activityType:d.activityType,content:y(d.content)})):u&&(t[l]=h,_=h),o({messages:t}),_&&await Promise.all(n.map(H=>{var F;return(F=H.onNewMessage)==null?void 0:F.call(H,{message:_,messages:t,state:s,agent:e,input:g})}))}return i()}case R.ACTIVITY_DELTA:{let d=E,l=t.findIndex(A=>A.id===d.messageId);if(l===-1)return console.warn(`ACTIVITY_DELTA: No message found with ID '${d.messageId}' to apply patch`),i();let p=t[l];if(p.role!=="activity")return console.warn(`ACTIVITY_DELTA: Message '${d.messageId}' is not an activity message`),i();let m=p,u=await I(n,t,s,(A,h,_)=>{var H;return(H=A.onActivityDeltaEvent)==null?void 0:H.call(A,{event:d,messages:h,state:_,agent:e,input:g,activityMessage:m})});if(o(u),u.stopPropagation!==!0)try{let A=y((c=m.content)!=null?c:{}),_=ct(A,(b=d.patch)!=null?b:[],!0,!1).newDocument;t[l]=G(N({},m),{content:y(_),activityType:d.activityType}),o({messages:t})}catch(A){let h=A instanceof Error?A.message:String(A);console.warn(`Failed to apply activity patch for '${d.messageId}': ${h}`)}return i()}case R.RAW:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRawEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});return o(d),i()}case R.CUSTOM:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onCustomEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});return o(d),i()}case R.RUN_STARTED:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRunStartedEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});if(o(d),d.stopPropagation!==!0){let l=E;if((U=l.input)!=null&&U.messages){for(let p of l.input.messages)t.find(u=>u.id===p.id)||t.push(p);o({messages:t})}}return i()}case R.RUN_FINISHED:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRunFinishedEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g,result:E.result})});return o(d),i()}case R.RUN_ERROR:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onRunErrorEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});return o(d),i()}case R.STEP_STARTED:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStepStartedEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});return o(d),i()}case R.STEP_FINISHED:{let d=await I(n,t,s,(l,p,m)=>{var u;return(u=l.onStepFinishedEvent)==null?void 0:u.call(l,{event:E,messages:p,state:m,agent:e,input:g})});return o(d),i()}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 i();case R.THINKING_END:return i();case R.THINKING_TEXT_MESSAGE_START:return i();case R.THINKING_TEXT_MESSAGE_CONTENT:return i();case R.THINKING_TEXT_MESSAGE_END:return i()}let S=E.type;return i()}),Lt(),n.length>0?Ot({}):E=>E)};import{EventType as w,AGUIError as L}from"@ag-ui/core";import{throwError as O,of as P}from"rxjs";import{mergeMap as bt}from"rxjs/operators";var z=g=>a=>{let e=new Map,n=new Map,t=!1,s=!1,r=!1,o=new Map,i=!1,E=!1,x=!1,S=()=>{e.clear(),n.clear(),o.clear(),i=!1,E=!1,t=!1,s=!1,x=!0};return a.pipe(bt(T=>{let v=T.type;if(g&&console.debug("[VERIFY]:",JSON.stringify(T)),s)return O(()=>new L(`Cannot send event type '${v}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(t&&v!==w.RUN_ERROR&&v!==w.RUN_STARTED)return O(()=>new L(`Cannot send event type '${v}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(r){if(v===w.RUN_STARTED){if(x&&!t)return O(()=>new L("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&&S()}}else if(r=!0,v!==w.RUN_STARTED&&v!==w.RUN_ERROR)return O(()=>new L("First event must be 'RUN_STARTED'"));switch(v){case w.TEXT_MESSAGE_START:{let c=T.messageId;return e.has(c)?O(()=>new L(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${c}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`)):(e.set(c,!0),P(T))}case w.TEXT_MESSAGE_CONTENT:{let c=T.messageId;return e.has(c)?P(T):O(()=>new L(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${c}'. Start a text message with 'TEXT_MESSAGE_START' first.`))}case w.TEXT_MESSAGE_END:{let c=T.messageId;return e.has(c)?(e.delete(c),P(T)):O(()=>new L(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${c}'. A 'TEXT_MESSAGE_START' event must be sent first.`))}case w.TOOL_CALL_START:{let c=T.toolCallId;return n.has(c)?O(()=>new L(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${c}' is already in progress. Complete it with 'TOOL_CALL_END' first.`)):(n.set(c,!0),P(T))}case w.TOOL_CALL_ARGS:{let c=T.toolCallId;return n.has(c)?P(T):O(()=>new L(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${c}'. Start a tool call with 'TOOL_CALL_START' first.`))}case w.TOOL_CALL_END:{let c=T.toolCallId;return n.has(c)?(n.delete(c),P(T)):O(()=>new L(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${c}'. A 'TOOL_CALL_START' event must be sent first.`))}case w.STEP_STARTED:{let c=T.stepName;return o.has(c)?O(()=>new L(`Step "${c}" is already active for 'STEP_STARTED'`)):(o.set(c,!0),P(T))}case w.STEP_FINISHED:{let c=T.stepName;return o.has(c)?(o.delete(c),P(T)):O(()=>new L(`Cannot send 'STEP_FINISHED' for step "${c}" that was not started`))}case w.RUN_STARTED:return x=!0,P(T);case w.RUN_FINISHED:{if(o.size>0){let c=Array.from(o.keys()).join(", ");return O(()=>new L(`Cannot send 'RUN_FINISHED' while steps are still active: ${c}`))}if(e.size>0){let c=Array.from(e.keys()).join(", ");return O(()=>new L(`Cannot send 'RUN_FINISHED' while text messages are still active: ${c}`))}if(n.size>0){let c=Array.from(n.keys()).join(", ");return O(()=>new L(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${c}`))}return t=!0,P(T)}case w.RUN_ERROR:return s=!0,P(T);case w.CUSTOM:return P(T);case w.THINKING_TEXT_MESSAGE_START:return i?E?O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.")):(E=!0,P(T)):O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first."));case w.THINKING_TEXT_MESSAGE_CONTENT:return E?P(T):O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first."));case w.THINKING_TEXT_MESSAGE_END:return E?(E=!1,P(T)):O(()=>new L("Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first."));case w.THINKING_START:return i?O(()=>new L("Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.")):(i=!0,P(T));case w.THINKING_END:return i?(i=!1,P(T)):O(()=>new L("Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first."));default:return P(T)}}))};import{EventSchemas as $t}from"@ag-ui/core";import{Subject as zt,ReplaySubject as Kt}from"rxjs";import{Observable as Ft,from as ut,defer as kt,throwError as dt}from"rxjs";import{mergeMap as Bt,switchMap as Ut}from"rxjs/operators";var tt=(g,a)=>kt(()=>ut(fetch(g,a))).pipe(Ut(e=>{var s;if(!e.ok){let r=e.headers.get("content-type")||"";return ut(e.text()).pipe(Bt(o=>{let i=o;if(r.includes("application/json"))try{i=JSON.parse(o)}catch(x){}let E=new Error(`HTTP ${e.status}: ${typeof i=="string"?i:JSON.stringify(i)}`);return E.status=e.status,E.payload=i,dt(()=>E)}))}let n={type:"headers",status:e.status,headers:e.headers},t=(s=e.body)==null?void 0:s.getReader();return t?new Ft(r=>(r.next(n),(async()=>{try{for(;;){let{done:o,value:i}=await t.read();if(o)break;let E={type:"data",data:i};r.next(E)}r.complete()}catch(o){r.error(o)}})(),()=>{t.cancel().catch(o=>{if((o==null?void 0:o.name)!=="AbortError")throw o})})):dt(()=>new Error("Failed to getReader() from response"))}));import{Subject as jt}from"rxjs";var et=g=>{let a=new jt,e=new TextDecoder("utf-8",{fatal:!1}),n="";g.subscribe({next:s=>{if(s.type!=="headers"&&s.type==="data"&&s.data){let r=e.decode(s.data,{stream:!0});n+=r;let o=n.split(/\n\n/);n=o.pop()||"";for(let i of o)t(i)}},error:s=>a.error(s),complete:()=>{n&&(n+=e.decode(),t(n)),a.complete()}});function t(s){let r=s.split(` | ||
| `),o=[];for(let i of r)i.startsWith("data:")&&o.push(i.slice(5).replace(/^ /,""));if(o.length>0)try{let i=o.join(` | ||
| `),d=JSON.parse(i);a.next(d)}catch(i){a.error(i)}}return a.asObservable()};import{Subject as Xt}from"rxjs";import*as dt from"@ag-ui/proto";var nt=g=>{let a=new Xt,e=new Uint8Array(0);g.subscribe({next:t=>{if(t.type!=="headers"&&t.type==="data"&&t.data){let s=new Uint8Array(e.length+t.data.length);s.set(e,0),s.set(t.data,e.length),e=s,n()}},error:t=>a.error(t),complete:()=>{if(e.length>0)try{n()}catch(t){console.warn("Incomplete or invalid protocol buffer data at stream end")}a.complete()}});function n(){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),i=dt.decode(o);a.next(i),e=e.slice(r)}catch(o){let i=o instanceof Error?o.message:String(o);a.error(new Error(`Failed to decode protocol buffer message: ${i}`));return}}}return a.asObservable()};import*as pt from"@ag-ui/proto";import{EventType as Jt}from"@ag-ui/core";var st=g=>{let a=new zt,e=new Kt,n=!1;return g.subscribe({next:t=>{e.next(t),t.type==="headers"&&!n?(n=!0,t.headers.get("content-type")===pt.AGUI_MEDIA_TYPE?nt(e).subscribe({next:r=>a.next(r),error:r=>a.error(r),complete:()=>a.complete()}):et(e).subscribe({next:r=>{try{let o=$t.parse(r);a.next(o)}catch(o){a.error(o)}},error:r=>{if((r==null?void 0:r.name)==="AbortError"){a.next({type:Jt.RUN_ERROR,message:r.message||"Request aborted",code:"abort",rawEvent:r}),a.complete();return}return a.error(r)},complete:()=>a.complete()})):n||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 oe}from"rxjs/operators";import{applyPatch as re}from"fast-json-patch";import{EventType as D}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"]),Vt=f.enum(["LangGraphInterruptEvent","PredictState","Exit"]),Wt=f.object({type:f.literal(C.enum.TextMessageStart),messageId:f.string(),parentMessageId:f.string().optional(),role:f.string().optional()}),Yt=f.object({type:f.literal(C.enum.TextMessageContent),messageId:f.string(),content:f.string()}),qt=f.object({type:f.literal(C.enum.TextMessageEnd),messageId:f.string()}),Qt=f.object({type:f.literal(C.enum.ActionExecutionStart),actionExecutionId:f.string(),actionName:f.string(),parentMessageId:f.string().optional()}),Zt=f.object({type:f.literal(C.enum.ActionExecutionArgs),actionExecutionId:f.string(),args:f.string()}),te=f.object({type:f.literal(C.enum.ActionExecutionEnd),actionExecutionId:f.string()}),ee=f.object({type:f.literal(C.enum.ActionExecutionResult),actionName:f.string(),actionExecutionId:f.string(),result:f.string()}),ne=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()}),se=f.object({type:f.literal(C.enum.MetaEvent),name:Vt,value:f.any()}),ae=f.object({type:f.literal(C.enum.RunError),message:f.string(),code:f.string().optional()}),Qn=f.discriminatedUnion("type",[Wt,Yt,qt,Qt,Zt,te,ee,ne,se,ae]),Zn=f.object({id:f.string(),role:f.string(),content:f.string(),parentMessageId:f.string().optional()}),ts=f.object({id:f.string(),name:f.string(),arguments:f.any(),parentMessageId:f.string().optional()}),es=f.object({id:f.string(),result:f.any(),actionExecutionId:f.string(),actionName:f.string()});import ie from"untruncate-json";var le=g=>{if(typeof g=="string")return g;if(!Array.isArray(g))return;let a=g.filter(e=>e.type==="text").map(e=>e.text).filter(e=>e.length>0);if(a.length!==0)return a.join(` | ||
| `)},at=(g,a,e)=>n=>{let t={},s=!0,r=!0,o="",i=null,d=null,x=[],S={},T=v=>{typeof v=="object"&&v!==null&&("messages"in v&&delete v.messages,t=v)};return n.pipe(oe(v=>{switch(v.type){case D.TEXT_MESSAGE_START:{let c=v;return[{type:C.enum.TextMessageStart,messageId:c.messageId,role:c.role}]}case D.TEXT_MESSAGE_CONTENT:{let c=v;return[{type:C.enum.TextMessageContent,messageId:c.messageId,content:c.delta}]}case D.TEXT_MESSAGE_END:{let c=v;return[{type:C.enum.TextMessageEnd,messageId:c.messageId}]}case D.TOOL_CALL_START:{let c=v;return x.push({id:c.toolCallId,type:"function",function:{name:c.toolCallName,arguments:""}}),r=!0,S[c.toolCallId]=c.toolCallName,[{type:C.enum.ActionExecutionStart,actionExecutionId:c.toolCallId,actionName:c.toolCallName,parentMessageId:c.parentMessageId}]}case D.TOOL_CALL_ARGS:{let c=v,b=x.find(E=>E.id===c.toolCallId);if(!b)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];b.function.arguments+=c.delta;let U=!1;if(d){let E=d.find(l=>l.tool==b.function.name);if(E)try{let l=JSON.parse(ie(b.function.arguments));E.tool_argument&&E.tool_argument in l?(T(G(N({},t),{[E.state_key]:l[E.tool_argument]})),U=!0):E.tool_argument||(T(G(N({},t),{[E.state_key]:l})),U=!0)}catch(l){}}return[{type:C.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...U?[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}]:[]]}case D.TOOL_CALL_END:{let c=v;return[{type:C.enum.ActionExecutionEnd,actionExecutionId:c.toolCallId}]}case D.TOOL_CALL_RESULT:{let c=v;return[{type:C.enum.ActionExecutionResult,actionExecutionId:c.toolCallId,result:c.content,actionName:S[c.toolCallId]||"unknown"}]}case D.RAW:return[];case D.CUSTOM:{let c=v;switch(c.name){case"Exit":s=!1;break;case"PredictState":d=c.value;break}return[{type:C.enum.MetaEvent,name:c.name,value:c.value}]}case D.STATE_SNAPSHOT:return T(v.snapshot),[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}];case D.STATE_DELTA:{let b=re(t,v.delta,!0,!1);return b?(T(b.newDocument),[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}]):[]}case D.MESSAGES_SNAPSHOT:return i=v.messages,[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(N(N({},t),i?{messages:i}:{})),active:!0}];case D.RUN_STARTED:return[];case D.RUN_FINISHED:return i&&(t.messages=i),Object.keys(t).length===0?[]:[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(N(N({},t),i?{messages:ge(i)}:{})),active:!1}];case D.RUN_ERROR:{let c=v;return[{type:C.enum.RunError,message:c.message,code:c.code}]}case D.STEP_STARTED:return o=v.stepName,x=[],d=null,[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:!0}];case D.STEP_FINISHED:return x=[],d=null,[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:!1}];default:return[]}}))};function ge(g){var e;let a=[];for(let n of g)if(n.role==="assistant"||n.role==="user"||n.role==="system"){let t=le(n.content);if(t){let s={id:n.id,role:n.role,content:t};a.push(s)}if(n.role==="assistant"&&n.toolCalls&&n.toolCalls.length>0)for(let s of n.toolCalls){let r={id:s.id,name:s.function.name,arguments:JSON.parse(s.function.arguments),parentMessageId:n.id};a.push(r)}}else if(n.role==="tool"){let t="unknown";for(let r of g)if(r.role==="assistant"&&((e=r.toolCalls)!=null&&e.length)){for(let o of r.toolCalls)if(o.id===n.toolCallId){t=o.function.name;break}}let s={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:t};a.push(s)}return a}import{v4 as V}from"uuid";import{compareVersions as Te}from"compare-versions";import{catchError as ft,map as Tt,tap as Se}from"rxjs/operators";import{finalize as St}from"rxjs/operators";import{takeUntil as vt}from"rxjs/operators";import{pipe as At,from as ve,of as ht,EMPTY as Ae,Subject as yt}from"rxjs";import{lastValueFrom as Mt}from"rxjs";import{mergeMap as ce,finalize as ue}from"rxjs";import{EventType as M}from"@ag-ui/core";var j=g=>a=>{let e,n,t,s=()=>{if(!e||t!=="text")throw new Error("No text message to close");let i={type:M.TEXT_MESSAGE_END,messageId:e.messageId};return t=void 0,e=void 0,g&&console.debug("[TRANSFORM]: TEXT_MESSAGE_END",JSON.stringify(i)),i},r=()=>{if(!n||t!=="tool")throw new Error("No tool call to close");let i={type:M.TOOL_CALL_END,toolCallId:n.toolCallId};return t=void 0,n=void 0,g&&console.debug("[TRANSFORM]: TOOL_CALL_END",JSON.stringify(i)),i},o=()=>t==="text"?[s()]:t==="tool"?[r()]:[];return a.pipe(ce(i=>{switch(i.type){case M.TEXT_MESSAGE_START:case M.TEXT_MESSAGE_CONTENT:case M.TEXT_MESSAGE_END:case M.TOOL_CALL_START:case M.TOOL_CALL_ARGS:case M.TOOL_CALL_END:case M.TOOL_CALL_RESULT:case M.STATE_SNAPSHOT:case M.STATE_DELTA:case M.MESSAGES_SNAPSHOT:case M.CUSTOM:case M.RUN_STARTED:case M.RUN_FINISHED:case M.RUN_ERROR:case M.STEP_STARTED:case M.STEP_FINISHED:case M.THINKING_START:case M.THINKING_END:case M.THINKING_TEXT_MESSAGE_START:case M.THINKING_TEXT_MESSAGE_CONTENT:case M.THINKING_TEXT_MESSAGE_END:return[...o(),i];case M.RAW:case M.ACTIVITY_SNAPSHOT:case M.ACTIVITY_DELTA:return[i];case M.TEXT_MESSAGE_CHUNK:let x=i,S=[];if((t!=="text"||x.messageId!==void 0&&x.messageId!==(e==null?void 0:e.messageId))&&S.push(...o()),t!=="text"){if(x.messageId===void 0)throw new Error("First TEXT_MESSAGE_CHUNK must have a messageId");e={messageId:x.messageId},t="text";let c={type:M.TEXT_MESSAGE_START,messageId:x.messageId,role:x.role||"assistant"};S.push(c),g&&console.debug("[TRANSFORM]: TEXT_MESSAGE_START",JSON.stringify(c))}if(x.delta!==void 0){let c={type:M.TEXT_MESSAGE_CONTENT,messageId:e.messageId,delta:x.delta};S.push(c),g&&console.debug("[TRANSFORM]: TEXT_MESSAGE_CONTENT",JSON.stringify(c))}return S;case M.TOOL_CALL_CHUNK:let T=i,v=[];if((t!=="tool"||T.toolCallId!==void 0&&T.toolCallId!==(n==null?void 0:n.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");n={toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId},t="tool";let c={type:M.TOOL_CALL_START,toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId};v.push(c),g&&console.debug("[TRANSFORM]: TOOL_CALL_START",JSON.stringify(c))}if(T.delta!==void 0){let c={type:M.TOOL_CALL_ARGS,toolCallId:n.toolCallId,delta:T.delta};v.push(c),g&&console.debug("[TRANSFORM]: TOOL_CALL_ARGS",JSON.stringify(c))}return v}let d=i.type;return[]}),ue(()=>{o()}))};import{AGUIConnectNotImplementedError as Ct}from"@ag-ui/core";import{ReplaySubject as Ee}from"rxjs";import{concatMap as de}from"rxjs/operators";var k=class{runNext(a,e){return e.run(a).pipe(j(!1))}runNextWithState(a,e){let n=y(a.messages||[]),t=y(a.state||{}),s=new Ee;return $(a,s,e,[]).subscribe(o=>{o.messages!==void 0&&(n=o.messages),o.state!==void 0&&(t=o.state)}),this.runNext(a,e).pipe(de(async o=>(s.next(o),await new Promise(i=>setTimeout(i,0)),{event:o,messages:y(n),state:y(t)})))}},K=class extends k{constructor(e){super();this.fn=e}run(e,n){return this.fn(e,n)}};import{EventType as q}from"@ag-ui/core";import{filter as pe}from"rxjs/operators";var Q=class extends k{constructor(e){super();this.blockedToolCallIds=new Set;if(e.allowedToolCalls&&e.disallowedToolCalls)throw new Error("Cannot specify both allowedToolCalls and disallowedToolCalls");if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw new 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,n){return this.runNext(e,n).pipe(pe(t=>{if(t.type===q.TOOL_CALL_START){let s=t;return this.shouldFilterTool(s.toolCallName)?(this.blockedToolCallIds.add(s.toolCallId),!1):!0}if(t.type===q.TOOL_CALL_ARGS){let s=t;return!this.blockedToolCallIds.has(s.toolCallId)}if(t.type===q.TOOL_CALL_END){let s=t;return!this.blockedToolCallIds.has(s.toolCallId)}if(t.type===q.TOOL_CALL_RESULT){let s=t;return this.blockedToolCallIds.has(s.toolCallId)?(this.blockedToolCallIds.delete(s.toolCallId),!1):!0}return!0}))}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function me(g){let a=g.content;if(Array.isArray(a)){let e=a.filter(n=>typeof n=="object"&&n!==null&&"type"in n&&n.type==="text"&&typeof n.text=="string").map(n=>n.text).join("");return G(N({},g),{content:e})}return typeof a=="string"?g:G(N({},g),{content:""})}var J=class extends k{run(a,e){let r=a,{parentRunId:n}=r,t=gt(r,["parentRunId"]),s=G(N({},t),{messages:t.messages.map(me)});return this.runNext(s,e)}};var mt={name:"@ag-ui/client",author:"Markus Ecker <markus.ecker@gmail.com>",version:"0.0.44",private:!1,publishConfig:{access:"public"},main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",sideEffects:!1,files:["dist/**","README.md"],scripts:{build:"tsup",dev:"tsup --watch",clean:"rm -rf dist .turbo node_modules",typecheck:"tsc --noEmit",test:"jest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},dependencies:{"@ag-ui/core":"workspace:*","@ag-ui/encoder":"workspace:*","@ag-ui/proto":"workspace:*","@types/uuid":"^10.0.0","compare-versions":"^6.1.1","fast-json-patch":"^3.1.1",rxjs:"7.8.1","untruncate-json":"^0.0.1",uuid:"^11.1.0",zod:"^3.22.4"},devDependencies:{"@types/jest":"^29.5.14","@types/node":"^20.11.19",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.2",typescript:"^5.3.3"}};var W=class{constructor({agentId:a,description:e,threadId:n,initialMessages:t,initialState:s,debug:r}={}){this.debug=!1;this.subscribers=[];this.isRunning=!1;this.middlewares=[];this.agentId=a,this.description=e!=null?e:"",this.threadId=n!=null?n:V(),this.messages=y(t!=null?t:[]),this.state=y(s!=null?s:{}),this.debug=r!=null?r:!1,Te(this.maxVersion,"0.0.39")<=0&&this.middlewares.unshift(new J)}get maxVersion(){return mt.version}subscribe(a){return this.subscribers.push(a),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(e=>e!==a)}}}use(...a){let e=a.map(n=>typeof n=="function"?new K(n):n);return this.middlewares.push(...e),this}async runAgent(a,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:V();let t=this.prepareRunAgentInput(a),s,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{s=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new yt;let i;this.activeRunCompletionPromise=new Promise(S=>{i=S});let d=At(()=>this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((T,v)=>({run:c=>v.run(c,T)}),this).run(t),j(this.debug),z(this.debug),S=>S.pipe(vt(this.activeRunDetach$)),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),ft(S=>(this.isRunning=!1,this.onError(t,S,o))),St(()=>{this.isRunning=!1,this.onFinalize(t,o),i==null||i(),i=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await Mt(d(ht(null)));let x=y(this.messages).filter(S=>!r.has(S.id));return{result:s,newMessages:x}}finally{this.isRunning=!1}}connect(a){throw new Ct}async connectAgent(a,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:V();let t=this.prepareRunAgentInput(a),s,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{s=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new yt;let i;this.activeRunCompletionPromise=new Promise(S=>{i=S});let d=At(()=>this.connect(t),j(this.debug),z(this.debug),S=>S.pipe(vt(this.activeRunDetach$)),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),ft(S=>(this.isRunning=!1,S instanceof Ct?Ae:this.onError(t,S,o))),St(()=>{this.isRunning=!1,this.onFinalize(t,o),i==null||i(),i=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await Mt(d(ht(null)));let x=y(this.messages).filter(S=>!r.has(S.id));return{result:s,newMessages:x}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){var e,n;if(!this.activeRunDetach$)return;let a=(e=this.activeRunCompletionPromise)!=null?e:Promise.resolve();this.activeRunDetach$.next(),(n=this.activeRunDetach$)==null||n.complete(),await a}apply(a,e,n){return $(a,e,this,n)}processApplyEvents(a,e,n){return e.pipe(Se(t=>{t.messages&&(this.messages=t.messages,n.forEach(s=>{var r;(r=s.onMessagesChanged)==null||r.call(s,{messages:this.messages,state:this.state,agent:this,input:a})})),t.state&&(this.state=t.state,n.forEach(s=>{var r;(r=s.onStateChanged)==null||r.call(s,{state:this.state,messages:this.messages,agent:this,input:a})}))}))}prepareRunAgentInput(a){var t,s,r;let n=y(this.messages).filter(o=>o.role!=="activity");return{threadId:this.threadId,runId:(a==null?void 0:a.runId)||V(),tools:y((t=a==null?void 0:a.tools)!=null?t:[]),context:y((s=a==null?void 0:a.context)!=null?s:[]),forwardedProps:y((r=a==null?void 0:a.forwardedProps)!=null?r:{}),state:y(this.state),messages:n}}async onInitialize(a,e){let n=await I(e,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunInitialized)==null?void 0:o.call(t,{messages:s,state:r,agent:this,input:a})});(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,a.messages=n.messages,e.forEach(t=>{var s;(s=t.onMessagesChanged)==null||s.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state&&(this.state=n.state,a.state=n.state,e.forEach(t=>{var s;(s=t.onStateChanged)==null||s.call(t,{state:this.state,messages:this.messages,agent:this,input:a})})))}onError(a,e,n){return ve(I(n,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunFailed)==null?void 0:o.call(t,{error:e,messages:s,state:r,agent:this,input:a})})).pipe(Tt(t=>{let s=t;if((s.messages!==void 0||s.state!==void 0)&&(s.messages!==void 0&&(this.messages=s.messages,n.forEach(r=>{var o;(o=r.onMessagesChanged)==null||o.call(r,{messages:this.messages,state:this.state,agent:this,input:a})})),s.state!==void 0&&(this.state=s.state,n.forEach(r=>{var o;(o=r.onStateChanged)==null||o.call(r,{state:this.state,messages:this.messages,agent:this,input:a})}))),s.stopPropagation!==!0)throw console.error("Agent execution failed:",e),e;return{}}))}async onFinalize(a,e){let n=await I(e,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunFinalized)==null?void 0:o.call(t,{messages:s,state:r,agent:this,input:a})});(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,e.forEach(t=>{var s;(s=t.onMessagesChanged)==null||s.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state!==void 0&&(this.state=n.state,e.forEach(t=>{var s;(s=t.onStateChanged)==null||s.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=y(this.messages),a.state=y(this.state),a.debug=this.debug,a.isRunning=this.isRunning,a.subscribers=[...this.subscribers],a.middlewares=[...this.middlewares],a}addMessage(a){this.messages.push(a),(async()=>{var e,n,t;for(let s of this.subscribers)await((e=s.onNewMessage)==null?void 0:e.call(s,{message:a,messages:this.messages,state:this.state,agent:this}));if(a.role==="assistant"&&a.toolCalls)for(let s of a.toolCalls)for(let r of this.subscribers)await((n=r.onNewToolCall)==null?void 0:n.call(r,{toolCall:s,messages:this.messages,state:this.state,agent:this}));for(let s of this.subscribers)await((t=s.onMessagesChanged)==null?void 0:t.call(s,{messages:this.messages,state:this.state,agent:this}))})()}addMessages(a){this.messages.push(...a),(async()=>{var e,n,t;for(let s of a){for(let r of this.subscribers)await((e=r.onNewMessage)==null?void 0:e.call(r,{message:s,messages:this.messages,state:this.state,agent:this}));if(s.role==="assistant"&&s.toolCalls)for(let r of s.toolCalls)for(let o of this.subscribers)await((n=o.onNewToolCall)==null?void 0:n.call(o,{toolCall:r,messages:this.messages,state:this.state,agent:this}))}for(let s of this.subscribers)await((t=s.onMessagesChanged)==null?void 0:t.call(s,{messages:this.messages,state:this.state,agent:this}))})()}setMessages(a){this.messages=y(a),(async()=>{var e;for(let n of this.subscribers)await((e=n.onMessagesChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}setState(a){this.state=y(a),(async()=>{var e;for(let n of this.subscribers)await((e=n.onStateChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}legacy_to_be_removed_runAgentBridged(a){var t;this.agentId=(t=this.agentId)!=null?t:V();let e=this.prepareRunAgentInput(a);return(this.middlewares.length===0?this.run(e):this.middlewares.reduceRight((r,o)=>({run:i=>o.run(i,r)}),this).run(e)).pipe(j(this.debug),z(this.debug),at(this.threadId,e.runId,this.agentId),s=>s.pipe(Tt(r=>(this.debug&&console.debug("[LEGACY]:",JSON.stringify(r)),r))))}};var ot=class extends W{constructor(e){var n;super(e);this.abortController=new AbortController;this.url=e.url,this.headers=y((n=e.headers)!=null?n:{})}requestInit(e){return{method:"POST",headers:G(N({},this.headers),{"Content-Type":"application/json",Accept:"text/event-stream"}),body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,n){var t;return this.abortController=(t=e==null?void 0:e.abortController)!=null?t:new AbortController,super.runAgent(e,n)}abortRun(){this.abortController.abort(),super.abortRun()}run(e){let n=tt(this.url,this.requestInit(e));return st(n)}clone(){var s;let e=super.clone();e.url=this.url,e.headers=y((s=this.headers)!=null?s:{});let n=new AbortController,t=this.abortController.signal;return t.aborted&&n.abort(t.reason),e.abortController=n,e}};import{EventType as B}from"@ag-ui/core";function he(g){let a=[],e=new Map,n=new Map;for(let t of g)if(t.type===B.TEXT_MESSAGE_START){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.start=s}else if(t.type===B.TEXT_MESSAGE_CONTENT){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]}),e.get(r).contents.push(s)}else if(t.type===B.TEXT_MESSAGE_END){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.end=s,Rt(r,o,a),e.delete(r)}else if(t.type===B.TOOL_CALL_START){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.start=s}else if(t.type===B.TOOL_CALL_ARGS){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]}),n.get(r).args.push(s)}else if(t.type===B.TOOL_CALL_END){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.end=s,xt(r,o,a),n.delete(r)}else{let s=!1;for(let[r,o]of e)if(o.start&&!o.end){o.otherEvents.push(t),s=!0;break}if(!s){for(let[r,o]of n)if(o.start&&!o.end){o.otherEvents.push(t),s=!0;break}}s||a.push(t)}for(let[t,s]of e)Rt(t,s,a);for(let[t,s]of n)xt(t,s,a);return a}function Rt(g,a,e){if(a.start&&e.push(a.start),a.contents.length>0){let n=a.contents.map(s=>s.delta).join(""),t={type:B.TEXT_MESSAGE_CONTENT,messageId:g,delta:n};e.push(t)}a.end&&e.push(a.end);for(let n of a.otherEvents)e.push(n)}function xt(g,a,e){if(a.start&&e.push(a.start),a.args.length>0){let n=a.args.map(s=>s.delta).join(""),t={type:B.TOOL_CALL_ARGS,toolCallId:g,delta:n};e.push(t)}a.end&&e.push(a.end);for(let n of a.otherEvents)e.push(n)}export*from"@ag-ui/core";export{W as AbstractAgent,J as BackwardCompatibility_0_0_39,Q as FilterToolCallsMiddleware,K as FunctionMiddleware,ot as HttpAgent,k as Middleware,he as compactEvents,at as convertToLegacyEvents,$ as defaultApplyEvents,nt as parseProtoStream,et as parseSSEStream,Re as randomUUID,tt as runHttpRequest,y as structuredClone_,j as transformChunks,st as transformHttpEventStream,z as verifyEvents}; | ||
| `),E=JSON.parse(i);a.next(E)}catch(i){a.error(i)}}return a.asObservable()};import{Subject as Xt}from"rxjs";import*as Et from"@ag-ui/proto";var nt=g=>{let a=new Xt,e=new Uint8Array(0);g.subscribe({next:t=>{if(t.type!=="headers"&&t.type==="data"&&t.data){let s=new Uint8Array(e.length+t.data.length);s.set(e,0),s.set(t.data,e.length),e=s,n()}},error:t=>a.error(t),complete:()=>{if(e.length>0)try{n()}catch(t){console.warn("Incomplete or invalid protocol buffer data at stream end")}a.complete()}});function n(){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),i=Et.decode(o);a.next(i),e=e.slice(r)}catch(o){let i=o instanceof Error?o.message:String(o);a.error(new Error(`Failed to decode protocol buffer message: ${i}`));return}}}return a.asObservable()};import*as pt from"@ag-ui/proto";import{EventType as Jt}from"@ag-ui/core";var st=g=>{let a=new zt,e=new Kt,n=!1;return g.subscribe({next:t=>{e.next(t),t.type==="headers"&&!n?(n=!0,t.headers.get("content-type")===pt.AGUI_MEDIA_TYPE?nt(e).subscribe({next:r=>a.next(r),error:r=>a.error(r),complete:()=>a.complete()}):et(e).subscribe({next:r=>{try{let o=$t.parse(r);a.next(o)}catch(o){a.error(o)}},error:r=>{if((r==null?void 0:r.name)==="AbortError"){a.next({type:Jt.RUN_ERROR,message:r.message||"Request aborted",code:"abort",rawEvent:r}),a.complete();return}return a.error(r)},complete:()=>a.complete()})):n||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 oe}from"rxjs/operators";import{applyPatch as re}from"fast-json-patch";import{EventType as D}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"]),Vt=f.enum(["LangGraphInterruptEvent","PredictState","Exit"]),Wt=f.object({type:f.literal(C.enum.TextMessageStart),messageId:f.string(),parentMessageId:f.string().optional(),role:f.string().optional()}),Yt=f.object({type:f.literal(C.enum.TextMessageContent),messageId:f.string(),content:f.string()}),qt=f.object({type:f.literal(C.enum.TextMessageEnd),messageId:f.string()}),Qt=f.object({type:f.literal(C.enum.ActionExecutionStart),actionExecutionId:f.string(),actionName:f.string(),parentMessageId:f.string().optional()}),Zt=f.object({type:f.literal(C.enum.ActionExecutionArgs),actionExecutionId:f.string(),args:f.string()}),te=f.object({type:f.literal(C.enum.ActionExecutionEnd),actionExecutionId:f.string()}),ee=f.object({type:f.literal(C.enum.ActionExecutionResult),actionName:f.string(),actionExecutionId:f.string(),result:f.string()}),ne=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()}),se=f.object({type:f.literal(C.enum.MetaEvent),name:Vt,value:f.any()}),ae=f.object({type:f.literal(C.enum.RunError),message:f.string(),code:f.string().optional()}),Qn=f.discriminatedUnion("type",[Wt,Yt,qt,Qt,Zt,te,ee,ne,se,ae]),Zn=f.object({id:f.string(),role:f.string(),content:f.string(),parentMessageId:f.string().optional()}),ts=f.object({id:f.string(),name:f.string(),arguments:f.any(),parentMessageId:f.string().optional()}),es=f.object({id:f.string(),result:f.any(),actionExecutionId:f.string(),actionName:f.string()});import ie from"untruncate-json";var le=g=>{if(typeof g=="string")return g;if(!Array.isArray(g))return;let a=g.filter(e=>e.type==="text").map(e=>e.text).filter(e=>e.length>0);if(a.length!==0)return a.join(` | ||
| `)},at=(g,a,e)=>n=>{let t={},s=!0,r=!0,o="",i=null,E=null,x=[],S={},T=v=>{typeof v=="object"&&v!==null&&("messages"in v&&delete v.messages,t=v)};return n.pipe(oe(v=>{switch(v.type){case D.TEXT_MESSAGE_START:{let c=v;return[{type:C.enum.TextMessageStart,messageId:c.messageId,role:c.role}]}case D.TEXT_MESSAGE_CONTENT:{let c=v;return[{type:C.enum.TextMessageContent,messageId:c.messageId,content:c.delta}]}case D.TEXT_MESSAGE_END:{let c=v;return[{type:C.enum.TextMessageEnd,messageId:c.messageId}]}case D.TOOL_CALL_START:{let c=v;return x.push({id:c.toolCallId,type:"function",function:{name:c.toolCallName,arguments:""}}),r=!0,S[c.toolCallId]=c.toolCallName,[{type:C.enum.ActionExecutionStart,actionExecutionId:c.toolCallId,actionName:c.toolCallName,parentMessageId:c.parentMessageId}]}case D.TOOL_CALL_ARGS:{let c=v,b=x.find(d=>d.id===c.toolCallId);if(!b)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];b.function.arguments+=c.delta;let U=!1;if(E){let d=E.find(l=>l.tool==b.function.name);if(d)try{let l=JSON.parse(ie(b.function.arguments));d.tool_argument&&d.tool_argument in l?(T(G(N({},t),{[d.state_key]:l[d.tool_argument]})),U=!0):d.tool_argument||(T(G(N({},t),{[d.state_key]:l})),U=!0)}catch(l){}}return[{type:C.enum.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...U?[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}]:[]]}case D.TOOL_CALL_END:{let c=v;return[{type:C.enum.ActionExecutionEnd,actionExecutionId:c.toolCallId}]}case D.TOOL_CALL_RESULT:{let c=v;return[{type:C.enum.ActionExecutionResult,actionExecutionId:c.toolCallId,result:c.content,actionName:S[c.toolCallId]||"unknown"}]}case D.RAW:return[];case D.CUSTOM:{let c=v;switch(c.name){case"Exit":s=!1;break;case"PredictState":E=c.value;break}return[{type:C.enum.MetaEvent,name:c.name,value:c.value}]}case D.STATE_SNAPSHOT:return T(v.snapshot),[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}];case D.STATE_DELTA:{let b=re(t,v.delta,!0,!1);return b?(T(b.newDocument),[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:r}]):[]}case D.MESSAGES_SNAPSHOT:return i=v.messages,[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(N(N({},t),i?{messages:i}:{})),active:!0}];case D.RUN_STARTED:return[];case D.RUN_FINISHED:return i&&(t.messages=i),Object.keys(t).length===0?[]:[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(N(N({},t),i?{messages:ge(i)}:{})),active:!1}];case D.RUN_ERROR:{let c=v;return[{type:C.enum.RunError,message:c.message,code:c.code}]}case D.STEP_STARTED:return o=v.stepName,x=[],E=null,[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:!0}];case D.STEP_FINISHED:return x=[],E=null,[{type:C.enum.AgentStateMessage,threadId:g,agentName:e,nodeName:o,runId:a,running:s,role:"assistant",state:JSON.stringify(t),active:!1}];default:return[]}}))};function ge(g){var e;let a=[];for(let n of g)if(n.role==="assistant"||n.role==="user"||n.role==="system"){let t=le(n.content);if(t){let s={id:n.id,role:n.role,content:t};a.push(s)}if(n.role==="assistant"&&n.toolCalls&&n.toolCalls.length>0)for(let s of n.toolCalls){let r={id:s.id,name:s.function.name,arguments:JSON.parse(s.function.arguments),parentMessageId:n.id};a.push(r)}}else if(n.role==="tool"){let t="unknown";for(let r of g)if(r.role==="assistant"&&((e=r.toolCalls)!=null&&e.length)){for(let o of r.toolCalls)if(o.id===n.toolCallId){t=o.function.name;break}}let s={id:n.id,result:n.content,actionExecutionId:n.toolCallId,actionName:t};a.push(s)}return a}import{v4 as V}from"uuid";import{compareVersions as Te}from"compare-versions";import{catchError as ft,map as Tt,tap as Se}from"rxjs/operators";import{finalize as St}from"rxjs/operators";import{takeUntil as vt}from"rxjs/operators";import{pipe as At,from as ve,of as ht,EMPTY as Ae,Subject as yt}from"rxjs";import{lastValueFrom as Mt}from"rxjs";import{mergeMap as ce,finalize as ue}from"rxjs";import{EventType as M}from"@ag-ui/core";var j=g=>a=>{let e,n,t,s=()=>{if(!e||t!=="text")throw new Error("No text message to close");let i={type:M.TEXT_MESSAGE_END,messageId:e.messageId};return t=void 0,e=void 0,g&&console.debug("[TRANSFORM]: TEXT_MESSAGE_END",JSON.stringify(i)),i},r=()=>{if(!n||t!=="tool")throw new Error("No tool call to close");let i={type:M.TOOL_CALL_END,toolCallId:n.toolCallId};return t=void 0,n=void 0,g&&console.debug("[TRANSFORM]: TOOL_CALL_END",JSON.stringify(i)),i},o=()=>t==="text"?[s()]:t==="tool"?[r()]:[];return a.pipe(ce(i=>{switch(i.type){case M.TEXT_MESSAGE_START:case M.TEXT_MESSAGE_CONTENT:case M.TEXT_MESSAGE_END:case M.TOOL_CALL_START:case M.TOOL_CALL_ARGS:case M.TOOL_CALL_END:case M.TOOL_CALL_RESULT:case M.STATE_SNAPSHOT:case M.STATE_DELTA:case M.MESSAGES_SNAPSHOT:case M.CUSTOM:case M.RUN_STARTED:case M.RUN_FINISHED:case M.RUN_ERROR:case M.STEP_STARTED:case M.STEP_FINISHED:case M.THINKING_START:case M.THINKING_END:case M.THINKING_TEXT_MESSAGE_START:case M.THINKING_TEXT_MESSAGE_CONTENT:case M.THINKING_TEXT_MESSAGE_END:return[...o(),i];case M.RAW:case M.ACTIVITY_SNAPSHOT:case M.ACTIVITY_DELTA:return[i];case M.TEXT_MESSAGE_CHUNK:let x=i,S=[];if((t!=="text"||x.messageId!==void 0&&x.messageId!==(e==null?void 0:e.messageId))&&S.push(...o()),t!=="text"){if(x.messageId===void 0)throw new Error("First TEXT_MESSAGE_CHUNK must have a messageId");e={messageId:x.messageId},t="text";let c={type:M.TEXT_MESSAGE_START,messageId:x.messageId,role:x.role||"assistant"};S.push(c),g&&console.debug("[TRANSFORM]: TEXT_MESSAGE_START",JSON.stringify(c))}if(x.delta!==void 0){let c={type:M.TEXT_MESSAGE_CONTENT,messageId:e.messageId,delta:x.delta};S.push(c),g&&console.debug("[TRANSFORM]: TEXT_MESSAGE_CONTENT",JSON.stringify(c))}return S;case M.TOOL_CALL_CHUNK:let T=i,v=[];if((t!=="tool"||T.toolCallId!==void 0&&T.toolCallId!==(n==null?void 0:n.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");n={toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId},t="tool";let c={type:M.TOOL_CALL_START,toolCallId:T.toolCallId,toolCallName:T.toolCallName,parentMessageId:T.parentMessageId};v.push(c),g&&console.debug("[TRANSFORM]: TOOL_CALL_START",JSON.stringify(c))}if(T.delta!==void 0){let c={type:M.TOOL_CALL_ARGS,toolCallId:n.toolCallId,delta:T.delta};v.push(c),g&&console.debug("[TRANSFORM]: TOOL_CALL_ARGS",JSON.stringify(c))}return v}let E=i.type;return[]}),ue(()=>{o()}))};import{AGUIConnectNotImplementedError as Ct}from"@ag-ui/core";import{ReplaySubject as de}from"rxjs";import{concatMap as Ee}from"rxjs/operators";var k=class{runNext(a,e){return e.run(a).pipe(j(!1))}runNextWithState(a,e){let n=y(a.messages||[]),t=y(a.state||{}),s=new de;return $(a,s,e,[]).subscribe(o=>{o.messages!==void 0&&(n=o.messages),o.state!==void 0&&(t=o.state)}),this.runNext(a,e).pipe(Ee(async o=>(s.next(o),await new Promise(i=>setTimeout(i,0)),{event:o,messages:y(n),state:y(t)})))}},K=class extends k{constructor(e){super();this.fn=e}run(e,n){return this.fn(e,n)}};import{EventType as q}from"@ag-ui/core";import{filter as pe}from"rxjs/operators";var Q=class extends k{constructor(e){super();this.blockedToolCallIds=new Set;if(e.allowedToolCalls&&e.disallowedToolCalls)throw new Error("Cannot specify both allowedToolCalls and disallowedToolCalls");if(!e.allowedToolCalls&&!e.disallowedToolCalls)throw new 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,n){return this.runNext(e,n).pipe(pe(t=>{if(t.type===q.TOOL_CALL_START){let s=t;return this.shouldFilterTool(s.toolCallName)?(this.blockedToolCallIds.add(s.toolCallId),!1):!0}if(t.type===q.TOOL_CALL_ARGS){let s=t;return!this.blockedToolCallIds.has(s.toolCallId)}if(t.type===q.TOOL_CALL_END){let s=t;return!this.blockedToolCallIds.has(s.toolCallId)}if(t.type===q.TOOL_CALL_RESULT){let s=t;return this.blockedToolCallIds.has(s.toolCallId)?(this.blockedToolCallIds.delete(s.toolCallId),!1):!0}return!0}))}shouldFilterTool(e){return this.allowedTools?!this.allowedTools.has(e):this.disallowedTools?this.disallowedTools.has(e):!1}};function me(g){let a=g.content;if(Array.isArray(a)){let e=a.filter(n=>typeof n=="object"&&n!==null&&"type"in n&&n.type==="text"&&typeof n.text=="string").map(n=>n.text).join("");return G(N({},g),{content:e})}return typeof a=="string"?g:G(N({},g),{content:""})}var J=class extends k{run(a,e){let r=a,{parentRunId:n}=r,t=gt(r,["parentRunId"]),s=G(N({},t),{messages:t.messages.map(me)});return this.runNext(s,e)}};var mt={name:"@ag-ui/client",author:"Markus Ecker <markus.ecker@gmail.com>",version:"0.0.45-alpha.0",private:!1,publishConfig:{access:"public"},main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",sideEffects:!1,files:["dist/**","README.md"],scripts:{build:"tsup",dev:"tsup --watch",clean:"rm -rf dist .turbo node_modules",typecheck:"tsc --noEmit",test:"jest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},dependencies:{"@ag-ui/core":"workspace:*","@ag-ui/encoder":"workspace:*","@ag-ui/proto":"workspace:*","@types/uuid":"^10.0.0","compare-versions":"^6.1.1","fast-json-patch":"^3.1.1",rxjs:"7.8.1","untruncate-json":"^0.0.1",uuid:"^11.1.0",zod:"^3.22.4"},devDependencies:{"@types/jest":"^29.5.14","@types/node":"^20.11.19",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.2",typescript:"^5.3.3"}};var W=class{constructor({agentId:a,description:e,threadId:n,initialMessages:t,initialState:s,debug:r}={}){this.debug=!1;this.subscribers=[];this.isRunning=!1;this.middlewares=[];this.agentId=a,this.description=e!=null?e:"",this.threadId=n!=null?n:V(),this.messages=y(t!=null?t:[]),this.state=y(s!=null?s:{}),this.debug=r!=null?r:!1,Te(this.maxVersion,"0.0.39")<=0&&this.middlewares.unshift(new J)}get maxVersion(){return mt.version}subscribe(a){return this.subscribers.push(a),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(e=>e!==a)}}}use(...a){let e=a.map(n=>typeof n=="function"?new K(n):n);return this.middlewares.push(...e),this}async runAgent(a,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:V();let t=this.prepareRunAgentInput(a),s,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{s=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new yt;let i;this.activeRunCompletionPromise=new Promise(S=>{i=S});let E=At(()=>this.middlewares.length===0?this.run(t):this.middlewares.reduceRight((T,v)=>({run:c=>v.run(c,T)}),this).run(t),j(this.debug),z(this.debug),S=>S.pipe(vt(this.activeRunDetach$)),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),ft(S=>(this.isRunning=!1,this.onError(t,S,o))),St(()=>{this.isRunning=!1,this.onFinalize(t,o),i==null||i(),i=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await Mt(E(ht(null)));let x=y(this.messages).filter(S=>!r.has(S.id));return{result:s,newMessages:x}}finally{this.isRunning=!1}}connect(a){throw new Ct}fetchRunHistory(a){return Promise.resolve(void 0)}async connectAgent(a,e){var n;try{this.isRunning=!0,this.agentId=(n=this.agentId)!=null?n:V();let t=this.prepareRunAgentInput(a),s,r=new Set(this.messages.map(S=>S.id)),o=[{onRunFinishedEvent:S=>{s=S.result}},...this.subscribers,e!=null?e:{}];await this.onInitialize(t,o),this.activeRunDetach$=new yt;let i;this.activeRunCompletionPromise=new Promise(S=>{i=S});let E=At(()=>this.connect(t),j(this.debug),z(this.debug),S=>S.pipe(vt(this.activeRunDetach$)),S=>this.apply(t,S,o),S=>this.processApplyEvents(t,S,o),ft(S=>(this.isRunning=!1,S instanceof Ct?Ae:this.onError(t,S,o))),St(()=>{this.isRunning=!1,this.onFinalize(t,o),i==null||i(),i=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}));await Mt(E(ht(null)));let x=y(this.messages).filter(S=>!r.has(S.id));return{result:s,newMessages:x}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){var e,n;if(!this.activeRunDetach$)return;let a=(e=this.activeRunCompletionPromise)!=null?e:Promise.resolve();this.activeRunDetach$.next(),(n=this.activeRunDetach$)==null||n.complete(),await a}apply(a,e,n){return $(a,e,this,n)}processApplyEvents(a,e,n){return e.pipe(Se(t=>{t.messages&&(this.messages=t.messages,n.forEach(s=>{var r;(r=s.onMessagesChanged)==null||r.call(s,{messages:this.messages,state:this.state,agent:this,input:a})})),t.state&&(this.state=t.state,n.forEach(s=>{var r;(r=s.onStateChanged)==null||r.call(s,{state:this.state,messages:this.messages,agent:this,input:a})}))}))}prepareRunAgentInput(a){var t,s,r;let n=y(this.messages).filter(o=>o.role!=="activity");return{threadId:this.threadId,runId:(a==null?void 0:a.runId)||V(),tools:y((t=a==null?void 0:a.tools)!=null?t:[]),context:y((s=a==null?void 0:a.context)!=null?s:[]),forwardedProps:y((r=a==null?void 0:a.forwardedProps)!=null?r:{}),state:y(this.state),messages:n}}async onInitialize(a,e){let n=await I(e,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunInitialized)==null?void 0:o.call(t,{messages:s,state:r,agent:this,input:a})});(n.messages!==void 0||n.state!==void 0)&&(n.messages&&(this.messages=n.messages,a.messages=n.messages,e.forEach(t=>{var s;(s=t.onMessagesChanged)==null||s.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state&&(this.state=n.state,a.state=n.state,e.forEach(t=>{var s;(s=t.onStateChanged)==null||s.call(t,{state:this.state,messages:this.messages,agent:this,input:a})})))}onError(a,e,n){return ve(I(n,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunFailed)==null?void 0:o.call(t,{error:e,messages:s,state:r,agent:this,input:a})})).pipe(Tt(t=>{let s=t;if((s.messages!==void 0||s.state!==void 0)&&(s.messages!==void 0&&(this.messages=s.messages,n.forEach(r=>{var o;(o=r.onMessagesChanged)==null||o.call(r,{messages:this.messages,state:this.state,agent:this,input:a})})),s.state!==void 0&&(this.state=s.state,n.forEach(r=>{var o;(o=r.onStateChanged)==null||o.call(r,{state:this.state,messages:this.messages,agent:this,input:a})}))),s.stopPropagation!==!0)throw console.error("Agent execution failed:",e),e;return{}}))}async onFinalize(a,e){let n=await I(e,this.messages,this.state,(t,s,r)=>{var o;return(o=t.onRunFinalized)==null?void 0:o.call(t,{messages:s,state:r,agent:this,input:a})});(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,e.forEach(t=>{var s;(s=t.onMessagesChanged)==null||s.call(t,{messages:this.messages,state:this.state,agent:this,input:a})})),n.state!==void 0&&(this.state=n.state,e.forEach(t=>{var s;(s=t.onStateChanged)==null||s.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=y(this.messages),a.state=y(this.state),a.debug=this.debug,a.isRunning=this.isRunning,a.subscribers=[...this.subscribers],a.middlewares=[...this.middlewares],a}addMessage(a){this.messages.push(a),(async()=>{var e,n,t;for(let s of this.subscribers)await((e=s.onNewMessage)==null?void 0:e.call(s,{message:a,messages:this.messages,state:this.state,agent:this}));if(a.role==="assistant"&&a.toolCalls)for(let s of a.toolCalls)for(let r of this.subscribers)await((n=r.onNewToolCall)==null?void 0:n.call(r,{toolCall:s,messages:this.messages,state:this.state,agent:this}));for(let s of this.subscribers)await((t=s.onMessagesChanged)==null?void 0:t.call(s,{messages:this.messages,state:this.state,agent:this}))})()}addMessages(a){this.messages.push(...a),(async()=>{var e,n,t;for(let s of a){for(let r of this.subscribers)await((e=r.onNewMessage)==null?void 0:e.call(r,{message:s,messages:this.messages,state:this.state,agent:this}));if(s.role==="assistant"&&s.toolCalls)for(let r of s.toolCalls)for(let o of this.subscribers)await((n=o.onNewToolCall)==null?void 0:n.call(o,{toolCall:r,messages:this.messages,state:this.state,agent:this}))}for(let s of this.subscribers)await((t=s.onMessagesChanged)==null?void 0:t.call(s,{messages:this.messages,state:this.state,agent:this}))})()}setMessages(a){this.messages=y(a),(async()=>{var e;for(let n of this.subscribers)await((e=n.onMessagesChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}setState(a){this.state=y(a),(async()=>{var e;for(let n of this.subscribers)await((e=n.onStateChanged)==null?void 0:e.call(n,{messages:this.messages,state:this.state,agent:this}))})()}legacy_to_be_removed_runAgentBridged(a){var t;this.agentId=(t=this.agentId)!=null?t:V();let e=this.prepareRunAgentInput(a);return(this.middlewares.length===0?this.run(e):this.middlewares.reduceRight((r,o)=>({run:i=>o.run(i,r)}),this).run(e)).pipe(j(this.debug),z(this.debug),at(this.threadId,e.runId,this.agentId),s=>s.pipe(Tt(r=>(this.debug&&console.debug("[LEGACY]:",JSON.stringify(r)),r))))}};var ot=class extends W{constructor(e){var n;super(e);this.abortController=new AbortController;this.url=e.url,this.headers=y((n=e.headers)!=null?n:{})}requestInit(e){return{method:"POST",headers:G(N({},this.headers),{"Content-Type":"application/json",Accept:"text/event-stream"}),body:JSON.stringify(e),signal:this.abortController.signal}}runAgent(e,n){var t;return this.abortController=(t=e==null?void 0:e.abortController)!=null?t:new AbortController,super.runAgent(e,n)}abortRun(){this.abortController.abort(),super.abortRun()}run(e){let n=tt(this.url,this.requestInit(e));return st(n)}clone(){var s;let e=super.clone();e.url=this.url,e.headers=y((s=this.headers)!=null?s:{});let n=new AbortController,t=this.abortController.signal;return t.aborted&&n.abort(t.reason),e.abortController=n,e}};import{EventType as B}from"@ag-ui/core";function he(g){let a=[],e=new Map,n=new Map;for(let t of g)if(t.type===B.TEXT_MESSAGE_START){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.start=s}else if(t.type===B.TEXT_MESSAGE_CONTENT){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]}),e.get(r).contents.push(s)}else if(t.type===B.TEXT_MESSAGE_END){let s=t,r=s.messageId;e.has(r)||e.set(r,{contents:[],otherEvents:[]});let o=e.get(r);o.end=s,Rt(r,o,a),e.delete(r)}else if(t.type===B.TOOL_CALL_START){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.start=s}else if(t.type===B.TOOL_CALL_ARGS){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]}),n.get(r).args.push(s)}else if(t.type===B.TOOL_CALL_END){let s=t,r=s.toolCallId;n.has(r)||n.set(r,{args:[],otherEvents:[]});let o=n.get(r);o.end=s,xt(r,o,a),n.delete(r)}else{let s=!1;for(let[r,o]of e)if(o.start&&!o.end){o.otherEvents.push(t),s=!0;break}if(!s){for(let[r,o]of n)if(o.start&&!o.end){o.otherEvents.push(t),s=!0;break}}s||a.push(t)}for(let[t,s]of e)Rt(t,s,a);for(let[t,s]of n)xt(t,s,a);return a}function Rt(g,a,e){if(a.start&&e.push(a.start),a.contents.length>0){let n=a.contents.map(s=>s.delta).join(""),t={type:B.TEXT_MESSAGE_CONTENT,messageId:g,delta:n};e.push(t)}a.end&&e.push(a.end);for(let n of a.otherEvents)e.push(n)}function xt(g,a,e){if(a.start&&e.push(a.start),a.args.length>0){let n=a.args.map(s=>s.delta).join(""),t={type:B.TOOL_CALL_ARGS,toolCallId:g,delta:n};e.push(t)}a.end&&e.push(a.end);for(let n of a.otherEvents)e.push(n)}export*from"@ag-ui/core";export{W as AbstractAgent,J as BackwardCompatibility_0_0_39,Q as FilterToolCallsMiddleware,K as FunctionMiddleware,ot as HttpAgent,k as Middleware,he as compactEvents,at as convertToLegacyEvents,$ as defaultApplyEvents,nt as parseProtoStream,et as parseSSEStream,Re as randomUUID,tt as runHttpRequest,y as structuredClone_,j as transformChunks,st as transformHttpEventStream,z as verifyEvents}; | ||
| //# sourceMappingURL=index.mjs.map |
+4
-4
| { | ||
| "name": "@ag-ui/client", | ||
| "author": "Markus Ecker <markus.ecker@gmail.com>", | ||
| "version": "0.0.44", | ||
| "version": "0.0.45-alpha.0", | ||
| "private": false, | ||
@@ -25,5 +25,5 @@ "publishConfig": { | ||
| "zod": "^3.22.4", | ||
| "@ag-ui/proto": "0.0.44", | ||
| "@ag-ui/core": "0.0.44", | ||
| "@ag-ui/encoder": "0.0.44" | ||
| "@ag-ui/core": "0.0.45-alpha.0", | ||
| "@ag-ui/encoder": "0.0.45-alpha.0", | ||
| "@ag-ui/proto": "0.0.45-alpha.0" | ||
| }, | ||
@@ -30,0 +30,0 @@ "devDependencies": { |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
485773
0.21%747
0.13%+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
Updated
Updated