@langgraph-js/pure-graph 2.2.10 → 2.3.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/adapter/hono/index.js +2 -2
- package/dist/adapter/nextjs/index.js +2 -2
- package/dist/checkpoint-DdL-Wo1x.js +377 -0
- package/dist/checkpoint-DdL-Wo1x.js.map +1 -0
- package/dist/{createEndpoint-DHnODS67.js → createEndpoint-Bp_9GeGJ.js} +2 -2
- package/dist/{createEndpoint-DHnODS67.js.map → createEndpoint-Bp_9GeGJ.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/{queue-CwCW8m0q.js → queue-D3gPPSDe.js} +2 -2
- package/dist/{queue-CwCW8m0q.js.map → queue-D3gPPSDe.js.map} +1 -1
- package/dist/{router-AADuUgGy.js → router-CZ680z_c.js} +3 -3
- package/dist/{router-AADuUgGy.js.map → router-CZ680z_c.js.map} +1 -1
- package/dist/{stream-SJdqjfOM.js → stream-CAZ9j0yn.js} +46 -62
- package/dist/{stream-SJdqjfOM.js.map → stream-CAZ9j0yn.js.map} +1 -1
- package/package.json +2 -1
- package/dist/checkpoint-DnfHhpJw.js +0 -1418
- package/dist/checkpoint-DnfHhpJw.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-AADuUgGy.js","sources":["../src/adapter/nextjs/endpoint.ts","../src/adapter/nextjs/router.ts"],"sourcesContent":["import { createEndpoint } from '../../createEndpoint.js';\nexport const client = createEndpoint();\n","/** @ts-ignore */\nimport { NextRequest, NextResponse } from 'next/server';\nimport { client } from './endpoint';\nimport {\n AssistantsSearchSchema,\n AssistantGraphQuerySchema,\n RunStreamPayloadSchema,\n RunListQuerySchema,\n RunCancelQuerySchema,\n ThreadCreatePayloadSchema,\n ThreadSearchPayloadSchema,\n ThreadStateUpdate,\n} from '../zod';\nimport { serialiseAsDict } from '../../graph/stream';\nimport camelcaseKeys from 'camelcase-keys';\n\n// Next.js App Router 的 SSE 响应实现\nasync function sseResponse(generator: AsyncGenerator<{ event: string; data: unknown }>): Promise<Response> {\n const encoder = new TextEncoder();\n const stream = new ReadableStream({\n async start(controller) {\n try {\n for await (const { event, data } of generator) {\n const line = `event: ${event}\\n` + `data: ${serialiseAsDict(data, 0)}\\n\\n`;\n controller.enqueue(encoder.encode(line));\n }\n } catch (err) {\n // ignore\n } finally {\n controller.close();\n }\n },\n });\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache, no-transform',\n Connection: 'keep-alive',\n },\n });\n}\n\n// 统一路由处理器\nexport async function GET(req: NextRequest) {\n const url = new URL(req.url);\n const pathname = url.pathname;\n\n // Assistants routes\n if (pathname.match(/\\/assistants\\/[^/]+\\/graph$/)) {\n const match = pathname.match(/\\/assistants\\/([^/]+)\\/graph$/);\n if (match) {\n const assistant_id = match[1];\n const xrayParam = url.searchParams.get('xray') ?? undefined;\n const queryParams = { xray: xrayParam };\n const { xray } = AssistantGraphQuerySchema.parse(queryParams);\n const data = await client.assistants.getGraph(assistant_id, {\n xray: xray !== undefined ? xray === 'true' : undefined,\n });\n return NextResponse.json(data);\n }\n }\n\n // Threads routes\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})$/);\n if (match) {\n const thread_id = match[1];\n const data = await client.threads.get(thread_id);\n return NextResponse.json(data);\n }\n }\n\n // Runs routes\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/runs$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/runs$/);\n if (match) {\n const thread_id = match[1];\n const limit = url.searchParams.get('limit') ?? undefined;\n const offset = url.searchParams.get('offset') ?? undefined;\n const status = url.searchParams.get('status') ?? undefined;\n const queryParams = { limit, offset, status };\n const {\n limit: parsedLimit,\n offset: parsedOffset,\n status: parsedStatus,\n } = RunListQuerySchema.parse(queryParams);\n const runs = await client.runs.list(thread_id, {\n limit: parsedLimit,\n offset: parsedOffset,\n status: parsedStatus,\n });\n return Response.json(runs);\n }\n }\n\n return new NextResponse('Not Found', { status: 404 });\n}\n\nexport async function POST(req: NextRequest) {\n const url = new URL(req.url);\n const pathname = url.pathname;\n\n // Assistants routes\n if (pathname.endsWith('/assistants/search')) {\n const body = await req.json();\n const payload = AssistantsSearchSchema.parse(body);\n const data = await client.assistants.search({\n graphId: payload.graph_id,\n metadata: payload.metadata,\n limit: payload.limit,\n offset: payload.offset,\n });\n return NextResponse.json(data, {\n headers: { 'X-Pagination-Total': String(data.length) },\n });\n }\n\n // Threads routes\n if (pathname.endsWith('/threads')) {\n const body = await req.json();\n const payload = ThreadCreatePayloadSchema.parse(body);\n const thread = await client.threads.create(camelcaseKeys(payload));\n return NextResponse.json(thread);\n }\n\n if (pathname.endsWith('/threads/search')) {\n const body = await req.json();\n const payload = ThreadSearchPayloadSchema.parse(body);\n const result = await client.threads.search(camelcaseKeys(payload));\n return NextResponse.json(result, {\n headers: { 'X-Pagination-Total': String(result.length) },\n });\n }\n\n // Threads state update\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/state$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/state$/);\n if (match) {\n const thread_id = match[1];\n const body = await req.json();\n const payload = ThreadStateUpdate.parse(body);\n const result = await client.threads.updateState(thread_id, camelcaseKeys(payload));\n return NextResponse.json(result);\n }\n }\n\n // Runs routes - stream\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/runs\\/stream$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/runs\\/stream$/);\n if (match) {\n const thread_id = match[1];\n const body = await req.json();\n const payload = RunStreamPayloadSchema.parse(body);\n\n // Extract custom context from request headers\n const langgraphContextHeader = req.headers.get('x-langgraph-context');\n if (langgraphContextHeader) {\n const langgraphContext = JSON.parse(decodeURIComponent(langgraphContextHeader));\n payload.config = payload.config || {};\n payload.config.configurable = payload.config.configurable || {};\n Object.assign(payload.config.configurable, langgraphContext);\n }\n const generator = client.runs.stream(\n thread_id,\n payload.assistant_id as string,\n camelcaseKeys(payload) as any,\n );\n return sseResponse(generator as any);\n }\n }\n\n // Runs routes - cancel\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/runs\\/[0-9a-fA-F-]{36}\\/cancel$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/runs\\/([0-9a-fA-F-]{36})\\/cancel$/);\n if (match) {\n const thread_id = match[1];\n const run_id = match[2];\n const waitParam = url.searchParams.get('wait') ?? undefined;\n const actionParam = url.searchParams.get('action') ?? undefined;\n const queryParams = {\n wait: waitParam ? waitParam === 'true' : false,\n action: actionParam ?? 'interrupt',\n };\n const { wait, action } = RunCancelQuerySchema.parse(queryParams);\n const promise = client.runs.cancel(thread_id, run_id, wait, action);\n if (wait) await promise;\n return new Response(null, { status: wait ? 204 : 202 });\n }\n }\n\n return new NextResponse('Not Found', { status: 404 });\n}\n\nexport async function DELETE(req: NextRequest) {\n const url = new URL(req.url);\n const pathname = url.pathname;\n\n // Threads routes\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})$/);\n if (match) {\n const thread_id = match[1];\n await client.threads.delete(thread_id);\n return new NextResponse(null, { status: 204 });\n }\n }\n\n return new NextResponse('Not Found', { status: 404 });\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router-CZ680z_c.js","sources":["../src/adapter/nextjs/endpoint.ts","../src/adapter/nextjs/router.ts"],"sourcesContent":["import { createEndpoint } from '../../createEndpoint.js';\nexport const client = createEndpoint();\n","/** @ts-ignore */\nimport { NextRequest, NextResponse } from 'next/server';\nimport { client } from './endpoint';\nimport {\n AssistantsSearchSchema,\n AssistantGraphQuerySchema,\n RunStreamPayloadSchema,\n RunListQuerySchema,\n RunCancelQuerySchema,\n ThreadCreatePayloadSchema,\n ThreadSearchPayloadSchema,\n ThreadStateUpdate,\n} from '../zod';\nimport { serialiseAsDict } from '../../graph/stream';\nimport camelcaseKeys from 'camelcase-keys';\n\n// Next.js App Router 的 SSE 响应实现\nasync function sseResponse(generator: AsyncGenerator<{ event: string; data: unknown }>): Promise<Response> {\n const encoder = new TextEncoder();\n const stream = new ReadableStream({\n async start(controller) {\n try {\n for await (const { event, data } of generator) {\n const line = `event: ${event}\\n` + `data: ${serialiseAsDict(data, 0)}\\n\\n`;\n controller.enqueue(encoder.encode(line));\n }\n } catch (err) {\n // ignore\n } finally {\n controller.close();\n }\n },\n });\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache, no-transform',\n Connection: 'keep-alive',\n },\n });\n}\n\n// 统一路由处理器\nexport async function GET(req: NextRequest) {\n const url = new URL(req.url);\n const pathname = url.pathname;\n\n // Assistants routes\n if (pathname.match(/\\/assistants\\/[^/]+\\/graph$/)) {\n const match = pathname.match(/\\/assistants\\/([^/]+)\\/graph$/);\n if (match) {\n const assistant_id = match[1];\n const xrayParam = url.searchParams.get('xray') ?? undefined;\n const queryParams = { xray: xrayParam };\n const { xray } = AssistantGraphQuerySchema.parse(queryParams);\n const data = await client.assistants.getGraph(assistant_id, {\n xray: xray !== undefined ? xray === 'true' : undefined,\n });\n return NextResponse.json(data);\n }\n }\n\n // Threads routes\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})$/);\n if (match) {\n const thread_id = match[1];\n const data = await client.threads.get(thread_id);\n return NextResponse.json(data);\n }\n }\n\n // Runs routes\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/runs$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/runs$/);\n if (match) {\n const thread_id = match[1];\n const limit = url.searchParams.get('limit') ?? undefined;\n const offset = url.searchParams.get('offset') ?? undefined;\n const status = url.searchParams.get('status') ?? undefined;\n const queryParams = { limit, offset, status };\n const {\n limit: parsedLimit,\n offset: parsedOffset,\n status: parsedStatus,\n } = RunListQuerySchema.parse(queryParams);\n const runs = await client.runs.list(thread_id, {\n limit: parsedLimit,\n offset: parsedOffset,\n status: parsedStatus,\n });\n return Response.json(runs);\n }\n }\n\n return new NextResponse('Not Found', { status: 404 });\n}\n\nexport async function POST(req: NextRequest) {\n const url = new URL(req.url);\n const pathname = url.pathname;\n\n // Assistants routes\n if (pathname.endsWith('/assistants/search')) {\n const body = await req.json();\n const payload = AssistantsSearchSchema.parse(body);\n const data = await client.assistants.search({\n graphId: payload.graph_id,\n metadata: payload.metadata,\n limit: payload.limit,\n offset: payload.offset,\n });\n return NextResponse.json(data, {\n headers: { 'X-Pagination-Total': String(data.length) },\n });\n }\n\n // Threads routes\n if (pathname.endsWith('/threads')) {\n const body = await req.json();\n const payload = ThreadCreatePayloadSchema.parse(body);\n const thread = await client.threads.create(camelcaseKeys(payload));\n return NextResponse.json(thread);\n }\n\n if (pathname.endsWith('/threads/search')) {\n const body = await req.json();\n const payload = ThreadSearchPayloadSchema.parse(body);\n const result = await client.threads.search(camelcaseKeys(payload));\n return NextResponse.json(result, {\n headers: { 'X-Pagination-Total': String(result.length) },\n });\n }\n\n // Threads state update\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/state$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/state$/);\n if (match) {\n const thread_id = match[1];\n const body = await req.json();\n const payload = ThreadStateUpdate.parse(body);\n const result = await client.threads.updateState(thread_id, camelcaseKeys(payload));\n return NextResponse.json(result);\n }\n }\n\n // Runs routes - stream\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/runs\\/stream$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/runs\\/stream$/);\n if (match) {\n const thread_id = match[1];\n const body = await req.json();\n const payload = RunStreamPayloadSchema.parse(body);\n\n // Extract custom context from request headers\n const langgraphContextHeader = req.headers.get('x-langgraph-context');\n if (langgraphContextHeader) {\n const langgraphContext = JSON.parse(decodeURIComponent(langgraphContextHeader));\n payload.config = payload.config || {};\n payload.config.configurable = payload.config.configurable || {};\n Object.assign(payload.config.configurable, langgraphContext);\n }\n const generator = client.runs.stream(\n thread_id,\n payload.assistant_id as string,\n camelcaseKeys(payload) as any,\n );\n return sseResponse(generator as any);\n }\n }\n\n // Runs routes - cancel\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}\\/runs\\/[0-9a-fA-F-]{36}\\/cancel$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})\\/runs\\/([0-9a-fA-F-]{36})\\/cancel$/);\n if (match) {\n const thread_id = match[1];\n const run_id = match[2];\n const waitParam = url.searchParams.get('wait') ?? undefined;\n const actionParam = url.searchParams.get('action') ?? undefined;\n const queryParams = {\n wait: waitParam ? waitParam === 'true' : false,\n action: actionParam ?? 'interrupt',\n };\n const { wait, action } = RunCancelQuerySchema.parse(queryParams);\n const promise = client.runs.cancel(thread_id, run_id, wait, action);\n if (wait) await promise;\n return new Response(null, { status: wait ? 204 : 202 });\n }\n }\n\n return new NextResponse('Not Found', { status: 404 });\n}\n\nexport async function DELETE(req: NextRequest) {\n const url = new URL(req.url);\n const pathname = url.pathname;\n\n // Threads routes\n if (pathname.match(/\\/threads\\/[0-9a-fA-F-]{36}$/)) {\n const match = pathname.match(/\\/threads\\/([0-9a-fA-F-]{36})$/);\n if (match) {\n const thread_id = match[1];\n await client.threads.delete(thread_id);\n return new NextResponse(null, { status: 204 });\n }\n }\n\n return new NextResponse('Not Found', { status: 404 });\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AIMessageChunk } from '@langchain/core/messages';
|
|
2
2
|
import { Command, Send } from '@langchain/langgraph';
|
|
3
|
+
import { concat } from '@langchain/core/utils/stream';
|
|
3
4
|
import { EventEmitter } from 'eventemitter3';
|
|
4
5
|
import { load } from '@langchain/core/load';
|
|
5
6
|
import { MemorySaver } from '@langchain/langgraph-checkpoint';
|
|
@@ -888,7 +889,7 @@ const createCheckPointer = async () => {
|
|
|
888
889
|
}
|
|
889
890
|
if (process.env.SQLITE_DATABASE_URI) {
|
|
890
891
|
console.debug("LG | Using sqlite as checkpoint");
|
|
891
|
-
const { SqliteSaver } = await import('./checkpoint-
|
|
892
|
+
const { SqliteSaver } = await import('./checkpoint-DdL-Wo1x.js');
|
|
892
893
|
const db = SqliteSaver.fromConnString(process.env.SQLITE_DATABASE_URI);
|
|
893
894
|
return db;
|
|
894
895
|
}
|
|
@@ -898,7 +899,7 @@ const createMessageQueue = async () => {
|
|
|
898
899
|
let q;
|
|
899
900
|
if (process.env.REDIS_URL) {
|
|
900
901
|
console.debug("LG | Using redis as stream queue");
|
|
901
|
-
const { RedisStreamQueue } = await import('./queue-
|
|
902
|
+
const { RedisStreamQueue } = await import('./queue-D3gPPSDe.js');
|
|
902
903
|
q = RedisStreamQueue;
|
|
903
904
|
} else {
|
|
904
905
|
q = MemoryStreamQueue;
|
|
@@ -986,10 +987,9 @@ async function streamStateWithQueue(threads, run, queue, payload, options) {
|
|
|
986
987
|
...payload.config?.metadata,
|
|
987
988
|
run_attempt: options.attempt
|
|
988
989
|
};
|
|
989
|
-
const events = graph.
|
|
990
|
+
const events = graph.stream(
|
|
990
991
|
payload.command != null ? getLangGraphCommand(payload.command) : payload.input ?? null,
|
|
991
992
|
{
|
|
992
|
-
version: "v2",
|
|
993
993
|
interruptAfter: payload.interruptAfter,
|
|
994
994
|
interruptBefore: payload.interruptBefore,
|
|
995
995
|
tags: payload.config?.tags,
|
|
@@ -1002,67 +1002,51 @@ async function streamStateWithQueue(threads, run, queue, payload, options) {
|
|
|
1002
1002
|
signal: queue.cancelSignal.signal
|
|
1003
1003
|
}
|
|
1004
1004
|
);
|
|
1005
|
-
const messages = {};
|
|
1006
|
-
const completedIds = /* @__PURE__ */ new Set();
|
|
1007
1005
|
try {
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
if (mode === "values") {
|
|
1006
|
+
const sendedMetadataMessage = /* @__PURE__ */ new Set();
|
|
1007
|
+
const messageChunks = /* @__PURE__ */ new Map();
|
|
1008
|
+
for await (const event of await events) {
|
|
1009
|
+
let ns = [];
|
|
1010
|
+
if (event.length === 3) {
|
|
1011
|
+
ns = event.splice(0, 1);
|
|
1012
|
+
}
|
|
1013
|
+
const getNameWithNs = (name) => {
|
|
1014
|
+
if (ns.length === 0) return name;
|
|
1015
|
+
if (ns.length === 1 && ns[0]?.length === 0) return name;
|
|
1016
|
+
return `${name}|${ns.join("|")}`;
|
|
1017
|
+
};
|
|
1018
|
+
if (event[0] === "values") {
|
|
1019
|
+
const value = event[1];
|
|
1020
|
+
await queue.push(new EventMessage(getNameWithNs("values"), value));
|
|
1021
|
+
if (getNameWithNs("values") === "values")
|
|
1025
1022
|
await threads.set(run.thread_id, {
|
|
1026
|
-
values:
|
|
1023
|
+
values: value ? JSON.parse(serialiseAsDict(value)) : ""
|
|
1027
1024
|
});
|
|
1025
|
+
} else if (event[0] === "messages") {
|
|
1026
|
+
const message = event[1][0];
|
|
1027
|
+
const metadata2 = event[1][1];
|
|
1028
|
+
if (message.id && !sendedMetadataMessage.has(message.id)) {
|
|
1029
|
+
await queue.push(
|
|
1030
|
+
new EventMessage("messages/metadata", {
|
|
1031
|
+
[message.id]: metadata2
|
|
1032
|
+
})
|
|
1033
|
+
);
|
|
1034
|
+
sendedMetadataMessage.add(message.id);
|
|
1028
1035
|
}
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
}
|
|
1040
|
-
if (!Array.isArray(chunkMessages)) {
|
|
1041
|
-
chunkMessages = [chunkMessages];
|
|
1042
|
-
}
|
|
1043
|
-
for (const message of chunkMessages) {
|
|
1044
|
-
if (!message.id || completedIds.has(message.id)) continue;
|
|
1045
|
-
completedIds.add(message.id);
|
|
1046
|
-
newMessages.push(message);
|
|
1047
|
-
}
|
|
1048
|
-
if (newMessages.length > 0) {
|
|
1049
|
-
await queue.push(new EventMessage("messages/complete", newMessages));
|
|
1050
|
-
}
|
|
1051
|
-
} else if (event.event === "on_chat_model_stream" && !event.tags?.includes("nostream")) {
|
|
1052
|
-
const message = event.data.chunk;
|
|
1053
|
-
if (!message.id) continue;
|
|
1054
|
-
if (messages[message.id] == null) {
|
|
1055
|
-
messages[message.id] = message;
|
|
1056
|
-
await queue.push(
|
|
1057
|
-
new EventMessage("messages/metadata", {
|
|
1058
|
-
[message.id]: { metadata: event.metadata }
|
|
1059
|
-
})
|
|
1060
|
-
);
|
|
1061
|
-
} else {
|
|
1062
|
-
messages[message.id] = messages[message.id].concat(message);
|
|
1063
|
-
}
|
|
1064
|
-
await queue.push(new EventMessage("messages/partial", [messages[message.id]]));
|
|
1036
|
+
if (AIMessageChunk.isInstance(message) && message.id) {
|
|
1037
|
+
messageChunks.set(message.id, [
|
|
1038
|
+
...messageChunks.get(message.id) ?? [],
|
|
1039
|
+
message
|
|
1040
|
+
]);
|
|
1041
|
+
await queue.push(
|
|
1042
|
+
new EventMessage("messages/partial", [messageChunks.get(message.id).reduce(concat)])
|
|
1043
|
+
);
|
|
1044
|
+
} else {
|
|
1045
|
+
await queue.push(new EventMessage("messages/partial", [message]));
|
|
1065
1046
|
}
|
|
1047
|
+
} else if (event[0] === "updates") {
|
|
1048
|
+
const updates = event[1];
|
|
1049
|
+
await queue.push(new EventMessage(getNameWithNs("updates"), updates));
|
|
1066
1050
|
}
|
|
1067
1051
|
}
|
|
1068
1052
|
} finally {
|
|
@@ -1111,4 +1095,4 @@ async function* streamState(threads, run, payload, options) {
|
|
|
1111
1095
|
}
|
|
1112
1096
|
|
|
1113
1097
|
export { BaseStreamQueue as B, CancelEventMessage as C, GRAPHS as G, LangGraphGlobal as L, streamState as a, getGraph as g, registerGraph as r, serialiseAsDict as s };
|
|
1114
|
-
//# sourceMappingURL=stream-
|
|
1098
|
+
//# sourceMappingURL=stream-CAZ9j0yn.js.map
|