@langgraph-js/pure-graph 2.2.10 → 2.3.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/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-DJkcdyXQ.js} +2 -2
- package/dist/{createEndpoint-DHnODS67.js.map → createEndpoint-DJkcdyXQ.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/{queue-CwCW8m0q.js → queue-D1uesSTS.js} +2 -2
- package/dist/{queue-CwCW8m0q.js.map → queue-D1uesSTS.js.map} +1 -1
- package/dist/{router-AADuUgGy.js → router-B7j3i6t0.js} +3 -3
- package/dist/{router-AADuUgGy.js.map → router-B7j3i6t0.js.map} +1 -1
- package/dist/{stream-SJdqjfOM.js → stream-Ll8XU8_8.js} +34 -63
- package/dist/{stream-SJdqjfOM.js.map → stream-Ll8XU8_8.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-B7j3i6t0.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":";;;;;;AACO,MAAM,SAAS,cAAA,EAAe;;ACgBrC,eAAe,YAAY,SAAA,EAAgF;AACvG,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAAe;AAAA,IAC9B,MAAM,MAAM,UAAA,EAAY;AACpB,MAAA,IAAI;AACA,QAAA,WAAA,MAAiB,EAAE,KAAA,EAAO,IAAA,EAAK,IAAK,SAAA,EAAW;AAC3C,UAAA,MAAM,IAAA,GAAO,UAAU,KAAK;AAAA,MAAA,EAAgB,eAAA,CAAgB,IAAA,EAAM,CAAC,CAAC;;AAAA,CAAA;AACpE,UAAA,UAAA,CAAW,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,QAC3C;AAAA,MACJ,SAAS,GAAA,EAAK;AAAA,MAEd,CAAA,SAAE;AACE,QAAA,UAAA,CAAW,KAAA,EAAM;AAAA,MACrB;AAAA,IACJ;AAAA,GACH,CAAA;AACD,EAAA,OAAO,IAAI,SAAS,MAAA,EAAQ;AAAA,IACxB,OAAA,EAAS;AAAA,MACL,cAAA,EAAgB,kCAAA;AAAA,MAChB,eAAA,EAAiB,wBAAA;AAAA,MACjB,UAAA,EAAY;AAAA;AAChB,GACH,CAAA;AACL;AAGA,eAAsB,IAAI,GAAA,EAAkB;AACxC,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AAC3B,EAAA,MAAM,WAAW,GAAA,CAAI,QAAA;AAGrB,EAAA,IAAI,QAAA,CAAS,KAAA,CAAM,6BAA6B,CAAA,EAAG;AAC/C,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,+BAA+B,CAAA;AAC5D,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,MAAM,YAAA,GAAe,MAAM,CAAC,CAAA;AAC5B,MAAA,MAAM,SAAA,GAAY,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,MAAM,CAAA,IAAK,MAAA;AAClD,MAAA,MAAM,WAAA,GAAc,EAAE,IAAA,EAAM,SAAA,EAAU;AACtC,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,yBAAA,CAA0B,MAAM,WAAW,CAAA;AAC5D,MAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,UAAA,CAAW,SAAS,YAAA,EAAc;AAAA,QACxD,IAAA,EAAM,IAAA,KAAS,MAAA,GAAY,IAAA,KAAS,MAAA,GAAS;AAAA,OAChD,CAAA;AACD,MAAA,OAAO,YAAA,CAAa,KAAK,IAAI,CAAA;AAAA,IACjC;AAAA,EACJ;AAGA,EAAA,IAAI,QAAA,CAAS,KAAA,CAAM,8BAA8B,CAAA,EAAG;AAChD,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,gCAAgC,CAAA;AAC7D,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,MAAM,SAAA,GAAY,MAAM,CAAC,CAAA;AACzB,MAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,OAAA,CAAQ,IAAI,SAAS,CAAA;AAC/C,MAAA,OAAO,YAAA,CAAa,KAAK,IAAI,CAAA;AAAA,IACjC;AAAA,EACJ;AAGA,EAAA,IAAI,QAAA,CAAS,KAAA,CAAM,oCAAoC,CAAA,EAAG;AACtD,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,sCAAsC,CAAA;AACnE,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,MAAM,SAAA,GAAY,MAAM,CAAC,CAAA;AACzB,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,OAAO,CAAA,IAAK,MAAA;AAC/C,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,IAAK,MAAA;AACjD,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,IAAK,MAAA;AACjD,MAAA,MAAM,WAAA,GAAc,EAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAO;AAC5C,MAAA,MAAM;AAAA,QACF,KAAA,EAAO,WAAA;AAAA,QACP,MAAA,EAAQ,YAAA;AAAA,QACR,MAAA,EAAQ;AAAA,OACZ,GAAI,kBAAA,CAAmB,KAAA,CAAM,WAAW,CAAA;AACxC,MAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,IAAA,CAAK,KAAK,SAAA,EAAW;AAAA,QAC3C,KAAA,EAAO,WAAA;AAAA,QACP,MAAA,EAAQ,YAAA;AAAA,QACR,MAAA,EAAQ;AAAA,OACX,CAAA;AACD,MAAA,OAAO,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IAC7B;AAAA,EACJ;AAEA,EAAA,OAAO,IAAI,YAAA,CAAa,WAAA,EAAa,EAAE,MAAA,EAAQ,KAAK,CAAA;AACxD;AAEA,eAAsB,KAAK,GAAA,EAAkB;AACzC,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AAC3B,EAAA,MAAM,WAAW,GAAA,CAAI,QAAA;AAGrB,EAAA,IAAI,QAAA,CAAS,QAAA,CAAS,oBAAoB,CAAA,EAAG;AACzC,IAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,IAAA,MAAM,OAAA,GAAU,sBAAA,CAAuB,KAAA,CAAM,IAAI,CAAA;AACjD,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,UAAA,CAAW,MAAA,CAAO;AAAA,MACxC,SAAS,OAAA,CAAQ,QAAA;AAAA,MACjB,UAAU,OAAA,CAAQ,QAAA;AAAA,MAClB,OAAO,OAAA,CAAQ,KAAA;AAAA,MACf,QAAQ,OAAA,CAAQ;AAAA,KACnB,CAAA;AACD,IAAA,OAAO,YAAA,CAAa,KAAK,IAAA,EAAM;AAAA,MAC3B,SAAS,EAAE,oBAAA,EAAsB,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAE,KACxD,CAAA;AAAA,EACL;AAGA,EAAA,IAAI,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,EAAG;AAC/B,IAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,IAAA,MAAM,OAAA,GAAU,yBAAA,CAA0B,KAAA,CAAM,IAAI,CAAA;AACpD,IAAA,MAAM,SAAS,MAAM,MAAA,CAAO,QAAQ,MAAA,CAAO,aAAA,CAAc,OAAO,CAAC,CAAA;AACjE,IAAA,OAAO,YAAA,CAAa,KAAK,MAAM,CAAA;AAAA,EACnC;AAEA,EAAA,IAAI,QAAA,CAAS,QAAA,CAAS,iBAAiB,CAAA,EAAG;AACtC,IAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,IAAA,MAAM,OAAA,GAAU,yBAAA,CAA0B,KAAA,CAAM,IAAI,CAAA;AACpD,IAAA,MAAM,SAAS,MAAM,MAAA,CAAO,QAAQ,MAAA,CAAO,aAAA,CAAc,OAAO,CAAC,CAAA;AACjE,IAAA,OAAO,YAAA,CAAa,KAAK,MAAA,EAAQ;AAAA,MAC7B,SAAS,EAAE,oBAAA,EAAsB,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAAE,KAC1D,CAAA;AAAA,EACL;AAGA,EAAA,IAAI,QAAA,CAAS,KAAA,CAAM,qCAAqC,CAAA,EAAG;AACvD,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,uCAAuC,CAAA;AACpE,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,MAAM,SAAA,GAAY,MAAM,CAAC,CAAA;AACzB,MAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,MAAA,MAAM,OAAA,GAAU,iBAAA,CAAkB,KAAA,CAAM,IAAI,CAAA;AAC5C,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,OAAA,CAAQ,YAAY,SAAA,EAAW,aAAA,CAAc,OAAO,CAAC,CAAA;AACjF,MAAA,OAAO,YAAA,CAAa,KAAK,MAAM,CAAA;AAAA,IACnC;AAAA,EACJ;AAGA,EAAA,IAAI,QAAA,CAAS,KAAA,CAAM,4CAA4C,CAAA,EAAG;AAC9D,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,8CAA8C,CAAA;AAC3E,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,MAAM,SAAA,GAAY,MAAM,CAAC,CAAA;AACzB,MAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,MAAA,MAAM,OAAA,GAAU,sBAAA,CAAuB,KAAA,CAAM,IAAI,CAAA;AAGjD,MAAA,MAAM,sBAAA,GAAyB,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA;AACpE,MAAA,IAAI,sBAAA,EAAwB;AACxB,QAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,kBAAA,CAAmB,sBAAsB,CAAC,CAAA;AAC9E,QAAA,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,EAAC;AACpC,QAAA,OAAA,CAAQ,MAAA,CAAO,YAAA,GAAe,OAAA,CAAQ,MAAA,CAAO,gBAAgB,EAAC;AAC9D,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,YAAA,EAAc,gBAAgB,CAAA;AAAA,MAC/D;AACA,MAAA,MAAM,SAAA,GAAY,OAAO,IAAA,CAAK,MAAA;AAAA,QAC1B,SAAA;AAAA,QACA,OAAA,CAAQ,YAAA;AAAA,QACR,cAAc,OAAO;AAAA,OACzB;AACA,MAAA,OAAO,YAAY,SAAgB,CAAA;AAAA,IACvC;AAAA,EACJ;AAGA,EAAA,IAAI,QAAA,CAAS,KAAA,CAAM,8DAA8D,CAAA,EAAG;AAChF,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,kEAAkE,CAAA;AAC/F,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,MAAM,SAAA,GAAY,MAAM,CAAC,CAAA;AACzB,MAAA,MAAM,MAAA,GAAS,MAAM,CAAC,CAAA;AACtB,MAAA,MAAM,SAAA,GAAY,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,MAAM,CAAA,IAAK,MAAA;AAClD,MAAA,MAAM,WAAA,GAAc,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,IAAK,MAAA;AACtD,MAAA,MAAM,WAAA,GAAc;AAAA,QAChB,IAAA,EAAM,SAAA,GAAY,SAAA,KAAc,MAAA,GAAS,KAAA;AAAA,QACzC,QAAQ,WAAA,IAAe;AAAA,OAC3B;AACA,MAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAO,GAAI,oBAAA,CAAqB,MAAM,WAAW,CAAA;AAC/D,MAAA,MAAM,UAAU,MAAA,CAAO,IAAA,CAAK,OAAO,SAAA,EAAW,MAAA,EAAQ,MAAM,MAAM,CAAA;AAClE,MAAA,IAAI,MAAM,MAAM,OAAA;AAChB,MAAA,OAAO,IAAI,SAAS,IAAA,EAAM,EAAE,QAAQ,IAAA,GAAO,GAAA,GAAM,KAAK,CAAA;AAAA,IAC1D;AAAA,EACJ;AAEA,EAAA,OAAO,IAAI,YAAA,CAAa,WAAA,EAAa,EAAE,MAAA,EAAQ,KAAK,CAAA;AACxD;AAEA,eAAsB,OAAO,GAAA,EAAkB;AAC3C,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AAC3B,EAAA,MAAM,WAAW,GAAA,CAAI,QAAA;AAGrB,EAAA,IAAI,QAAA,CAAS,KAAA,CAAM,8BAA8B,CAAA,EAAG;AAChD,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,gCAAgC,CAAA;AAC7D,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,MAAM,SAAA,GAAY,MAAM,CAAC,CAAA;AACzB,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,SAAS,CAAA;AACrC,MAAA,OAAO,IAAI,YAAA,CAAa,IAAA,EAAM,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,IACjD;AAAA,EACJ;AAEA,EAAA,OAAO,IAAI,YAAA,CAAa,WAAA,EAAa,EAAE,MAAA,EAAQ,KAAK,CAAA;AACxD;;;;"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isBaseMessage } from '@langchain/core/messages';
|
|
2
1
|
import { Command, Send } from '@langchain/langgraph';
|
|
3
2
|
import { EventEmitter } from 'eventemitter3';
|
|
4
3
|
import { load } from '@langchain/core/load';
|
|
@@ -888,7 +887,7 @@ const createCheckPointer = async () => {
|
|
|
888
887
|
}
|
|
889
888
|
if (process.env.SQLITE_DATABASE_URI) {
|
|
890
889
|
console.debug("LG | Using sqlite as checkpoint");
|
|
891
|
-
const { SqliteSaver } = await import('./checkpoint-
|
|
890
|
+
const { SqliteSaver } = await import('./checkpoint-DdL-Wo1x.js');
|
|
892
891
|
const db = SqliteSaver.fromConnString(process.env.SQLITE_DATABASE_URI);
|
|
893
892
|
return db;
|
|
894
893
|
}
|
|
@@ -898,7 +897,7 @@ const createMessageQueue = async () => {
|
|
|
898
897
|
let q;
|
|
899
898
|
if (process.env.REDIS_URL) {
|
|
900
899
|
console.debug("LG | Using redis as stream queue");
|
|
901
|
-
const { RedisStreamQueue } = await import('./queue-
|
|
900
|
+
const { RedisStreamQueue } = await import('./queue-D1uesSTS.js');
|
|
902
901
|
q = RedisStreamQueue;
|
|
903
902
|
} else {
|
|
904
903
|
q = MemoryStreamQueue;
|
|
@@ -986,10 +985,9 @@ async function streamStateWithQueue(threads, run, queue, payload, options) {
|
|
|
986
985
|
...payload.config?.metadata,
|
|
987
986
|
run_attempt: options.attempt
|
|
988
987
|
};
|
|
989
|
-
const events = graph.
|
|
988
|
+
const events = graph.stream(
|
|
990
989
|
payload.command != null ? getLangGraphCommand(payload.command) : payload.input ?? null,
|
|
991
990
|
{
|
|
992
|
-
version: "v2",
|
|
993
991
|
interruptAfter: payload.interruptAfter,
|
|
994
992
|
interruptBefore: payload.interruptBefore,
|
|
995
993
|
tags: payload.config?.tags,
|
|
@@ -1002,67 +1000,40 @@ async function streamStateWithQueue(threads, run, queue, payload, options) {
|
|
|
1002
1000
|
signal: queue.cancelSignal.signal
|
|
1003
1001
|
}
|
|
1004
1002
|
);
|
|
1005
|
-
const messages = {};
|
|
1006
|
-
const completedIds = /* @__PURE__ */ new Set();
|
|
1007
1003
|
try {
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
}
|
|
1024
|
-
if (mode === "values") {
|
|
1004
|
+
const sendedMetadataMessage = /* @__PURE__ */ new Set();
|
|
1005
|
+
for await (const event of await events) {
|
|
1006
|
+
let ns = [];
|
|
1007
|
+
if (event.length === 3) {
|
|
1008
|
+
ns = event.splice(0, 1);
|
|
1009
|
+
}
|
|
1010
|
+
const getNameWithNs = (name) => {
|
|
1011
|
+
if (ns.length === 0) return name;
|
|
1012
|
+
if (ns.length === 1 && ns[0]?.length === 0) return name;
|
|
1013
|
+
return `${name}|${ns.join("|")}`;
|
|
1014
|
+
};
|
|
1015
|
+
if (event[0] === "values") {
|
|
1016
|
+
const value = event[1];
|
|
1017
|
+
await queue.push(new EventMessage(getNameWithNs("values"), value));
|
|
1018
|
+
if (getNameWithNs("values") === "values")
|
|
1025
1019
|
await threads.set(run.thread_id, {
|
|
1026
|
-
values:
|
|
1020
|
+
values: value ? JSON.parse(serialiseAsDict(value)) : ""
|
|
1027
1021
|
});
|
|
1022
|
+
} else if (event[0] === "messages") {
|
|
1023
|
+
const message = event[1][0];
|
|
1024
|
+
const metadata2 = event[1][1];
|
|
1025
|
+
if (message.id && !sendedMetadataMessage.has(message.id)) {
|
|
1026
|
+
await queue.push(
|
|
1027
|
+
new EventMessage("messages/metadata", {
|
|
1028
|
+
[message.id]: metadata2
|
|
1029
|
+
})
|
|
1030
|
+
);
|
|
1031
|
+
sendedMetadataMessage.add(message.id);
|
|
1028
1032
|
}
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
if (event.event === "on_chain_stream" && event.run_id === run.run_id) {
|
|
1034
|
-
const newMessages = [];
|
|
1035
|
-
const [_, chunk] = event.data.chunk;
|
|
1036
|
-
let chunkMessages = [];
|
|
1037
|
-
if (typeof chunk === "object" && chunk != null && "messages" in chunk && !isBaseMessage(chunk)) {
|
|
1038
|
-
chunkMessages = chunk?.messages;
|
|
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]]));
|
|
1065
|
-
}
|
|
1033
|
+
await queue.push(new EventMessage("messages/partial", [message]));
|
|
1034
|
+
} else if (event[0] === "updates") {
|
|
1035
|
+
const updates = event[1];
|
|
1036
|
+
await queue.push(new EventMessage(getNameWithNs("updates"), updates));
|
|
1066
1037
|
}
|
|
1067
1038
|
}
|
|
1068
1039
|
} finally {
|
|
@@ -1111,4 +1082,4 @@ async function* streamState(threads, run, payload, options) {
|
|
|
1111
1082
|
}
|
|
1112
1083
|
|
|
1113
1084
|
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-
|
|
1085
|
+
//# sourceMappingURL=stream-Ll8XU8_8.js.map
|