supercompat 2.13.0 → 2.15.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/domas/Developer/supercorp/supercompat/packages/supercompat/dist/index.cjs","../src/index.ts","../src/supercompat.ts","../src/supercompatFetch/requestHandlers.ts","../src/supercompatFetch/findRequestHandler.ts","../src/supercompatFetch/originalFetch.ts","../src/supercompatFetch/index.ts","../src/lib/azureOpenai/endpointFromBaseUrl.ts","../src/adapters/client/groqClientAdapter/models/get.ts","../src/adapters/client/groqClientAdapter/models/index.ts","../src/adapters/client/groqClientAdapter/completions/post.ts","../src/adapters/client/groqClientAdapter/completions/index.ts","../src/adapters/client/groqClientAdapter/index.ts","../src/adapters/client/openaiClientAdapter/models/get.ts","../src/adapters/client/openaiClientAdapter/models/index.ts","../src/adapters/client/openaiClientAdapter/completions/post.ts","../src/adapters/client/openaiClientAdapter/completions/index.ts","../src/adapters/client/openaiClientAdapter/index.ts","../src/adapters/client/azureOpenaiClientAdapter/index.ts","../src/adapters/client/mistralClientAdapter/models/get.ts","../src/adapters/client/mistralClientAdapter/models/index.ts","../src/adapters/client/mistralClientAdapter/completions/serializeChunk.ts","../src/adapters/client/mistralClientAdapter/completions/serializeBody.ts","../src/adapters/client/mistralClientAdapter/completions/post.ts","../src/adapters/client/mistralClientAdapter/completions/index.ts","../src/adapters/client/mistralClientAdapter/index.ts","../src/adapters/client/perplexityClientAdapter/models/get.ts","../src/adapters/client/perplexityClientAdapter/models/index.ts","../src/lib/messages/alternatingMessages.ts","../src/adapters/client/perplexityClientAdapter/completions/post.ts","../src/adapters/client/perplexityClientAdapter/completions/index.ts","../src/adapters/client/perplexityClientAdapter/index.ts","../src/adapters/client/anthropicClientAdapter/models/get.ts","../src/adapters/client/anthropicClientAdapter/models/index.ts","../src/adapters/client/anthropicClientAdapter/completions/post.ts","../src/lib/messages/nonEmptyMessages.ts","../src/lib/messages/firstUserMessages.ts","../src/adapters/client/anthropicClientAdapter/completions/serializeTools.ts","../src/adapters/client/anthropicClientAdapter/completions/serializeMessages/serializeMessage.ts","../src/adapters/client/anthropicClientAdapter/completions/serializeMessages/index.ts","../src/adapters/client/anthropicClientAdapter/completions/index.ts","../src/adapters/client/anthropicClientAdapter/index.ts","../src/adapters/client/togetherClientAdapter/models/get.ts","../src/adapters/client/togetherClientAdapter/models/index.ts","../src/adapters/client/togetherClientAdapter/completions/post.ts","../src/adapters/client/togetherClientAdapter/completions/index.ts","../src/adapters/client/togetherClientAdapter/index.ts","../src/adapters/run/completionsRunAdapter/index.ts","../src/adapters/run/completionsRunAdapter/messages/index.ts","../src/adapters/run/completionsRunAdapter/messages/serializeMessage.ts","../src/lib/messages/messagesRegexp.ts","../src/lib/runs/runsRegexp.ts","../src/lib/runs/runRegexp.ts","../src/lib/runs/submitToolOutputsRegexp.ts","../src/lib/steps/stepsRegexp.ts","../src/adapters/storage/prismaStorageAdapter/threads/post.ts","../src/adapters/storage/prismaStorageAdapter/threads/serializeThread.ts","../src/adapters/storage/prismaStorageAdapter/threads/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/serializeMessage.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/post.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/serializeRun.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/post.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunInProgress.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunFailed.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunCompleted.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunRequiresAction.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/steps/serializeRunStep.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepCreated.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepDelta.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCreated.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageDelta.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCompleted.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/getMessages.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/run/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/run/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/steps/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/steps/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/updateRun.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/index.ts","../src/adapters/storage/prismaStorageAdapter/index.ts"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","src_exports","anthropicClientAdapter","azureOpenaiClientAdapter","completionsRunAdapter","groqClientAdapter","mistralClientAdapter","openaiClientAdapter","perplexityClientAdapter","prismaStorageAdapter","supercompat","togetherClientAdapter","module","exports","import_openai","require","import_radash","storageRequestHandlers","storage","runAdapter","client","result","partob","requestHandlers","assign","findRequestHandler","url","pathname","URL","regex","RegExp","test","originalFetch","args","fetch","options","headers","authorization","defaultHeaders","Authorization","supercompatFetch","pathHandler","requestHandler","method","endpointFromBaseUrl","baseURL","replace","type","AzureOpenAI","apiKey","apiVersion","endpoint","OpenAI","groq","_url","_options","data","error","models","list","Response","JSON","stringify","status","post","body","response","stream","parse","chat","completions","ReadableStream","start","controller","chunk","enqueue","close","openai","console","dir","depth","azureOpenai","mistral","serializeDelta","delta","toolCalls","rest","tool_calls","serializeChoice","choice","finishReason","finish_reason","serializeChunk","choices","map","serializeMessage","message","tool_call_id","toolCallId","serializeBody","messages","serializedBody","serializedChunk","complete","perplexity","model","id","object","agentSideRoles","alternatingMessages","forEach","index","push","nextMessage","role","content","includes","anthropic","nonEmptyMessages","import_radash2","isEmpty","firstUserMessages","firstMessage","serializeTools","tools","tool","function","description","input_schema","parameters","text","toolCall","input","arguments","tool_use_id","serializeMessages","systemMessages","otherMessages","system","chatMessages","resultOptions","import_radash3","fork","join","omit","max_tokens","messageDelta","partial_json","uid","content_block","together","import_lodash","import_dayjs","serializeToolCall","output","serializeMessageWithContent","serializeContent","metadata","run","messageToolCalls","tc","runStep","runSteps","find","rs","step_details","some","rsTc","getMessages","instructions","import_radash4","flat","updatedToolCall","import_radash5","_","cloneDeep","entries","toolCallsData","prevToolCalls","newToolCalls","runStepDelta","clientAdapter","onEvent","opts","providerResponse","e","toolCallsRunStep","currentContent","currentToolCalls","event","response_format","failed_at","dayjs","unix","last_error","code","cause","completed_at","run_id","created_at","assistant_id","incomplete_at","incomplete_details","attachments","thread_id","annotations","expired_at","cancelled_at","usage","message_creation","message_id","required_action","submit_tool_outputs","messagesRegexp","runsRegexp","runRegexp","submitToolOutputsRegexp","stepsRegexp","serializeThread","thread","import_dayjs2","createdAt","tool_resources","prisma","initialCreatedAt","import_dayjs3","subtract","length","format","assistantId","assistant","connect","add","toDate","threads","import_dayjs4","threadId","completedAt","incompleteAt","incompleteDetails","toLowerCase","runId","import_radash6","messageContentBlocks","urlString","match","limit","order","after","import_radash7","fromEntries","searchParams","findMany","where","take","parseInt","orderBy","skip","cursor","hasNextPage","last_id","last","serializeRun","import_dayjs5","requiredAction","lastError","expires_at","expiresAt","started_at","startedAt","cancelledAt","failedAt","truncation_strategy","max_completion_tokens","max_prompt_tokens","tool_choice","parallel_tool_calls","runs","import_radash8","threadRunInProgress","update","threadRunFailed","threadRunCompleted","threadRunRequiresAction","serializeRunStep","import_dayjs6","stepDetails","expiredAt","Error","threadRunStepCreated","serializedRunStep","threadRunStepDelta","threadMessageCreated","serializedMessage","threadMessageDelta","threadMessageCompleted","latestRunStep","findFirst","handlers","handler","log","getTake","truncationStrategy","last_messages","include","readableStream","findUnique","import_radash9","modelSlug","additional_instructions","import_dayjs7","responseFormat","import_radash10","steps","updateRun","onThreadRunStepCompleted","tool_outputs","$transaction","completedRunStep","import_dayjs8","toolOutput","Promise","resolve","submitToolOutputs"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n anthropicClientAdapter: () => anthropicClientAdapter,\n azureOpenaiClientAdapter: () => azureOpenaiClientAdapter,\n completionsRunAdapter: () => completionsRunAdapter,\n groqClientAdapter: () => groqClientAdapter,\n mistralClientAdapter: () => mistralClientAdapter,\n openaiClientAdapter: () => openaiClientAdapter,\n perplexityClientAdapter: () => perplexityClientAdapter,\n prismaStorageAdapter: () => prismaStorageAdapter,\n supercompat: () => supercompat,\n togetherClientAdapter: () => togetherClientAdapter\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/supercompat.ts\nvar import_openai = __toESM(require(\"openai\"), 1);\n\n// src/supercompatFetch/requestHandlers.ts\nvar import_radash = require(\"radash\");\nvar storageRequestHandlers = ({\n storage,\n runAdapter,\n client\n}) => {\n if (!storage) return {};\n if (!runAdapter) return {};\n const result = storage({ runAdapter: (0, import_radash.partob)(runAdapter, { client }) });\n return result.requestHandlers;\n};\nvar requestHandlers = ({\n client,\n storage,\n runAdapter\n}) => (0, import_radash.assign)(\n client.requestHandlers,\n storageRequestHandlers({\n storage,\n runAdapter,\n client\n })\n);\n\n// src/supercompatFetch/findRequestHandler.ts\nvar findRequestHandler = ({\n url,\n requestHandlers: requestHandlers2\n}) => {\n const pathname = new URL(url).pathname;\n for (const key in requestHandlers2) {\n const regex = new RegExp(key);\n if (regex.test(pathname)) {\n return requestHandlers2[key];\n }\n }\n};\n\n// src/supercompatFetch/originalFetch.ts\nvar originalFetch = ({\n args,\n client\n}) => {\n if (client.client?.fetch) {\n const [url, options] = args;\n const headers = {\n ...options.headers,\n authorization: client.client.defaultHeaders().Authorization\n };\n return client.client.fetch(url, {\n ...options,\n headers\n });\n } else {\n return fetch(...args);\n }\n};\n\n// src/supercompatFetch/index.ts\nvar supercompatFetch = ({\n client,\n storage,\n runAdapter\n}) => {\n const requestHandlers2 = requestHandlers({\n client,\n storage,\n runAdapter\n });\n return async (...args) => {\n const [url, options] = args;\n const pathHandler = findRequestHandler({\n url,\n requestHandlers: requestHandlers2\n });\n if (!pathHandler) {\n return originalFetch({\n client,\n args\n });\n }\n const requestHandler = pathHandler[options?.method];\n if (!requestHandler) {\n return originalFetch({\n client,\n args\n });\n }\n return requestHandler(...args);\n };\n};\n\n// src/lib/azureOpenai/endpointFromBaseUrl.ts\nvar endpointFromBaseUrl = ({\n baseURL\n}) => baseURL.replace(/\\/+openai$/, \"\");\n\n// src/supercompat.ts\nvar supercompat = ({\n client,\n storage,\n runAdapter\n}) => {\n if (client.type === \"AZURE_OPENAI\") {\n return new import_openai.AzureOpenAI({\n apiKey: client.client.apiKey,\n apiVersion: client.client.apiVersion,\n endpoint: endpointFromBaseUrl({ baseURL: client.client.baseURL }),\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter\n })\n });\n }\n return new import_openai.default({\n apiKey: \"SUPERCOMPAT_PLACEHOLDER_OPENAI_KEY\",\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter\n })\n });\n};\n\n// src/adapters/client/groqClientAdapter/models/get.ts\nvar get = ({\n groq\n}) => async (_url, _options) => {\n try {\n const data = await groq.models.list();\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/groqClientAdapter/models/index.ts\nvar models = ({\n groq\n}) => ({\n get: get({ groq })\n});\n\n// src/adapters/client/groqClientAdapter/completions/post.ts\nvar post = ({\n groq\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await groq.chat.completions.create(body);\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await groq.chat.completions.create(body);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/groqClientAdapter/completions/index.ts\nvar completions = ({\n groq\n}) => ({\n post: post({ groq })\n});\n\n// src/adapters/client/groqClientAdapter/index.ts\nvar groqClientAdapter = ({\n groq\n}) => ({\n client: groq,\n requestHandlers: {\n \"^/v1/models$\": models({ groq }),\n \"^/v1/chat/completions$\": completions({ groq })\n }\n});\n\n// src/adapters/client/openaiClientAdapter/models/get.ts\nvar get2 = ({\n openai\n}) => async (_url, _options) => {\n try {\n const data = await openai.models.list();\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/openaiClientAdapter/models/index.ts\nvar models2 = ({\n openai\n}) => ({\n get: get2({ openai })\n});\n\n// src/adapters/client/openaiClientAdapter/completions/post.ts\nvar post2 = ({\n openai\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await openai.chat.completions.create(body);\n console.dir({ response }, { depth: null });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await openai.chat.completions.create(body);\n console.dir({ data }, { depth: null });\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/openaiClientAdapter/completions/index.ts\nvar completions2 = ({\n openai\n}) => ({\n post: post2({ openai })\n});\n\n// src/adapters/client/openaiClientAdapter/index.ts\nvar openaiClientAdapter = ({\n openai\n}) => ({\n client: openai,\n requestHandlers: {\n \"^/v1/models$\": models2({ openai }),\n \"^/(?:v1|/?openai)/chat/completions$\": completions2({ openai })\n }\n});\n\n// src/adapters/client/azureOpenaiClientAdapter/index.ts\nvar azureOpenaiClientAdapter = ({\n azureOpenai\n}) => ({\n type: \"AZURE_OPENAI\",\n client: azureOpenai,\n requestHandlers: {\n \"^/(?:v1|/?openai)/chat/completions$\": completions2({\n openai: azureOpenai\n })\n }\n});\n\n// src/adapters/client/mistralClientAdapter/models/get.ts\nvar get3 = ({\n mistral\n}) => async (_url, _options) => {\n try {\n const data = await mistral.models.list();\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/mistralClientAdapter/models/index.ts\nvar models3 = ({\n mistral\n}) => ({\n get: get3({ mistral })\n});\n\n// src/adapters/client/mistralClientAdapter/completions/serializeChunk.ts\nvar serializeDelta = ({\n delta: {\n toolCalls,\n ...rest\n }\n}) => ({\n ...rest,\n ...toolCalls ? {\n tool_calls: toolCalls\n } : {}\n});\nvar serializeChoice = ({\n choice: {\n finishReason,\n delta,\n ...rest\n }\n}) => ({\n ...rest,\n finish_reason: finishReason ?? null,\n delta: serializeDelta({ delta })\n});\nvar serializeChunk = ({\n chunk\n}) => ({\n ...chunk.data,\n ...chunk.data.choices ? {\n choices: chunk.data.choices.map((choice) => serializeChoice({ choice }))\n } : {}\n});\n\n// src/adapters/client/mistralClientAdapter/completions/serializeBody.ts\nvar serializeMessage = ({\n message: {\n // @ts-ignore-next-line\n tool_calls,\n // @ts-ignore-next-line\n tool_call_id,\n ...rest\n }\n}) => ({\n ...rest,\n ...tool_call_id ? {\n toolCallId: tool_call_id\n } : {},\n ...tool_calls ? {\n toolCalls: tool_calls\n } : {}\n});\nvar serializeBody = ({\n body\n}) => ({\n ...body,\n messages: body.messages.map((message) => serializeMessage({\n message\n }))\n});\n\n// src/adapters/client/mistralClientAdapter/completions/post.ts\nvar post3 = ({\n mistral\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n const serializedBody = serializeBody({\n body\n });\n if (body.stream) {\n const response = await mistral.chat.stream(serializedBody);\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n const serializedChunk = serializeChunk({\n chunk\n });\n controller.enqueue(`data: ${JSON.stringify(serializedChunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await mistral.chat.complete(serializedBody);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/mistralClientAdapter/completions/index.ts\nvar completions3 = ({\n mistral\n}) => ({\n post: post3({ mistral })\n});\n\n// src/adapters/client/mistralClientAdapter/index.ts\nvar mistralClientAdapter = ({\n mistral\n}) => ({\n client: mistral,\n requestHandlers: {\n \"^/v1/models$\": models3({ mistral }),\n \"^/v1/chat/completions$\": completions3({ mistral })\n }\n});\n\n// src/adapters/client/perplexityClientAdapter/models/get.ts\nvar models4 = [\n \"llama-3.1-sonar-small-128k-online\",\n \"llama-3.1-sonar-large-128k-online\",\n \"llama-3.1-sonar-huge-128k-online\"\n];\nvar get4 = ({\n perplexity\n}) => async (_url, _options) => {\n try {\n return new Response(JSON.stringify({\n type: \"list\",\n data: models4.map((model) => ({\n id: model,\n object: \"model\"\n }))\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/perplexityClientAdapter/models/index.ts\nvar models5 = ({\n perplexity\n}) => ({\n get: get4({ perplexity })\n});\n\n// src/lib/messages/alternatingMessages.ts\nvar agentSideRoles = [\"assistant\", \"system\"];\nvar alternatingMessages = ({\n messages: messages3\n}) => {\n const result = [];\n messages3.forEach((message, index) => {\n result.push(message);\n const nextMessage = messages3[index + 1];\n if (!nextMessage) return;\n if (message.role === \"user\" && nextMessage.role === \"user\") {\n result.push({\n role: \"assistant\",\n content: \"-\"\n });\n } else if (agentSideRoles.includes(message.role) && agentSideRoles.includes(nextMessage.role)) {\n result.push({\n role: \"user\",\n content: \"-\"\n });\n }\n });\n return result;\n};\n\n// src/adapters/client/perplexityClientAdapter/completions/post.ts\nvar post4 = ({\n perplexity\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n const messages3 = alternatingMessages({\n messages: body.messages\n });\n if (body.stream) {\n const response = await perplexity.chat.completions.create({\n ...body,\n messages: messages3\n });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await perplexity.chat.completions.create(body);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/perplexityClientAdapter/completions/index.ts\nvar completions4 = ({\n perplexity\n}) => ({\n post: post4({ perplexity })\n});\n\n// src/adapters/client/perplexityClientAdapter/index.ts\nvar perplexityClientAdapter = ({\n perplexity\n}) => ({\n client: perplexity,\n requestHandlers: {\n \"^/v1/models$\": models5({ perplexity }),\n \"^/v1/chat/completions$\": completions4({ perplexity })\n }\n});\n\n// src/adapters/client/anthropicClientAdapter/models/get.ts\nvar models6 = [\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-opus-20240229\",\n \"claude-3-sonnet-20240229\",\n \"claude-3-5-haiku-20241022\",\n \"claude-3-haiku-20240307\"\n];\nvar get5 = ({\n anthropic\n}) => async (_url, _options) => {\n try {\n return new Response(JSON.stringify({\n type: \"list\",\n data: models6.map((model) => ({\n id: model,\n object: \"model\"\n }))\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/anthropicClientAdapter/models/index.ts\nvar models7 = ({\n anthropic\n}) => ({\n get: get5({ anthropic })\n});\n\n// src/adapters/client/anthropicClientAdapter/completions/post.ts\nvar import_radash3 = require(\"radash\");\n\n// src/lib/messages/nonEmptyMessages.ts\nvar import_radash2 = require(\"radash\");\nvar nonEmptyMessages = ({\n messages: messages3\n}) => {\n const result = [];\n messages3.forEach((message) => result.push({\n ...message,\n content: (0, import_radash2.isEmpty)(message.content) ? \"-\" : message.content\n }));\n return result;\n};\n\n// src/lib/messages/firstUserMessages.ts\nvar firstUserMessages = ({\n messages: messages3\n}) => {\n const firstMessage = messages3[0];\n if (!firstMessage) return messages3;\n if (firstMessage.role !== \"user\") {\n return [\n {\n role: \"user\",\n content: \"-\"\n },\n ...messages3\n ];\n }\n return messages3;\n};\n\n// src/adapters/client/anthropicClientAdapter/completions/serializeTools.ts\nvar serializeTools = ({\n tools\n}) => (tools ?? []).map((tool) => {\n if (tool.type === \"function\") {\n return {\n name: tool.function.name,\n description: tool.function.description,\n input_schema: tool.function.parameters ?? {\n type: \"object\"\n }\n };\n }\n return tool;\n});\n\n// src/adapters/client/anthropicClientAdapter/completions/serializeMessages/serializeMessage.ts\nvar serializeMessage2 = ({\n message\n}) => {\n if (message.role === \"user\") {\n return {\n role: \"user\",\n content: message.content\n };\n } else if (message.role === \"assistant\") {\n return {\n role: \"assistant\",\n content: [\n {\n type: \"text\",\n text: message.content\n },\n ...(message.tool_calls ?? []).map((toolCall) => ({\n type: \"tool_use\",\n id: toolCall.id,\n name: toolCall.function.name,\n input: toolCall.function.arguments ? JSON.parse(toolCall.function.arguments) : {}\n }))\n ]\n };\n } else if (message.role === \"tool\") {\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n tool_use_id: message.tool_call_id,\n content: message.content\n }\n ]\n };\n }\n};\n\n// src/adapters/client/anthropicClientAdapter/completions/serializeMessages/index.ts\nvar serializeMessages = ({\n messages: messages3\n}) => messages3.map((message) => serializeMessage2({\n message\n}));\n\n// src/adapters/client/anthropicClientAdapter/completions/post.ts\nvar post5 = ({\n anthropic\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n const messages3 = body.messages;\n const [systemMessages, otherMessages] = (0, import_radash3.fork)(messages3, (message) => message.role === \"system\");\n const system = systemMessages.map((message) => message.content).join(\"\\n\");\n const chatMessages = nonEmptyMessages({\n messages: firstUserMessages({\n messages: alternatingMessages({\n messages: otherMessages\n })\n })\n });\n const resultOptions = {\n ...(0, import_radash3.omit)(body, [\"response_format\"]),\n stream: body.stream ? (0, import_radash3.isEmpty)(body.tools) : false,\n system,\n messages: serializeMessages({\n messages: chatMessages\n }),\n max_tokens: 4096,\n tools: serializeTools({\n tools: body.tools\n })\n };\n if (body.stream) {\n const response = await anthropic.messages.stream(resultOptions);\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n if (chunk.type === \"content_block_delta\") {\n const delta = chunk.delta.type === \"input_json_delta\" ? {\n tool_calls: [\n {\n index: 0,\n function: {\n arguments: chunk.delta.partial_json\n }\n }\n ]\n } : {\n content: chunk.delta.text\n };\n const messageDelta = {\n id: `chatcmpl-${(0, import_radash3.uid)(29)}`,\n object: \"chat.completion.chunk\",\n choices: [\n {\n index: chunk.index,\n delta\n }\n ]\n };\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\n\n`);\n } else if (chunk.type === \"content_block_start\") {\n const delta = chunk.content_block.type === \"tool_use\" ? {\n content: null,\n tool_calls: [\n {\n index: 0,\n id: chunk.content_block.id,\n type: \"function\",\n function: {\n name: chunk.content_block.name,\n arguments: \"\"\n }\n }\n ]\n } : {\n content: chunk.content_block.text\n };\n const messageDelta = {\n id: `chatcmpl-${(0, import_radash3.uid)(29)}`,\n object: \"chat.completion.chunk\",\n choices: [\n {\n index: chunk.index,\n delta\n }\n ]\n };\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\n\n`);\n } else if (chunk.type === \"message_start\") {\n const messageDelta = {\n id: `chatcmpl-${(0, import_radash3.uid)(29)}`,\n object: \"chat.completion.chunk\",\n choices: [\n {\n index: 0,\n delta: {\n content: \"\"\n }\n }\n ]\n };\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\n\n`);\n }\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await anthropic.messages.create(resultOptions);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/anthropicClientAdapter/completions/index.ts\nvar completions5 = ({\n anthropic\n}) => ({\n post: post5({ anthropic })\n});\n\n// src/adapters/client/anthropicClientAdapter/index.ts\nvar anthropicClientAdapter = ({\n anthropic\n}) => ({\n client: anthropic,\n requestHandlers: {\n \"^/v1/models$\": models7({ anthropic }),\n \"^/v1/chat/completions$\": completions5({ anthropic })\n }\n});\n\n// src/adapters/client/togetherClientAdapter/models/get.ts\nvar get6 = ({\n together\n}) => async (_url, _options) => {\n try {\n const data = await together.models.list();\n return new Response(JSON.stringify({\n type: \"list\",\n // @ts-ignore-next-line\n data: data.body\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/togetherClientAdapter/models/index.ts\nvar models8 = ({\n together\n}) => ({\n get: get6({ together })\n});\n\n// src/adapters/client/togetherClientAdapter/completions/post.ts\nvar post6 = ({\n together\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await together.chat.completions.create(body);\n console.dir({ response }, { depth: null });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await together.chat.completions.create(body);\n console.dir({ data }, { depth: null });\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/togetherClientAdapter/completions/index.ts\nvar completions6 = ({\n together\n}) => ({\n post: post6({ together })\n});\n\n// src/adapters/client/togetherClientAdapter/index.ts\nvar togetherClientAdapter = ({\n together\n}) => ({\n client: together,\n requestHandlers: {\n \"^/v1/models$\": models8({ together }),\n \"^/(?:v1|/?openai)/chat/completions$\": completions6({ together })\n }\n});\n\n// src/adapters/run/completionsRunAdapter/index.ts\nvar import_lodash = __toESM(require(\"lodash\"), 1);\nvar import_radash5 = require(\"radash\");\nvar import_dayjs = __toESM(require(\"dayjs\"), 1);\n\n// src/adapters/run/completionsRunAdapter/messages/index.ts\nvar import_radash4 = require(\"radash\");\n\n// src/adapters/run/completionsRunAdapter/messages/serializeMessage.ts\nvar serializeToolCall = ({\n toolCall\n}) => ({\n tool_call_id: toolCall.id,\n role: \"tool\",\n name: toolCall.function.name,\n content: toolCall.function.output ?? \"\"\n});\nvar serializeMessageWithContent = ({\n message\n}) => ({\n role: message.role,\n content: serializeContent({\n content: message.content\n }),\n ...message?.metadata?.toolCalls ? { tool_calls: message.metadata.toolCalls } : {}\n});\nvar serializeContent = ({\n content\n}) => content.map((content2) => content2.text.value).join(\"\\n\");\nvar serializeMessage3 = ({\n message\n}) => {\n const result = [serializeMessageWithContent({ message })];\n const run2 = message.run;\n if (!run2) return result;\n const messageToolCalls = message.metadata?.toolCalls || [];\n messageToolCalls.forEach((tc) => {\n const runStep = run2.runSteps.find((rs) => {\n if (rs.type !== \"tool_calls\") return false;\n return rs.step_details.tool_calls.some((rsTc) => {\n if (rsTc.type !== \"function\") return false;\n return rsTc.id === tc.id;\n });\n });\n if (!runStep) return;\n const toolCall = runStep.step_details.tool_calls.find((rsTc) => {\n if (rsTc.type !== \"function\") return false;\n return rsTc.id === tc.id;\n });\n result.push(serializeToolCall({ toolCall }));\n });\n return result;\n};\n\n// src/adapters/run/completionsRunAdapter/messages/index.ts\nvar messages = async ({\n run: run2,\n getMessages: getMessages2\n}) => [\n ...run2.instructions ? [{\n role: \"system\",\n content: run2.instructions\n }] : [],\n ...(0, import_radash4.flat)((await getMessages2()).map((message) => serializeMessage3({ message })))\n];\n\n// src/adapters/run/completionsRunAdapter/index.ts\nvar updatedToolCall = ({\n toolCall,\n delta\n}) => {\n if (!toolCall) return (0, import_radash5.omit)(delta, [\"index\"]);\n const result = import_lodash.default.cloneDeep(toolCall);\n for (const [key, value] of Object.entries(delta.function)) {\n result.function[key] = `${result.function[key] ?? \"\"}${value}`;\n }\n return result;\n};\nvar toolCallsData = ({\n prevToolCalls,\n delta\n}) => {\n if (!prevToolCalls) {\n return delta.tool_calls.map((tc) => ({\n id: (0, import_radash5.uid)(24),\n type: \"function\",\n ...(0, import_radash5.omit)(tc, [\"index\"])\n }));\n }\n const newToolCalls = import_lodash.default.cloneDeep(prevToolCalls);\n for (const runStepDelta of delta.tool_calls) {\n newToolCalls[runStepDelta.index] = updatedToolCall({\n toolCall: newToolCalls[runStepDelta.index],\n delta: runStepDelta\n });\n }\n return newToolCalls;\n};\nvar completionsRunAdapter = () => async ({\n client: clientAdapter,\n run: run2,\n onEvent: onEvent2,\n getMessages: getMessages2\n}) => {\n if (run2.status !== \"queued\") return;\n const client = supercompat({\n client: clientAdapter\n });\n onEvent2({\n event: \"thread.run.in_progress\",\n data: {\n ...run2,\n status: \"in_progress\"\n }\n });\n const opts = {\n messages: await messages({\n run: run2,\n getMessages: getMessages2\n }),\n model: run2.model,\n stream: true,\n response_format: run2.response_format,\n ...(0, import_radash5.isEmpty)(run2.tools) ? {} : { tools: run2.tools }\n };\n let providerResponse;\n try {\n providerResponse = await client.chat.completions.create(opts);\n } catch (e) {\n console.error(e);\n return onEvent2({\n event: \"thread.run.failed\",\n data: {\n ...run2,\n failed_at: (0, import_dayjs.default)().unix(),\n status: \"in_progress\",\n last_error: {\n code: \"server_error\",\n message: `${e?.message ?? \"\"} ${e?.cause?.message ?? \"\"}`\n }\n }\n });\n }\n let message = await onEvent2({\n event: \"thread.message.created\",\n data: {\n id: \"THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID\",\n object: \"thread.message\",\n completed_at: null,\n run_id: run2.id,\n created_at: (0, import_dayjs.default)().unix(),\n assistant_id: run2.assistant_id,\n incomplete_at: null,\n incomplete_details: null,\n metadata: {},\n attachments: [],\n thread_id: run2.thread_id,\n content: [{ text: { value: \"\", annotations: [] }, type: \"text\" }],\n role: \"assistant\",\n status: \"in_progress\"\n }\n });\n onEvent2({\n event: \"thread.run.step.created\",\n data: {\n id: \"THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID\",\n object: \"thread.run.step\",\n run_id: run2.id,\n assistant_id: run2.assistant_id,\n thread_id: run2.thread_id,\n type: \"message_creation\",\n status: \"completed\",\n completed_at: (0, import_dayjs.default)().unix(),\n created_at: (0, import_dayjs.default)().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: \"message_creation\",\n message_creation: {\n message_id: message.id\n }\n }\n }\n });\n let toolCallsRunStep;\n let currentContent = \"\";\n let currentToolCalls;\n for await (const chunk of providerResponse) {\n const choices = chunk.choices ?? [];\n const choice = choices[0];\n if (!choice) continue;\n const delta = choice.delta;\n if (delta.content) {\n currentContent = `${currentContent}${delta.content ?? \"\"}`;\n }\n if (delta.tool_calls) {\n if (!toolCallsRunStep) {\n toolCallsRunStep = await onEvent2({\n event: \"thread.run.step.created\",\n data: {\n id: \"THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID\",\n object: \"thread.run.step\",\n run_id: run2.id,\n assistant_id: run2.assistant_id,\n thread_id: run2.thread_id,\n type: \"tool_calls\",\n status: \"in_progress\",\n completed_at: null,\n created_at: (0, import_dayjs.default)().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: \"tool_calls\",\n tool_calls: []\n }\n }\n });\n }\n onEvent2({\n event: \"thread.run.step.delta\",\n data: {\n object: \"thread.run.step.delta\",\n run_id: run2.id,\n id: toolCallsRunStep.id,\n delta: {\n step_details: {\n type: \"tool_calls\",\n tool_calls: delta.tool_calls.map((tc) => ({\n id: (0, import_radash5.uid)(24),\n type: \"function\",\n ...tc\n }))\n }\n }\n }\n });\n currentToolCalls = toolCallsData({ prevToolCalls: currentToolCalls, delta });\n }\n if (delta.content) {\n onEvent2({\n event: \"thread.message.delta\",\n data: {\n id: message.id,\n delta: {\n content: [\n {\n type: \"text\",\n index: 0,\n text: {\n value: delta.content\n }\n }\n ]\n }\n }\n });\n }\n }\n message = await onEvent2({\n event: \"thread.message.completed\",\n data: {\n ...message,\n status: \"completed\",\n content: [{ text: { value: currentContent, annotations: [] }, type: \"text\" }],\n tool_calls: currentToolCalls\n }\n });\n if ((0, import_radash5.isEmpty)(message.toolCalls)) {\n return onEvent2({\n event: \"thread.run.completed\",\n data: {\n ...run2,\n status: \"completed\",\n completed_at: (0, import_dayjs.default)().unix()\n }\n });\n }\n return onEvent2({\n event: \"thread.run.requires_action\",\n data: {\n ...run2,\n status: \"requires_action\",\n required_action: {\n type: \"submit_tool_outputs\",\n submit_tool_outputs: {\n tool_calls: message.toolCalls\n }\n }\n }\n });\n};\n\n// src/lib/messages/messagesRegexp.ts\nvar messagesRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/messages$\";\n\n// src/lib/runs/runsRegexp.ts\nvar runsRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs$\";\n\n// src/lib/runs/runRegexp.ts\nvar runRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)$\";\n\n// src/lib/runs/submitToolOutputsRegexp.ts\nvar submitToolOutputsRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/submit_tool_outputs$\";\n\n// src/lib/steps/stepsRegexp.ts\nvar stepsRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/steps$\";\n\n// src/adapters/storage/prismaStorageAdapter/threads/post.ts\nvar import_dayjs3 = __toESM(require(\"dayjs\"), 1);\n\n// src/adapters/storage/prismaStorageAdapter/threads/serializeThread.ts\nvar import_dayjs2 = __toESM(require(\"dayjs\"), 1);\nvar serializeThread = ({\n thread\n}) => ({\n id: thread.id,\n object: \"thread\",\n created_at: (0, import_dayjs2.default)(thread.createdAt).unix(),\n metadata: thread.metadata,\n // TODO\n tool_resources: null\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/post.ts\nvar post7 = ({\n prisma\n}) => async (...args) => {\n const body = JSON.parse(args[1].body);\n const messages3 = body.messages || [];\n const metadata = body.metadata || {};\n const initialCreatedAt = (0, import_dayjs3.default)().subtract(messages3.length, \"seconds\").format();\n const thread = await prisma.thread.create({\n data: {\n metadata,\n ...metadata.assistantId ? {\n assistant: {\n connect: {\n id: metadata.assistantId\n }\n }\n } : {},\n messages: {\n create: messages3.map((message, index) => ({\n role: message.role === \"user\" ? \"USER\" : \"ASSISTANT\",\n content: [\n {\n type: \"text\",\n text: {\n annotations: [],\n value: message.content\n }\n }\n ],\n attachments: message.attachments,\n metadata: message.metadata,\n createdAt: (0, import_dayjs3.default)(initialCreatedAt).add(index, \"seconds\").toDate()\n }))\n }\n }\n });\n return new Response(JSON.stringify(\n serializeThread({ thread })\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/index.ts\nvar threads = ({\n prisma\n}) => ({\n post: post7({ prisma })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/serializeMessage.ts\nvar import_dayjs4 = __toESM(require(\"dayjs\"), 1);\nvar import_radash6 = require(\"radash\");\nvar serializeMessage4 = ({\n message\n}) => ({\n id: message.id,\n object: \"thread.message\",\n created_at: (0, import_dayjs4.default)(message.createdAt).unix(),\n thread_id: message.threadId,\n completed_at: message.completedAt ? (0, import_dayjs4.default)(message.completedAt).unix() : null,\n incomplete_at: message.incompleteAt ? (0, import_dayjs4.default)(message.incompleteAt).unix() : null,\n incomplete_details: message.incompleteDetails,\n role: message.role.toLowerCase(),\n content: message.content,\n assistant_id: message.assistantId,\n run_id: message.runId,\n attachments: message.attachments,\n status: message.status.toLowerCase(),\n metadata: (0, import_radash6.assign)(message.metadata ?? {}, message.toolCalls ? { toolCalls: message.toolCalls } : {})\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/post.ts\nvar messageContentBlocks = ({\n content\n}) => [\n {\n type: \"text\",\n text: {\n value: content ?? \"\",\n annotations: []\n }\n }\n];\nvar post8 = ({\n prisma\n}) => async (urlString, options) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp));\n const body = JSON.parse(options.body);\n const { role, content } = body;\n const message = await prisma.message.create({\n data: {\n threadId,\n content: messageContentBlocks({ content }),\n role: role === \"user\" ? \"USER\" : \"ASSISTANT\"\n }\n });\n return new Response(JSON.stringify(\n serializeMessage4({ message })\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/get.ts\nvar import_radash7 = require(\"radash\");\nvar get7 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp));\n const {\n limit,\n order,\n after\n } = (0, import_radash7.assign)({\n limit: \"20\",\n order: \"desc\"\n // after: null,\n }, Object.fromEntries(url.searchParams));\n const messages3 = await prisma.message.findMany({\n where: {\n threadId\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order\n },\n ...after ? {\n skip: 1,\n cursor: {\n id: after\n }\n } : {}\n });\n return new Response(JSON.stringify({\n data: messages3.map((message) => serializeMessage4({ message })),\n hasNextPage: () => messages3.length === parseInt(limit),\n body: {\n last_id: (0, import_radash7.last)(messages3)?.id ?? null\n }\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/index.ts\nvar messages2 = ({\n prisma\n}) => ({\n post: post8({ prisma }),\n get: get7({ prisma })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/get.ts\nvar import_radash8 = require(\"radash\");\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/serializeRun.ts\nvar import_dayjs5 = __toESM(require(\"dayjs\"), 1);\nvar serializeRun = ({\n run: run2\n}) => ({\n id: run2.id,\n object: \"thread.run\",\n created_at: (0, import_dayjs5.default)(run2.createdAt).unix(),\n thread_id: run2.threadId,\n assistant_id: run2.assistantId,\n status: run2.status.toLowerCase(),\n required_action: run2.requiredAction,\n last_error: run2.lastError,\n expires_at: (0, import_dayjs5.default)(run2.expiresAt).unix(),\n started_at: run2.startedAt ? (0, import_dayjs5.default)(run2.startedAt).unix() : null,\n cancelled_at: run2.cancelledAt ? (0, import_dayjs5.default)(run2.cancelledAt).unix() : null,\n failed_at: run2.failedAt ? (0, import_dayjs5.default)(run2.failedAt).unix() : null,\n completed_at: run2.completedAt ? (0, import_dayjs5.default)(run2.completedAt).unix() : null,\n model: run2.model,\n instructions: run2.instructions,\n tools: run2.tools,\n metadata: run2.metadata,\n usage: run2.usage,\n truncation_strategy: {\n type: \"auto\"\n },\n response_format: {\n type: \"text\"\n },\n // TODO\n incomplete_details: null,\n max_completion_tokens: null,\n max_prompt_tokens: null,\n tool_choice: \"auto\",\n parallel_tool_calls: true\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/get.ts\nvar get8 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp));\n const {\n limit,\n order,\n after\n } = (0, import_radash8.assign)({\n limit: \"20\",\n order: \"desc\"\n // after: null,\n }, Object.fromEntries(url.searchParams));\n const runs2 = await prisma.run.findMany({\n where: {\n threadId\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order\n },\n ...after ? {\n skip: 1,\n cursor: {\n id: after\n }\n } : {}\n });\n return new Response(JSON.stringify({\n data: runs2.map((run2) => serializeRun({ run: run2 })),\n hasNextPage: () => runs2.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: (0, import_radash8.last)(runs2)?.id ?? null\n }\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/post.ts\nvar import_dayjs7 = __toESM(require(\"dayjs\"), 1);\nvar import_radash9 = require(\"radash\");\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunInProgress.ts\nvar threadRunInProgress = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"IN_PROGRESS\" /* IN_PROGRESS */\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunFailed.ts\nvar threadRunFailed = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"FAILED\" /* FAILED */,\n failedAt: event.data.failed_at,\n lastError: event.data.last_error\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunCompleted.ts\nvar threadRunCompleted = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"COMPLETED\" /* COMPLETED */,\n requiredAction: void 0\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunRequiresAction.ts\nvar threadRunRequiresAction = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"REQUIRES_ACTION\" /* REQUIRES_ACTION */,\n requiredAction: event.data.required_action\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/steps/serializeRunStep.ts\nvar import_dayjs6 = __toESM(require(\"dayjs\"), 1);\nvar serializeRunStep = ({\n runStep\n}) => ({\n id: runStep.id,\n object: \"thread.run.step\",\n created_at: (0, import_dayjs6.default)(runStep.createdAt).unix(),\n assistant_id: runStep.assistantId,\n thread_id: runStep.threadId,\n run_id: runStep.runId,\n type: runStep.type.toLowerCase(),\n status: runStep.status.toLowerCase(),\n // @ts-ignore-next-line\n step_details: runStep.stepDetails,\n last_error: runStep.lastError,\n expired_at: runStep.expiredAt ? (0, import_dayjs6.default)(runStep.expiredAt).unix() : null,\n cancelled_at: runStep.cancelledAt ? (0, import_dayjs6.default)(runStep.cancelledAt).unix() : null,\n failed_at: runStep.failedAt ? (0, import_dayjs6.default)(runStep.failedAt).unix() : null,\n completed_at: runStep.completedAt ? (0, import_dayjs6.default)(runStep.completedAt).unix() : null,\n metadata: runStep.metadata,\n usage: runStep.usage\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepCreated.ts\nvar type = (event) => {\n if (event.data.type === \"message_creation\") return \"MESSAGE_CREATION\" /* MESSAGE_CREATION */;\n if (event.data.type === \"tool_calls\") return \"TOOL_CALLS\" /* TOOL_CALLS */;\n throw new Error(`Unknown type: ${event.data.type}`);\n};\nvar status = (event) => {\n if (event.data.status === \"in_progress\") return \"IN_PROGRESS\" /* IN_PROGRESS */;\n if (event.data.status === \"cancelled\") return \"CANCELLED\" /* CANCELLED */;\n if (event.data.status === \"completed\") return \"COMPLETED\" /* COMPLETED */;\n if (event.data.status === \"failed\") return \"FAILED\" /* FAILED */;\n if (event.data.status === \"expired\") return \"EXPIRED\" /* EXPIRED */;\n throw new Error(`Unknown status: ${event.data.status}`);\n};\nvar threadRunStepCreated = async ({\n prisma,\n event,\n controller\n}) => {\n const runStep = await prisma.runStep.create({\n data: {\n runId: event.data.run_id,\n assistantId: event.data.assistant_id,\n threadId: event.data.thread_id,\n type: type(event),\n status: status(event),\n stepDetails: event.data.step_details,\n completedAt: event.data.completed_at\n }\n });\n const serializedRunStep = serializeRunStep({ runStep });\n controller.enqueue({\n ...event,\n data: serializedRunStep\n });\n return serializedRunStep;\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepDelta.ts\nvar threadRunStepDelta = ({\n event,\n controller\n}) => controller.enqueue(event);\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCreated.ts\nvar status2 = (event) => {\n if (event.data.status === \"completed\") return \"COMPLETED\" /* COMPLETED */;\n if (event.data.status === \"in_progress\") return \"IN_PROGRESS\" /* IN_PROGRESS */;\n if (event.data.status === \"incomplete\") return \"INCOMPLETE\" /* INCOMPLETE */;\n throw new Error(`Unknown status: ${event.data.status}`);\n};\nvar threadMessageCreated = async ({\n prisma,\n event,\n controller\n}) => {\n const message = await prisma.message.create({\n data: {\n threadId: event.data.thread_id,\n content: event.data.content,\n role: event.data.role === \"assistant\" ? \"ASSISTANT\" : \"USER\",\n assistantId: event.data.assistant_id,\n runId: event.data.run_id,\n status: status2(event)\n }\n });\n const serializedMessage = serializeMessage4({ message });\n controller.enqueue({\n ...event,\n data: serializedMessage\n });\n return serializedMessage;\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageDelta.ts\nvar threadMessageDelta = ({\n event,\n controller\n}) => controller.enqueue(event);\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCompleted.ts\nvar threadMessageCompleted = async ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n if (event.data.tool_calls) {\n const latestRunStep = await prisma.runStep.findFirst({\n where: {\n threadId: event.data.thread_id,\n type: \"TOOL_CALLS\" /* TOOL_CALLS */\n },\n orderBy: {\n createdAt: \"desc\"\n }\n });\n if (!latestRunStep) {\n throw new Error(\"No run step found\");\n }\n await prisma.runStep.update({\n where: {\n id: latestRunStep.id\n },\n data: {\n stepDetails: {\n type: \"tool_calls\",\n tool_calls: event.data.tool_calls\n }\n }\n });\n }\n return prisma.message.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"COMPLETED\" /* COMPLETED */,\n ...event.data.content ? { content: event.data.content } : {},\n ...event.data.tool_calls ? { toolCalls: event.data.tool_calls } : {}\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/index.ts\nvar handlers = {\n \"thread.run.in_progress\": threadRunInProgress,\n \"thread.run.failed\": threadRunFailed,\n \"thread.run.completed\": threadRunCompleted,\n \"thread.run.requires_action\": threadRunRequiresAction,\n \"thread.run.step.created\": threadRunStepCreated,\n \"thread.run.step.delta\": threadRunStepDelta,\n \"thread.message.created\": threadMessageCreated,\n \"thread.message.delta\": threadMessageDelta,\n \"thread.message.completed\": threadMessageCompleted\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/index.ts\nvar onEvent = ({\n prisma,\n controller\n}) => (event) => {\n const handler = handlers[event.event];\n if (!handler) {\n console.log(\"No handler for event\", event);\n return;\n }\n return handler({ prisma, controller, event });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/getMessages.ts\nvar getTake = ({\n run: run2\n}) => {\n if (run2.truncationStrategy.type === \"auto\") {\n return null;\n }\n if (run2.truncationStrategy.type === \"last_messages\") {\n if (!run2.truncationStrategy.last_messages) {\n throw new Error(\"Truncation strategy last_messages is required\");\n }\n return -run2.truncationStrategy.last_messages;\n }\n throw new Error(`Unsupported truncation strategy type: ${run2.truncationStrategy.type}`);\n};\nvar getMessages = ({\n prisma,\n run: run2\n}) => async () => {\n const take = getTake({\n run: run2\n });\n const messages3 = await prisma.message.findMany({\n where: {\n threadId: run2.threadId\n },\n include: {\n run: {\n include: {\n runSteps: true\n }\n }\n },\n orderBy: {\n createdAt: \"asc\"\n },\n ...take ? { take } : {}\n });\n return messages3.map((message) => ({\n ...serializeMessage4({ message }),\n run: message.run ? {\n ...serializeRun({ run: message.run }),\n runSteps: message.run.runSteps.map((runStep) => serializeRunStep({ runStep }))\n } : null\n }));\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/post.ts\nvar post9 = ({\n prisma,\n runAdapter\n}) => async (urlString, options) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp));\n const body = JSON.parse(options.body);\n const { assistant_id, stream } = body;\n const assistant = await prisma.assistant.findUnique({\n where: {\n id: assistant_id\n }\n });\n if (!assistant) {\n throw new Error(\"Assistant not found\");\n }\n const {\n model,\n instructions,\n // additional_instructions,\n tools,\n metadata,\n response_format,\n truncation_strategy\n } = (0, import_radash9.assign)({\n model: assistant.modelSlug,\n instructions: \"\",\n additional_instructions: null,\n truncation_strategy: {\n type: \"auto\"\n },\n response_format: {\n type: \"text\"\n }\n // tools: [],\n // metadata: {},\n }, body);\n const run2 = await prisma.run.create({\n data: {\n status: \"QUEUED\",\n expiresAt: (0, import_dayjs7.default)().add(1, \"hour\").unix(),\n model,\n instructions,\n tools,\n metadata,\n thread: {\n connect: {\n id: threadId\n }\n },\n assistant: {\n connect: {\n id: assistant_id\n }\n },\n truncationStrategy: truncation_strategy,\n responseFormat: response_format\n }\n });\n const data = serializeRun({ run: run2 });\n const readableStream = new ReadableStream({\n async start(controller) {\n try {\n await runAdapter({\n run: data,\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data2) => {\n controller.enqueue(`data: ${JSON.stringify(data2)}\n\n`);\n }\n },\n prisma\n }),\n getMessages: getMessages({\n prisma,\n run: run2\n })\n });\n } catch (error) {\n console.error(error);\n onEvent({\n controller: {\n ...controller,\n enqueue: (data2) => {\n controller.enqueue(`data: ${JSON.stringify(data2)}\n\n`);\n }\n },\n prisma\n })({\n event: \"thread.run.failed\",\n data: {\n id: run2.id,\n failed_at: (0, import_dayjs7.default)().unix(),\n last_error: {\n code: \"server_error\",\n message: `${error?.message ?? \"\"} ${error?.cause?.message ?? \"\"}`\n }\n }\n });\n }\n controller.close();\n }\n });\n if (stream) {\n return new Response(readableStream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n return new Response(JSON.stringify(\n data\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/index.ts\nvar runs = ({\n prisma,\n runAdapter\n}) => ({\n get: get8({ prisma }),\n post: post9({ prisma, runAdapter })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/run/get.ts\nvar get9 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId, runId] = url.pathname.match(new RegExp(runRegexp));\n const run2 = await prisma.run.findUnique({\n where: {\n id: runId,\n threadId\n }\n });\n return new Response(JSON.stringify(\n serializeRun({ run: run2 })\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\",\n \"openai-poll-after-ms\": \"5000\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/run/index.ts\nvar run = ({\n prisma,\n runAdapter\n}) => ({\n get: get9({ prisma })\n // post: post({ prisma, runAdapter }),\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/steps/get.ts\nvar import_radash10 = require(\"radash\");\nvar get10 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId, , runId] = url.pathname.match(new RegExp(stepsRegexp));\n const {\n limit,\n order,\n after\n } = (0, import_radash10.assign)({\n limit: \"20\",\n order: \"desc\"\n // after: null,\n }, Object.fromEntries(url.searchParams));\n const runSteps = await prisma.runStep.findMany({\n where: {\n threadId,\n runId\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order\n },\n ...after ? {\n skip: 1,\n cursor: {\n id: after\n }\n } : {}\n });\n return new Response(JSON.stringify({\n data: runSteps.map((runStep) => serializeRunStep({ runStep })),\n hasNextPage: () => runSteps.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: (0, import_radash10.last)(runSteps)?.id ?? null\n }\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/steps/index.ts\nvar steps = ({\n prisma\n}) => ({\n get: get10({ prisma })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/updateRun.ts\nvar import_dayjs8 = __toESM(require(\"dayjs\"), 1);\nvar updateRun = async ({\n prisma,\n runId,\n threadId,\n onThreadRunStepCompleted = () => {\n },\n tool_outputs\n}) => prisma.$transaction(async (prisma2) => {\n const runSteps = await prisma2.runStep.findMany({\n where: {\n threadId,\n runId,\n type: \"TOOL_CALLS\",\n status: \"IN_PROGRESS\"\n },\n orderBy: {\n createdAt: \"asc\"\n }\n });\n for (const runStep of runSteps) {\n const completedRunStep = await prisma2.runStep.update({\n where: {\n id: runStep.id\n },\n data: {\n status: \"COMPLETED\",\n completedAt: (0, import_dayjs8.default)().unix(),\n stepDetails: {\n type: \"tool_calls\",\n // @ts-ignore-next-line\n tool_calls: runStep.stepDetails.tool_calls.map((toolCall) => {\n const toolOutput = tool_outputs.find((output) => output.tool_call_id === toolCall.id) || tool_outputs[0];\n if (!toolOutput) {\n console.dir({ toolOutput, runStep, tool_outputs, runSteps }, { depth: null });\n throw new Error(\"Tool output not found\");\n }\n return {\n id: toolCall.id,\n type: toolCall.type,\n function: {\n ...toolCall.function,\n output: toolOutput.output\n }\n };\n })\n }\n }\n });\n onThreadRunStepCompleted({\n runStep: completedRunStep\n });\n }\n return prisma2.run.update({\n where: {\n id: runId\n },\n data: {\n status: \"QUEUED\"\n }\n });\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/index.ts\nvar post10 = ({\n prisma,\n runAdapter\n}) => async (urlString, options) => {\n const url = new URL(urlString);\n const [, threadId, runId] = url.pathname.match(new RegExp(submitToolOutputsRegexp));\n const body = JSON.parse(options.body);\n const {\n tool_outputs,\n stream\n } = body;\n if (stream) {\n const readableStream = new ReadableStream({\n async start(controller) {\n const run2 = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs,\n onThreadRunStepCompleted: async ({ runStep }) => {\n controller.enqueue(`data: ${JSON.stringify({\n event: \"thread.run.step.completed\",\n data: serializeRunStep({ runStep })\n })}\n\n`);\n }\n });\n await runAdapter({\n run: serializeRun({ run: run2 }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\n\n`);\n }\n },\n prisma\n }),\n getMessages: getMessages({ prisma, run: run2 })\n });\n controller.close();\n }\n });\n return new Response(readableStream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n const run2 = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs\n });\n await new Promise((resolve) => new ReadableStream({\n async start(controller) {\n await runAdapter({\n run: serializeRun({ run: run2 }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\n\n`);\n }\n },\n prisma\n }),\n getMessages: getMessages({ prisma, run: run2 })\n });\n controller.close();\n resolve(void 0);\n }\n }));\n return new Response(JSON.stringify(\n run2\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/index.ts\nvar submitToolOutputs = ({\n prisma,\n runAdapter\n}) => ({\n post: post10({\n prisma,\n // @ts-ignore-next-line\n runAdapter\n })\n});\n\n// src/adapters/storage/prismaStorageAdapter/index.ts\nvar prismaStorageAdapter = ({\n prisma\n}) => ({\n runAdapter\n}) => ({\n requestHandlers: {\n \"^/(?:v1|/?openai)/threads$\": threads({ prisma }),\n [messagesRegexp]: messages2({ prisma }),\n [runsRegexp]: runs({ prisma, runAdapter }),\n [runRegexp]: run({ prisma, runAdapter }),\n [stepsRegexp]: steps({ prisma }),\n [submitToolOutputsRegexp]: submitToolOutputs({ prisma, runAdapter })\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n anthropicClientAdapter,\n azureOpenaiClientAdapter,\n completionsRunAdapter,\n groqClientAdapter,\n mistralClientAdapter,\n openaiClientAdapter,\n perplexityClientAdapter,\n prismaStorageAdapter,\n supercompat,\n togetherClientAdapter\n});\n","export { supercompat } from './supercompat'\nexport { groqClientAdapter } from './adapters/client/groqClientAdapter'\nexport { openaiClientAdapter } from './adapters/client/openaiClientAdapter'\nexport { azureOpenaiClientAdapter } from './adapters/client/azureOpenaiClientAdapter'\nexport { mistralClientAdapter } from './adapters/client/mistralClientAdapter'\nexport { perplexityClientAdapter } from './adapters/client/perplexityClientAdapter'\nexport { anthropicClientAdapter } from './adapters/client/anthropicClientAdapter'\nexport { togetherClientAdapter } from './adapters/client/togetherClientAdapter'\nexport { completionsRunAdapter } from './adapters/run/completionsRunAdapter'\nexport { prismaStorageAdapter } from './adapters/storage/prismaStorageAdapter'\n","import OpenAI, { AzureOpenAI } from 'openai'\nimport { supercompatFetch, type Args } from './supercompatFetch'\nimport { endpointFromBaseUrl } from '@/lib/azureOpenai/endpointFromBaseUrl'\n\nexport const supercompat = ({\n client,\n storage,\n runAdapter,\n}: Args) => {\n if (client.type === 'AZURE_OPENAI') {\n return new AzureOpenAI({\n apiKey: client.client.apiKey,\n apiVersion: client.client.apiVersion,\n endpoint: endpointFromBaseUrl({ baseURL: client.client.baseURL }),\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter,\n }),\n })\n }\n\n return new OpenAI({\n apiKey: 'SUPERCOMPAT_PLACEHOLDER_OPENAI_KEY',\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter,\n }),\n })\n}\n","import { assign, partob } from 'radash'\nimport { RunAdapter, StorageAdapterArgs } from '@/types'\n\nconst storageRequestHandlers = ({\n storage,\n runAdapter,\n client,\n}: {\n storage?: (arg0: StorageAdapterArgs) => any\n runAdapter?: RunAdapter\n client: any\n}) => {\n if (!storage) return {}\n if (!runAdapter) return {}\n\n const result = storage({ runAdapter: partob(runAdapter, { client }) })\n return result.requestHandlers\n}\n\nexport const requestHandlers = ({\n client,\n storage,\n runAdapter,\n}: {\n client: any\n storage?: (arg0: StorageAdapterArgs) => any\n runAdapter?: RunAdapter\n}) => (\n assign(\n client.requestHandlers,\n storageRequestHandlers({\n storage,\n runAdapter,\n client,\n })\n )\n)\n","export const findRequestHandler = ({\n url,\n requestHandlers,\n}: {\n url: string\n requestHandlers: any\n}) => {\n const pathname = new URL(url).pathname\n\n for (const key in requestHandlers) {\n const regex = new RegExp(key)\n\n if (regex.test(pathname)) {\n return requestHandlers[key]\n }\n }\n}\n","export const originalFetch = ({\n args,\n client,\n}: {\n args: any[]\n client: any\n}) => {\n if (client.client?.fetch) {\n const [url, options] = args\n\n const headers = {\n ...options.headers,\n authorization: client.client.defaultHeaders().Authorization,\n }\n\n return client.client.fetch(url, {\n ...options,\n headers,\n })\n } else {\n // @ts-ignore-next-line\n return fetch(...args)\n }\n}\n","import { RunAdapter, StorageAdapterArgs } from '@/types'\nimport { requestHandlers as getRequestHandlers } from './requestHandlers'\nimport { findRequestHandler } from './findRequestHandler'\nimport { originalFetch } from './originalFetch'\n\nexport type Args = {\n client: any\n storage?: (arg0: StorageAdapterArgs) => any\n runAdapter?: RunAdapter\n}\n\nexport const supercompatFetch = ({\n client,\n storage,\n runAdapter,\n}: Args) => {\n const requestHandlers = getRequestHandlers({\n client,\n storage,\n runAdapter,\n })\n\n return async (...args: any[]) => {\n const [url, options] = args\n\n const pathHandler = findRequestHandler({\n url,\n requestHandlers,\n })\n\n if (!pathHandler) {\n return originalFetch({\n client,\n args,\n })\n }\n\n const requestHandler = pathHandler[options?.method]\n\n if (!requestHandler) {\n return originalFetch({\n client,\n args,\n })\n }\n\n return requestHandler(...args)\n }\n}\n","export const endpointFromBaseUrl = ({\n baseURL\n}: {\n baseURL: string\n}) => (\n baseURL.replace(/\\/+openai$/, '')\n)\n","import type Groq from 'groq-sdk'\n\nexport const get = ({\n groq,\n}: {\n groq: Groq\n}) => async (_url: string, _options: any) => {\n try {\n const data = await groq.models.list()\n\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type Groq from 'groq-sdk'\nimport { get } from './get'\n\nexport const models = ({\n groq,\n}: {\n groq: Groq\n}) => ({\n get: get({ groq }),\n})\n","import type Groq from 'groq-sdk'\n\nexport const post = ({\n groq,\n}: {\n groq: Groq\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await groq.chat.completions.create(body)\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await groq.chat.completions.create(body)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type Groq from 'groq-sdk'\nimport { post } from './post'\n\nexport const completions = ({\n groq,\n}: {\n groq: Groq\n}) => ({\n post: post({ groq }),\n})\n","// import type Groq from 'groq-sdk'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const groqClientAdapter = ({\n groq,\n}: {\n // TODO\n groq: any\n}) => ({\n client: groq,\n requestHandlers: {\n '^/v1/models$': models({ groq }),\n '^/v1/chat/completions$': completions({ groq }),\n },\n})\n","import type OpenAI from 'openai'\n\nexport const get = ({\n openai,\n}: {\n openai: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n const data = await openai.models.list()\n\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n openai,\n}: {\n openai: OpenAI\n}) => ({\n get: get({ openai }),\n})\n","import type OpenAI from 'openai'\n\nexport const post = ({\n openai,\n}: {\n openai: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await openai.chat.completions.create(body)\n console.dir({ response }, { depth: null })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await openai.chat.completions.create(body)\n console.dir({ data }, { depth: null })\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n openai,\n}: {\n openai: OpenAI\n}) => ({\n post: post({ openai }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const openaiClientAdapter = ({\n openai,\n}: {\n openai: OpenAI\n}) => ({\n client: openai,\n requestHandlers: {\n '^/v1/models$': models({ openai }),\n '^/(?:v1|/?openai)/chat/completions$': completions({ openai }),\n },\n})\n","import type { AzureOpenAI } from 'openai'\nimport { completions } from '@/adapters/client/openaiClientAdapter/completions'\n\nexport const azureOpenaiClientAdapter = ({\n azureOpenai,\n}: {\n azureOpenai: AzureOpenAI\n}) => ({\n type: 'AZURE_OPENAI',\n client: azureOpenai,\n requestHandlers: {\n '^/(?:v1|/?openai)/chat/completions$': completions({\n openai: azureOpenai,\n }),\n },\n})\n","import type { Mistral } from '@mistralai/mistralai'\n\nexport const get = ({\n mistral,\n}: {\n mistral: Mistral\n}) => async (_url: string, _options: any) => {\n try {\n const data = await mistral.models.list()\n\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type { Mistral } from '@mistralai/mistralai'\nimport { get } from './get'\n\nexport const models = ({\n mistral,\n}: {\n mistral: Mistral\n}) => ({\n get: get({ mistral }),\n})\n","const serializeDelta = ({\n delta: {\n toolCalls,\n ...rest\n },\n}: {\n delta: any\n}) => ({\n ...rest,\n ...(toolCalls ? {\n tool_calls: toolCalls,\n } : {}),\n})\n\nconst serializeChoice = ({\n choice: {\n finishReason,\n delta,\n ...rest\n },\n}: {\n choice: any\n}) => ({\n ...rest,\n finish_reason: finishReason ?? null,\n delta: serializeDelta({ delta }),\n})\n\nexport const serializeChunk = ({\n chunk,\n}: {\n chunk: any\n}) => ({\n ...chunk.data,\n ...(chunk.data.choices ? {\n choices: chunk.data.choices.map((choice: any) => (\n serializeChoice({ choice })\n )),\n }: {}),\n})\n","import type OpenAI from 'openai'\n\nconst serializeMessage = ({\n message: {\n // @ts-ignore-next-line\n tool_calls,\n // @ts-ignore-next-line\n tool_call_id,\n ...rest\n },\n}: {\n message: OpenAI.ChatCompletionMessageParam\n}) => ({\n ...rest,\n ...(tool_call_id ? {\n toolCallId: tool_call_id,\n } : {}),\n ...(tool_calls ? {\n toolCalls: tool_calls,\n } : {}),\n})\n\nexport const serializeBody = ({\n body,\n}: {\n body: any\n}) => ({\n ...body,\n messages: body.messages.map((message: OpenAI.ChatCompletionMessageParam) => (\n serializeMessage({\n message,\n })\n )),\n})\n","import type { Mistral } from '@mistralai/mistralai'\nimport { serializeChunk } from './serializeChunk'\nimport { serializeBody } from './serializeBody'\n\nexport const post = ({\n mistral,\n}: {\n mistral: Mistral\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n const serializedBody = serializeBody({\n body,\n })\n\n if (body.stream) {\n const response = await mistral.chat.stream(serializedBody)\n\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n const serializedChunk = serializeChunk({\n chunk,\n })\n\n controller.enqueue(`data: ${JSON.stringify(serializedChunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await mistral.chat.complete(serializedBody)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type { Mistral } from '@mistralai/mistralai'\nimport { post } from './post'\n\nexport const completions = ({\n mistral,\n}: {\n mistral: Mistral\n}) => ({\n post: post({ mistral }),\n})\n","import type { Mistral } from '@mistralai/mistralai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const mistralClientAdapter = ({\n mistral,\n}: {\n mistral: Mistral\n}) => ({\n client: mistral,\n requestHandlers: {\n '^/v1/models$': models({ mistral }),\n '^/v1/chat/completions$': completions({ mistral }),\n },\n})\n","import type OpenAI from 'openai'\n\nconst models = [\n 'llama-3.1-sonar-small-128k-online',\n 'llama-3.1-sonar-large-128k-online',\n 'llama-3.1-sonar-huge-128k-online',\n]\n\nexport const get = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n return new Response(JSON.stringify({\n type: 'list',\n data: models.map((model) => ({\n id: model,\n object: 'model',\n })),\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => ({\n get: get({ perplexity }),\n})\n","import type OpenAI from 'openai'\n\nconst agentSideRoles = ['assistant', 'system']\n\nexport const alternatingMessages = ({\n messages,\n}: {\n messages: OpenAI.Chat.ChatCompletionMessageParam[]\n}) => {\n const result = [] as OpenAI.Chat.ChatCompletionMessageParam[]\n\n messages.forEach((message: OpenAI.Chat.ChatCompletionMessageParam, index: number) => {\n result.push(message)\n\n const nextMessage = messages[index + 1]\n if (!nextMessage) return\n\n if (message.role === 'user' && nextMessage.role === 'user') {\n result.push({\n role: 'assistant',\n content: '-',\n })\n } else if (agentSideRoles.includes(message.role) && agentSideRoles.includes(nextMessage.role)) {\n result.push({\n role: 'user',\n content: '-',\n })\n }\n })\n\n return result\n}\n","import type OpenAI from 'openai'\nimport { alternatingMessages } from '@/lib/messages/alternatingMessages'\n\nexport const post = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n const messages = alternatingMessages({\n messages: body.messages,\n })\n\n if (body.stream) {\n const response = await perplexity.chat.completions.create({\n ...body,\n messages,\n })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await perplexity.chat.completions.create(body)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => ({\n post: post({ perplexity }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const perplexityClientAdapter = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => ({\n client: perplexity,\n requestHandlers: {\n '^/v1/models$': models({ perplexity }),\n '^/v1/chat/completions$': completions({ perplexity }),\n },\n})\n","import type Anthropic from '@anthropic-ai/sdk'\n\nconst models = [\n 'claude-3-5-sonnet-20241022',\n 'claude-3-5-sonnet-20240620',\n 'claude-3-opus-20240229',\n 'claude-3-sonnet-20240229',\n 'claude-3-5-haiku-20241022',\n 'claude-3-haiku-20240307',\n]\n\nexport const get = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => async (_url: string, _options: any) => {\n try {\n return new Response(JSON.stringify({\n type: 'list',\n data: models.map((model) => ({\n id: model,\n object: 'model',\n })),\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type Anthropic from '@anthropic-ai/sdk'\nimport { get } from './get'\n\nexport const models = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => ({\n get: get({ anthropic }),\n})\n","import type Anthropic from '@anthropic-ai/sdk'\nimport type OpenAI from 'openai'\nimport { uid, fork, omit, isEmpty } from 'radash'\nimport { nonEmptyMessages } from '@/lib/messages/nonEmptyMessages'\nimport { alternatingMessages } from '@/lib/messages/alternatingMessages'\nimport { firstUserMessages } from '@/lib/messages/firstUserMessages'\nimport { serializeTools } from './serializeTools'\nimport { serializeMessages } from './serializeMessages'\n\nexport const post = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n const messages = body.messages as OpenAI.ChatCompletionMessageParam[]\n const [systemMessages, otherMessages] = fork(messages, (message) => message.role === 'system')\n const system = systemMessages.map((message) => message.content).join('\\n')\n\n const chatMessages = nonEmptyMessages({\n messages: firstUserMessages({\n messages: alternatingMessages({\n messages: otherMessages,\n }),\n }),\n })\n\n const resultOptions = {\n ...omit(body, ['response_format']),\n stream: body.stream ? isEmpty(body.tools) : false,\n system,\n messages: serializeMessages({\n messages: chatMessages,\n }),\n max_tokens: 4096,\n tools: serializeTools({\n tools: body.tools,\n }),\n }\n\n if (body.stream) {\n // @ts-ignore-next-line\n const response = await anthropic.messages.stream(resultOptions)\n\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n if (chunk.type === 'content_block_delta') {\n const delta = chunk.delta.type === 'input_json_delta' ? {\n tool_calls: [\n {\n index: 0,\n function: {\n arguments: chunk.delta.partial_json,\n },\n },\n ]\n } : {\n content: chunk.delta.text,\n }\n\n const messageDelta = {\n id: `chatcmpl-${uid(29)}`,\n object: 'chat.completion.chunk',\n choices: [\n {\n index: chunk.index,\n delta,\n },\n ],\n }\n\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\\n\\n`)\n } else if (chunk.type === 'content_block_start') {\n const delta = chunk.content_block.type === 'tool_use' ? {\n content: null,\n tool_calls: [\n {\n index: 0,\n id: chunk.content_block.id,\n type: 'function',\n function: {\n name: chunk.content_block.name,\n arguments: '',\n }\n }\n ],\n } : {\n content: chunk.content_block.text,\n }\n\n const messageDelta = {\n id: `chatcmpl-${uid(29)}`,\n object: 'chat.completion.chunk',\n choices: [\n {\n index: chunk.index,\n delta,\n },\n ],\n }\n\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\\n\\n`)\n } else if (chunk.type === 'message_start') {\n const messageDelta = {\n id: `chatcmpl-${uid(29)}`,\n object: 'chat.completion.chunk',\n choices: [\n {\n index: 0,\n delta: {\n content: '',\n },\n },\n ],\n }\n\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\\n\\n`)\n }\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n // @ts-ignore-next-line\n const data = await anthropic.messages.create(resultOptions)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { isEmpty } from 'radash'\n\nexport const nonEmptyMessages = ({\n messages,\n}: {\n messages: OpenAI.Chat.ChatCompletionMessageParam[]\n}) => {\n const result = [] as OpenAI.Chat.ChatCompletionMessageParam[]\n\n messages.forEach((message: OpenAI.Chat.ChatCompletionMessageParam) => (\n result.push({\n ...message,\n content: isEmpty(message.content) ? '-' : message.content as string,\n })\n ))\n\n return result\n}\n","import type OpenAI from 'openai'\n\nexport const firstUserMessages = ({\n messages,\n}: {\n messages: OpenAI.Chat.ChatCompletionMessageParam[]\n}): OpenAI.Chat.ChatCompletionMessageParam[] => {\n const firstMessage = messages[0]\n if (!firstMessage) return messages\n\n if (firstMessage.role !== 'user') {\n return [\n {\n role: 'user',\n content: '-',\n },\n ...messages,\n ]\n }\n\n return messages\n}\n","import type OpenAI from 'openai'\n\nexport const serializeTools = ({\n tools,\n}: {\n tools: OpenAI.Beta.AssistantTool[] | undefined\n}) => (\n (tools ?? []).map((tool: OpenAI.Beta.AssistantTool) => {\n if (tool.type === 'function') {\n return {\n name: tool.function.name,\n description: tool.function.description,\n input_schema: tool.function.parameters ?? {\n type: 'object',\n },\n }\n }\n\n return tool\n })\n)\n","import type OpenAI from 'openai'\n\nexport const serializeMessage = ({\n message,\n}: {\n message: OpenAI.ChatCompletionMessageParam\n}) => {\n if (message.role === 'user') {\n return {\n role: 'user',\n content: message.content,\n }\n } else if (message.role === 'assistant') {\n return {\n role: 'assistant',\n content: [\n {\n type: 'text',\n text: message.content,\n },\n ...(message.tool_calls ?? []).map((toolCall) => ({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.function.name,\n input: toolCall.function.arguments ? JSON.parse(toolCall.function.arguments) : {},\n })),\n ],\n }\n } else if (message.role === 'tool') {\n return {\n role: 'user',\n content: [\n {\n type: 'tool_result',\n tool_use_id: message.tool_call_id,\n content: message.content,\n },\n ],\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { serializeMessage } from './serializeMessage'\n\nexport const serializeMessages = ({\n messages,\n}: {\n messages: OpenAI.ChatCompletionMessageParam[]\n}) => (\n messages.map(message => (\n serializeMessage({\n message,\n })\n ))\n)\n","import type Anthropic from '@anthropic-ai/sdk'\nimport { post } from './post'\n\nexport const completions = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => ({\n post: post({ anthropic }),\n})\n","import type Anthropic from '@anthropic-ai/sdk'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const anthropicClientAdapter = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => ({\n client: anthropic,\n requestHandlers: {\n '^/v1/models$': models({ anthropic }),\n '^/v1/chat/completions$': completions({ anthropic }),\n },\n})\n","import type OpenAI from 'openai'\n\nexport const get = ({\n together,\n}: {\n together: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n const data = await together.models.list()\n\n return new Response(JSON.stringify({\n type: 'list',\n // @ts-ignore-next-line\n data: data.body,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n together,\n}: {\n together: OpenAI\n}) => ({\n get: get({ together }),\n})\n","import type OpenAI from 'openai'\n\nexport const post = ({\n together,\n}: {\n together: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await together.chat.completions.create(body)\n console.dir({ response }, { depth: null })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await together.chat.completions.create(body)\n console.dir({ data }, { depth: null })\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n together,\n}: {\n together: OpenAI\n}) => ({\n post: post({ together }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const togetherClientAdapter = ({\n together,\n}: {\n together: OpenAI\n}) => ({\n client: together,\n requestHandlers: {\n '^/v1/models$': models({ together }),\n '^/(?:v1|/?openai)/chat/completions$': completions({ together }),\n },\n})\n","import _ from 'lodash'\nimport { uid, omit, isEmpty } from 'radash'\nimport dayjs from 'dayjs'\nimport OpenAI from 'openai'\nimport { MessageWithRun } from '@/types'\nimport { messages } from './messages'\nimport { supercompat } from '@/supercompat'\n\nconst updatedToolCall = ({\n toolCall,\n delta,\n}: {\n toolCall: any\n delta: any\n}) => {\n if (!toolCall) return omit(delta, ['index'])\n\n // if (delta.type !== 'function') return toolCall\n\n const result = _.cloneDeep(toolCall)\n\n for (const [key, value] of Object.entries(delta.function)) {\n result.function[key] = `${result.function[key] ?? ''}${value}`\n }\n\n return result\n}\n\nconst toolCallsData = ({\n prevToolCalls,\n delta,\n}: {\n prevToolCalls: any\n delta: any\n}) => {\n if (!prevToolCalls) {\n return delta.tool_calls.map((tc: any) => ({\n id: uid(24),\n type: 'function',\n ...omit(tc, ['index']),\n }))\n }\n\n const newToolCalls = _.cloneDeep(prevToolCalls)\n\n for (const runStepDelta of delta.tool_calls) {\n newToolCalls[runStepDelta.index] = updatedToolCall({\n toolCall: newToolCalls[runStepDelta.index],\n delta: runStepDelta,\n })\n }\n\n return newToolCalls\n}\n\nexport const completionsRunAdapter = () => async ({\n client: clientAdapter,\n run,\n onEvent,\n getMessages,\n}: {\n client: OpenAI\n run: OpenAI.Beta.Threads.Run\n onEvent: (event: OpenAI.Beta.AssistantStreamEvent) => Promise<any>\n getMessages: () => Promise<MessageWithRun[]>\n}) => {\n if (run.status !== 'queued') return\n\n const client = supercompat({\n client: clientAdapter,\n })\n\n onEvent({\n event: 'thread.run.in_progress',\n data: {\n ...run,\n status: 'in_progress',\n },\n })\n\n const opts = {\n messages: await messages({\n run,\n getMessages,\n }),\n model: run.model,\n stream: true,\n response_format: run.response_format,\n ...(isEmpty(run.tools) ? {} : { tools: run.tools }),\n } as OpenAI.ChatCompletionCreateParamsStreaming\n\n let providerResponse\n\n try {\n providerResponse = await client.chat.completions.create(opts)\n } catch(e: any) {\n console.error(e)\n\n return onEvent({\n event: 'thread.run.failed',\n data: {\n ...run,\n failed_at: dayjs().unix(),\n status: 'in_progress',\n last_error: {\n code: 'server_error',\n message: `${e?.message ?? ''} ${e?.cause?.message ?? ''}`,\n },\n },\n })\n }\n\n let message = await onEvent({\n event: 'thread.message.created',\n data: {\n id: 'THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID',\n object: 'thread.message',\n completed_at: null,\n run_id: run.id,\n created_at: dayjs().unix(),\n assistant_id: run.assistant_id,\n incomplete_at: null,\n incomplete_details: null,\n metadata: {},\n attachments: [],\n thread_id: run.thread_id,\n content: [{ text: { value: '', annotations: [] }, type: 'text' }],\n role: 'assistant',\n status: 'in_progress',\n },\n })\n\n onEvent({\n event: 'thread.run.step.created',\n data: {\n id: 'THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID',\n object: 'thread.run.step',\n run_id: run.id,\n assistant_id: run.assistant_id,\n thread_id: run.thread_id,\n type: 'message_creation',\n status: 'completed',\n completed_at: dayjs().unix(),\n created_at: dayjs().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: 'message_creation',\n message_creation: {\n message_id: message.id,\n },\n },\n },\n })\n\n let toolCallsRunStep\n let currentContent = ''\n let currentToolCalls\n\n for await (const chunk of providerResponse) {\n const choices = chunk.choices ?? []\n const choice = choices[0]\n if (!choice) continue\n\n const delta = choice.delta\n\n if (delta.content) {\n currentContent = `${currentContent}${delta.content ?? ''}`\n }\n\n if (delta.tool_calls) {\n if (!toolCallsRunStep) {\n toolCallsRunStep = await onEvent({\n event: 'thread.run.step.created',\n data: {\n id: 'THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID',\n object: 'thread.run.step',\n run_id: run.id,\n assistant_id: run.assistant_id,\n thread_id: run.thread_id,\n type: 'tool_calls',\n status: 'in_progress',\n completed_at: null,\n created_at: dayjs().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: 'tool_calls',\n tool_calls: [],\n },\n },\n })\n }\n\n onEvent({\n event: 'thread.run.step.delta',\n data: {\n object: 'thread.run.step.delta',\n run_id: run.id,\n id: toolCallsRunStep.id,\n delta: {\n step_details: {\n type: 'tool_calls',\n tool_calls: delta.tool_calls.map((tc: any) => ({\n id: uid(24),\n type: 'function',\n ...tc,\n })),\n },\n },\n },\n } as OpenAI.Beta.AssistantStreamEvent.ThreadRunStepDelta)\n\n currentToolCalls = toolCallsData({ prevToolCalls: currentToolCalls, delta })\n }\n\n if (delta.content) {\n onEvent({\n event: 'thread.message.delta',\n data: {\n id: message.id,\n delta: {\n content: [\n {\n type: 'text',\n index: 0,\n text: {\n value: delta.content,\n },\n },\n ],\n },\n },\n } as OpenAI.Beta.AssistantStreamEvent.ThreadMessageDelta)\n }\n }\n\n message = await onEvent({\n event: 'thread.message.completed',\n data: {\n ...message,\n status: 'completed',\n content: [{ text: { value: currentContent, annotations: [] }, type: 'text' }],\n tool_calls: currentToolCalls,\n },\n })\n\n if (isEmpty(message.toolCalls)) {\n return onEvent({\n event: 'thread.run.completed',\n data: {\n ...run,\n status: 'completed',\n completed_at: dayjs().unix(),\n },\n })\n }\n\n return onEvent({\n event: 'thread.run.requires_action',\n data: {\n ...run,\n status: 'requires_action',\n required_action: {\n type: 'submit_tool_outputs',\n submit_tool_outputs: {\n tool_calls: message.toolCalls,\n },\n },\n },\n })\n}\n","import type OpenAI from 'openai'\nimport { flat } from 'radash'\nimport { MessageWithRun } from '@/types'\nimport { serializeMessage } from './serializeMessage'\n\nexport const messages = async ({\n run,\n getMessages,\n}: {\n run: OpenAI.Beta.Threads.Run\n getMessages: () => Promise<MessageWithRun[]>\n}) => (\n [\n ...(run.instructions ? [{\n role: 'system',\n content: run.instructions,\n }] : []),\n ...flat((await getMessages()).map((message: MessageWithRun) => serializeMessage({ message }))),\n ]\n)\n","import type OpenAI from 'openai'\nimport { MessageWithRun } from '@/types'\n\nconst serializeToolCall = ({\n toolCall,\n}: {\n toolCall: OpenAI.Beta.Threads.Runs.Steps.FunctionToolCall\n}) => ({\n tool_call_id: toolCall.id,\n role: 'tool' as 'tool',\n name: toolCall.function.name,\n content: toolCall.function.output ?? '',\n})\n\nconst serializeMessageWithContent = ({\n message,\n}: {\n message: MessageWithRun\n}) => ({\n role: message.role,\n content: serializeContent({\n content: message.content as unknown as OpenAI.Beta.Threads.Messages.TextContentBlock[],\n }),\n ...(message?.metadata?.toolCalls ? { tool_calls: message.metadata.toolCalls } : {}),\n})\n\nconst serializeContent = ({\n content,\n}: {\n content: OpenAI.Beta.Threads.Messages.TextContentBlock[]\n}) => content.map((content) => content.text.value).join('\\n')\n\nexport const serializeMessage = ({\n message\n}: {\n message: MessageWithRun\n}) => {\n const result = [serializeMessageWithContent({ message })]\n\n const run = message.run\n\n if (!run) return result\n\n const messageToolCalls = message.metadata?.toolCalls || []\n\n messageToolCalls.forEach((tc: OpenAI.Beta.Threads.Runs.Steps.ToolCall) => {\n const runStep = run.runSteps.find((rs) => {\n if (rs.type !== 'tool_calls') return false\n\n return rs.step_details.tool_calls.some((rsTc: OpenAI.Beta.Threads.Runs.Steps.ToolCall) => {\n if (rsTc.type !== 'function') return false\n\n return rsTc.id === tc.id\n })\n })\n\n if (!runStep) return\n\n const toolCall = runStep.step_details.tool_calls.find((rsTc: OpenAI.Beta.Threads.Runs.Steps.ToolCall) => {\n if (rsTc.type !== 'function') return false\n\n return rsTc.id === tc.id\n })\n\n result.push(serializeToolCall({ toolCall }))\n })\n\n return result\n}\n","export const messagesRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/messages$'\n","export const runsRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs$'\n","export const runRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)$'\n","export const submitToolOutputsRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/submit_tool_outputs$'\n","export const stepsRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/steps$'\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport dayjs from 'dayjs'\nimport { serializeThread } from './serializeThread'\n\ntype ThreadCreateResponse = Response & {\n json: () => Promise<OpenAI.Beta.Threads['create']>\n}\n\nexport const post = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (...args: Parameters<OpenAI.Beta.Threads['create']>): Promise<ThreadCreateResponse> => {\n // @ts-ignore-next-line\n const body = JSON.parse(args[1].body)\n\n const messages = body.messages || []\n const metadata = body.metadata || {}\n\n const initialCreatedAt = dayjs().subtract(messages.length, 'seconds').format()\n\n const thread = await prisma.thread.create({\n data: {\n metadata,\n ...(metadata.assistantId ? ({\n assistant: {\n connect: {\n id: metadata.assistantId,\n },\n },\n }) : {}),\n messages: {\n create: messages.map((message: OpenAI.Beta.ThreadCreateParams.Message, index: number) => ({\n role: message.role === 'user' ? 'USER' : 'ASSISTANT',\n content: [{\n type: 'text',\n text: {\n annotations: [],\n value: message.content,\n },\n },\n ],\n attachments: message.attachments,\n metadata: message.metadata,\n createdAt: dayjs(initialCreatedAt).add(index, 'seconds').toDate(),\n })),\n },\n },\n })\n\n return new Response(JSON.stringify(\n serializeThread({ thread }),\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","// @ts-ignore-next-line\nimport type { Thread } from '@prisma/client'\nimport dayjs from 'dayjs'\n\nexport const serializeThread = ({\n thread,\n}: {\n thread: Thread\n}) => ({\n id: thread.id,\n object: 'thread' as 'thread',\n created_at: dayjs(thread.createdAt).unix(),\n metadata: thread.metadata,\n // TODO\n tool_resources: null,\n})\n","import type { PrismaClient } from '@prisma/client'\nimport { post } from './post'\n\nexport const threads = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n post: post({ prisma }),\n})\n","// @ts-ignore-next-line\nimport type { Message } from '@prisma/client'\nimport dayjs from 'dayjs'\nimport type OpenAI from 'openai'\nimport { assign } from 'radash'\n\nexport const serializeMessage = ({\n message,\n}: {\n message: Message\n}) => ({\n id: message.id,\n object: 'thread.message' as 'thread.message',\n created_at: dayjs(message.createdAt).unix(),\n thread_id: message.threadId,\n completed_at: message.completedAt ? dayjs(message.completedAt).unix() : null,\n incomplete_at: message.incompleteAt ? dayjs(message.incompleteAt).unix() : null,\n incomplete_details: message.incompleteDetails as unknown as OpenAI.Beta.Threads.Messages.Message.IncompleteDetails,\n role: message.role.toLowerCase() as 'user' | 'assistant',\n content: message.content as unknown as OpenAI.Beta.Threads.Messages.TextContentBlock[],\n assistant_id: message.assistantId,\n run_id: message.runId,\n attachments: message.attachments,\n status: message.status.toLowerCase() as OpenAI.Beta.Threads.Messages.Message['status'],\n metadata: assign(message.metadata as Record<any, any> ?? {}, message.toolCalls ? { toolCalls: message.toolCalls } : {}),\n})\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { serializeMessage } from './serializeMessage'\nimport { messagesRegexp } from '@/lib/messages/messagesRegexp'\n\ntype MessageCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Messages['create']>>\n}\n\nconst messageContentBlocks = ({\n content,\n}: {\n content: string\n}) => ([\n {\n type: 'text',\n text: {\n value: content ?? '',\n annotations: [],\n },\n },\n])\n\nexport const post = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string, options: any): Promise<MessageCreateResponse> => {\n const url = new URL(urlString)\n\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp))!\n\n const body = JSON.parse(options.body)\n const { role, content } = body\n\n const message = await prisma.message.create({\n data: {\n threadId,\n content: messageContentBlocks({ content }),\n role: role === 'user' ? 'USER' : 'ASSISTANT',\n },\n })\n\n return new Response(JSON.stringify(\n serializeMessage({ message }),\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type OpenAI from 'openai'\n// @ts-ignore-next-line\nimport type { PrismaClient, Message } from '@prisma/client'\nimport { assign, last } from 'radash'\nimport { messagesRegexp } from '@/lib/messages/messagesRegexp'\nimport { serializeMessage } from './serializeMessage'\n\ntype MessageCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Messages['create']>>\n}\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string): Promise<MessageCreateResponse> => {\n const url = new URL(urlString)\n\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp))!\n\n const {\n limit,\n order,\n after,\n } = assign({\n limit: '20',\n order: 'desc',\n // after: null,\n }, Object.fromEntries(url.searchParams))\n\n const messages = await prisma.message.findMany({\n where: {\n threadId,\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order,\n },\n ...(after ? {\n skip: 1,\n cursor: {\n id: after,\n },\n }: {}),\n }) as Message[]\n\n return new Response(JSON.stringify({\n data: messages.map((message: Message) => (\n serializeMessage({ message })\n )),\n hasNextPage: () => messages.length === parseInt(limit),\n body: {\n last_id: last(messages)?.id ?? null,\n },\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport { post } from './post'\nimport { get } from './get'\n\nexport const messages = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n post: post({ prisma }),\n get: get({ prisma }),\n})\n","import type OpenAI from 'openai'\n// @ts-ignore-next-line\nimport type { PrismaClient, Run } from '@prisma/client'\nimport { assign, last } from 'radash'\nimport { runsRegexp } from '@/lib/runs/runsRegexp'\nimport { serializeRun } from './serializeRun'\n\ntype MessageCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Messages['create']>>\n}\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string): Promise<MessageCreateResponse> => {\n const url = new URL(urlString)\n\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp))!\n\n const {\n limit,\n order,\n after,\n } = assign({\n limit: '20',\n order: 'desc',\n // after: null,\n }, Object.fromEntries(url.searchParams))\n\n const runs = await prisma.run.findMany({\n where: {\n threadId,\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order,\n },\n ...(after ? {\n skip: 1,\n cursor: {\n id: after,\n },\n }: {}),\n })\n\n return new Response(JSON.stringify({\n data: runs.map((run: Run) => (\n serializeRun({ run })\n )),\n hasNextPage: () => runs.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: last(runs)?.id ?? null,\n },\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type OpenAI from 'openai'\n// @ts-ignore-next-line\nimport type { Run } from '@prisma/client'\nimport dayjs from 'dayjs'\n\nexport const serializeRun = ({\n run,\n}: {\n run: Run\n}): OpenAI.Beta.Threads.Run => ({\n id: run.id,\n object: 'thread.run' as 'thread.run',\n created_at: dayjs(run.createdAt).unix(),\n thread_id: run.threadId,\n assistant_id: run.assistantId,\n status: run.status.toLowerCase() as OpenAI.Beta.Threads.Run['status'],\n required_action: run.requiredAction as OpenAI.Beta.Threads.Run['required_action'],\n last_error: run.lastError as OpenAI.Beta.Threads.Run['last_error'],\n expires_at: dayjs(run.expiresAt).unix(),\n started_at: run.startedAt ? dayjs(run.startedAt).unix() : null,\n cancelled_at: run.cancelledAt ? dayjs(run.cancelledAt).unix() : null,\n failed_at: run.failedAt ? dayjs(run.failedAt).unix() : null,\n completed_at: run.completedAt ? dayjs(run.completedAt).unix() : null,\n model: run.model,\n instructions: run.instructions,\n tools: run.tools as OpenAI.Beta.Threads.Run['tools'],\n metadata: run.metadata,\n usage: run.usage as OpenAI.Beta.Threads.Run['usage'],\n truncation_strategy: {\n type: 'auto',\n },\n response_format: {\n type: 'text',\n },\n // TODO\n incomplete_details: null,\n max_completion_tokens: null,\n max_prompt_tokens: null,\n tool_choice: 'auto',\n parallel_tool_calls: true,\n})\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport dayjs from 'dayjs'\nimport { assign } from 'radash'\nimport { runsRegexp } from '@/lib/runs/runsRegexp'\nimport { serializeRun } from './serializeRun'\nimport { RunAdapterPartobClient } from '@/types'\nimport { onEvent } from './onEvent'\nimport { getMessages } from './getMessages'\n\ntype RunCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Runs['create']>>\n}\n\nexport const post = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapterPartobClient\n}) => async (urlString: string, options: any): Promise<RunCreateResponse> => {\n const url = new URL(urlString)\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp))!\n\n const body = JSON.parse(options.body)\n const { assistant_id, stream } = body\n\n const assistant = await prisma.assistant.findUnique({\n where: {\n id: assistant_id,\n },\n })\n\n if (!assistant) {\n throw new Error('Assistant not found')\n }\n\n const {\n model,\n instructions,\n // additional_instructions,\n tools,\n metadata,\n response_format,\n truncation_strategy,\n } = assign({\n model: assistant.modelSlug,\n instructions: '',\n additional_instructions: null,\n truncation_strategy: {\n type: 'auto',\n },\n response_format: {\n type: 'text',\n },\n // tools: [],\n // metadata: {},\n }, body)\n\n const run = await prisma.run.create({\n data: {\n status: 'QUEUED',\n expiresAt: dayjs().add(1, 'hour').unix(),\n model,\n instructions,\n tools,\n metadata,\n thread: {\n connect: {\n id: threadId,\n },\n },\n assistant: {\n connect: {\n id: assistant_id,\n },\n },\n truncationStrategy: truncation_strategy,\n responseFormat: response_format,\n },\n })\n\n const data = serializeRun({ run })\n\n const readableStream = new ReadableStream({\n async start(controller) {\n try {\n await runAdapter({\n run: data,\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n }),\n getMessages: getMessages({\n prisma,\n run,\n }),\n })\n } catch (error: any) {\n console.error(error)\n\n onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n })({\n event: 'thread.run.failed',\n data: {\n id: run.id,\n failed_at: dayjs().unix(),\n last_error: {\n code: 'server_error',\n message: `${error?.message ?? ''} ${error?.cause?.message ?? ''}`,\n },\n },\n } as OpenAI.Beta.AssistantStreamEvent.ThreadRunFailed)\n }\n\n controller.close()\n },\n })\n\n if (stream) {\n return new Response(readableStream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n return new Response(JSON.stringify(\n data\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { RunStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadRunInProgress = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunInProgress\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunInProgress>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.IN_PROGRESS,\n },\n })\n}\n","import type OpenAI from 'openai'\nimport { RunStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadRunFailed = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunFailed\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunFailed>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.FAILED,\n failedAt: event.data.failed_at,\n lastError: event.data.last_error,\n },\n })\n}\n","import type OpenAI from 'openai'\nimport { RunStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadRunCompleted = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunCompleted\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunCompleted>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.COMPLETED,\n requiredAction: undefined,\n },\n })\n}\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { RunStatus } from '@/types/prisma'\n\nexport const threadRunRequiresAction = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunRequiresAction\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunRequiresAction>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.REQUIRES_ACTION,\n requiredAction: event.data.required_action,\n },\n })\n}\n","import dayjs from 'dayjs'\n// @ts-ignore-next-line\nimport type { RunStep } from '@prisma/client'\nimport type OpenAI from 'openai'\n\nexport const serializeRunStep = ({\n runStep,\n}: {\n runStep: RunStep\n}) => ({\n id: runStep.id,\n object: 'thread.run.step' as 'thread.run.step',\n created_at: dayjs(runStep.createdAt).unix(),\n assistant_id: runStep.assistantId,\n thread_id: runStep.threadId,\n run_id: runStep.runId,\n type: runStep.type.toLowerCase() as OpenAI.Beta.Threads.Runs.RunStep['type'],\n status: runStep.status.toLowerCase() as OpenAI.Beta.Threads.Runs.RunStep['status'],\n // @ts-ignore-next-line\n step_details: runStep.stepDetails as OpenAI.Beta.Threads.Runs.RunStep['step_details'],\n last_error: runStep.lastError as OpenAI.Beta.Threads.Runs.RunStep['last_error'],\n expired_at: runStep.expiredAt ? dayjs(runStep.expiredAt).unix() : null,\n cancelled_at: runStep.cancelledAt ? dayjs(runStep.cancelledAt).unix() : null,\n failed_at: runStep.failedAt ? dayjs(runStep.failedAt).unix() : null,\n completed_at: runStep.completedAt ? dayjs(runStep.completedAt).unix() : null,\n metadata: runStep.metadata,\n usage: runStep.usage as OpenAI.Beta.Threads.Runs.RunStep['usage'],\n})\n","import type OpenAI from 'openai'\nimport { RunStepType, RunStepStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\nimport { serializeRunStep } from '../../steps/serializeRunStep'\n\nconst type = (event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated) => {\n if (event.data.type === 'message_creation') return RunStepType.MESSAGE_CREATION\n if (event.data.type === 'tool_calls') return RunStepType.TOOL_CALLS\n\n throw new Error(`Unknown type: ${event.data.type}`)\n}\n\nconst status = (event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated) => {\n if (event.data.status === 'in_progress') return RunStepStatus.IN_PROGRESS\n if (event.data.status === 'cancelled') return RunStepStatus.CANCELLED\n if (event.data.status === 'completed') return RunStepStatus.COMPLETED\n if (event.data.status === 'failed') return RunStepStatus.FAILED\n if (event.data.status === 'expired') return RunStepStatus.EXPIRED\n\n throw new Error(`Unknown status: ${event.data.status}`)\n}\n\nexport const threadRunStepCreated = async ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated>\n}) => {\n const runStep = await prisma.runStep.create({\n data: {\n runId: event.data.run_id,\n assistantId: event.data.assistant_id,\n threadId: event.data.thread_id,\n type: type(event),\n status: status(event),\n stepDetails: event.data.step_details,\n completedAt: event.data.completed_at,\n },\n })\n\n const serializedRunStep = serializeRunStep({ runStep })\n\n controller.enqueue({\n ...event,\n data: serializedRunStep,\n })\n\n return serializedRunStep\n}\n","import type OpenAI from 'openai'\n\nexport const threadRunStepDelta = ({\n event,\n controller,\n}: {\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepDelta\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunStepDelta>\n}) => (\n controller.enqueue(event)\n)\n","import type OpenAI from 'openai'\nimport { MessageStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\nimport { serializeMessage } from '../../../messages/serializeMessage'\n\nconst status = (event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageCreated) => {\n if (event.data.status === 'completed') return MessageStatus.COMPLETED\n if (event.data.status === 'in_progress') return MessageStatus.IN_PROGRESS\n if (event.data.status === 'incomplete') return MessageStatus.INCOMPLETE\n\n throw new Error(`Unknown status: ${event.data.status}`)\n}\n\nexport const threadMessageCreated = async ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageCreated\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadMessageCreated>\n}) => {\n const message = await prisma.message.create({\n data: {\n threadId: event.data.thread_id,\n content: event.data.content as unknown as OpenAI.Beta.Threads.Messages.TextContentBlock[],\n role: event.data.role === 'assistant' ? 'ASSISTANT' : 'USER',\n assistantId: event.data.assistant_id,\n runId: event.data.run_id,\n status: status(event),\n },\n })\n\n const serializedMessage = serializeMessage({ message })\n\n controller.enqueue({\n ...event,\n data: serializedMessage,\n })\n\n return serializedMessage\n}\n","import type OpenAI from 'openai'\n\nexport const threadMessageDelta = ({\n event,\n controller,\n}: {\n event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageDelta\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadMessageDelta>\n}) => (\n controller.enqueue(event)\n)\n","import type OpenAI from 'openai'\nimport { MessageStatus, RunStepType } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadMessageCompleted = async ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageCompleted\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadMessageCompleted>\n}) => {\n controller.enqueue(event)\n\n if (event.data.tool_calls) {\n const latestRunStep = await prisma.runStep.findFirst({\n where: {\n threadId: event.data.thread_id,\n type: RunStepType.TOOL_CALLS,\n },\n orderBy: {\n createdAt: 'desc',\n },\n })\n\n if (!latestRunStep) {\n throw new Error('No run step found')\n }\n\n await prisma.runStep.update({\n where: {\n id: latestRunStep.id,\n },\n data: {\n stepDetails: {\n type: 'tool_calls',\n tool_calls: event.data.tool_calls,\n },\n },\n })\n }\n\n return prisma.message.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: MessageStatus.COMPLETED,\n ...(event.data.content ? { content: event.data.content } : {}),\n ...(event.data.tool_calls ? { toolCalls: event.data.tool_calls } : {}),\n },\n })\n}\n","import { threadRunInProgress } from './threadRunInProgress'\nimport { threadRunFailed } from './threadRunFailed'\nimport { threadRunCompleted } from './threadRunCompleted'\nimport { threadRunRequiresAction } from './threadRunRequiresAction'\nimport { threadRunStepCreated } from './threadRunStepCreated'\nimport { threadRunStepDelta } from './threadRunStepDelta'\nimport { threadMessageCreated } from './threadMessageCreated'\nimport { threadMessageDelta } from './threadMessageDelta'\nimport { threadMessageCompleted } from './threadMessageCompleted'\n\nexport const handlers = {\n 'thread.run.in_progress': threadRunInProgress,\n 'thread.run.failed': threadRunFailed,\n 'thread.run.completed': threadRunCompleted,\n 'thread.run.requires_action': threadRunRequiresAction,\n 'thread.run.step.created': threadRunStepCreated,\n 'thread.run.step.delta': threadRunStepDelta,\n 'thread.message.created': threadMessageCreated,\n 'thread.message.delta': threadMessageDelta,\n 'thread.message.completed': threadMessageCompleted,\n}\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { handlers } from './handlers'\n\nexport const onEvent = ({\n prisma,\n controller,\n}: {\n prisma: PrismaClient\n controller: ReadableStreamDefaultController\n}) => (event: OpenAI.Beta.AssistantStreamEvent) => {\n // @ts-ignore-next-line\n const handler = handlers[event.event]\n\n if (!handler) {\n console.log('No handler for event', event)\n return\n }\n\n return handler({ prisma, controller, event })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport { serializeMessage } from '../messages/serializeMessage'\nimport { serializeRunStep } from './steps/serializeRunStep'\nimport { serializeRun } from './serializeRun'\nimport type { Run, MessageWithRun, RunStep } from '@/types/prisma'\n\nconst getTake = ({\n run,\n}: {\n run: Run\n}) => {\n // @ts-ignore-next-line\n if (run.truncationStrategy.type === 'auto') {\n return null\n }\n\n // @ts-ignore-next-line\n if (run.truncationStrategy.type === 'last_messages') {\n // @ts-ignore-next-line\n if (!run.truncationStrategy.last_messages) {\n throw new Error('Truncation strategy last_messages is required')\n }\n\n // @ts-ignore-next-line\n return -run.truncationStrategy.last_messages\n }\n\n // @ts-ignore-next-line\n throw new Error(`Unsupported truncation strategy type: ${run.truncationStrategy.type}`)\n}\n\nexport const getMessages = ({\n prisma,\n run,\n}: {\n prisma: PrismaClient\n run: Run\n}) => async () => {\n const take = getTake({\n run,\n })\n\n const messages = await prisma.message.findMany({\n where: {\n threadId: run.threadId,\n },\n include: {\n run: {\n include: {\n runSteps: true,\n },\n },\n },\n orderBy: {\n createdAt: 'asc',\n },\n ...(take ? { take } : {}),\n })\n\n return messages.map((message: MessageWithRun) => ({\n ...serializeMessage({ message }),\n run: message.run ? ({\n ...serializeRun({ run: message.run }),\n runSteps: message.run.runSteps.map((runStep: RunStep) => (\n serializeRunStep({ runStep })\n )),\n }) : null,\n }))\n}\n","import type { PrismaClient } from '@prisma/client'\nimport type { RunAdapter } from '@/types'\nimport { get } from './get'\nimport { post } from './post'\n\nexport const runs = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapter\n}) => ({\n get: get({ prisma }),\n post: post({ prisma, runAdapter }),\n})\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { runRegexp } from '@/lib/runs/runRegexp'\nimport { serializeRun } from '../runs/serializeRun'\n\ntype GetResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Runs['retrieve']>>\n}\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string): Promise<GetResponse> => {\n const url = new URL(urlString)\n\n const [, threadId, runId] = url.pathname.match(new RegExp(runRegexp))!\n\n const run = await prisma.run.findUnique({\n where: {\n id: runId,\n threadId,\n },\n })\n\n return new Response(JSON.stringify(\n serializeRun({ run })\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'openai-poll-after-ms': '5000',\n },\n })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport type { RunAdapter } from '@/types'\nimport { get } from './get'\n// import { post } from './post'\n\nexport const run = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapter\n}) => ({\n get: get({ prisma }),\n // post: post({ prisma, runAdapter }),\n})\n","// @ts-ignore-next-line\nimport type { PrismaClient, RunStep } from '@prisma/client'\nimport { assign, last } from 'radash'\nimport { stepsRegexp } from '@/lib/steps/stepsRegexp'\nimport { serializeRunStep } from './serializeRunStep'\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string) => {\n const url = new URL(urlString)\n\n const [, threadId,, runId] = url.pathname.match(new RegExp(stepsRegexp))!\n\n const {\n limit,\n order,\n after,\n } = assign({\n limit: '20',\n order: 'desc',\n // after: null,\n }, Object.fromEntries(url.searchParams))\n\n const runSteps = await prisma.runStep.findMany({\n where: {\n threadId,\n runId,\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order,\n },\n ...(after ? {\n skip: 1,\n cursor: {\n id: after,\n },\n }: {}),\n })\n\n return new Response(JSON.stringify({\n data: runSteps.map((runStep: RunStep) => (\n serializeRunStep({ runStep })\n )),\n hasNextPage: () => runSteps.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: last(runSteps)?.id ?? null,\n },\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport { get } from './get'\n\nexport const steps = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n get: get({ prisma }),\n})\n","import { PrismaClient } from '@prisma/client'\nimport dayjs from 'dayjs'\n\nexport const updateRun = async ({\n prisma,\n runId,\n threadId,\n onThreadRunStepCompleted = () => {},\n tool_outputs,\n}: {\n prisma: PrismaClient\n runId: string\n threadId: string\n onThreadRunStepCompleted?: ({ runStep }: { runStep: any }) => void\n tool_outputs: any\n}) => (\n prisma.$transaction(async (prisma: PrismaClient) => {\n const runSteps = await prisma.runStep.findMany({\n where: {\n threadId,\n runId,\n type: 'TOOL_CALLS',\n status: 'IN_PROGRESS',\n },\n orderBy: {\n createdAt: 'asc',\n },\n })\n\n for (const runStep of runSteps) {\n const completedRunStep = await prisma.runStep.update({\n where: {\n id: runStep.id,\n },\n data: {\n status: 'COMPLETED',\n completedAt: dayjs().unix(),\n stepDetails: {\n type: 'tool_calls',\n // @ts-ignore-next-line\n tool_calls: runStep.stepDetails!.tool_calls.map((toolCall) => {\n // @ts-ignore-next-line\n const toolOutput = tool_outputs.find((output) => output.tool_call_id === toolCall.id) || tool_outputs[0]\n\n if (!toolOutput) {\n console.dir({ toolOutput, runStep, tool_outputs, runSteps }, { depth: null })\n throw new Error('Tool output not found')\n }\n\n return {\n id: toolCall.id,\n type: toolCall.type,\n function: {\n ...toolCall.function,\n output: toolOutput.output,\n },\n }\n }),\n },\n },\n })\n\n onThreadRunStepCompleted({\n runStep: completedRunStep,\n })\n }\n\n return prisma.run.update({\n where: {\n id: runId,\n },\n data: {\n status: 'QUEUED',\n },\n })\n })\n)\n","import type { PrismaClient } from '@prisma/client'\nimport { submitToolOutputsRegexp } from '@/lib/runs/submitToolOutputsRegexp'\nimport { RunAdapterPartobClient } from '@/types'\nimport { serializeRun } from '../../serializeRun'\nimport { onEvent } from '../../onEvent'\nimport { getMessages } from '../../getMessages'\nimport { serializeRunStep } from '../../steps/serializeRunStep'\nimport { updateRun } from './updateRun'\n\nexport const post = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapterPartobClient\n}) => async (urlString: string, options: any) => {\n const url = new URL(urlString)\n const [, threadId, runId] = url.pathname.match(new RegExp(submitToolOutputsRegexp))!\n\n const body = JSON.parse(options.body)\n\n const {\n tool_outputs,\n stream,\n } = body\n\n if (stream) {\n const readableStream = new ReadableStream({\n async start(controller) {\n const run = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs,\n onThreadRunStepCompleted: async ({ runStep }) => {\n controller.enqueue(`data: ${JSON.stringify({\n event: 'thread.run.step.completed',\n data: serializeRunStep({ runStep }),\n })}\\n\\n`)\n }\n })\n\n await runAdapter({\n run: serializeRun({ run }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n }),\n getMessages: getMessages({ prisma, run }),\n })\n\n controller.close()\n },\n })\n\n return new Response(readableStream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n const run = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs,\n })\n\n await new Promise((resolve) => (\n new ReadableStream({\n async start(controller) {\n await runAdapter({\n run: serializeRun({ run }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n }),\n getMessages: getMessages({ prisma, run }),\n })\n\n controller.close()\n resolve(void 0)\n },\n })\n ))\n\n return new Response(JSON.stringify(\n run\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type { PrismaClient } from '@prisma/client'\nimport type { RunAdapter } from '@/types'\nimport { post } from './post'\n\nexport const submitToolOutputs = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapter\n}) => ({\n post: post({\n prisma,\n // @ts-ignore-next-line\n runAdapter,\n }),\n})\n","import type { PrismaClient } from '@prisma/client'\nimport { StorageAdapterArgs } from '@/types'\nimport { messagesRegexp } from '@/lib/messages/messagesRegexp'\nimport { runsRegexp } from '@/lib/runs/runsRegexp'\nimport { runRegexp } from '@/lib/runs/runRegexp'\nimport { submitToolOutputsRegexp } from '@/lib/runs/submitToolOutputsRegexp'\nimport { stepsRegexp } from '@/lib/steps/stepsRegexp'\nimport { threads } from './threads'\nimport { messages } from './threads/messages'\nimport { runs } from './threads/runs'\nimport { run } from './threads/run'\nimport { steps } from './threads/runs/steps'\nimport { submitToolOutputs } from './threads/runs/submitToolOutputs'\n\nexport const prismaStorageAdapter = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n runAdapter,\n}: StorageAdapterArgs) => ({\n requestHandlers: {\n '^/(?:v1|/?openai)/threads$': threads({ prisma }),\n [messagesRegexp]: messages({ prisma }),\n [runsRegexp]: runs({ prisma, runAdapter }),\n [runRegexp]: run({ prisma, runAdapter }),\n [stepsRegexp]: steps({ prisma }),\n [submitToolOutputsRegexp]: submitToolOutputs({ prisma, runAdapter }),\n },\n})\n"]}
1
+ {"version":3,"sources":["/Users/domas/Developer/supercorp/supercompat/packages/supercompat/dist/index.cjs","../src/index.ts","../src/supercompat.ts","../src/supercompatFetch/requestHandlers.ts","../src/supercompatFetch/findRequestHandler.ts","../src/supercompatFetch/originalFetch.ts","../src/supercompatFetch/index.ts","../src/lib/azureOpenai/endpointFromBaseUrl.ts","../src/adapters/client/groqClientAdapter/models/get.ts","../src/adapters/client/groqClientAdapter/models/index.ts","../src/adapters/client/groqClientAdapter/completions/post.ts","../src/adapters/client/groqClientAdapter/completions/index.ts","../src/adapters/client/groqClientAdapter/index.ts","../src/adapters/client/openaiClientAdapter/models/get.ts","../src/adapters/client/openaiClientAdapter/models/index.ts","../src/adapters/client/openaiClientAdapter/completions/post.ts","../src/adapters/client/openaiClientAdapter/completions/index.ts","../src/adapters/client/openaiClientAdapter/index.ts","../src/adapters/client/azureOpenaiClientAdapter/index.ts","../src/adapters/client/mistralClientAdapter/models/get.ts","../src/adapters/client/mistralClientAdapter/models/index.ts","../src/adapters/client/mistralClientAdapter/completions/serializeChunk.ts","../src/adapters/client/mistralClientAdapter/completions/serializeBody.ts","../src/adapters/client/mistralClientAdapter/completions/post.ts","../src/adapters/client/mistralClientAdapter/completions/index.ts","../src/adapters/client/mistralClientAdapter/index.ts","../src/adapters/client/perplexityClientAdapter/models/get.ts","../src/adapters/client/perplexityClientAdapter/models/index.ts","../src/lib/messages/alternatingMessages.ts","../src/adapters/client/perplexityClientAdapter/completions/post.ts","../src/adapters/client/perplexityClientAdapter/completions/index.ts","../src/adapters/client/perplexityClientAdapter/index.ts","../src/adapters/client/anthropicClientAdapter/models/get.ts","../src/adapters/client/anthropicClientAdapter/models/index.ts","../src/adapters/client/anthropicClientAdapter/completions/post.ts","../src/lib/messages/nonEmptyMessages.ts","../src/lib/messages/firstUserMessages.ts","../src/adapters/client/anthropicClientAdapter/completions/serializeTools.ts","../src/adapters/client/anthropicClientAdapter/completions/serializeMessages/serializeMessage.ts","../src/adapters/client/anthropicClientAdapter/completions/serializeMessages/index.ts","../src/adapters/client/anthropicClientAdapter/completions/index.ts","../src/adapters/client/anthropicClientAdapter/index.ts","../src/adapters/client/togetherClientAdapter/models/get.ts","../src/adapters/client/togetherClientAdapter/models/index.ts","../src/adapters/client/togetherClientAdapter/completions/post.ts","../src/adapters/client/togetherClientAdapter/completions/index.ts","../src/adapters/client/togetherClientAdapter/index.ts","../src/adapters/client/googleClientAdapter/models/get.ts","../src/adapters/client/googleClientAdapter/models/index.ts","../src/adapters/client/googleClientAdapter/completions/post.ts","../src/adapters/client/googleClientAdapter/completions/index.ts","../src/adapters/client/googleClientAdapter/index.ts","../src/adapters/client/ollamaClientAdapter/models/get.ts","../src/adapters/client/ollamaClientAdapter/models/index.ts","../src/adapters/client/ollamaClientAdapter/completions/post.ts","../src/adapters/client/ollamaClientAdapter/completions/index.ts","../src/adapters/client/ollamaClientAdapter/index.ts","../src/adapters/run/completionsRunAdapter/index.ts","../src/adapters/run/completionsRunAdapter/messages/index.ts","../src/adapters/run/completionsRunAdapter/messages/serializeMessage.ts","../src/lib/messages/messagesRegexp.ts","../src/lib/runs/runsRegexp.ts","../src/lib/runs/runRegexp.ts","../src/lib/runs/submitToolOutputsRegexp.ts","../src/lib/steps/stepsRegexp.ts","../src/adapters/storage/prismaStorageAdapter/threads/post.ts","../src/adapters/storage/prismaStorageAdapter/threads/serializeThread.ts","../src/adapters/storage/prismaStorageAdapter/threads/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/serializeMessage.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/post.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/messages/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/serializeRun.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/post.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunInProgress.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunFailed.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunCompleted.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunRequiresAction.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/steps/serializeRunStep.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepCreated.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepDelta.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCreated.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageDelta.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCompleted.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/getMessages.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/run/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/run/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/steps/get.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/steps/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/updateRun.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/index.ts","../src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/index.ts","../src/adapters/storage/prismaStorageAdapter/index.ts"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","src_exports","anthropicClientAdapter","azureOpenaiClientAdapter","completionsRunAdapter","googleClientAdapter","groqClientAdapter","mistralClientAdapter","ollamaClientAdapter","openaiClientAdapter","perplexityClientAdapter","prismaStorageAdapter","supercompat","togetherClientAdapter","module","exports","import_openai","require","import_radash","storageRequestHandlers","storage","runAdapter","client","result","partob","requestHandlers","assign","findRequestHandler","url","pathname","URL","regex","RegExp","test","originalFetch","args","fetch","options","headers","authorization","defaultHeaders","Authorization","supercompatFetch","pathHandler","requestHandler","method","endpointFromBaseUrl","baseURL","replace","type","AzureOpenAI","apiKey","apiVersion","endpoint","OpenAI","groq","_url","_options","data","error","models","list","Response","JSON","stringify","status","post","body","response","stream","parse","chat","completions","ReadableStream","start","controller","chunk","enqueue","close","openai","console","dir","depth","azureOpenai","mistral","serializeDelta","delta","toolCalls","rest","tool_calls","serializeChoice","choice","finishReason","finish_reason","serializeChunk","choices","map","serializeMessage","message","tool_call_id","toolCallId","serializeBody","messages","serializedBody","serializedChunk","complete","perplexity","model","id","object","agentSideRoles","alternatingMessages","forEach","index","push","nextMessage","role","content","includes","anthropic","nonEmptyMessages","import_radash2","isEmpty","firstUserMessages","firstMessage","serializeTools","tools","tool","function","description","input_schema","parameters","text","toolCall","input","arguments","tool_use_id","serializeMessages","systemMessages","otherMessages","system","chatMessages","resultOptions","import_radash3","fork","join","omit","max_tokens","messageDelta","partial_json","uid","content_block","together","google","ollama","import_lodash","import_dayjs","serializeToolCall","output","serializeMessageWithContent","serializeContent","metadata","run","messageToolCalls","tc","runStep","runSteps","find","rs","step_details","some","rsTc","getMessages","instructions","import_radash4","flat","updatedToolCall","import_radash5","_","cloneDeep","entries","toolCallsData","prevToolCalls","newToolCalls","runStepDelta","clientAdapter","onEvent","opts","providerResponse","e","toolCallsRunStep","currentContent","currentToolCalls","event","response_format","failed_at","dayjs","unix","last_error","code","cause","completed_at","run_id","created_at","assistant_id","incomplete_at","incomplete_details","attachments","thread_id","annotations","expired_at","cancelled_at","usage","message_creation","message_id","required_action","submit_tool_outputs","messagesRegexp","runsRegexp","runRegexp","submitToolOutputsRegexp","stepsRegexp","serializeThread","thread","import_dayjs2","createdAt","tool_resources","prisma","initialCreatedAt","import_dayjs3","subtract","length","format","assistantId","assistant","connect","add","toDate","threads","import_dayjs4","threadId","completedAt","incompleteAt","incompleteDetails","toLowerCase","runId","import_radash6","messageContentBlocks","urlString","match","limit","order","after","import_radash7","fromEntries","searchParams","findMany","where","take","parseInt","orderBy","skip","cursor","hasNextPage","last_id","last","serializeRun","import_dayjs5","requiredAction","lastError","expires_at","expiresAt","started_at","startedAt","cancelledAt","failedAt","truncation_strategy","max_completion_tokens","max_prompt_tokens","tool_choice","parallel_tool_calls","runs","import_radash8","threadRunInProgress","update","threadRunFailed","threadRunCompleted","threadRunRequiresAction","serializeRunStep","import_dayjs6","stepDetails","expiredAt","Error","threadRunStepCreated","serializedRunStep","threadRunStepDelta","threadMessageCreated","serializedMessage","threadMessageDelta","threadMessageCompleted","latestRunStep","findFirst","handlers","handler","log","getTake","truncationStrategy","last_messages","include","readableStream","findUnique","import_radash9","modelSlug","additional_instructions","import_dayjs7","responseFormat","import_radash10","steps","updateRun","onThreadRunStepCompleted","tool_outputs","$transaction","completedRunStep","import_dayjs8","toolOutput","Promise","resolve","submitToolOutputs"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n anthropicClientAdapter: () => anthropicClientAdapter,\n azureOpenaiClientAdapter: () => azureOpenaiClientAdapter,\n completionsRunAdapter: () => completionsRunAdapter,\n googleClientAdapter: () => googleClientAdapter,\n groqClientAdapter: () => groqClientAdapter,\n mistralClientAdapter: () => mistralClientAdapter,\n ollamaClientAdapter: () => ollamaClientAdapter,\n openaiClientAdapter: () => openaiClientAdapter,\n perplexityClientAdapter: () => perplexityClientAdapter,\n prismaStorageAdapter: () => prismaStorageAdapter,\n supercompat: () => supercompat,\n togetherClientAdapter: () => togetherClientAdapter\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/supercompat.ts\nvar import_openai = __toESM(require(\"openai\"), 1);\n\n// src/supercompatFetch/requestHandlers.ts\nvar import_radash = require(\"radash\");\nvar storageRequestHandlers = ({\n storage,\n runAdapter,\n client\n}) => {\n if (!storage) return {};\n if (!runAdapter) return {};\n const result = storage({ runAdapter: (0, import_radash.partob)(runAdapter, { client }) });\n return result.requestHandlers;\n};\nvar requestHandlers = ({\n client,\n storage,\n runAdapter\n}) => (0, import_radash.assign)(\n client.requestHandlers,\n storageRequestHandlers({\n storage,\n runAdapter,\n client\n })\n);\n\n// src/supercompatFetch/findRequestHandler.ts\nvar findRequestHandler = ({\n url,\n requestHandlers: requestHandlers2\n}) => {\n const pathname = new URL(url).pathname;\n for (const key in requestHandlers2) {\n const regex = new RegExp(key);\n if (regex.test(pathname)) {\n return requestHandlers2[key];\n }\n }\n};\n\n// src/supercompatFetch/originalFetch.ts\nvar originalFetch = ({\n args,\n client\n}) => {\n if (client.client?.fetch) {\n const [url, options] = args;\n const headers = {\n ...options.headers,\n authorization: client.client.defaultHeaders().Authorization\n };\n return client.client.fetch(url, {\n ...options,\n headers\n });\n } else {\n return fetch(...args);\n }\n};\n\n// src/supercompatFetch/index.ts\nvar supercompatFetch = ({\n client,\n storage,\n runAdapter\n}) => {\n const requestHandlers2 = requestHandlers({\n client,\n storage,\n runAdapter\n });\n return async (...args) => {\n const [url, options] = args;\n const pathHandler = findRequestHandler({\n url,\n requestHandlers: requestHandlers2\n });\n if (!pathHandler) {\n return originalFetch({\n client,\n args\n });\n }\n const requestHandler = pathHandler[options?.method];\n if (!requestHandler) {\n return originalFetch({\n client,\n args\n });\n }\n return requestHandler(...args);\n };\n};\n\n// src/lib/azureOpenai/endpointFromBaseUrl.ts\nvar endpointFromBaseUrl = ({\n baseURL\n}) => baseURL.replace(/\\/+openai$/, \"\");\n\n// src/supercompat.ts\nvar supercompat = ({\n client,\n storage,\n runAdapter\n}) => {\n if (client.type === \"AZURE_OPENAI\") {\n return new import_openai.AzureOpenAI({\n apiKey: client.client.apiKey,\n apiVersion: client.client.apiVersion,\n endpoint: endpointFromBaseUrl({ baseURL: client.client.baseURL }),\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter\n })\n });\n }\n return new import_openai.default({\n apiKey: \"SUPERCOMPAT_PLACEHOLDER_OPENAI_KEY\",\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter\n })\n });\n};\n\n// src/adapters/client/groqClientAdapter/models/get.ts\nvar get = ({\n groq\n}) => async (_url, _options) => {\n try {\n const data = await groq.models.list();\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/groqClientAdapter/models/index.ts\nvar models = ({\n groq\n}) => ({\n get: get({ groq })\n});\n\n// src/adapters/client/groqClientAdapter/completions/post.ts\nvar post = ({\n groq\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await groq.chat.completions.create(body);\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await groq.chat.completions.create(body);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/groqClientAdapter/completions/index.ts\nvar completions = ({\n groq\n}) => ({\n post: post({ groq })\n});\n\n// src/adapters/client/groqClientAdapter/index.ts\nvar groqClientAdapter = ({\n groq\n}) => ({\n client: groq,\n requestHandlers: {\n \"^/v1/models$\": models({ groq }),\n \"^/v1/chat/completions$\": completions({ groq })\n }\n});\n\n// src/adapters/client/openaiClientAdapter/models/get.ts\nvar get2 = ({\n openai\n}) => async (_url, _options) => {\n try {\n const data = await openai.models.list();\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/openaiClientAdapter/models/index.ts\nvar models2 = ({\n openai\n}) => ({\n get: get2({ openai })\n});\n\n// src/adapters/client/openaiClientAdapter/completions/post.ts\nvar post2 = ({\n openai\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await openai.chat.completions.create(body);\n console.dir({ response }, { depth: null });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await openai.chat.completions.create(body);\n console.dir({ data }, { depth: null });\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/openaiClientAdapter/completions/index.ts\nvar completions2 = ({\n openai\n}) => ({\n post: post2({ openai })\n});\n\n// src/adapters/client/openaiClientAdapter/index.ts\nvar openaiClientAdapter = ({\n openai\n}) => ({\n client: openai,\n requestHandlers: {\n \"^/v1/models$\": models2({ openai }),\n \"^/(?:v1|/?openai)/chat/completions$\": completions2({ openai })\n }\n});\n\n// src/adapters/client/azureOpenaiClientAdapter/index.ts\nvar azureOpenaiClientAdapter = ({\n azureOpenai\n}) => ({\n type: \"AZURE_OPENAI\",\n client: azureOpenai,\n requestHandlers: {\n \"^/(?:v1|/?openai)/chat/completions$\": completions2({\n openai: azureOpenai\n })\n }\n});\n\n// src/adapters/client/mistralClientAdapter/models/get.ts\nvar get3 = ({\n mistral\n}) => async (_url, _options) => {\n try {\n const data = await mistral.models.list();\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/mistralClientAdapter/models/index.ts\nvar models3 = ({\n mistral\n}) => ({\n get: get3({ mistral })\n});\n\n// src/adapters/client/mistralClientAdapter/completions/serializeChunk.ts\nvar serializeDelta = ({\n delta: {\n toolCalls,\n ...rest\n }\n}) => ({\n ...rest,\n ...toolCalls ? {\n tool_calls: toolCalls\n } : {}\n});\nvar serializeChoice = ({\n choice: {\n finishReason,\n delta,\n ...rest\n }\n}) => ({\n ...rest,\n finish_reason: finishReason ?? null,\n delta: serializeDelta({ delta })\n});\nvar serializeChunk = ({\n chunk\n}) => ({\n ...chunk.data,\n ...chunk.data.choices ? {\n choices: chunk.data.choices.map((choice) => serializeChoice({ choice }))\n } : {}\n});\n\n// src/adapters/client/mistralClientAdapter/completions/serializeBody.ts\nvar serializeMessage = ({\n message: {\n // @ts-ignore-next-line\n tool_calls,\n // @ts-ignore-next-line\n tool_call_id,\n ...rest\n }\n}) => ({\n ...rest,\n ...tool_call_id ? {\n toolCallId: tool_call_id\n } : {},\n ...tool_calls ? {\n toolCalls: tool_calls\n } : {}\n});\nvar serializeBody = ({\n body\n}) => ({\n ...body,\n messages: body.messages.map((message) => serializeMessage({\n message\n }))\n});\n\n// src/adapters/client/mistralClientAdapter/completions/post.ts\nvar post3 = ({\n mistral\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n const serializedBody = serializeBody({\n body\n });\n if (body.stream) {\n const response = await mistral.chat.stream(serializedBody);\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n const serializedChunk = serializeChunk({\n chunk\n });\n controller.enqueue(`data: ${JSON.stringify(serializedChunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await mistral.chat.complete(serializedBody);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/mistralClientAdapter/completions/index.ts\nvar completions3 = ({\n mistral\n}) => ({\n post: post3({ mistral })\n});\n\n// src/adapters/client/mistralClientAdapter/index.ts\nvar mistralClientAdapter = ({\n mistral\n}) => ({\n client: mistral,\n requestHandlers: {\n \"^/v1/models$\": models3({ mistral }),\n \"^/v1/chat/completions$\": completions3({ mistral })\n }\n});\n\n// src/adapters/client/perplexityClientAdapter/models/get.ts\nvar models4 = [\n \"llama-3.1-sonar-small-128k-online\",\n \"llama-3.1-sonar-large-128k-online\",\n \"llama-3.1-sonar-huge-128k-online\"\n];\nvar get4 = ({\n perplexity\n}) => async (_url, _options) => {\n try {\n return new Response(JSON.stringify({\n type: \"list\",\n data: models4.map((model) => ({\n id: model,\n object: \"model\"\n }))\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/perplexityClientAdapter/models/index.ts\nvar models5 = ({\n perplexity\n}) => ({\n get: get4({ perplexity })\n});\n\n// src/lib/messages/alternatingMessages.ts\nvar agentSideRoles = [\"assistant\", \"system\"];\nvar alternatingMessages = ({\n messages: messages3\n}) => {\n const result = [];\n messages3.forEach((message, index) => {\n result.push(message);\n const nextMessage = messages3[index + 1];\n if (!nextMessage) return;\n if (message.role === \"user\" && nextMessage.role === \"user\") {\n result.push({\n role: \"assistant\",\n content: \"-\"\n });\n } else if (agentSideRoles.includes(message.role) && agentSideRoles.includes(nextMessage.role)) {\n result.push({\n role: \"user\",\n content: \"-\"\n });\n }\n });\n return result;\n};\n\n// src/adapters/client/perplexityClientAdapter/completions/post.ts\nvar post4 = ({\n perplexity\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n const messages3 = alternatingMessages({\n messages: body.messages\n });\n if (body.stream) {\n const response = await perplexity.chat.completions.create({\n ...body,\n messages: messages3\n });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await perplexity.chat.completions.create(body);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/perplexityClientAdapter/completions/index.ts\nvar completions4 = ({\n perplexity\n}) => ({\n post: post4({ perplexity })\n});\n\n// src/adapters/client/perplexityClientAdapter/index.ts\nvar perplexityClientAdapter = ({\n perplexity\n}) => ({\n client: perplexity,\n requestHandlers: {\n \"^/v1/models$\": models5({ perplexity }),\n \"^/v1/chat/completions$\": completions4({ perplexity })\n }\n});\n\n// src/adapters/client/anthropicClientAdapter/models/get.ts\nvar models6 = [\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-opus-20240229\",\n \"claude-3-sonnet-20240229\",\n \"claude-3-5-haiku-20241022\",\n \"claude-3-haiku-20240307\"\n];\nvar get5 = ({\n anthropic\n}) => async (_url, _options) => {\n try {\n return new Response(JSON.stringify({\n type: \"list\",\n data: models6.map((model) => ({\n id: model,\n object: \"model\"\n }))\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/anthropicClientAdapter/models/index.ts\nvar models7 = ({\n anthropic\n}) => ({\n get: get5({ anthropic })\n});\n\n// src/adapters/client/anthropicClientAdapter/completions/post.ts\nvar import_radash3 = require(\"radash\");\n\n// src/lib/messages/nonEmptyMessages.ts\nvar import_radash2 = require(\"radash\");\nvar nonEmptyMessages = ({\n messages: messages3\n}) => {\n const result = [];\n messages3.forEach((message) => result.push({\n ...message,\n content: (0, import_radash2.isEmpty)(message.content) ? \"-\" : message.content\n }));\n return result;\n};\n\n// src/lib/messages/firstUserMessages.ts\nvar firstUserMessages = ({\n messages: messages3\n}) => {\n const firstMessage = messages3[0];\n if (!firstMessage) return messages3;\n if (firstMessage.role !== \"user\") {\n return [\n {\n role: \"user\",\n content: \"-\"\n },\n ...messages3\n ];\n }\n return messages3;\n};\n\n// src/adapters/client/anthropicClientAdapter/completions/serializeTools.ts\nvar serializeTools = ({\n tools\n}) => (tools ?? []).map((tool) => {\n if (tool.type === \"function\") {\n return {\n name: tool.function.name,\n description: tool.function.description,\n input_schema: tool.function.parameters ?? {\n type: \"object\"\n }\n };\n }\n return tool;\n});\n\n// src/adapters/client/anthropicClientAdapter/completions/serializeMessages/serializeMessage.ts\nvar serializeMessage2 = ({\n message\n}) => {\n if (message.role === \"user\") {\n return {\n role: \"user\",\n content: message.content\n };\n } else if (message.role === \"assistant\") {\n return {\n role: \"assistant\",\n content: [\n {\n type: \"text\",\n text: message.content\n },\n ...(message.tool_calls ?? []).map((toolCall) => ({\n type: \"tool_use\",\n id: toolCall.id,\n name: toolCall.function.name,\n input: toolCall.function.arguments ? JSON.parse(toolCall.function.arguments) : {}\n }))\n ]\n };\n } else if (message.role === \"tool\") {\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n tool_use_id: message.tool_call_id,\n content: message.content\n }\n ]\n };\n }\n};\n\n// src/adapters/client/anthropicClientAdapter/completions/serializeMessages/index.ts\nvar serializeMessages = ({\n messages: messages3\n}) => messages3.map((message) => serializeMessage2({\n message\n}));\n\n// src/adapters/client/anthropicClientAdapter/completions/post.ts\nvar post5 = ({\n anthropic\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n const messages3 = body.messages;\n const [systemMessages, otherMessages] = (0, import_radash3.fork)(messages3, (message) => message.role === \"system\");\n const system = systemMessages.map((message) => message.content).join(\"\\n\");\n const chatMessages = nonEmptyMessages({\n messages: firstUserMessages({\n messages: alternatingMessages({\n messages: otherMessages\n })\n })\n });\n const resultOptions = {\n ...(0, import_radash3.omit)(body, [\"response_format\"]),\n stream: body.stream ? (0, import_radash3.isEmpty)(body.tools) : false,\n system,\n messages: serializeMessages({\n messages: chatMessages\n }),\n max_tokens: 4096,\n tools: serializeTools({\n tools: body.tools\n })\n };\n if (body.stream) {\n const response = await anthropic.messages.stream(resultOptions);\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n if (chunk.type === \"content_block_delta\") {\n const delta = chunk.delta.type === \"input_json_delta\" ? {\n tool_calls: [\n {\n index: 0,\n function: {\n arguments: chunk.delta.partial_json\n }\n }\n ]\n } : {\n content: chunk.delta.text\n };\n const messageDelta = {\n id: `chatcmpl-${(0, import_radash3.uid)(29)}`,\n object: \"chat.completion.chunk\",\n choices: [\n {\n index: chunk.index,\n delta\n }\n ]\n };\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\n\n`);\n } else if (chunk.type === \"content_block_start\") {\n const delta = chunk.content_block.type === \"tool_use\" ? {\n content: null,\n tool_calls: [\n {\n index: 0,\n id: chunk.content_block.id,\n type: \"function\",\n function: {\n name: chunk.content_block.name,\n arguments: \"\"\n }\n }\n ]\n } : {\n content: chunk.content_block.text\n };\n const messageDelta = {\n id: `chatcmpl-${(0, import_radash3.uid)(29)}`,\n object: \"chat.completion.chunk\",\n choices: [\n {\n index: chunk.index,\n delta\n }\n ]\n };\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\n\n`);\n } else if (chunk.type === \"message_start\") {\n const messageDelta = {\n id: `chatcmpl-${(0, import_radash3.uid)(29)}`,\n object: \"chat.completion.chunk\",\n choices: [\n {\n index: 0,\n delta: {\n content: \"\"\n }\n }\n ]\n };\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\n\n`);\n }\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await anthropic.messages.create(resultOptions);\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/anthropicClientAdapter/completions/index.ts\nvar completions5 = ({\n anthropic\n}) => ({\n post: post5({ anthropic })\n});\n\n// src/adapters/client/anthropicClientAdapter/index.ts\nvar anthropicClientAdapter = ({\n anthropic\n}) => ({\n client: anthropic,\n requestHandlers: {\n \"^/v1/models$\": models7({ anthropic }),\n \"^/v1/chat/completions$\": completions5({ anthropic })\n }\n});\n\n// src/adapters/client/togetherClientAdapter/models/get.ts\nvar get6 = ({\n together\n}) => async (_url, _options) => {\n try {\n const data = await together.models.list();\n return new Response(JSON.stringify({\n type: \"list\",\n // @ts-ignore-next-line\n data: data.body\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/togetherClientAdapter/models/index.ts\nvar models8 = ({\n together\n}) => ({\n get: get6({ together })\n});\n\n// src/adapters/client/togetherClientAdapter/completions/post.ts\nvar post6 = ({\n together\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await together.chat.completions.create(body);\n console.dir({ response }, { depth: null });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await together.chat.completions.create(body);\n console.dir({ data }, { depth: null });\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/togetherClientAdapter/completions/index.ts\nvar completions6 = ({\n together\n}) => ({\n post: post6({ together })\n});\n\n// src/adapters/client/togetherClientAdapter/index.ts\nvar togetherClientAdapter = ({\n together\n}) => ({\n client: together,\n requestHandlers: {\n \"^/v1/models$\": models8({ together }),\n \"^/(?:v1|/?openai)/chat/completions$\": completions6({ together })\n }\n});\n\n// src/adapters/client/googleClientAdapter/models/get.ts\nvar models9 = [\n \"gemini-2.0-flash-exp\",\n \"gemini-1.5-flash\",\n \"gemini-1.5-flash-8b\",\n \"gemini-1.5-pro\",\n \"gemini-1.0-pro\",\n \"text-embedding-004\",\n \"aqa\"\n];\nvar get7 = ({\n google\n}) => async (_url, _options) => {\n try {\n return new Response(JSON.stringify({\n type: \"list\",\n data: models9.map((model) => ({\n id: model,\n object: \"model\"\n }))\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/googleClientAdapter/models/index.ts\nvar models10 = ({\n google\n}) => ({\n get: get7({ google })\n});\n\n// src/adapters/client/googleClientAdapter/completions/post.ts\nvar post7 = ({\n google\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await google.chat.completions.create(body);\n console.dir({ response }, { depth: null });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await google.chat.completions.create(body);\n console.dir({ data }, { depth: null });\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/googleClientAdapter/completions/index.ts\nvar completions7 = ({\n google\n}) => ({\n post: post7({ google })\n});\n\n// src/adapters/client/googleClientAdapter/index.ts\nvar googleClientAdapter = ({\n google\n}) => ({\n client: google,\n requestHandlers: {\n \"^/v1/models$\": models10({ google }),\n \"^/(?:v1|/?openai)/chat/completions$\": completions7({ google })\n }\n});\n\n// src/adapters/client/ollamaClientAdapter/models/get.ts\nvar get8 = ({\n ollama\n}) => async (_url, _options) => {\n try {\n const data = await ollama.models.list();\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/client/ollamaClientAdapter/models/index.ts\nvar models11 = ({\n ollama\n}) => ({\n get: get8({ ollama })\n});\n\n// src/adapters/client/ollamaClientAdapter/completions/post.ts\nvar post8 = ({\n ollama\n}) => async (_url, options) => {\n const body = JSON.parse(options.body);\n if (body.stream) {\n const response = await ollama.chat.completions.create(body);\n console.dir({ response }, { depth: null });\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`);\n }\n controller.close();\n }\n });\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n try {\n const data = await ollama.chat.completions.create(body);\n console.dir({ data }, { depth: null });\n return new Response(JSON.stringify({\n data\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n } catch (error) {\n return new Response(JSON.stringify({\n error\n }), {\n status: 500,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n }\n};\n\n// src/adapters/client/ollamaClientAdapter/completions/index.ts\nvar completions8 = ({\n ollama\n}) => ({\n post: post8({ ollama })\n});\n\n// src/adapters/client/ollamaClientAdapter/index.ts\nvar ollamaClientAdapter = ({\n ollama\n}) => ({\n client: ollama,\n requestHandlers: {\n \"^/v1/models$\": models11({ ollama }),\n \"^/(?:v1|/?openai)/chat/completions$\": completions8({ ollama })\n }\n});\n\n// src/adapters/run/completionsRunAdapter/index.ts\nvar import_lodash = __toESM(require(\"lodash\"), 1);\nvar import_radash5 = require(\"radash\");\nvar import_dayjs = __toESM(require(\"dayjs\"), 1);\n\n// src/adapters/run/completionsRunAdapter/messages/index.ts\nvar import_radash4 = require(\"radash\");\n\n// src/adapters/run/completionsRunAdapter/messages/serializeMessage.ts\nvar serializeToolCall = ({\n toolCall\n}) => ({\n tool_call_id: toolCall.id,\n role: \"tool\",\n name: toolCall.function.name,\n content: toolCall.function.output ?? \"\"\n});\nvar serializeMessageWithContent = ({\n message\n}) => ({\n role: message.role,\n content: serializeContent({\n content: message.content\n }),\n ...message?.metadata?.toolCalls ? { tool_calls: message.metadata.toolCalls } : {}\n});\nvar serializeContent = ({\n content\n}) => content.map((content2) => content2.text.value).join(\"\\n\");\nvar serializeMessage3 = ({\n message\n}) => {\n const result = [serializeMessageWithContent({ message })];\n const run2 = message.run;\n if (!run2) return result;\n const messageToolCalls = message.metadata?.toolCalls || [];\n messageToolCalls.forEach((tc) => {\n const runStep = run2.runSteps.find((rs) => {\n if (rs.type !== \"tool_calls\") return false;\n return rs.step_details.tool_calls.some((rsTc) => {\n if (rsTc.type !== \"function\") return false;\n return rsTc.id === tc.id;\n });\n });\n if (!runStep) return;\n const toolCall = runStep.step_details.tool_calls.find((rsTc) => {\n if (rsTc.type !== \"function\") return false;\n return rsTc.id === tc.id;\n });\n result.push(serializeToolCall({ toolCall }));\n });\n return result;\n};\n\n// src/adapters/run/completionsRunAdapter/messages/index.ts\nvar messages = async ({\n run: run2,\n getMessages: getMessages2\n}) => [\n ...run2.instructions ? [{\n role: \"system\",\n content: run2.instructions\n }] : [],\n ...(0, import_radash4.flat)((await getMessages2()).map((message) => serializeMessage3({ message })))\n];\n\n// src/adapters/run/completionsRunAdapter/index.ts\nvar updatedToolCall = ({\n toolCall,\n delta\n}) => {\n if (!toolCall) return (0, import_radash5.omit)(delta, [\"index\"]);\n const result = import_lodash.default.cloneDeep(toolCall);\n for (const [key, value] of Object.entries(delta.function)) {\n result.function[key] = `${result.function[key] ?? \"\"}${value}`;\n }\n return result;\n};\nvar toolCallsData = ({\n prevToolCalls,\n delta\n}) => {\n if (!prevToolCalls) {\n return delta.tool_calls.map((tc) => ({\n id: (0, import_radash5.uid)(24),\n type: \"function\",\n ...(0, import_radash5.omit)(tc, [\"index\"])\n }));\n }\n const newToolCalls = import_lodash.default.cloneDeep(prevToolCalls);\n for (const runStepDelta of delta.tool_calls) {\n newToolCalls[runStepDelta.index] = updatedToolCall({\n toolCall: newToolCalls[runStepDelta.index],\n delta: runStepDelta\n });\n }\n return newToolCalls;\n};\nvar completionsRunAdapter = () => async ({\n client: clientAdapter,\n run: run2,\n onEvent: onEvent2,\n getMessages: getMessages2\n}) => {\n if (run2.status !== \"queued\") return;\n const client = supercompat({\n client: clientAdapter\n });\n onEvent2({\n event: \"thread.run.in_progress\",\n data: {\n ...run2,\n status: \"in_progress\"\n }\n });\n const opts = {\n messages: await messages({\n run: run2,\n getMessages: getMessages2\n }),\n model: run2.model,\n stream: true,\n response_format: run2.response_format,\n ...(0, import_radash5.isEmpty)(run2.tools) ? {} : { tools: run2.tools }\n };\n let providerResponse;\n try {\n providerResponse = await client.chat.completions.create(opts);\n } catch (e) {\n console.error(e);\n return onEvent2({\n event: \"thread.run.failed\",\n data: {\n ...run2,\n failed_at: (0, import_dayjs.default)().unix(),\n status: \"in_progress\",\n last_error: {\n code: \"server_error\",\n message: `${e?.message ?? \"\"} ${e?.cause?.message ?? \"\"}`\n }\n }\n });\n }\n let message = await onEvent2({\n event: \"thread.message.created\",\n data: {\n id: \"THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID\",\n object: \"thread.message\",\n completed_at: null,\n run_id: run2.id,\n created_at: (0, import_dayjs.default)().unix(),\n assistant_id: run2.assistant_id,\n incomplete_at: null,\n incomplete_details: null,\n metadata: {},\n attachments: [],\n thread_id: run2.thread_id,\n content: [{ text: { value: \"\", annotations: [] }, type: \"text\" }],\n role: \"assistant\",\n status: \"in_progress\"\n }\n });\n onEvent2({\n event: \"thread.run.step.created\",\n data: {\n id: \"THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID\",\n object: \"thread.run.step\",\n run_id: run2.id,\n assistant_id: run2.assistant_id,\n thread_id: run2.thread_id,\n type: \"message_creation\",\n status: \"completed\",\n completed_at: (0, import_dayjs.default)().unix(),\n created_at: (0, import_dayjs.default)().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: \"message_creation\",\n message_creation: {\n message_id: message.id\n }\n }\n }\n });\n let toolCallsRunStep;\n let currentContent = \"\";\n let currentToolCalls;\n for await (const chunk of providerResponse) {\n const choices = chunk.choices ?? [];\n const choice = choices[0];\n if (!choice) continue;\n const delta = choice.delta;\n if (delta.content) {\n currentContent = `${currentContent}${delta.content ?? \"\"}`;\n }\n if (delta.tool_calls) {\n if (!toolCallsRunStep) {\n toolCallsRunStep = await onEvent2({\n event: \"thread.run.step.created\",\n data: {\n id: \"THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID\",\n object: \"thread.run.step\",\n run_id: run2.id,\n assistant_id: run2.assistant_id,\n thread_id: run2.thread_id,\n type: \"tool_calls\",\n status: \"in_progress\",\n completed_at: null,\n created_at: (0, import_dayjs.default)().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: \"tool_calls\",\n tool_calls: []\n }\n }\n });\n }\n onEvent2({\n event: \"thread.run.step.delta\",\n data: {\n object: \"thread.run.step.delta\",\n run_id: run2.id,\n id: toolCallsRunStep.id,\n delta: {\n step_details: {\n type: \"tool_calls\",\n tool_calls: delta.tool_calls.map((tc) => ({\n id: (0, import_radash5.uid)(24),\n type: \"function\",\n ...tc\n }))\n }\n }\n }\n });\n currentToolCalls = toolCallsData({ prevToolCalls: currentToolCalls, delta });\n }\n if (delta.content) {\n onEvent2({\n event: \"thread.message.delta\",\n data: {\n id: message.id,\n delta: {\n content: [\n {\n type: \"text\",\n index: 0,\n text: {\n value: delta.content\n }\n }\n ]\n }\n }\n });\n }\n }\n message = await onEvent2({\n event: \"thread.message.completed\",\n data: {\n ...message,\n status: \"completed\",\n content: [{ text: { value: currentContent, annotations: [] }, type: \"text\" }],\n tool_calls: currentToolCalls\n }\n });\n if ((0, import_radash5.isEmpty)(message.toolCalls)) {\n return onEvent2({\n event: \"thread.run.completed\",\n data: {\n ...run2,\n status: \"completed\",\n completed_at: (0, import_dayjs.default)().unix()\n }\n });\n }\n return onEvent2({\n event: \"thread.run.requires_action\",\n data: {\n ...run2,\n status: \"requires_action\",\n required_action: {\n type: \"submit_tool_outputs\",\n submit_tool_outputs: {\n tool_calls: message.toolCalls\n }\n }\n }\n });\n};\n\n// src/lib/messages/messagesRegexp.ts\nvar messagesRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/messages$\";\n\n// src/lib/runs/runsRegexp.ts\nvar runsRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs$\";\n\n// src/lib/runs/runRegexp.ts\nvar runRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)$\";\n\n// src/lib/runs/submitToolOutputsRegexp.ts\nvar submitToolOutputsRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/submit_tool_outputs$\";\n\n// src/lib/steps/stepsRegexp.ts\nvar stepsRegexp = \"^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/steps$\";\n\n// src/adapters/storage/prismaStorageAdapter/threads/post.ts\nvar import_dayjs3 = __toESM(require(\"dayjs\"), 1);\n\n// src/adapters/storage/prismaStorageAdapter/threads/serializeThread.ts\nvar import_dayjs2 = __toESM(require(\"dayjs\"), 1);\nvar serializeThread = ({\n thread\n}) => ({\n id: thread.id,\n object: \"thread\",\n created_at: (0, import_dayjs2.default)(thread.createdAt).unix(),\n metadata: thread.metadata,\n // TODO\n tool_resources: null\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/post.ts\nvar post9 = ({\n prisma\n}) => async (...args) => {\n const body = JSON.parse(args[1].body);\n const messages3 = body.messages || [];\n const metadata = body.metadata || {};\n const initialCreatedAt = (0, import_dayjs3.default)().subtract(messages3.length, \"seconds\").format();\n const thread = await prisma.thread.create({\n data: {\n metadata,\n ...metadata.assistantId ? {\n assistant: {\n connect: {\n id: metadata.assistantId\n }\n }\n } : {},\n messages: {\n create: messages3.map((message, index) => ({\n role: message.role === \"user\" ? \"USER\" : \"ASSISTANT\",\n content: [\n {\n type: \"text\",\n text: {\n annotations: [],\n value: message.content\n }\n }\n ],\n attachments: message.attachments,\n metadata: message.metadata,\n createdAt: (0, import_dayjs3.default)(initialCreatedAt).add(index, \"seconds\").toDate()\n }))\n }\n }\n });\n return new Response(JSON.stringify(\n serializeThread({ thread })\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/index.ts\nvar threads = ({\n prisma\n}) => ({\n post: post9({ prisma })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/serializeMessage.ts\nvar import_dayjs4 = __toESM(require(\"dayjs\"), 1);\nvar import_radash6 = require(\"radash\");\nvar serializeMessage4 = ({\n message\n}) => ({\n id: message.id,\n object: \"thread.message\",\n created_at: (0, import_dayjs4.default)(message.createdAt).unix(),\n thread_id: message.threadId,\n completed_at: message.completedAt ? (0, import_dayjs4.default)(message.completedAt).unix() : null,\n incomplete_at: message.incompleteAt ? (0, import_dayjs4.default)(message.incompleteAt).unix() : null,\n incomplete_details: message.incompleteDetails,\n role: message.role.toLowerCase(),\n content: message.content,\n assistant_id: message.assistantId,\n run_id: message.runId,\n attachments: message.attachments,\n status: message.status.toLowerCase(),\n metadata: (0, import_radash6.assign)(message.metadata ?? {}, message.toolCalls ? { toolCalls: message.toolCalls } : {})\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/post.ts\nvar messageContentBlocks = ({\n content\n}) => [\n {\n type: \"text\",\n text: {\n value: content ?? \"\",\n annotations: []\n }\n }\n];\nvar post10 = ({\n prisma\n}) => async (urlString, options) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp));\n const body = JSON.parse(options.body);\n const { role, content } = body;\n const message = await prisma.message.create({\n data: {\n threadId,\n content: messageContentBlocks({ content }),\n role: role === \"user\" ? \"USER\" : \"ASSISTANT\"\n }\n });\n return new Response(JSON.stringify(\n serializeMessage4({ message })\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/get.ts\nvar import_radash7 = require(\"radash\");\nvar get9 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp));\n const {\n limit,\n order,\n after\n } = (0, import_radash7.assign)({\n limit: \"20\",\n order: \"desc\"\n // after: null,\n }, Object.fromEntries(url.searchParams));\n const messages3 = await prisma.message.findMany({\n where: {\n threadId\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order\n },\n ...after ? {\n skip: 1,\n cursor: {\n id: after\n }\n } : {}\n });\n return new Response(JSON.stringify({\n data: messages3.map((message) => serializeMessage4({ message })),\n hasNextPage: () => messages3.length === parseInt(limit),\n body: {\n last_id: (0, import_radash7.last)(messages3)?.id ?? null\n }\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/messages/index.ts\nvar messages2 = ({\n prisma\n}) => ({\n post: post10({ prisma }),\n get: get9({ prisma })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/get.ts\nvar import_radash8 = require(\"radash\");\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/serializeRun.ts\nvar import_dayjs5 = __toESM(require(\"dayjs\"), 1);\nvar serializeRun = ({\n run: run2\n}) => ({\n id: run2.id,\n object: \"thread.run\",\n created_at: (0, import_dayjs5.default)(run2.createdAt).unix(),\n thread_id: run2.threadId,\n assistant_id: run2.assistantId,\n status: run2.status.toLowerCase(),\n required_action: run2.requiredAction,\n last_error: run2.lastError,\n expires_at: (0, import_dayjs5.default)(run2.expiresAt).unix(),\n started_at: run2.startedAt ? (0, import_dayjs5.default)(run2.startedAt).unix() : null,\n cancelled_at: run2.cancelledAt ? (0, import_dayjs5.default)(run2.cancelledAt).unix() : null,\n failed_at: run2.failedAt ? (0, import_dayjs5.default)(run2.failedAt).unix() : null,\n completed_at: run2.completedAt ? (0, import_dayjs5.default)(run2.completedAt).unix() : null,\n model: run2.model,\n instructions: run2.instructions,\n tools: run2.tools,\n metadata: run2.metadata,\n usage: run2.usage,\n truncation_strategy: {\n type: \"auto\"\n },\n response_format: {\n type: \"text\"\n },\n // TODO\n incomplete_details: null,\n max_completion_tokens: null,\n max_prompt_tokens: null,\n tool_choice: \"auto\",\n parallel_tool_calls: true\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/get.ts\nvar get10 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp));\n const {\n limit,\n order,\n after\n } = (0, import_radash8.assign)({\n limit: \"20\",\n order: \"desc\"\n // after: null,\n }, Object.fromEntries(url.searchParams));\n const runs2 = await prisma.run.findMany({\n where: {\n threadId\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order\n },\n ...after ? {\n skip: 1,\n cursor: {\n id: after\n }\n } : {}\n });\n return new Response(JSON.stringify({\n data: runs2.map((run2) => serializeRun({ run: run2 })),\n hasNextPage: () => runs2.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: (0, import_radash8.last)(runs2)?.id ?? null\n }\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/post.ts\nvar import_dayjs7 = __toESM(require(\"dayjs\"), 1);\nvar import_radash9 = require(\"radash\");\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunInProgress.ts\nvar threadRunInProgress = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"IN_PROGRESS\" /* IN_PROGRESS */\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunFailed.ts\nvar threadRunFailed = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"FAILED\" /* FAILED */,\n failedAt: event.data.failed_at,\n lastError: event.data.last_error\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunCompleted.ts\nvar threadRunCompleted = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"COMPLETED\" /* COMPLETED */,\n requiredAction: void 0\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunRequiresAction.ts\nvar threadRunRequiresAction = ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n return prisma.run.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"REQUIRES_ACTION\" /* REQUIRES_ACTION */,\n requiredAction: event.data.required_action\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/steps/serializeRunStep.ts\nvar import_dayjs6 = __toESM(require(\"dayjs\"), 1);\nvar serializeRunStep = ({\n runStep\n}) => ({\n id: runStep.id,\n object: \"thread.run.step\",\n created_at: (0, import_dayjs6.default)(runStep.createdAt).unix(),\n assistant_id: runStep.assistantId,\n thread_id: runStep.threadId,\n run_id: runStep.runId,\n type: runStep.type.toLowerCase(),\n status: runStep.status.toLowerCase(),\n // @ts-ignore-next-line\n step_details: runStep.stepDetails,\n last_error: runStep.lastError,\n expired_at: runStep.expiredAt ? (0, import_dayjs6.default)(runStep.expiredAt).unix() : null,\n cancelled_at: runStep.cancelledAt ? (0, import_dayjs6.default)(runStep.cancelledAt).unix() : null,\n failed_at: runStep.failedAt ? (0, import_dayjs6.default)(runStep.failedAt).unix() : null,\n completed_at: runStep.completedAt ? (0, import_dayjs6.default)(runStep.completedAt).unix() : null,\n metadata: runStep.metadata,\n usage: runStep.usage\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepCreated.ts\nvar type = (event) => {\n if (event.data.type === \"message_creation\") return \"MESSAGE_CREATION\" /* MESSAGE_CREATION */;\n if (event.data.type === \"tool_calls\") return \"TOOL_CALLS\" /* TOOL_CALLS */;\n throw new Error(`Unknown type: ${event.data.type}`);\n};\nvar status = (event) => {\n if (event.data.status === \"in_progress\") return \"IN_PROGRESS\" /* IN_PROGRESS */;\n if (event.data.status === \"cancelled\") return \"CANCELLED\" /* CANCELLED */;\n if (event.data.status === \"completed\") return \"COMPLETED\" /* COMPLETED */;\n if (event.data.status === \"failed\") return \"FAILED\" /* FAILED */;\n if (event.data.status === \"expired\") return \"EXPIRED\" /* EXPIRED */;\n throw new Error(`Unknown status: ${event.data.status}`);\n};\nvar threadRunStepCreated = async ({\n prisma,\n event,\n controller\n}) => {\n const runStep = await prisma.runStep.create({\n data: {\n runId: event.data.run_id,\n assistantId: event.data.assistant_id,\n threadId: event.data.thread_id,\n type: type(event),\n status: status(event),\n stepDetails: event.data.step_details,\n completedAt: event.data.completed_at\n }\n });\n const serializedRunStep = serializeRunStep({ runStep });\n controller.enqueue({\n ...event,\n data: serializedRunStep\n });\n return serializedRunStep;\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadRunStepDelta.ts\nvar threadRunStepDelta = ({\n event,\n controller\n}) => controller.enqueue(event);\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCreated.ts\nvar status2 = (event) => {\n if (event.data.status === \"completed\") return \"COMPLETED\" /* COMPLETED */;\n if (event.data.status === \"in_progress\") return \"IN_PROGRESS\" /* IN_PROGRESS */;\n if (event.data.status === \"incomplete\") return \"INCOMPLETE\" /* INCOMPLETE */;\n throw new Error(`Unknown status: ${event.data.status}`);\n};\nvar threadMessageCreated = async ({\n prisma,\n event,\n controller\n}) => {\n const message = await prisma.message.create({\n data: {\n threadId: event.data.thread_id,\n content: event.data.content,\n role: event.data.role === \"assistant\" ? \"ASSISTANT\" : \"USER\",\n assistantId: event.data.assistant_id,\n runId: event.data.run_id,\n status: status2(event)\n }\n });\n const serializedMessage = serializeMessage4({ message });\n controller.enqueue({\n ...event,\n data: serializedMessage\n });\n return serializedMessage;\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageDelta.ts\nvar threadMessageDelta = ({\n event,\n controller\n}) => controller.enqueue(event);\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/threadMessageCompleted.ts\nvar threadMessageCompleted = async ({\n prisma,\n event,\n controller\n}) => {\n controller.enqueue(event);\n if (event.data.tool_calls) {\n const latestRunStep = await prisma.runStep.findFirst({\n where: {\n threadId: event.data.thread_id,\n type: \"TOOL_CALLS\" /* TOOL_CALLS */\n },\n orderBy: {\n createdAt: \"desc\"\n }\n });\n if (!latestRunStep) {\n throw new Error(\"No run step found\");\n }\n await prisma.runStep.update({\n where: {\n id: latestRunStep.id\n },\n data: {\n stepDetails: {\n type: \"tool_calls\",\n tool_calls: event.data.tool_calls\n }\n }\n });\n }\n return prisma.message.update({\n where: {\n id: event.data.id\n },\n data: {\n status: \"COMPLETED\" /* COMPLETED */,\n ...event.data.content ? { content: event.data.content } : {},\n ...event.data.tool_calls ? { toolCalls: event.data.tool_calls } : {}\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/handlers/index.ts\nvar handlers = {\n \"thread.run.in_progress\": threadRunInProgress,\n \"thread.run.failed\": threadRunFailed,\n \"thread.run.completed\": threadRunCompleted,\n \"thread.run.requires_action\": threadRunRequiresAction,\n \"thread.run.step.created\": threadRunStepCreated,\n \"thread.run.step.delta\": threadRunStepDelta,\n \"thread.message.created\": threadMessageCreated,\n \"thread.message.delta\": threadMessageDelta,\n \"thread.message.completed\": threadMessageCompleted\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/onEvent/index.ts\nvar onEvent = ({\n prisma,\n controller\n}) => (event) => {\n const handler = handlers[event.event];\n if (!handler) {\n console.log(\"No handler for event\", event);\n return;\n }\n return handler({ prisma, controller, event });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/getMessages.ts\nvar getTake = ({\n run: run2\n}) => {\n if (run2.truncationStrategy.type === \"auto\") {\n return null;\n }\n if (run2.truncationStrategy.type === \"last_messages\") {\n if (!run2.truncationStrategy.last_messages) {\n throw new Error(\"Truncation strategy last_messages is required\");\n }\n return -run2.truncationStrategy.last_messages;\n }\n throw new Error(`Unsupported truncation strategy type: ${run2.truncationStrategy.type}`);\n};\nvar getMessages = ({\n prisma,\n run: run2\n}) => async () => {\n const take = getTake({\n run: run2\n });\n const messages3 = await prisma.message.findMany({\n where: {\n threadId: run2.threadId\n },\n include: {\n run: {\n include: {\n runSteps: true\n }\n }\n },\n orderBy: {\n createdAt: \"asc\"\n },\n ...take ? { take } : {}\n });\n return messages3.map((message) => ({\n ...serializeMessage4({ message }),\n run: message.run ? {\n ...serializeRun({ run: message.run }),\n runSteps: message.run.runSteps.map((runStep) => serializeRunStep({ runStep }))\n } : null\n }));\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/post.ts\nvar post11 = ({\n prisma,\n runAdapter\n}) => async (urlString, options) => {\n const url = new URL(urlString);\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp));\n const body = JSON.parse(options.body);\n const { assistant_id, stream } = body;\n const assistant = await prisma.assistant.findUnique({\n where: {\n id: assistant_id\n }\n });\n if (!assistant) {\n throw new Error(\"Assistant not found\");\n }\n const {\n model,\n instructions,\n // additional_instructions,\n tools,\n metadata,\n response_format,\n truncation_strategy\n } = (0, import_radash9.assign)({\n model: assistant.modelSlug,\n instructions: \"\",\n additional_instructions: null,\n truncation_strategy: {\n type: \"auto\"\n },\n response_format: {\n type: \"text\"\n }\n // tools: [],\n // metadata: {},\n }, body);\n const run2 = await prisma.run.create({\n data: {\n status: \"QUEUED\",\n expiresAt: (0, import_dayjs7.default)().add(1, \"hour\").unix(),\n model,\n instructions,\n tools,\n metadata,\n thread: {\n connect: {\n id: threadId\n }\n },\n assistant: {\n connect: {\n id: assistant_id\n }\n },\n truncationStrategy: truncation_strategy,\n responseFormat: response_format\n }\n });\n const data = serializeRun({ run: run2 });\n const readableStream = new ReadableStream({\n async start(controller) {\n try {\n await runAdapter({\n run: data,\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data2) => {\n controller.enqueue(`data: ${JSON.stringify(data2)}\n\n`);\n }\n },\n prisma\n }),\n getMessages: getMessages({\n prisma,\n run: run2\n })\n });\n } catch (error) {\n console.error(error);\n onEvent({\n controller: {\n ...controller,\n enqueue: (data2) => {\n controller.enqueue(`data: ${JSON.stringify(data2)}\n\n`);\n }\n },\n prisma\n })({\n event: \"thread.run.failed\",\n data: {\n id: run2.id,\n failed_at: (0, import_dayjs7.default)().unix(),\n last_error: {\n code: \"server_error\",\n message: `${error?.message ?? \"\"} ${error?.cause?.message ?? \"\"}`\n }\n }\n });\n }\n controller.close();\n }\n });\n if (stream) {\n return new Response(readableStream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n return new Response(JSON.stringify(\n data\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/index.ts\nvar runs = ({\n prisma,\n runAdapter\n}) => ({\n get: get10({ prisma }),\n post: post11({ prisma, runAdapter })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/run/get.ts\nvar get11 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId, runId] = url.pathname.match(new RegExp(runRegexp));\n const run2 = await prisma.run.findUnique({\n where: {\n id: runId,\n threadId\n }\n });\n return new Response(JSON.stringify(\n serializeRun({ run: run2 })\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\",\n \"openai-poll-after-ms\": \"5000\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/run/index.ts\nvar run = ({\n prisma,\n runAdapter\n}) => ({\n get: get11({ prisma })\n // post: post({ prisma, runAdapter }),\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/steps/get.ts\nvar import_radash10 = require(\"radash\");\nvar get12 = ({\n prisma\n}) => async (urlString) => {\n const url = new URL(urlString);\n const [, threadId, , runId] = url.pathname.match(new RegExp(stepsRegexp));\n const {\n limit,\n order,\n after\n } = (0, import_radash10.assign)({\n limit: \"20\",\n order: \"desc\"\n // after: null,\n }, Object.fromEntries(url.searchParams));\n const runSteps = await prisma.runStep.findMany({\n where: {\n threadId,\n runId\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order\n },\n ...after ? {\n skip: 1,\n cursor: {\n id: after\n }\n } : {}\n });\n return new Response(JSON.stringify({\n data: runSteps.map((runStep) => serializeRunStep({ runStep })),\n hasNextPage: () => runSteps.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: (0, import_radash10.last)(runSteps)?.id ?? null\n }\n }), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/steps/index.ts\nvar steps = ({\n prisma\n}) => ({\n get: get12({ prisma })\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/updateRun.ts\nvar import_dayjs8 = __toESM(require(\"dayjs\"), 1);\nvar updateRun = async ({\n prisma,\n runId,\n threadId,\n onThreadRunStepCompleted = () => {\n },\n tool_outputs\n}) => prisma.$transaction(async (prisma2) => {\n const runSteps = await prisma2.runStep.findMany({\n where: {\n threadId,\n runId,\n type: \"TOOL_CALLS\",\n status: \"IN_PROGRESS\"\n },\n orderBy: {\n createdAt: \"asc\"\n }\n });\n for (const runStep of runSteps) {\n const completedRunStep = await prisma2.runStep.update({\n where: {\n id: runStep.id\n },\n data: {\n status: \"COMPLETED\",\n completedAt: (0, import_dayjs8.default)().unix(),\n stepDetails: {\n type: \"tool_calls\",\n // @ts-ignore-next-line\n tool_calls: runStep.stepDetails.tool_calls.map((toolCall) => {\n const toolOutput = tool_outputs.find((output) => output.tool_call_id === toolCall.id) || tool_outputs[0];\n if (!toolOutput) {\n console.dir({ toolOutput, runStep, tool_outputs, runSteps }, { depth: null });\n throw new Error(\"Tool output not found\");\n }\n return {\n id: toolCall.id,\n type: toolCall.type,\n function: {\n ...toolCall.function,\n output: toolOutput.output\n }\n };\n })\n }\n }\n });\n onThreadRunStepCompleted({\n runStep: completedRunStep\n });\n }\n return prisma2.run.update({\n where: {\n id: runId\n },\n data: {\n status: \"QUEUED\"\n }\n });\n});\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/post/index.ts\nvar post12 = ({\n prisma,\n runAdapter\n}) => async (urlString, options) => {\n const url = new URL(urlString);\n const [, threadId, runId] = url.pathname.match(new RegExp(submitToolOutputsRegexp));\n const body = JSON.parse(options.body);\n const {\n tool_outputs,\n stream\n } = body;\n if (stream) {\n const readableStream = new ReadableStream({\n async start(controller) {\n const run2 = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs,\n onThreadRunStepCompleted: async ({ runStep }) => {\n controller.enqueue(`data: ${JSON.stringify({\n event: \"thread.run.step.completed\",\n data: serializeRunStep({ runStep })\n })}\n\n`);\n }\n });\n await runAdapter({\n run: serializeRun({ run: run2 }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\n\n`);\n }\n },\n prisma\n }),\n getMessages: getMessages({ prisma, run: run2 })\n });\n controller.close();\n }\n });\n return new Response(readableStream, {\n headers: {\n \"Content-Type\": \"text/event-stream\"\n }\n });\n } else {\n const run2 = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs\n });\n await new Promise((resolve) => new ReadableStream({\n async start(controller) {\n await runAdapter({\n run: serializeRun({ run: run2 }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\n\n`);\n }\n },\n prisma\n }),\n getMessages: getMessages({ prisma, run: run2 })\n });\n controller.close();\n resolve(void 0);\n }\n }));\n return new Response(JSON.stringify(\n run2\n ), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n }\n};\n\n// src/adapters/storage/prismaStorageAdapter/threads/runs/submitToolOutputs/index.ts\nvar submitToolOutputs = ({\n prisma,\n runAdapter\n}) => ({\n post: post12({\n prisma,\n // @ts-ignore-next-line\n runAdapter\n })\n});\n\n// src/adapters/storage/prismaStorageAdapter/index.ts\nvar prismaStorageAdapter = ({\n prisma\n}) => ({\n runAdapter\n}) => ({\n requestHandlers: {\n \"^/(?:v1|/?openai)/threads$\": threads({ prisma }),\n [messagesRegexp]: messages2({ prisma }),\n [runsRegexp]: runs({ prisma, runAdapter }),\n [runRegexp]: run({ prisma, runAdapter }),\n [stepsRegexp]: steps({ prisma }),\n [submitToolOutputsRegexp]: submitToolOutputs({ prisma, runAdapter })\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n anthropicClientAdapter,\n azureOpenaiClientAdapter,\n completionsRunAdapter,\n googleClientAdapter,\n groqClientAdapter,\n mistralClientAdapter,\n ollamaClientAdapter,\n openaiClientAdapter,\n perplexityClientAdapter,\n prismaStorageAdapter,\n supercompat,\n togetherClientAdapter\n});\n","export { supercompat } from './supercompat'\nexport { groqClientAdapter } from './adapters/client/groqClientAdapter'\nexport { openaiClientAdapter } from './adapters/client/openaiClientAdapter'\nexport { azureOpenaiClientAdapter } from './adapters/client/azureOpenaiClientAdapter'\nexport { mistralClientAdapter } from './adapters/client/mistralClientAdapter'\nexport { perplexityClientAdapter } from './adapters/client/perplexityClientAdapter'\nexport { anthropicClientAdapter } from './adapters/client/anthropicClientAdapter'\nexport { togetherClientAdapter } from './adapters/client/togetherClientAdapter'\nexport { googleClientAdapter } from './adapters/client/googleClientAdapter'\nexport { ollamaClientAdapter } from './adapters/client/ollamaClientAdapter'\nexport { completionsRunAdapter } from './adapters/run/completionsRunAdapter'\nexport { prismaStorageAdapter } from './adapters/storage/prismaStorageAdapter'\n","import OpenAI, { AzureOpenAI } from 'openai'\nimport { supercompatFetch, type Args } from './supercompatFetch'\nimport { endpointFromBaseUrl } from '@/lib/azureOpenai/endpointFromBaseUrl'\n\nexport const supercompat = ({\n client,\n storage,\n runAdapter,\n}: Args) => {\n if (client.type === 'AZURE_OPENAI') {\n return new AzureOpenAI({\n apiKey: client.client.apiKey,\n apiVersion: client.client.apiVersion,\n endpoint: endpointFromBaseUrl({ baseURL: client.client.baseURL }),\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter,\n }),\n })\n }\n\n return new OpenAI({\n apiKey: 'SUPERCOMPAT_PLACEHOLDER_OPENAI_KEY',\n fetch: supercompatFetch({\n client,\n storage,\n runAdapter,\n }),\n })\n}\n","import { assign, partob } from 'radash'\nimport { RunAdapter, StorageAdapterArgs } from '@/types'\n\nconst storageRequestHandlers = ({\n storage,\n runAdapter,\n client,\n}: {\n storage?: (arg0: StorageAdapterArgs) => any\n runAdapter?: RunAdapter\n client: any\n}) => {\n if (!storage) return {}\n if (!runAdapter) return {}\n\n const result = storage({ runAdapter: partob(runAdapter, { client }) })\n return result.requestHandlers\n}\n\nexport const requestHandlers = ({\n client,\n storage,\n runAdapter,\n}: {\n client: any\n storage?: (arg0: StorageAdapterArgs) => any\n runAdapter?: RunAdapter\n}) => (\n assign(\n client.requestHandlers,\n storageRequestHandlers({\n storage,\n runAdapter,\n client,\n })\n )\n)\n","export const findRequestHandler = ({\n url,\n requestHandlers,\n}: {\n url: string\n requestHandlers: any\n}) => {\n const pathname = new URL(url).pathname\n\n for (const key in requestHandlers) {\n const regex = new RegExp(key)\n\n if (regex.test(pathname)) {\n return requestHandlers[key]\n }\n }\n}\n","export const originalFetch = ({\n args,\n client,\n}: {\n args: any[]\n client: any\n}) => {\n if (client.client?.fetch) {\n const [url, options] = args\n\n const headers = {\n ...options.headers,\n authorization: client.client.defaultHeaders().Authorization,\n }\n\n return client.client.fetch(url, {\n ...options,\n headers,\n })\n } else {\n // @ts-ignore-next-line\n return fetch(...args)\n }\n}\n","import { RunAdapter, StorageAdapterArgs } from '@/types'\nimport { requestHandlers as getRequestHandlers } from './requestHandlers'\nimport { findRequestHandler } from './findRequestHandler'\nimport { originalFetch } from './originalFetch'\n\nexport type Args = {\n client: any\n storage?: (arg0: StorageAdapterArgs) => any\n runAdapter?: RunAdapter\n}\n\nexport const supercompatFetch = ({\n client,\n storage,\n runAdapter,\n}: Args) => {\n const requestHandlers = getRequestHandlers({\n client,\n storage,\n runAdapter,\n })\n\n return async (...args: any[]) => {\n const [url, options] = args\n\n const pathHandler = findRequestHandler({\n url,\n requestHandlers,\n })\n\n if (!pathHandler) {\n return originalFetch({\n client,\n args,\n })\n }\n\n const requestHandler = pathHandler[options?.method]\n\n if (!requestHandler) {\n return originalFetch({\n client,\n args,\n })\n }\n\n return requestHandler(...args)\n }\n}\n","export const endpointFromBaseUrl = ({\n baseURL\n}: {\n baseURL: string\n}) => (\n baseURL.replace(/\\/+openai$/, '')\n)\n","import type Groq from 'groq-sdk'\n\nexport const get = ({\n groq,\n}: {\n groq: Groq\n}) => async (_url: string, _options: any) => {\n try {\n const data = await groq.models.list()\n\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type Groq from 'groq-sdk'\nimport { get } from './get'\n\nexport const models = ({\n groq,\n}: {\n groq: Groq\n}) => ({\n get: get({ groq }),\n})\n","import type Groq from 'groq-sdk'\n\nexport const post = ({\n groq,\n}: {\n groq: Groq\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await groq.chat.completions.create(body)\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await groq.chat.completions.create(body)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type Groq from 'groq-sdk'\nimport { post } from './post'\n\nexport const completions = ({\n groq,\n}: {\n groq: Groq\n}) => ({\n post: post({ groq }),\n})\n","// import type Groq from 'groq-sdk'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const groqClientAdapter = ({\n groq,\n}: {\n // TODO\n groq: any\n}) => ({\n client: groq,\n requestHandlers: {\n '^/v1/models$': models({ groq }),\n '^/v1/chat/completions$': completions({ groq }),\n },\n})\n","import type OpenAI from 'openai'\n\nexport const get = ({\n openai,\n}: {\n openai: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n const data = await openai.models.list()\n\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n openai,\n}: {\n openai: OpenAI\n}) => ({\n get: get({ openai }),\n})\n","import type OpenAI from 'openai'\n\nexport const post = ({\n openai,\n}: {\n openai: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await openai.chat.completions.create(body)\n console.dir({ response }, { depth: null })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await openai.chat.completions.create(body)\n console.dir({ data }, { depth: null })\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n openai,\n}: {\n openai: OpenAI\n}) => ({\n post: post({ openai }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const openaiClientAdapter = ({\n openai,\n}: {\n openai: OpenAI\n}) => ({\n client: openai,\n requestHandlers: {\n '^/v1/models$': models({ openai }),\n '^/(?:v1|/?openai)/chat/completions$': completions({ openai }),\n },\n})\n","import type { AzureOpenAI } from 'openai'\nimport { completions } from '@/adapters/client/openaiClientAdapter/completions'\n\nexport const azureOpenaiClientAdapter = ({\n azureOpenai,\n}: {\n azureOpenai: AzureOpenAI\n}) => ({\n type: 'AZURE_OPENAI',\n client: azureOpenai,\n requestHandlers: {\n '^/(?:v1|/?openai)/chat/completions$': completions({\n openai: azureOpenai,\n }),\n },\n})\n","import type { Mistral } from '@mistralai/mistralai'\n\nexport const get = ({\n mistral,\n}: {\n mistral: Mistral\n}) => async (_url: string, _options: any) => {\n try {\n const data = await mistral.models.list()\n\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type { Mistral } from '@mistralai/mistralai'\nimport { get } from './get'\n\nexport const models = ({\n mistral,\n}: {\n mistral: Mistral\n}) => ({\n get: get({ mistral }),\n})\n","const serializeDelta = ({\n delta: {\n toolCalls,\n ...rest\n },\n}: {\n delta: any\n}) => ({\n ...rest,\n ...(toolCalls ? {\n tool_calls: toolCalls,\n } : {}),\n})\n\nconst serializeChoice = ({\n choice: {\n finishReason,\n delta,\n ...rest\n },\n}: {\n choice: any\n}) => ({\n ...rest,\n finish_reason: finishReason ?? null,\n delta: serializeDelta({ delta }),\n})\n\nexport const serializeChunk = ({\n chunk,\n}: {\n chunk: any\n}) => ({\n ...chunk.data,\n ...(chunk.data.choices ? {\n choices: chunk.data.choices.map((choice: any) => (\n serializeChoice({ choice })\n )),\n }: {}),\n})\n","import type OpenAI from 'openai'\n\nconst serializeMessage = ({\n message: {\n // @ts-ignore-next-line\n tool_calls,\n // @ts-ignore-next-line\n tool_call_id,\n ...rest\n },\n}: {\n message: OpenAI.ChatCompletionMessageParam\n}) => ({\n ...rest,\n ...(tool_call_id ? {\n toolCallId: tool_call_id,\n } : {}),\n ...(tool_calls ? {\n toolCalls: tool_calls,\n } : {}),\n})\n\nexport const serializeBody = ({\n body,\n}: {\n body: any\n}) => ({\n ...body,\n messages: body.messages.map((message: OpenAI.ChatCompletionMessageParam) => (\n serializeMessage({\n message,\n })\n )),\n})\n","import type { Mistral } from '@mistralai/mistralai'\nimport { serializeChunk } from './serializeChunk'\nimport { serializeBody } from './serializeBody'\n\nexport const post = ({\n mistral,\n}: {\n mistral: Mistral\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n const serializedBody = serializeBody({\n body,\n })\n\n if (body.stream) {\n const response = await mistral.chat.stream(serializedBody)\n\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n const serializedChunk = serializeChunk({\n chunk,\n })\n\n controller.enqueue(`data: ${JSON.stringify(serializedChunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await mistral.chat.complete(serializedBody)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type { Mistral } from '@mistralai/mistralai'\nimport { post } from './post'\n\nexport const completions = ({\n mistral,\n}: {\n mistral: Mistral\n}) => ({\n post: post({ mistral }),\n})\n","import type { Mistral } from '@mistralai/mistralai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const mistralClientAdapter = ({\n mistral,\n}: {\n mistral: Mistral\n}) => ({\n client: mistral,\n requestHandlers: {\n '^/v1/models$': models({ mistral }),\n '^/v1/chat/completions$': completions({ mistral }),\n },\n})\n","import type OpenAI from 'openai'\n\nconst models = [\n 'llama-3.1-sonar-small-128k-online',\n 'llama-3.1-sonar-large-128k-online',\n 'llama-3.1-sonar-huge-128k-online',\n]\n\nexport const get = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n return new Response(JSON.stringify({\n type: 'list',\n data: models.map((model) => ({\n id: model,\n object: 'model',\n })),\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => ({\n get: get({ perplexity }),\n})\n","import type OpenAI from 'openai'\n\nconst agentSideRoles = ['assistant', 'system']\n\nexport const alternatingMessages = ({\n messages,\n}: {\n messages: OpenAI.Chat.ChatCompletionMessageParam[]\n}) => {\n const result = [] as OpenAI.Chat.ChatCompletionMessageParam[]\n\n messages.forEach((message: OpenAI.Chat.ChatCompletionMessageParam, index: number) => {\n result.push(message)\n\n const nextMessage = messages[index + 1]\n if (!nextMessage) return\n\n if (message.role === 'user' && nextMessage.role === 'user') {\n result.push({\n role: 'assistant',\n content: '-',\n })\n } else if (agentSideRoles.includes(message.role) && agentSideRoles.includes(nextMessage.role)) {\n result.push({\n role: 'user',\n content: '-',\n })\n }\n })\n\n return result\n}\n","import type OpenAI from 'openai'\nimport { alternatingMessages } from '@/lib/messages/alternatingMessages'\n\nexport const post = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n const messages = alternatingMessages({\n messages: body.messages,\n })\n\n if (body.stream) {\n const response = await perplexity.chat.completions.create({\n ...body,\n messages,\n })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await perplexity.chat.completions.create(body)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => ({\n post: post({ perplexity }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const perplexityClientAdapter = ({\n perplexity,\n}: {\n perplexity: OpenAI\n}) => ({\n client: perplexity,\n requestHandlers: {\n '^/v1/models$': models({ perplexity }),\n '^/v1/chat/completions$': completions({ perplexity }),\n },\n})\n","import type Anthropic from '@anthropic-ai/sdk'\n\nconst models = [\n 'claude-3-5-sonnet-20241022',\n 'claude-3-5-sonnet-20240620',\n 'claude-3-opus-20240229',\n 'claude-3-sonnet-20240229',\n 'claude-3-5-haiku-20241022',\n 'claude-3-haiku-20240307',\n]\n\nexport const get = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => async (_url: string, _options: any) => {\n try {\n return new Response(JSON.stringify({\n type: 'list',\n data: models.map((model) => ({\n id: model,\n object: 'model',\n })),\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type Anthropic from '@anthropic-ai/sdk'\nimport { get } from './get'\n\nexport const models = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => ({\n get: get({ anthropic }),\n})\n","import type Anthropic from '@anthropic-ai/sdk'\nimport type OpenAI from 'openai'\nimport { uid, fork, omit, isEmpty } from 'radash'\nimport { nonEmptyMessages } from '@/lib/messages/nonEmptyMessages'\nimport { alternatingMessages } from '@/lib/messages/alternatingMessages'\nimport { firstUserMessages } from '@/lib/messages/firstUserMessages'\nimport { serializeTools } from './serializeTools'\nimport { serializeMessages } from './serializeMessages'\n\nexport const post = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n const messages = body.messages as OpenAI.ChatCompletionMessageParam[]\n const [systemMessages, otherMessages] = fork(messages, (message) => message.role === 'system')\n const system = systemMessages.map((message) => message.content).join('\\n')\n\n const chatMessages = nonEmptyMessages({\n messages: firstUserMessages({\n messages: alternatingMessages({\n messages: otherMessages,\n }),\n }),\n })\n\n const resultOptions = {\n ...omit(body, ['response_format']),\n stream: body.stream ? isEmpty(body.tools) : false,\n system,\n messages: serializeMessages({\n messages: chatMessages,\n }),\n max_tokens: 4096,\n tools: serializeTools({\n tools: body.tools,\n }),\n }\n\n if (body.stream) {\n // @ts-ignore-next-line\n const response = await anthropic.messages.stream(resultOptions)\n\n const stream = new ReadableStream({\n async start(controller) {\n for await (const chunk of response) {\n if (chunk.type === 'content_block_delta') {\n const delta = chunk.delta.type === 'input_json_delta' ? {\n tool_calls: [\n {\n index: 0,\n function: {\n arguments: chunk.delta.partial_json,\n },\n },\n ]\n } : {\n content: chunk.delta.text,\n }\n\n const messageDelta = {\n id: `chatcmpl-${uid(29)}`,\n object: 'chat.completion.chunk',\n choices: [\n {\n index: chunk.index,\n delta,\n },\n ],\n }\n\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\\n\\n`)\n } else if (chunk.type === 'content_block_start') {\n const delta = chunk.content_block.type === 'tool_use' ? {\n content: null,\n tool_calls: [\n {\n index: 0,\n id: chunk.content_block.id,\n type: 'function',\n function: {\n name: chunk.content_block.name,\n arguments: '',\n }\n }\n ],\n } : {\n content: chunk.content_block.text,\n }\n\n const messageDelta = {\n id: `chatcmpl-${uid(29)}`,\n object: 'chat.completion.chunk',\n choices: [\n {\n index: chunk.index,\n delta,\n },\n ],\n }\n\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\\n\\n`)\n } else if (chunk.type === 'message_start') {\n const messageDelta = {\n id: `chatcmpl-${uid(29)}`,\n object: 'chat.completion.chunk',\n choices: [\n {\n index: 0,\n delta: {\n content: '',\n },\n },\n ],\n }\n\n controller.enqueue(`data: ${JSON.stringify(messageDelta)}\\n\\n`)\n }\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n // @ts-ignore-next-line\n const data = await anthropic.messages.create(resultOptions)\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { isEmpty } from 'radash'\n\nexport const nonEmptyMessages = ({\n messages,\n}: {\n messages: OpenAI.Chat.ChatCompletionMessageParam[]\n}) => {\n const result = [] as OpenAI.Chat.ChatCompletionMessageParam[]\n\n messages.forEach((message: OpenAI.Chat.ChatCompletionMessageParam) => (\n result.push({\n ...message,\n content: isEmpty(message.content) ? '-' : message.content as string,\n })\n ))\n\n return result\n}\n","import type OpenAI from 'openai'\n\nexport const firstUserMessages = ({\n messages,\n}: {\n messages: OpenAI.Chat.ChatCompletionMessageParam[]\n}): OpenAI.Chat.ChatCompletionMessageParam[] => {\n const firstMessage = messages[0]\n if (!firstMessage) return messages\n\n if (firstMessage.role !== 'user') {\n return [\n {\n role: 'user',\n content: '-',\n },\n ...messages,\n ]\n }\n\n return messages\n}\n","import type OpenAI from 'openai'\n\nexport const serializeTools = ({\n tools,\n}: {\n tools: OpenAI.Beta.AssistantTool[] | undefined\n}) => (\n (tools ?? []).map((tool: OpenAI.Beta.AssistantTool) => {\n if (tool.type === 'function') {\n return {\n name: tool.function.name,\n description: tool.function.description,\n input_schema: tool.function.parameters ?? {\n type: 'object',\n },\n }\n }\n\n return tool\n })\n)\n","import type OpenAI from 'openai'\n\nexport const serializeMessage = ({\n message,\n}: {\n message: OpenAI.ChatCompletionMessageParam\n}) => {\n if (message.role === 'user') {\n return {\n role: 'user',\n content: message.content,\n }\n } else if (message.role === 'assistant') {\n return {\n role: 'assistant',\n content: [\n {\n type: 'text',\n text: message.content,\n },\n ...(message.tool_calls ?? []).map((toolCall) => ({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.function.name,\n input: toolCall.function.arguments ? JSON.parse(toolCall.function.arguments) : {},\n })),\n ],\n }\n } else if (message.role === 'tool') {\n return {\n role: 'user',\n content: [\n {\n type: 'tool_result',\n tool_use_id: message.tool_call_id,\n content: message.content,\n },\n ],\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { serializeMessage } from './serializeMessage'\n\nexport const serializeMessages = ({\n messages,\n}: {\n messages: OpenAI.ChatCompletionMessageParam[]\n}) => (\n messages.map(message => (\n serializeMessage({\n message,\n })\n ))\n)\n","import type Anthropic from '@anthropic-ai/sdk'\nimport { post } from './post'\n\nexport const completions = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => ({\n post: post({ anthropic }),\n})\n","import type Anthropic from '@anthropic-ai/sdk'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const anthropicClientAdapter = ({\n anthropic,\n}: {\n anthropic: Anthropic\n}) => ({\n client: anthropic,\n requestHandlers: {\n '^/v1/models$': models({ anthropic }),\n '^/v1/chat/completions$': completions({ anthropic }),\n },\n})\n","import type OpenAI from 'openai'\n\nexport const get = ({\n together,\n}: {\n together: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n const data = await together.models.list()\n\n return new Response(JSON.stringify({\n type: 'list',\n // @ts-ignore-next-line\n data: data.body,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n together,\n}: {\n together: OpenAI\n}) => ({\n get: get({ together }),\n})\n","import type OpenAI from 'openai'\n\nexport const post = ({\n together,\n}: {\n together: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await together.chat.completions.create(body)\n console.dir({ response }, { depth: null })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await together.chat.completions.create(body)\n console.dir({ data }, { depth: null })\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n together,\n}: {\n together: OpenAI\n}) => ({\n post: post({ together }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const togetherClientAdapter = ({\n together,\n}: {\n together: OpenAI\n}) => ({\n client: together,\n requestHandlers: {\n '^/v1/models$': models({ together }),\n '^/(?:v1|/?openai)/chat/completions$': completions({ together }),\n },\n})\n","import type OpenAI from 'openai'\n\nconst models = [\n 'gemini-2.0-flash-exp',\n 'gemini-1.5-flash',\n 'gemini-1.5-flash-8b',\n 'gemini-1.5-pro',\n 'gemini-1.0-pro',\n 'text-embedding-004',\n 'aqa',\n]\n\nexport const get = ({\n google,\n}: {\n google: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n return new Response(JSON.stringify({\n type: 'list',\n data: models.map((model) => ({\n id: model,\n object: 'model',\n })),\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n google,\n}: {\n google: OpenAI\n}) => ({\n get: get({ google }),\n})\n","import type OpenAI from 'openai'\n\nexport const post = ({\n google,\n}: {\n google: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await google.chat.completions.create(body)\n console.dir({ response }, { depth: null })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await google.chat.completions.create(body)\n console.dir({ data }, { depth: null })\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n google,\n}: {\n google: OpenAI\n}) => ({\n post: post({ google }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const googleClientAdapter = ({\n google,\n}: {\n google: OpenAI\n}) => ({\n client: google,\n requestHandlers: {\n '^/v1/models$': models({ google }),\n '^/(?:v1|/?openai)/chat/completions$': completions({ google }),\n },\n})\n","import type OpenAI from 'openai'\n\nexport const get = ({\n ollama,\n}: {\n ollama: OpenAI\n}) => async (_url: string, _options: any) => {\n try {\n const data = await ollama.models.list()\n\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { get } from './get'\n\nexport const models = ({\n ollama,\n}: {\n ollama: OpenAI\n}) => ({\n get: get({ ollama }),\n})\n","import type OpenAI from 'openai'\n\nexport const post = ({\n ollama,\n}: {\n ollama: OpenAI\n}) => async (_url: string, options: any) => {\n const body = JSON.parse(options.body)\n\n if (body.stream) {\n const response = await ollama.chat.completions.create(body)\n console.dir({ response }, { depth: null })\n\n const stream = new ReadableStream({\n async start(controller) {\n // @ts-ignore-next-line\n for await (const chunk of response) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`)\n }\n\n controller.close()\n },\n })\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n try {\n const data = await ollama.chat.completions.create(body)\n console.dir({ data }, { depth: null })\n\n return new Response(JSON.stringify({\n data,\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n } catch (error) {\n return new Response(JSON.stringify({\n error,\n }), {\n status: 500,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n }\n}\n","import type OpenAI from 'openai'\nimport { post } from './post'\n\nexport const completions = ({\n ollama,\n}: {\n ollama: OpenAI\n}) => ({\n post: post({ ollama }),\n})\n","import type OpenAI from 'openai'\nimport { models } from './models'\nimport { completions } from './completions'\n\nexport const ollamaClientAdapter = ({\n ollama,\n}: {\n ollama: OpenAI\n}) => ({\n client: ollama,\n requestHandlers: {\n '^/v1/models$': models({ ollama }),\n '^/(?:v1|/?openai)/chat/completions$': completions({ ollama }),\n },\n})\n","import _ from 'lodash'\nimport { uid, omit, isEmpty } from 'radash'\nimport dayjs from 'dayjs'\nimport OpenAI from 'openai'\nimport { MessageWithRun } from '@/types'\nimport { messages } from './messages'\nimport { supercompat } from '@/supercompat'\n\nconst updatedToolCall = ({\n toolCall,\n delta,\n}: {\n toolCall: any\n delta: any\n}) => {\n if (!toolCall) return omit(delta, ['index'])\n\n // if (delta.type !== 'function') return toolCall\n\n const result = _.cloneDeep(toolCall)\n\n for (const [key, value] of Object.entries(delta.function)) {\n result.function[key] = `${result.function[key] ?? ''}${value}`\n }\n\n return result\n}\n\nconst toolCallsData = ({\n prevToolCalls,\n delta,\n}: {\n prevToolCalls: any\n delta: any\n}) => {\n if (!prevToolCalls) {\n return delta.tool_calls.map((tc: any) => ({\n id: uid(24),\n type: 'function',\n ...omit(tc, ['index']),\n }))\n }\n\n const newToolCalls = _.cloneDeep(prevToolCalls)\n\n for (const runStepDelta of delta.tool_calls) {\n newToolCalls[runStepDelta.index] = updatedToolCall({\n toolCall: newToolCalls[runStepDelta.index],\n delta: runStepDelta,\n })\n }\n\n return newToolCalls\n}\n\nexport const completionsRunAdapter = () => async ({\n client: clientAdapter,\n run,\n onEvent,\n getMessages,\n}: {\n client: OpenAI\n run: OpenAI.Beta.Threads.Run\n onEvent: (event: OpenAI.Beta.AssistantStreamEvent) => Promise<any>\n getMessages: () => Promise<MessageWithRun[]>\n}) => {\n if (run.status !== 'queued') return\n\n const client = supercompat({\n client: clientAdapter,\n })\n\n onEvent({\n event: 'thread.run.in_progress',\n data: {\n ...run,\n status: 'in_progress',\n },\n })\n\n const opts = {\n messages: await messages({\n run,\n getMessages,\n }),\n model: run.model,\n stream: true,\n response_format: run.response_format,\n ...(isEmpty(run.tools) ? {} : { tools: run.tools }),\n } as OpenAI.ChatCompletionCreateParamsStreaming\n\n let providerResponse\n\n try {\n providerResponse = await client.chat.completions.create(opts)\n } catch(e: any) {\n console.error(e)\n\n return onEvent({\n event: 'thread.run.failed',\n data: {\n ...run,\n failed_at: dayjs().unix(),\n status: 'in_progress',\n last_error: {\n code: 'server_error',\n message: `${e?.message ?? ''} ${e?.cause?.message ?? ''}`,\n },\n },\n })\n }\n\n let message = await onEvent({\n event: 'thread.message.created',\n data: {\n id: 'THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID',\n object: 'thread.message',\n completed_at: null,\n run_id: run.id,\n created_at: dayjs().unix(),\n assistant_id: run.assistant_id,\n incomplete_at: null,\n incomplete_details: null,\n metadata: {},\n attachments: [],\n thread_id: run.thread_id,\n content: [{ text: { value: '', annotations: [] }, type: 'text' }],\n role: 'assistant',\n status: 'in_progress',\n },\n })\n\n onEvent({\n event: 'thread.run.step.created',\n data: {\n id: 'THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID',\n object: 'thread.run.step',\n run_id: run.id,\n assistant_id: run.assistant_id,\n thread_id: run.thread_id,\n type: 'message_creation',\n status: 'completed',\n completed_at: dayjs().unix(),\n created_at: dayjs().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: 'message_creation',\n message_creation: {\n message_id: message.id,\n },\n },\n },\n })\n\n let toolCallsRunStep\n let currentContent = ''\n let currentToolCalls\n\n for await (const chunk of providerResponse) {\n const choices = chunk.choices ?? []\n const choice = choices[0]\n if (!choice) continue\n\n const delta = choice.delta\n\n if (delta.content) {\n currentContent = `${currentContent}${delta.content ?? ''}`\n }\n\n if (delta.tool_calls) {\n if (!toolCallsRunStep) {\n toolCallsRunStep = await onEvent({\n event: 'thread.run.step.created',\n data: {\n id: 'THERE_IS_A_BUG_IN_SUPERCOMPAT_IF_YOU_SEE_THIS_ID',\n object: 'thread.run.step',\n run_id: run.id,\n assistant_id: run.assistant_id,\n thread_id: run.thread_id,\n type: 'tool_calls',\n status: 'in_progress',\n completed_at: null,\n created_at: dayjs().unix(),\n expired_at: null,\n last_error: null,\n metadata: {},\n failed_at: null,\n cancelled_at: null,\n usage: null,\n step_details: {\n type: 'tool_calls',\n tool_calls: [],\n },\n },\n })\n }\n\n onEvent({\n event: 'thread.run.step.delta',\n data: {\n object: 'thread.run.step.delta',\n run_id: run.id,\n id: toolCallsRunStep.id,\n delta: {\n step_details: {\n type: 'tool_calls',\n tool_calls: delta.tool_calls.map((tc: any) => ({\n id: uid(24),\n type: 'function',\n ...tc,\n })),\n },\n },\n },\n } as OpenAI.Beta.AssistantStreamEvent.ThreadRunStepDelta)\n\n currentToolCalls = toolCallsData({ prevToolCalls: currentToolCalls, delta })\n }\n\n if (delta.content) {\n onEvent({\n event: 'thread.message.delta',\n data: {\n id: message.id,\n delta: {\n content: [\n {\n type: 'text',\n index: 0,\n text: {\n value: delta.content,\n },\n },\n ],\n },\n },\n } as OpenAI.Beta.AssistantStreamEvent.ThreadMessageDelta)\n }\n }\n\n message = await onEvent({\n event: 'thread.message.completed',\n data: {\n ...message,\n status: 'completed',\n content: [{ text: { value: currentContent, annotations: [] }, type: 'text' }],\n tool_calls: currentToolCalls,\n },\n })\n\n if (isEmpty(message.toolCalls)) {\n return onEvent({\n event: 'thread.run.completed',\n data: {\n ...run,\n status: 'completed',\n completed_at: dayjs().unix(),\n },\n })\n }\n\n return onEvent({\n event: 'thread.run.requires_action',\n data: {\n ...run,\n status: 'requires_action',\n required_action: {\n type: 'submit_tool_outputs',\n submit_tool_outputs: {\n tool_calls: message.toolCalls,\n },\n },\n },\n })\n}\n","import type OpenAI from 'openai'\nimport { flat } from 'radash'\nimport { MessageWithRun } from '@/types'\nimport { serializeMessage } from './serializeMessage'\n\nexport const messages = async ({\n run,\n getMessages,\n}: {\n run: OpenAI.Beta.Threads.Run\n getMessages: () => Promise<MessageWithRun[]>\n}) => (\n [\n ...(run.instructions ? [{\n role: 'system',\n content: run.instructions,\n }] : []),\n ...flat((await getMessages()).map((message: MessageWithRun) => serializeMessage({ message }))),\n ]\n)\n","import type OpenAI from 'openai'\nimport { MessageWithRun } from '@/types'\n\nconst serializeToolCall = ({\n toolCall,\n}: {\n toolCall: OpenAI.Beta.Threads.Runs.Steps.FunctionToolCall\n}) => ({\n tool_call_id: toolCall.id,\n role: 'tool' as 'tool',\n name: toolCall.function.name,\n content: toolCall.function.output ?? '',\n})\n\nconst serializeMessageWithContent = ({\n message,\n}: {\n message: MessageWithRun\n}) => ({\n role: message.role,\n content: serializeContent({\n content: message.content as unknown as OpenAI.Beta.Threads.Messages.TextContentBlock[],\n }),\n ...(message?.metadata?.toolCalls ? { tool_calls: message.metadata.toolCalls } : {}),\n})\n\nconst serializeContent = ({\n content,\n}: {\n content: OpenAI.Beta.Threads.Messages.TextContentBlock[]\n}) => content.map((content) => content.text.value).join('\\n')\n\nexport const serializeMessage = ({\n message\n}: {\n message: MessageWithRun\n}) => {\n const result = [serializeMessageWithContent({ message })]\n\n const run = message.run\n\n if (!run) return result\n\n const messageToolCalls = message.metadata?.toolCalls || []\n\n messageToolCalls.forEach((tc: OpenAI.Beta.Threads.Runs.Steps.ToolCall) => {\n const runStep = run.runSteps.find((rs) => {\n if (rs.type !== 'tool_calls') return false\n\n return rs.step_details.tool_calls.some((rsTc: OpenAI.Beta.Threads.Runs.Steps.ToolCall) => {\n if (rsTc.type !== 'function') return false\n\n return rsTc.id === tc.id\n })\n })\n\n if (!runStep) return\n\n const toolCall = runStep.step_details.tool_calls.find((rsTc: OpenAI.Beta.Threads.Runs.Steps.ToolCall) => {\n if (rsTc.type !== 'function') return false\n\n return rsTc.id === tc.id\n })\n\n result.push(serializeToolCall({ toolCall }))\n })\n\n return result\n}\n","export const messagesRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/messages$'\n","export const runsRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs$'\n","export const runRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)$'\n","export const submitToolOutputsRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/submit_tool_outputs$'\n","export const stepsRegexp = '^/(?:v1|/?openai)/threads/([^/]+)/runs/([^/]+)/steps$'\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport dayjs from 'dayjs'\nimport { serializeThread } from './serializeThread'\n\ntype ThreadCreateResponse = Response & {\n json: () => Promise<OpenAI.Beta.Threads['create']>\n}\n\nexport const post = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (...args: Parameters<OpenAI.Beta.Threads['create']>): Promise<ThreadCreateResponse> => {\n // @ts-ignore-next-line\n const body = JSON.parse(args[1].body)\n\n const messages = body.messages || []\n const metadata = body.metadata || {}\n\n const initialCreatedAt = dayjs().subtract(messages.length, 'seconds').format()\n\n const thread = await prisma.thread.create({\n data: {\n metadata,\n ...(metadata.assistantId ? ({\n assistant: {\n connect: {\n id: metadata.assistantId,\n },\n },\n }) : {}),\n messages: {\n create: messages.map((message: OpenAI.Beta.ThreadCreateParams.Message, index: number) => ({\n role: message.role === 'user' ? 'USER' : 'ASSISTANT',\n content: [{\n type: 'text',\n text: {\n annotations: [],\n value: message.content,\n },\n },\n ],\n attachments: message.attachments,\n metadata: message.metadata,\n createdAt: dayjs(initialCreatedAt).add(index, 'seconds').toDate(),\n })),\n },\n },\n })\n\n return new Response(JSON.stringify(\n serializeThread({ thread }),\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","// @ts-ignore-next-line\nimport type { Thread } from '@prisma/client'\nimport dayjs from 'dayjs'\n\nexport const serializeThread = ({\n thread,\n}: {\n thread: Thread\n}) => ({\n id: thread.id,\n object: 'thread' as 'thread',\n created_at: dayjs(thread.createdAt).unix(),\n metadata: thread.metadata,\n // TODO\n tool_resources: null,\n})\n","import type { PrismaClient } from '@prisma/client'\nimport { post } from './post'\n\nexport const threads = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n post: post({ prisma }),\n})\n","// @ts-ignore-next-line\nimport type { Message } from '@prisma/client'\nimport dayjs from 'dayjs'\nimport type OpenAI from 'openai'\nimport { assign } from 'radash'\n\nexport const serializeMessage = ({\n message,\n}: {\n message: Message\n}) => ({\n id: message.id,\n object: 'thread.message' as 'thread.message',\n created_at: dayjs(message.createdAt).unix(),\n thread_id: message.threadId,\n completed_at: message.completedAt ? dayjs(message.completedAt).unix() : null,\n incomplete_at: message.incompleteAt ? dayjs(message.incompleteAt).unix() : null,\n incomplete_details: message.incompleteDetails as unknown as OpenAI.Beta.Threads.Messages.Message.IncompleteDetails,\n role: message.role.toLowerCase() as 'user' | 'assistant',\n content: message.content as unknown as OpenAI.Beta.Threads.Messages.TextContentBlock[],\n assistant_id: message.assistantId,\n run_id: message.runId,\n attachments: message.attachments,\n status: message.status.toLowerCase() as OpenAI.Beta.Threads.Messages.Message['status'],\n metadata: assign(message.metadata as Record<any, any> ?? {}, message.toolCalls ? { toolCalls: message.toolCalls } : {}),\n})\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { serializeMessage } from './serializeMessage'\nimport { messagesRegexp } from '@/lib/messages/messagesRegexp'\n\ntype MessageCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Messages['create']>>\n}\n\nconst messageContentBlocks = ({\n content,\n}: {\n content: string\n}) => ([\n {\n type: 'text',\n text: {\n value: content ?? '',\n annotations: [],\n },\n },\n])\n\nexport const post = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string, options: any): Promise<MessageCreateResponse> => {\n const url = new URL(urlString)\n\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp))!\n\n const body = JSON.parse(options.body)\n const { role, content } = body\n\n const message = await prisma.message.create({\n data: {\n threadId,\n content: messageContentBlocks({ content }),\n role: role === 'user' ? 'USER' : 'ASSISTANT',\n },\n })\n\n return new Response(JSON.stringify(\n serializeMessage({ message }),\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type OpenAI from 'openai'\n// @ts-ignore-next-line\nimport type { PrismaClient, Message } from '@prisma/client'\nimport { assign, last } from 'radash'\nimport { messagesRegexp } from '@/lib/messages/messagesRegexp'\nimport { serializeMessage } from './serializeMessage'\n\ntype MessageCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Messages['create']>>\n}\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string): Promise<MessageCreateResponse> => {\n const url = new URL(urlString)\n\n const [, threadId] = url.pathname.match(new RegExp(messagesRegexp))!\n\n const {\n limit,\n order,\n after,\n } = assign({\n limit: '20',\n order: 'desc',\n // after: null,\n }, Object.fromEntries(url.searchParams))\n\n const messages = await prisma.message.findMany({\n where: {\n threadId,\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order,\n },\n ...(after ? {\n skip: 1,\n cursor: {\n id: after,\n },\n }: {}),\n }) as Message[]\n\n return new Response(JSON.stringify({\n data: messages.map((message: Message) => (\n serializeMessage({ message })\n )),\n hasNextPage: () => messages.length === parseInt(limit),\n body: {\n last_id: last(messages)?.id ?? null,\n },\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport { post } from './post'\nimport { get } from './get'\n\nexport const messages = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n post: post({ prisma }),\n get: get({ prisma }),\n})\n","import type OpenAI from 'openai'\n// @ts-ignore-next-line\nimport type { PrismaClient, Run } from '@prisma/client'\nimport { assign, last } from 'radash'\nimport { runsRegexp } from '@/lib/runs/runsRegexp'\nimport { serializeRun } from './serializeRun'\n\ntype MessageCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Messages['create']>>\n}\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string): Promise<MessageCreateResponse> => {\n const url = new URL(urlString)\n\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp))!\n\n const {\n limit,\n order,\n after,\n } = assign({\n limit: '20',\n order: 'desc',\n // after: null,\n }, Object.fromEntries(url.searchParams))\n\n const runs = await prisma.run.findMany({\n where: {\n threadId,\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order,\n },\n ...(after ? {\n skip: 1,\n cursor: {\n id: after,\n },\n }: {}),\n })\n\n return new Response(JSON.stringify({\n data: runs.map((run: Run) => (\n serializeRun({ run })\n )),\n hasNextPage: () => runs.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: last(runs)?.id ?? null,\n },\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type OpenAI from 'openai'\n// @ts-ignore-next-line\nimport type { Run } from '@prisma/client'\nimport dayjs from 'dayjs'\n\nexport const serializeRun = ({\n run,\n}: {\n run: Run\n}): OpenAI.Beta.Threads.Run => ({\n id: run.id,\n object: 'thread.run' as 'thread.run',\n created_at: dayjs(run.createdAt).unix(),\n thread_id: run.threadId,\n assistant_id: run.assistantId,\n status: run.status.toLowerCase() as OpenAI.Beta.Threads.Run['status'],\n required_action: run.requiredAction as OpenAI.Beta.Threads.Run['required_action'],\n last_error: run.lastError as OpenAI.Beta.Threads.Run['last_error'],\n expires_at: dayjs(run.expiresAt).unix(),\n started_at: run.startedAt ? dayjs(run.startedAt).unix() : null,\n cancelled_at: run.cancelledAt ? dayjs(run.cancelledAt).unix() : null,\n failed_at: run.failedAt ? dayjs(run.failedAt).unix() : null,\n completed_at: run.completedAt ? dayjs(run.completedAt).unix() : null,\n model: run.model,\n instructions: run.instructions,\n tools: run.tools as OpenAI.Beta.Threads.Run['tools'],\n metadata: run.metadata,\n usage: run.usage as OpenAI.Beta.Threads.Run['usage'],\n truncation_strategy: {\n type: 'auto',\n },\n response_format: {\n type: 'text',\n },\n // TODO\n incomplete_details: null,\n max_completion_tokens: null,\n max_prompt_tokens: null,\n tool_choice: 'auto',\n parallel_tool_calls: true,\n})\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport dayjs from 'dayjs'\nimport { assign } from 'radash'\nimport { runsRegexp } from '@/lib/runs/runsRegexp'\nimport { serializeRun } from './serializeRun'\nimport { RunAdapterPartobClient } from '@/types'\nimport { onEvent } from './onEvent'\nimport { getMessages } from './getMessages'\n\ntype RunCreateResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Runs['create']>>\n}\n\nexport const post = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapterPartobClient\n}) => async (urlString: string, options: any): Promise<RunCreateResponse> => {\n const url = new URL(urlString)\n const [, threadId] = url.pathname.match(new RegExp(runsRegexp))!\n\n const body = JSON.parse(options.body)\n const { assistant_id, stream } = body\n\n const assistant = await prisma.assistant.findUnique({\n where: {\n id: assistant_id,\n },\n })\n\n if (!assistant) {\n throw new Error('Assistant not found')\n }\n\n const {\n model,\n instructions,\n // additional_instructions,\n tools,\n metadata,\n response_format,\n truncation_strategy,\n } = assign({\n model: assistant.modelSlug,\n instructions: '',\n additional_instructions: null,\n truncation_strategy: {\n type: 'auto',\n },\n response_format: {\n type: 'text',\n },\n // tools: [],\n // metadata: {},\n }, body)\n\n const run = await prisma.run.create({\n data: {\n status: 'QUEUED',\n expiresAt: dayjs().add(1, 'hour').unix(),\n model,\n instructions,\n tools,\n metadata,\n thread: {\n connect: {\n id: threadId,\n },\n },\n assistant: {\n connect: {\n id: assistant_id,\n },\n },\n truncationStrategy: truncation_strategy,\n responseFormat: response_format,\n },\n })\n\n const data = serializeRun({ run })\n\n const readableStream = new ReadableStream({\n async start(controller) {\n try {\n await runAdapter({\n run: data,\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n }),\n getMessages: getMessages({\n prisma,\n run,\n }),\n })\n } catch (error: any) {\n console.error(error)\n\n onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n })({\n event: 'thread.run.failed',\n data: {\n id: run.id,\n failed_at: dayjs().unix(),\n last_error: {\n code: 'server_error',\n message: `${error?.message ?? ''} ${error?.cause?.message ?? ''}`,\n },\n },\n } as OpenAI.Beta.AssistantStreamEvent.ThreadRunFailed)\n }\n\n controller.close()\n },\n })\n\n if (stream) {\n return new Response(readableStream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n return new Response(JSON.stringify(\n data\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type OpenAI from 'openai'\nimport { RunStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadRunInProgress = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunInProgress\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunInProgress>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.IN_PROGRESS,\n },\n })\n}\n","import type OpenAI from 'openai'\nimport { RunStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadRunFailed = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunFailed\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunFailed>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.FAILED,\n failedAt: event.data.failed_at,\n lastError: event.data.last_error,\n },\n })\n}\n","import type OpenAI from 'openai'\nimport { RunStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadRunCompleted = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunCompleted\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunCompleted>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.COMPLETED,\n requiredAction: undefined,\n },\n })\n}\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { RunStatus } from '@/types/prisma'\n\nexport const threadRunRequiresAction = ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunRequiresAction\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunRequiresAction>\n}) => {\n controller.enqueue(event)\n\n return prisma.run.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: RunStatus.REQUIRES_ACTION,\n requiredAction: event.data.required_action,\n },\n })\n}\n","import dayjs from 'dayjs'\n// @ts-ignore-next-line\nimport type { RunStep } from '@prisma/client'\nimport type OpenAI from 'openai'\n\nexport const serializeRunStep = ({\n runStep,\n}: {\n runStep: RunStep\n}) => ({\n id: runStep.id,\n object: 'thread.run.step' as 'thread.run.step',\n created_at: dayjs(runStep.createdAt).unix(),\n assistant_id: runStep.assistantId,\n thread_id: runStep.threadId,\n run_id: runStep.runId,\n type: runStep.type.toLowerCase() as OpenAI.Beta.Threads.Runs.RunStep['type'],\n status: runStep.status.toLowerCase() as OpenAI.Beta.Threads.Runs.RunStep['status'],\n // @ts-ignore-next-line\n step_details: runStep.stepDetails as OpenAI.Beta.Threads.Runs.RunStep['step_details'],\n last_error: runStep.lastError as OpenAI.Beta.Threads.Runs.RunStep['last_error'],\n expired_at: runStep.expiredAt ? dayjs(runStep.expiredAt).unix() : null,\n cancelled_at: runStep.cancelledAt ? dayjs(runStep.cancelledAt).unix() : null,\n failed_at: runStep.failedAt ? dayjs(runStep.failedAt).unix() : null,\n completed_at: runStep.completedAt ? dayjs(runStep.completedAt).unix() : null,\n metadata: runStep.metadata,\n usage: runStep.usage as OpenAI.Beta.Threads.Runs.RunStep['usage'],\n})\n","import type OpenAI from 'openai'\nimport { RunStepType, RunStepStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\nimport { serializeRunStep } from '../../steps/serializeRunStep'\n\nconst type = (event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated) => {\n if (event.data.type === 'message_creation') return RunStepType.MESSAGE_CREATION\n if (event.data.type === 'tool_calls') return RunStepType.TOOL_CALLS\n\n throw new Error(`Unknown type: ${event.data.type}`)\n}\n\nconst status = (event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated) => {\n if (event.data.status === 'in_progress') return RunStepStatus.IN_PROGRESS\n if (event.data.status === 'cancelled') return RunStepStatus.CANCELLED\n if (event.data.status === 'completed') return RunStepStatus.COMPLETED\n if (event.data.status === 'failed') return RunStepStatus.FAILED\n if (event.data.status === 'expired') return RunStepStatus.EXPIRED\n\n throw new Error(`Unknown status: ${event.data.status}`)\n}\n\nexport const threadRunStepCreated = async ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunStepCreated>\n}) => {\n const runStep = await prisma.runStep.create({\n data: {\n runId: event.data.run_id,\n assistantId: event.data.assistant_id,\n threadId: event.data.thread_id,\n type: type(event),\n status: status(event),\n stepDetails: event.data.step_details,\n completedAt: event.data.completed_at,\n },\n })\n\n const serializedRunStep = serializeRunStep({ runStep })\n\n controller.enqueue({\n ...event,\n data: serializedRunStep,\n })\n\n return serializedRunStep\n}\n","import type OpenAI from 'openai'\n\nexport const threadRunStepDelta = ({\n event,\n controller,\n}: {\n event: OpenAI.Beta.AssistantStreamEvent.ThreadRunStepDelta\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadRunStepDelta>\n}) => (\n controller.enqueue(event)\n)\n","import type OpenAI from 'openai'\nimport { MessageStatus } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\nimport { serializeMessage } from '../../../messages/serializeMessage'\n\nconst status = (event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageCreated) => {\n if (event.data.status === 'completed') return MessageStatus.COMPLETED\n if (event.data.status === 'in_progress') return MessageStatus.IN_PROGRESS\n if (event.data.status === 'incomplete') return MessageStatus.INCOMPLETE\n\n throw new Error(`Unknown status: ${event.data.status}`)\n}\n\nexport const threadMessageCreated = async ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageCreated\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadMessageCreated>\n}) => {\n const message = await prisma.message.create({\n data: {\n threadId: event.data.thread_id,\n content: event.data.content as unknown as OpenAI.Beta.Threads.Messages.TextContentBlock[],\n role: event.data.role === 'assistant' ? 'ASSISTANT' : 'USER',\n assistantId: event.data.assistant_id,\n runId: event.data.run_id,\n status: status(event),\n },\n })\n\n const serializedMessage = serializeMessage({ message })\n\n controller.enqueue({\n ...event,\n data: serializedMessage,\n })\n\n return serializedMessage\n}\n","import type OpenAI from 'openai'\n\nexport const threadMessageDelta = ({\n event,\n controller,\n}: {\n event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageDelta\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadMessageDelta>\n}) => (\n controller.enqueue(event)\n)\n","import type OpenAI from 'openai'\nimport { MessageStatus, RunStepType } from '@/types/prisma'\nimport type { PrismaClient } from '@prisma/client'\n\nexport const threadMessageCompleted = async ({\n prisma,\n event,\n controller,\n}: {\n prisma: PrismaClient\n event: OpenAI.Beta.AssistantStreamEvent.ThreadMessageCompleted\n controller: ReadableStreamDefaultController<OpenAI.Beta.AssistantStreamEvent.ThreadMessageCompleted>\n}) => {\n controller.enqueue(event)\n\n if (event.data.tool_calls) {\n const latestRunStep = await prisma.runStep.findFirst({\n where: {\n threadId: event.data.thread_id,\n type: RunStepType.TOOL_CALLS,\n },\n orderBy: {\n createdAt: 'desc',\n },\n })\n\n if (!latestRunStep) {\n throw new Error('No run step found')\n }\n\n await prisma.runStep.update({\n where: {\n id: latestRunStep.id,\n },\n data: {\n stepDetails: {\n type: 'tool_calls',\n tool_calls: event.data.tool_calls,\n },\n },\n })\n }\n\n return prisma.message.update({\n where: {\n id: event.data.id,\n },\n data: {\n status: MessageStatus.COMPLETED,\n ...(event.data.content ? { content: event.data.content } : {}),\n ...(event.data.tool_calls ? { toolCalls: event.data.tool_calls } : {}),\n },\n })\n}\n","import { threadRunInProgress } from './threadRunInProgress'\nimport { threadRunFailed } from './threadRunFailed'\nimport { threadRunCompleted } from './threadRunCompleted'\nimport { threadRunRequiresAction } from './threadRunRequiresAction'\nimport { threadRunStepCreated } from './threadRunStepCreated'\nimport { threadRunStepDelta } from './threadRunStepDelta'\nimport { threadMessageCreated } from './threadMessageCreated'\nimport { threadMessageDelta } from './threadMessageDelta'\nimport { threadMessageCompleted } from './threadMessageCompleted'\n\nexport const handlers = {\n 'thread.run.in_progress': threadRunInProgress,\n 'thread.run.failed': threadRunFailed,\n 'thread.run.completed': threadRunCompleted,\n 'thread.run.requires_action': threadRunRequiresAction,\n 'thread.run.step.created': threadRunStepCreated,\n 'thread.run.step.delta': threadRunStepDelta,\n 'thread.message.created': threadMessageCreated,\n 'thread.message.delta': threadMessageDelta,\n 'thread.message.completed': threadMessageCompleted,\n}\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { handlers } from './handlers'\n\nexport const onEvent = ({\n prisma,\n controller,\n}: {\n prisma: PrismaClient\n controller: ReadableStreamDefaultController\n}) => (event: OpenAI.Beta.AssistantStreamEvent) => {\n // @ts-ignore-next-line\n const handler = handlers[event.event]\n\n if (!handler) {\n console.log('No handler for event', event)\n return\n }\n\n return handler({ prisma, controller, event })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport { serializeMessage } from '../messages/serializeMessage'\nimport { serializeRunStep } from './steps/serializeRunStep'\nimport { serializeRun } from './serializeRun'\nimport type { Run, MessageWithRun, RunStep } from '@/types/prisma'\n\nconst getTake = ({\n run,\n}: {\n run: Run\n}) => {\n // @ts-ignore-next-line\n if (run.truncationStrategy.type === 'auto') {\n return null\n }\n\n // @ts-ignore-next-line\n if (run.truncationStrategy.type === 'last_messages') {\n // @ts-ignore-next-line\n if (!run.truncationStrategy.last_messages) {\n throw new Error('Truncation strategy last_messages is required')\n }\n\n // @ts-ignore-next-line\n return -run.truncationStrategy.last_messages\n }\n\n // @ts-ignore-next-line\n throw new Error(`Unsupported truncation strategy type: ${run.truncationStrategy.type}`)\n}\n\nexport const getMessages = ({\n prisma,\n run,\n}: {\n prisma: PrismaClient\n run: Run\n}) => async () => {\n const take = getTake({\n run,\n })\n\n const messages = await prisma.message.findMany({\n where: {\n threadId: run.threadId,\n },\n include: {\n run: {\n include: {\n runSteps: true,\n },\n },\n },\n orderBy: {\n createdAt: 'asc',\n },\n ...(take ? { take } : {}),\n })\n\n return messages.map((message: MessageWithRun) => ({\n ...serializeMessage({ message }),\n run: message.run ? ({\n ...serializeRun({ run: message.run }),\n runSteps: message.run.runSteps.map((runStep: RunStep) => (\n serializeRunStep({ runStep })\n )),\n }) : null,\n }))\n}\n","import type { PrismaClient } from '@prisma/client'\nimport type { RunAdapter } from '@/types'\nimport { get } from './get'\nimport { post } from './post'\n\nexport const runs = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapter\n}) => ({\n get: get({ prisma }),\n post: post({ prisma, runAdapter }),\n})\n","import type OpenAI from 'openai'\nimport type { PrismaClient } from '@prisma/client'\nimport { runRegexp } from '@/lib/runs/runRegexp'\nimport { serializeRun } from '../runs/serializeRun'\n\ntype GetResponse = Response & {\n json: () => Promise<ReturnType<OpenAI.Beta.Threads.Runs['retrieve']>>\n}\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string): Promise<GetResponse> => {\n const url = new URL(urlString)\n\n const [, threadId, runId] = url.pathname.match(new RegExp(runRegexp))!\n\n const run = await prisma.run.findUnique({\n where: {\n id: runId,\n threadId,\n },\n })\n\n return new Response(JSON.stringify(\n serializeRun({ run })\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'openai-poll-after-ms': '5000',\n },\n })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport type { RunAdapter } from '@/types'\nimport { get } from './get'\n// import { post } from './post'\n\nexport const run = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapter\n}) => ({\n get: get({ prisma }),\n // post: post({ prisma, runAdapter }),\n})\n","// @ts-ignore-next-line\nimport type { PrismaClient, RunStep } from '@prisma/client'\nimport { assign, last } from 'radash'\nimport { stepsRegexp } from '@/lib/steps/stepsRegexp'\nimport { serializeRunStep } from './serializeRunStep'\n\nexport const get = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => async (urlString: string) => {\n const url = new URL(urlString)\n\n const [, threadId,, runId] = url.pathname.match(new RegExp(stepsRegexp))!\n\n const {\n limit,\n order,\n after,\n } = assign({\n limit: '20',\n order: 'desc',\n // after: null,\n }, Object.fromEntries(url.searchParams))\n\n const runSteps = await prisma.runStep.findMany({\n where: {\n threadId,\n runId,\n },\n take: parseInt(limit),\n orderBy: {\n createdAt: order,\n },\n ...(after ? {\n skip: 1,\n cursor: {\n id: after,\n },\n }: {}),\n })\n\n return new Response(JSON.stringify({\n data: runSteps.map((runStep: RunStep) => (\n serializeRunStep({ runStep })\n )),\n hasNextPage: () => runSteps.length === parseInt(limit),\n body: {\n // @ts-ignore-next-line\n last_id: last(runSteps)?.id ?? null,\n },\n }), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n}\n","import type { PrismaClient } from '@prisma/client'\nimport { get } from './get'\n\nexport const steps = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n get: get({ prisma }),\n})\n","import { PrismaClient } from '@prisma/client'\nimport dayjs from 'dayjs'\n\nexport const updateRun = async ({\n prisma,\n runId,\n threadId,\n onThreadRunStepCompleted = () => {},\n tool_outputs,\n}: {\n prisma: PrismaClient\n runId: string\n threadId: string\n onThreadRunStepCompleted?: ({ runStep }: { runStep: any }) => void\n tool_outputs: any\n}) => (\n prisma.$transaction(async (prisma: PrismaClient) => {\n const runSteps = await prisma.runStep.findMany({\n where: {\n threadId,\n runId,\n type: 'TOOL_CALLS',\n status: 'IN_PROGRESS',\n },\n orderBy: {\n createdAt: 'asc',\n },\n })\n\n for (const runStep of runSteps) {\n const completedRunStep = await prisma.runStep.update({\n where: {\n id: runStep.id,\n },\n data: {\n status: 'COMPLETED',\n completedAt: dayjs().unix(),\n stepDetails: {\n type: 'tool_calls',\n // @ts-ignore-next-line\n tool_calls: runStep.stepDetails!.tool_calls.map((toolCall) => {\n // @ts-ignore-next-line\n const toolOutput = tool_outputs.find((output) => output.tool_call_id === toolCall.id) || tool_outputs[0]\n\n if (!toolOutput) {\n console.dir({ toolOutput, runStep, tool_outputs, runSteps }, { depth: null })\n throw new Error('Tool output not found')\n }\n\n return {\n id: toolCall.id,\n type: toolCall.type,\n function: {\n ...toolCall.function,\n output: toolOutput.output,\n },\n }\n }),\n },\n },\n })\n\n onThreadRunStepCompleted({\n runStep: completedRunStep,\n })\n }\n\n return prisma.run.update({\n where: {\n id: runId,\n },\n data: {\n status: 'QUEUED',\n },\n })\n })\n)\n","import type { PrismaClient } from '@prisma/client'\nimport { submitToolOutputsRegexp } from '@/lib/runs/submitToolOutputsRegexp'\nimport { RunAdapterPartobClient } from '@/types'\nimport { serializeRun } from '../../serializeRun'\nimport { onEvent } from '../../onEvent'\nimport { getMessages } from '../../getMessages'\nimport { serializeRunStep } from '../../steps/serializeRunStep'\nimport { updateRun } from './updateRun'\n\nexport const post = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapterPartobClient\n}) => async (urlString: string, options: any) => {\n const url = new URL(urlString)\n const [, threadId, runId] = url.pathname.match(new RegExp(submitToolOutputsRegexp))!\n\n const body = JSON.parse(options.body)\n\n const {\n tool_outputs,\n stream,\n } = body\n\n if (stream) {\n const readableStream = new ReadableStream({\n async start(controller) {\n const run = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs,\n onThreadRunStepCompleted: async ({ runStep }) => {\n controller.enqueue(`data: ${JSON.stringify({\n event: 'thread.run.step.completed',\n data: serializeRunStep({ runStep }),\n })}\\n\\n`)\n }\n })\n\n await runAdapter({\n run: serializeRun({ run }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n }),\n getMessages: getMessages({ prisma, run }),\n })\n\n controller.close()\n },\n })\n\n return new Response(readableStream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n },\n })\n } else {\n const run = await updateRun({\n prisma,\n runId,\n threadId,\n tool_outputs,\n })\n\n await new Promise((resolve) => (\n new ReadableStream({\n async start(controller) {\n await runAdapter({\n run: serializeRun({ run }),\n onEvent: onEvent({\n controller: {\n ...controller,\n enqueue: (data) => {\n controller.enqueue(`data: ${JSON.stringify(data)}\\n\\n`)\n },\n },\n prisma,\n }),\n getMessages: getMessages({ prisma, run }),\n })\n\n controller.close()\n resolve(void 0)\n },\n })\n ))\n\n return new Response(JSON.stringify(\n run\n ), {\n status: 200,\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n}\n","import type { PrismaClient } from '@prisma/client'\nimport type { RunAdapter } from '@/types'\nimport { post } from './post'\n\nexport const submitToolOutputs = ({\n prisma,\n runAdapter,\n}: {\n prisma: PrismaClient\n runAdapter: RunAdapter\n}) => ({\n post: post({\n prisma,\n // @ts-ignore-next-line\n runAdapter,\n }),\n})\n","import type { PrismaClient } from '@prisma/client'\nimport { StorageAdapterArgs } from '@/types'\nimport { messagesRegexp } from '@/lib/messages/messagesRegexp'\nimport { runsRegexp } from '@/lib/runs/runsRegexp'\nimport { runRegexp } from '@/lib/runs/runRegexp'\nimport { submitToolOutputsRegexp } from '@/lib/runs/submitToolOutputsRegexp'\nimport { stepsRegexp } from '@/lib/steps/stepsRegexp'\nimport { threads } from './threads'\nimport { messages } from './threads/messages'\nimport { runs } from './threads/runs'\nimport { run } from './threads/run'\nimport { steps } from './threads/runs/steps'\nimport { submitToolOutputs } from './threads/runs/submitToolOutputs'\n\nexport const prismaStorageAdapter = ({\n prisma,\n}: {\n prisma: PrismaClient\n}) => ({\n runAdapter,\n}: StorageAdapterArgs) => ({\n requestHandlers: {\n '^/(?:v1|/?openai)/threads$': threads({ prisma }),\n [messagesRegexp]: messages({ prisma }),\n [runsRegexp]: runs({ prisma, runAdapter }),\n [runRegexp]: run({ prisma, runAdapter }),\n [stepsRegexp]: steps({ prisma }),\n [submitToolOutputsRegexp]: submitToolOutputs({ prisma, runAdapter }),\n },\n})\n"]}