@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 +14 -2
- package/dist/index.d.ts +14 -2
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -4
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)&<(a,t,n[t]);if(V)for(var t of V(n))ht.call(n,t)&<(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(
|
|
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:
|
|
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
|