@assistant-ui/react-langgraph 0.4.5 → 0.5.1
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/LangGraphMessageAccumulator.d.ts +20 -0
- package/dist/LangGraphMessageAccumulator.d.ts.map +1 -0
- package/dist/LangGraphMessageAccumulator.js +36 -0
- package/dist/LangGraphMessageAccumulator.js.map +1 -0
- package/dist/appendLangChainChunk.d.ts +3 -0
- package/dist/appendLangChainChunk.d.ts.map +1 -0
- package/dist/appendLangChainChunk.js +44 -0
- package/dist/appendLangChainChunk.js.map +1 -0
- package/dist/convertLangChainMessages.d.ts +3 -0
- package/dist/convertLangChainMessages.d.ts.map +1 -0
- package/dist/convertLangChainMessages.js +71 -0
- package/dist/convertLangChainMessages.js.map +1 -0
- package/dist/index.d.ts +11 -150
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -415
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +66 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/useLangGraphMessages.d.ts +34 -0
- package/dist/useLangGraphMessages.d.ts.map +1 -0
- package/dist/useLangGraphMessages.js +53 -0
- package/dist/useLangGraphMessages.js.map +1 -0
- package/dist/useLangGraphRuntime.js +195 -0
- package/dist/useLangGraphRuntime.js.map +1 -0
- package/package.json +17 -17
- package/src/LangGraphMessageAccumulator.ts +63 -0
- package/src/appendLangChainChunk.ts +55 -0
- package/src/convertLangChainMessages.ts +81 -0
- package/src/index.ts +31 -0
- package/src/types.ts +76 -0
- package/src/useLangGraphMessages.ts +102 -0
- package/src/useLangGraphRuntime.ts +273 -0
- package/dist/index.d.mts +0 -150
- package/dist/index.mjs +0 -394
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type LangGraphMessagesEvent<TMessage> = {
|
|
2
|
+
event: "messages" | "messages/partial" | "messages/complete" | "metadata" | "updates" | string;
|
|
3
|
+
data: TMessage[] | any;
|
|
4
|
+
};
|
|
5
|
+
export type LangGraphStateAccumulatorConfig<TMessage> = {
|
|
6
|
+
initialMessages?: TMessage[];
|
|
7
|
+
appendMessage?: (prev: TMessage | undefined, curr: TMessage) => TMessage;
|
|
8
|
+
};
|
|
9
|
+
export declare class LangGraphMessageAccumulator<TMessage extends {
|
|
10
|
+
id?: string;
|
|
11
|
+
}> {
|
|
12
|
+
private messagesMap;
|
|
13
|
+
private appendMessage;
|
|
14
|
+
constructor({ initialMessages, appendMessage, }?: LangGraphStateAccumulatorConfig<TMessage>);
|
|
15
|
+
private ensureMessageId;
|
|
16
|
+
addMessages(newMessages: TMessage[]): TMessage[];
|
|
17
|
+
getMessages(): TMessage[];
|
|
18
|
+
clear(): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=LangGraphMessageAccumulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LangGraphMessageAccumulator.d.ts","sourceRoot":"","sources":["../src/LangGraphMessageAccumulator.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,sBAAsB,CAAC,QAAQ,IAAI;IAC7C,KAAK,EACD,UAAU,GACV,kBAAkB,GAClB,mBAAmB,GACnB,UAAU,GACV,SAAS,GACT,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,+BAA+B,CAAC,QAAQ,IAAI;IACtD,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC;CAC1E,CAAC;AAEF,qBAAa,2BAA2B,CAAC,QAAQ,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE;IACvE,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,aAAa,CAGP;gBAEF,EACV,eAAoB,EACpB,aAGa,GACd,GAAE,+BAA+B,CAAC,QAAQ,CAAM;IAKjD,OAAO,CAAC,eAAe;IAIhB,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE;IAenC,WAAW,IAAI,QAAQ,EAAE;IAIzB,KAAK;CAGb"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from "uuid";
|
|
2
|
+
class LangGraphMessageAccumulator {
|
|
3
|
+
messagesMap = /* @__PURE__ */ new Map();
|
|
4
|
+
appendMessage;
|
|
5
|
+
constructor({
|
|
6
|
+
initialMessages = [],
|
|
7
|
+
appendMessage = (_, curr) => curr
|
|
8
|
+
} = {}) {
|
|
9
|
+
this.appendMessage = appendMessage;
|
|
10
|
+
this.addMessages(initialMessages);
|
|
11
|
+
}
|
|
12
|
+
ensureMessageId(message) {
|
|
13
|
+
return message.id ? message : { ...message, id: uuidv4() };
|
|
14
|
+
}
|
|
15
|
+
addMessages(newMessages) {
|
|
16
|
+
if (newMessages.length === 0) return this.getMessages();
|
|
17
|
+
for (const message of newMessages.map(this.ensureMessageId)) {
|
|
18
|
+
const previous = message.id ? this.messagesMap.get(message.id) : void 0;
|
|
19
|
+
this.messagesMap.set(
|
|
20
|
+
message.id ?? uuidv4(),
|
|
21
|
+
this.appendMessage(previous, message)
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
return this.getMessages();
|
|
25
|
+
}
|
|
26
|
+
getMessages() {
|
|
27
|
+
return [...this.messagesMap.values()];
|
|
28
|
+
}
|
|
29
|
+
clear() {
|
|
30
|
+
this.messagesMap.clear();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
LangGraphMessageAccumulator
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=LangGraphMessageAccumulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/LangGraphMessageAccumulator.ts"],"sourcesContent":["import { v4 as uuidv4 } from \"uuid\";\n\nexport type LangGraphMessagesEvent<TMessage> = {\n event:\n | \"messages\"\n | \"messages/partial\"\n | \"messages/complete\"\n | \"metadata\"\n | \"updates\"\n | string;\n data: TMessage[] | any;\n};\n\nexport type LangGraphStateAccumulatorConfig<TMessage> = {\n initialMessages?: TMessage[];\n appendMessage?: (prev: TMessage | undefined, curr: TMessage) => TMessage;\n};\n\nexport class LangGraphMessageAccumulator<TMessage extends { id?: string }> {\n private messagesMap = new Map<string, TMessage>();\n private appendMessage: (\n prev: TMessage | undefined,\n curr: TMessage,\n ) => TMessage;\n\n constructor({\n initialMessages = [],\n appendMessage = ((_: TMessage | undefined, curr: TMessage) => curr) as (\n prev: TMessage | undefined,\n curr: TMessage,\n ) => TMessage,\n }: LangGraphStateAccumulatorConfig<TMessage> = {}) {\n this.appendMessage = appendMessage;\n this.addMessages(initialMessages);\n }\n\n private ensureMessageId(message: TMessage): TMessage {\n return message.id ? message : { ...message, id: uuidv4() };\n }\n\n public addMessages(newMessages: TMessage[]) {\n if (newMessages.length === 0) return this.getMessages();\n\n for (const message of newMessages.map(this.ensureMessageId)) {\n const previous = message.id\n ? this.messagesMap.get(message.id)\n : undefined;\n this.messagesMap.set(\n message.id ?? uuidv4(),\n this.appendMessage(previous, message),\n );\n }\n return this.getMessages();\n }\n\n public getMessages(): TMessage[] {\n return [...this.messagesMap.values()];\n }\n\n public clear() {\n this.messagesMap.clear();\n }\n}\n"],"mappings":"AAAA,SAAS,MAAM,cAAc;AAkBtB,MAAM,4BAA8D;AAAA,EACjE,cAAc,oBAAI,IAAsB;AAAA,EACxC;AAAA,EAKR,YAAY;AAAA,IACV,kBAAkB,CAAC;AAAA,IACnB,gBAAiB,CAAC,GAAyB,SAAmB;AAAA,EAIhE,IAA+C,CAAC,GAAG;AACjD,SAAK,gBAAgB;AACrB,SAAK,YAAY,eAAe;AAAA,EAClC;AAAA,EAEQ,gBAAgB,SAA6B;AACnD,WAAO,QAAQ,KAAK,UAAU,EAAE,GAAG,SAAS,IAAI,OAAO,EAAE;AAAA,EAC3D;AAAA,EAEO,YAAY,aAAyB;AAC1C,QAAI,YAAY,WAAW,EAAG,QAAO,KAAK,YAAY;AAEtD,eAAW,WAAW,YAAY,IAAI,KAAK,eAAe,GAAG;AAC3D,YAAM,WAAW,QAAQ,KACrB,KAAK,YAAY,IAAI,QAAQ,EAAE,IAC/B;AACJ,WAAK,YAAY;AAAA,QACf,QAAQ,MAAM,OAAO;AAAA,QACrB,KAAK,cAAc,UAAU,OAAO;AAAA,MACtC;AAAA,IACF;AACA,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEO,cAA0B;AAC/B,WAAO,CAAC,GAAG,KAAK,YAAY,OAAO,CAAC;AAAA,EACtC;AAAA,EAEO,QAAQ;AACb,SAAK,YAAY,MAAM;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appendLangChainChunk.d.ts","sourceRoot":"","sources":["../src/appendLangChainChunk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGlE,eAAO,MAAM,oBAAoB,GAC/B,MAAM,gBAAgB,GAAG,SAAS,EAClC,MAAM,gBAAgB,GAAG,qBAAqB,KAC7C,gBAgDF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { parsePartialJsonObject } from "assistant-stream/utils";
|
|
2
|
+
const appendLangChainChunk = (prev, curr) => {
|
|
3
|
+
if (curr.type !== "AIMessageChunk") {
|
|
4
|
+
return curr;
|
|
5
|
+
}
|
|
6
|
+
if (!prev || prev.type !== "ai") {
|
|
7
|
+
return {
|
|
8
|
+
...curr,
|
|
9
|
+
type: curr.type.replace("MessageChunk", "").toLowerCase()
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const newContent = typeof prev.content === "string" ? [{ type: "text", text: prev.content }] : [...prev.content];
|
|
13
|
+
for (const chunk of curr.content) {
|
|
14
|
+
if (chunk.type === "text") {
|
|
15
|
+
const existing = newContent[chunk.index] ?? { type: "text", text: "" };
|
|
16
|
+
if (existing.type !== "text") throw new Error("");
|
|
17
|
+
newContent[chunk.index] = {
|
|
18
|
+
...existing,
|
|
19
|
+
...chunk,
|
|
20
|
+
text: existing.text + chunk.text
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const newToolCalls = [...prev.tool_calls ?? []];
|
|
25
|
+
for (const chunk of curr.tool_call_chunks) {
|
|
26
|
+
const existing = newToolCalls[chunk.index - 1] ?? { argsText: "" };
|
|
27
|
+
const newArgsText = existing.argsText + chunk.args;
|
|
28
|
+
newToolCalls[chunk.index - 1] = {
|
|
29
|
+
...chunk,
|
|
30
|
+
...existing,
|
|
31
|
+
argsText: newArgsText,
|
|
32
|
+
args: parsePartialJsonObject(newArgsText) ?? ("args" in existing ? existing.args : {})
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
...prev,
|
|
37
|
+
content: newContent,
|
|
38
|
+
tool_calls: newToolCalls
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
appendLangChainChunk
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=appendLangChainChunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/appendLangChainChunk.ts"],"sourcesContent":["import { LangChainMessage, LangChainMessageChunk } from \"./types\";\nimport { parsePartialJsonObject } from \"assistant-stream/utils\";\n\nexport const appendLangChainChunk = (\n prev: LangChainMessage | undefined,\n curr: LangChainMessage | LangChainMessageChunk,\n): LangChainMessage => {\n if (curr.type !== \"AIMessageChunk\") {\n return curr;\n }\n\n if (!prev || prev.type !== \"ai\") {\n return {\n ...curr,\n type: curr.type.replace(\"MessageChunk\", \"\").toLowerCase(),\n } as LangChainMessage;\n }\n\n const newContent =\n typeof prev.content === \"string\"\n ? [{ type: \"text\" as const, text: prev.content }]\n : [...prev.content];\n\n for (const chunk of curr.content) {\n if (chunk.type === \"text\") {\n const existing = newContent[chunk.index] ?? { type: \"text\", text: \"\" };\n if (existing.type !== \"text\") throw new Error(\"\");\n newContent[chunk.index] = {\n ...existing,\n ...chunk,\n text: existing.text + chunk.text,\n };\n }\n }\n\n const newToolCalls = [...(prev.tool_calls ?? [])];\n for (const chunk of curr.tool_call_chunks) {\n const existing = newToolCalls[chunk.index - 1] ?? { argsText: \"\" };\n const newArgsText = existing.argsText + chunk.args;\n newToolCalls[chunk.index - 1] = {\n ...chunk,\n ...existing,\n argsText: newArgsText,\n args:\n parsePartialJsonObject(newArgsText) ??\n (\"args\" in existing ? existing.args : {}),\n };\n }\n\n return {\n ...prev,\n content: newContent,\n tool_calls: newToolCalls,\n };\n};\n"],"mappings":"AACA,SAAS,8BAA8B;AAEhC,MAAM,uBAAuB,CAClC,MACA,SACqB;AACrB,MAAI,KAAK,SAAS,kBAAkB;AAClC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,QAAQ,KAAK,SAAS,MAAM;AAC/B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,KAAK,KAAK,QAAQ,gBAAgB,EAAE,EAAE,YAAY;AAAA,IAC1D;AAAA,EACF;AAEA,QAAM,aACJ,OAAO,KAAK,YAAY,WACpB,CAAC,EAAE,MAAM,QAAiB,MAAM,KAAK,QAAQ,CAAC,IAC9C,CAAC,GAAG,KAAK,OAAO;AAEtB,aAAW,SAAS,KAAK,SAAS;AAChC,QAAI,MAAM,SAAS,QAAQ;AACzB,YAAM,WAAW,WAAW,MAAM,KAAK,KAAK,EAAE,MAAM,QAAQ,MAAM,GAAG;AACrE,UAAI,SAAS,SAAS,OAAQ,OAAM,IAAI,MAAM,EAAE;AAChD,iBAAW,MAAM,KAAK,IAAI;AAAA,QACxB,GAAG;AAAA,QACH,GAAG;AAAA,QACH,MAAM,SAAS,OAAO,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,CAAC,GAAI,KAAK,cAAc,CAAC,CAAE;AAChD,aAAW,SAAS,KAAK,kBAAkB;AACzC,UAAM,WAAW,aAAa,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG;AACjE,UAAM,cAAc,SAAS,WAAW,MAAM;AAC9C,iBAAa,MAAM,QAAQ,CAAC,IAAI;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,UAAU;AAAA,MACV,MACE,uBAAuB,WAAW,MACjC,UAAU,WAAW,SAAS,OAAO,CAAC;AAAA,IAC3C;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,EACd;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertLangChainMessages.d.ts","sourceRoot":"","sources":["../src/convertLangChainMessages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiC3C,eAAO,MAAM,wBAAwB,EAAE,2BAA2B,CAAC,QAAQ,CACzE,gBAAgB,CA2CjB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const contentToParts = (content) => {
|
|
3
|
+
if (typeof content === "string")
|
|
4
|
+
return [{ type: "text", text: content }];
|
|
5
|
+
return content.map((part) => {
|
|
6
|
+
const type = part.type;
|
|
7
|
+
switch (type) {
|
|
8
|
+
case "text":
|
|
9
|
+
return { type: "text", text: part.text };
|
|
10
|
+
case "image_url":
|
|
11
|
+
if (typeof part.image_url === "string") {
|
|
12
|
+
return { type: "image", image: part.image_url };
|
|
13
|
+
} else {
|
|
14
|
+
return {
|
|
15
|
+
type: "image",
|
|
16
|
+
image: part.image_url.url
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
case "tool_use":
|
|
20
|
+
return null;
|
|
21
|
+
default:
|
|
22
|
+
const _exhaustiveCheck = type;
|
|
23
|
+
throw new Error(`Unknown content part type: ${_exhaustiveCheck}`);
|
|
24
|
+
}
|
|
25
|
+
}).filter((a) => a !== null);
|
|
26
|
+
};
|
|
27
|
+
const convertLangChainMessages = (message) => {
|
|
28
|
+
switch (message.type) {
|
|
29
|
+
case "system":
|
|
30
|
+
return {
|
|
31
|
+
role: "system",
|
|
32
|
+
id: message.id,
|
|
33
|
+
content: [{ type: "text", text: message.content }]
|
|
34
|
+
};
|
|
35
|
+
case "human":
|
|
36
|
+
return {
|
|
37
|
+
role: "user",
|
|
38
|
+
id: message.id,
|
|
39
|
+
content: contentToParts(message.content)
|
|
40
|
+
};
|
|
41
|
+
case "ai":
|
|
42
|
+
return {
|
|
43
|
+
role: "assistant",
|
|
44
|
+
id: message.id,
|
|
45
|
+
content: [
|
|
46
|
+
...contentToParts(message.content),
|
|
47
|
+
...message.tool_calls?.map(
|
|
48
|
+
(chunk) => ({
|
|
49
|
+
type: "tool-call",
|
|
50
|
+
toolCallId: chunk.id,
|
|
51
|
+
toolName: chunk.name,
|
|
52
|
+
args: chunk.args,
|
|
53
|
+
argsText: message.tool_call_chunks?.find((c) => c.id === chunk.id)?.args ?? JSON.stringify(chunk.args)
|
|
54
|
+
})
|
|
55
|
+
) ?? []
|
|
56
|
+
]
|
|
57
|
+
};
|
|
58
|
+
case "tool":
|
|
59
|
+
return {
|
|
60
|
+
role: "tool",
|
|
61
|
+
toolName: message.name,
|
|
62
|
+
toolCallId: message.tool_call_id,
|
|
63
|
+
result: message.content,
|
|
64
|
+
artifact: message.artifact
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
export {
|
|
69
|
+
convertLangChainMessages
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=convertLangChainMessages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/convertLangChainMessages.ts"],"sourcesContent":["\"use client\";\n\nimport { useExternalMessageConverter } from \"@assistant-ui/react\";\nimport { LangChainMessage } from \"./types\";\nimport { ToolCallContentPart } from \"@assistant-ui/react\";\nimport { ThreadUserMessage } from \"@assistant-ui/react\";\n\nconst contentToParts = (content: LangChainMessage[\"content\"]) => {\n if (typeof content === \"string\")\n return [{ type: \"text\" as const, text: content }];\n return content\n .map((part): ThreadUserMessage[\"content\"][number] | null => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n case \"image_url\":\n if (typeof part.image_url === \"string\") {\n return { type: \"image\", image: part.image_url };\n } else {\n return {\n type: \"image\",\n image: part.image_url.url,\n };\n }\n\n case \"tool_use\":\n return null;\n default:\n const _exhaustiveCheck: never = type;\n throw new Error(`Unknown content part type: ${_exhaustiveCheck}`);\n }\n })\n .filter((a) => a !== null);\n};\n\nexport const convertLangChainMessages: useExternalMessageConverter.Callback<\n LangChainMessage\n> = (message) => {\n switch (message.type) {\n case \"system\":\n return {\n role: \"system\",\n id: message.id,\n content: [{ type: \"text\", text: message.content }],\n };\n case \"human\":\n return {\n role: \"user\",\n id: message.id,\n content: contentToParts(message.content),\n };\n case \"ai\":\n return {\n role: \"assistant\",\n id: message.id,\n content: [\n ...contentToParts(message.content),\n ...(message.tool_calls?.map(\n (chunk): ToolCallContentPart => ({\n type: \"tool-call\",\n toolCallId: chunk.id,\n toolName: chunk.name,\n args: chunk.args,\n argsText:\n message.tool_call_chunks?.find((c) => c.id === chunk.id)\n ?.args ?? JSON.stringify(chunk.args),\n }),\n ) ?? []),\n ],\n };\n case \"tool\":\n return {\n role: \"tool\",\n toolName: message.name,\n toolCallId: message.tool_call_id,\n result: message.content,\n artifact: message.artifact,\n };\n }\n};\n"],"mappings":";AAOA,MAAM,iBAAiB,CAAC,YAAyC;AAC/D,MAAI,OAAO,YAAY;AACrB,WAAO,CAAC,EAAE,MAAM,QAAiB,MAAM,QAAQ,CAAC;AAClD,SAAO,QACJ,IAAI,CAAC,SAAsD;AAC1D,UAAM,OAAO,KAAK;AAClB,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,eAAO,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK;AAAA,MACzC,KAAK;AACH,YAAI,OAAO,KAAK,cAAc,UAAU;AACtC,iBAAO,EAAE,MAAM,SAAS,OAAO,KAAK,UAAU;AAAA,QAChD,OAAO;AACL,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO,KAAK,UAAU;AAAA,UACxB;AAAA,QACF;AAAA,MAEF,KAAK;AACH,eAAO;AAAA,MACT;AACE,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,8BAA8B,gBAAgB,EAAE;AAAA,IACpE;AAAA,EACF,CAAC,EACA,OAAO,CAAC,MAAM,MAAM,IAAI;AAC7B;AAEO,MAAM,2BAET,CAAC,YAAY;AACf,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,IAAI,QAAQ;AAAA,QACZ,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACnD;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,IAAI,QAAQ;AAAA,QACZ,SAAS,eAAe,QAAQ,OAAO;AAAA,MACzC;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,IAAI,QAAQ;AAAA,QACZ,SAAS;AAAA,UACP,GAAG,eAAe,QAAQ,OAAO;AAAA,UACjC,GAAI,QAAQ,YAAY;AAAA,YACtB,CAAC,WAAgC;AAAA,cAC/B,MAAM;AAAA,cACN,YAAY,MAAM;AAAA,cAClB,UAAU,MAAM;AAAA,cAChB,MAAM,MAAM;AAAA,cACZ,UACE,QAAQ,kBAAkB,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE,GACnD,QAAQ,KAAK,UAAU,MAAM,IAAI;AAAA,YACzC;AAAA,UACF,KAAK,CAAC;AAAA,QACR;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,QAAQ;AAAA,QAClB,YAAY,QAAQ;AAAA,QACpB,QAAQ,QAAQ;AAAA,QAChB,UAAU,QAAQ;AAAA,MACpB;AAAA,EACJ;AACF;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,150 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type LangChainToolCall = {
|
|
13
|
-
id: string;
|
|
14
|
-
name: string;
|
|
15
|
-
argsText: string;
|
|
16
|
-
args: ReadonlyJSONObject;
|
|
17
|
-
};
|
|
18
|
-
type MessageContentText = {
|
|
19
|
-
type: "text";
|
|
20
|
-
text: string;
|
|
21
|
-
};
|
|
22
|
-
type MessageContentImageUrl = {
|
|
23
|
-
type: "image_url";
|
|
24
|
-
image_url: string | {
|
|
25
|
-
url: string;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
type MessageContentToolUse = {
|
|
29
|
-
type: "tool_use";
|
|
30
|
-
};
|
|
31
|
-
type UserMessageContentComplex = MessageContentText | MessageContentImageUrl;
|
|
32
|
-
type AssistantMessageContentComplex = MessageContentText | MessageContentToolUse;
|
|
33
|
-
type UserMessageContent = string | UserMessageContentComplex[];
|
|
34
|
-
type AssistantMessageContent = string | AssistantMessageContentComplex[];
|
|
35
|
-
type LangChainMessage = {
|
|
36
|
-
id?: string;
|
|
37
|
-
type: "system";
|
|
38
|
-
content: string;
|
|
39
|
-
} | {
|
|
40
|
-
id?: string;
|
|
41
|
-
type: "human";
|
|
42
|
-
content: UserMessageContent;
|
|
43
|
-
} | {
|
|
44
|
-
id?: string;
|
|
45
|
-
type: "tool";
|
|
46
|
-
content: string;
|
|
47
|
-
tool_call_id: string;
|
|
48
|
-
name: string;
|
|
49
|
-
artifact?: any;
|
|
50
|
-
} | {
|
|
51
|
-
id?: string;
|
|
52
|
-
type: "ai";
|
|
53
|
-
content: AssistantMessageContent;
|
|
54
|
-
tool_call_chunks?: LangChainToolCallChunk[];
|
|
55
|
-
tool_calls?: LangChainToolCall[];
|
|
56
|
-
};
|
|
57
|
-
type LangChainMessageChunk = {
|
|
58
|
-
id: string;
|
|
59
|
-
type: "AIMessageChunk";
|
|
60
|
-
content: (AssistantMessageContentComplex & {
|
|
61
|
-
index: number;
|
|
62
|
-
})[];
|
|
63
|
-
tool_call_chunks: LangChainToolCallChunk[];
|
|
64
|
-
};
|
|
65
|
-
type LangChainEvent = {
|
|
66
|
-
event: "messages/partial" | "messages/complete";
|
|
67
|
-
data: LangChainMessage[];
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
type LangGraphCommand = {
|
|
71
|
-
resume: string;
|
|
72
|
-
};
|
|
73
|
-
type LangGraphSendMessageConfig = {
|
|
74
|
-
command?: LangGraphCommand;
|
|
75
|
-
runConfig?: unknown;
|
|
76
|
-
};
|
|
77
|
-
type LangGraphMessagesEvent<TMessage> = {
|
|
78
|
-
event: "messages" | "messages/partial" | "messages/complete" | "metadata" | "updates" | string;
|
|
79
|
-
data: TMessage[] | any;
|
|
80
|
-
};
|
|
81
|
-
type LangGraphStreamCallback<TMessage> = (messages: TMessage[], config: LangGraphSendMessageConfig & {
|
|
82
|
-
abortSignal: AbortSignal;
|
|
83
|
-
}) => Promise<AsyncGenerator<LangGraphMessagesEvent<TMessage>>> | AsyncGenerator<LangGraphMessagesEvent<TMessage>>;
|
|
84
|
-
type LangGraphInterruptState = {
|
|
85
|
-
value?: any;
|
|
86
|
-
resumable?: boolean;
|
|
87
|
-
when: string;
|
|
88
|
-
ns?: string[];
|
|
89
|
-
};
|
|
90
|
-
declare const useLangGraphMessages: <TMessage extends {
|
|
91
|
-
id?: string;
|
|
92
|
-
}>({ stream, appendMessage, }: {
|
|
93
|
-
stream: LangGraphStreamCallback<TMessage>;
|
|
94
|
-
appendMessage?: (prev: TMessage | undefined, curr: TMessage) => TMessage;
|
|
95
|
-
}) => {
|
|
96
|
-
interrupt: LangGraphInterruptState | undefined;
|
|
97
|
-
messages: TMessage[];
|
|
98
|
-
sendMessage: (newMessages: TMessage[], config: LangGraphSendMessageConfig) => Promise<void>;
|
|
99
|
-
cancel: () => void;
|
|
100
|
-
setInterrupt: react.Dispatch<react.SetStateAction<LangGraphInterruptState | undefined>>;
|
|
101
|
-
setMessages: react.Dispatch<react.SetStateAction<TMessage[]>>;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
declare const useLangGraphInterruptState: () => LangGraphInterruptState | undefined;
|
|
105
|
-
declare const useLangGraphSend: () => (messages: LangChainMessage[], config: LangGraphSendMessageConfig) => Promise<void>;
|
|
106
|
-
declare const useLangGraphSendCommand: () => (command: LangGraphCommand) => Promise<void>;
|
|
107
|
-
declare const useLangGraphRuntime: ({ autoCancelPendingToolCalls, adapters: { attachments, feedback, speech }, unstable_allowCancellation, stream, threadId, onSwitchToNewThread, onSwitchToThread, }: {
|
|
108
|
-
/**
|
|
109
|
-
* @deprecated For thread management use `useCloudThreadListRuntime` instead. This option will be removed in a future version.
|
|
110
|
-
*/
|
|
111
|
-
threadId?: string | undefined;
|
|
112
|
-
autoCancelPendingToolCalls?: boolean | undefined;
|
|
113
|
-
unstable_allowCancellation?: boolean | undefined;
|
|
114
|
-
stream: LangGraphStreamCallback<LangChainMessage>;
|
|
115
|
-
/**
|
|
116
|
-
* @deprecated For thread management use `useCloudThreadListRuntime` instead. This option will be removed in a future version.
|
|
117
|
-
*/
|
|
118
|
-
onSwitchToNewThread?: () => Promise<void> | void;
|
|
119
|
-
onSwitchToThread?: (threadId: string) => Promise<{
|
|
120
|
-
messages: LangChainMessage[];
|
|
121
|
-
interrupts?: LangGraphInterruptState[];
|
|
122
|
-
}>;
|
|
123
|
-
adapters?: {
|
|
124
|
-
attachments?: AttachmentAdapter;
|
|
125
|
-
speech?: SpeechSynthesisAdapter;
|
|
126
|
-
feedback?: FeedbackAdapter;
|
|
127
|
-
} | undefined;
|
|
128
|
-
}) => _assistant_ui_react_internal.AssistantRuntimeImpl;
|
|
129
|
-
|
|
130
|
-
declare const convertLangChainMessages: useExternalMessageConverter.Callback<LangChainMessage>;
|
|
131
|
-
|
|
132
|
-
type LangGraphStateAccumulatorConfig<TMessage> = {
|
|
133
|
-
initialMessages?: TMessage[];
|
|
134
|
-
appendMessage?: (prev: TMessage | undefined, curr: TMessage) => TMessage;
|
|
135
|
-
};
|
|
136
|
-
declare class LangGraphMessageAccumulator<TMessage extends {
|
|
137
|
-
id?: string;
|
|
138
|
-
}> {
|
|
139
|
-
private messagesMap;
|
|
140
|
-
private appendMessage;
|
|
141
|
-
constructor({ initialMessages, appendMessage, }?: LangGraphStateAccumulatorConfig<TMessage>);
|
|
142
|
-
private ensureMessageId;
|
|
143
|
-
addMessages(newMessages: TMessage[]): TMessage[];
|
|
144
|
-
getMessages(): TMessage[];
|
|
145
|
-
clear(): void;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
declare const appendLangChainChunk: (prev: LangChainMessage | undefined, curr: LangChainMessage | LangChainMessageChunk) => LangChainMessage;
|
|
149
|
-
|
|
150
|
-
export { type LangChainEvent, type LangChainMessage, type LangChainToolCall, type LangChainToolCallChunk, type LangGraphCommand, type LangGraphInterruptState, LangGraphMessageAccumulator, type LangGraphSendMessageConfig, type LangGraphStreamCallback, appendLangChainChunk, convertLangChainMessages, convertLangChainMessages as convertLangchainMessages, useLangGraphInterruptState, useLangGraphMessages, useLangGraphRuntime, useLangGraphSend, useLangGraphSendCommand };
|
|
1
|
+
export { useLangGraphRuntime, useLangGraphSend, useLangGraphSendCommand, useLangGraphInterruptState, } from "./useLangGraphRuntime";
|
|
2
|
+
export { useLangGraphMessages, type LangGraphInterruptState, type LangGraphCommand, type LangGraphSendMessageConfig, type LangGraphStreamCallback, type LangGraphMessagesEvent, } from "./useLangGraphMessages";
|
|
3
|
+
export { convertLangChainMessages } from "./convertLangChainMessages";
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use `convertLangChainMessages` instead.
|
|
6
|
+
*/
|
|
7
|
+
export { convertLangChainMessages as convertLangchainMessages } from "./convertLangChainMessages";
|
|
8
|
+
export type { LangChainMessage, LangChainEvent, LangChainToolCall, LangChainToolCallChunk, } from "./types";
|
|
9
|
+
export { LangGraphMessageAccumulator } from "./LangGraphMessageAccumulator";
|
|
10
|
+
export { appendLangChainChunk } from "./appendLangChainChunk";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;GAEG;AACH,OAAO,EAAE,wBAAwB,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAElG,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|