@langgraph-js/pure-graph 2.7.0 → 2.7.2
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/README.md +5 -2
- package/dist/adapter/fetch/context.d.ts +2 -0
- package/dist/adapter/hono/index.js +1 -1
- package/dist/adapter/nextjs/index.js +1 -1
- package/dist/{index-B-gojNlM.js → index-D1vhtuku.js} +17 -1
- package/dist/{index-B-gojNlM.js.map → index-D1vhtuku.js.map} +1 -1
- package/dist/{router-Dk7saRUW.js → router-CUCtgsPJ.js} +2 -2
- package/dist/{router-Dk7saRUW.js.map → router-CUCtgsPJ.js.map} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -181,7 +181,7 @@ To integrate Open LangGraph Server into a Hono.js project, follow these steps:
|
|
|
181
181
|
import { registerGraph } from '@langgraph-js/pure-graph';
|
|
182
182
|
import { graph } from './agent/graph-name/graph';
|
|
183
183
|
import { Hono } from 'hono';
|
|
184
|
-
import
|
|
184
|
+
import { createHonoAdapter, type LangGraphServerContext } from '@langgraph-js/pure-graph/dist/adapter/hono/index';
|
|
185
185
|
import { cors } from 'hono/cors';
|
|
186
186
|
|
|
187
187
|
registerGraph('test', graph);
|
|
@@ -198,7 +198,10 @@ To integrate Open LangGraph Server into a Hono.js project, follow these steps:
|
|
|
198
198
|
});
|
|
199
199
|
|
|
200
200
|
app.use(cors());
|
|
201
|
-
|
|
201
|
+
|
|
202
|
+
// Create LangGraph adapter and mount routes
|
|
203
|
+
const langGraphApp = createHonoAdapter({ basePath: '/api' });
|
|
204
|
+
app.route('/api', langGraphApp);
|
|
202
205
|
|
|
203
206
|
export default app;
|
|
204
207
|
```
|
|
@@ -5,7 +5,7 @@ async function ensureInitialized(attachGraphPromise) {
|
|
|
5
5
|
globalThis.LG_INIT_PROMISE = (async () => {
|
|
6
6
|
await LangGraphGlobal.initGlobal();
|
|
7
7
|
await attachGraphPromise();
|
|
8
|
-
const { GET, POST, DELETE } = await import('../../router-
|
|
8
|
+
const { GET, POST, DELETE } = await import('../../router-CUCtgsPJ.js');
|
|
9
9
|
return {
|
|
10
10
|
GET,
|
|
11
11
|
POST,
|
|
@@ -535,7 +535,23 @@ const routes = [
|
|
|
535
535
|
handler: updateThreadState
|
|
536
536
|
}
|
|
537
537
|
];
|
|
538
|
+
const replaceRequest = (req) => {
|
|
539
|
+
const path = new URL(req.url).pathname.toString();
|
|
540
|
+
let basePath = "";
|
|
541
|
+
if (path.includes("/threads")) {
|
|
542
|
+
basePath = path.split("/threads")[0];
|
|
543
|
+
} else if (path.includes("/assistants")) {
|
|
544
|
+
basePath = path.split("/assistants")[0];
|
|
545
|
+
}
|
|
546
|
+
return new Request(req.url.replace(basePath, ""), {
|
|
547
|
+
method: req.method,
|
|
548
|
+
headers: req.headers,
|
|
549
|
+
body: req.body,
|
|
550
|
+
duplex: req.duplex
|
|
551
|
+
});
|
|
552
|
+
};
|
|
538
553
|
async function handleRequest(req, context = {}) {
|
|
554
|
+
req = replaceRequest(req);
|
|
539
555
|
try {
|
|
540
556
|
await LangGraphGlobal.initGlobal();
|
|
541
557
|
const url = new URL(req.url);
|
|
@@ -554,4 +570,4 @@ async function handleRequest(req, context = {}) {
|
|
|
554
570
|
}
|
|
555
571
|
|
|
556
572
|
export { handleRequest as h };
|
|
557
|
-
//# sourceMappingURL=index-
|
|
573
|
+
//# sourceMappingURL=index-D1vhtuku.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-B-gojNlM.js","sources":["../src/adapter/fetch/endpoint.ts","../src/adapter/zod.ts","../src/adapter/fetch/utils.ts","../src/adapter/fetch/assistants.ts","../src/adapter/fetch/threads.ts","../src/adapter/fetch/runs.ts","../src/adapter/fetch/index.ts"],"sourcesContent":["import { createEndpoint } from '../../createEndpoint.js';\n\nexport const client = createEndpoint();\n","import z from 'zod';\n\nexport const AssistantConfigurable = z\n .object({\n thread_id: z.string().optional(),\n thread_ts: z.string().optional(),\n })\n .catchall(z.unknown());\n\nexport const AssistantConfig = z\n .object({\n tags: z.array(z.string()).optional(),\n recursion_limit: z.number().int().optional(),\n configurable: AssistantConfigurable.optional(),\n })\n .catchall(z.unknown())\n .describe('The configuration of an assistant.');\n\nexport const Assistant = z.object({\n assistant_id: z.string().uuid(),\n graph_id: z.string(),\n config: AssistantConfig,\n created_at: z.string(),\n updated_at: z.string(),\n metadata: z.object({}).catchall(z.any()),\n});\n\nexport const MetadataSchema = z\n .object({\n source: z.union([z.literal('input'), z.literal('loop'), z.literal('update'), z.string()]).optional(),\n step: z.number().optional(),\n writes: z.any().nullable().optional(),\n parents: z.any().optional(),\n })\n .catchall(z.unknown());\n\nexport const SendSchema = z.object({\n node: z.string(),\n input: z.unknown().optional(),\n});\n\nexport const CommandSchema = z.object({\n update: z\n .union([z.any(), z.array(z.tuple([z.string(), z.any()]))])\n .nullable()\n .optional(),\n resume: z.unknown().optional(),\n goto: z.union([SendSchema, z.array(SendSchema), z.string(), z.array(z.string())]).optional(),\n});\n\n// 公共的查询参数验证 schema\nexport const PaginationQuerySchema = z.object({\n limit: z.number().int().optional(),\n offset: z.number().int().optional(),\n});\n\nexport const ThreadIdParamSchema = z.object({\n thread_id: z.string().uuid(),\n});\n\nexport const RunIdParamSchema = z.object({\n thread_id: z.string().uuid(),\n run_id: z.string().uuid(),\n});\n\n// Assistants 相关的 schema\nexport const AssistantsSearchSchema = z.object({\n graph_id: z.string().optional(),\n metadata: MetadataSchema.optional(),\n limit: z.number().int().optional(),\n offset: z.number().int().optional(),\n});\n\nexport const AssistantGraphQuerySchema = z.object({\n xray: z.string().optional(),\n});\n\n// Runs 相关的 schema\nexport const RunStreamPayloadSchema = z\n .object({\n assistant_id: z.union([z.string().uuid(), z.string()]),\n checkpoint_id: z.string().optional(),\n input: z.any().optional(),\n command: CommandSchema.optional(),\n metadata: MetadataSchema.optional(),\n config: AssistantConfig.optional(),\n webhook: z.string().optional(),\n interrupt_before: z.union([z.literal('*'), z.array(z.string())]).optional(),\n interrupt_after: z.union([z.literal('*'), z.array(z.string())]).optional(),\n on_disconnect: z.enum(['cancel', 'continue']).optional().default('continue'),\n multitask_strategy: z.enum(['reject', 'rollback', 'interrupt', 'enqueue']).optional(),\n stream_mode: z\n .array(z.enum(['values', 'messages', 'messages-tuple', 'updates', 'events', 'debug', 'custom']))\n .optional(),\n stream_subgraphs: z.boolean().optional(),\n stream_resumable: z.boolean().optional(),\n after_seconds: z.number().optional(),\n if_not_exists: z.enum(['create', 'reject']).optional(),\n on_completion: z.enum(['complete', 'continue']).optional(),\n feedback_keys: z.array(z.string()).optional(),\n langsmith_tracer: z.unknown().optional(),\n })\n .describe('Payload for creating a stateful run.');\n\nexport const RunListQuerySchema = z.object({\n limit: z.coerce.number().int().optional(),\n offset: z.coerce.number().int().optional(),\n status: z.enum(['pending', 'running', 'error', 'success', 'timeout', 'interrupted']).optional(),\n});\n\nexport const RunCancelQuerySchema = z.object({\n wait: z.coerce.boolean().optional().default(false),\n action: z.enum(['interrupt', 'rollback']).optional().default('interrupt'),\n});\n\nexport const RunJoinStreamQuerySchema = z.object({\n cancel_on_disconnect: z.coerce.boolean().optional().default(false),\n last_event_id: z.string().optional(),\n stream_mode: z.enum(['values', 'messages', 'messages-tuple', 'updates', 'events', 'debug', 'custom']).optional(),\n});\n\n// Threads 相关的 schema\nexport const ThreadCreatePayloadSchema = z\n .object({\n thread_id: z.string().uuid().describe('The ID of the thread. If not provided, an ID is generated.').optional(),\n metadata: MetadataSchema.optional(),\n if_exists: z.union([z.literal('raise'), z.literal('do_nothing')]).optional(),\n })\n .describe('Payload for creating a thread.');\n\nexport const ThreadSearchPayloadSchema = z\n .object({\n metadata: MetadataSchema.describe('Metadata to search for.').optional(),\n status: z.enum(['idle', 'busy', 'interrupted', 'error']).describe('Filter by thread status.').optional(),\n values: z.any().describe('Filter by thread values.').optional(),\n limit: z.number().int().gte(1).lte(1000).describe('Maximum number to return.').optional(),\n offset: z.number().int().gte(0).describe('Offset to start from.').optional(),\n sort_by: z.enum(['thread_id', 'status', 'created_at', 'updated_at']).describe('Sort by field.').optional(),\n sort_order: z.enum(['asc', 'desc']).describe('Sort order.').optional(),\n })\n .describe('Payload for listing threads.');\n\nexport const ThreadStateUpdate = z\n .object({\n values: z.union([z.record(z.string(), z.unknown()), z.array(z.record(z.string(), z.unknown()))]).nullish(),\n // as_node: z.string().optional(),\n // checkpoint_id: z.string().optional(),\n // checkpoint: CheckpointSchema.nullish(),\n })\n .describe('Payload for adding state to a thread.');\n","import z from 'zod';\n\n/**\n * 解析 URL 路径参数\n */\nexport function parsePathParams(url: string, pattern: string): Record<string, string> {\n const patternParts = pattern.split('/').filter((p) => p);\n const urlParts = new URL(url).pathname.split('/').filter((p) => p);\n const params: Record<string, string> = {};\n\n patternParts.forEach((part, index) => {\n if (part.startsWith(':')) {\n const paramName = part.slice(1);\n params[paramName] = urlParts[index];\n }\n });\n\n return params;\n}\n\n/**\n * 解析查询参数并转换类型\n */\nexport function parseQueryParams(url: string): Record<string, string | number | boolean> {\n const searchParams = new URL(url).searchParams;\n const params: Record<string, string | number | boolean> = {};\n\n searchParams.forEach((value, key) => {\n // 尝试转换为数字\n if (!isNaN(Number(value)) && value !== '') {\n params[key] = Number(value);\n }\n // 尝试转换为布尔值\n else if (value === 'true' || value === 'false') {\n params[key] = value === 'true';\n }\n // 保持字符串\n else {\n params[key] = value;\n }\n });\n\n return params;\n}\n\n/**\n * 验证数据\n */\nexport function validate<T>(schema: z.ZodSchema<T>, data: unknown): T {\n const result = schema.safeParse(data);\n if (!result.success) {\n throw new ValidationError(result.error.issues);\n }\n return result.data;\n}\n\n/**\n * 验证错误\n */\nexport class ValidationError extends Error {\n public errors: z.ZodIssue[];\n\n constructor(errors: z.ZodIssue[]) {\n super('Validation failed');\n this.name = 'ValidationError';\n this.errors = errors;\n }\n}\n\n/**\n * 创建 JSON 响应\n */\nexport function jsonResponse(data: any, status = 200, headers?: Record<string, string>): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n}\n\n/**\n * 创建错误响应\n */\nexport function errorResponse(error: unknown, status = 500): Response {\n if (error instanceof ValidationError) {\n return jsonResponse(\n {\n error: 'Validation Error',\n details: error.errors,\n },\n 400,\n );\n }\n\n return jsonResponse(\n {\n error: error instanceof Error ? error.message : 'Unknown error',\n },\n status,\n );\n}\n\n/**\n * 创建 SSE 流响应\n */\nexport function createSSEStream(streamFn: (writer: SSEWriter) => Promise<void>): Response {\n let controller: ReadableStreamDefaultController<Uint8Array>;\n let isClosed = false;\n\n const stream = new ReadableStream<Uint8Array>({\n async start(ctrl) {\n controller = ctrl;\n const encoder = new TextEncoder();\n\n const writer: SSEWriter = {\n writeSSE: async ({ data, event, id }) => {\n // 检查流是否已关闭\n if (isClosed) {\n return;\n }\n\n try {\n let message = '';\n\n if (id) {\n message += `id: ${id}\\n`;\n }\n if (event) {\n message += `event: ${event}\\n`;\n }\n message += `data: ${data}\\n\\n`;\n\n controller.enqueue(encoder.encode(message));\n } catch (error) {\n // 忽略写入已关闭流的错误\n if (!isClosed) {\n throw error;\n }\n }\n },\n close: () => {\n if (!isClosed) {\n isClosed = true;\n try {\n controller.close();\n } catch (error) {\n // 流可能已经关闭\n }\n }\n },\n };\n\n try {\n await streamFn(writer);\n } catch (error) {\n console.error('SSE stream error:', error);\n } finally {\n if (!isClosed) {\n isClosed = true;\n try {\n controller.close();\n } catch (error) {\n // 流可能已经关闭\n }\n }\n }\n },\n cancel() {\n isClosed = true;\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n });\n}\n\nexport interface SSEWriter {\n writeSSE: (data: { data: string; event?: string; id?: string }) => Promise<void>;\n close: () => void;\n}\n\n/**\n * 为 SSE 流添加心跳功能\n */\nexport function withHeartbeat(\n streamFn: (writer: SSEWriter) => Promise<void>,\n heartbeatInterval: number = process.env.HEARTBEAT_INTERVAL ? parseInt(process.env.HEARTBEAT_INTERVAL) : 1500,\n): (writer: SSEWriter) => Promise<void> {\n return async (writer: SSEWriter) => {\n let heartbeatTimer: NodeJS.Timeout | null = null;\n\n const startHeartbeat = () => {\n if (heartbeatTimer) {\n clearInterval(heartbeatTimer);\n }\n heartbeatTimer = setInterval(async () => {\n try {\n await writer.writeSSE({ event: 'ping', data: '{}' });\n } catch (error) {\n if (heartbeatTimer) {\n clearInterval(heartbeatTimer);\n heartbeatTimer = null;\n }\n }\n }, heartbeatInterval);\n };\n\n const stopHeartbeat = () => {\n if (heartbeatTimer) {\n clearInterval(heartbeatTimer);\n heartbeatTimer = null;\n }\n };\n\n const proxiedWriter: SSEWriter = {\n writeSSE: async (data) => {\n stopHeartbeat();\n await writer.writeSSE(data);\n startHeartbeat();\n },\n close: () => {\n stopHeartbeat();\n writer.close();\n },\n };\n\n startHeartbeat();\n\n try {\n await streamFn(proxiedWriter);\n } finally {\n stopHeartbeat();\n }\n };\n}\n","import { client } from './endpoint';\nimport { AssistantsSearchSchema, AssistantGraphQuerySchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport { parseQueryParams, validate, jsonResponse, errorResponse } from './utils';\nimport { LangGraphServerContext } from './context';\n\n/**\n * POST /assistants/search\n */\nexport async function searchAssistants(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(AssistantsSearchSchema, body);\n\n const data = await client.assistants.search(camelcaseKeys(payload));\n\n return jsonResponse(data, 200, {\n 'X-Pagination-Total': '0',\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /assistants/:assistant_id/graph\n */\nexport async function getAssistantGraph(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const url = new URL(req.url);\n const pathParts = url.pathname.split('/').filter((p) => p);\n const assistant_id = pathParts[1]; // assistants/:assistant_id/graph\n\n const queryParams = parseQueryParams(req.url);\n const { xray } = validate(AssistantGraphQuerySchema, queryParams);\n\n const data = await client.assistants.getGraph(assistant_id, {\n xray: xray !== undefined ? xray === 'true' : undefined,\n });\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { client } from './endpoint';\nimport { ThreadIdParamSchema, ThreadCreatePayloadSchema, ThreadSearchPayloadSchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport { parsePathParams, validate, jsonResponse, errorResponse } from './utils';\nimport { LangGraphServerContext } from './context';\n\n/**\n * POST /threads\n */\nexport async function createThread(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(ThreadCreatePayloadSchema, body);\n\n const thread = await client.threads.create(camelcaseKeys(payload));\n\n return jsonResponse(thread);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/search\n */\nexport async function searchThreads(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(ThreadSearchPayloadSchema, body);\n\n const result = await client.threads.search(camelcaseKeys(payload));\n\n return jsonResponse(result, 200, {\n 'X-Pagination-Total': result.length.toString(),\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id\n */\nexport async function getThread(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const thread = await client.threads.get(thread_id);\n\n return jsonResponse(thread);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * DELETE /threads/:thread_id\n */\nexport async function deleteThread(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n await client.threads.delete(thread_id);\n\n return new Response(null, { status: 204 });\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { client } from './endpoint';\nimport {\n ThreadIdParamSchema,\n RunIdParamSchema,\n RunStreamPayloadSchema,\n RunListQuerySchema,\n RunCancelQuerySchema,\n RunJoinStreamQuerySchema,\n ThreadStateUpdate,\n} from '../zod';\nimport { serialiseAsDict } from '../../graph/stream';\nimport z from 'zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport {\n parsePathParams,\n parseQueryParams,\n validate,\n jsonResponse,\n errorResponse,\n createSSEStream,\n withHeartbeat,\n} from './utils';\nimport { LangGraphServerContext } from './context';\n\n/**\n * POST /threads/:thread_id/runs/stream\n */\nexport async function streamRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/stream');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const body = await req.json();\n const payload = validate(RunStreamPayloadSchema, body);\n\n return createSSEStream(\n withHeartbeat(async (writer) => {\n payload.config = payload.config || {};\n payload.config.configurable = payload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(payload.config.configurable, langgraphContext);\n }\n\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 writer.writeSSE({ data: serialiseAsDict(data) ?? '', event });\n }\n }),\n );\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/runs/:run_id/stream\n */\nexport async function joinRunStream(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/:run_id/stream');\n const { thread_id, run_id } = validate(RunIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const { cancel_on_disconnect, last_event_id, stream_mode } = validate(RunJoinStreamQuerySchema, queryParams);\n\n return createSSEStream(\n withHeartbeat(async (writer) => {\n const controller = new AbortController();\n\n if (cancel_on_disconnect) {\n const cleanup = () => {\n controller.abort('Client disconnected');\n };\n\n // 监听请求的 abort 信号\n req.signal?.addEventListener('abort', cleanup);\n }\n\n try {\n for await (const { event, data, id } of client.runs.joinStream(thread_id, run_id, {\n signal: controller.signal,\n cancelOnDisconnect: cancel_on_disconnect,\n lastEventId: last_event_id,\n streamMode: stream_mode ? [stream_mode] : undefined,\n })) {\n await writer.writeSSE({\n data: serialiseAsDict(data) ?? '',\n event: event as unknown as string,\n id,\n });\n }\n } catch (error) {\n if (!(error instanceof Error) || !error.message.includes('user cancel')) {\n console.error('Join stream error:', error);\n await writer.writeSSE({\n event: 'error',\n data: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n });\n }\n }\n }),\n );\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/runs\n */\nexport async function listRuns(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const { limit, offset, status } = validate(RunListQuerySchema, queryParams);\n\n const runs = await client.runs.list(thread_id, { limit, offset, status });\n\n return jsonResponse(runs);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/runs/:run_id/cancel\n */\nexport async function cancelRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/:run_id/cancel');\n const { thread_id, run_id } = validate(RunIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const { wait, action } = validate(RunCancelQuerySchema, queryParams);\n\n const cancel = client.runs.cancel(thread_id, run_id, wait, action);\n\n if (wait) {\n await cancel;\n }\n\n return new Response(null, { status: wait ? 204 : 202 });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/state\n */\nexport async function updateThreadState(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/state');\n const { thread_id } = validate(z.object({ thread_id: z.string().uuid() }), params);\n\n const body = await req.json();\n const payload = validate(ThreadStateUpdate, body);\n\n const inserted = await client.threads.updateState(thread_id, payload);\n\n return jsonResponse(inserted);\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { LangGraphGlobal } from '../../global';\nimport { searchAssistants, getAssistantGraph } from './assistants';\nimport { createThread, searchThreads, getThread, deleteThread } from './threads';\nimport { streamRun, joinRunStream, listRuns, cancelRun, updateThreadState } from './runs';\nimport { errorResponse } from './utils';\nimport type { LangGraphServerContext } from './context';\n/**\n * 路由匹配器\n */\ninterface Route {\n method: string;\n pattern: RegExp;\n handler: (req: Request, context: LangGraphServerContext) => Promise<Response>;\n}\n\nconst routes: Route[] = [\n // Assistants\n {\n method: 'POST',\n pattern: /^\\/assistants\\/search$/,\n handler: searchAssistants,\n },\n {\n method: 'GET',\n pattern: /^\\/assistants\\/[^/]+\\/graph$/,\n handler: getAssistantGraph,\n },\n\n // Threads\n {\n method: 'POST',\n pattern: /^\\/threads$/,\n handler: createThread,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/search$/,\n handler: searchThreads,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+$/,\n handler: getThread,\n },\n {\n method: 'DELETE',\n pattern: /^\\/threads\\/[^/]+$/,\n handler: deleteThread,\n },\n\n // Runs\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/stream$/,\n handler: streamRun,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+\\/stream$/,\n handler: joinRunStream,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs$/,\n handler: listRuns,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+\\/cancel$/,\n handler: cancelRun,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/state$/,\n handler: updateThreadState,\n },\n];\n\n/**\n * 主路由处理器\n */\nexport async function handleRequest(req: Request, context: LangGraphServerContext = {}): Promise<Response> {\n try {\n // 初始化全局配置\n await LangGraphGlobal.initGlobal();\n\n const url = new URL(req.url);\n const pathname = url.pathname;\n const method = req.method;\n\n // 查找匹配的路由\n for (const route of routes) {\n if (route.method === method && route.pattern.test(pathname)) {\n return await route.handler(req, context);\n }\n }\n\n // 未找到路由\n return new Response('Not Found', { status: 404 });\n } catch (error) {\n console.error('Request error:', error);\n return errorResponse(error);\n }\n}\n\n// 导出所有处理函数供直接使用\nexport * from './assistants';\nexport * from './threads';\nexport * from './runs';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-D1vhtuku.js","sources":["../src/adapter/fetch/endpoint.ts","../src/adapter/zod.ts","../src/adapter/fetch/utils.ts","../src/adapter/fetch/assistants.ts","../src/adapter/fetch/threads.ts","../src/adapter/fetch/runs.ts","../src/adapter/fetch/index.ts"],"sourcesContent":["import { createEndpoint } from '../../createEndpoint.js';\n\nexport const client = createEndpoint();\n","import z from 'zod';\n\nexport const AssistantConfigurable = z\n .object({\n thread_id: z.string().optional(),\n thread_ts: z.string().optional(),\n })\n .catchall(z.unknown());\n\nexport const AssistantConfig = z\n .object({\n tags: z.array(z.string()).optional(),\n recursion_limit: z.number().int().optional(),\n configurable: AssistantConfigurable.optional(),\n })\n .catchall(z.unknown())\n .describe('The configuration of an assistant.');\n\nexport const Assistant = z.object({\n assistant_id: z.string().uuid(),\n graph_id: z.string(),\n config: AssistantConfig,\n created_at: z.string(),\n updated_at: z.string(),\n metadata: z.object({}).catchall(z.any()),\n});\n\nexport const MetadataSchema = z\n .object({\n source: z.union([z.literal('input'), z.literal('loop'), z.literal('update'), z.string()]).optional(),\n step: z.number().optional(),\n writes: z.any().nullable().optional(),\n parents: z.any().optional(),\n })\n .catchall(z.unknown());\n\nexport const SendSchema = z.object({\n node: z.string(),\n input: z.unknown().optional(),\n});\n\nexport const CommandSchema = z.object({\n update: z\n .union([z.any(), z.array(z.tuple([z.string(), z.any()]))])\n .nullable()\n .optional(),\n resume: z.unknown().optional(),\n goto: z.union([SendSchema, z.array(SendSchema), z.string(), z.array(z.string())]).optional(),\n});\n\n// 公共的查询参数验证 schema\nexport const PaginationQuerySchema = z.object({\n limit: z.number().int().optional(),\n offset: z.number().int().optional(),\n});\n\nexport const ThreadIdParamSchema = z.object({\n thread_id: z.string().uuid(),\n});\n\nexport const RunIdParamSchema = z.object({\n thread_id: z.string().uuid(),\n run_id: z.string().uuid(),\n});\n\n// Assistants 相关的 schema\nexport const AssistantsSearchSchema = z.object({\n graph_id: z.string().optional(),\n metadata: MetadataSchema.optional(),\n limit: z.number().int().optional(),\n offset: z.number().int().optional(),\n});\n\nexport const AssistantGraphQuerySchema = z.object({\n xray: z.string().optional(),\n});\n\n// Runs 相关的 schema\nexport const RunStreamPayloadSchema = z\n .object({\n assistant_id: z.union([z.string().uuid(), z.string()]),\n checkpoint_id: z.string().optional(),\n input: z.any().optional(),\n command: CommandSchema.optional(),\n metadata: MetadataSchema.optional(),\n config: AssistantConfig.optional(),\n webhook: z.string().optional(),\n interrupt_before: z.union([z.literal('*'), z.array(z.string())]).optional(),\n interrupt_after: z.union([z.literal('*'), z.array(z.string())]).optional(),\n on_disconnect: z.enum(['cancel', 'continue']).optional().default('continue'),\n multitask_strategy: z.enum(['reject', 'rollback', 'interrupt', 'enqueue']).optional(),\n stream_mode: z\n .array(z.enum(['values', 'messages', 'messages-tuple', 'updates', 'events', 'debug', 'custom']))\n .optional(),\n stream_subgraphs: z.boolean().optional(),\n stream_resumable: z.boolean().optional(),\n after_seconds: z.number().optional(),\n if_not_exists: z.enum(['create', 'reject']).optional(),\n on_completion: z.enum(['complete', 'continue']).optional(),\n feedback_keys: z.array(z.string()).optional(),\n langsmith_tracer: z.unknown().optional(),\n })\n .describe('Payload for creating a stateful run.');\n\nexport const RunListQuerySchema = z.object({\n limit: z.coerce.number().int().optional(),\n offset: z.coerce.number().int().optional(),\n status: z.enum(['pending', 'running', 'error', 'success', 'timeout', 'interrupted']).optional(),\n});\n\nexport const RunCancelQuerySchema = z.object({\n wait: z.coerce.boolean().optional().default(false),\n action: z.enum(['interrupt', 'rollback']).optional().default('interrupt'),\n});\n\nexport const RunJoinStreamQuerySchema = z.object({\n cancel_on_disconnect: z.coerce.boolean().optional().default(false),\n last_event_id: z.string().optional(),\n stream_mode: z.enum(['values', 'messages', 'messages-tuple', 'updates', 'events', 'debug', 'custom']).optional(),\n});\n\n// Threads 相关的 schema\nexport const ThreadCreatePayloadSchema = z\n .object({\n thread_id: z.string().uuid().describe('The ID of the thread. If not provided, an ID is generated.').optional(),\n metadata: MetadataSchema.optional(),\n if_exists: z.union([z.literal('raise'), z.literal('do_nothing')]).optional(),\n })\n .describe('Payload for creating a thread.');\n\nexport const ThreadSearchPayloadSchema = z\n .object({\n metadata: MetadataSchema.describe('Metadata to search for.').optional(),\n status: z.enum(['idle', 'busy', 'interrupted', 'error']).describe('Filter by thread status.').optional(),\n values: z.any().describe('Filter by thread values.').optional(),\n limit: z.number().int().gte(1).lte(1000).describe('Maximum number to return.').optional(),\n offset: z.number().int().gte(0).describe('Offset to start from.').optional(),\n sort_by: z.enum(['thread_id', 'status', 'created_at', 'updated_at']).describe('Sort by field.').optional(),\n sort_order: z.enum(['asc', 'desc']).describe('Sort order.').optional(),\n })\n .describe('Payload for listing threads.');\n\nexport const ThreadStateUpdate = z\n .object({\n values: z.union([z.record(z.string(), z.unknown()), z.array(z.record(z.string(), z.unknown()))]).nullish(),\n // as_node: z.string().optional(),\n // checkpoint_id: z.string().optional(),\n // checkpoint: CheckpointSchema.nullish(),\n })\n .describe('Payload for adding state to a thread.');\n","import z from 'zod';\n\n/**\n * 解析 URL 路径参数\n */\nexport function parsePathParams(url: string, pattern: string): Record<string, string> {\n const patternParts = pattern.split('/').filter((p) => p);\n const urlParts = new URL(url).pathname.split('/').filter((p) => p);\n const params: Record<string, string> = {};\n\n patternParts.forEach((part, index) => {\n if (part.startsWith(':')) {\n const paramName = part.slice(1);\n params[paramName] = urlParts[index];\n }\n });\n\n return params;\n}\n\n/**\n * 解析查询参数并转换类型\n */\nexport function parseQueryParams(url: string): Record<string, string | number | boolean> {\n const searchParams = new URL(url).searchParams;\n const params: Record<string, string | number | boolean> = {};\n\n searchParams.forEach((value, key) => {\n // 尝试转换为数字\n if (!isNaN(Number(value)) && value !== '') {\n params[key] = Number(value);\n }\n // 尝试转换为布尔值\n else if (value === 'true' || value === 'false') {\n params[key] = value === 'true';\n }\n // 保持字符串\n else {\n params[key] = value;\n }\n });\n\n return params;\n}\n\n/**\n * 验证数据\n */\nexport function validate<T>(schema: z.ZodSchema<T>, data: unknown): T {\n const result = schema.safeParse(data);\n if (!result.success) {\n throw new ValidationError(result.error.issues);\n }\n return result.data;\n}\n\n/**\n * 验证错误\n */\nexport class ValidationError extends Error {\n public errors: z.ZodIssue[];\n\n constructor(errors: z.ZodIssue[]) {\n super('Validation failed');\n this.name = 'ValidationError';\n this.errors = errors;\n }\n}\n\n/**\n * 创建 JSON 响应\n */\nexport function jsonResponse(data: any, status = 200, headers?: Record<string, string>): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n}\n\n/**\n * 创建错误响应\n */\nexport function errorResponse(error: unknown, status = 500): Response {\n if (error instanceof ValidationError) {\n return jsonResponse(\n {\n error: 'Validation Error',\n details: error.errors,\n },\n 400,\n );\n }\n\n return jsonResponse(\n {\n error: error instanceof Error ? error.message : 'Unknown error',\n },\n status,\n );\n}\n\n/**\n * 创建 SSE 流响应\n */\nexport function createSSEStream(streamFn: (writer: SSEWriter) => Promise<void>): Response {\n let controller: ReadableStreamDefaultController<Uint8Array>;\n let isClosed = false;\n\n const stream = new ReadableStream<Uint8Array>({\n async start(ctrl) {\n controller = ctrl;\n const encoder = new TextEncoder();\n\n const writer: SSEWriter = {\n writeSSE: async ({ data, event, id }) => {\n // 检查流是否已关闭\n if (isClosed) {\n return;\n }\n\n try {\n let message = '';\n\n if (id) {\n message += `id: ${id}\\n`;\n }\n if (event) {\n message += `event: ${event}\\n`;\n }\n message += `data: ${data}\\n\\n`;\n\n controller.enqueue(encoder.encode(message));\n } catch (error) {\n // 忽略写入已关闭流的错误\n if (!isClosed) {\n throw error;\n }\n }\n },\n close: () => {\n if (!isClosed) {\n isClosed = true;\n try {\n controller.close();\n } catch (error) {\n // 流可能已经关闭\n }\n }\n },\n };\n\n try {\n await streamFn(writer);\n } catch (error) {\n console.error('SSE stream error:', error);\n } finally {\n if (!isClosed) {\n isClosed = true;\n try {\n controller.close();\n } catch (error) {\n // 流可能已经关闭\n }\n }\n }\n },\n cancel() {\n isClosed = true;\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n });\n}\n\nexport interface SSEWriter {\n writeSSE: (data: { data: string; event?: string; id?: string }) => Promise<void>;\n close: () => void;\n}\n\n/**\n * 为 SSE 流添加心跳功能\n */\nexport function withHeartbeat(\n streamFn: (writer: SSEWriter) => Promise<void>,\n heartbeatInterval: number = process.env.HEARTBEAT_INTERVAL ? parseInt(process.env.HEARTBEAT_INTERVAL) : 1500,\n): (writer: SSEWriter) => Promise<void> {\n return async (writer: SSEWriter) => {\n let heartbeatTimer: NodeJS.Timeout | null = null;\n\n const startHeartbeat = () => {\n if (heartbeatTimer) {\n clearInterval(heartbeatTimer);\n }\n heartbeatTimer = setInterval(async () => {\n try {\n await writer.writeSSE({ event: 'ping', data: '{}' });\n } catch (error) {\n if (heartbeatTimer) {\n clearInterval(heartbeatTimer);\n heartbeatTimer = null;\n }\n }\n }, heartbeatInterval);\n };\n\n const stopHeartbeat = () => {\n if (heartbeatTimer) {\n clearInterval(heartbeatTimer);\n heartbeatTimer = null;\n }\n };\n\n const proxiedWriter: SSEWriter = {\n writeSSE: async (data) => {\n stopHeartbeat();\n await writer.writeSSE(data);\n startHeartbeat();\n },\n close: () => {\n stopHeartbeat();\n writer.close();\n },\n };\n\n startHeartbeat();\n\n try {\n await streamFn(proxiedWriter);\n } finally {\n stopHeartbeat();\n }\n };\n}\n","import { client } from './endpoint';\nimport { AssistantsSearchSchema, AssistantGraphQuerySchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport { parseQueryParams, validate, jsonResponse, errorResponse } from './utils';\nimport { LangGraphServerContext } from './context';\n\n/**\n * POST /assistants/search\n */\nexport async function searchAssistants(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(AssistantsSearchSchema, body);\n\n const data = await client.assistants.search(camelcaseKeys(payload));\n\n return jsonResponse(data, 200, {\n 'X-Pagination-Total': '0',\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /assistants/:assistant_id/graph\n */\nexport async function getAssistantGraph(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const url = new URL(req.url);\n const pathParts = url.pathname.split('/').filter((p) => p);\n const assistant_id = pathParts[1]; // assistants/:assistant_id/graph\n\n const queryParams = parseQueryParams(req.url);\n const { xray } = validate(AssistantGraphQuerySchema, queryParams);\n\n const data = await client.assistants.getGraph(assistant_id, {\n xray: xray !== undefined ? xray === 'true' : undefined,\n });\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { client } from './endpoint';\nimport { ThreadIdParamSchema, ThreadCreatePayloadSchema, ThreadSearchPayloadSchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport { parsePathParams, validate, jsonResponse, errorResponse } from './utils';\nimport { LangGraphServerContext } from './context';\n\n/**\n * POST /threads\n */\nexport async function createThread(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(ThreadCreatePayloadSchema, body);\n\n const thread = await client.threads.create(camelcaseKeys(payload));\n\n return jsonResponse(thread);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/search\n */\nexport async function searchThreads(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(ThreadSearchPayloadSchema, body);\n\n const result = await client.threads.search(camelcaseKeys(payload));\n\n return jsonResponse(result, 200, {\n 'X-Pagination-Total': result.length.toString(),\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id\n */\nexport async function getThread(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const thread = await client.threads.get(thread_id);\n\n return jsonResponse(thread);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * DELETE /threads/:thread_id\n */\nexport async function deleteThread(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n await client.threads.delete(thread_id);\n\n return new Response(null, { status: 204 });\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { client } from './endpoint';\nimport {\n ThreadIdParamSchema,\n RunIdParamSchema,\n RunStreamPayloadSchema,\n RunListQuerySchema,\n RunCancelQuerySchema,\n RunJoinStreamQuerySchema,\n ThreadStateUpdate,\n} from '../zod';\nimport { serialiseAsDict } from '../../graph/stream';\nimport z from 'zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport {\n parsePathParams,\n parseQueryParams,\n validate,\n jsonResponse,\n errorResponse,\n createSSEStream,\n withHeartbeat,\n} from './utils';\nimport { LangGraphServerContext } from './context';\n\n/**\n * POST /threads/:thread_id/runs/stream\n */\nexport async function streamRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/stream');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const body = await req.json();\n const payload = validate(RunStreamPayloadSchema, body);\n\n return createSSEStream(\n withHeartbeat(async (writer) => {\n payload.config = payload.config || {};\n payload.config.configurable = payload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(payload.config.configurable, langgraphContext);\n }\n\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 writer.writeSSE({ data: serialiseAsDict(data) ?? '', event });\n }\n }),\n );\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/runs/:run_id/stream\n */\nexport async function joinRunStream(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/:run_id/stream');\n const { thread_id, run_id } = validate(RunIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const { cancel_on_disconnect, last_event_id, stream_mode } = validate(RunJoinStreamQuerySchema, queryParams);\n\n return createSSEStream(\n withHeartbeat(async (writer) => {\n const controller = new AbortController();\n\n if (cancel_on_disconnect) {\n const cleanup = () => {\n controller.abort('Client disconnected');\n };\n\n // 监听请求的 abort 信号\n req.signal?.addEventListener('abort', cleanup);\n }\n\n try {\n for await (const { event, data, id } of client.runs.joinStream(thread_id, run_id, {\n signal: controller.signal,\n cancelOnDisconnect: cancel_on_disconnect,\n lastEventId: last_event_id,\n streamMode: stream_mode ? [stream_mode] : undefined,\n })) {\n await writer.writeSSE({\n data: serialiseAsDict(data) ?? '',\n event: event as unknown as string,\n id,\n });\n }\n } catch (error) {\n if (!(error instanceof Error) || !error.message.includes('user cancel')) {\n console.error('Join stream error:', error);\n await writer.writeSSE({\n event: 'error',\n data: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n });\n }\n }\n }),\n );\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/runs\n */\nexport async function listRuns(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const { limit, offset, status } = validate(RunListQuerySchema, queryParams);\n\n const runs = await client.runs.list(thread_id, { limit, offset, status });\n\n return jsonResponse(runs);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/runs/:run_id/cancel\n */\nexport async function cancelRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/:run_id/cancel');\n const { thread_id, run_id } = validate(RunIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const { wait, action } = validate(RunCancelQuerySchema, queryParams);\n\n const cancel = client.runs.cancel(thread_id, run_id, wait, action);\n\n if (wait) {\n await cancel;\n }\n\n return new Response(null, { status: wait ? 204 : 202 });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/state\n */\nexport async function updateThreadState(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/state');\n const { thread_id } = validate(z.object({ thread_id: z.string().uuid() }), params);\n\n const body = await req.json();\n const payload = validate(ThreadStateUpdate, body);\n\n const inserted = await client.threads.updateState(thread_id, payload);\n\n return jsonResponse(inserted);\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { LangGraphGlobal } from '../../global';\nimport { searchAssistants, getAssistantGraph } from './assistants';\nimport { createThread, searchThreads, getThread, deleteThread } from './threads';\nimport { streamRun, joinRunStream, listRuns, cancelRun, updateThreadState } from './runs';\nimport { errorResponse } from './utils';\nimport type { LangGraphServerContext } from './context';\n/**\n * 路由匹配器\n */\ninterface Route {\n method: string;\n pattern: RegExp;\n handler: (req: Request, context: LangGraphServerContext) => Promise<Response>;\n}\n\nconst routes: Route[] = [\n // Assistants\n {\n method: 'POST',\n pattern: /^\\/assistants\\/search$/,\n handler: searchAssistants,\n },\n {\n method: 'GET',\n pattern: /^\\/assistants\\/[^/]+\\/graph$/,\n handler: getAssistantGraph,\n },\n\n // Threads\n {\n method: 'POST',\n pattern: /^\\/threads$/,\n handler: createThread,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/search$/,\n handler: searchThreads,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+$/,\n handler: getThread,\n },\n {\n method: 'DELETE',\n pattern: /^\\/threads\\/[^/]+$/,\n handler: deleteThread,\n },\n\n // Runs\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/stream$/,\n handler: streamRun,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+\\/stream$/,\n handler: joinRunStream,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs$/,\n handler: listRuns,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+\\/cancel$/,\n handler: cancelRun,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/state$/,\n handler: updateThreadState,\n },\n];\n\nconst replaceRequest = (req: Request) => {\n const path = new URL(req.url).pathname.toString();\n let basePath = '';\n if (path.includes('/threads')) {\n basePath = path.split('/threads')[0];\n } else if (path.includes('/assistants')) {\n basePath = path.split('/assistants')[0];\n }\n return new Request(req.url.replace(basePath, ''), {\n method: req.method,\n headers: req.headers,\n body: req.body,\n duplex: req.duplex,\n });\n};\n\n/**\n * 主路由处理器\n */\nexport async function handleRequest(req: Request, context: LangGraphServerContext = {}): Promise<Response> {\n req = replaceRequest(req);\n try {\n // 初始化全局配置\n await LangGraphGlobal.initGlobal();\n\n const url = new URL(req.url);\n const pathname = url.pathname;\n const method = req.method;\n\n // 查找匹配的路由\n for (const route of routes) {\n if (route.method === method && route.pattern.test(pathname)) {\n return await route.handler(req, context);\n }\n }\n\n // 未找到路由\n return new Response('Not Found', { status: 404 });\n } catch (error) {\n console.error('Request error:', error);\n return errorResponse(error);\n }\n}\n\n// 导出所有处理函数供直接使用\nexport * from './assistants';\nexport * from './threads';\nexport * from './runs';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h as handleRequest } from './index-
|
|
1
|
+
import { h as handleRequest } from './index-D1vhtuku.js';
|
|
2
2
|
|
|
3
3
|
function extractContext(req) {
|
|
4
4
|
const langgraphContextHeader = req.headers.get("x-langgraph-context");
|
|
@@ -27,4 +27,4 @@ async function DELETE(req) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export { DELETE, GET, POST };
|
|
30
|
-
//# sourceMappingURL=router-
|
|
30
|
+
//# sourceMappingURL=router-CUCtgsPJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-
|
|
1
|
+
{"version":3,"file":"router-CUCtgsPJ.js","sources":["../src/adapter/nextjs/router.ts"],"sourcesContent":["/** @ts-ignore */\nimport { NextRequest } from 'next/server';\nimport { handleRequest } from '../fetch';\n\n/**\n * 从 NextRequest 提取 langgraph context\n */\nfunction extractContext(req: NextRequest) {\n const langgraphContextHeader = req.headers.get('x-langgraph-context');\n if (langgraphContextHeader) {\n try {\n return {\n langgraph_context: JSON.parse(decodeURIComponent(langgraphContextHeader)),\n };\n } catch (error) {\n console.error('Failed to parse x-langgraph-context header:', error);\n }\n }\n return {};\n}\n\n// 统一路由处理器\nexport async function GET(req: NextRequest) {\n const context = extractContext(req);\n return await handleRequest(req, context);\n}\n\nexport async function POST(req: NextRequest) {\n const context = extractContext(req);\n return await handleRequest(req, context);\n}\n\nexport async function DELETE(req: NextRequest) {\n const context = extractContext(req);\n return await handleRequest(req, context);\n}\n"],"names":[],"mappings":";;AAOA,SAAS,eAAe,GAAA,EAAkB;AACtC,EAAA,MAAM,sBAAA,GAAyB,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA;AACpE,EAAA,IAAI,sBAAA,EAAwB;AACxB,IAAA,IAAI;AACA,MAAA,OAAO;AAAA,QACH,iBAAA,EAAmB,IAAA,CAAK,KAAA,CAAM,kBAAA,CAAmB,sBAAsB,CAAC;AAAA,OAC5E;AAAA,IACJ,SAAS,KAAA,EAAO;AACZ,MAAA,OAAA,CAAQ,KAAA,CAAM,+CAA+C,KAAK,CAAA;AAAA,IACtE;AAAA,EACJ;AACA,EAAA,OAAO,EAAC;AACZ;AAGA,eAAsB,IAAI,GAAA,EAAkB;AACxC,EAAA,MAAM,OAAA,GAAU,eAAe,GAAG,CAAA;AAClC,EAAA,OAAO,MAAM,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA;AAC3C;AAEA,eAAsB,KAAK,GAAA,EAAkB;AACzC,EAAA,MAAM,OAAA,GAAU,eAAe,GAAG,CAAA;AAClC,EAAA,OAAO,MAAM,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA;AAC3C;AAEA,eAAsB,OAAO,GAAA,EAAkB;AAC3C,EAAA,MAAM,OAAA,GAAU,eAAe,GAAG,CAAA;AAClC,EAAA,OAAO,MAAM,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA;AAC3C;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langgraph-js/pure-graph",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.2",
|
|
4
4
|
"description": "A library that provides a standard LangGraph endpoint for integrating into various frameworks like Next.js and Hono.js, with support for multiple storage backends (SQLite, PostgreSQL, Redis) and message queues.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|