@ag-ui/langgraph 0.0.24 → 0.0.25-alpha.0

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 CHANGED
@@ -1,4 +1,5 @@
1
- import { TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ThinkingTextMessageStartEvent, ThinkingTextMessageContentEvent, ThinkingTextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, ThinkingStartEvent, ThinkingEndEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, RawEvent, CustomEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, AgentConfig, AbstractAgent, RunAgentInput as RunAgentInput$1, HttpAgent } from '@ag-ui/client';
1
+ import { TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ThinkingTextMessageStartEvent, ThinkingTextMessageContentEvent, ThinkingTextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, ThinkingStartEvent, ThinkingEndEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, RawEvent, CustomEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, AgentConfig, AbstractAgent, RunAgentInput as RunAgentInput$1, FetchRunHistoryOptions, FetchRunHistoryResult, HttpAgentConfig, HttpAgent } from '@ag-ui/client';
2
+ import { BaseCheckpointSaver } from '@langchain/langgraph';
2
3
  import * as _langchain_langgraph_sdk_dist_types_stream from '@langchain/langgraph-sdk/dist/types.stream';
3
4
  import * as _langchain_langgraph_sdk from '@langchain/langgraph-sdk';
4
5
  import { Message, AssistantGraph, Client, Config, Assistant, StreamMode, ThreadState, Thread } from '@langchain/langgraph-sdk';
@@ -175,13 +176,24 @@ declare class LangGraphAgent extends AbstractAgent {
175
176
  handleNodeChange(nodeName: string | undefined): void;
176
177
  startStep(nodeName: string): void;
177
178
  endStep(): void;
179
+ protected fetchRunHistory(options: FetchRunHistoryOptions): Promise<FetchRunHistoryResult | undefined>;
178
180
  getCheckpointByMessage(messageId: string, threadId: string, checkpoint?: null | {
179
181
  checkpoint_id?: null | string;
180
182
  checkpoint_ns: string;
181
183
  }): Promise<ThreadState>;
182
184
  }
183
185
 
186
+ interface LangGraphHttpAgentConfig extends HttpAgentConfig {
187
+ checkpointer?: BaseCheckpointSaver;
188
+ }
184
189
  declare class LangGraphHttpAgent extends HttpAgent {
190
+ protected checkpointer?: BaseCheckpointSaver;
191
+ constructor(config: LangGraphHttpAgentConfig);
192
+ protected fetchRunHistory(options: FetchRunHistoryOptions): Promise<FetchRunHistoryResult | undefined>;
193
+ private convertMessages;
194
+ private convertMessage;
195
+ private mapRole;
196
+ clone(): LangGraphHttpAgent;
185
197
  }
186
198
 
187
- export { CustomEventNames, LangGraphAgent, type LangGraphAgentConfig, LangGraphEventTypes, LangGraphHttpAgent, type LangGraphPlatformMessage, type LangGraphReasoning, type LangGraphToolWithName, type MessageInProgress, type MessagesInProgressRecord, type PredictStateTool, type ProcessedEvents, type RunMetadata, type SchemaKeys, type State, type StateEnrichment, type ThinkingInProgress, type ToolCall };
199
+ export { CustomEventNames, LangGraphAgent, type LangGraphAgentConfig, LangGraphEventTypes, LangGraphHttpAgent, type LangGraphHttpAgentConfig, type LangGraphPlatformMessage, type LangGraphReasoning, type LangGraphToolWithName, type MessageInProgress, type MessagesInProgressRecord, type PredictStateTool, type ProcessedEvents, type RunMetadata, type SchemaKeys, type State, type StateEnrichment, type ThinkingInProgress, type ToolCall };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ThinkingTextMessageStartEvent, ThinkingTextMessageContentEvent, ThinkingTextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, ThinkingStartEvent, ThinkingEndEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, RawEvent, CustomEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, AgentConfig, AbstractAgent, RunAgentInput as RunAgentInput$1, HttpAgent } from '@ag-ui/client';
1
+ import { TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ThinkingTextMessageStartEvent, ThinkingTextMessageContentEvent, ThinkingTextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent, ThinkingStartEvent, ThinkingEndEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, RawEvent, CustomEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, AgentConfig, AbstractAgent, RunAgentInput as RunAgentInput$1, FetchRunHistoryOptions, FetchRunHistoryResult, HttpAgentConfig, HttpAgent } from '@ag-ui/client';
2
+ import { BaseCheckpointSaver } from '@langchain/langgraph';
2
3
  import * as _langchain_langgraph_sdk_dist_types_stream from '@langchain/langgraph-sdk/dist/types.stream';
3
4
  import * as _langchain_langgraph_sdk from '@langchain/langgraph-sdk';
4
5
  import { Message, AssistantGraph, Client, Config, Assistant, StreamMode, ThreadState, Thread } from '@langchain/langgraph-sdk';
@@ -175,13 +176,24 @@ declare class LangGraphAgent extends AbstractAgent {
175
176
  handleNodeChange(nodeName: string | undefined): void;
176
177
  startStep(nodeName: string): void;
177
178
  endStep(): void;
179
+ protected fetchRunHistory(options: FetchRunHistoryOptions): Promise<FetchRunHistoryResult | undefined>;
178
180
  getCheckpointByMessage(messageId: string, threadId: string, checkpoint?: null | {
179
181
  checkpoint_id?: null | string;
180
182
  checkpoint_ns: string;
181
183
  }): Promise<ThreadState>;
182
184
  }
183
185
 
186
+ interface LangGraphHttpAgentConfig extends HttpAgentConfig {
187
+ checkpointer?: BaseCheckpointSaver;
188
+ }
184
189
  declare class LangGraphHttpAgent extends HttpAgent {
190
+ protected checkpointer?: BaseCheckpointSaver;
191
+ constructor(config: LangGraphHttpAgentConfig);
192
+ protected fetchRunHistory(options: FetchRunHistoryOptions): Promise<FetchRunHistoryResult | undefined>;
193
+ private convertMessages;
194
+ private convertMessage;
195
+ private mapRole;
196
+ clone(): LangGraphHttpAgent;
185
197
  }
186
198
 
187
- export { CustomEventNames, LangGraphAgent, type LangGraphAgentConfig, LangGraphEventTypes, LangGraphHttpAgent, type LangGraphPlatformMessage, type LangGraphReasoning, type LangGraphToolWithName, type MessageInProgress, type MessagesInProgressRecord, type PredictStateTool, type ProcessedEvents, type RunMetadata, type SchemaKeys, type State, type StateEnrichment, type ThinkingInProgress, type ToolCall };
199
+ export { CustomEventNames, LangGraphAgent, type LangGraphAgentConfig, LangGraphEventTypes, LangGraphHttpAgent, type LangGraphHttpAgentConfig, type LangGraphPlatformMessage, type LangGraphReasoning, type LangGraphToolWithName, type MessageInProgress, type MessagesInProgressRecord, type PredictStateTool, type ProcessedEvents, type RunMetadata, type SchemaKeys, type State, type StateEnrichment, type ThinkingInProgress, type ToolCall };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var Y=Object.defineProperty,Et=Object.defineProperties,vt=Object.getOwnPropertyDescriptor,_t=Object.getOwnPropertyDescriptors,Tt=Object.getOwnPropertyNames,V=Object.getOwnPropertySymbols;var tt=Object.prototype.hasOwnProperty,ht=Object.prototype.propertyIsEnumerable;var ot=(a,n)=>(n=Symbol[a])?n:Symbol.for("Symbol."+a);var lt=(a,n,t)=>n in a?Y(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t,f=(a,n)=>{for(var t in n||(n={}))tt.call(n,t)&&lt(a,t,n[t]);if(V)for(var t of V(n))ht.call(n,t)&&lt(a,t,n[t]);return a},T=(a,n)=>Et(a,_t(n));var et=(a,n)=>{var t={};for(var e in a)tt.call(a,e)&&n.indexOf(e)<0&&(t[e]=a[e]);if(a!=null&&V)for(var e of V(a))n.indexOf(e)<0&&ht.call(a,e)&&(t[e]=a[e]);return t};var It=(a,n)=>{for(var t in n)Y(a,t,{get:n[t],enumerable:!0})},Rt=(a,n,t,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Tt(n))!tt.call(a,s)&&s!==t&&Y(a,s,{get:()=>n[s],enumerable:!(e=vt(n,s))||e.enumerable});return a};var Mt=a=>Rt(Y({},"__esModule",{value:!0}),a);var ct=(a,n,t)=>(n=a[ot("asyncIterator")])?n.call(a):(a=a[ot("iterator")](),n={},t=(e,s)=>(s=a[e])&&(n[e]=i=>new Promise((r,u,g)=>(i=s.call(a,i),g=i.done,Promise.resolve(i.value).then(l=>r({value:l,done:g}),u)))),t("next"),t("return"),n);var Nt={};It(Nt,{CustomEventNames:()=>ut,LangGraphAgent:()=>at,LangGraphEventTypes:()=>dt,LangGraphHttpAgent:()=>it});module.exports=Mt(Nt);var yt=require("@ag-ui/client");var ft=require("rxjs"),St=require("@langchain/langgraph-sdk"),B=require("@ag-ui/client");var dt=(c=>(c.OnChainStart="on_chain_start",c.OnChainStream="on_chain_stream",c.OnChainEnd="on_chain_end",c.OnChatModelStart="on_chat_model_start",c.OnChatModelStream="on_chat_model_stream",c.OnChatModelEnd="on_chat_model_end",c.OnToolStart="on_tool_start",c.OnToolEnd="on_tool_end",c.OnCustomEvent="on_custom_event",c.OnInterrupt="on_interrupt",c))(dt||{}),ut=(s=>(s.ManuallyEmitMessage="manually_emit_message",s.ManuallyEmitToolCall="manually_emit_tool_call",s.ManuallyEmitState="manually_emit_state",s.Exit="exit",s))(ut||{});var o=require("@ag-ui/client");var nt=["messages","tools"];function Q(a,n){return Object.fromEntries(Object.entries(a).filter(([t])=>n.includes(t)))}function gt({mode:a,state:n,schemaKeys:t}){let e=a==="start"?n:null;return e&&(t!=null&&t.input)&&(e=Q(e,[...nt,...t.input])),e}function Ct(a){var t;let n=[];for(let e of a)if(e.type==="text"&&e.text)n.push({type:"text",text:e.text});else if(e.type==="image_url"){let s=typeof e.image_url=="string"?e.image_url:(t=e.image_url)==null?void 0:t.url;if(!s)continue;if(s.startsWith("data:")){let[i,r]=s.split(",",2),u=i.includes(":")?i.split(":")[1].split(";")[0]:"image/png";n.push({type:"binary",mimeType:u,data:r||""})}else n.push({type:"binary",mimeType:"image/png",url:s})}return n}function xt(a){let n=[];for(let t of a)if(t.type==="text")n.push({type:"text",text:t.text});else if(t.type==="binary"){let e;if(t.url)e=t.url;else if(t.data)e=`data:${t.mimeType};base64,${t.data}`;else if(t.id)e=t.id;else continue;n.push({type:"image_url",image_url:{url:e}})}return n}function pt(a){return a.map(n=>{var t;switch(n.type){case"human":let e;return Array.isArray(n.content)?e=Ct(n.content):e=z(K(n.content)),{id:n.id,role:"user",content:e};case"ai":let s=K(n.content);return{id:n.id,role:"assistant",content:s?z(s):"",toolCalls:(t=n.tool_calls)==null?void 0:t.map(i=>({id:i.id,type:"function",function:{name:i.name,arguments:JSON.stringify(i.args)}}))};case"system":return{id:n.id,role:"system",content:z(K(n.content))};case"tool":return{id:n.id,role:"tool",content:z(K(n.content)),toolCallId:n.tool_call_id};default:throw new Error("message type returned from LangGraph is not supported.")}})}function st(a){return a.map((n,t)=>{var e,s;switch(n.role){case"user":let i;return typeof n.content=="string"?i=n.content:Array.isArray(n.content)?i=xt(n.content):i=String(n.content),{id:n.id,role:n.role,content:i,type:"human"};case"assistant":return{id:n.id,type:"ai",role:n.role,content:(e=n.content)!=null?e:"",tool_calls:((s=n.toolCalls)!=null?s:[]).map(r=>({id:r.id,name:r.function.name,args:JSON.parse(r.function.arguments),type:"tool_call"}))};case"system":return{id:n.id,role:n.role,content:n.content,type:"system"};case"tool":return{content:n.content,role:n.role,type:n.role,tool_call_id:n.toolCallId,id:n.id};default:throw console.error(`Message role ${n.role} is not implemented`),new Error("message role is not supported.")}})}function z(a){return typeof a=="string"?a:JSON.stringify(a)}function mt(a){var t,e,s,i,r;let n=(t=a.chunk)==null?void 0:t.content;if(n&&Array.isArray(n)&&n.length&&n[0])return n[0].thinking?{text:n[0].thinking,type:"text",index:n[0].index}:null;if((i=(s=(e=a.chunk.additional_kwargs)==null?void 0:e.reasoning)==null?void 0:s.summary)!=null&&i[0]){let u=(r=a.chunk.additional_kwargs)==null?void 0:r.reasoning.summary[0];return!u||!u.text?null:{type:"text",text:u.text,index:u.index}}return null}function K(a){var n;if(!a)return null;if(typeof a=="string")return a;if(Array.isArray(a)&&a.length){let t=(n=a.find(e=>e.type==="text"))==null?void 0:n.text;return t!=null?t:null}return null}var at=class extends o.AbstractAgent{constructor(t){var e,s;super(t);this.cancelRequested=!1;this.cancelSent=!1;this.constantSchemaKeys=nt;this.config=t,this.messagesInProcess={},this.agentName=t.agentName,this.graphId=t.graphId,this.assistantConfig=t.assistantConfig,this.thinkingProcess=null,this.client=(s=t==null?void 0:t.client)!=null?s:new St.Client({apiUrl:t.deploymentUrl,apiKey:t.langsmithApiKey,defaultHeaders:f({},(e=t.propertyHeaders)!=null?e:{})})}clone(){return Object.assign(super.clone(),{config:this.config,messagesInProcess:structuredClone(this.messagesInProcess),agentName:this.agentName,graphId:this.graphId,assistantConfig:this.assistantConfig,thinkingProcess:this.thinkingProcess?structuredClone(this.thinkingProcess):null,constantSchemaKeys:[...this.constantSchemaKeys],client:this.client,assistant:this.assistant,activeRun:this.activeRun?structuredClone(this.activeRun):void 0,cancelRequested:this.cancelRequested,cancelSent:this.cancelSent})}dispatchEvent(t){return this.subscriber.next(t),!0}run(t){return new ft.Observable(e=>(this.runAgentStream(t,e),()=>{}))}async runAgentStream(t,e){var u,g,l;this.activeRun={id:t.runId,threadId:t.threadId,hasFunctionStreaming:!1},this.cancelRequested=!1,this.cancelSent=!1,this.subscriber=e,this.assistant||(this.assistant=await this.getAssistant());let s=(u=t.threadId)!=null?u:(0,B.randomUUID)(),i=(l=(g=t.forwardedProps)==null?void 0:g.streamMode)!=null?l:["events","values","updates"],r=await this.prepareStream(T(f({},t),{threadId:s}),i);if(!r)return e.error("No stream to regenerate");await this.handleStreamEvents(r,s,e,t,Array.isArray(i)?i:[i])}async prepareRegenerateStream(t,e){var l,c,d;let{threadId:s,messageCheckpoint:i}=t,r=await this.getCheckpointByMessage(i.id,s);if(this.assistant||(this.assistant=await this.getAssistant()),!r)return this.subscriber.error("No checkpoint found for message");let u=await this.client.threads.updateState(s,{values:this.langGraphDefaultMergeState(r.values,[],t),checkpointId:r.checkpoint.checkpoint_id,asNode:(c=(l=r.next)==null?void 0:l[0])!=null?c:"__start__"}),g=T(f({},(d=t.forwardedProps)!=null?d:{}),{input:this.langGraphDefaultMergeState(r.values,[i],t),checkpointId:u.checkpoint.checkpoint_id,streamMode:e});return{streamResponse:this.client.runs.stream(s,this.assistant.assistant_id,g),state:r,streamMode:e}}async prepareStream(t,e){var L,P,b,S,G,O,$,X,U,E;let{threadId:s,state:i,messages:r,tools:u,context:g,forwardedProps:l}=t;this.activeRun.manuallyEmittedState=null;let c=l==null?void 0:l.nodeName,d=s!=null?s:(0,B.randomUUID)();this.assistant||(this.assistant=await this.getAssistant());let y=await this.getOrCreateThread(d,l==null?void 0:l.threadMetadata);this.activeRun.threadId=y.thread_id;let _=(L=await this.client.threads.getState(y.thread_id))!=null?L:{values:{}},I=(P=_.values.messages)!=null?P:[],x=st(r),M=this.langGraphDefaultMergeState(T(f({},i),{messages:I}),x,t),N=T(f({},_),{values:T(f({},M),{messages:[...I,...(b=M.messages)!=null?b:[]]})}),A=N.values;if(this.activeRun.schemaKeys=await this.getSchemaKeys(),((S=_.values.messages)!=null?S:[]).length>r.filter(v=>v.role!=="system").length){let v=null;for(let w=r.length-1;w>=0;w--)if(r[w].role==="user"){v=st([r[w]])[0];break}return v?this.prepareRegenerateStream(T(f({},t),{messageCheckpoint:v}),e):this.subscriber.error("No user message found in messages to regenerate")}this.activeRun.graphInfo=await this.client.assistants.getGraph(this.assistant.assistant_id);let p=!((G=l==null?void 0:l.command)!=null&&G.resume)&&d&&this.activeRun.nodeName!="__end__"&&this.activeRun.nodeName?"continue":"start";if(p==="continue"){let v=this.activeRun.graphInfo.edges.find(w=>w.target===this.activeRun.nodeName);await this.client.threads.updateState(d,{values:i,asNode:v==null?void 0:v.source})}let R=gt({mode:p,state:A,schemaKeys:this.activeRun.schemaKeys}),m,J=[this.assistantConfig,l==null?void 0:l.config].filter(Boolean);J.length&&(m=await this.mergeConfigs({configs:J,assistant:this.assistant,schemaKeys:this.activeRun.schemaKeys}));let h=l,{command:k}=h,W=et(h,["command"]);if(k!=null&&k.resume&&typeof k.resume=="string")try{k.resume=JSON.parse(k.resume)}catch(v){}let j=T(f({},W),{command:k,streamMode:e,input:R,config:m,context:f(f({},g),(O=m==null?void 0:m.configurable)!=null?O:{})}),C=(U=(X=($=_.tasks)==null?void 0:$[0])==null?void 0:X.interrupts)!=null?U:[];return C!=null&&C.length&&!((E=l==null?void 0:l.command)!=null&&E.resume)?(this.dispatchEvent({type:o.EventType.RUN_STARTED,threadId:d,runId:t.runId}),this.handleNodeChange(c),C.forEach(v=>{this.dispatchEvent({type:o.EventType.CUSTOM,name:"on_interrupt",value:typeof v.value=="string"?v.value:JSON.stringify(v.value),rawEvent:v})}),this.dispatchEvent({type:o.EventType.RUN_FINISHED,threadId:d,runId:t.runId}),this.subscriber.complete()):{streamResponse:this.client.runs.stream(d,this.assistant.assistant_id,j),state:N}}async handleStreamEvents(t,e,s,i,r){var I,x,M,N,A,p,R,m,C,L,P,b,S,G;let{forwardedProps:u}=i,g=u==null?void 0:u.nodeName;this.subscriber=s;let l=!1;if(!t)return;let{streamResponse:c,state:d}=t;this.activeRun.prevNodeName=null;let y={},_=d;try{this.dispatchEvent({type:o.EventType.RUN_STARTED,threadId:e,runId:this.activeRun.id}),this.handleNodeChange(g);try{for(var J=ct(c),k,W,j;k=!(W=await J.next()).done;k=!1){let E=W.value;if(this.cancelRequested&&!this.cancelSent&&((I=this.activeRun)!=null&&I.threadId)&&((x=this.activeRun)!=null&&x.id)){try{await this.client.runs.cancel(this.activeRun.threadId,this.activeRun.id)}catch(q){}finally{this.cancelSent=!0}try{await((M=c==null?void 0:c.return)==null?void 0:M.call(c))}catch(q){}break}let v=(N=i.forwardedProps)==null?void 0:N.streamSubgraphs,w=v&&(E.event.startsWith("events")||E.event.startsWith("values"));if(!r.includes(E.event)&&!w&&E.event!=="error")continue;let F=E;if(E.event==="error"){this.dispatchEvent({type:o.EventType.RUN_ERROR,message:E.data.message,rawEvent:E});break}if(E.event==="updates")continue;if(E.event==="values"){y=F.data;continue}else if(v&&F.event.startsWith("values|")){y=f(f({},y),F.data);continue}let H=F.data,Z=(A=H.metadata)!=null?A:{},D=Z.langgraph_node,rt=H.event;if(Z.run_id&&(this.activeRun.id=Z.run_id,this.activeRun.serverRunIdKnown=!0,this.cancelRequested&&!this.cancelSent&&((p=this.activeRun)!=null&&p.threadId)))try{await this.client.runs.cancel(this.activeRun.threadId,this.activeRun.id)}catch(q){}finally{this.cancelSent=!0}if(D&&D!==this.activeRun.nodeName&&this.handleNodeChange(D),l=l||rt==="on_custom_event"&&H.name==="exit",rt==="on_chain_end"&&this.activeRun.nodeName===D&&(this.activeRun.exitingNode=!0),this.activeRun.exitingNode&&(this.activeRun.manuallyEmittedState=null),(R=this.activeRun.graphInfo)!=null&&R.nodes.some(q=>q.id===D)&&this.handleNodeChange(D),_.values=(m=this.activeRun.manuallyEmittedState)!=null?m:y,!this.activeRun.nodeName)continue;(JSON.stringify(_)!==JSON.stringify(d)||this.activeRun.prevNodeName!=this.activeRun.nodeName||this.activeRun.exitingNode)&&!this.getMessageInProgress(this.activeRun.id)&&(d=_,this.activeRun.prevNodeName=this.activeRun.nodeName,this.dispatchEvent({type:o.EventType.STATE_SNAPSHOT,snapshot:this.getStateSnapshot(d),rawEvent:F})),this.dispatchEvent({type:o.EventType.RAW,event:H}),this.handleSingleEvent(H)}}catch(W){j=[W]}finally{try{k&&(W=J.return)&&await W.call(J)}finally{if(j)throw j[0]}}d=await this.client.threads.getState(e);let h=d.tasks,O=(L=(C=h==null?void 0:h[0])==null?void 0:C.interrupts)!=null?L:[],$=d.next.length===0,X=(b=(P=d.metadata)==null?void 0:P.writes)!=null?b:{},U=this.activeRun.nodeName;return O!=null&&O.length||(U=$?"__end__":(S=d.next[0])!=null?S:Object.keys(X)[0]),O.forEach(E=>{this.dispatchEvent({type:o.EventType.CUSTOM,name:"on_interrupt",value:typeof E.value=="string"?E.value:JSON.stringify(E.value),rawEvent:E})}),this.handleNodeChange(U),this.handleNodeChange(void 0),this.dispatchEvent({type:o.EventType.STATE_SNAPSHOT,snapshot:this.getStateSnapshot(d)}),this.dispatchEvent({type:o.EventType.MESSAGES_SNAPSHOT,messages:pt((G=d.values.messages)!=null?G:[])}),this.dispatchEvent({type:o.EventType.RUN_FINISHED,threadId:e,runId:this.activeRun.id}),this.cancelRequested=!1,this.cancelSent=!1,this.activeRun=void 0,s.complete()}catch(h){return s.error(h)}}handleSingleEvent(t){var e,s,i,r,u,g,l,c,d,y,_,I,x,M;switch(t.event){case"on_chat_model_stream":let N=(e=t.metadata["emit-messages"])!=null?e:!0,A=(s=t.metadata["emit-tool-calls"])!=null?s:!0;if(t.data.chunk.response_metadata.finish_reason)return;let p=this.getMessageInProgress(this.activeRun.id),R=!!(p!=null&&p.id),m=(i=t.data.chunk.tool_call_chunks)==null?void 0:i[0],J=(r=t.metadata.predict_state)==null?void 0:r.some(h=>h.tool===(m==null?void 0:m.name)),k=!R&&(m==null?void 0:m.name),W=R&&(p==null?void 0:p.toolCallId)&&(m==null?void 0:m.args),j=R&&(p==null?void 0:p.toolCallId)&&!m;(j||W||k)&&(this.activeRun.hasFunctionStreaming=!0);let C=mt(t.data),L=K(t.data.chunk.content),P=!!(!m&&L),b=R&&!(p!=null&&p.toolCallId)&&!P;if(C){this.handleThinkingEvent(C);break}if(!C&&this.thinkingProcess&&(this.dispatchEvent({type:o.EventType.THINKING_TEXT_MESSAGE_END}),this.dispatchEvent({type:o.EventType.THINKING_END}),this.thinkingProcess=null),J&&this.dispatchEvent({type:o.EventType.CUSTOM,name:"PredictState",value:t.metadata.predict_state}),j){this.dispatchEvent({type:o.EventType.TOOL_CALL_END,toolCallId:p==null?void 0:p.toolCallId,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}if(b){this.dispatchEvent({type:o.EventType.TEXT_MESSAGE_END,messageId:p.id,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}if(k&&A){this.dispatchEvent({type:o.EventType.TOOL_CALL_START,toolCallId:m.id,toolCallName:m.name,parentMessageId:t.data.chunk.id,rawEvent:t})&&this.setMessageInProgress(this.activeRun.id,{id:t.data.chunk.id,toolCallId:m.id,toolCallName:m.name});break}if(W&&A){this.dispatchEvent({type:o.EventType.TOOL_CALL_ARGS,toolCallId:p==null?void 0:p.toolCallId,delta:m.args,rawEvent:t});break}if(P&&N){p||(this.dispatchEvent({type:o.EventType.TEXT_MESSAGE_START,role:"assistant",messageId:t.data.chunk.id,rawEvent:t}),this.setMessageInProgress(this.activeRun.id,{id:t.data.chunk.id,toolCallId:null,toolCallName:null}),p=this.getMessageInProgress(this.activeRun.id)),this.dispatchEvent({type:o.EventType.TEXT_MESSAGE_CONTENT,messageId:p.id,delta:L,rawEvent:t});break}break;case"on_chat_model_end":if((u=this.getMessageInProgress(this.activeRun.id))!=null&&u.toolCallId){this.dispatchEvent({type:o.EventType.TOOL_CALL_END,toolCallId:this.getMessageInProgress(this.activeRun.id).toolCallId,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}if((g=this.getMessageInProgress(this.activeRun.id))!=null&&g.id){this.dispatchEvent({type:o.EventType.TEXT_MESSAGE_END,messageId:this.getMessageInProgress(this.activeRun.id).id,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}break;case"on_custom_event":if(t.name==="manually_emit_message"){this.dispatchEvent({type:o.EventType.TEXT_MESSAGE_START,role:"assistant",messageId:t.data.message_id,rawEvent:t}),this.dispatchEvent({type:o.EventType.TEXT_MESSAGE_CONTENT,messageId:t.data.message_id,delta:t.data.message,rawEvent:t}),this.dispatchEvent({type:o.EventType.TEXT_MESSAGE_END,messageId:t.data.message_id,rawEvent:t});break}if(t.name==="manually_emit_tool_call"){this.dispatchEvent({type:o.EventType.TOOL_CALL_START,toolCallId:t.data.id,toolCallName:t.data.name,parentMessageId:t.data.id,rawEvent:t}),this.dispatchEvent({type:o.EventType.TOOL_CALL_ARGS,toolCallId:t.data.id,delta:t.data.args,rawEvent:t}),this.dispatchEvent({type:o.EventType.TOOL_CALL_END,toolCallId:t.data.id,rawEvent:t});break}t.name==="manually_emit_state"&&(this.activeRun.manuallyEmittedState=t.data,this.dispatchEvent({type:o.EventType.STATE_SNAPSHOT,snapshot:this.getStateSnapshot({values:this.activeRun.manuallyEmittedState}),rawEvent:t})),this.dispatchEvent({type:o.EventType.CUSTOM,name:t.name,value:t.data,rawEvent:t});break;case"on_tool_end":let S=(l=t.data)==null?void 0:l.output;if(S&&!S.tool_call_id&&((d=(c=S.update)==null?void 0:c.messages)!=null&&d.find(h=>h.type==="tool"))&&(S=(_=(y=S.update)==null?void 0:y.messages)==null?void 0:_.find(h=>h.type==="tool")),S&&((x=(I=S.update)==null?void 0:I.messages)!=null&&x.length)){(M=S.update)==null||M.messages.filter(h=>h.type==="tool").forEach(h=>{var O;this.activeRun.hasFunctionStreaming||(this.dispatchEvent({type:o.EventType.TOOL_CALL_START,toolCallId:h.tool_call_id,toolCallName:(O=h.name)!=null?O:"",parentMessageId:h.id,rawEvent:t}),this.dispatchEvent({type:o.EventType.TOOL_CALL_ARGS,toolCallId:h.tool_call_id,delta:JSON.stringify(t.data.input),rawEvent:t})),this.dispatchEvent({type:o.EventType.TOOL_CALL_RESULT,toolCallId:h.tool_call_id,content:typeof(h==null?void 0:h.content)=="string"?h==null?void 0:h.content:JSON.stringify(h==null?void 0:h.content),messageId:(0,B.randomUUID)(),rawEvent:t,role:"tool"})});break}this.activeRun.hasFunctionStreaming||(this.dispatchEvent({type:o.EventType.TOOL_CALL_START,toolCallId:S.tool_call_id,toolCallName:S.name,parentMessageId:S.id,rawEvent:t}),this.dispatchEvent({type:o.EventType.TOOL_CALL_ARGS,toolCallId:S.tool_call_id,delta:JSON.stringify(t.data.input),rawEvent:t}),this.dispatchEvent({type:o.EventType.TOOL_CALL_END,toolCallId:S.tool_call_id,rawEvent:t}));let G=Array.isArray(S.content)?S.content.map(h=>typeof h=="string"?h:h.type==="text"?h.text:JSON.stringify(h)).join(""):S.content;this.dispatchEvent({type:o.EventType.TOOL_CALL_RESULT,toolCallId:S.tool_call_id,content:G,messageId:(0,B.randomUUID)(),role:"tool",rawEvent:t});break}}abortRun(){var s,i;this.cancelRequested=!0;let t=(s=this.activeRun)==null?void 0:s.threadId,e=(i=this.activeRun)==null?void 0:i.id;t&&e&&!this.cancelSent&&this.client.runs.cancel(t,e).then(()=>{this.cancelSent=!0}).catch(()=>{}),super.abortRun()}handleThinkingEvent(t){var s;if(!t||!t.type||!t.text)return;let e=t.index;(s=this.thinkingProcess)!=null&&s.index&&this.thinkingProcess.index!==e&&(this.thinkingProcess.type&&this.dispatchEvent({type:o.EventType.THINKING_TEXT_MESSAGE_END}),this.dispatchEvent({type:o.EventType.THINKING_END}),this.thinkingProcess=null),this.thinkingProcess||(this.dispatchEvent({type:o.EventType.THINKING_START}),this.thinkingProcess={index:e}),this.thinkingProcess.type!==t.type&&(this.dispatchEvent({type:o.EventType.THINKING_TEXT_MESSAGE_START}),this.thinkingProcess.type=t.type),this.thinkingProcess.type&&this.dispatchEvent({type:o.EventType.THINKING_TEXT_MESSAGE_CONTENT,delta:t.text})}getStateSnapshot(t){let e=t.values,s=this.activeRun.schemaKeys;return s!=null&&s.output&&(e=Q(e,[...this.constantSchemaKeys,...s.output])),e}async getOrCreateThread(t,e){let s;try{try{s=await this.getThread(t)}catch(i){s=await this.createThread({threadId:t,metadata:e})}}catch(i){throw new Error(`Failed to create thread: ${i.message}`)}return s}async getThread(t){return this.client.threads.get(t)}async createThread(t){return this.client.threads.create(t)}async mergeConfigs({configs:t,assistant:e,schemaKeys:s}){return t.reduce((i,r)=>{var y;let u=i.configurable;r.configurable&&(u=s!=null&&s.config?Q(r==null?void 0:r.configurable,[...this.constantSchemaKeys,...(y=s==null?void 0:s.config)!=null?y:[]]):r==null?void 0:r.configurable);let g=T(f(f({},i),r),{configurable:u}),l=i.recursion_limit==null&&r.recursion_limit===25,c=JSON.stringify(g)!==JSON.stringify(i),d=l&&JSON.stringify(T(f({},g),{recursion_limit:null}))===JSON.stringify(T(f({},i),{recursion_limit:null}));return c&&!d?f(f({},i),g):i},e.config)}getMessageInProgress(t){return this.messagesInProcess[t]}setMessageInProgress(t,e){this.messagesInProcess=T(f({},this.messagesInProcess),{[t]:f(f({},this.messagesInProcess[t]),e)})}async getAssistant(){try{let t=await this.client.assistants.search(),e=t.find(s=>s.graph_id===this.graphId);if(!e){let s=`
1
+ "use strict";var Y=Object.defineProperty,Et=Object.defineProperties,vt=Object.getOwnPropertyDescriptor,_t=Object.getOwnPropertyDescriptors,Tt=Object.getOwnPropertyNames,V=Object.getOwnPropertySymbols;var et=Object.prototype.hasOwnProperty,dt=Object.prototype.propertyIsEnumerable;var ct=(r,n)=>(n=Symbol[r])?n:Symbol.for("Symbol."+r);var ht=(r,n,t)=>n in r?Y(r,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[n]=t,p=(r,n)=>{for(var t in n||(n={}))et.call(n,t)&&ht(r,t,n[t]);if(V)for(var t of V(n))dt.call(n,t)&&ht(r,t,n[t]);return r},E=(r,n)=>Et(r,_t(n));var nt=(r,n)=>{var t={};for(var e in r)et.call(r,e)&&n.indexOf(e)<0&&(t[e]=r[e]);if(r!=null&&V)for(var e of V(r))n.indexOf(e)<0&&dt.call(r,e)&&(t[e]=r[e]);return t};var Rt=(r,n)=>{for(var t in n)Y(r,t,{get:n[t],enumerable:!0})},It=(r,n,t,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Tt(n))!et.call(r,s)&&s!==t&&Y(r,s,{get:()=>n[s],enumerable:!(e=vt(n,s))||e.enumerable});return r};var Mt=r=>It(Y({},"__esModule",{value:!0}),r);var z=(r,n,t)=>(n=r[ct("asyncIterator")])?n.call(r):(r=r[ct("iterator")](),n={},t=(e,s)=>(s=r[e])&&(n[e]=a=>new Promise((i,o,h)=>(a=s.call(r,a),h=a.done,Promise.resolve(a.value).then(c=>i({value:c,done:h}),o)))),t("next"),t("return"),n);var kt={};Rt(kt,{CustomEventNames:()=>gt,LangGraphAgent:()=>rt,LangGraphEventTypes:()=>ut,LangGraphHttpAgent:()=>ot});module.exports=Mt(kt);var St=require("@ag-ui/client");var ft=require("rxjs"),yt=require("@langchain/langgraph-sdk"),B=require("@ag-ui/client");var ut=(d=>(d.OnChainStart="on_chain_start",d.OnChainStream="on_chain_stream",d.OnChainEnd="on_chain_end",d.OnChatModelStart="on_chat_model_start",d.OnChatModelStream="on_chat_model_stream",d.OnChatModelEnd="on_chat_model_end",d.OnToolStart="on_tool_start",d.OnToolEnd="on_tool_end",d.OnCustomEvent="on_custom_event",d.OnInterrupt="on_interrupt",d))(ut||{}),gt=(s=>(s.ManuallyEmitMessage="manually_emit_message",s.ManuallyEmitToolCall="manually_emit_tool_call",s.ManuallyEmitState="manually_emit_state",s.Exit="exit",s))(gt||{});var l=require("@ag-ui/client");var st=["messages","tools"];function Z(r,n){return Object.fromEntries(Object.entries(r).filter(([t])=>n.includes(t)))}function pt({mode:r,state:n,schemaKeys:t}){let e=r==="start"?n:null;return e&&(t!=null&&t.input)&&(e=Z(e,[...st,...t.input])),e}function Ct(r){var t;let n=[];for(let e of r)if(e.type==="text"&&e.text)n.push({type:"text",text:e.text});else if(e.type==="image_url"){let s=typeof e.image_url=="string"?e.image_url:(t=e.image_url)==null?void 0:t.url;if(!s)continue;if(s.startsWith("data:")){let[a,i]=s.split(",",2),o=a.includes(":")?a.split(":")[1].split(";")[0]:"image/png";n.push({type:"binary",mimeType:o,data:i||""})}else n.push({type:"binary",mimeType:"image/png",url:s})}return n}function xt(r){let n=[];for(let t of r)if(t.type==="text")n.push({type:"text",text:t.text});else if(t.type==="binary"){let e;if(t.url)e=t.url;else if(t.data)e=`data:${t.mimeType};base64,${t.data}`;else if(t.id)e=t.id;else continue;n.push({type:"image_url",image_url:{url:e}})}return n}function at(r){return r.map(n=>{var t;switch(n.type){case"human":let e;return Array.isArray(n.content)?e=Ct(n.content):e=Q(F(n.content)),{id:n.id,role:"user",content:e};case"ai":let s=F(n.content);return{id:n.id,role:"assistant",content:s?Q(s):"",toolCalls:(t=n.tool_calls)==null?void 0:t.map(a=>({id:a.id,type:"function",function:{name:a.name,arguments:JSON.stringify(a.args)}}))};case"system":return{id:n.id,role:"system",content:Q(F(n.content))};case"tool":return{id:n.id,role:"tool",content:Q(F(n.content)),toolCallId:n.tool_call_id};default:throw new Error("message type returned from LangGraph is not supported.")}})}function it(r){return r.map((n,t)=>{var e,s;switch(n.role){case"user":let a;return typeof n.content=="string"?a=n.content:Array.isArray(n.content)?a=xt(n.content):a=String(n.content),{id:n.id,role:n.role,content:a,type:"human"};case"assistant":return{id:n.id,type:"ai",role:n.role,content:(e=n.content)!=null?e:"",tool_calls:((s=n.toolCalls)!=null?s:[]).map(i=>({id:i.id,name:i.function.name,args:JSON.parse(i.function.arguments),type:"tool_call"}))};case"system":return{id:n.id,role:n.role,content:n.content,type:"system"};case"tool":return{content:n.content,role:n.role,type:n.role,tool_call_id:n.toolCallId,id:n.id};default:throw console.error(`Message role ${n.role} is not implemented`),new Error("message role is not supported.")}})}function Q(r){return typeof r=="string"?r:JSON.stringify(r)}function mt(r){var t,e,s,a,i;let n=(t=r.chunk)==null?void 0:t.content;if(n&&Array.isArray(n)&&n.length&&n[0])return n[0].thinking?{text:n[0].thinking,type:"text",index:n[0].index}:null;if((a=(s=(e=r.chunk.additional_kwargs)==null?void 0:e.reasoning)==null?void 0:s.summary)!=null&&a[0]){let o=(i=r.chunk.additional_kwargs)==null?void 0:i.reasoning.summary[0];return!o||!o.text?null:{type:"text",text:o.text,index:o.index}}return null}function F(r){var n;if(!r)return null;if(typeof r=="string")return r;if(Array.isArray(r)&&r.length){let t=(n=r.find(e=>e.type==="text"))==null?void 0:n.text;return t!=null?t:null}return null}var rt=class extends l.AbstractAgent{constructor(t){var e,s;super(t);this.cancelRequested=!1;this.cancelSent=!1;this.constantSchemaKeys=st;this.config=t,this.messagesInProcess={},this.agentName=t.agentName,this.graphId=t.graphId,this.assistantConfig=t.assistantConfig,this.thinkingProcess=null,this.client=(s=t==null?void 0:t.client)!=null?s:new yt.Client({apiUrl:t.deploymentUrl,apiKey:t.langsmithApiKey,defaultHeaders:p({},(e=t.propertyHeaders)!=null?e:{})})}clone(){return Object.assign(super.clone(),{config:this.config,messagesInProcess:structuredClone(this.messagesInProcess),agentName:this.agentName,graphId:this.graphId,assistantConfig:this.assistantConfig,thinkingProcess:this.thinkingProcess?structuredClone(this.thinkingProcess):null,constantSchemaKeys:[...this.constantSchemaKeys],client:this.client,assistant:this.assistant,activeRun:this.activeRun?structuredClone(this.activeRun):void 0,cancelRequested:this.cancelRequested,cancelSent:this.cancelSent})}dispatchEvent(t){return this.subscriber.next(t),!0}run(t){return new ft.Observable(e=>(this.runAgentStream(t,e),()=>{}))}async runAgentStream(t,e){var o,h,c;this.activeRun={id:t.runId,threadId:t.threadId,hasFunctionStreaming:!1},this.cancelRequested=!1,this.cancelSent=!1,this.subscriber=e,this.assistant||(this.assistant=await this.getAssistant());let s=(o=t.threadId)!=null?o:(0,B.randomUUID)(),a=(c=(h=t.forwardedProps)==null?void 0:h.streamMode)!=null?c:["events","values","updates"],i=await this.prepareStream(E(p({},t),{threadId:s}),a);if(!i)return e.error("No stream to regenerate");await this.handleStreamEvents(i,s,e,t,Array.isArray(a)?a:[a])}async prepareRegenerateStream(t,e){var c,d,g;let{threadId:s,messageCheckpoint:a}=t,i=await this.getCheckpointByMessage(a.id,s);if(this.assistant||(this.assistant=await this.getAssistant()),!i)return this.subscriber.error("No checkpoint found for message");let o=await this.client.threads.updateState(s,{values:this.langGraphDefaultMergeState(i.values,[],t),checkpointId:i.checkpoint.checkpoint_id,asNode:(d=(c=i.next)==null?void 0:c[0])!=null?d:"__start__"}),h=E(p({},(g=t.forwardedProps)!=null?g:{}),{input:this.langGraphDefaultMergeState(i.values,[a],t),checkpointId:o.checkpoint.checkpoint_id,streamMode:e});return{streamResponse:this.client.runs.stream(s,this.assistant.assistant_id,h),state:i,streamMode:e}}async prepareStream(t,e){var L,w,b,S,G,O,$,X,D,_;let{threadId:s,state:a,messages:i,tools:o,context:h,forwardedProps:c}=t;this.activeRun.manuallyEmittedState=null;let d=c==null?void 0:c.nodeName,g=s!=null?s:(0,B.randomUUID)();this.assistant||(this.assistant=await this.getAssistant());let y=await this.getOrCreateThread(g,c==null?void 0:c.threadMetadata);this.activeRun.threadId=y.thread_id;let v=(L=await this.client.threads.getState(y.thread_id))!=null?L:{values:{}},R=(w=v.values.messages)!=null?w:[],x=it(i),M=this.langGraphDefaultMergeState(E(p({},a),{messages:R}),x,t),k=E(p({},v),{values:E(p({},M),{messages:[...R,...(b=M.messages)!=null?b:[]]})}),A=k.values;if(this.activeRun.schemaKeys=await this.getSchemaKeys(),((S=v.values.messages)!=null?S:[]).length>i.filter(T=>T.role!=="system").length){let T=null;for(let P=i.length-1;P>=0;P--)if(i[P].role==="user"){T=it([i[P]])[0];break}return T?this.prepareRegenerateStream(E(p({},t),{messageCheckpoint:T}),e):this.subscriber.error("No user message found in messages to regenerate")}this.activeRun.graphInfo=await this.client.assistants.getGraph(this.assistant.assistant_id);let m=!((G=c==null?void 0:c.command)!=null&&G.resume)&&g&&this.activeRun.nodeName!="__end__"&&this.activeRun.nodeName?"continue":"start";if(m==="continue"){let T=this.activeRun.graphInfo.edges.find(P=>P.target===this.activeRun.nodeName);await this.client.threads.updateState(g,{values:a,asNode:T==null?void 0:T.source})}let I=pt({mode:m,state:A,schemaKeys:this.activeRun.schemaKeys}),f,J=[this.assistantConfig,c==null?void 0:c.config].filter(Boolean);J.length&&(f=await this.mergeConfigs({configs:J,assistant:this.assistant,schemaKeys:this.activeRun.schemaKeys}));let u=c,{command:N}=u,W=nt(u,["command"]);if(N!=null&&N.resume&&typeof N.resume=="string")try{N.resume=JSON.parse(N.resume)}catch(T){}let j=E(p({},W),{command:N,streamMode:e,input:I,config:f,context:p(p({},h),(O=f==null?void 0:f.configurable)!=null?O:{})}),C=(D=(X=($=v.tasks)==null?void 0:$[0])==null?void 0:X.interrupts)!=null?D:[];return C!=null&&C.length&&!((_=c==null?void 0:c.command)!=null&&_.resume)?(this.dispatchEvent({type:l.EventType.RUN_STARTED,threadId:g,runId:t.runId}),this.handleNodeChange(d),C.forEach(T=>{this.dispatchEvent({type:l.EventType.CUSTOM,name:"on_interrupt",value:typeof T.value=="string"?T.value:JSON.stringify(T.value),rawEvent:T})}),this.dispatchEvent({type:l.EventType.RUN_FINISHED,threadId:g,runId:t.runId}),this.subscriber.complete()):{streamResponse:this.client.runs.stream(g,this.assistant.assistant_id,j),state:k}}async handleStreamEvents(t,e,s,a,i){var R,x,M,k,A,m,I,f,C,L,w,b,S,G;let{forwardedProps:o}=a,h=o==null?void 0:o.nodeName;this.subscriber=s;let c=!1;if(!t)return;let{streamResponse:d,state:g}=t;this.activeRun.prevNodeName=null;let y={},v=g;try{this.dispatchEvent({type:l.EventType.RUN_STARTED,threadId:e,runId:this.activeRun.id}),this.handleNodeChange(h);try{for(var J=z(d),N,W,j;N=!(W=await J.next()).done;N=!1){let _=W.value;if(this.cancelRequested&&!this.cancelSent&&((R=this.activeRun)!=null&&R.threadId)&&((x=this.activeRun)!=null&&x.id)){try{await this.client.runs.cancel(this.activeRun.threadId,this.activeRun.id)}catch(q){}finally{this.cancelSent=!0}try{await((M=d==null?void 0:d.return)==null?void 0:M.call(d))}catch(q){}break}let T=(k=a.forwardedProps)==null?void 0:k.streamSubgraphs,P=T&&(_.event.startsWith("events")||_.event.startsWith("values"));if(!i.includes(_.event)&&!P&&_.event!=="error")continue;let K=_;if(_.event==="error"){this.dispatchEvent({type:l.EventType.RUN_ERROR,message:_.data.message,rawEvent:_});break}if(_.event==="updates")continue;if(_.event==="values"){y=K.data;continue}else if(T&&K.event.startsWith("values|")){y=p(p({},y),K.data);continue}let U=K.data,tt=(A=U.metadata)!=null?A:{},H=tt.langgraph_node,lt=U.event;if(tt.run_id&&(this.activeRun.id=tt.run_id,this.activeRun.serverRunIdKnown=!0,this.cancelRequested&&!this.cancelSent&&((m=this.activeRun)!=null&&m.threadId)))try{await this.client.runs.cancel(this.activeRun.threadId,this.activeRun.id)}catch(q){}finally{this.cancelSent=!0}if(H&&H!==this.activeRun.nodeName&&this.handleNodeChange(H),c=c||lt==="on_custom_event"&&U.name==="exit",lt==="on_chain_end"&&this.activeRun.nodeName===H&&(this.activeRun.exitingNode=!0),this.activeRun.exitingNode&&(this.activeRun.manuallyEmittedState=null),(I=this.activeRun.graphInfo)!=null&&I.nodes.some(q=>q.id===H)&&this.handleNodeChange(H),v.values=(f=this.activeRun.manuallyEmittedState)!=null?f:y,!this.activeRun.nodeName)continue;(JSON.stringify(v)!==JSON.stringify(g)||this.activeRun.prevNodeName!=this.activeRun.nodeName||this.activeRun.exitingNode)&&!this.getMessageInProgress(this.activeRun.id)&&(g=v,this.activeRun.prevNodeName=this.activeRun.nodeName,this.dispatchEvent({type:l.EventType.STATE_SNAPSHOT,snapshot:this.getStateSnapshot(g),rawEvent:K})),this.dispatchEvent({type:l.EventType.RAW,event:U}),this.handleSingleEvent(U)}}catch(W){j=[W]}finally{try{N&&(W=J.return)&&await W.call(J)}finally{if(j)throw j[0]}}g=await this.client.threads.getState(e);let u=g.tasks,O=(L=(C=u==null?void 0:u[0])==null?void 0:C.interrupts)!=null?L:[],$=g.next.length===0,X=(b=(w=g.metadata)==null?void 0:w.writes)!=null?b:{},D=this.activeRun.nodeName;return O!=null&&O.length||(D=$?"__end__":(S=g.next[0])!=null?S:Object.keys(X)[0]),O.forEach(_=>{this.dispatchEvent({type:l.EventType.CUSTOM,name:"on_interrupt",value:typeof _.value=="string"?_.value:JSON.stringify(_.value),rawEvent:_})}),this.handleNodeChange(D),this.handleNodeChange(void 0),this.dispatchEvent({type:l.EventType.STATE_SNAPSHOT,snapshot:this.getStateSnapshot(g)}),this.dispatchEvent({type:l.EventType.MESSAGES_SNAPSHOT,messages:at((G=g.values.messages)!=null?G:[])}),this.dispatchEvent({type:l.EventType.RUN_FINISHED,threadId:e,runId:this.activeRun.id}),this.cancelRequested=!1,this.cancelSent=!1,this.activeRun=void 0,s.complete()}catch(u){return s.error(u)}}handleSingleEvent(t){var e,s,a,i,o,h,c,d,g,y,v,R,x,M;switch(t.event){case"on_chat_model_stream":let k=(e=t.metadata["emit-messages"])!=null?e:!0,A=(s=t.metadata["emit-tool-calls"])!=null?s:!0;if(t.data.chunk.response_metadata.finish_reason)return;let m=this.getMessageInProgress(this.activeRun.id),I=!!(m!=null&&m.id),f=(a=t.data.chunk.tool_call_chunks)==null?void 0:a[0],J=(i=t.metadata.predict_state)==null?void 0:i.some(u=>u.tool===(f==null?void 0:f.name)),N=!I&&(f==null?void 0:f.name),W=I&&(m==null?void 0:m.toolCallId)&&(f==null?void 0:f.args),j=I&&(m==null?void 0:m.toolCallId)&&!f;(j||W||N)&&(this.activeRun.hasFunctionStreaming=!0);let C=mt(t.data),L=F(t.data.chunk.content),w=!!(!f&&L),b=I&&!(m!=null&&m.toolCallId)&&!w;if(C){this.handleThinkingEvent(C);break}if(!C&&this.thinkingProcess&&(this.dispatchEvent({type:l.EventType.THINKING_TEXT_MESSAGE_END}),this.dispatchEvent({type:l.EventType.THINKING_END}),this.thinkingProcess=null),J&&this.dispatchEvent({type:l.EventType.CUSTOM,name:"PredictState",value:t.metadata.predict_state}),j){this.dispatchEvent({type:l.EventType.TOOL_CALL_END,toolCallId:m==null?void 0:m.toolCallId,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}if(b){this.dispatchEvent({type:l.EventType.TEXT_MESSAGE_END,messageId:m.id,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}if(N&&A){this.dispatchEvent({type:l.EventType.TOOL_CALL_START,toolCallId:f.id,toolCallName:f.name,parentMessageId:t.data.chunk.id,rawEvent:t})&&this.setMessageInProgress(this.activeRun.id,{id:t.data.chunk.id,toolCallId:f.id,toolCallName:f.name});break}if(W&&A){this.dispatchEvent({type:l.EventType.TOOL_CALL_ARGS,toolCallId:m==null?void 0:m.toolCallId,delta:f.args,rawEvent:t});break}if(w&&k){m||(this.dispatchEvent({type:l.EventType.TEXT_MESSAGE_START,role:"assistant",messageId:t.data.chunk.id,rawEvent:t}),this.setMessageInProgress(this.activeRun.id,{id:t.data.chunk.id,toolCallId:null,toolCallName:null}),m=this.getMessageInProgress(this.activeRun.id)),this.dispatchEvent({type:l.EventType.TEXT_MESSAGE_CONTENT,messageId:m.id,delta:L,rawEvent:t});break}break;case"on_chat_model_end":if((o=this.getMessageInProgress(this.activeRun.id))!=null&&o.toolCallId){this.dispatchEvent({type:l.EventType.TOOL_CALL_END,toolCallId:this.getMessageInProgress(this.activeRun.id).toolCallId,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}if((h=this.getMessageInProgress(this.activeRun.id))!=null&&h.id){this.dispatchEvent({type:l.EventType.TEXT_MESSAGE_END,messageId:this.getMessageInProgress(this.activeRun.id).id,rawEvent:t})&&(this.messagesInProcess[this.activeRun.id]=null);break}break;case"on_custom_event":if(t.name==="manually_emit_message"){this.dispatchEvent({type:l.EventType.TEXT_MESSAGE_START,role:"assistant",messageId:t.data.message_id,rawEvent:t}),this.dispatchEvent({type:l.EventType.TEXT_MESSAGE_CONTENT,messageId:t.data.message_id,delta:t.data.message,rawEvent:t}),this.dispatchEvent({type:l.EventType.TEXT_MESSAGE_END,messageId:t.data.message_id,rawEvent:t});break}if(t.name==="manually_emit_tool_call"){this.dispatchEvent({type:l.EventType.TOOL_CALL_START,toolCallId:t.data.id,toolCallName:t.data.name,parentMessageId:t.data.id,rawEvent:t}),this.dispatchEvent({type:l.EventType.TOOL_CALL_ARGS,toolCallId:t.data.id,delta:t.data.args,rawEvent:t}),this.dispatchEvent({type:l.EventType.TOOL_CALL_END,toolCallId:t.data.id,rawEvent:t});break}t.name==="manually_emit_state"&&(this.activeRun.manuallyEmittedState=t.data,this.dispatchEvent({type:l.EventType.STATE_SNAPSHOT,snapshot:this.getStateSnapshot({values:this.activeRun.manuallyEmittedState}),rawEvent:t})),this.dispatchEvent({type:l.EventType.CUSTOM,name:t.name,value:t.data,rawEvent:t});break;case"on_tool_end":let S=(c=t.data)==null?void 0:c.output;if(S&&!S.tool_call_id&&((g=(d=S.update)==null?void 0:d.messages)!=null&&g.find(u=>u.type==="tool"))&&(S=(v=(y=S.update)==null?void 0:y.messages)==null?void 0:v.find(u=>u.type==="tool")),S&&((x=(R=S.update)==null?void 0:R.messages)!=null&&x.length)){(M=S.update)==null||M.messages.filter(u=>u.type==="tool").forEach(u=>{var O;this.activeRun.hasFunctionStreaming||(this.dispatchEvent({type:l.EventType.TOOL_CALL_START,toolCallId:u.tool_call_id,toolCallName:(O=u.name)!=null?O:"",parentMessageId:u.id,rawEvent:t}),this.dispatchEvent({type:l.EventType.TOOL_CALL_ARGS,toolCallId:u.tool_call_id,delta:JSON.stringify(t.data.input),rawEvent:t})),this.dispatchEvent({type:l.EventType.TOOL_CALL_RESULT,toolCallId:u.tool_call_id,content:typeof(u==null?void 0:u.content)=="string"?u==null?void 0:u.content:JSON.stringify(u==null?void 0:u.content),messageId:(0,B.randomUUID)(),rawEvent:t,role:"tool"})});break}this.activeRun.hasFunctionStreaming||(this.dispatchEvent({type:l.EventType.TOOL_CALL_START,toolCallId:S.tool_call_id,toolCallName:S.name,parentMessageId:S.id,rawEvent:t}),this.dispatchEvent({type:l.EventType.TOOL_CALL_ARGS,toolCallId:S.tool_call_id,delta:JSON.stringify(t.data.input),rawEvent:t}),this.dispatchEvent({type:l.EventType.TOOL_CALL_END,toolCallId:S.tool_call_id,rawEvent:t}));let G=Array.isArray(S.content)?S.content.map(u=>typeof u=="string"?u:u.type==="text"?u.text:JSON.stringify(u)).join(""):S.content;this.dispatchEvent({type:l.EventType.TOOL_CALL_RESULT,toolCallId:S.tool_call_id,content:G,messageId:(0,B.randomUUID)(),role:"tool",rawEvent:t});break}}abortRun(){var s,a;this.cancelRequested=!0;let t=(s=this.activeRun)==null?void 0:s.threadId,e=(a=this.activeRun)==null?void 0:a.id;t&&e&&!this.cancelSent&&this.client.runs.cancel(t,e).then(()=>{this.cancelSent=!0}).catch(()=>{}),super.abortRun()}handleThinkingEvent(t){var s;if(!t||!t.type||!t.text)return;let e=t.index;(s=this.thinkingProcess)!=null&&s.index&&this.thinkingProcess.index!==e&&(this.thinkingProcess.type&&this.dispatchEvent({type:l.EventType.THINKING_TEXT_MESSAGE_END}),this.dispatchEvent({type:l.EventType.THINKING_END}),this.thinkingProcess=null),this.thinkingProcess||(this.dispatchEvent({type:l.EventType.THINKING_START}),this.thinkingProcess={index:e}),this.thinkingProcess.type!==t.type&&(this.dispatchEvent({type:l.EventType.THINKING_TEXT_MESSAGE_START}),this.thinkingProcess.type=t.type),this.thinkingProcess.type&&this.dispatchEvent({type:l.EventType.THINKING_TEXT_MESSAGE_CONTENT,delta:t.text})}getStateSnapshot(t){let e=t.values,s=this.activeRun.schemaKeys;return s!=null&&s.output&&(e=Z(e,[...this.constantSchemaKeys,...s.output])),e}async getOrCreateThread(t,e){let s;try{try{s=await this.getThread(t)}catch(a){s=await this.createThread({threadId:t,metadata:e})}}catch(a){throw new Error(`Failed to create thread: ${a.message}`)}return s}async getThread(t){return this.client.threads.get(t)}async createThread(t){return this.client.threads.create(t)}async mergeConfigs({configs:t,assistant:e,schemaKeys:s}){return t.reduce((a,i)=>{var y;let o=a.configurable;i.configurable&&(o=s!=null&&s.config?Z(i==null?void 0:i.configurable,[...this.constantSchemaKeys,...(y=s==null?void 0:s.config)!=null?y:[]]):i==null?void 0:i.configurable);let h=E(p(p({},a),i),{configurable:o}),c=a.recursion_limit==null&&i.recursion_limit===25,d=JSON.stringify(h)!==JSON.stringify(a),g=c&&JSON.stringify(E(p({},h),{recursion_limit:null}))===JSON.stringify(E(p({},a),{recursion_limit:null}));return d&&!g?p(p({},a),h):a},e.config)}getMessageInProgress(t){return this.messagesInProcess[t]}setMessageInProgress(t,e){this.messagesInProcess=E(p({},this.messagesInProcess),{[t]:p(p({},this.messagesInProcess[t]),e)})}async getAssistant(){try{let t=await this.client.assistants.search(),e=t.find(s=>s.graph_id===this.graphId);if(!e){let s=`
2
2
  No agent found with graph ID ${this.graphId} found..
3
3
 
4
4
 
5
- These are the available agents: [${t.map(i=>`${i.graph_id} (ID: ${i.assistant_id})`).join(", ")}]
6
- `;throw console.error(s),new Error(s)}return e}catch(t){let e=new Error(`Failed to retrieve assistant: ${t.message}`);throw this.dispatchEvent({type:o.EventType.RUN_ERROR,message:e.message}),this.subscriber.error(),e}}async getSchemaKeys(){var t,e,s,i;try{let r=await this.client.assistants.getSchemas(this.assistant.assistant_id),u=null,g=[];if("context_schema"in r&&((t=r.context_schema)!=null&&t.properties)&&(g=Object.keys(r.context_schema.properties)),(e=r.config_schema)!=null&&e.properties&&(u=Object.keys(r.config_schema.properties)),!((s=r.input_schema)!=null&&s.properties)||!((i=r.output_schema)!=null&&i.properties))return{config:[],input:null,output:null,context:g};let l=Object.keys(r.input_schema.properties),c=Object.keys(r.output_schema.properties);return{input:l&&l.length?[...l,...this.constantSchemaKeys]:null,output:c&&c.length?[...c,...this.constantSchemaKeys]:null,context:g,config:u}}catch(r){return{config:[],input:this.constantSchemaKeys,output:this.constantSchemaKeys,context:[]}}}langGraphDefaultMergeState(t,e,s){var l,c;e.length>0&&"role"in e[0]&&e[0].role==="system"&&(e=e.slice(1));let i=t.messages||[],r=new Set(i.map(d=>d.id)),u=e.filter(d=>!r.has(d.id)),g=[...(l=t.tools)!=null?l:[],...(c=s.tools)!=null?c:[]].reduce((d,y)=>{let _=y;return y.type||(_={type:"function",name:y.name,function:{name:y.name,description:y.description,parameters:y.parameters}}),d.find(I=>I.name===_.name||I.function.name===_.function.name)?d:[...d,_]},[]);return T(f({},t),{messages:u,tools:g,"ag-ui":{tools:g,context:s.context}})}handleNodeChange(t){var e,s;t==="__end__"&&(t=void 0),t!==((e=this.activeRun)==null?void 0:e.nodeName)&&((s=this.activeRun)!=null&&s.nodeName&&this.endStep(),t&&this.startStep(t)),this.activeRun.nodeName=t}startStep(t){this.dispatchEvent({type:o.EventType.STEP_STARTED,stepName:t})}endStep(){this.dispatchEvent({type:o.EventType.STEP_FINISHED,stepName:this.activeRun.nodeName})}async getCheckpointByMessage(t,e,s){var M,A;let i=s!=null&&s.checkpoint_id?{checkpoint:{checkpoint_id:s.checkpoint_id}}:void 0,u=[...await this.client.threads.getHistory(e,i)].reverse(),g=u.find(p=>{var R;return(R=p.values.messages)==null?void 0:R.some(m=>m.id===t)});if(!g)throw new Error("Message not found");let l=(M=g.values.messages)!=null?M:[],c=l.findIndex(p=>p.id===t);if(l.slice(c+1).length)return this.getCheckpointByMessage(t,e,g.parent_checkpoint);let y=u.indexOf(g),N=g.values,{messages:_}=N,I=et(N,["messages"]),x=(A=u[y-1])!=null?A:T(f({},g),{values:{}});return T(f({},x),{values:f(f({},x.values),I)})}};var it=class extends yt.HttpAgent{};0&&(module.exports={CustomEventNames,LangGraphAgent,LangGraphEventTypes,LangGraphHttpAgent});
5
+ These are the available agents: [${t.map(a=>`${a.graph_id} (ID: ${a.assistant_id})`).join(", ")}]
6
+ `;throw console.error(s),new Error(s)}return e}catch(t){let e=new Error(`Failed to retrieve assistant: ${t.message}`);throw this.dispatchEvent({type:l.EventType.RUN_ERROR,message:e.message}),this.subscriber.error(),e}}async getSchemaKeys(){var t,e,s,a;try{let i=await this.client.assistants.getSchemas(this.assistant.assistant_id),o=null,h=[];if("context_schema"in i&&((t=i.context_schema)!=null&&t.properties)&&(h=Object.keys(i.context_schema.properties)),(e=i.config_schema)!=null&&e.properties&&(o=Object.keys(i.config_schema.properties)),!((s=i.input_schema)!=null&&s.properties)||!((a=i.output_schema)!=null&&a.properties))return{config:[],input:null,output:null,context:h};let c=Object.keys(i.input_schema.properties),d=Object.keys(i.output_schema.properties);return{input:c&&c.length?[...c,...this.constantSchemaKeys]:null,output:d&&d.length?[...d,...this.constantSchemaKeys]:null,context:h,config:o}}catch(i){return{config:[],input:this.constantSchemaKeys,output:this.constantSchemaKeys,context:[]}}}langGraphDefaultMergeState(t,e,s){var c,d;e.length>0&&"role"in e[0]&&e[0].role==="system"&&(e=e.slice(1));let a=t.messages||[],i=new Set(a.map(g=>g.id)),o=e.filter(g=>!i.has(g.id)),h=[...(c=t.tools)!=null?c:[],...(d=s.tools)!=null?d:[]].reduce((g,y)=>{let v=y;return y.type||(v={type:"function",name:y.name,function:{name:y.name,description:y.description,parameters:y.parameters}}),g.find(R=>R.name===v.name||R.function.name===v.function.name)?g:[...g,v]},[]);return E(p({},t),{messages:o,tools:h,"ag-ui":{tools:h,context:s.context}})}handleNodeChange(t){var e,s;t==="__end__"&&(t=void 0),t!==((e=this.activeRun)==null?void 0:e.nodeName)&&((s=this.activeRun)!=null&&s.nodeName&&this.endStep(),t&&this.startStep(t)),this.activeRun.nodeName=t}startStep(t){this.dispatchEvent({type:l.EventType.STEP_STARTED,stepName:t})}endStep(){this.dispatchEvent({type:l.EventType.STEP_FINISHED,stepName:this.activeRun.nodeName})}async fetchRunHistory(t){var e;try{let{threadId:s}=t,a=await this.client.threads.getHistory(s);if(!a||a.length===0)return{runs:[]};let i=a[0],o=i.values.messages||[],h=at(o);return{runs:[{runId:((e=i.checkpoint)==null?void 0:e.thread_id)||s,messages:h}]}}catch(s){console.error("Failed to fetch run history:",s);return}}async getCheckpointByMessage(t,e,s){var M,A;let a=s!=null&&s.checkpoint_id?{checkpoint:{checkpoint_id:s.checkpoint_id}}:void 0,o=[...await this.client.threads.getHistory(e,a)].reverse(),h=o.find(m=>{var I;return(I=m.values.messages)==null?void 0:I.some(f=>f.id===t)});if(!h)throw new Error("Message not found");let c=(M=h.values.messages)!=null?M:[],d=c.findIndex(m=>m.id===t);if(c.slice(d+1).length)return this.getCheckpointByMessage(t,e,h.parent_checkpoint);let y=o.indexOf(h),k=h.values,{messages:v}=k,R=nt(k,["messages"]),x=(A=o[y-1])!=null?A:E(p({},h),{values:{}});return E(p({},x),{values:p(p({},x.values),R)})}};var ot=class extends St.HttpAgent{constructor(n){super(n),this.checkpointer=n.checkpointer}async fetchRunHistory(n){var i,o;if(this.checkpointer)try{let{threadId:h}=n,c=[];try{for(var t=z(this.checkpointer.list({configurable:{thread_id:h}})),e,s,a;e=!(s=await t.next()).done;e=!1){let R=s.value;c.push(R)}}catch(s){a=[s]}finally{try{e&&(s=t.return)&&await s.call(t)}finally{if(a)throw a[0]}}if(c.length===0)return{runs:[]};let d=await this.checkpointer.getTuple({configurable:{thread_id:h}});if(!(d!=null&&d.checkpoint))return{runs:[]};let y=(d.checkpoint.channel_values||{}).messages||[],v=this.convertMessages(y);return{runs:[{runId:((o=(i=d.config)==null?void 0:i.configurable)==null?void 0:o.checkpoint_id)||h,messages:v}]}}catch(h){console.error("Failed to fetch run history from checkpointer:",h);return}}convertMessages(n){return n.map(t=>this.convertMessage(t)).filter(Boolean)}convertMessage(n){let t=n,e=t._getType,s=this.mapRole((e==null?void 0:e())||t.type);if(!s)return null;let a=t.content,i=t.tool_calls,o={id:t.id||crypto.randomUUID(),role:s,content:typeof a=="string"?a:JSON.stringify(a)};return s==="tool"&&t.tool_call_id?E(p({},o),{role:"tool",toolCallId:t.tool_call_id}):s==="assistant"?i!=null&&i.length?E(p({},o),{role:"assistant",toolCalls:i.map(h=>({id:h.id,type:"function",function:{name:h.name,arguments:JSON.stringify(h.args)}}))}):E(p({},o),{role:"assistant",content:o.content}):s==="user"?E(p({},o),{role:"user",content:o.content}):s==="system"?E(p({},o),{role:"system",content:o.content}):s==="developer"?E(p({},o),{role:"developer",content:o.content}):null}mapRole(n){switch(n){case"human":return"user";case"ai":return"assistant";case"system":return"system";case"tool":return"tool";default:return null}}clone(){let n=super.clone();return n.checkpointer=this.checkpointer,n}};0&&(module.exports={CustomEventNames,LangGraphAgent,LangGraphEventTypes,LangGraphHttpAgent});
7
7
  //# sourceMappingURL=index.js.map