{"version":3,"sources":["jsdelivr-header.js","/npm/@ai-sdk/deepseek@2.0.29/src/index.ts","/npm/@ai-sdk/deepseek@2.0.29/src/deepseek-provider.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/deepseek-chat-language-model.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/convert-to-deepseek-chat-messages.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/convert-to-deepseek-usage.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/deepseek-chat-api-types.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/deepseek-chat-options.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/deepseek-prepare-tools.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/get-response-metadata.ts","/npm/@ai-sdk/deepseek@2.0.29/src/chat/map-deepseek-finish-reason.ts","/npm/@ai-sdk/deepseek@2.0.29/src/version.ts"],"names":[],"mappings":"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","file":"/npm/@ai-sdk/deepseek@2.0.29/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@ai-sdk/deepseek@2.0.29/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export { createDeepSeek, deepseek } from './deepseek-provider';\nexport type {\n  DeepSeekProvider,\n  DeepSeekProviderSettings,\n} from './deepseek-provider';\nexport { VERSION } from './version';\nexport type {\n  DeepSeekLanguageModelOptions,\n  /** @deprecated Use `DeepSeekLanguageModelOptions` instead. */\n  DeepSeekLanguageModelOptions as DeepSeekChatOptions,\n} from './chat/deepseek-chat-options';\nexport type { DeepSeekErrorData } from './chat/deepseek-chat-api-types';\n","import {\n  LanguageModelV3,\n  NoSuchModelError,\n  ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  loadApiKey,\n  withoutTrailingSlash,\n  withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './chat/deepseek-chat-options';\nimport { DeepSeekChatLanguageModel } from './chat/deepseek-chat-language-model';\nimport { VERSION } from './version';\n\nexport interface DeepSeekProviderSettings {\n  /**\n   * DeepSeek API key.\n   */\n  apiKey?: string;\n\n  /**\n   * Base URL for the API calls.\n   */\n  baseURL?: string;\n\n  /**\n   * Custom headers to include in the requests.\n   */\n  headers?: Record<string, string>;\n\n  /**\n   * Custom fetch implementation. You can use it as a middleware to intercept requests,\n   * or to provide a custom fetch implementation for e.g. testing.\n   */\n  fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV3 {\n  /**\n   * Creates a DeepSeek model for text generation.\n   */\n  (modelId: DeepSeekChatModelId): LanguageModelV3;\n\n  /**\n   * Creates a DeepSeek model for text generation.\n   */\n  languageModel(modelId: DeepSeekChatModelId): LanguageModelV3;\n\n  /**\n   * Creates a DeepSeek chat model for text generation.\n   */\n  chat(modelId: DeepSeekChatModelId): LanguageModelV3;\n\n  /**\n   * @deprecated Use `embeddingModel` instead.\n   */\n  textEmbeddingModel(modelId: string): never;\n}\n\nexport function createDeepSeek(\n  options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n  const baseURL = withoutTrailingSlash(\n    options.baseURL ?? 'https://api.deepseek.com',\n  );\n\n  const getHeaders = () =>\n    withUserAgentSuffix(\n      {\n        Authorization: `Bearer ${loadApiKey({\n          apiKey: options.apiKey,\n          environmentVariableName: 'DEEPSEEK_API_KEY',\n          description: 'DeepSeek API key',\n        })}`,\n        ...options.headers,\n      },\n      `ai-sdk/deepseek/${VERSION}`,\n    );\n\n  const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n    return new DeepSeekChatLanguageModel(modelId, {\n      provider: `deepseek.chat`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n  };\n\n  const provider = (modelId: DeepSeekChatModelId) =>\n    createLanguageModel(modelId);\n\n  provider.specificationVersion = 'v3' as const;\n  provider.languageModel = createLanguageModel;\n  provider.chat = createLanguageModel;\n\n  provider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n  };\n  provider.textEmbeddingModel = provider.embeddingModel;\n  provider.imageModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n  };\n\n  return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import {\n  APICallError,\n  InvalidResponseDataError,\n  LanguageModelV3,\n  LanguageModelV3CallOptions,\n  LanguageModelV3Content,\n  LanguageModelV3FinishReason,\n  LanguageModelV3GenerateResult,\n  LanguageModelV3StreamPart,\n  LanguageModelV3StreamResult,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonErrorResponseHandler,\n  createJsonResponseHandler,\n  FetchFunction,\n  generateId,\n  InferSchema,\n  isParsableJson,\n  parseProviderOptions,\n  ParseResult,\n  postJsonToApi,\n  ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { convertToDeepSeekChatMessages } from './convert-to-deepseek-chat-messages';\nimport { convertDeepSeekUsage } from './convert-to-deepseek-usage';\nimport {\n  deepseekChatChunkSchema,\n  deepseekChatResponseSchema,\n  DeepSeekChatTokenUsage,\n  deepSeekErrorSchema,\n} from './deepseek-chat-api-types';\nimport {\n  DeepSeekChatModelId,\n  deepseekLanguageModelOptions,\n} from './deepseek-chat-options';\nimport { prepareTools } from './deepseek-prepare-tools';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapDeepSeekFinishReason } from './map-deepseek-finish-reason';\n\nexport type DeepSeekChatConfig = {\n  provider: string;\n  headers: () => Record<string, string | undefined>;\n  url: (options: { modelId: string; path: string }) => string;\n  fetch?: FetchFunction;\n};\n\nexport class DeepSeekChatLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  readonly modelId: DeepSeekChatModelId;\n  readonly supportedUrls = {};\n\n  private readonly config: DeepSeekChatConfig;\n  private readonly failedResponseHandler: ResponseHandler<APICallError>;\n\n  constructor(modelId: DeepSeekChatModelId, config: DeepSeekChatConfig) {\n    this.modelId = modelId;\n    this.config = config;\n\n    this.failedResponseHandler = createJsonErrorResponseHandler({\n      errorSchema: deepSeekErrorSchema,\n      errorToMessage: (error: InferSchema<typeof deepSeekErrorSchema>) =>\n        error.error.message,\n    });\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  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 deepseekOptions =\n      (await parseProviderOptions({\n        provider: this.providerOptionsName,\n        providerOptions,\n        schema: deepseekLanguageModelOptions,\n      })) ?? {};\n\n    const { messages, warnings } = convertToDeepSeekChatMessages({\n      prompt,\n      responseFormat,\n    });\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    const {\n      tools: deepseekTools,\n      toolChoice: deepseekToolChoices,\n      toolWarnings,\n    } = prepareTools({\n      tools,\n      toolChoice,\n    });\n\n    return {\n      args: {\n        model: this.modelId,\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' ? { type: 'json_object' } : undefined,\n        stop: stopSequences,\n        messages,\n        tools: deepseekTools,\n        tool_choice: deepseekToolChoices,\n        thinking:\n          deepseekOptions.thinking?.type != null\n            ? { type: deepseekOptions.thinking.type }\n            : undefined,\n      },\n      warnings: [...warnings, ...toolWarnings],\n    };\n  }\n\n  async doGenerate(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const { args, warnings } = await this.getArgs({ ...options });\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(\n        deepseekChatResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const choice = responseBody.choices[0];\n    const content: Array<LanguageModelV3Content> = [];\n\n    // reasoning content (before text):\n    const reasoning = choice.message.reasoning_content;\n    if (reasoning != null && reasoning.length > 0) {\n      content.push({\n        type: 'reasoning',\n        text: reasoning,\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        });\n      }\n    }\n\n    // text content:\n    const text = choice.message.content;\n    if (text != null && text.length > 0) {\n      content.push({ type: 'text', text });\n    }\n\n    return {\n      content,\n      finishReason: {\n        unified: mapDeepSeekFinishReason(choice.finish_reason),\n        raw: choice.finish_reason ?? undefined,\n      },\n      usage: convertDeepSeekUsage(responseBody.usage),\n      providerMetadata: {\n        [this.providerOptionsName]: {\n          promptCacheHitTokens: responseBody.usage?.prompt_cache_hit_tokens,\n          promptCacheMissTokens: responseBody.usage?.prompt_cache_miss_tokens,\n        },\n      },\n      request: { body: args },\n      response: {\n        ...getResponseMetadata(responseBody),\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      warnings,\n    };\n  }\n\n  async doStream(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const { args, warnings } = await this.getArgs({ ...options });\n\n    const body = {\n      ...args,\n      stream: true,\n      stream_options: { include_usage: true },\n    };\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(\n        deepseekChatChunkSchema,\n      ),\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: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    let usage: DeepSeekChatTokenUsage | undefined = undefined;\n    let isFirstChunk = true;\n    const providerOptionsName = this.providerOptionsName;\n    let isActiveReasoning = false;\n    let isActiveText = false;\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<InferSchema<typeof deepseekChatChunkSchema>>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\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 = { unified: 'error', raw: undefined };\n              controller.enqueue({ type: 'error', error: chunk.error });\n              return;\n            }\n            const value = chunk.value;\n\n            // handle error chunks:\n            if ('error' in value) {\n              finishReason = { unified: 'error', raw: undefined };\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              usage = value.usage;\n            }\n\n            const choice = value.choices[0];\n\n            if (choice?.finish_reason != null) {\n              finishReason = {\n                unified: mapDeepSeekFinishReason(choice.finish_reason),\n                raw: choice.finish_reason,\n              };\n            }\n\n            if (choice?.delta == null) {\n              return;\n            }\n\n            const delta = choice.delta;\n\n            // enqueue reasoning before text deltas:\n            const reasoningContent = delta.reasoning_content;\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 (!isActiveText) {\n                controller.enqueue({ type: 'text-start', id: 'txt-0' });\n                isActiveText = true;\n              }\n\n              // end reasoning when text starts:\n              if (isActiveReasoning) {\n                controller.enqueue({\n                  type: 'reasoning-end',\n                  id: 'reasoning-0',\n                });\n                isActiveReasoning = false;\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              // end reasoning when tool calls start:\n              if (isActiveReasoning) {\n                controller.enqueue({\n                  type: 'reasoning-end',\n                  id: 'reasoning-0',\n                });\n                isActiveReasoning = false;\n              }\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 (\n                    toolCall.function?.name != null &&\n                    toolCall.function?.arguments != null\n                  ) {\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                      });\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 +=\n                    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                  });\n                  toolCall.hasFinished = true;\n                }\n              }\n            }\n          },\n\n          flush(controller) {\n            if (isActiveReasoning) {\n              controller.enqueue({ type: 'reasoning-end', id: 'reasoning-0' });\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(\n              toolCall => !toolCall.hasFinished,\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              });\n            }\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage: convertDeepSeekUsage(usage),\n              providerMetadata: {\n                [providerOptionsName]: {\n                  promptCacheHitTokens:\n                    usage?.prompt_cache_hit_tokens ?? undefined,\n                  promptCacheMissTokens:\n                    usage?.prompt_cache_miss_tokens ?? undefined,\n                },\n              },\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n","import {\n  LanguageModelV3CallOptions,\n  LanguageModelV3Prompt,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport { DeepSeekChatPrompt } from './deepseek-chat-api-types';\n\nexport function convertToDeepSeekChatMessages({\n  prompt,\n  responseFormat,\n}: {\n  prompt: LanguageModelV3Prompt;\n  responseFormat: LanguageModelV3CallOptions['responseFormat'];\n}): {\n  messages: DeepSeekChatPrompt;\n  warnings: Array<SharedV3Warning>;\n} {\n  const messages: DeepSeekChatPrompt = [];\n  const warnings: Array<SharedV3Warning> = [];\n\n  // Inject system message if response format is JSON\n  if (responseFormat?.type === 'json') {\n    if (responseFormat.schema == null) {\n      messages.push({\n        role: 'system',\n        content: 'Return JSON.',\n      });\n    } else {\n      messages.push({\n        role: 'system',\n        content:\n          'Return JSON that conforms to the following schema: ' +\n          JSON.stringify(responseFormat.schema),\n      });\n      warnings.push({\n        type: 'compatibility',\n        feature: 'responseFormat JSON schema',\n        details: 'JSON response schema is injected into the system message.',\n      });\n    }\n  }\n\n  // TODO use findLastIndex once we use ES2023\n  let lastUserMessageIndex = -1;\n  for (let i = prompt.length - 1; i >= 0; i--) {\n    if (prompt[i].role === 'user') {\n      lastUserMessageIndex = i;\n      break;\n    }\n  }\n\n  let index = -1;\n  for (const { role, content } of prompt) {\n    index++;\n\n    switch (role) {\n      case 'system': {\n        messages.push({ role: 'system', content });\n        break;\n      }\n\n      case 'user': {\n        let userContent = '';\n        for (const part of content) {\n          if (part.type === 'text') {\n            userContent += part.text;\n          } else {\n            warnings.push({\n              type: 'unsupported',\n              feature: `user message part type: ${part.type}`,\n            });\n          }\n        }\n\n        messages.push({\n          role: 'user',\n          content: userContent,\n        });\n\n        break;\n      }\n      case 'assistant': {\n        let text = '';\n        let reasoning: string | undefined;\n\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          switch (part.type) {\n            case 'text': {\n              text += part.text;\n              break;\n            }\n            case 'reasoning': {\n              if (index <= lastUserMessageIndex) {\n                break;\n              }\n\n              if (reasoning == null) {\n                reasoning = part.text;\n              } else {\n                reasoning += part.text;\n              }\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              });\n              break;\n            }\n          }\n        }\n\n        messages.push({\n          role: 'assistant',\n          content: text,\n          reasoning_content: reasoning,\n          tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\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          messages.push({\n            role: 'tool',\n            tool_call_id: toolResponse.toolCallId,\n            content: contentValue,\n          });\n        }\n        break;\n      }\n\n      default: {\n        warnings.push({\n          type: 'unsupported',\n          feature: `message role: ${role}`,\n        });\n        break;\n      }\n    }\n  }\n\n  return { messages, warnings };\n}\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport function convertDeepSeekUsage(\n  usage:\n    | {\n        prompt_tokens?: number | null | undefined;\n        completion_tokens?: number | null | undefined;\n        prompt_cache_hit_tokens?: number | null | undefined;\n        completion_tokens_details?:\n          | {\n              reasoning_tokens?: number | null | undefined;\n            }\n          | null\n          | undefined;\n      }\n    | undefined\n    | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const promptTokens = usage.prompt_tokens ?? 0;\n  const completionTokens = usage.completion_tokens ?? 0;\n  const cacheReadTokens = usage.prompt_cache_hit_tokens ?? 0;\n  const reasoningTokens =\n    usage.completion_tokens_details?.reasoning_tokens ?? 0;\n\n  return {\n    inputTokens: {\n      total: promptTokens,\n      noCache: promptTokens - cacheReadTokens,\n      cacheRead: cacheReadTokens,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: completionTokens,\n      text: completionTokens - reasoningTokens,\n      reasoning: reasoningTokens,\n    },\n    raw: usage,\n  };\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type DeepSeekChatPrompt = Array<DeepSeekMessage>;\n\nexport type DeepSeekMessage =\n  | DeepSeekSystemMessage\n  | DeepSeekUserMessage\n  | DeepSeekAssistantMessage\n  | DeepSeekToolMessage;\n\nexport interface DeepSeekSystemMessage {\n  role: 'system';\n  content: string;\n}\n\nexport interface DeepSeekUserMessage {\n  role: 'user';\n  content: string;\n}\n\nexport interface DeepSeekAssistantMessage {\n  role: 'assistant';\n  content?: string | null;\n  reasoning_content?: string;\n  tool_calls?: Array<DeepSeekMessageToolCall>;\n}\n\nexport interface DeepSeekMessageToolCall {\n  type: 'function';\n  id: string;\n  function: {\n    arguments: string;\n    name: string;\n  };\n}\n\nexport interface DeepSeekToolMessage {\n  role: 'tool';\n  content: string;\n  tool_call_id: string;\n}\n\nexport interface DeepSeekFunctionTool {\n  type: 'function';\n  function: {\n    name: string;\n    description: string | undefined;\n    parameters: unknown;\n    strict?: boolean;\n  };\n}\n\nexport type DeepSeekToolChoice =\n  | { type: 'function'; function: { name: string } }\n  | 'auto'\n  | 'none'\n  | 'required'\n  | undefined;\n\nconst tokenUsageSchema = z\n  .object({\n    prompt_tokens: z.number().nullish(),\n    completion_tokens: z.number().nullish(),\n    prompt_cache_hit_tokens: z.number().nullish(),\n    prompt_cache_miss_tokens: z.number().nullish(),\n    total_tokens: z.number().nullish(),\n    completion_tokens_details: z\n      .object({\n        reasoning_tokens: z.number().nullish(),\n      })\n      .nullish(),\n  })\n  .nullish();\n\nexport type DeepSeekChatTokenUsage = z.infer<typeof tokenUsageSchema>;\n\nexport const deepSeekErrorSchema = z.object({\n  error: z.object({\n    message: z.string(),\n    type: z.string().nullish(),\n    param: z.any().nullish(),\n    code: z.union([z.string(), z.number()]).nullish(),\n  }),\n});\n\nexport type DeepSeekErrorData = z.infer<typeof deepSeekErrorSchema>;\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\nexport const deepseekChatResponseSchema = 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        reasoning_content: 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: tokenUsageSchema,\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\nexport const deepseekChatChunkSchema = lazySchema(() =>\n  zodSchema(\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                reasoning_content: 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: tokenUsageSchema,\n      }),\n      deepSeekErrorSchema,\n    ]),\n  ),\n);\n","import { z } from 'zod/v4';\n\n// https://api-docs.deepseek.com/quick_start/pricing\nexport type DeepSeekChatModelId =\n  | 'deepseek-chat'\n  | 'deepseek-reasoner'\n  | (string & {});\n\nexport const deepseekLanguageModelOptions = z.object({\n  /**\n   * Type of thinking to use. Defaults to `enabled`.\n   */\n  thinking: z\n    .object({\n      type: z.enum(['enabled', 'disabled']).optional(),\n    })\n    .optional(),\n});\n\nexport type DeepSeekLanguageModelOptions = z.infer<\n  typeof deepseekLanguageModelOptions\n>;\n","import { LanguageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n  DeepSeekFunctionTool,\n  DeepSeekToolChoice,\n} from './deepseek-chat-api-types';\n\nexport function prepareTools({\n  tools,\n  toolChoice,\n}: {\n  tools: LanguageModelV3CallOptions['tools'];\n  toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n  tools: undefined | Array<DeepSeekFunctionTool>;\n  toolChoice: DeepSeekToolChoice;\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 deepseekTools: Array<DeepSeekFunctionTool> = [];\n\n  for (const tool of tools) {\n    if (tool.type === 'provider') {\n      toolWarnings.push({\n        type: 'unsupported',\n        feature: `provider-defined tool ${tool.id}`,\n      });\n    } else {\n      deepseekTools.push({\n        type: 'function',\n        function: {\n          name: tool.name,\n          description: tool.description,\n          parameters: tool.inputSchema,\n          ...(tool.strict != null ? { strict: tool.strict } : {}),\n        },\n      });\n    }\n  }\n\n  if (toolChoice == null) {\n    return { tools: deepseekTools, 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: deepseekTools, toolChoice: type, toolWarnings };\n    case 'tool':\n      return {\n        tools: deepseekTools,\n        toolChoice: {\n          type: 'function',\n          function: { name: toolChoice.toolName },\n        },\n        toolWarnings,\n      };\n    default: {\n      return {\n        tools: deepseekTools,\n        toolChoice: undefined,\n        toolWarnings: [\n          ...toolWarnings,\n          {\n            type: 'unsupported',\n            feature: `tool choice type: ${type}`,\n          },\n        ],\n      };\n    }\n  }\n}\n","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","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapDeepSeekFinishReason(\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 'tool_calls':\n      return 'tool-calls';\n    case 'insufficient_system_resource':\n      return 'error';\n    default:\n      return 'other';\n  }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n"]}