@langgraph-js/pure-graph 2.8.1 → 3.0.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/fetch/assistants.d.ts +42 -0
- package/dist/adapter/fetch/endpoint.d.ts +25 -0
- package/dist/adapter/fetch/index.d.ts +5 -3
- package/dist/adapter/fetch/index.js +858 -25
- package/dist/adapter/fetch/index.js.map +1 -1
- package/dist/adapter/fetch/runs-extended.d.ts +21 -0
- package/dist/adapter/fetch/runs-stateless.d.ts +28 -0
- package/dist/adapter/fetch/runs.d.ts +0 -4
- package/dist/adapter/fetch/threads.d.ts +36 -0
- package/dist/adapter/nextjs/index.js +1 -1
- package/dist/adapter/zod.d.ts +292 -1
- package/dist/agents/ask_subagents.d.ts +32 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/createEndpoint-BViLxrhh.js +208 -0
- package/dist/createEndpoint-BViLxrhh.js.map +1 -0
- package/dist/createEndpoint.d.ts +25 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +75 -17
- package/dist/index.js.map +1 -1
- package/dist/queue/stream_queue.d.ts +4 -4
- package/dist/queue-CtVch_az.js +153 -0
- package/dist/queue-CtVch_az.js.map +1 -0
- package/dist/remote/index.js +158 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/remote-threads-CrG03ZS7.js +255 -0
- package/dist/remote-threads-CrG03ZS7.js.map +1 -0
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/kysely/index.d.ts +1 -0
- package/dist/storage/kysely/remote-threads.d.ts +124 -0
- package/dist/storage/kysely/threads.d.ts +26 -2
- package/dist/storage/kysely/types.d.ts +10 -0
- package/dist/storage/memory/queue.d.ts +1 -1
- package/dist/storage/memory/threads.d.ts +27 -1
- package/dist/storage/redis/queue.d.ts +15 -12
- package/dist/storage/remote/fetch.d.ts +20 -0
- package/dist/storage/remote/remote-server.d.ts +17 -0
- package/dist/storage/remote/server.d.ts +11 -0
- package/dist/storage/remote/types.d.ts +121 -0
- package/dist/{stream-B7KiKwj1.js → stream-umoA6h4q.js} +513 -77
- package/dist/stream-umoA6h4q.js.map +1 -0
- package/dist/threads/index.d.ts +25 -1
- package/dist/types.d.ts +53 -1
- package/package.json +11 -5
- package/dist/createEndpoint-BsPsukFX.js +0 -122
- package/dist/createEndpoint-BsPsukFX.js.map +0 -1
- package/dist/queue-BSCnCent.js +0 -134
- package/dist/queue-BSCnCent.js.map +0 -1
- package/dist/stream-B7KiKwj1.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.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().default(10),\n offset: z.coerce.number().int().optional().default(0),\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 without_details: z.boolean().describe('Whether to return values.').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
|
+
{"version":3,"file":"index.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/runs-extended.ts","../../../src/adapter/fetch/runs-stateless.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(),\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(),\n});\n\nexport const RunIdParamSchema = z.object({\n thread_id: z.string(),\n run_id: z.string(),\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 sort_by: z.enum(['assistant_id', 'graph_id', 'name', 'created_at', 'updated_at']).optional(),\n sort_order: z.enum(['asc', 'desc']).optional(),\n});\n\nexport const AssistantCountSchema = z.object({\n graph_id: z.string().optional(),\n metadata: MetadataSchema.optional(),\n});\n\nexport const AssistantGraphQuerySchema = z.object({\n xray: z.union([z.string(), z.boolean(), z.number()]).optional(),\n});\n\nexport const AssistantPatchSchema = z\n .object({\n name: z.string().optional(),\n description: z.string().optional(),\n metadata: MetadataSchema.optional(),\n config: AssistantConfig.optional(),\n })\n .optional();\n\nexport const AssistantCreateSchema = z.object({\n assistant_id: z.string().optional(),\n graph_id: z.string().describe('The ID of graph to create an assistant from.'),\n name: z.string().optional(),\n description: z.string().optional(),\n metadata: MetadataSchema.optional(),\n config: AssistantConfig.optional(),\n if_exists: z.enum(['raise', 'do_nothing']).optional(),\n});\n\n// Runs 相关的 schema\nexport const RunStreamPayloadSchema = z\n .object({\n assistant_id: z.union([z.string(), 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().default(10),\n offset: z.coerce.number().int().optional().default(0),\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().describe('The ID of 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 ids: z.array(z.string()).describe('List of thread IDs to include. Others are excluded.').optional(),\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 select: z\n .array(\n z.enum([\n 'thread_id',\n 'created_at',\n 'updated_at',\n 'metadata',\n 'config',\n 'context',\n 'status',\n 'values',\n 'interrupts',\n ]),\n )\n .describe('Specify which fields to return. If not provided, all fields are returned.')\n .optional(),\n without_details: z.boolean().describe('Whether to return values.').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\nexport const ThreadPatchSchema = z\n .object({\n metadata: MetadataSchema.optional(),\n status: z.enum(['idle', 'busy', 'interrupted', 'error']).optional(),\n values: z.any().optional(),\n })\n .describe('Payload for patching a thread.');\n\nexport const RunCreateSchema = z\n .object({\n assistant_id: z.string(),\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 run (background/wait).');\n\nexport const RunWaitQuerySchema = z.object({\n cancel_on_disconnect: z.coerce.boolean().optional().default(false),\n});\n\nexport const RunJoinQuerySchema = z.object({\n cancel_on_disconnect: z.coerce.boolean().optional().default(false),\n});\n\n// Stateless Runs 相关的 schema\nexport const RunCreateStatelessSchema = z\n .object({\n assistant_id: z.string().describe('The assistant ID or graph name to run.'),\n input: z.any().optional().describe('The input to the graph.'),\n command: CommandSchema.optional(),\n metadata: MetadataSchema.optional().describe('Metadata to assign to the run.'),\n config: AssistantConfig.optional(),\n context: z.object({}).catchall(z.any()).optional().describe('Static context added to the assistant.'),\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 stream_mode: z\n .union([\n z.enum(['values', 'messages', 'messages-tuple', 'tasks', 'checkpoints', 'updates', 'events', 'debug', 'custom']),\n z.array(z.enum(['values', 'messages', 'messages-tuple', 'tasks', 'checkpoints', 'updates', 'events', 'debug', 'custom'])),\n ])\n .optional()\n .default(['values']),\n feedback_keys: z.array(z.string()).optional(),\n stream_subgraphs: z.boolean().optional().default(false),\n stream_resumable: z.boolean().optional().default(false),\n })\n .describe('Payload for creating a stateless run.');\n\nexport const RunBatchCreateSchema = z\n .array(RunCreateStatelessSchema)\n .min(1)\n .describe('Payload for creating a batch of stateless runs.');\n\nexport const RunsCancelQuerySchema = z.object({\n action: z.enum(['interrupt', 'rollback']).optional().default('interrupt').describe('Action to take when cancelling the run.'),\n wait: z.coerce.boolean().optional().default(false),\n});\n\nexport const RunsCancelSchema = z.union([\n z.object({\n status: z.enum(['pending', 'running', 'all']).describe('Filter runs by status to cancel.'),\n }),\n z.object({\n thread_id: z.string().describe('The ID of the thread containing runs to cancel.'),\n }),\n z.object({\n run_ids: z.array(z.string()).min(1).describe('List of run IDs to cancel.'),\n }),\n]);\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 {\n AssistantsSearchSchema,\n AssistantGraphQuerySchema,\n AssistantCountSchema,\n AssistantPatchSchema,\n AssistantCreateSchema,\n} from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport { parseQueryParams, validate, jsonResponse, errorResponse, parsePathParams } 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 * POST /assistants/count\n */\nexport async function countAssistants(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(AssistantCountSchema, body);\n\n const data = await client.assistants.count(camelcaseKeys(payload));\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /assistants/:assistant_id\n */\nexport async function getAssistant(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\n\n const data = await client.assistants.get(assistant_id);\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * DELETE /assistants/:assistant_id\n */\nexport async function deleteAssistant(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\n\n await client.assistants.delete(assistant_id);\n\n return jsonResponse({});\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * PATCH /assistants/:assistant_id\n */\nexport async function patchAssistant(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\n\n const body = await req.json();\n const payload = validate(AssistantPatchSchema, body);\n\n const data = await client.assistants.update(\n assistant_id,\n /** @ts-ignore */\n camelcaseKeys(payload),\n );\n\n return jsonResponse(data);\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\n/**\n * GET /assistants/:assistant_id/subgraphs\n * ⚠️ 此端点尚未实现\n */\nexport async function getAssistantSubgraphs(req: Request, context: LangGraphServerContext): Promise<Response> {\n return errorResponse(\n {\n error: 'Not Implemented',\n details: ['Subgraphs endpoint is not yet supported.'],\n },\n 501,\n );\n}\n\n/**\n * GET /assistants/:assistant_id/subgraphs/:namespace\n * ⚠️ 此端点尚未实现\n */\nexport async function getAssistantSubgraphsByNamespace(\n req: Request,\n context: LangGraphServerContext,\n): Promise<Response> {\n return errorResponse(\n {\n error: 'Not Implemented',\n details: ['Subgraphs by namespace endpoint is not yet supported.'],\n },\n 501,\n );\n}\n\n/**\n * GET /assistants/:assistant_id/schemas\n */\nexport async function getAssistantSchemas(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/schemas\n\n const data = await client.assistants.getSchemas(assistant_id);\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /assistants/:assistant_id/versions\n */\nexport async function getAssistantVersions(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/versions\n\n const body = await req.json();\n const payload = validate(AssistantPatchSchema, body); // Reuse pagination schema\n\n const data = await client.assistants.getVersions(\n assistant_id,\n /** @ts-ignore */\n camelcaseKeys(payload),\n );\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /assistants/:assistant_id/latest\n */\nexport async function setLatestAssistantVersion(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/latest\n\n const queryParams = parseQueryParams(req.url);\n const version = queryParams.version ? parseInt(queryParams.version as string) : 1;\n\n const data = await client.assistants.setLatest(assistant_id, version);\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /assistants\n */\nexport async function createAssistant(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(AssistantCreateSchema, body);\n\n const data = await client.assistants.create(camelcaseKeys(payload));\n\n return jsonResponse(data);\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { client } from './endpoint';\nimport { ThreadIdParamSchema, ThreadCreatePayloadSchema, ThreadSearchPayloadSchema, ThreadPatchSchema, MetadataSchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport { parsePathParams, validate, jsonResponse, errorResponse, parseQueryParams } 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 * POST /threads/count\n */\nexport async function countThreads(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(ThreadSearchPayloadSchema.partial(), body);\n\n const count = await client.threads.count(camelcaseKeys(payload as any));\n\n return jsonResponse(count);\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 * PATCH /threads/:thread_id\n */\nexport async function patchThread(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 body = await req.json();\n const payload = validate(ThreadPatchSchema, body);\n\n const thread = await client.threads.patch(thread_id, camelcaseKeys(payload));\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\n/**\n * GET /threads/:thread_id/state\n */\nexport async function getThreadState(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/state');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const options = {\n subgraphs: queryParams.subgraphs === 'true' || queryParams.subgraphs === true,\n };\n\n const state = await client.threads.getState(thread_id, options);\n\n return jsonResponse(state);\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(ThreadIdParamSchema, params);\n\n const body = await req.json() as { values?: unknown };\n\n const result = await client.threads.updateState(thread_id, camelcaseKeys(body));\n\n return jsonResponse(result);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/state/checkpoint\n */\nexport async function getThreadStateAtCheckpoint(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/state/checkpoint');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const body = await req.json() as { checkpoint_id?: string };\n const queryParams = parseQueryParams(req.url);\n const options = {\n subgraphs: queryParams.subgraphs === 'true' || queryParams.subgraphs === true,\n ...body,\n };\n\n const state = await client.threads.getState(thread_id, options);\n\n return jsonResponse(state);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/history\n */\nexport async function getThreadHistory(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/history');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const options = {\n limit: queryParams.limit ? parseInt(queryParams.limit as string, 10) : undefined,\n before: queryParams.before as string | undefined,\n };\n\n const history = await client.threads.getStateHistory(thread_id, options);\n\n return jsonResponse(history);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/history\n */\nexport async function getThreadHistoryPost(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/history');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const body = await req.json() as { limit?: number; before?: string };\n const options = {\n limit: body.limit,\n before: body.before,\n };\n\n const history = await client.threads.getStateHistory(thread_id, options);\n\n return jsonResponse(history);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/copy\n */\nexport async function copyThread(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/copy');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const copiedThread = await client.threads.copy(thread_id);\n\n return jsonResponse(copiedThread);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/stream\n */\nexport async function joinThreadStream(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/stream');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const options = {\n lastEventId: req.headers.get('Last-Event-ID') || queryParams.last_event_id as string | undefined,\n streamModes: queryParams.stream_modes\n ? Array.isArray(queryParams.stream_modes)\n ? queryParams.stream_modes\n : [queryParams.stream_modes as string]\n : undefined,\n };\n\n // For now, return a simple response indicating stream endpoint exists\n // Full SSE implementation would be more complex\n return new Response('data: {\"status\": \"stream_ready\"}\\n\\n', {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n 'Connection': 'keep-alive',\n },\n });\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} from '../zod';\nimport { serialiseAsDict } from '../../graph/stream';\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","import { client } from './endpoint';\nimport { ThreadIdParamSchema, RunIdParamSchema, RunCreateSchema, RunWaitQuerySchema, RunJoinQuerySchema } 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';\nimport { getGraph } from '../../utils/getGraph';\nimport { streamState } from '../../graph/stream';\n\n/**\n * POST /threads/:thread_id/runs\n */\nexport async function createRun(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 body = await req.json();\n const payload = validate(RunCreateSchema, body);\n\n const camelPayload = camelcaseKeys(payload) as any;\n camelPayload.config = camelPayload.config || {};\n camelPayload.config.configurable = camelPayload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(camelPayload.config.configurable, langgraphContext);\n }\n\n // 确保 graph_id 在 configurable 中\n camelPayload.config.configurable.graph_id = payload.assistant_id;\n camelPayload.config.configurable.thread_id = thread_id;\n\n // 创建 Run 对象\n const threads = client.threads;\n const run = await threads.createRun(thread_id, payload.assistant_id, camelPayload);\n\n // 异步执行图的流处理(不等待)\n // 使用一个不返回的 Promise 来触发异步执行\n (async () => {\n try {\n for await (const _ of streamState(threads, run, camelPayload, {\n attempt: 0,\n getGraph,\n })) {\n // 消费流但不做任何事\n }\n } catch (error) {\n console.error('Background run error:', error);\n }\n })();\n\n return jsonResponse(run, 200, {\n 'Content-Location': `/threads/${thread_id}/runs/${run.run_id}`,\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /threads/:thread_id/runs/wait\n */\nexport async function waitRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/wait');\n const { thread_id } = validate(ThreadIdParamSchema, params);\n\n const body = await req.json();\n const payload = validate(RunCreateSchema, body);\n\n const queryParams = parseQueryParams(req.url);\n const { cancel_on_disconnect } = validate(RunWaitQuerySchema, queryParams);\n\n const camelPayload = camelcaseKeys(payload) as any;\n camelPayload.config = camelPayload.config || {};\n camelPayload.config.configurable = camelPayload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(camelPayload.config.configurable, langgraphContext);\n }\n\n // 确保 graph_id 在 configurable 中\n camelPayload.config.configurable.graph_id = payload.assistant_id;\n camelPayload.config.configurable.thread_id = thread_id;\n\n // 创建 Run 对象并执行流处理,等待完成\n const threads = client.threads;\n const run = await threads.createRun(thread_id, payload.assistant_id, camelPayload);\n\n // 执行流处理并等待完成,收集最终的 state values\n const stateValues: any = {};\n for await (const { event, data } of streamState(threads, run, camelPayload, {\n attempt: 0,\n getGraph,\n })) {\n // 收集最终的 state values\n if (event === 'end' || event === 'writes/value') {\n if (data && typeof data === 'object') {\n Object.assign(stateValues, data);\n }\n }\n }\n\n return jsonResponse(stateValues, 200, {\n 'Content-Location': `/threads/${thread_id}/runs/${run.run_id}`,\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/runs/:run_id\n */\nexport async function getRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/:run_id');\n const { thread_id, run_id } = validate(RunIdParamSchema, params);\n\n // 列出所有运行,找到指定的运行\n const runs = await client.runs.list(thread_id, { limit: 1000 }); // 使用较大的 limit\n const run = runs.find((r) => r.run_id === run_id);\n\n if (!run) {\n return errorResponse(new Error('Run not found'), 404);\n }\n\n return jsonResponse(run);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * DELETE /threads/:thread_id/runs/:run_id\n */\nexport async function deleteRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/:run_id');\n const { thread_id, run_id } = validate(RunIdParamSchema, params);\n\n // 通过 ThreadsManager 的 updateRun 方法将运行标记为已删除\n // 注意:实际的删除逻辑需要在 BaseThreadsManager 中实现\n await client.threads.updateRun(run_id, { status: 'deleted' } as any);\n\n return new Response(null, { status: 204 });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * GET /threads/:thread_id/runs/:run_id/join\n */\nexport async function joinRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const params = parsePathParams(req.url, '/threads/:thread_id/runs/:run_id/join');\n const { thread_id, run_id } = validate(RunIdParamSchema, params);\n\n const queryParams = parseQueryParams(req.url);\n const { cancel_on_disconnect } = validate(RunJoinQuerySchema, queryParams);\n\n // 获取运行信息\n const runs = await client.runs.list(thread_id, { limit: 1000 });\n const run = runs.find((r) => r.run_id === run_id);\n\n if (!run) {\n return errorResponse(new Error('Run not found'), 404);\n }\n\n // 如果运行已完成,返回空\n if (run.status === 'success' || run.status === 'error') {\n return jsonResponse({});\n }\n\n // 使用 joinStream 等待运行完成\n const controller = new AbortController();\n\n if (cancel_on_disconnect) {\n const cleanup = () => {\n controller.abort('Client disconnected');\n };\n req.signal?.addEventListener('abort', cleanup);\n }\n\n // 等待运行完成\n const stateValues: any = {};\n for await (const { event, data } of client.runs.joinStream(thread_id, run_id, {\n signal: controller.signal,\n cancelOnDisconnect: cancel_on_disconnect,\n })) {\n if (event.event === 'end' || event.event === 'writes/value') {\n if (data && typeof data === 'object') {\n Object.assign(stateValues, data);\n }\n }\n }\n\n return jsonResponse(stateValues);\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { client } from './endpoint';\nimport { RunCreateStatelessSchema, RunBatchCreateSchema, RunsCancelSchema, RunsCancelQuerySchema } from '../zod';\nimport camelcaseKeys from 'camelcase-keys';\nimport { validate, errorResponse, jsonResponse, createSSEStream, withHeartbeat } from './utils';\nimport { LangGraphServerContext } from './context';\nimport { getGraph } from '../../utils/getGraph';\nimport { streamState } from '../../graph/stream';\n\n/**\n * POST /runs - Create Background Run (Stateless)\n * Create a run in a new thread, return run ID immediately.\n * Don't wait for final run output.\n */\nexport async function createStatelessRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(RunCreateStatelessSchema, body);\n\n const camelPayload = camelcaseKeys(payload) as any;\n camelPayload.config = camelPayload.config || {};\n camelPayload.config.configurable = camelPayload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(camelPayload.config.configurable, langgraphContext);\n }\n\n // Create a temporary thread for stateless run\n const threads = client.threads;\n const thread = await threads.create({\n metadata: { ...camelPayload.metadata, temporary: true },\n });\n\n // Ensure graph_id and thread_id in configurable\n camelPayload.config.configurable.graph_id = payload.assistant_id;\n camelPayload.config.configurable.thread_id = thread.thread_id;\n // Mark as temporary (no state persistence)\n camelPayload.temporary = true;\n\n // Create Run object\n const run = await threads.createRun(thread.thread_id, payload.assistant_id, camelPayload);\n\n // Execute the graph stream in background (don't wait)\n (async () => {\n try {\n for await (const _ of streamState(threads, run, camelPayload, {\n attempt: 0,\n getGraph,\n })) {\n // Consume the stream without doing anything\n }\n } catch (error) {\n console.error('Stateless run error:', error);\n } finally {\n // Clean up temporary thread after completion\n try {\n await threads.delete(thread.thread_id);\n } catch (e) {\n console.error('Error cleaning up temporary thread:', e);\n }\n }\n })();\n\n return jsonResponse(run, 200, {\n 'Content-Location': `/threads/${thread.thread_id}/runs/${run.run_id}`,\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /runs/stream - Create Run, Stream Output (Stateless)\n * Create a run in a new thread and stream the output.\n */\nexport async function streamStatelessRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(RunCreateStatelessSchema, body);\n\n const camelPayload = camelcaseKeys(payload) as any;\n camelPayload.config = camelPayload.config || {};\n camelPayload.config.configurable = camelPayload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(camelPayload.config.configurable, langgraphContext);\n }\n\n // Create a temporary thread for stateless run\n const threads = client.threads;\n const thread = await threads.create({\n metadata: { ...camelPayload.metadata, temporary: true },\n });\n\n // Ensure graph_id and thread_id in configurable\n camelPayload.config.configurable.graph_id = payload.assistant_id;\n camelPayload.config.configurable.thread_id = thread.thread_id;\n camelPayload.temporary = true;\n\n // Create Run object\n const run = await threads.createRun(thread.thread_id, payload.assistant_id, camelPayload);\n\n return createSSEStream(\n withHeartbeat(async (writer) => {\n try {\n for await (const event of streamState(threads, run, camelPayload, {\n attempt: 0,\n getGraph,\n })) {\n await writer.writeSSE({ data: JSON.stringify(event), event: 'data' });\n }\n } catch (error: unknown) {\n if (error instanceof Error && error.name !== 'AbortError') {\n console.error('Stream error:', error);\n throw error;\n }\n } finally {\n // Clean up temporary thread after completion\n try {\n await threads.delete(thread.thread_id);\n } catch (e) {\n console.error('Error cleaning up temporary thread:', e);\n }\n }\n }),\n );\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /runs/wait - Create Run, Wait for Output (Stateless)\n * Create a run in a new thread. Wait for the final output and then return it.\n */\nexport async function waitStatelessRun(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(RunCreateStatelessSchema, body);\n\n const camelPayload = camelcaseKeys(payload) as any;\n camelPayload.config = camelPayload.config || {};\n camelPayload.config.configurable = camelPayload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(camelPayload.config.configurable, langgraphContext);\n }\n\n // Create a temporary thread for stateless run\n const threads = client.threads;\n const thread = await threads.create({\n metadata: { ...camelPayload.metadata, temporary: true },\n });\n\n // Ensure graph_id and thread_id in configurable\n camelPayload.config.configurable.graph_id = payload.assistant_id;\n camelPayload.config.configurable.thread_id = thread.thread_id;\n camelPayload.temporary = true;\n\n // Create Run object\n const run = await threads.createRun(thread.thread_id, payload.assistant_id, camelPayload);\n\n // Execute the graph stream and wait for completion\n const stateValues: any = {};\n try {\n for await (const { event, data } of streamState(threads, run, camelPayload, {\n attempt: 0,\n getGraph,\n })) {\n // Collect final state values\n if (event === 'end' || event === 'writes/value') {\n if (data && typeof data === 'object') {\n Object.assign(stateValues, data);\n }\n }\n }\n } finally {\n // Clean up temporary thread after completion\n try {\n await threads.delete(thread.thread_id);\n } catch (e) {\n console.error('Error cleaning up temporary thread:', e);\n }\n }\n\n return jsonResponse(stateValues, 200, {\n 'Content-Location': `/threads/${thread.thread_id}/runs/${run.run_id}`,\n });\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /runs/batch - Create Run Batch (Stateless)\n * Create a batch of runs in new threads, return immediately.\n */\nexport async function createBatchRuns(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payloads = validate(RunBatchCreateSchema, body);\n\n const threads = client.threads;\n const results: Array<{ thread_id: string; run_id: string } | { error: string }> = [];\n\n // Create all runs in parallel\n const runPromises = payloads.map(async (payload) => {\n try {\n const camelPayload = camelcaseKeys(payload) as any;\n camelPayload.config = camelPayload.config || {};\n camelPayload.config.configurable = camelPayload.config.configurable || {};\n\n const langgraphContext = context?.langgraph_context;\n if (langgraphContext) {\n Object.assign(camelPayload.config.configurable, langgraphContext);\n }\n\n // Create a temporary thread for each run\n const thread = await threads.create({\n metadata: { ...camelPayload.metadata, temporary: true },\n });\n\n // Ensure graph_id and thread_id in configurable\n camelPayload.config.configurable.graph_id = payload.assistant_id;\n camelPayload.config.configurable.thread_id = thread.thread_id;\n camelPayload.temporary = true;\n\n // Create Run object\n const run = await threads.createRun(thread.thread_id, payload.assistant_id, camelPayload);\n\n // Execute each run in background\n (async () => {\n try {\n for await (const _ of streamState(threads, run, camelPayload, {\n attempt: 0,\n getGraph,\n })) {\n // Consume the stream without doing anything\n }\n } catch (error) {\n console.error('Batch run error:', error);\n } finally {\n // Clean up temporary thread after completion\n try {\n await threads.delete(thread.thread_id);\n } catch (e) {\n console.error('Error cleaning up temporary thread:', e);\n }\n }\n })();\n\n return { thread_id: thread.thread_id, run_id: run.run_id };\n } catch (error: unknown) {\n console.error('Batch run creation error:', error);\n return { error: (error instanceof Error ? error.message : 'Unknown error') || 'Unknown error' };\n }\n });\n\n // Wait for all run creations to complete\n const runResults = await Promise.all(runPromises);\n results.push(...runResults);\n\n return jsonResponse(results, 200);\n } catch (error) {\n return errorResponse(error);\n }\n}\n\n/**\n * POST /runs/cancel - Cancel Runs\n * Cancel one or more runs. Can cancel runs by thread ID and run IDs,\n * or by status filter.\n */\nexport async function cancelRuns(req: Request, context: LangGraphServerContext): Promise<Response> {\n try {\n const body = await req.json();\n const payload = validate(RunsCancelSchema, body);\n\n // Parse query parameters for action\n const url = new URL(req.url);\n const queryParams = validate(RunsCancelQuerySchema, {\n action: url.searchParams.get('action') || 'interrupt',\n });\n\n const threads = client.threads;\n let cancelledRuns: string[] = [];\n\n if ('run_ids' in payload && payload.run_ids) {\n // Cancel by run IDs - need to find threads for these runs\n // This is more complex as we need to look up runs by ID\n // For now, we'll implement a simplified version\n for (const runId of payload.run_ids) {\n try {\n // Find thread for this run (this would require a search capability)\n // For now, we'll just skip as this needs additional thread manager support\n console.warn(`Cancel by run_id ${runId} not fully implemented yet`);\n } catch (error) {\n console.error(`Error cancelling run ${runId}:`, error);\n }\n }\n } else if ('thread_id' in payload && payload.thread_id) {\n // Cancel all runs in a specific thread\n const threadId = payload.thread_id;\n try {\n // List all runs for the thread\n const runs = await threads.listRuns(threadId, {\n limit: 1000,\n offset: 0,\n });\n \n // Filter runs by status and cancel each\n for (const run of runs) {\n try {\n // Use cancel from client.runs directly\n client.runs.cancel(threadId, run.run_id, queryParams.wait, queryParams.action);\n cancelledRuns.push(run.run_id);\n } catch (error) {\n console.error(`Error cancelling run ${run.run_id}:`, error);\n }\n }\n } catch (error) {\n console.error(`Error listing runs for thread ${threadId}:`, error);\n }\n } else if ('status' in payload && payload.status) {\n // Cancel runs by status (this would require searching across all threads)\n // For now, we'll implement a simplified version\n console.warn(`Cancel by status ${payload.status} not fully implemented yet`);\n }\n\n // Return 204 No Content on success\n return new Response(null, { status: 204 });\n } catch (error) {\n return errorResponse(error);\n }\n}\n","import { LangGraphGlobal } from '../../global';\nimport {\n searchAssistants,\n countAssistants,\n getAssistant,\n deleteAssistant,\n patchAssistant,\n getAssistantGraph,\n getAssistantSubgraphs,\n getAssistantSubgraphsByNamespace,\n getAssistantSchemas,\n getAssistantVersions,\n setLatestAssistantVersion,\n createAssistant,\n} from './assistants';\nimport {\n createThread,\n searchThreads,\n getThread,\n deleteThread,\n patchThread,\n countThreads,\n getThreadState,\n updateThreadState,\n getThreadStateAtCheckpoint,\n getThreadHistory,\n getThreadHistoryPost,\n copyThread,\n joinThreadStream,\n} from './threads';\nimport { streamRun, joinRunStream, listRuns, cancelRun } from './runs';\nimport { createRun, waitRun, getRun, deleteRun, joinRun } from './runs-extended';\nimport { createStatelessRun, streamStatelessRun, waitStatelessRun, createBatchRuns, cancelRuns } from './runs-stateless';\nimport { errorResponse } from './utils';\nimport type { LangGraphServerContext } from './context';\n\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: 'POST',\n pattern: /^\\/assistants\\/count$/,\n handler: countAssistants,\n },\n {\n method: 'GET',\n pattern: /^\\/assistants\\/[^/]+$/,\n handler: getAssistant,\n },\n {\n method: 'DELETE',\n pattern: /^\\/assistants\\/[^/]+$/,\n handler: deleteAssistant,\n },\n {\n method: 'PATCH',\n pattern: /^\\/assistants\\/[^/]+$/,\n handler: patchAssistant,\n },\n {\n method: 'GET',\n pattern: /^\\/assistants\\/[^/]+\\/graph$/,\n handler: getAssistantGraph,\n },\n {\n method: 'GET',\n pattern: /^\\/assistants\\/[^/]+\\/subgraphs$/,\n handler: getAssistantSubgraphs,\n },\n {\n method: 'GET',\n pattern: /^\\/assistants\\/[^/]+\\/subgraphs\\/[^/]+$/,\n handler: getAssistantSubgraphsByNamespace,\n },\n {\n method: 'GET',\n pattern: /^\\/assistants\\/[^/]+\\/schemas$/,\n handler: getAssistantSchemas,\n },\n {\n method: 'POST',\n pattern: /^\\/assistants\\/[^/]+\\/versions$/,\n handler: getAssistantVersions,\n },\n {\n method: 'POST',\n pattern: /^\\/assistants\\/[^/]+\\/latest$/,\n handler: setLatestAssistantVersion,\n },\n {\n method: 'POST',\n pattern: /^\\/assistants$/,\n handler: createAssistant,\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: 'POST',\n pattern: /^\\/threads\\/count$/,\n handler: countThreads,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+$/,\n handler: getThread,\n },\n {\n method: 'PATCH',\n pattern: /^\\/threads\\/[^/]+$/,\n handler: patchThread,\n },\n {\n method: 'DELETE',\n pattern: /^\\/threads\\/[^/]+$/,\n handler: deleteThread,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/state$/,\n handler: getThreadState,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/state$/,\n handler: updateThreadState,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/state\\/checkpoint$/,\n handler: getThreadStateAtCheckpoint,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/history$/,\n handler: getThreadHistory,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/history$/,\n handler: getThreadHistoryPost,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/copy$/,\n handler: copyThread,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/stream$/,\n handler: joinThreadStream,\n },\n\n // Runs\n // POST requests must come before GET requests with same path prefix\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs$/,\n handler: createRun,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/stream$/,\n handler: streamRun,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/wait$/,\n handler: waitRun,\n },\n {\n method: 'POST',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+\\/cancel$/,\n handler: cancelRun,\n },\n // GET requests\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs$/,\n handler: listRuns,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+$/,\n handler: getRun,\n },\n {\n method: 'DELETE',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+$/,\n handler: deleteRun,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+\\/join$/,\n handler: joinRun,\n },\n {\n method: 'GET',\n pattern: /^\\/threads\\/[^/]+\\/runs\\/[^/]+\\/stream$/,\n handler: joinRunStream,\n },\n\n // Stateless Runs\n {\n method: 'POST',\n pattern: /^\\/runs$/,\n handler: createStatelessRun,\n },\n {\n method: 'POST',\n pattern: /^\\/runs\\/stream$/,\n handler: streamStatelessRun,\n },\n {\n method: 'POST',\n pattern: /^\\/runs\\/wait$/,\n handler: waitStatelessRun,\n },\n {\n method: 'POST',\n pattern: /^\\/runs\\/batch$/,\n handler: createBatchRuns,\n },\n {\n method: 'POST',\n pattern: /^\\/runs\\/cancel$/,\n handler: cancelRuns,\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// Export all functions without conflict\nexport { searchAssistants, countAssistants, getAssistant, deleteAssistant, patchAssistant, getAssistantGraph, getAssistantSubgraphs, getAssistantSubgraphsByNamespace, getAssistantSchemas, getAssistantVersions, setLatestAssistantVersion, createAssistant } from './assistants';\nexport { createThread, searchThreads, getThread, deleteThread, patchThread, countThreads, getThreadState, updateThreadState, getThreadStateAtCheckpoint, getThreadHistory, getThreadHistoryPost, copyThread, joinThreadStream } from './threads';\nexport { streamRun, joinRunStream, listRuns, cancelRun } from './runs';\nexport { createRun, waitRun, getRun, deleteRun, joinRun } from './runs-extended';\nexport { createStatelessRun, streamStatelessRun, waitStatelessRun, createBatchRuns, cancelRuns } from './runs-stateless';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { LangGraphServerContext } from './context';
|
|
2
|
+
/**
|
|
3
|
+
* POST /threads/:thread_id/runs
|
|
4
|
+
*/
|
|
5
|
+
export declare function createRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
6
|
+
/**
|
|
7
|
+
* POST /threads/:thread_id/runs/wait
|
|
8
|
+
*/
|
|
9
|
+
export declare function waitRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
10
|
+
/**
|
|
11
|
+
* GET /threads/:thread_id/runs/:run_id
|
|
12
|
+
*/
|
|
13
|
+
export declare function getRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
14
|
+
/**
|
|
15
|
+
* DELETE /threads/:thread_id/runs/:run_id
|
|
16
|
+
*/
|
|
17
|
+
export declare function deleteRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
18
|
+
/**
|
|
19
|
+
* GET /threads/:thread_id/runs/:run_id/join
|
|
20
|
+
*/
|
|
21
|
+
export declare function joinRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LangGraphServerContext } from './context';
|
|
2
|
+
/**
|
|
3
|
+
* POST /runs - Create Background Run (Stateless)
|
|
4
|
+
* Create a run in a new thread, return run ID immediately.
|
|
5
|
+
* Don't wait for final run output.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createStatelessRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
8
|
+
/**
|
|
9
|
+
* POST /runs/stream - Create Run, Stream Output (Stateless)
|
|
10
|
+
* Create a run in a new thread and stream the output.
|
|
11
|
+
*/
|
|
12
|
+
export declare function streamStatelessRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
13
|
+
/**
|
|
14
|
+
* POST /runs/wait - Create Run, Wait for Output (Stateless)
|
|
15
|
+
* Create a run in a new thread. Wait for the final output and then return it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function waitStatelessRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
18
|
+
/**
|
|
19
|
+
* POST /runs/batch - Create Run Batch (Stateless)
|
|
20
|
+
* Create a batch of runs in new threads, return immediately.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createBatchRuns(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
23
|
+
/**
|
|
24
|
+
* POST /runs/cancel - Cancel Runs
|
|
25
|
+
* Cancel one or more runs. Can cancel runs by thread ID and run IDs,
|
|
26
|
+
* or by status filter.
|
|
27
|
+
*/
|
|
28
|
+
export declare function cancelRuns(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
@@ -15,7 +15,3 @@ export declare function listRuns(req: Request, context: LangGraphServerContext):
|
|
|
15
15
|
* POST /threads/:thread_id/runs/:run_id/cancel
|
|
16
16
|
*/
|
|
17
17
|
export declare function cancelRun(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
18
|
-
/**
|
|
19
|
-
* POST /threads/:thread_id/state
|
|
20
|
-
*/
|
|
21
|
-
export declare function updateThreadState(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
@@ -7,11 +7,47 @@ export declare function createThread(req: Request, context: LangGraphServerConte
|
|
|
7
7
|
* POST /threads/search
|
|
8
8
|
*/
|
|
9
9
|
export declare function searchThreads(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
10
|
+
/**
|
|
11
|
+
* POST /threads/count
|
|
12
|
+
*/
|
|
13
|
+
export declare function countThreads(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
10
14
|
/**
|
|
11
15
|
* GET /threads/:thread_id
|
|
12
16
|
*/
|
|
13
17
|
export declare function getThread(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
18
|
+
/**
|
|
19
|
+
* PATCH /threads/:thread_id
|
|
20
|
+
*/
|
|
21
|
+
export declare function patchThread(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
14
22
|
/**
|
|
15
23
|
* DELETE /threads/:thread_id
|
|
16
24
|
*/
|
|
17
25
|
export declare function deleteThread(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
26
|
+
/**
|
|
27
|
+
* GET /threads/:thread_id/state
|
|
28
|
+
*/
|
|
29
|
+
export declare function getThreadState(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
30
|
+
/**
|
|
31
|
+
* POST /threads/:thread_id/state
|
|
32
|
+
*/
|
|
33
|
+
export declare function updateThreadState(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
34
|
+
/**
|
|
35
|
+
* POST /threads/:thread_id/state/checkpoint
|
|
36
|
+
*/
|
|
37
|
+
export declare function getThreadStateAtCheckpoint(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
38
|
+
/**
|
|
39
|
+
* GET /threads/:thread_id/history
|
|
40
|
+
*/
|
|
41
|
+
export declare function getThreadHistory(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
42
|
+
/**
|
|
43
|
+
* POST /threads/:thread_id/history
|
|
44
|
+
*/
|
|
45
|
+
export declare function getThreadHistoryPost(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
46
|
+
/**
|
|
47
|
+
* POST /threads/:thread_id/copy
|
|
48
|
+
*/
|
|
49
|
+
export declare function copyThread(req: Request, context: LangGraphServerContext): Promise<Response>;
|
|
50
|
+
/**
|
|
51
|
+
* GET /threads/:thread_id/stream
|
|
52
|
+
*/
|
|
53
|
+
export declare function joinThreadStream(req: Request, context: LangGraphServerContext): Promise<Response>;
|