@langgraph-js/pure-graph 1.5.1 → 1.5.3
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 +11 -9
- package/dist/adapter/hono/index.js.map +1 -1
- package/dist/adapter/nextjs/index.js +1 -1
- package/dist/adapter/zod.d.ts +5 -5
- package/dist/{createEndpoint-D56l-tDn.js → createEndpoint-CM_PIKjI.js} +8 -8
- package/dist/{createEndpoint-D56l-tDn.js.map → createEndpoint-CM_PIKjI.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/{queue-BnmSDnCz.js → queue-XIrklJBQ.js} +2 -2
- package/dist/{queue-BnmSDnCz.js.map → queue-XIrklJBQ.js.map} +1 -1
- package/dist/{router-DKRP5e01.js → router-BSJAJNBn.js} +12 -18
- package/dist/router-BSJAJNBn.js.map +1 -0
- package/dist/types.d.ts +11 -12
- package/dist/{zod-BaCzVUl8.js → zod-C5lbZYj6.js} +2 -2
- package/dist/{zod-BaCzVUl8.js.map → zod-C5lbZYj6.js.map} +1 -1
- package/package.json +2 -1
- package/dist/router-DKRP5e01.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { zValidator } from '@hono/zod-validator';
|
|
3
|
-
import { c as createEndpoint, s as serialiseAsDict } from '../../createEndpoint-
|
|
4
|
-
import { A as AssistantsSearchSchema, a as AssistantGraphQuerySchema, T as ThreadIdParamSchema, R as RunStreamPayloadSchema, b as RunListQuerySchema, c as RunIdParamSchema, d as RunCancelQuerySchema, e as ThreadStateUpdate, f as ThreadCreatePayloadSchema, g as ThreadSearchPayloadSchema } from '../../zod-
|
|
3
|
+
import { c as createEndpoint, s as serialiseAsDict } from '../../createEndpoint-CM_PIKjI.js';
|
|
4
|
+
import { A as AssistantsSearchSchema, a as AssistantGraphQuerySchema, T as ThreadIdParamSchema, R as RunStreamPayloadSchema, b as RunListQuerySchema, c as RunIdParamSchema, d as RunCancelQuerySchema, e as ThreadStateUpdate, f as ThreadCreatePayloadSchema, g as ThreadSearchPayloadSchema } from '../../zod-C5lbZYj6.js';
|
|
5
|
+
import camelcaseKeys from 'camelcase-keys';
|
|
5
6
|
import { streamSSE } from 'hono/streaming';
|
|
6
7
|
import z from 'zod';
|
|
7
8
|
import { cors } from 'hono/cors';
|
|
@@ -12,7 +13,7 @@ const api$2 = new Hono();
|
|
|
12
13
|
api$2.post("/assistants/search", zValidator("json", AssistantsSearchSchema), async (c) => {
|
|
13
14
|
const payload = c.req.valid("json");
|
|
14
15
|
let total = 0;
|
|
15
|
-
const data = await client.assistants.search(payload);
|
|
16
|
+
const data = await client.assistants.search(camelcaseKeys(payload));
|
|
16
17
|
c.res.headers.set("X-Pagination-Total", total.toString());
|
|
17
18
|
return c.json(data);
|
|
18
19
|
});
|
|
@@ -39,7 +40,11 @@ api$1.post(
|
|
|
39
40
|
if (langgraphContext) {
|
|
40
41
|
Object.assign(payload.config.configurable, langgraphContext);
|
|
41
42
|
}
|
|
42
|
-
for await (const { event, data } of client.runs.stream(
|
|
43
|
+
for await (const { event, data } of client.runs.stream(
|
|
44
|
+
thread_id,
|
|
45
|
+
payload.assistant_id,
|
|
46
|
+
camelcaseKeys(payload)
|
|
47
|
+
)) {
|
|
43
48
|
await stream.writeSSE({ data: serialiseAsDict(data) ?? "", event });
|
|
44
49
|
}
|
|
45
50
|
});
|
|
@@ -85,15 +90,12 @@ api$1.post(
|
|
|
85
90
|
const api = new Hono();
|
|
86
91
|
api.post("/threads", zValidator("json", ThreadCreatePayloadSchema), async (c) => {
|
|
87
92
|
const payload = c.req.valid("json");
|
|
88
|
-
const thread = await client.threads.create(
|
|
89
|
-
...payload,
|
|
90
|
-
threadId: payload.thread_id
|
|
91
|
-
});
|
|
93
|
+
const thread = await client.threads.create(camelcaseKeys(payload));
|
|
92
94
|
return c.json(thread);
|
|
93
95
|
});
|
|
94
96
|
api.post("/threads/search", zValidator("json", ThreadSearchPayloadSchema), async (c) => {
|
|
95
97
|
const payload = c.req.valid("json");
|
|
96
|
-
const result = await client.threads.search(
|
|
98
|
+
const result = await client.threads.search(camelcaseKeys(payload));
|
|
97
99
|
c.res.headers.set("X-Pagination-Total", result.length.toString());
|
|
98
100
|
return c.json(result);
|
|
99
101
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/adapter/hono/endpoint.ts","../../../src/adapter/hono/assistants.ts","../../../src/adapter/hono/runs.ts","../../../src/adapter/hono/threads.ts","../../../src/adapter/hono/index.ts"],"sourcesContent":["import { createEndpoint } from '../../createEndpoint.js';\n\nexport const client = createEndpoint();\n","import { zValidator } from '@hono/zod-validator';\nimport { Hono } from 'hono';\nimport { client } from './endpoint';\nimport { AssistantsSearchSchema, AssistantGraphQuerySchema } from '../zod';\nconst api = new Hono();\n\napi.post('/assistants/search', zValidator('json', AssistantsSearchSchema), async (c) => {\n // Search Assistants\n const payload = c.req.valid('json');\n let total = 0;\n const data = await client.assistants.search(payload);\n c.res.headers.set('X-Pagination-Total', total.toString());\n return c.json(data);\n});\n\napi.get('/assistants/:assistant_id/graph', zValidator('query', AssistantGraphQuerySchema), async (c) => {\n const xray = c.req.valid('query').xray;\n const data = await client.assistants.getGraph(c.req.param('assistant_id'), {\n xray: xray !== undefined ? xray === 'true' : undefined,\n });\n return c.json(data);\n});\n\nexport default api;\n","import { zValidator } from '@hono/zod-validator';\nimport { Hono } from 'hono';\n\nimport { streamSSE } from 'hono/streaming';\nimport { client } from './endpoint';\nimport {\n ThreadIdParamSchema,\n RunIdParamSchema,\n RunStreamPayloadSchema,\n RunListQuerySchema,\n RunCancelQuerySchema,\n ThreadStateUpdate,\n} from '../zod';\nimport { serialiseAsDict } from '../../graph/stream';\nimport z from 'zod';\nimport type { LangGraphServerContext } from './index';\n\nconst api = new Hono<{ Variables: LangGraphServerContext }>();\n\n// 最常用的对话接口\napi.post(\n '/threads/:thread_id/runs/stream',\n zValidator('param', ThreadIdParamSchema),\n zValidator('json', RunStreamPayloadSchema),\n async (c) => {\n // Stream Run\n const { thread_id } = c.req.valid('param');\n const payload = c.req.valid('json');\n\n // c.header('Content-Location', `/threads/${thread_id}/runs/${run.run_id}`);\n return streamSSE(c, async (stream) => {\n payload.config = payload.config || {};\n payload.config.configurable = payload.config.configurable || {};\n const langgraphContext = c.get('langgraph_context');\n if (langgraphContext) {\n Object.assign(payload.config.configurable, langgraphContext);\n }\n /** @ts-ignore zod v3 的问题,与 ts 类型不一致 */\n for await (const { event, data } of client.runs.stream(thread_id, payload.assistant_id, payload)) {\n await stream.writeSSE({ data: serialiseAsDict(data) ?? '', event });\n }\n });\n },\n);\n\napi.get(\n '/threads/:thread_id/runs',\n zValidator('param', ThreadIdParamSchema),\n zValidator('query', RunListQuerySchema),\n async (c) => {\n const { thread_id } = c.req.valid('param');\n const { limit, offset, status } = c.req.valid('query');\n const runs = await client.runs.list(thread_id, { limit, offset, status });\n return c.json(runs);\n },\n);\n\napi.post(\n '/threads/:thread_id/runs/:run_id/cancel',\n zValidator('param', RunIdParamSchema),\n zValidator('query', RunCancelQuerySchema),\n async (c) => {\n // Cancel Run Http\n const { thread_id, run_id } = c.req.valid('param');\n const { wait, action } = c.req.valid('query');\n const cancel = client.runs.cancel(thread_id, run_id, wait, action);\n if (wait) {\n await cancel;\n }\n return c.body(null, wait ? 204 : 202);\n },\n);\n\napi.post(\n '/threads/:thread_id/state',\n zValidator('param', z.object({ thread_id: z.string().uuid() })),\n zValidator('json', ThreadStateUpdate),\n async (c) => {\n // Update Thread State\n const { thread_id } = c.req.valid('param');\n const payload = c.req.valid('json');\n // const config: RunnableConfig = { configurable: { thread_id } };\n\n // if (payload.checkpoint_id) {\n // config.configurable ??= {};\n // config.configurable.checkpoint_id = payload.checkpoint_id;\n // }\n // if (payload.checkpoint) {\n // config.configurable ??= {};\n // Object.assign(config.configurable, payload.checkpoint);\n // }\n\n const inserted = await client.threads.updateState(thread_id, payload);\n\n return c.json(inserted);\n },\n);\nexport default api;\n","import { zValidator } from '@hono/zod-validator';\nimport { Hono } from 'hono';\nimport { client } from './endpoint';\nimport { ThreadIdParamSchema, ThreadCreatePayloadSchema, ThreadSearchPayloadSchema } from '../zod';\n\nconst api = new Hono();\n\n// Threads Routes\napi.post('/threads', zValidator('json', ThreadCreatePayloadSchema), async (c) => {\n const payload = c.req.valid('json');\n const thread = await client.threads.create({\n ...payload,\n threadId: payload.thread_id,\n });\n\n return c.json(thread);\n});\n\napi.post('/threads/search', zValidator('json', ThreadSearchPayloadSchema), async (c) => {\n // Search Threads\n const payload = c.req.valid('json');\n const result = await client.threads.search({ ...payload, sortBy: payload.sort_by, sortOrder: payload.sort_order });\n c.res.headers.set('X-Pagination-Total', result.length.toString());\n return c.json(result);\n});\n\napi.get('/threads/:thread_id', zValidator('param', ThreadIdParamSchema), async (c) => {\n // Get Thread\n const { thread_id } = c.req.valid('param');\n return c.json(await client.threads.get(thread_id));\n});\n\napi.delete('/threads/:thread_id', zValidator('param', ThreadIdParamSchema), async (c) => {\n // Delete Thread\n const { thread_id } = c.req.valid('param');\n await client.threads.delete(thread_id);\n return new Response(null, { status: 204 });\n});\n\nexport default api;\n","import { Hono } from 'hono';\nimport Assistants from './assistants';\nimport Runs from './runs';\nimport Threads from './threads';\nimport { cors } from 'hono/cors';\n\nexport interface LangGraphServerContext {\n langgraph_context: any;\n}\nconst app = new Hono<{ Variables: LangGraphServerContext }>();\n\napp.use(cors());\n\napp.route('/', Assistants);\napp.route('/', Runs);\napp.route('/', Threads);\n\nexport default app;\n"],"names":["api","Assistants","Runs","Threads"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/adapter/hono/endpoint.ts","../../../src/adapter/hono/assistants.ts","../../../src/adapter/hono/runs.ts","../../../src/adapter/hono/threads.ts","../../../src/adapter/hono/index.ts"],"sourcesContent":["import { createEndpoint } from '../../createEndpoint.js';\n\nexport const client = createEndpoint();\n","import { zValidator } from '@hono/zod-validator';\nimport { Hono } from 'hono';\nimport { client } from './endpoint';\nimport { AssistantsSearchSchema, AssistantGraphQuerySchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nconst api = new Hono();\n\napi.post('/assistants/search', zValidator('json', AssistantsSearchSchema), async (c) => {\n // Search Assistants\n const payload = c.req.valid('json');\n let total = 0;\n const data = await client.assistants.search(camelcaseKeys(payload));\n c.res.headers.set('X-Pagination-Total', total.toString());\n return c.json(data);\n});\n\napi.get('/assistants/:assistant_id/graph', zValidator('query', AssistantGraphQuerySchema), async (c) => {\n const xray = c.req.valid('query').xray;\n const data = await client.assistants.getGraph(c.req.param('assistant_id'), {\n xray: xray !== undefined ? xray === 'true' : undefined,\n });\n return c.json(data);\n});\n\nexport default api;\n","import { zValidator } from '@hono/zod-validator';\nimport { Hono } from 'hono';\n\nimport { streamSSE } from 'hono/streaming';\nimport { client } from './endpoint';\nimport {\n ThreadIdParamSchema,\n RunIdParamSchema,\n RunStreamPayloadSchema,\n RunListQuerySchema,\n RunCancelQuerySchema,\n ThreadStateUpdate,\n} from '../zod';\nimport { serialiseAsDict } from '../../graph/stream';\nimport z from 'zod';\nimport type { LangGraphServerContext } from './index';\nimport camelcaseKeys from 'camelcase-keys';\n\nconst api = new Hono<{ Variables: LangGraphServerContext }>();\n\n// 最常用的对话接口\napi.post(\n '/threads/:thread_id/runs/stream',\n zValidator('param', ThreadIdParamSchema),\n zValidator('json', RunStreamPayloadSchema),\n async (c) => {\n // Stream Run\n const { thread_id } = c.req.valid('param');\n const payload = c.req.valid('json');\n\n // c.header('Content-Location', `/threads/${thread_id}/runs/${run.run_id}`);\n return streamSSE(c, async (stream) => {\n payload.config = payload.config || {};\n payload.config.configurable = payload.config.configurable || {};\n const langgraphContext = c.get('langgraph_context');\n if (langgraphContext) {\n Object.assign(payload.config.configurable, langgraphContext);\n }\n /** @ts-ignore zod v3 的问题,与 ts 类型不一致 */\n for await (const { event, data } of client.runs.stream(\n thread_id,\n payload.assistant_id,\n camelcaseKeys(payload) as any,\n )) {\n await stream.writeSSE({ data: serialiseAsDict(data) ?? '', event });\n }\n });\n },\n);\n\napi.get(\n '/threads/:thread_id/runs',\n zValidator('param', ThreadIdParamSchema),\n zValidator('query', RunListQuerySchema),\n async (c) => {\n const { thread_id } = c.req.valid('param');\n const { limit, offset, status } = c.req.valid('query');\n const runs = await client.runs.list(thread_id, { limit, offset, status });\n return c.json(runs);\n },\n);\n\napi.post(\n '/threads/:thread_id/runs/:run_id/cancel',\n zValidator('param', RunIdParamSchema),\n zValidator('query', RunCancelQuerySchema),\n async (c) => {\n // Cancel Run Http\n const { thread_id, run_id } = c.req.valid('param');\n const { wait, action } = c.req.valid('query');\n const cancel = client.runs.cancel(thread_id, run_id, wait, action);\n if (wait) {\n await cancel;\n }\n return c.body(null, wait ? 204 : 202);\n },\n);\n\napi.post(\n '/threads/:thread_id/state',\n zValidator('param', z.object({ thread_id: z.string().uuid() })),\n zValidator('json', ThreadStateUpdate),\n async (c) => {\n // Update Thread State\n const { thread_id } = c.req.valid('param');\n const payload = c.req.valid('json');\n // const config: RunnableConfig = { configurable: { thread_id } };\n\n // if (payload.checkpoint_id) {\n // config.configurable ??= {};\n // config.configurable.checkpoint_id = payload.checkpoint_id;\n // }\n // if (payload.checkpoint) {\n // config.configurable ??= {};\n // Object.assign(config.configurable, payload.checkpoint);\n // }\n\n const inserted = await client.threads.updateState(thread_id, payload);\n\n return c.json(inserted);\n },\n);\nexport default api;\n","import { zValidator } from '@hono/zod-validator';\nimport { Hono } from 'hono';\nimport { client } from './endpoint';\nimport { ThreadIdParamSchema, ThreadCreatePayloadSchema, ThreadSearchPayloadSchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\n\nconst api = new Hono();\n\n// Threads Routes\napi.post('/threads', zValidator('json', ThreadCreatePayloadSchema), async (c) => {\n const payload = c.req.valid('json');\n const thread = await client.threads.create(camelcaseKeys(payload));\n\n return c.json(thread);\n});\n\napi.post('/threads/search', zValidator('json', ThreadSearchPayloadSchema), async (c) => {\n // Search Threads\n const payload = c.req.valid('json');\n const result = await client.threads.search(camelcaseKeys(payload));\n c.res.headers.set('X-Pagination-Total', result.length.toString());\n return c.json(result);\n});\n\napi.get('/threads/:thread_id', zValidator('param', ThreadIdParamSchema), async (c) => {\n // Get Thread\n const { thread_id } = c.req.valid('param');\n return c.json(await client.threads.get(thread_id));\n});\n\napi.delete('/threads/:thread_id', zValidator('param', ThreadIdParamSchema), async (c) => {\n // Delete Thread\n const { thread_id } = c.req.valid('param');\n await client.threads.delete(thread_id);\n return new Response(null, { status: 204 });\n});\n\nexport default api;\n","import { Hono } from 'hono';\nimport Assistants from './assistants';\nimport Runs from './runs';\nimport Threads from './threads';\nimport { cors } from 'hono/cors';\n\nexport interface LangGraphServerContext {\n langgraph_context: any;\n}\nconst app = new Hono<{ Variables: LangGraphServerContext }>();\n\napp.use(cors());\n\napp.route('/', Assistants);\napp.route('/', Runs);\napp.route('/', Threads);\n\nexport default app;\n"],"names":["api","Assistants","Runs","Threads"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ async function ensureInitialized(attachGraphPromise) {
|
|
|
2
2
|
if (globalThis.LG_INIT_PROMISE === void 0) {
|
|
3
3
|
globalThis.LG_INIT_PROMISE = (async () => {
|
|
4
4
|
await attachGraphPromise();
|
|
5
|
-
const { GET, POST, DELETE } = await import('../../router-
|
|
5
|
+
const { GET, POST, DELETE } = await import('../../router-BSJAJNBn.js');
|
|
6
6
|
return {
|
|
7
7
|
GET,
|
|
8
8
|
POST,
|
package/dist/adapter/zod.d.ts
CHANGED
|
@@ -150,7 +150,7 @@ export declare const MetadataSchema: z.ZodObject<{
|
|
|
150
150
|
}, z.ZodUnknown, "strip">>;
|
|
151
151
|
export declare const SendSchema: z.ZodObject<{
|
|
152
152
|
node: z.ZodString;
|
|
153
|
-
input: z.
|
|
153
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
154
154
|
}, "strip", z.ZodTypeAny, {
|
|
155
155
|
node: string;
|
|
156
156
|
input?: unknown;
|
|
@@ -163,7 +163,7 @@ export declare const CommandSchema: z.ZodObject<{
|
|
|
163
163
|
resume: z.ZodOptional<z.ZodUnknown>;
|
|
164
164
|
goto: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
|
165
165
|
node: z.ZodString;
|
|
166
|
-
input: z.
|
|
166
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
167
167
|
}, "strip", z.ZodTypeAny, {
|
|
168
168
|
node: string;
|
|
169
169
|
input?: unknown;
|
|
@@ -172,7 +172,7 @@ export declare const CommandSchema: z.ZodObject<{
|
|
|
172
172
|
input?: unknown;
|
|
173
173
|
}>, z.ZodArray<z.ZodObject<{
|
|
174
174
|
node: z.ZodString;
|
|
175
|
-
input: z.
|
|
175
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
176
176
|
}, "strip", z.ZodTypeAny, {
|
|
177
177
|
node: string;
|
|
178
178
|
input?: unknown;
|
|
@@ -285,7 +285,7 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
285
285
|
resume: z.ZodOptional<z.ZodUnknown>;
|
|
286
286
|
goto: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
|
287
287
|
node: z.ZodString;
|
|
288
|
-
input: z.
|
|
288
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
289
289
|
}, "strip", z.ZodTypeAny, {
|
|
290
290
|
node: string;
|
|
291
291
|
input?: unknown;
|
|
@@ -294,7 +294,7 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
294
294
|
input?: unknown;
|
|
295
295
|
}>, z.ZodArray<z.ZodObject<{
|
|
296
296
|
node: z.ZodString;
|
|
297
|
-
input: z.
|
|
297
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
298
298
|
}, "strip", z.ZodTypeAny, {
|
|
299
299
|
node: string;
|
|
300
300
|
input?: unknown;
|
|
@@ -1274,7 +1274,7 @@ const createMessageQueue = async () => {
|
|
|
1274
1274
|
let q;
|
|
1275
1275
|
if (process.env.REDIS_URL) {
|
|
1276
1276
|
console.debug("LG | Using redis as stream queue");
|
|
1277
|
-
const { RedisStreamQueue } = await import('./queue-
|
|
1277
|
+
const { RedisStreamQueue } = await import('./queue-XIrklJBQ.js');
|
|
1278
1278
|
q = RedisStreamQueue;
|
|
1279
1279
|
} else {
|
|
1280
1280
|
q = MemoryStreamQueue;
|
|
@@ -1319,7 +1319,7 @@ async function streamStateWithQueue(threads, run, queue, payload, options) {
|
|
|
1319
1319
|
const graph = await options.getGraph(graphId, payload.config, {
|
|
1320
1320
|
checkpointer: payload.temporary ? null : void 0
|
|
1321
1321
|
});
|
|
1322
|
-
const userStreamMode = payload.
|
|
1322
|
+
const userStreamMode = payload.streamMode ?? [];
|
|
1323
1323
|
const libStreamMode = /* @__PURE__ */ new Set([
|
|
1324
1324
|
"values",
|
|
1325
1325
|
...userStreamMode.filter((mode) => mode !== "events" && mode !== "messages-tuple")
|
|
@@ -1345,12 +1345,12 @@ async function streamStateWithQueue(threads, run, queue, payload, options) {
|
|
|
1345
1345
|
payload.command != null ? getLangGraphCommand(payload.command) : payload.input ?? null,
|
|
1346
1346
|
{
|
|
1347
1347
|
version: "v2",
|
|
1348
|
-
interruptAfter: payload.
|
|
1349
|
-
interruptBefore: payload.
|
|
1348
|
+
interruptAfter: payload.interruptAfter,
|
|
1349
|
+
interruptBefore: payload.interruptBefore,
|
|
1350
1350
|
tags: payload.config?.tags,
|
|
1351
1351
|
configurable: payload.config?.configurable,
|
|
1352
1352
|
recursionLimit: payload.config?.recursionLimit,
|
|
1353
|
-
subgraphs: payload.
|
|
1353
|
+
subgraphs: payload.streamSubgraphs,
|
|
1354
1354
|
metadata,
|
|
1355
1355
|
runId: run.run_id,
|
|
1356
1356
|
streamMode: [...libStreamMode],
|
|
@@ -1363,14 +1363,14 @@ async function streamStateWithQueue(threads, run, queue, payload, options) {
|
|
|
1363
1363
|
for await (const event of events) {
|
|
1364
1364
|
if (event.tags?.includes("langsmith:hidden")) continue;
|
|
1365
1365
|
if (event.event === "on_chain_stream" && event.run_id === run.run_id) {
|
|
1366
|
-
const [ns, mode, chunk] = payload.
|
|
1366
|
+
const [ns, mode, chunk] = payload.streamSubgraphs ? event.data.chunk : [null, ...event.data.chunk];
|
|
1367
1367
|
let data = chunk;
|
|
1368
1368
|
if (mode === "messages") {
|
|
1369
1369
|
if (userStreamMode.includes("messages-tuple")) {
|
|
1370
1370
|
await queue.push(new EventMessage("messages", data));
|
|
1371
1371
|
}
|
|
1372
1372
|
} else if (userStreamMode.includes(mode)) {
|
|
1373
|
-
if (payload.
|
|
1373
|
+
if (payload.streamSubgraphs && ns?.length) {
|
|
1374
1374
|
await queue.push(new EventMessage(`${mode}|${ns.join("|")}`, data));
|
|
1375
1375
|
} else {
|
|
1376
1376
|
await queue.push(new EventMessage(mode, data));
|
|
@@ -1547,4 +1547,4 @@ const createEndpoint = () => {
|
|
|
1547
1547
|
};
|
|
1548
1548
|
|
|
1549
1549
|
export { AssistantEndpoint as A, BaseStreamQueue as B, CancelEventMessage as C, LangGraphGlobal as L, createEndpoint as c, registerGraph as r, serialiseAsDict as s };
|
|
1550
|
-
//# sourceMappingURL=createEndpoint-
|
|
1550
|
+
//# sourceMappingURL=createEndpoint-CM_PIKjI.js.map
|