@opencode-ai/cli-linux-x64 0.0.0-beta-202606050000

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.
Files changed (137) hide show
  1. package/bin/chunk-01tb5qes.js.map +131 -0
  2. package/bin/chunk-06d8aa69.js.map +10 -0
  3. package/bin/chunk-07w2xsfy.js.map +50 -0
  4. package/bin/chunk-0azwkk9z.js.map +12 -0
  5. package/bin/chunk-0d9ja06r.js.map +9 -0
  6. package/bin/chunk-14kv2kjk.js.map +13 -0
  7. package/bin/chunk-17j53wgt.js.map +11 -0
  8. package/bin/chunk-191djt7z.js.map +113 -0
  9. package/bin/chunk-1brm44vt.js.map +10 -0
  10. package/bin/chunk-1jb1dn9p.js.map +10 -0
  11. package/bin/chunk-1paeax4j.js.map +56 -0
  12. package/bin/chunk-1wb39pye.js.map +9 -0
  13. package/bin/chunk-2mjmecen.js.map +10 -0
  14. package/bin/chunk-2wqpg9fb.js.map +10 -0
  15. package/bin/chunk-32ewzcjk.js.map +10 -0
  16. package/bin/chunk-334z6v35.js.map +9 -0
  17. package/bin/chunk-3jqjf0hd.js.map +10 -0
  18. package/bin/chunk-3n6vddyq.js.map +73 -0
  19. package/bin/chunk-3zmvhepw.js.map +10 -0
  20. package/bin/chunk-4980h0t7.js.map +37 -0
  21. package/bin/chunk-4q5k6a0e.js.map +10 -0
  22. package/bin/chunk-5ft9zwf9.js.map +10 -0
  23. package/bin/chunk-6ttpn29p.js.map +10 -0
  24. package/bin/chunk-7fvpf4bs.js.map +10 -0
  25. package/bin/chunk-7vb6kdat.js.map +10 -0
  26. package/bin/chunk-84amh6xf.js.map +11 -0
  27. package/bin/chunk-8akfq1ty.js.map +19 -0
  28. package/bin/chunk-8rd9r1gb.js.map +11 -0
  29. package/bin/chunk-8x80qvzn.js.map +10 -0
  30. package/bin/chunk-943th5qs.js.map +10 -0
  31. package/bin/chunk-94yf089p.js.map +10 -0
  32. package/bin/chunk-98cxndhz.js.map +9 -0
  33. package/bin/chunk-9f8tmby0.js.map +9 -0
  34. package/bin/chunk-9fbstsnw.js.map +9 -0
  35. package/bin/chunk-9hq8aywf.js.map +10 -0
  36. package/bin/chunk-9m7hf7ms.js.map +10 -0
  37. package/bin/chunk-9vf55fj3.js.map +10 -0
  38. package/bin/chunk-9w9rk9en.js.map +20 -0
  39. package/bin/chunk-9y4hgfns.js.map +10 -0
  40. package/bin/chunk-aag5p1fp.js.map +10 -0
  41. package/bin/chunk-axy1v6wd.js.map +27 -0
  42. package/bin/chunk-bj9msmj2.js.map +10 -0
  43. package/bin/chunk-bt0r89ee.js.map +9 -0
  44. package/bin/chunk-c2gsyspz.js.map +10 -0
  45. package/bin/chunk-c8hr0q5n.js.map +10 -0
  46. package/bin/chunk-cab6ccj0.js.map +10 -0
  47. package/bin/chunk-ck4nkjtx.js.map +193 -0
  48. package/bin/chunk-cvm4kr56.js.map +23 -0
  49. package/bin/chunk-cyb9bpgm.js.map +10 -0
  50. package/bin/chunk-d1p8awq6.js.map +10 -0
  51. package/bin/chunk-d6nz1m6v.js.map +10 -0
  52. package/bin/chunk-d9g5798m.js.map +81 -0
  53. package/bin/chunk-dcn0azxw.js.map +10 -0
  54. package/bin/chunk-dd9pfwmr.js.map +10 -0
  55. package/bin/chunk-dk4qekzk.js.map +10 -0
  56. package/bin/chunk-dk9tgwkh.js.map +9 -0
  57. package/bin/chunk-dzzhxh1c.js.map +10 -0
  58. package/bin/chunk-efsmps94.js.map +9 -0
  59. package/bin/chunk-fdw7znt6.js.map +11 -0
  60. package/bin/chunk-fs6t8jdg.js.map +10 -0
  61. package/bin/chunk-fzcqzwx5.js.map +10 -0
  62. package/bin/chunk-g4fcmhkj.js.map +11 -0
  63. package/bin/chunk-g4ff66n8.js.map +10 -0
  64. package/bin/chunk-g8mpn6ke.js.map +11 -0
  65. package/bin/chunk-gahs293a.js.map +10 -0
  66. package/bin/chunk-gh9dcqbv.js.map +10 -0
  67. package/bin/chunk-grvxd8zq.js.map +10 -0
  68. package/bin/chunk-gv6nagng.js.map +10 -0
  69. package/bin/chunk-h1vz14ze.js.map +167 -0
  70. package/bin/chunk-hav16yge.js.map +10 -0
  71. package/bin/chunk-hp5nnq6f.js.map +11 -0
  72. package/bin/chunk-hrcbafh3.js.map +9 -0
  73. package/bin/chunk-hxfsfpek.js.map +10 -0
  74. package/bin/chunk-jcqp2wmf.js.map +10 -0
  75. package/bin/chunk-jt9t8203.js.map +9 -0
  76. package/bin/chunk-k0980eb5.js.map +10 -0
  77. package/bin/chunk-kghptcgb.js.map +9 -0
  78. package/bin/chunk-kkvk5eez.js.map +10 -0
  79. package/bin/chunk-kv0b3sh5.js.map +10 -0
  80. package/bin/chunk-kvfs5rat.js.map +10 -0
  81. package/bin/chunk-mf0qqhvb.js.map +10 -0
  82. package/bin/chunk-mkze6twx.js.map +10 -0
  83. package/bin/chunk-mzjs3qj3.js.map +10 -0
  84. package/bin/chunk-n10mj2m3.js.map +17 -0
  85. package/bin/chunk-n2fbt143.js.map +9 -0
  86. package/bin/chunk-n6a0rctn.js.map +9 -0
  87. package/bin/chunk-nd3yv9bg.js.map +388 -0
  88. package/bin/chunk-njn9a3jp.js.map +13 -0
  89. package/bin/chunk-nkhzpsnk.js.map +13 -0
  90. package/bin/chunk-ny5cyeha.js.map +10 -0
  91. package/bin/chunk-p3nkd9t2.js.map +10 -0
  92. package/bin/chunk-p3pr1t3k.js.map +10 -0
  93. package/bin/chunk-p7j7e7hb.js.map +10 -0
  94. package/bin/chunk-p89bk96c.js.map +10 -0
  95. package/bin/chunk-pnkd37ss.js.map +20 -0
  96. package/bin/chunk-prat77ba.js.map +577 -0
  97. package/bin/chunk-q6nf6fka.js.map +10 -0
  98. package/bin/chunk-qbpebjh2.js.map +10 -0
  99. package/bin/chunk-qzx2gre7.js.map +13 -0
  100. package/bin/chunk-r55kafff.js.map +9 -0
  101. package/bin/chunk-rrwp4x01.js.map +10 -0
  102. package/bin/chunk-rt02k446.js.map +11 -0
  103. package/bin/chunk-s39nwv01.js.map +9 -0
  104. package/bin/chunk-s983v0dp.js.map +10 -0
  105. package/bin/chunk-san15sca.js.map +10 -0
  106. package/bin/chunk-sfk73pp2.js.map +10 -0
  107. package/bin/chunk-sjd3wbjd.js.map +10 -0
  108. package/bin/chunk-swbdmja3.js.map +10 -0
  109. package/bin/chunk-tc8tvjey.js.map +33 -0
  110. package/bin/chunk-tcqtz83b.js.map +10 -0
  111. package/bin/chunk-tgxxchfy.js.map +28 -0
  112. package/bin/chunk-tvxakxv2.js.map +10 -0
  113. package/bin/chunk-v81ta3tx.js.map +15 -0
  114. package/bin/chunk-va2h4xya.js.map +37 -0
  115. package/bin/chunk-vezq3hc4.js.map +9 -0
  116. package/bin/chunk-vmbpvmpg.js.map +10 -0
  117. package/bin/chunk-w7p62pb6.js.map +17 -0
  118. package/bin/chunk-wr4x72qd.js.map +13 -0
  119. package/bin/chunk-x3ywttp7.js.map +10 -0
  120. package/bin/chunk-x988wmrk.js.map +10 -0
  121. package/bin/chunk-x9zjg1f7.js.map +20 -0
  122. package/bin/chunk-xaqrhtz6.js.map +10 -0
  123. package/bin/chunk-xd2mrkwy.js.map +10 -0
  124. package/bin/chunk-xfh2377b.js.map +10 -0
  125. package/bin/chunk-xs0ras4j.js.map +51 -0
  126. package/bin/chunk-xt7ap9fb.js.map +10 -0
  127. package/bin/chunk-xya5qk3h.js.map +16 -0
  128. package/bin/chunk-yg7w4jgd.js.map +10 -0
  129. package/bin/chunk-yhpv46tb.js.map +20 -0
  130. package/bin/chunk-ymy66kr8.js.map +15 -0
  131. package/bin/chunk-yx4z6xsb.js.map +11 -0
  132. package/bin/chunk-yymwxqpy.js.map +10 -0
  133. package/bin/chunk-z70c75xe.js.map +11 -0
  134. package/bin/chunk-zkqyr3hc.js.map +10 -0
  135. package/bin/index.js.map +12 -0
  136. package/bin/lildax +0 -0
  137. package/package.json +15 -0
@@ -0,0 +1,28 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../core/src/github-copilot/chat/convert-to-openai-compatible-chat-messages.ts", "../core/src/github-copilot/chat/get-response-metadata.ts", "../core/src/github-copilot/chat/map-openai-compatible-finish-reason.ts", "../core/src/github-copilot/chat/openai-compatible-chat-options.ts", "../core/src/github-copilot/openai-compatible-error.ts", "../core/src/github-copilot/chat/openai-compatible-prepare-tools.ts", "../core/src/github-copilot/chat/openai-compatible-chat-language-model.ts", "../core/src/github-copilot/responses/openai-error.ts", "../core/src/github-copilot/responses/tool/local-shell.ts", "../core/src/github-copilot/responses/convert-to-openai-responses-input.ts", "../core/src/github-copilot/responses/map-openai-responses-finish-reason.ts", "../core/src/github-copilot/responses/tool/code-interpreter.ts", "../core/src/github-copilot/responses/tool/file-search.ts", "../core/src/github-copilot/responses/tool/web-search.ts", "../core/src/github-copilot/responses/tool/web-search-preview.ts", "../core/src/github-copilot/responses/tool/image-generation.ts", "../core/src/github-copilot/responses/openai-responses-prepare-tools.ts", "../core/src/github-copilot/responses/openai-responses-language-model.ts", "../core/src/github-copilot/copilot-provider.ts"],
4
+ "sourcesContent": [
5
+ "import {\n type LanguageModelV3Prompt,\n type SharedV3ProviderOptions,\n UnsupportedFunctionalityError,\n} from \"@ai-sdk/provider\"\nimport type { OpenAICompatibleChatPrompt } from \"./openai-compatible-api-types\"\nimport { convertToBase64 } from \"@ai-sdk/provider-utils\"\n\nfunction getOpenAIMetadata(message: { providerOptions?: SharedV3ProviderOptions }) {\n return message?.providerOptions?.copilot ?? {}\n}\n\nexport function convertToOpenAICompatibleChatMessages(prompt: LanguageModelV3Prompt): OpenAICompatibleChatPrompt {\n const messages: OpenAICompatibleChatPrompt = []\n for (const { role, content, ...message } of prompt) {\n const metadata = getOpenAIMetadata({ ...message })\n switch (role) {\n case \"system\": {\n messages.push({\n role: \"system\",\n content: content,\n ...metadata,\n })\n break\n }\n\n case \"user\": {\n if (content.length === 1 && content[0].type === \"text\") {\n messages.push({\n role: \"user\",\n content: content[0].text,\n ...getOpenAIMetadata(content[0]),\n })\n break\n }\n\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n const partMetadata = getOpenAIMetadata(part)\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text, ...partMetadata }\n }\n case \"file\": {\n if (part.mediaType.startsWith(\"image/\")) {\n const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType\n\n return {\n type: \"image_url\",\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n ...partMetadata,\n }\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n })\n }\n }\n }\n }),\n ...metadata,\n })\n\n break\n }\n\n case \"assistant\": {\n let text = \"\"\n let reasoningText: string | undefined\n let reasoningOpaque: string | undefined\n const toolCalls: Array<{\n id: string\n type: \"function\"\n function: { name: string; arguments: string }\n }> = []\n\n for (const part of content) {\n const partMetadata = getOpenAIMetadata(part)\n // Check for reasoningOpaque on any part (may be attached to text/tool-call)\n const partOpaque = (part.providerOptions as { copilot?: { reasoningOpaque?: string } })?.copilot\n ?.reasoningOpaque\n if (partOpaque && !reasoningOpaque) {\n reasoningOpaque = partOpaque\n }\n\n switch (part.type) {\n case \"text\": {\n text += part.text\n break\n }\n case \"reasoning\": {\n if (part.text) reasoningText = part.text\n break\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n ...partMetadata,\n })\n break\n }\n }\n }\n\n messages.push({\n role: \"assistant\",\n content: text || null,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n reasoning_text: reasoningOpaque ? reasoningText : undefined,\n reasoning_opaque: reasoningOpaque,\n ...metadata,\n })\n\n break\n }\n\n case \"tool\": {\n for (const toolResponse of content) {\n if (toolResponse.type === \"tool-approval-response\") {\n continue\n }\n const output = toolResponse.output\n\n let contentValue: string\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value\n break\n case \"execution-denied\":\n contentValue = output.reason ?? \"Tool execution denied.\"\n break\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value)\n break\n }\n\n const toolResponseMetadata = getOpenAIMetadata(toolResponse)\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n ...toolResponseMetadata,\n })\n }\n break\n }\n\n default: {\n const _exhaustiveCheck: never = role\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`)\n }\n }\n }\n\n return messages\n}\n",
6
+ "export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null\n created?: number | undefined | null\n model?: string | undefined | null\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n }\n}\n",
7
+ "import type { LanguageModelV3FinishReason } from \"@ai-sdk/provider\"\n\nexport function mapOpenAICompatibleFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason[\"unified\"] {\n switch (finishReason) {\n case \"stop\":\n return \"stop\"\n case \"length\":\n return \"length\"\n case \"content_filter\":\n return \"content-filter\"\n case \"function_call\":\n case \"tool_calls\":\n return \"tool-calls\"\n default:\n return \"other\"\n }\n}\n",
8
+ "import { z } from \"zod/v4\"\n\nexport type OpenAICompatibleChatModelId = string\n\nexport const openaiCompatibleProviderOptions = z.object({\n /**\n * A unique identifier representing your end-user, which can help the provider to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n\n /**\n * Reasoning effort for reasoning models. Defaults to `medium`.\n */\n reasoningEffort: z.string().optional(),\n\n /**\n * Controls the verbosity of the generated text. Defaults to `medium`.\n */\n textVerbosity: z.string().optional(),\n\n /**\n * Copilot thinking_budget used for Anthropic models.\n */\n thinking_budget: z.number().optional(),\n})\n\nexport type OpenAICompatibleProviderOptions = z.infer<typeof openaiCompatibleProviderOptions>\n",
9
+ "import { z, type ZodType } from \"zod/v4\"\n\nexport const openaiCompatibleErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n})\n\nexport type OpenAICompatibleErrorData = z.infer<typeof openaiCompatibleErrorDataSchema>\n\nexport type ProviderErrorStructure<T> = {\n errorSchema: ZodType<T>\n errorToMessage: (error: T) => string\n isRetryable?: (response: Response, error?: T) => boolean\n}\n\nexport const defaultOpenAICompatibleErrorStructure: ProviderErrorStructure<OpenAICompatibleErrorData> = {\n errorSchema: openaiCompatibleErrorDataSchema,\n errorToMessage: (data) => data.error.message,\n}\n",
10
+ "import { type LanguageModelV3CallOptions, type SharedV3Warning, UnsupportedFunctionalityError } from \"@ai-sdk/provider\"\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions[\"tools\"]\n toolChoice?: LanguageModelV3CallOptions[\"toolChoice\"]\n}): {\n tools:\n | undefined\n | Array<{\n type: \"function\"\n function: {\n name: string\n description: string | undefined\n parameters: unknown\n }\n }>\n toolChoice: { type: \"function\"; function: { name: string } } | \"auto\" | \"none\" | \"required\" | undefined\n toolWarnings: SharedV3Warning[]\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined\n\n const toolWarnings: SharedV3Warning[] = []\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings }\n }\n\n const openaiCompatTools: Array<{\n type: \"function\"\n function: {\n name: string\n description: string | undefined\n parameters: unknown\n }\n }> = []\n\n for (const tool of tools) {\n if (tool.type === \"provider\") {\n toolWarnings.push({ type: \"unsupported\", feature: `tool type: ${tool.type}` })\n } else {\n openaiCompatTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n })\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiCompatTools, toolChoice: undefined, toolWarnings }\n }\n\n const type = toolChoice.type\n\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: openaiCompatTools, toolChoice: type, toolWarnings }\n case \"tool\":\n return {\n tools: openaiCompatTools,\n toolChoice: {\n type: \"function\",\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n }\n default: {\n const _exhaustiveCheck: never = type\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n })\n }\n }\n}\n",
11
+ "import {\n APICallError,\n InvalidResponseDataError,\n type LanguageModelV3,\n type LanguageModelV3CallOptions,\n type LanguageModelV3Content,\n type LanguageModelV3StreamPart,\n type SharedV3ProviderMetadata,\n type SharedV3Warning,\n} from \"@ai-sdk/provider\"\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n type FetchFunction,\n generateId,\n isParsableJson,\n parseProviderOptions,\n type ParseResult,\n postJsonToApi,\n type ResponseHandler,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\nimport { convertToOpenAICompatibleChatMessages } from \"./convert-to-openai-compatible-chat-messages\"\nimport { getResponseMetadata } from \"./get-response-metadata\"\nimport { mapOpenAICompatibleFinishReason } from \"./map-openai-compatible-finish-reason\"\nimport { type OpenAICompatibleChatModelId, openaiCompatibleProviderOptions } from \"./openai-compatible-chat-options\"\nimport { defaultOpenAICompatibleErrorStructure, type ProviderErrorStructure } from \"../openai-compatible-error\"\nimport type { MetadataExtractor } from \"./openai-compatible-metadata-extractor\"\nimport { prepareTools } from \"./openai-compatible-prepare-tools\"\n\nexport type OpenAICompatibleChatConfig = {\n provider: string\n headers: () => Record<string, string | undefined>\n url: (options: { modelId: string; path: string }) => string\n fetch?: FetchFunction\n includeUsage?: boolean\n errorStructure?: ProviderErrorStructure<any>\n metadataExtractor?: MetadataExtractor\n\n /**\n * Whether the model supports structured outputs.\n */\n supportsStructuredOutputs?: boolean\n\n /**\n * The supported URLs for the model.\n */\n supportedUrls?: () => LanguageModelV3[\"supportedUrls\"]\n}\n\nexport class OpenAICompatibleChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = \"v3\"\n\n readonly supportsStructuredOutputs: boolean\n\n readonly modelId: OpenAICompatibleChatModelId\n private readonly config: OpenAICompatibleChatConfig\n private readonly failedResponseHandler: ResponseHandler<APICallError>\n private readonly chunkSchema // type inferred via constructor\n\n constructor(modelId: OpenAICompatibleChatModelId, config: OpenAICompatibleChatConfig) {\n this.modelId = modelId\n this.config = config\n\n // initialize error handling:\n const errorStructure = config.errorStructure ?? defaultOpenAICompatibleErrorStructure\n this.chunkSchema = createOpenAICompatibleChatChunkSchema(errorStructure.errorSchema)\n this.failedResponseHandler = createJsonErrorResponseHandler(errorStructure)\n\n this.supportsStructuredOutputs = config.supportsStructuredOutputs ?? false\n }\n\n get provider(): string {\n return this.config.provider\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split(\".\")[0].trim()\n }\n\n get supportedUrls() {\n return this.config.supportedUrls?.() ?? {}\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n providerOptions,\n stopSequences,\n responseFormat,\n seed,\n toolChoice,\n tools,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = []\n\n // Parse provider options\n const compatibleOptions = Object.assign(\n (await parseProviderOptions({\n provider: \"copilot\",\n providerOptions,\n schema: openaiCompatibleProviderOptions,\n })) ?? {},\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompatibleProviderOptions,\n })) ?? {},\n )\n\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" })\n }\n\n if (responseFormat?.type === \"json\" && responseFormat.schema != null && !this.supportsStructuredOutputs) {\n warnings.push({\n type: \"unsupported\",\n feature: \"responseFormat\",\n details: \"JSON response format schema is only supported with structuredOutputs\",\n })\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n })\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: compatibleOptions.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === \"json\"\n ? this.supportsStructuredOutputs === true && responseFormat.schema != null\n ? {\n type: \"json_schema\",\n json_schema: {\n schema: responseFormat.schema,\n name: responseFormat.name ?? \"response\",\n description: responseFormat.description,\n },\n }\n : { type: \"json_object\" }\n : undefined,\n\n stop: stopSequences,\n seed,\n ...Object.fromEntries(\n Object.entries(providerOptions?.[this.providerOptionsName] ?? {}).filter(\n ([key]) => !Object.keys(openaiCompatibleProviderOptions.shape).includes(key),\n ),\n ),\n\n reasoning_effort: compatibleOptions.reasoningEffort,\n verbosity: compatibleOptions.textVerbosity,\n\n // messages:\n messages: convertToOpenAICompatibleChatMessages(prompt),\n\n // tools:\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n\n // thinking_budget\n thinking_budget: compatibleOptions.thinking_budget,\n },\n warnings: [...warnings, ...toolWarnings],\n }\n }\n\n async doGenerate(options: LanguageModelV3CallOptions) {\n const { args, warnings } = await this.getArgs({ ...options })\n\n const body = JSON.stringify(args)\n\n const {\n responseHeaders,\n value: responseBody,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(OpenAICompatibleChatResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const choice = responseBody.choices[0]\n const content: Array<LanguageModelV3Content> = []\n\n // text content:\n const text = choice.message.content\n if (text != null && text.length > 0) {\n content.push({\n type: \"text\",\n text,\n providerMetadata: choice.message.reasoning_opaque\n ? { copilot: { reasoningOpaque: choice.message.reasoning_opaque } }\n : undefined,\n })\n }\n\n // reasoning content (Copilot uses reasoning_text):\n const reasoning = choice.message.reasoning_text\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: \"reasoning\",\n text: reasoning,\n // Include reasoning_opaque for Copilot multi-turn reasoning\n providerMetadata: choice.message.reasoning_opaque\n ? { copilot: { reasoningOpaque: choice.message.reasoning_opaque } }\n : undefined,\n })\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: \"tool-call\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n providerMetadata: choice.message.reasoning_opaque\n ? { copilot: { reasoningOpaque: choice.message.reasoning_opaque } }\n : undefined,\n })\n }\n }\n\n // provider metadata:\n const providerMetadata: SharedV3ProviderMetadata = {\n [this.providerOptionsName]: {},\n ...(await this.config.metadataExtractor?.extractMetadata?.({\n parsedBody: rawResponse,\n })),\n }\n const completionTokenDetails = responseBody.usage?.completion_tokens_details\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata[this.providerOptionsName].acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata[this.providerOptionsName].rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens\n }\n\n return {\n content,\n finishReason: {\n unified: mapOpenAICompatibleFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: {\n inputTokens: {\n total: responseBody.usage?.prompt_tokens ?? undefined,\n noCache: undefined,\n cacheRead: responseBody.usage?.prompt_tokens_details?.cached_tokens ?? undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: responseBody.usage?.completion_tokens ?? undefined,\n text: undefined,\n reasoning: responseBody.usage?.completion_tokens_details?.reasoning_tokens ?? undefined,\n },\n raw: responseBody.usage ?? undefined,\n },\n providerMetadata,\n request: { body },\n response: {\n ...getResponseMetadata(responseBody),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n }\n }\n\n async doStream(options: LanguageModelV3CallOptions) {\n const { args, warnings } = await this.getArgs({ ...options })\n\n const body = {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options: this.config.includeUsage ? { include_usage: true } : undefined,\n }\n\n const metadataExtractor = this.config.metadataExtractor?.createStreamExtractor()\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(this.chunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const toolCalls: Array<{\n id: string\n type: \"function\"\n function: {\n name: string\n arguments: string\n }\n hasFinished: boolean\n }> = []\n\n let finishReason: {\n unified: ReturnType<typeof mapOpenAICompatibleFinishReason>\n raw: string | undefined\n } = {\n unified: \"other\",\n raw: undefined,\n }\n const usage: {\n completionTokens: number | undefined\n completionTokensDetails: {\n reasoningTokens: number | undefined\n acceptedPredictionTokens: number | undefined\n rejectedPredictionTokens: number | undefined\n }\n promptTokens: number | undefined\n promptTokensDetails: {\n cachedTokens: number | undefined\n }\n totalTokens: number | undefined\n } = {\n completionTokens: undefined,\n completionTokensDetails: {\n reasoningTokens: undefined,\n acceptedPredictionTokens: undefined,\n rejectedPredictionTokens: undefined,\n },\n promptTokens: undefined,\n promptTokensDetails: {\n cachedTokens: undefined,\n },\n totalTokens: undefined,\n }\n let isFirstChunk = true\n const providerOptionsName = this.providerOptionsName\n let isActiveReasoning = false\n let isActiveText = false\n let reasoningOpaque: string | undefined\n\n return {\n stream: response.pipeThrough(\n new TransformStream<ParseResult<z.infer<typeof this.chunkSchema>>, LanguageModelV3StreamPart>({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings })\n },\n\n // TODO we lost type safety on Chunk, most likely due to the error schema. MUST FIX\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue })\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = {\n unified: \"error\",\n raw: undefined,\n }\n controller.enqueue({ type: \"error\", error: chunk.error })\n return\n }\n const value = chunk.value\n\n metadataExtractor?.processChunk(chunk.rawValue)\n\n // handle error chunks:\n if (\"error\" in value) {\n finishReason = {\n unified: \"error\",\n raw: undefined,\n }\n controller.enqueue({ type: \"error\", error: value.error.message })\n return\n }\n\n if (isFirstChunk) {\n isFirstChunk = false\n\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value),\n })\n }\n\n if (value.usage != null) {\n const {\n prompt_tokens,\n completion_tokens,\n total_tokens,\n prompt_tokens_details,\n completion_tokens_details,\n } = value.usage\n\n usage.promptTokens = prompt_tokens ?? undefined\n usage.completionTokens = completion_tokens ?? undefined\n usage.totalTokens = total_tokens ?? undefined\n if (completion_tokens_details?.reasoning_tokens != null) {\n usage.completionTokensDetails.reasoningTokens = completion_tokens_details?.reasoning_tokens\n }\n if (completion_tokens_details?.accepted_prediction_tokens != null) {\n usage.completionTokensDetails.acceptedPredictionTokens =\n completion_tokens_details?.accepted_prediction_tokens\n }\n if (completion_tokens_details?.rejected_prediction_tokens != null) {\n usage.completionTokensDetails.rejectedPredictionTokens =\n completion_tokens_details?.rejected_prediction_tokens\n }\n if (prompt_tokens_details?.cached_tokens != null) {\n usage.promptTokensDetails.cachedTokens = prompt_tokens_details?.cached_tokens\n }\n }\n\n const choice = value.choices[0]\n\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapOpenAICompatibleFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n }\n }\n\n if (choice?.delta == null) {\n return\n }\n\n const delta = choice.delta\n\n // Capture reasoning_opaque for Copilot multi-turn reasoning\n if (delta.reasoning_opaque) {\n if (reasoningOpaque != null) {\n throw new InvalidResponseDataError({\n data: delta,\n message:\n \"Multiple reasoning_opaque values received in a single response. Only one thinking part per response is supported.\",\n })\n }\n reasoningOpaque = delta.reasoning_opaque\n }\n\n // enqueue reasoning before text deltas (Copilot uses reasoning_text):\n const reasoningContent = delta.reasoning_text\n if (reasoningContent) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-start\",\n id: \"reasoning-0\",\n })\n isActiveReasoning = true\n }\n\n controller.enqueue({\n type: \"reasoning-delta\",\n id: \"reasoning-0\",\n delta: reasoningContent,\n })\n }\n\n if (delta.content) {\n // If reasoning was active and we're starting text, end reasoning first\n // This handles the case where reasoning_opaque and content come in the same chunk\n if (isActiveReasoning && !isActiveText) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: \"reasoning-0\",\n providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,\n })\n isActiveReasoning = false\n }\n\n if (!isActiveText) {\n controller.enqueue({\n type: \"text-start\",\n id: \"txt-0\",\n providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,\n })\n isActiveText = true\n }\n\n controller.enqueue({\n type: \"text-delta\",\n id: \"txt-0\",\n delta: delta.content,\n })\n }\n\n if (delta.tool_calls != null) {\n // If reasoning was active and we're starting tool calls, end reasoning first\n // This handles the case where reasoning goes directly to tool calls with no content\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: \"reasoning-0\",\n providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,\n })\n isActiveReasoning = false\n }\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index\n\n if (toolCalls[index] == null) {\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n })\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n })\n }\n\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n })\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? \"\",\n },\n hasFinished: false,\n }\n\n const toolCall = toolCalls[index]\n\n if (toolCall.function?.name != null && toolCall.function?.arguments != null) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.id,\n delta: toolCall.function.arguments,\n })\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.id,\n })\n\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,\n })\n toolCall.hasFinished = true\n }\n }\n\n continue\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index]\n\n if (toolCall.hasFinished) {\n continue\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments += toolCallDelta.function?.arguments ?? \"\"\n }\n\n // send delta\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? \"\",\n })\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.id,\n })\n\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,\n })\n toolCall.hasFinished = true\n }\n }\n }\n },\n\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: \"reasoning-0\",\n // Include reasoning_opaque for Copilot multi-turn reasoning\n providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,\n })\n }\n\n if (isActiveText) {\n controller.enqueue({ type: \"text-end\", id: \"txt-0\" })\n }\n\n // go through all tool calls and send the ones that are not finished\n for (const toolCall of toolCalls.filter((toolCall) => !toolCall.hasFinished)) {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.id,\n })\n\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n })\n }\n\n const providerMetadata: SharedV3ProviderMetadata = {\n [providerOptionsName]: {},\n // Include reasoning_opaque for Copilot multi-turn reasoning\n ...(reasoningOpaque ? { copilot: { reasoningOpaque } } : {}),\n ...metadataExtractor?.buildMetadata(),\n }\n if (usage.completionTokensDetails.acceptedPredictionTokens != null) {\n providerMetadata[providerOptionsName].acceptedPredictionTokens =\n usage.completionTokensDetails.acceptedPredictionTokens\n }\n if (usage.completionTokensDetails.rejectedPredictionTokens != null) {\n providerMetadata[providerOptionsName].rejectedPredictionTokens =\n usage.completionTokensDetails.rejectedPredictionTokens\n }\n\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: {\n inputTokens: {\n total: usage.promptTokens,\n noCache:\n usage.promptTokens != undefined && usage.promptTokensDetails.cachedTokens != undefined\n ? usage.promptTokens - usage.promptTokensDetails.cachedTokens\n : undefined,\n cacheRead: usage.promptTokensDetails.cachedTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.completionTokens,\n text: undefined,\n reasoning: usage.completionTokensDetails.reasoningTokens,\n },\n raw: {\n prompt_tokens: usage.promptTokens ?? null,\n completion_tokens: usage.completionTokens ?? null,\n total_tokens: usage.totalTokens ?? null,\n },\n },\n providerMetadata,\n })\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n }\n }\n}\n\nconst openaiCompatibleTokenUsageSchema = z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish()\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst OpenAICompatibleChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal(\"assistant\").nullish(),\n content: z.string().nullish(),\n // Copilot-specific reasoning fields\n reasoning_text: z.string().nullish(),\n reasoning_opaque: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: openaiCompatibleTokenUsageSchema,\n})\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst createOpenAICompatibleChatChunkSchema = <ERROR_SCHEMA extends z.core.$ZodType>(errorSchema: ERROR_SCHEMA) =>\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum([\"assistant\"]).nullish(),\n content: z.string().nullish(),\n // Copilot-specific reasoning fields\n reasoning_text: z.string().nullish(),\n reasoning_opaque: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: openaiCompatibleTokenUsageSchema,\n }),\n errorSchema,\n ])\n",
12
+ "import { z } from \"zod/v4\"\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\"\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n})\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>\n\nexport const openaiFailedResponseHandler: any = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: (data) => data.error.message,\n})\n",
13
+ "import { createProviderToolFactoryWithOutputSchema } from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\n\nexport const localShellInputSchema = z.object({\n action: z.object({\n type: z.literal(\"exec\"),\n command: z.array(z.string()),\n timeoutMs: z.number().optional(),\n user: z.string().optional(),\n workingDirectory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n})\n\nexport const localShellOutputSchema = z.object({\n output: z.string(),\n})\n\nexport const localShell = createProviderToolFactoryWithOutputSchema<\n {\n /**\n * Execute a shell command on the server.\n */\n action: {\n type: \"exec\"\n\n /**\n * The command to run.\n */\n command: string[]\n\n /**\n * Optional timeout in milliseconds for the command.\n */\n timeoutMs?: number\n\n /**\n * Optional user to run the command as.\n */\n user?: string\n\n /**\n * Optional working directory to run the command in.\n */\n workingDirectory?: string\n\n /**\n * Environment variables to set for the command.\n */\n env?: Record<string, string>\n }\n },\n {\n /**\n * The output of local shell tool call.\n */\n output: string\n },\n {}\n>({\n id: \"openai.local_shell\",\n inputSchema: localShellInputSchema,\n outputSchema: localShellOutputSchema,\n})\n",
14
+ "import {\n type LanguageModelV3Prompt,\n type LanguageModelV3ToolCallPart,\n type SharedV3Warning,\n UnsupportedFunctionalityError,\n} from \"@ai-sdk/provider\"\nimport { convertToBase64, parseProviderOptions } from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\nimport type { OpenAIResponsesInput, OpenAIResponsesReasoning } from \"./openai-responses-api-types\"\nimport { localShellInputSchema, localShellOutputSchema } from \"./tool/local-shell\"\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n if (!prefixes) return false\n return prefixes.some((prefix) => data.startsWith(prefix))\n}\n\nexport async function convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode,\n fileIdPrefixes,\n store,\n hasLocalShellTool = false,\n}: {\n prompt: LanguageModelV3Prompt\n systemMessageMode: \"system\" | \"developer\" | \"remove\"\n fileIdPrefixes?: readonly string[]\n store: boolean\n hasLocalShellTool?: boolean\n}): Promise<{\n input: OpenAIResponsesInput\n warnings: Array<SharedV3Warning>\n}> {\n const input: OpenAIResponsesInput = []\n const warnings: Array<SharedV3Warning> = []\n const processedApprovalIds = new Set<string>()\n\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n switch (systemMessageMode) {\n case \"system\": {\n input.push({ role: \"system\", content })\n break\n }\n case \"developer\": {\n input.push({ role: \"developer\", content })\n break\n }\n case \"remove\": {\n warnings.push({\n type: \"other\",\n message: \"system messages are removed for this model\",\n })\n break\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode\n throw new Error(`Unsupported system message mode: ${_exhaustiveCheck}`)\n }\n }\n break\n }\n\n case \"user\": {\n input.push({\n role: \"user\",\n content: content.map((part, index) => {\n switch (part.type) {\n case \"text\": {\n return { type: \"input_text\", text: part.text }\n }\n case \"file\": {\n if (part.mediaType.startsWith(\"image/\")) {\n const mediaType = part.mediaType === \"image/*\" ? \"image/jpeg\" : part.mediaType\n\n return {\n type: \"input_image\",\n ...(part.data instanceof URL\n ? { image_url: part.data.toString() }\n : typeof part.data === \"string\" && isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n }),\n detail: part.providerOptions?.openai?.imageDetail,\n }\n } else if (part.mediaType === \"application/pdf\") {\n if (part.data instanceof URL) {\n return {\n type: \"input_file\",\n file_url: part.data.toString(),\n }\n }\n return {\n type: \"input_file\",\n ...(typeof part.data === \"string\" && isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n }),\n }\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n })\n }\n }\n }\n }),\n })\n\n break\n }\n\n case \"assistant\": {\n const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {}\n const toolCallParts: Record<string, LanguageModelV3ToolCallPart> = {}\n\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n input.push({\n role: \"assistant\",\n content: [{ type: \"output_text\", text: part.text }],\n id: (part.providerOptions?.openai?.itemId as string) ?? undefined,\n })\n break\n }\n case \"tool-call\": {\n toolCallParts[part.toolCallId] = part\n\n if (part.providerExecuted) {\n break\n }\n\n if (hasLocalShellTool && part.toolName === \"local_shell\") {\n const parsedInput = localShellInputSchema.parse(part.input)\n input.push({\n type: \"local_shell_call\",\n call_id: part.toolCallId,\n id: (part.providerOptions?.openai?.itemId as string) ?? undefined,\n action: {\n type: \"exec\",\n command: parsedInput.action.command,\n timeout_ms: parsedInput.action.timeoutMs,\n user: parsedInput.action.user,\n working_directory: parsedInput.action.workingDirectory,\n env: parsedInput.action.env,\n },\n })\n\n break\n }\n\n input.push({\n type: \"function_call\",\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n id: (part.providerOptions?.openai?.itemId as string) ?? undefined,\n })\n break\n }\n\n // assistant tool result parts are from provider-executed tools:\n case \"tool-result\": {\n if (store) {\n // use item references to refer to tool results from built-in tools\n input.push({ type: \"item_reference\", id: part.toolCallId })\n } else {\n warnings.push({\n type: \"other\",\n message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n })\n }\n\n break\n }\n\n case \"reasoning\": {\n const providerOptions = await parseProviderOptions({\n provider: \"copilot\",\n providerOptions: part.providerOptions,\n schema: openaiResponsesReasoningProviderOptionsSchema,\n })\n\n const reasoningId = providerOptions?.itemId\n\n if (reasoningId != null) {\n const reasoningMessage = reasoningMessages[reasoningId]\n\n if (store) {\n if (reasoningMessage === undefined) {\n // use item references to refer to reasoning (single reference)\n input.push({ type: \"item_reference\", id: reasoningId })\n\n // store unused reasoning message to mark id as used\n reasoningMessages[reasoningId] = {\n type: \"reasoning\",\n id: reasoningId,\n summary: [],\n }\n }\n } else {\n const summaryParts: Array<{\n type: \"summary_text\"\n text: string\n }> = []\n\n if (part.text.length > 0) {\n summaryParts.push({\n type: \"summary_text\",\n text: part.text,\n })\n } else if (reasoningMessage !== undefined) {\n warnings.push({\n type: \"other\",\n message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n })\n }\n\n if (reasoningMessage === undefined) {\n reasoningMessages[reasoningId] = {\n type: \"reasoning\",\n id: reasoningId,\n encrypted_content: providerOptions?.reasoningEncryptedContent,\n summary: summaryParts,\n }\n input.push(reasoningMessages[reasoningId])\n } else {\n reasoningMessage.summary.push(...summaryParts)\n }\n }\n } else {\n warnings.push({\n type: \"other\",\n message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n })\n }\n break\n }\n }\n }\n\n break\n }\n\n case \"tool\": {\n for (const part of content) {\n if (part.type === \"tool-approval-response\") {\n if (processedApprovalIds.has(part.approvalId)) {\n continue\n }\n processedApprovalIds.add(part.approvalId)\n\n if (store) {\n input.push({\n type: \"item_reference\",\n id: part.approvalId,\n })\n }\n\n input.push({\n type: \"mcp_approval_response\",\n approval_request_id: part.approvalId,\n approve: part.approved,\n })\n continue\n }\n const output = part.output\n\n if (output.type === \"execution-denied\") {\n const approvalId = (output.providerOptions?.openai as { approvalId?: string } | undefined)?.approvalId\n\n if (approvalId) {\n continue\n }\n }\n\n if (hasLocalShellTool && part.toolName === \"local_shell\" && output.type === \"json\") {\n input.push({\n type: \"local_shell_call_output\",\n call_id: part.toolCallId,\n output: localShellOutputSchema.parse(output.value).output,\n })\n break\n }\n\n let contentValue: string\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n contentValue = output.value\n break\n case \"execution-denied\":\n contentValue = output.reason ?? \"Tool execution denied.\"\n break\n case \"content\":\n case \"json\":\n case \"error-json\":\n contentValue = JSON.stringify(output.value)\n break\n }\n\n input.push({\n type: \"function_call_output\",\n call_id: part.toolCallId,\n output: contentValue,\n })\n }\n\n break\n }\n\n default: {\n const _exhaustiveCheck: never = role\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`)\n }\n }\n }\n\n return { input, warnings }\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n itemId: z.string().nullish(),\n reasoningEncryptedContent: z.string().nullish(),\n})\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<typeof openaiResponsesReasoningProviderOptionsSchema>\n",
15
+ "import type { LanguageModelV3FinishReason } from \"@ai-sdk/provider\"\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasFunctionCall,\n}: {\n finishReason: string | null | undefined\n // flag that checks if there have been client-side tool calls (not executed by openai)\n hasFunctionCall: boolean\n}): LanguageModelV3FinishReason[\"unified\"] {\n switch (finishReason) {\n case undefined:\n case null:\n return hasFunctionCall ? \"tool-calls\" : \"stop\"\n case \"max_output_tokens\":\n return \"length\"\n case \"content_filter\":\n return \"content-filter\"\n default:\n return hasFunctionCall ? \"tool-calls\" : \"other\"\n }\n}\n",
16
+ "import { createProviderToolFactoryWithOutputSchema } from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\n\nexport const codeInterpreterInputSchema = z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n})\n\nexport const codeInterpreterOutputSchema = z.object({\n outputs: z\n .array(\n z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"logs\"), logs: z.string() }),\n z.object({ type: z.literal(\"image\"), url: z.string() }),\n ]),\n )\n .nullish(),\n})\n\nexport const codeInterpreterArgsSchema = z.object({\n container: z\n .union([\n z.string(),\n z.object({\n fileIds: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n})\n\ntype CodeInterpreterArgs = {\n /**\n * The code interpreter container.\n * Can be a container ID\n * or an object that specifies uploaded file IDs to make available to your code.\n */\n container?: string | { fileIds?: string[] }\n}\n\nexport const codeInterpreterToolFactory = createProviderToolFactoryWithOutputSchema<\n {\n /**\n * The code to run, or null if not available.\n */\n code?: string | null\n\n /**\n * The ID of the container used to run the code.\n */\n containerId: string\n },\n {\n /**\n * The outputs generated by the code interpreter, such as logs or images.\n * Can be null if no outputs are available.\n */\n outputs?: Array<\n | {\n type: \"logs\"\n\n /**\n * The logs output from the code interpreter.\n */\n logs: string\n }\n | {\n type: \"image\"\n\n /**\n * The URL of the image output from the code interpreter.\n */\n url: string\n }\n > | null\n },\n CodeInterpreterArgs\n>({\n id: \"openai.code_interpreter\",\n inputSchema: codeInterpreterInputSchema,\n outputSchema: codeInterpreterOutputSchema,\n})\n\nexport const codeInterpreter = (\n args: CodeInterpreterArgs = {}, // default\n) => {\n return codeInterpreterToolFactory(args)\n}\n",
17
+ "import { createProviderToolFactoryWithOutputSchema } from \"@ai-sdk/provider-utils\"\nimport type {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from \"../openai-responses-api-types\"\nimport { z } from \"zod/v4\"\n\nconst comparisonFilterSchema = z.object({\n key: z.string(),\n type: z.enum([\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\"]),\n value: z.union([z.string(), z.number(), z.boolean()]),\n})\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n type: z.enum([\"and\", \"or\"]),\n filters: z.array(z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)])),\n})\n\nexport const fileSearchArgsSchema = z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n ranking: z\n .object({\n ranker: z.string().optional(),\n scoreThreshold: z.number().optional(),\n })\n .optional(),\n filters: z.union([comparisonFilterSchema, compoundFilterSchema]).optional(),\n})\n\nexport const fileSearchOutputSchema = z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n fileId: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullable(),\n})\n\nexport const fileSearch = createProviderToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The search query to execute.\n */\n queries: string[]\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * Set of 16 key-value pairs that can be attached to an object.\n * This can be useful for storing additional information about the object\n * in a structured format, and querying for objects via API or the dashboard.\n * Keys are strings with a maximum length of 64 characters.\n * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n */\n attributes: Record<string, unknown>\n\n /**\n * The unique ID of the file.\n */\n fileId: string\n\n /**\n * The name of the file.\n */\n filename: string\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number\n\n /**\n * The text that was retrieved from the file.\n */\n text: string\n }[]\n },\n {\n /**\n * List of vector store IDs to search through.\n */\n vectorStoreIds: string[]\n\n /**\n * Maximum number of search results to return. Defaults to 10.\n */\n maxNumResults?: number\n\n /**\n * Ranking options for the search.\n */\n ranking?: {\n /**\n * The ranker to use for the file search.\n */\n ranker?: string\n\n /**\n * The score threshold for the file search, a number between 0 and 1.\n * Numbers closer to 1 will attempt to return only the most relevant results,\n * but may return fewer results.\n */\n scoreThreshold?: number\n }\n\n /**\n * A filter to apply.\n */\n filters?: OpenAIResponsesFileSearchToolComparisonFilter | OpenAIResponsesFileSearchToolCompoundFilter\n }\n>({\n id: \"openai.file_search\",\n inputSchema: z.object({}),\n outputSchema: fileSearchOutputSchema,\n})\n",
18
+ "import { createProviderToolFactory } from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\n\nexport const webSearchArgsSchema = z.object({\n filters: z\n .object({\n allowedDomains: z.array(z.string()).optional(),\n })\n .optional(),\n\n searchContextSize: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n\n userLocation: z\n .object({\n type: z.literal(\"approximate\"),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n})\n\nexport const webSearchToolFactory = createProviderToolFactory<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * Filters for the search.\n */\n filters?: {\n /**\n * Allowed domains for the search.\n * If not provided, all domains are allowed.\n * Subdomains of the provided domains are allowed as well.\n */\n allowedDomains?: string[]\n }\n\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: \"low\" | \"medium\" | \"high\"\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: \"approximate\"\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string\n }\n }\n>({\n id: \"openai.web_search\",\n inputSchema: z.object({\n action: z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"search\"),\n query: z.string().nullish(),\n }),\n z.object({\n type: z.literal(\"open_page\"),\n url: z.string(),\n }),\n z.object({\n type: z.literal(\"find\"),\n url: z.string(),\n pattern: z.string(),\n }),\n ])\n .nullish(),\n }),\n})\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => {\n return webSearchToolFactory(args)\n}\n",
19
+ "import { createProviderToolFactory } from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\n\n// Args validation schema\nexport const webSearchPreviewArgsSchema = z.object({\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation: z\n .object({\n /**\n * Type of location (always 'approximate')\n */\n type: z.literal(\"approximate\"),\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country: z.string().optional(),\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city: z.string().optional(),\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region: z.string().optional(),\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone: z.string().optional(),\n })\n .optional(),\n})\n\nexport const webSearchPreview = createProviderToolFactory<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: \"low\" | \"medium\" | \"high\"\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: \"approximate\"\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string\n }\n }\n>({\n id: \"openai.web_search_preview\",\n inputSchema: z.object({\n action: z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"search\"),\n query: z.string().nullish(),\n }),\n z.object({\n type: z.literal(\"open_page\"),\n url: z.string(),\n }),\n z.object({\n type: z.literal(\"find\"),\n url: z.string(),\n pattern: z.string(),\n }),\n ])\n .nullish(),\n }),\n})\n",
20
+ "import { createProviderToolFactoryWithOutputSchema } from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\n\nexport const imageGenerationArgsSchema = z\n .object({\n background: z.enum([\"auto\", \"opaque\", \"transparent\"]).optional(),\n inputFidelity: z.enum([\"low\", \"high\"]).optional(),\n inputImageMask: z\n .object({\n fileId: z.string().optional(),\n imageUrl: z.string().optional(),\n })\n .optional(),\n model: z.string().optional(),\n moderation: z.enum([\"auto\"]).optional(),\n outputCompression: z.number().int().min(0).max(100).optional(),\n outputFormat: z.enum([\"png\", \"jpeg\", \"webp\"]).optional(),\n partialImages: z.number().int().min(0).max(3).optional(),\n quality: z.enum([\"auto\", \"low\", \"medium\", \"high\"]).optional(),\n size: z.enum([\"1024x1024\", \"1024x1536\", \"1536x1024\", \"auto\"]).optional(),\n })\n .strict()\n\nexport const imageGenerationOutputSchema = z.object({\n result: z.string(),\n})\n\ntype ImageGenerationArgs = {\n /**\n * Background type for the generated image. Default is 'auto'.\n */\n background?: \"auto\" | \"opaque\" | \"transparent\"\n\n /**\n * Input fidelity for the generated image. Default is 'low'.\n */\n inputFidelity?: \"low\" | \"high\"\n\n /**\n * Optional mask for inpainting.\n * Contains image_url (string, optional) and file_id (string, optional).\n */\n inputImageMask?: {\n /**\n * File ID for the mask image.\n */\n fileId?: string\n\n /**\n * Base64-encoded mask image.\n */\n imageUrl?: string\n }\n\n /**\n * The image generation model to use. Default: gpt-image-1.\n */\n model?: string\n\n /**\n * Moderation level for the generated image. Default: auto.\n */\n moderation?: \"auto\"\n\n /**\n * Compression level for the output image. Default: 100.\n */\n outputCompression?: number\n\n /**\n * The output format of the generated image. One of png, webp, or jpeg.\n * Default: png\n */\n outputFormat?: \"png\" | \"jpeg\" | \"webp\"\n\n /**\n * Number of partial images to generate in streaming mode, from 0 (default value) to 3.\n */\n partialImages?: number\n\n /**\n * The quality of the generated image.\n * One of low, medium, high, or auto. Default: auto.\n */\n quality?: \"auto\" | \"low\" | \"medium\" | \"high\"\n\n /**\n * The size of the generated image.\n * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n * Default: auto.\n */\n size?: \"auto\" | \"1024x1024\" | \"1024x1536\" | \"1536x1024\"\n}\n\nconst imageGenerationToolFactory = createProviderToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string\n },\n ImageGenerationArgs\n>({\n id: \"openai.image_generation\",\n inputSchema: z.object({}),\n outputSchema: imageGenerationOutputSchema,\n})\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args)\n}\n",
21
+ "import { type LanguageModelV3CallOptions, type SharedV3Warning, UnsupportedFunctionalityError } from \"@ai-sdk/provider\"\nimport { codeInterpreterArgsSchema } from \"./tool/code-interpreter\"\nimport { fileSearchArgsSchema } from \"./tool/file-search\"\nimport { webSearchArgsSchema } from \"./tool/web-search\"\nimport { webSearchPreviewArgsSchema } from \"./tool/web-search-preview\"\nimport { imageGenerationArgsSchema } from \"./tool/image-generation\"\nimport type { OpenAIResponsesTool } from \"./openai-responses-api-types\"\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV3CallOptions[\"tools\"]\n toolChoice?: LanguageModelV3CallOptions[\"toolChoice\"]\n strictJsonSchema: boolean\n}): {\n tools?: Array<OpenAIResponsesTool>\n toolChoice?:\n | \"auto\"\n | \"none\"\n | \"required\"\n | { type: \"file_search\" }\n | { type: \"web_search_preview\" }\n | { type: \"web_search\" }\n | { type: \"function\"; name: string }\n | { type: \"code_interpreter\" }\n | { type: \"image_generation\" }\n toolWarnings: SharedV3Warning[]\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined\n\n const toolWarnings: SharedV3Warning[] = []\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings }\n }\n\n const openaiTools: Array<OpenAIResponsesTool> = []\n\n for (const tool of tools) {\n switch (tool.type) {\n case \"function\":\n openaiTools.push({\n type: \"function\",\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: strictJsonSchema,\n })\n break\n case \"provider\": {\n switch (tool.id) {\n case \"openai.file_search\": {\n const args = fileSearchArgsSchema.parse(tool.args)\n\n openaiTools.push({\n type: \"file_search\",\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n ranking_options: args.ranking\n ? {\n ranker: args.ranking.ranker,\n score_threshold: args.ranking.scoreThreshold,\n }\n : undefined,\n filters: args.filters,\n })\n\n break\n }\n case \"openai.local_shell\": {\n openaiTools.push({\n type: \"local_shell\",\n })\n break\n }\n case \"openai.web_search_preview\": {\n const args = webSearchPreviewArgsSchema.parse(tool.args)\n openaiTools.push({\n type: \"web_search_preview\",\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n })\n break\n }\n case \"openai.web_search\": {\n const args = webSearchArgsSchema.parse(tool.args)\n openaiTools.push({\n type: \"web_search\",\n filters: args.filters != null ? { allowed_domains: args.filters.allowedDomains } : undefined,\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n })\n break\n }\n case \"openai.code_interpreter\": {\n const args = codeInterpreterArgsSchema.parse(tool.args)\n openaiTools.push({\n type: \"code_interpreter\",\n container:\n args.container == null\n ? { type: \"auto\", file_ids: undefined }\n : typeof args.container === \"string\"\n ? args.container\n : { type: \"auto\", file_ids: args.container.fileIds },\n })\n break\n }\n case \"openai.image_generation\": {\n const args = imageGenerationArgsSchema.parse(tool.args)\n openaiTools.push({\n type: \"image_generation\",\n background: args.background,\n input_fidelity: args.inputFidelity,\n input_image_mask: args.inputImageMask\n ? {\n file_id: args.inputImageMask.fileId,\n image_url: args.inputImageMask.imageUrl,\n }\n : undefined,\n model: args.model,\n moderation: args.moderation,\n partial_images: args.partialImages,\n quality: args.quality,\n output_compression: args.outputCompression,\n output_format: args.outputFormat,\n size: args.size,\n })\n break\n }\n }\n break\n }\n default:\n toolWarnings.push({ type: \"unsupported\", feature: \"tool type\" })\n break\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings }\n }\n\n const type = toolChoice.type\n\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: openaiTools, toolChoice: type, toolWarnings }\n case \"tool\":\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === \"code_interpreter\" ||\n toolChoice.toolName === \"file_search\" ||\n toolChoice.toolName === \"image_generation\" ||\n toolChoice.toolName === \"web_search_preview\" ||\n toolChoice.toolName === \"web_search\"\n ? { type: toolChoice.toolName }\n : { type: \"function\", name: toolChoice.toolName },\n toolWarnings,\n }\n default: {\n const _exhaustiveCheck: never = type\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n })\n }\n }\n}\n",
22
+ "import {\n APICallError,\n type JSONValue,\n type LanguageModelV3,\n type LanguageModelV3CallOptions,\n type LanguageModelV3Content,\n type LanguageModelV3ProviderTool,\n type LanguageModelV3StreamPart,\n type SharedV3ProviderMetadata,\n type SharedV3Warning,\n} from \"@ai-sdk/provider\"\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n type ParseResult,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod/v4\"\nimport type { OpenAIConfig } from \"./openai-config\"\nimport { openaiFailedResponseHandler } from \"./openai-error\"\nimport { codeInterpreterInputSchema, codeInterpreterOutputSchema } from \"./tool/code-interpreter\"\nimport { fileSearchOutputSchema } from \"./tool/file-search\"\nimport { imageGenerationOutputSchema } from \"./tool/image-generation\"\nimport { convertToOpenAIResponsesInput } from \"./convert-to-openai-responses-input\"\nimport { mapOpenAIResponseFinishReason } from \"./map-openai-responses-finish-reason\"\nimport type { OpenAIResponsesIncludeOptions, OpenAIResponsesIncludeValue } from \"./openai-responses-api-types\"\nimport { prepareResponsesTools } from \"./openai-responses-prepare-tools\"\nimport type { OpenAIResponsesModelId } from \"./openai-responses-settings\"\nimport { localShellInputSchema } from \"./tool/local-shell\"\n\nconst webSearchCallItem = z.object({\n type: z.literal(\"web_search_call\"),\n id: z.string(),\n status: z.string(),\n action: z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"search\"),\n query: z.string().nullish(),\n }),\n z.object({\n type: z.literal(\"open_page\"),\n url: z.string(),\n }),\n z.object({\n type: z.literal(\"find\"),\n url: z.string(),\n pattern: z.string(),\n }),\n ])\n .nullish(),\n})\n\nconst fileSearchCallItem = z.object({\n type: z.literal(\"file_search_call\"),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n})\n\nconst codeInterpreterCallItem = z.object({\n type: z.literal(\"code_interpreter_call\"),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"logs\"), logs: z.string() }),\n z.object({ type: z.literal(\"image\"), url: z.string() }),\n ]),\n )\n .nullable(),\n})\n\nconst localShellCallItem = z.object({\n type: z.literal(\"local_shell_call\"),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal(\"exec\"),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n})\n\nconst imageGenerationCallItem = z.object({\n type: z.literal(\"image_generation_call\"),\n id: z.string(),\n result: z.string(),\n})\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nconst TOP_LOGPROBS_MAX = 20\n\nconst LOGPROBS_SCHEMA = z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n)\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = \"v3\"\n\n readonly modelId: OpenAIResponsesModelId\n\n private readonly config: OpenAIConfig\n\n constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n this.modelId = modelId\n this.config = config\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n \"image/*\": [/^https?:\\/\\/.*$/],\n \"application/pdf\": [/^https?:\\/\\/.*$/],\n }\n\n get provider(): string {\n return this.config.provider\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = []\n const modelConfig = getResponsesModelConfig(this.modelId)\n\n if (topK != null) {\n warnings.push({ type: \"unsupported\", feature: \"topK\" })\n }\n\n if (seed != null) {\n warnings.push({ type: \"unsupported\", feature: \"seed\" })\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"presencePenalty\",\n })\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"frequencyPenalty\",\n })\n }\n\n if (stopSequences != null) {\n warnings.push({ type: \"unsupported\", feature: \"stopSequences\" })\n }\n\n const openaiOptions = await parseProviderOptions({\n provider: \"copilot\",\n providerOptions,\n schema: openaiResponsesProviderOptionsSchema,\n })\n\n const { input, warnings: inputWarnings } = await convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode: modelConfig.systemMessageMode,\n fileIdPrefixes: this.config.fileIdPrefixes,\n store: openaiOptions?.store ?? true,\n hasLocalShellTool: hasOpenAITool(\"openai.local_shell\"),\n })\n\n warnings.push(...inputWarnings)\n\n const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false\n\n let include: OpenAIResponsesIncludeOptions = openaiOptions?.include\n\n function addInclude(key: OpenAIResponsesIncludeValue) {\n include = include != null ? [...include, key] : [key]\n }\n\n function hasOpenAITool(id: string) {\n return tools?.find((tool) => tool.type === \"provider\" && tool.id === id) != null\n }\n\n // when logprobs are requested, automatically include them:\n const topLogprobs =\n typeof openaiOptions?.logprobs === \"number\"\n ? openaiOptions?.logprobs\n : openaiOptions?.logprobs === true\n ? TOP_LOGPROBS_MAX\n : undefined\n\n if (topLogprobs) {\n addInclude(\"message.output_text.logprobs\")\n }\n\n // when a web search tool is present, automatically include the sources:\n const webSearchToolName = (\n tools?.find(\n (tool) =>\n tool.type === \"provider\" && (tool.id === \"openai.web_search\" || tool.id === \"openai.web_search_preview\"),\n ) as LanguageModelV3ProviderTool | undefined\n )?.name\n\n if (webSearchToolName) {\n addInclude(\"web_search_call.action.sources\")\n }\n\n // when a code interpreter tool is present, automatically include the outputs:\n if (hasOpenAITool(\"openai.code_interpreter\")) {\n addInclude(\"code_interpreter_call.outputs\")\n }\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n ...((responseFormat?.type === \"json\" || openaiOptions?.textVerbosity) && {\n text: {\n ...(responseFormat?.type === \"json\" && {\n format:\n responseFormat.schema != null\n ? {\n type: \"json_schema\",\n strict: strictJsonSchema,\n name: responseFormat.name ?? \"response\",\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: \"json_object\" },\n }),\n ...(openaiOptions?.textVerbosity && {\n verbosity: openaiOptions.textVerbosity,\n }),\n },\n }),\n\n // provider options:\n max_tool_calls: openaiOptions?.maxToolCalls,\n metadata: openaiOptions?.metadata,\n parallel_tool_calls: openaiOptions?.parallelToolCalls,\n previous_response_id: openaiOptions?.previousResponseId,\n store: openaiOptions?.store,\n user: openaiOptions?.user,\n instructions: openaiOptions?.instructions,\n service_tier: openaiOptions?.serviceTier,\n include,\n prompt_cache_key: openaiOptions?.promptCacheKey,\n safety_identifier: openaiOptions?.safetyIdentifier,\n top_logprobs: topLogprobs,\n\n // model-specific settings:\n ...(modelConfig.isReasoningModel &&\n (openaiOptions?.reasoningEffort != null || openaiOptions?.reasoningSummary != null) && {\n reasoning: {\n ...(openaiOptions?.reasoningEffort != null && {\n effort: openaiOptions.reasoningEffort,\n }),\n ...(openaiOptions?.reasoningSummary != null && {\n summary: openaiOptions.reasoningSummary,\n }),\n },\n }),\n ...(modelConfig.requiredAutoTruncation && {\n truncation: \"auto\",\n }),\n }\n\n if (modelConfig.isReasoningModel) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined\n warnings.push({\n type: \"unsupported\",\n feature: \"temperature\",\n details: \"temperature is not supported for reasoning models\",\n })\n }\n\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined\n warnings.push({\n type: \"unsupported\",\n feature: \"topP\",\n details: \"topP is not supported for reasoning models\",\n })\n }\n } else {\n if (openaiOptions?.reasoningEffort != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"reasoningEffort\",\n details: \"reasoningEffort is not supported for non-reasoning models\",\n })\n }\n\n if (openaiOptions?.reasoningSummary != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"reasoningSummary\",\n details: \"reasoningSummary is not supported for non-reasoning models\",\n })\n }\n }\n\n // Validate flex processing support\n if (openaiOptions?.serviceTier === \"flex\" && !modelConfig.supportsFlexProcessing) {\n warnings.push({\n type: \"unsupported\",\n feature: \"serviceTier\",\n details: \"flex processing is only available for o3, o4-mini, and gpt-5 models\",\n })\n // Remove from args if not supported\n baseArgs.service_tier = undefined\n }\n\n // Validate priority processing support\n if (openaiOptions?.serviceTier === \"priority\" && !modelConfig.supportsPriorityProcessing) {\n warnings.push({\n type: \"unsupported\",\n feature: \"serviceTier\",\n details:\n \"priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported\",\n })\n // Remove from args if not supported\n baseArgs.service_tier = undefined\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n })\n\n return {\n webSearchToolName,\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n }\n }\n\n async doGenerate(options: LanguageModelV3CallOptions) {\n const { args: body, warnings, webSearchToolName } = await this.getArgs(options)\n const url = this.config.url({\n path: \"/responses\",\n modelId: this.modelId,\n })\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n z.object({\n id: z.string(),\n created_at: z.number(),\n error: z\n .object({\n code: z.string(),\n message: z.string(),\n })\n .nullish(),\n model: z.string(),\n output: z.array(\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"message\"),\n role: z.literal(\"assistant\"),\n id: z.string(),\n content: z.array(\n z.object({\n type: z.literal(\"output_text\"),\n text: z.string(),\n logprobs: LOGPROBS_SCHEMA.nullish(),\n annotations: z.array(\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"url_citation\"),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal(\"file_citation\"),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n z.object({\n type: z.literal(\"container_file_citation\"),\n }),\n ]),\n ),\n }),\n ),\n }),\n webSearchCallItem,\n fileSearchCallItem,\n codeInterpreterCallItem,\n imageGenerationCallItem,\n localShellCallItem,\n z.object({\n type: z.literal(\"function_call\"),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal(\"computer_call\"),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"reasoning\"),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal(\"summary_text\"),\n text: z.string(),\n }),\n ),\n }),\n ]),\n ),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: usageSchema,\n }),\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n })\n }\n\n const content: Array<LanguageModelV3Content> = []\n const logprobs: Array<z.infer<typeof LOGPROBS_SCHEMA>> = []\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false\n\n // map response content to content array\n for (const part of response.output) {\n switch (part.type) {\n case \"reasoning\": {\n // when there are no summary parts, we need to add an empty reasoning part:\n if (part.summary.length === 0) {\n part.summary.push({ type: \"summary_text\", text: \"\" })\n }\n\n for (const summary of part.summary) {\n content.push({\n type: \"reasoning\" as const,\n text: summary.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n reasoningEncryptedContent: part.encrypted_content ?? null,\n },\n },\n })\n }\n break\n }\n\n case \"image_generation_call\": {\n content.push({\n type: \"tool-call\",\n toolCallId: part.id,\n toolName: \"image_generation\",\n input: \"{}\",\n providerExecuted: true,\n })\n\n content.push({\n type: \"tool-result\",\n toolCallId: part.id,\n toolName: \"image_generation\",\n result: {\n result: part.result,\n } satisfies z.infer<typeof imageGenerationOutputSchema>,\n })\n\n break\n }\n\n case \"local_shell_call\": {\n content.push({\n type: \"tool-call\",\n toolCallId: part.call_id,\n toolName: \"local_shell\",\n input: JSON.stringify({ action: part.action } satisfies z.infer<typeof localShellInputSchema>),\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n })\n\n break\n }\n\n case \"message\": {\n for (const contentPart of part.content) {\n if (options.providerOptions?.openai?.logprobs && contentPart.logprobs) {\n logprobs.push(contentPart.logprobs)\n }\n\n content.push({\n type: \"text\",\n text: contentPart.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n })\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === \"url_citation\") {\n content.push({\n type: \"source\",\n sourceType: \"url\",\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n })\n } else if (annotation.type === \"file_citation\") {\n content.push({\n type: \"source\",\n sourceType: \"document\",\n id: this.config.generateId?.() ?? generateId(),\n mediaType: \"text/plain\",\n title: annotation.quote ?? annotation.filename ?? \"Document\",\n filename: annotation.filename ?? annotation.file_id,\n })\n }\n }\n }\n\n break\n }\n\n case \"function_call\": {\n hasFunctionCall = true\n\n content.push({\n type: \"tool-call\",\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n })\n break\n }\n\n case \"web_search_call\": {\n content.push({\n type: \"tool-call\",\n toolCallId: part.id,\n toolName: webSearchToolName ?? \"web_search\",\n input: JSON.stringify({ action: part.action }),\n providerExecuted: true,\n })\n\n content.push({\n type: \"tool-result\",\n toolCallId: part.id,\n toolName: webSearchToolName ?? \"web_search\",\n result: { status: part.status },\n })\n\n break\n }\n\n case \"computer_call\": {\n content.push({\n type: \"tool-call\",\n toolCallId: part.id,\n toolName: \"computer_use\",\n input: \"\",\n providerExecuted: true,\n })\n\n content.push({\n type: \"tool-result\",\n toolCallId: part.id,\n toolName: \"computer_use\",\n result: {\n type: \"computer_use_tool_result\",\n status: part.status || \"completed\",\n },\n })\n break\n }\n\n case \"file_search_call\": {\n content.push({\n type: \"tool-call\",\n toolCallId: part.id,\n toolName: \"file_search\",\n input: \"{}\",\n providerExecuted: true,\n })\n\n content.push({\n type: \"tool-result\",\n toolCallId: part.id,\n toolName: \"file_search\",\n result: {\n queries: part.queries,\n results:\n part.results?.map((result) => ({\n attributes: result.attributes as Record<string, JSONValue>,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies z.infer<typeof fileSearchOutputSchema>,\n })\n break\n }\n\n case \"code_interpreter_call\": {\n content.push({\n type: \"tool-call\",\n toolCallId: part.id,\n toolName: \"code_interpreter\",\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies z.infer<typeof codeInterpreterInputSchema>),\n providerExecuted: true,\n })\n\n content.push({\n type: \"tool-result\",\n toolCallId: part.id,\n toolName: \"code_interpreter\",\n result: {\n outputs: part.outputs,\n } satisfies z.infer<typeof codeInterpreterOutputSchema>,\n })\n break\n }\n }\n }\n\n const providerMetadata: SharedV3ProviderMetadata = {\n openai: { responseId: response.id },\n }\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs\n }\n\n if (typeof response.service_tier === \"string\") {\n providerMetadata.openai.serviceTier = response.service_tier\n }\n\n return {\n content,\n finishReason: {\n unified: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasFunctionCall,\n }),\n raw: response.incomplete_details?.reason,\n },\n usage: {\n inputTokens: {\n total: response.usage.input_tokens,\n noCache:\n response.usage.input_tokens_details?.cached_tokens != null\n ? response.usage.input_tokens - response.usage.input_tokens_details.cached_tokens\n : undefined,\n cacheRead: response.usage.input_tokens_details?.cached_tokens ?? undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: response.usage.output_tokens,\n text: undefined,\n reasoning: response.usage.output_tokens_details?.reasoning_tokens ?? undefined,\n },\n raw: response.usage,\n },\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n }\n }\n\n async doStream(options: LanguageModelV3CallOptions) {\n const { args: body, warnings, webSearchToolName } = await this.getArgs(options)\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/responses\",\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n stream: true,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(openaiResponsesChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n // oxlint-disable-next-line no-this-alias -- needed for closure scope inside generator\n const self = this\n\n let finishReason: {\n unified: ReturnType<typeof mapOpenAIResponseFinishReason>\n raw: string | undefined\n } = {\n unified: \"other\",\n raw: undefined,\n }\n const usage: {\n inputTokens: number | undefined\n outputTokens: number | undefined\n totalTokens: number | undefined\n reasoningTokens: number | undefined\n cachedInputTokens: number | undefined\n } = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n reasoningTokens: undefined,\n cachedInputTokens: undefined,\n }\n const logprobs: Array<z.infer<typeof LOGPROBS_SCHEMA>> = []\n let responseId: string | null = null\n const ongoingToolCalls: Record<\n number,\n | {\n toolName: string\n toolCallId: string\n codeInterpreter?: {\n containerId: string\n }\n }\n | undefined\n > = {}\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false\n\n // Track reasoning by output_index instead of item_id\n // GitHub Copilot rotates encrypted item IDs on every event\n const activeReasoning: Record<\n number,\n {\n canonicalId: string // the item.id from output_item.added\n encryptedContent?: string | null\n summaryParts: number[]\n }\n > = {}\n\n // Track current active reasoning output_index for correlating summary events\n let currentReasoningOutputIndex: number | null = null\n\n // Track a stable text part id for the current assistant message.\n // Copilot may change item_id across text deltas; normalize to one id.\n let currentTextId: string | null = null\n\n let serviceTier: string | undefined\n\n return {\n stream: response.pipeThrough(\n new TransformStream<ParseResult<z.infer<typeof openaiResponsesChunkSchema>>, LanguageModelV3StreamPart>({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings })\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk.rawValue })\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = {\n unified: \"error\",\n raw: undefined,\n }\n controller.enqueue({ type: \"error\", error: chunk.error })\n return\n }\n\n const value = chunk.value\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (value.item.type === \"function_call\") {\n ongoingToolCalls[value.output_index] = {\n toolName: value.item.name,\n toolCallId: value.item.call_id,\n }\n\n controller.enqueue({\n type: \"tool-input-start\",\n id: value.item.call_id,\n toolName: value.item.name,\n })\n } else if (value.item.type === \"web_search_call\") {\n ongoingToolCalls[value.output_index] = {\n toolName: webSearchToolName ?? \"web_search\",\n toolCallId: value.item.id,\n }\n\n controller.enqueue({\n type: \"tool-input-start\",\n id: value.item.id,\n toolName: webSearchToolName ?? \"web_search\",\n })\n } else if (value.item.type === \"computer_call\") {\n ongoingToolCalls[value.output_index] = {\n toolName: \"computer_use\",\n toolCallId: value.item.id,\n }\n\n controller.enqueue({\n type: \"tool-input-start\",\n id: value.item.id,\n toolName: \"computer_use\",\n })\n } else if (value.item.type === \"code_interpreter_call\") {\n ongoingToolCalls[value.output_index] = {\n toolName: \"code_interpreter\",\n toolCallId: value.item.id,\n codeInterpreter: {\n containerId: value.item.container_id,\n },\n }\n\n controller.enqueue({\n type: \"tool-input-start\",\n id: value.item.id,\n toolName: \"code_interpreter\",\n })\n\n controller.enqueue({\n type: \"tool-input-delta\",\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n })\n } else if (value.item.type === \"file_search_call\") {\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: value.item.id,\n toolName: \"file_search\",\n input: \"{}\",\n providerExecuted: true,\n })\n } else if (value.item.type === \"image_generation_call\") {\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: value.item.id,\n toolName: \"image_generation\",\n input: \"{}\",\n providerExecuted: true,\n })\n } else if (value.item.type === \"message\") {\n // Start a stable text part for this assistant message\n currentTextId = value.item.id\n controller.enqueue({\n type: \"text-start\",\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n })\n } else if (isResponseOutputItemAddedReasoningChunk(value)) {\n activeReasoning[value.output_index] = {\n canonicalId: value.item.id,\n encryptedContent: value.item.encrypted_content,\n summaryParts: [0],\n }\n currentReasoningOutputIndex = value.output_index\n\n controller.enqueue({\n type: \"reasoning-start\",\n id: `${value.item.id}:0`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent: value.item.encrypted_content ?? null,\n },\n },\n })\n }\n } else if (isResponseOutputItemDoneChunk(value)) {\n if (value.item.type === \"function_call\") {\n ongoingToolCalls[value.output_index] = undefined\n hasFunctionCall = true\n\n controller.enqueue({\n type: \"tool-input-end\",\n id: value.item.call_id,\n })\n\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n })\n } else if (value.item.type === \"web_search_call\") {\n ongoingToolCalls[value.output_index] = undefined\n\n controller.enqueue({\n type: \"tool-input-end\",\n id: value.item.id,\n })\n\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: value.item.id,\n toolName: \"web_search\",\n input: JSON.stringify({ action: value.item.action }),\n providerExecuted: true,\n })\n\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: value.item.id,\n toolName: \"web_search\",\n result: { status: value.item.status },\n })\n } else if (value.item.type === \"computer_call\") {\n ongoingToolCalls[value.output_index] = undefined\n\n controller.enqueue({\n type: \"tool-input-end\",\n id: value.item.id,\n })\n\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: value.item.id,\n toolName: \"computer_use\",\n input: \"\",\n providerExecuted: true,\n })\n\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: value.item.id,\n toolName: \"computer_use\",\n result: {\n type: \"computer_use_tool_result\",\n status: value.item.status || \"completed\",\n },\n })\n } else if (value.item.type === \"file_search_call\") {\n ongoingToolCalls[value.output_index] = undefined\n\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: value.item.id,\n toolName: \"file_search\",\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map((result) => ({\n attributes: result.attributes as Record<string, JSONValue>,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies z.infer<typeof fileSearchOutputSchema>,\n })\n } else if (value.item.type === \"code_interpreter_call\") {\n ongoingToolCalls[value.output_index] = undefined\n\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: value.item.id,\n toolName: \"code_interpreter\",\n result: {\n outputs: value.item.outputs,\n } satisfies z.infer<typeof codeInterpreterOutputSchema>,\n })\n } else if (value.item.type === \"image_generation_call\") {\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: value.item.id,\n toolName: \"image_generation\",\n result: {\n result: value.item.result,\n } satisfies z.infer<typeof imageGenerationOutputSchema>,\n })\n } else if (value.item.type === \"local_shell_call\") {\n ongoingToolCalls[value.output_index] = undefined\n\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: value.item.call_id,\n toolName: \"local_shell\",\n input: JSON.stringify({\n action: {\n type: \"exec\",\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies z.infer<typeof localShellInputSchema>),\n providerMetadata: {\n openai: { itemId: value.item.id },\n },\n })\n } else if (value.item.type === \"message\") {\n if (currentTextId) {\n controller.enqueue({\n type: \"text-end\",\n id: currentTextId,\n })\n currentTextId = null\n }\n } else if (isResponseOutputItemDoneReasoningChunk(value)) {\n const activeReasoningPart = activeReasoning[value.output_index]\n if (activeReasoningPart) {\n for (const summaryIndex of activeReasoningPart.summaryParts) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: `${activeReasoningPart.canonicalId}:${summaryIndex}`,\n providerMetadata: {\n openai: {\n itemId: activeReasoningPart.canonicalId,\n reasoningEncryptedContent: value.item.encrypted_content ?? null,\n },\n },\n })\n }\n delete activeReasoning[value.output_index]\n if (currentReasoningOutputIndex === value.output_index) {\n currentReasoningOutputIndex = null\n }\n }\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index]\n\n if (toolCall != null) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.toolCallId,\n delta: value.delta,\n })\n }\n } else if (isResponseImageGenerationCallPartialImageChunk(value)) {\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: value.item_id,\n toolName: \"image_generation\",\n result: {\n result: value.partial_image_b64,\n } satisfies z.infer<typeof imageGenerationOutputSchema>,\n })\n } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index]\n\n if (toolCall != null) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.toolCallId,\n // The delta is code, which is embedding in a JSON string.\n // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n delta: JSON.stringify(value.delta).slice(1, -1),\n })\n }\n } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index]\n\n if (toolCall != null) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.toolCallId,\n delta: '\"}',\n })\n\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.toolCallId,\n })\n\n // immediately send the tool call after the input end:\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: \"code_interpreter\",\n input: JSON.stringify({\n code: value.code,\n containerId: toolCall.codeInterpreter!.containerId,\n } satisfies z.infer<typeof codeInterpreterInputSchema>),\n providerExecuted: true,\n })\n }\n } else if (isResponseCreatedChunk(value)) {\n responseId = value.response.id\n controller.enqueue({\n type: \"response-metadata\",\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n })\n } else if (isTextDeltaChunk(value)) {\n // Ensure a text-start exists, and normalize deltas to a stable id\n if (!currentTextId) {\n currentTextId = value.item_id\n controller.enqueue({\n type: \"text-start\",\n id: currentTextId,\n providerMetadata: {\n openai: { itemId: value.item_id },\n },\n })\n }\n\n controller.enqueue({\n type: \"text-delta\",\n id: currentTextId,\n delta: value.delta,\n })\n\n if (options.providerOptions?.openai?.logprobs && value.logprobs) {\n logprobs.push(value.logprobs)\n }\n } else if (isResponseReasoningSummaryPartAddedChunk(value)) {\n const activeItem =\n currentReasoningOutputIndex !== null ? activeReasoning[currentReasoningOutputIndex] : null\n\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk.\n if (activeItem && value.summary_index > 0) {\n activeItem.summaryParts.push(value.summary_index)\n\n controller.enqueue({\n type: \"reasoning-start\",\n id: `${activeItem.canonicalId}:${value.summary_index}`,\n providerMetadata: {\n openai: {\n itemId: activeItem.canonicalId,\n reasoningEncryptedContent: activeItem.encryptedContent ?? null,\n },\n },\n })\n }\n } else if (isResponseReasoningSummaryTextDeltaChunk(value)) {\n const activeItem =\n currentReasoningOutputIndex !== null ? activeReasoning[currentReasoningOutputIndex] : null\n\n if (activeItem) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: `${activeItem.canonicalId}:${value.summary_index}`,\n delta: value.delta,\n providerMetadata: {\n openai: {\n itemId: activeItem.canonicalId,\n },\n },\n })\n }\n } else if (isResponseFinishedChunk(value)) {\n finishReason = {\n unified: mapOpenAIResponseFinishReason({\n finishReason: value.response.incomplete_details?.reason,\n hasFunctionCall,\n }),\n raw: value.response.incomplete_details?.reason ?? undefined,\n }\n usage.inputTokens = value.response.usage.input_tokens\n usage.outputTokens = value.response.usage.output_tokens\n usage.totalTokens = value.response.usage.input_tokens + value.response.usage.output_tokens\n usage.reasoningTokens = value.response.usage.output_tokens_details?.reasoning_tokens ?? undefined\n usage.cachedInputTokens = value.response.usage.input_tokens_details?.cached_tokens ?? undefined\n if (typeof value.response.service_tier === \"string\") {\n serviceTier = value.response.service_tier\n }\n } else if (isResponseAnnotationAddedChunk(value)) {\n if (value.annotation.type === \"url_citation\") {\n controller.enqueue({\n type: \"source\",\n sourceType: \"url\",\n id: self.config.generateId?.() ?? generateId(),\n url: value.annotation.url,\n title: value.annotation.title,\n })\n } else if (value.annotation.type === \"file_citation\") {\n controller.enqueue({\n type: \"source\",\n sourceType: \"document\",\n id: self.config.generateId?.() ?? generateId(),\n mediaType: \"text/plain\",\n title: value.annotation.quote ?? value.annotation.filename ?? \"Document\",\n filename: value.annotation.filename ?? value.annotation.file_id,\n })\n }\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: \"error\", error: value })\n }\n },\n\n flush(controller) {\n // Close any dangling text part\n if (currentTextId) {\n controller.enqueue({ type: \"text-end\", id: currentTextId })\n currentTextId = null\n }\n\n const providerMetadata: SharedV3ProviderMetadata = {\n openai: {\n responseId,\n },\n }\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs\n }\n\n if (serviceTier !== undefined) {\n providerMetadata.openai.serviceTier = serviceTier\n }\n\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: {\n inputTokens: {\n total: usage.inputTokens,\n noCache:\n usage.inputTokens != null && usage.cachedInputTokens != null\n ? usage.inputTokens - usage.cachedInputTokens\n : undefined,\n cacheRead: usage.cachedInputTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.outputTokens,\n text: undefined,\n reasoning: usage.reasoningTokens,\n },\n raw: {\n input_tokens: usage.inputTokens,\n output_tokens: usage.outputTokens,\n total_tokens: usage.totalTokens,\n },\n },\n providerMetadata,\n })\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n }\n }\n}\n\nconst usageSchema = z.object({\n input_tokens: z.number(),\n input_tokens_details: z.object({ cached_tokens: z.number().nullish() }).nullish(),\n output_tokens: z.number(),\n output_tokens_details: z.object({ reasoning_tokens: z.number().nullish() }).nullish(),\n})\n\nconst textDeltaChunkSchema = z.object({\n type: z.literal(\"response.output_text.delta\"),\n item_id: z.string(),\n delta: z.string(),\n logprobs: LOGPROBS_SCHEMA.nullish(),\n})\n\nconst errorChunkSchema = z.object({\n type: z.literal(\"error\"),\n code: z.string(),\n message: z.string(),\n param: z.string().nullish(),\n sequence_number: z.number(),\n})\n\nconst responseFinishedChunkSchema = z.object({\n type: z.enum([\"response.completed\", \"response.incomplete\"]),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: usageSchema,\n service_tier: z.string().nullish(),\n }),\n})\n\nconst responseCreatedChunkSchema = z.object({\n type: z.literal(\"response.created\"),\n response: z.object({\n id: z.string(),\n created_at: z.number(),\n model: z.string(),\n service_tier: z.string().nullish(),\n }),\n})\n\nconst responseOutputItemAddedSchema = z.object({\n type: z.literal(\"response.output_item.added\"),\n output_index: z.number(),\n item: z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"message\"),\n id: z.string(),\n }),\n z.object({\n type: z.literal(\"reasoning\"),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal(\"function_call\"),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal(\"web_search_call\"),\n id: z.string(),\n status: z.string(),\n action: z\n .object({\n type: z.literal(\"search\"),\n query: z.string().optional(),\n })\n .nullish(),\n }),\n z.object({\n type: z.literal(\"computer_call\"),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal(\"file_search_call\"),\n id: z.string(),\n }),\n z.object({\n type: z.literal(\"image_generation_call\"),\n id: z.string(),\n }),\n z.object({\n type: z.literal(\"code_interpreter_call\"),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"logs\"), logs: z.string() }),\n z.object({ type: z.literal(\"image\"), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n})\n\nconst responseOutputItemDoneSchema = z.object({\n type: z.literal(\"response.output_item.done\"),\n output_index: z.number(),\n item: z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"message\"),\n id: z.string(),\n }),\n z.object({\n type: z.literal(\"reasoning\"),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal(\"function_call\"),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n status: z.literal(\"completed\"),\n }),\n codeInterpreterCallItem,\n imageGenerationCallItem,\n webSearchCallItem,\n fileSearchCallItem,\n localShellCallItem,\n z.object({\n type: z.literal(\"computer_call\"),\n id: z.string(),\n status: z.literal(\"completed\"),\n }),\n ]),\n})\n\nconst responseFunctionCallArgumentsDeltaSchema = z.object({\n type: z.literal(\"response.function_call_arguments.delta\"),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n})\n\nconst responseImageGenerationCallPartialImageSchema = z.object({\n type: z.literal(\"response.image_generation_call.partial_image\"),\n item_id: z.string(),\n output_index: z.number(),\n partial_image_b64: z.string(),\n})\n\nconst responseCodeInterpreterCallCodeDeltaSchema = z.object({\n type: z.literal(\"response.code_interpreter_call_code.delta\"),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n})\n\nconst responseCodeInterpreterCallCodeDoneSchema = z.object({\n type: z.literal(\"response.code_interpreter_call_code.done\"),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n})\n\nconst responseAnnotationAddedSchema = z.object({\n type: z.literal(\"response.output_text.annotation.added\"),\n annotation: z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"url_citation\"),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal(\"file_citation\"),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n ]),\n})\n\nconst responseReasoningSummaryPartAddedSchema = z.object({\n type: z.literal(\"response.reasoning_summary_part.added\"),\n item_id: z.string(),\n summary_index: z.number(),\n})\n\nconst responseReasoningSummaryTextDeltaSchema = z.object({\n type: z.literal(\"response.reasoning_summary_text.delta\"),\n item_id: z.string(),\n summary_index: z.number(),\n delta: z.string(),\n})\n\nconst openaiResponsesChunkSchema = z.union([\n textDeltaChunkSchema,\n responseFinishedChunkSchema,\n responseCreatedChunkSchema,\n responseOutputItemAddedSchema,\n responseOutputItemDoneSchema,\n responseFunctionCallArgumentsDeltaSchema,\n responseImageGenerationCallPartialImageSchema,\n responseCodeInterpreterCallCodeDeltaSchema,\n responseCodeInterpreterCallCodeDoneSchema,\n responseAnnotationAddedSchema,\n responseReasoningSummaryPartAddedSchema,\n responseReasoningSummaryTextDeltaSchema,\n errorChunkSchema,\n z.object({ type: z.string() }).loose(), // fallback for unknown chunks\n])\n\ntype ExtractByType<T, K extends T extends { type: infer U } ? U : never> = T extends { type: K } ? T : never\n\nfunction isTextDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof textDeltaChunkSchema> {\n return chunk.type === \"response.output_text.delta\"\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> {\n return chunk.type === \"response.output_item.done\"\n}\n\nfunction isResponseOutputItemDoneReasoningChunk(chunk: z.infer<typeof openaiResponsesChunkSchema>): chunk is z.infer<\n typeof responseOutputItemDoneSchema\n> & {\n item: ExtractByType<z.infer<typeof responseOutputItemDoneSchema>[\"item\"], \"reasoning\">\n} {\n return isResponseOutputItemDoneChunk(chunk) && chunk.item.type === \"reasoning\"\n}\n\nfunction isResponseFinishedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseFinishedChunkSchema> {\n return chunk.type === \"response.completed\" || chunk.type === \"response.incomplete\"\n}\n\nfunction isResponseCreatedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCreatedChunkSchema> {\n return chunk.type === \"response.created\"\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseFunctionCallArgumentsDeltaSchema> {\n return chunk.type === \"response.function_call_arguments.delta\"\n}\nfunction isResponseImageGenerationCallPartialImageChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseImageGenerationCallPartialImageSchema> {\n return chunk.type === \"response.image_generation_call.partial_image\"\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCodeInterpreterCallCodeDeltaSchema> {\n return chunk.type === \"response.code_interpreter_call_code.delta\"\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCodeInterpreterCallCodeDoneSchema> {\n return chunk.type === \"response.code_interpreter_call_code.done\"\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> {\n return chunk.type === \"response.output_item.added\"\n}\n\nfunction isResponseOutputItemAddedReasoningChunk(chunk: z.infer<typeof openaiResponsesChunkSchema>): chunk is z.infer<\n typeof responseOutputItemAddedSchema\n> & {\n item: ExtractByType<z.infer<typeof responseOutputItemAddedSchema>[\"item\"], \"reasoning\">\n} {\n return isResponseOutputItemAddedChunk(chunk) && chunk.item.type === \"reasoning\"\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseAnnotationAddedSchema> {\n return chunk.type === \"response.output_text.annotation.added\"\n}\n\nfunction isResponseReasoningSummaryPartAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseReasoningSummaryPartAddedSchema> {\n return chunk.type === \"response.reasoning_summary_part.added\"\n}\n\nfunction isResponseReasoningSummaryTextDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseReasoningSummaryTextDeltaSchema> {\n return chunk.type === \"response.reasoning_summary_text.delta\"\n}\n\nfunction isErrorChunk(chunk: z.infer<typeof openaiResponsesChunkSchema>): chunk is z.infer<typeof errorChunkSchema> {\n return chunk.type === \"error\"\n}\n\ntype ResponsesModelConfig = {\n isReasoningModel: boolean\n systemMessageMode: \"remove\" | \"system\" | \"developer\"\n requiredAutoTruncation: boolean\n supportsFlexProcessing: boolean\n supportsPriorityProcessing: boolean\n}\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n const supportsFlexProcessing =\n modelId.startsWith(\"o3\") ||\n modelId.startsWith(\"o4-mini\") ||\n (modelId.startsWith(\"gpt-5\") && !modelId.startsWith(\"gpt-5-chat\"))\n const supportsPriorityProcessing =\n modelId.startsWith(\"gpt-4\") ||\n modelId.startsWith(\"gpt-5-mini\") ||\n (modelId.startsWith(\"gpt-5\") && !modelId.startsWith(\"gpt-5-nano\") && !modelId.startsWith(\"gpt-5-chat\")) ||\n modelId.startsWith(\"o3\") ||\n modelId.startsWith(\"o4-mini\")\n const defaults = {\n requiredAutoTruncation: false,\n systemMessageMode: \"system\" as const,\n supportsFlexProcessing,\n supportsPriorityProcessing,\n }\n\n // gpt-5-chat models are non-reasoning\n if (modelId.startsWith(\"gpt-5-chat\")) {\n return {\n ...defaults,\n isReasoningModel: false,\n }\n }\n\n // o series reasoning models:\n if (\n modelId.startsWith(\"o\") ||\n modelId.startsWith(\"gpt-5\") ||\n modelId.startsWith(\"codex-\") ||\n modelId.startsWith(\"computer-use\")\n ) {\n if (modelId.startsWith(\"o1-mini\") || modelId.startsWith(\"o1-preview\")) {\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: \"remove\",\n }\n }\n\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: \"developer\",\n }\n }\n\n // gpt models:\n return {\n ...defaults,\n isReasoningModel: false,\n }\n}\n\n// TODO AI SDK 6: use optional here instead of nullish\nconst openaiResponsesProviderOptionsSchema = z.object({\n include: z\n .array(z.enum([\"reasoning.encrypted_content\", \"file_search_call.results\", \"message.output_text.logprobs\"]))\n .nullish(),\n instructions: z.string().nullish(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create\n * @see https://cookbook.openai.com/examples/using_logprobs\n */\n logprobs: z.union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)]).optional(),\n\n /**\n * The maximum number of total calls to built-in tools that can be processed in a response.\n * This maximum number applies across all built-in tool calls, not per individual tool.\n * Any further attempts to call a tool by the model will be ignored.\n */\n maxToolCalls: z.number().nullish(),\n\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n promptCacheKey: z.string().nullish(),\n reasoningEffort: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n safetyIdentifier: z.string().nullish(),\n serviceTier: z.enum([\"auto\", \"flex\", \"priority\"]).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum([\"low\", \"medium\", \"high\"]).nullish(),\n user: z.string().nullish(),\n})\n\nexport type OpenAIResponsesProviderOptions = z.infer<typeof openaiResponsesProviderOptionsSchema>\n",
23
+ "import type { LanguageModelV3 } from \"@ai-sdk/provider\"\nimport { type FetchFunction, withoutTrailingSlash, withUserAgentSuffix } from \"@ai-sdk/provider-utils\"\nimport { OpenAICompatibleChatLanguageModel } from \"./chat/openai-compatible-chat-language-model\"\nimport { OpenAIResponsesLanguageModel } from \"./responses/openai-responses-language-model\"\n\n// Import the version or define it\nconst VERSION = \"0.1.0\"\n\nexport type OpenaiCompatibleModelId = string\n\nexport interface OpenaiCompatibleProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string\n\n /**\n * Base URL for the OpenAI Compatible API calls.\n */\n baseURL?: string\n\n /**\n * Name of the provider.\n */\n name?: string\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>\n\n /**\n * Custom fetch implementation.\n */\n fetch?: FetchFunction\n}\n\nexport interface OpenaiCompatibleProvider {\n (modelId: OpenaiCompatibleModelId): LanguageModelV3\n chat(modelId: OpenaiCompatibleModelId): LanguageModelV3\n responses(modelId: OpenaiCompatibleModelId): LanguageModelV3\n languageModel(modelId: OpenaiCompatibleModelId): LanguageModelV3\n\n // embeddingModel(modelId: any): EmbeddingModelV2\n\n // imageModel(modelId: any): ImageModelV2\n}\n\n/**\n * Create an OpenAI Compatible provider instance.\n */\nexport function createOpenaiCompatible(options: OpenaiCompatibleProviderSettings = {}): OpenaiCompatibleProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? \"https://api.openai.com/v1\")\n\n if (!baseURL) {\n throw new Error(\"baseURL is required\")\n }\n\n // Merge headers: defaults first, then user overrides\n const headers = {\n // Default OpenAI Compatible headers (can be overridden by user)\n ...(options.apiKey && { Authorization: `Bearer ${options.apiKey}` }),\n ...options.headers,\n }\n\n const getHeaders = () => withUserAgentSuffix(headers, `ai-sdk/openai-compatible/${VERSION}`)\n\n const createChatModel = (modelId: OpenaiCompatibleModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `${options.name ?? \"openai-compatible\"}.chat`,\n headers: getHeaders,\n url: ({ path }) => `${baseURL}${path}`,\n fetch: options.fetch,\n })\n }\n\n const createResponsesModel = (modelId: OpenaiCompatibleModelId) => {\n return new OpenAIResponsesLanguageModel(modelId, {\n provider: `${options.name ?? \"openai-compatible\"}.responses`,\n headers: getHeaders,\n url: ({ path }) => `${baseURL}${path}`,\n fetch: options.fetch,\n })\n }\n\n const createLanguageModel = (modelId: OpenaiCompatibleModelId) => createChatModel(modelId)\n\n const provider = function (modelId: OpenaiCompatibleModelId) {\n return createChatModel(modelId)\n }\n\n provider.languageModel = createLanguageModel\n provider.chat = createChatModel\n provider.responses = createResponsesModel\n\n return provider as OpenaiCompatibleProvider\n}\n\n// Default OpenAI Compatible provider instance\nexport const openaiCompatible = createOpenaiCompatible()\n"
24
+ ],
25
+ "mappings": "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",
26
+ "debugId": "1740BCBAA611749364756E2164756E21",
27
+ "names": []
28
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../core/src/database/migration/20260504145000_add_sync_owner.ts"],
4
+ "sourcesContent": [
5
+ "import { Effect } from \"effect\"\nimport type { DatabaseMigration } from \"../migration\"\n\nexport default {\n id: \"20260504145000_add_sync_owner\",\n up(tx) {\n return Effect.gen(function* () {\n yield* tx.run(`ALTER TABLE \\`event_sequence\\` ADD \\`owner_id\\` text;`)\n })\n },\n} satisfies DatabaseMigration.Migration\n"
6
+ ],
7
+ "mappings": ";wHAGA,SAAe,QACb,GAAI,gCACJ,EAAE,CAAC,EAAI,CACL,OAAO,EAAO,IAAI,SAAU,EAAG,CAC7B,MAAO,EAAG,IAAI,mDAAuD,EACtE,EAEL",
8
+ "debugId": "DE63A2997517A60B64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token-error.js", "../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token-io.js", "../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/auth-config.js", "../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/oauth.js", "../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/auth-errors.js", "../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token-util.js"],
4
+ "sourcesContent": [
5
+ "\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\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 __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar token_error_exports = {};\n__export(token_error_exports, {\n VercelOidcTokenError: () => VercelOidcTokenError\n});\nmodule.exports = __toCommonJS(token_error_exports);\nclass VercelOidcTokenError extends Error {\n constructor(message, cause) {\n super(message);\n this.name = \"VercelOidcTokenError\";\n this.cause = cause;\n }\n toString() {\n if (this.cause) {\n return `${this.name}: ${this.message}: ${this.cause}`;\n }\n return `${this.name}: ${this.message}`;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n VercelOidcTokenError\n});\n",
6
+ "\"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);\nvar token_io_exports = {};\n__export(token_io_exports, {\n findRootDir: () => findRootDir,\n getUserDataDir: () => getUserDataDir\n});\nmodule.exports = __toCommonJS(token_io_exports);\nvar import_path = __toESM(require(\"path\"));\nvar import_fs = __toESM(require(\"fs\"));\nvar import_os = __toESM(require(\"os\"));\nvar import_token_error = require(\"./token-error\");\nfunction findRootDir() {\n try {\n let dir = process.cwd();\n while (dir !== import_path.default.dirname(dir)) {\n const pkgPath = import_path.default.join(dir, \".vercel\");\n if (import_fs.default.existsSync(pkgPath)) {\n return dir;\n }\n dir = import_path.default.dirname(dir);\n }\n } catch (e) {\n throw new import_token_error.VercelOidcTokenError(\n \"Token refresh only supported in node server environments\"\n );\n }\n return null;\n}\nfunction getUserDataDir() {\n if (process.env.XDG_DATA_HOME) {\n return process.env.XDG_DATA_HOME;\n }\n switch (import_os.default.platform()) {\n case \"darwin\":\n return import_path.default.join(import_os.default.homedir(), \"Library/Application Support\");\n case \"linux\":\n return import_path.default.join(import_os.default.homedir(), \".local/share\");\n case \"win32\":\n if (process.env.LOCALAPPDATA) {\n return process.env.LOCALAPPDATA;\n }\n return null;\n default:\n return null;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n findRootDir,\n getUserDataDir\n});\n",
7
+ "\"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);\nvar auth_config_exports = {};\n__export(auth_config_exports, {\n isValidAccessToken: () => isValidAccessToken,\n readAuthConfig: () => readAuthConfig,\n writeAuthConfig: () => writeAuthConfig\n});\nmodule.exports = __toCommonJS(auth_config_exports);\nvar fs = __toESM(require(\"fs\"));\nvar path = __toESM(require(\"path\"));\nvar import_token_util = require(\"./token-util\");\nfunction getAuthConfigPath() {\n const dataDir = (0, import_token_util.getVercelDataDir)();\n if (!dataDir) {\n throw new Error(\n `Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`\n );\n }\n return path.join(dataDir, \"auth.json\");\n}\nfunction readAuthConfig() {\n try {\n const authPath = getAuthConfigPath();\n if (!fs.existsSync(authPath)) {\n return null;\n }\n const content = fs.readFileSync(authPath, \"utf8\");\n if (!content) {\n return null;\n }\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n}\nfunction writeAuthConfig(config) {\n const authPath = getAuthConfigPath();\n const authDir = path.dirname(authPath);\n if (!fs.existsSync(authDir)) {\n fs.mkdirSync(authDir, { mode: 504, recursive: true });\n }\n fs.writeFileSync(authPath, JSON.stringify(config, null, 2), { mode: 384 });\n}\nfunction isValidAccessToken(authConfig, expirationBufferMs = 0) {\n if (!authConfig.token)\n return false;\n if (typeof authConfig.expiresAt !== \"number\")\n return true;\n const nowInSeconds = Math.floor(Date.now() / 1e3);\n const bufferInSeconds = expirationBufferMs / 1e3;\n return authConfig.expiresAt >= nowInSeconds + bufferInSeconds;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n isValidAccessToken,\n readAuthConfig,\n writeAuthConfig\n});\n",
8
+ "\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\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 __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar oauth_exports = {};\n__export(oauth_exports, {\n processTokenResponse: () => processTokenResponse,\n refreshTokenRequest: () => refreshTokenRequest\n});\nmodule.exports = __toCommonJS(oauth_exports);\nvar import_os = require(\"os\");\nconst VERCEL_ISSUER = \"https://vercel.com\";\nconst VERCEL_CLI_CLIENT_ID = \"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp\";\nconst userAgent = `@vercel/oidc node-${process.version} ${(0, import_os.platform)()} (${(0, import_os.arch)()}) ${(0, import_os.hostname)()}`;\nlet _tokenEndpoint = null;\nasync function getTokenEndpoint() {\n if (_tokenEndpoint) {\n return _tokenEndpoint;\n }\n const discoveryUrl = `${VERCEL_ISSUER}/.well-known/openid-configuration`;\n const response = await fetch(discoveryUrl, {\n headers: { \"user-agent\": userAgent }\n });\n if (!response.ok) {\n throw new Error(\"Failed to discover OAuth endpoints\");\n }\n const metadata = await response.json();\n if (!metadata || typeof metadata.token_endpoint !== \"string\") {\n throw new Error(\"Invalid OAuth discovery response\");\n }\n const endpoint = metadata.token_endpoint;\n _tokenEndpoint = endpoint;\n return endpoint;\n}\nasync function refreshTokenRequest(options) {\n const tokenEndpoint = await getTokenEndpoint();\n return await fetch(tokenEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"user-agent\": userAgent\n },\n body: new URLSearchParams({\n client_id: VERCEL_CLI_CLIENT_ID,\n grant_type: \"refresh_token\",\n ...options\n })\n });\n}\nasync function processTokenResponse(response) {\n const json = await response.json();\n if (!response.ok) {\n const errorMsg = typeof json === \"object\" && json && \"error\" in json ? String(json.error) : \"Token refresh failed\";\n return [new Error(errorMsg)];\n }\n if (typeof json !== \"object\" || json === null) {\n return [new Error(\"Invalid token response\")];\n }\n if (typeof json.access_token !== \"string\") {\n return [new Error(\"Missing access_token in response\")];\n }\n if (json.token_type !== \"Bearer\") {\n return [new Error(\"Invalid token_type in response\")];\n }\n if (typeof json.expires_in !== \"number\") {\n return [new Error(\"Missing expires_in in response\")];\n }\n return [null, json];\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n processTokenResponse,\n refreshTokenRequest\n});\n",
9
+ "\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\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 __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar auth_errors_exports = {};\n__export(auth_errors_exports, {\n AccessTokenMissingError: () => AccessTokenMissingError,\n RefreshAccessTokenFailedError: () => RefreshAccessTokenFailedError\n});\nmodule.exports = __toCommonJS(auth_errors_exports);\nclass AccessTokenMissingError extends Error {\n constructor() {\n super(\n \"No authentication found. Please log in with the Vercel CLI (vercel login).\"\n );\n this.name = \"AccessTokenMissingError\";\n }\n}\nclass RefreshAccessTokenFailedError extends Error {\n constructor(cause) {\n super(\"Failed to refresh authentication token.\", { cause });\n this.name = \"RefreshAccessTokenFailedError\";\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AccessTokenMissingError,\n RefreshAccessTokenFailedError\n});\n",
10
+ "\"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);\nvar token_util_exports = {};\n__export(token_util_exports, {\n assertVercelOidcTokenResponse: () => assertVercelOidcTokenResponse,\n findProjectInfo: () => findProjectInfo,\n getTokenPayload: () => getTokenPayload,\n getVercelDataDir: () => getVercelDataDir,\n getVercelOidcToken: () => getVercelOidcToken,\n getVercelToken: () => getVercelToken,\n isExpired: () => isExpired,\n loadToken: () => loadToken,\n saveToken: () => saveToken\n});\nmodule.exports = __toCommonJS(token_util_exports);\nvar path = __toESM(require(\"path\"));\nvar fs = __toESM(require(\"fs\"));\nvar import_token_error = require(\"./token-error\");\nvar import_token_io = require(\"./token-io\");\nvar import_auth_config = require(\"./auth-config\");\nvar import_oauth = require(\"./oauth\");\nvar import_auth_errors = require(\"./auth-errors\");\nfunction getVercelDataDir() {\n const vercelFolder = \"com.vercel.cli\";\n const dataDir = (0, import_token_io.getUserDataDir)();\n if (!dataDir) {\n return null;\n }\n return path.join(dataDir, vercelFolder);\n}\nasync function getVercelToken(options) {\n const authConfig = (0, import_auth_config.readAuthConfig)();\n if (!authConfig?.token) {\n throw new import_auth_errors.AccessTokenMissingError();\n }\n if ((0, import_auth_config.isValidAccessToken)(authConfig, options?.expirationBufferMs)) {\n return authConfig.token;\n }\n if (!authConfig.refreshToken) {\n (0, import_auth_config.writeAuthConfig)({});\n throw new import_auth_errors.RefreshAccessTokenFailedError(\"No refresh token available\");\n }\n try {\n const tokenResponse = await (0, import_oauth.refreshTokenRequest)({\n refresh_token: authConfig.refreshToken\n });\n const [tokensError, tokens] = await (0, import_oauth.processTokenResponse)(tokenResponse);\n if (tokensError || !tokens) {\n (0, import_auth_config.writeAuthConfig)({});\n throw new import_auth_errors.RefreshAccessTokenFailedError(tokensError);\n }\n const updatedConfig = {\n token: tokens.access_token,\n expiresAt: Math.floor(Date.now() / 1e3) + tokens.expires_in\n };\n if (tokens.refresh_token) {\n updatedConfig.refreshToken = tokens.refresh_token;\n }\n (0, import_auth_config.writeAuthConfig)(updatedConfig);\n return updatedConfig.token;\n } catch (error) {\n (0, import_auth_config.writeAuthConfig)({});\n if (error instanceof import_auth_errors.AccessTokenMissingError || error instanceof import_auth_errors.RefreshAccessTokenFailedError) {\n throw error;\n }\n throw new import_auth_errors.RefreshAccessTokenFailedError(error);\n }\n}\nasync function getVercelOidcToken(authToken, projectId, teamId) {\n const url = `https://api.vercel.com/v1/projects/${projectId}/token?source=vercel-oidc-refresh${teamId ? `&teamId=${teamId}` : \"\"}`;\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${authToken}`\n }\n });\n if (!res.ok) {\n throw new import_token_error.VercelOidcTokenError(\n `Failed to refresh OIDC token: ${res.statusText}`\n );\n }\n const tokenRes = await res.json();\n assertVercelOidcTokenResponse(tokenRes);\n return tokenRes;\n}\nfunction assertVercelOidcTokenResponse(res) {\n if (!res || typeof res !== \"object\") {\n throw new TypeError(\n \"Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again\"\n );\n }\n if (!(\"token\" in res) || typeof res.token !== \"string\") {\n throw new TypeError(\n \"Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again\"\n );\n }\n}\nfunction findProjectInfo() {\n const dir = (0, import_token_io.findRootDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find project root directory. Have you linked your project with `vc link?`\"\n );\n }\n const prjPath = path.join(dir, \".vercel\", \"project.json\");\n if (!fs.existsSync(prjPath)) {\n throw new import_token_error.VercelOidcTokenError(\n \"project.json not found, have you linked your project with `vc link?`\"\n );\n }\n const prj = JSON.parse(fs.readFileSync(prjPath, \"utf8\"));\n if (typeof prj.projectId !== \"string\" && typeof prj.orgId !== \"string\") {\n throw new TypeError(\n \"Expected a string-valued projectId property. Try running `vc link` to re-link your project.\"\n );\n }\n return { projectId: prj.projectId, teamId: prj.orgId };\n}\nfunction saveToken(token, projectId) {\n const dir = (0, import_token_io.getUserDataDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find user data directory. Please reach out to Vercel support.\"\n );\n }\n const tokenPath = path.join(dir, \"com.vercel.token\", `${projectId}.json`);\n const tokenJson = JSON.stringify(token);\n fs.mkdirSync(path.dirname(tokenPath), { mode: 504, recursive: true });\n fs.writeFileSync(tokenPath, tokenJson);\n fs.chmodSync(tokenPath, 432);\n return;\n}\nfunction loadToken(projectId) {\n const dir = (0, import_token_io.getUserDataDir)();\n if (!dir) {\n throw new import_token_error.VercelOidcTokenError(\n \"Unable to find user data directory. Please reach out to Vercel support.\"\n );\n }\n const tokenPath = path.join(dir, \"com.vercel.token\", `${projectId}.json`);\n if (!fs.existsSync(tokenPath)) {\n return null;\n }\n const token = JSON.parse(fs.readFileSync(tokenPath, \"utf8\"));\n assertVercelOidcTokenResponse(token);\n return token;\n}\nfunction getTokenPayload(token) {\n const tokenParts = token.split(\".\");\n if (tokenParts.length !== 3) {\n throw new import_token_error.VercelOidcTokenError(\n \"Invalid token. Please run `vc env pull` and try again\"\n );\n }\n const base64 = tokenParts[1].replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64.padEnd(\n base64.length + (4 - base64.length % 4) % 4,\n \"=\"\n );\n return JSON.parse(Buffer.from(padded, \"base64\").toString(\"utf8\"));\n}\nfunction isExpired(token, bufferMs = 0) {\n return token.exp * 1e3 < Date.now() + bufferMs;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n assertVercelOidcTokenResponse,\n findProjectInfo,\n getTokenPayload,\n getVercelDataDir,\n getVercelOidcToken,\n getVercelToken,\n isExpired,\n loadToken,\n saveToken\n});\n"
11
+ ],
12
+ "mappings": "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",
13
+ "debugId": "B7969672489A9F7864756E2164756E21",
14
+ "names": []
15
+ }