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