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