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