Skip to content

Commit c7830f2

Browse files
committed
fix: type adjusted state for langgraph
1 parent 36ae9dd commit c7830f2

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

typescript-sdk/integrations/langgraph/src/agent.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import {
2424
RunMetadata,
2525
PredictStateTool,
2626
LangGraphReasoning,
27+
StateEnrichment,
28+
LangGraphTool,
2729
} from "./types";
2830
import {
2931
AbstractAgent,
@@ -181,7 +183,7 @@ export class LangGraphAgent extends AbstractAgent {
181183
}
182184

183185
async prepareRegenerateStream(input: RegenerateInput, streamMode: StreamMode | StreamMode[]) {
184-
const { threadId, messageCheckpoint, tools } = input;
186+
const { threadId, messageCheckpoint } = input;
185187

186188
const timeTravelCheckpoint = await this.getCheckpointByMessage(
187189
messageCheckpoint!.id!,
@@ -262,7 +264,7 @@ export class LangGraphAgent extends AbstractAgent {
262264
...agentState,
263265
values: {
264266
...stateValuesDiff,
265-
messages: [...agentStateMessages, ...stateValuesDiff.messages],
267+
messages: [...agentStateMessages, ...(stateValuesDiff.messages ?? [])],
266268
},
267269
};
268270
let stateValues = threadState.values;
@@ -968,7 +970,7 @@ export class LangGraphAgent extends AbstractAgent {
968970
}
969971
}
970972

971-
langGraphDefaultMergeState(state: State, messages: LangGraphMessage[], input: RunAgentExtendedInput): State {
973+
langGraphDefaultMergeState(state: State, messages: LangGraphMessage[], input: RunAgentExtendedInput): State<StateEnrichment> {
972974
if (messages.length > 0 && "role" in messages[0] && messages[0].role === "system") {
973975
// remove system message
974976
messages = messages.slice(1);
@@ -980,7 +982,7 @@ export class LangGraphAgent extends AbstractAgent {
980982

981983
const newMessages = messages.filter((message) => !existingMessageIds.has(message.id));
982984

983-
const langGraphTools = [...(state.tools ?? []), ...(input.tools ?? [])].map((tool) => {
985+
const langGraphTools: LangGraphTool[] = [...(state.tools ?? []), ...(input.tools ?? [])].map((tool) => {
984986
if (tool.type) {
985987
return tool;
986988
}

typescript-sdk/integrations/langgraph/src/types.ts

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { AssistantGraph, Message } from "@langchain/langgraph-sdk";
1+
import { AssistantGraph, Message as LangGraphMessage, } from "@langchain/langgraph-sdk";
22
import { MessageType } from "@langchain/core/messages";
3+
import { RunAgentInput } from "@ag-ui/core";
34

45
export enum LangGraphEventTypes {
56
OnChainStart = "on_chain_start",
@@ -14,7 +15,26 @@ export enum LangGraphEventTypes {
1415
OnInterrupt = "on_interrupt",
1516
}
1617

17-
export type State = Record<string, any>;
18+
export type LangGraphTool = {
19+
type: "function";
20+
function: {
21+
name: string;
22+
description: string;
23+
parameters: any;
24+
},
25+
}
26+
27+
export type State<TDefinedState = Record<string, any>> = {
28+
[k in keyof TDefinedState]: TDefinedState[k] | null;
29+
} & Record<string, any>;
30+
export interface StateEnrichment {
31+
messages: LangGraphMessage[];
32+
tools: LangGraphTool[];
33+
'ag-ui': {
34+
tools: LangGraphTool[];
35+
context: RunAgentInput['context']
36+
}
37+
}
1838

1939
export type SchemaKeys = {
2040
input: string[] | null;
@@ -54,7 +74,7 @@ export interface ToolCall {
5474
}
5575

5676
type BaseLangGraphPlatformMessage = Omit<
57-
Message,
77+
LangGraphMessage,
5878
| "isResultMessage"
5979
| "isTextMessage"
6080
| "isImageMessage"

0 commit comments

Comments
 (0)