@ai-sdk/moonshotai 3.0.48 → 3.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ai-sdk/moonshotai
2
2
 
3
+ ## 3.0.49
4
+
5
+ ### Patch Changes
6
+
7
+ - 0096850: fix(deepseek): preserve reasoning streams across empty tool-call deltas
8
+ - Updated dependencies [5ec21a6]
9
+ - Updated dependencies [7469a3b]
10
+ - Updated dependencies [813bb36]
11
+ - Updated dependencies [c43e4b7]
12
+ - @ai-sdk/provider@4.0.14
13
+ - @ai-sdk/provider-utils@5.0.40
14
+
3
15
  ## 3.0.48
4
16
 
5
17
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1305,7 +1305,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
1305
1305
  delta: delta.content
1306
1306
  });
1307
1307
  }
1308
- if (delta.tool_calls != null) {
1308
+ if (delta.tool_calls != null && delta.tool_calls.length > 0) {
1309
1309
  if (isActiveReasoning) {
1310
1310
  controller.enqueue({
1311
1311
  type: "reasoning-end",
@@ -1361,7 +1361,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
1361
1361
  };
1362
1362
 
1363
1363
  // src/version.ts
1364
- var VERSION = true ? "3.0.48" : "0.0.0-test";
1364
+ var VERSION = true ? "3.0.49" : "0.0.0-test";
1365
1365
 
1366
1366
  // src/moonshotai-provider.ts
1367
1367
  var defaultBaseURL = "https://api.moonshot.ai/v1";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-to-moonshotai-chat-messages.ts","../src/moonshotai-chat-options.ts","../src/moonshotai-prepare-tools.ts","../src/normalize-json-schema-for-mfjs.ts","../src/convert-moonshotai-chat-usage.ts","../src/map-moonshotai-finish-reason.ts","../src/moonshotai-chat-api-types.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type { MoonshotAIErrorData } from './moonshotai-chat-api-types';\n\nexport interface MoonshotAIProviderSettings {\n /**\n * Moonshot API key. Default value is taken from the `MOONSHOT_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\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 MoonshotAIProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n}\n\nconst defaultBaseURL = 'https://api.moonshot.ai/v1';\n\nexport function getModelStructuredOutputSupport(\n modelId: MoonshotAIChatModelId,\n): boolean {\n return (\n modelId.startsWith('kimi-k') ||\n modelId === 'moonshot-v1-8k' ||\n modelId === 'moonshot-v1-32k' ||\n modelId === 'moonshot-v1-128k' ||\n modelId === 'moonshot-v1-auto' ||\n modelId === 'moonshot-v1-8k-vision-preview' ||\n modelId === 'moonshot-v1-32k-vision-preview' ||\n modelId === 'moonshot-v1-128k-vision-preview'\n );\n}\n\nexport function createMoonshotAI(\n options: MoonshotAIProviderSettings = {},\n): MoonshotAIProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'MOONSHOT_API_KEY',\n description: 'Moonshot API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/moonshotai/${VERSION}`,\n );\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n provider: 'moonshotai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n includeUsage: true,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const moonshotai = createMoonshotAI();\n","import type {\n APICallError,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createLanguageModelResponseMetadata as getResponseMetadata,\n createProviderStreamError,\n generateId,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n StreamingToolCallTracker,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type InferSchema,\n type ParseResult,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { convertToMoonshotAIChatMessages } from './convert-to-moonshotai-chat-messages';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { mapMoonshotAIFinishReason } from './map-moonshotai-finish-reason';\nimport {\n moonshotAIChatChunkSchema,\n moonshotAIChatResponseSchema,\n moonshotAIErrorSchema,\n type MoonshotAIChatLogprob,\n type MoonshotAIChatTokenUsage,\n} from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n moonshotaiLanguageModelOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nexport type MoonshotAIChatConfig = {\n provider: string;\n headers?: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n includeUsage?: boolean;\n supportsStructuredOutputs?: boolean;\n};\n\nfunction createMoonshotAIStreamError(\n error: { message: string; type?: string | null; code?: string | null },\n data: unknown,\n) {\n return createProviderStreamError({\n message: error.message,\n type: error.type ?? undefined,\n code: error.code ?? undefined,\n ...getMoonshotAIStreamErrorMetadata(error.type),\n data,\n });\n}\n\nfunction getMoonshotAIStreamErrorMetadata(type?: string | null): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (type) {\n case 'rate_limit_exceeded':\n case 'rate_limit_error':\n return { statusCode: 429, isRetryable: true };\n case 'server_error':\n case 'api_error':\n case 'internal_server_error':\n return { statusCode: 500, isRetryable: true };\n case 'overloaded_error':\n case 'service_unavailable':\n return { statusCode: 503, isRetryable: true };\n case 'timeout':\n case 'timeout_error':\n return { statusCode: 504, isRetryable: true };\n case 'authentication_error':\n case 'invalid_api_key':\n return { statusCode: 401, isRetryable: false };\n case 'permission_error':\n return { statusCode: 403, isRetryable: false };\n case 'not_found_error':\n case 'model_not_found':\n return { statusCode: 404, isRetryable: false };\n case 'bad_request':\n case 'context_length_exceeded':\n case 'invalid_request_error':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n\nexport class MoonshotAIChatLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: MoonshotAIChatModelId;\n\n // Moonshot AI does not fetch external URLs; the AI SDK downloads and\n // inlines URL file parts instead. ms:// file references from the Moonshot\n // Files API are passed through natively.\n readonly supportedUrls = {\n 'image/*': [/^ms:\\/\\//],\n 'video/*': [/^ms:\\/\\//],\n };\n\n private readonly config: MoonshotAIChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n\n static [WORKFLOW_SERIALIZE](model: MoonshotAIChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: MoonshotAIChatModelId;\n config: MoonshotAIChatConfig;\n }) {\n return new MoonshotAIChatLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: MoonshotAIChatModelId, config: MoonshotAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n\n this.failedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: moonshotAIErrorSchema,\n errorToMessage: error => 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 reasoning,\n providerOptions,\n stopSequences,\n responseFormat,\n seed,\n toolChoice,\n tools,\n }: LanguageModelV4CallOptions) {\n const moonshotOptions =\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: moonshotaiLanguageModelOptions,\n })) ?? {};\n\n const allWarnings: SharedV4Warning[] = [];\n if (topK != null) {\n allWarnings.push({ type: 'unsupported', feature: 'topK' });\n }\n if (seed != null) {\n allWarnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n const supportsSamplingOptions = !isMoonshotAIKimiModel(this.modelId);\n\n if (!supportsSamplingOptions && temperature != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `temperature is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && topP != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'topP',\n details: `topP is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && frequencyPenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'frequencyPenalty',\n details: `frequencyPenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && presencePenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'presencePenalty',\n details: `presencePenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n\n const {\n tools: moonshotTools,\n toolChoice: moonshotToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n\n const modelFamily = getMoonshotAIModelFamily(this.modelId);\n const requestedThinking = moonshotOptions.thinking;\n const requestedReasoningEffort = moonshotOptions.reasoningEffort;\n const preserveReasoning = moonshotOptions.reasoningHistory === 'preserved';\n\n if (requestedThinking?.budgetTokens != null) {\n allWarnings.push({\n type: 'deprecated',\n setting: 'providerOptions.moonshotai.thinking.budgetTokens',\n message:\n 'Moonshot Chat Completions does not support budget_tokens. Remove budgetTokens; the option has been omitted.',\n });\n }\n\n let thinking: { type: 'enabled' | 'disabled'; keep?: 'all' } | undefined;\n let reasoningEffort: 'low' | 'high' | 'max' | undefined;\n\n const warnUnsupportedReasoningEffort = () => {\n if (requestedReasoningEffort != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoningEffort',\n details: `reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${this.modelId}\".`,\n });\n }\n };\n\n switch (modelFamily) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details:\n 'Kimi K3 always reasons and does not accept the thinking field. The option has been omitted.',\n });\n }\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details: 'Kimi K3 reasoning cannot be disabled.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled' || reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature:\n requestedThinking?.type === 'disabled'\n ? 'thinking.type \"disabled\"'\n : 'reasoning \"none\"',\n details: 'Kimi K2.7 thinking cannot be disabled.',\n });\n } else if (requestedThinking?.type === 'enabled') {\n thinking = { type: 'enabled' };\n }\n break;\n }\n case 'kimi-k2.6': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null || preserveReasoning) {\n thinking = {\n type: thinkingType ?? 'enabled',\n ...(preserveReasoning ? { keep: 'all' as const } : {}),\n };\n }\n break;\n }\n case 'kimi-k2.5': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null) {\n thinking = { type: thinkingType };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details: `thinking is not supported by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (isCustomReasoning(reasoning) && reasoning !== 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: `reasoning is not supported by model \"${this.modelId}\".`,\n });\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'unknown': {\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details:\n 'Use providerOptions.moonshotai.thinking to control thinking on custom models.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n }\n\n let response_format: Record<string, unknown> | undefined;\n if (responseFormat?.type === 'json') {\n if (\n this.config.supportsStructuredOutputs === true &&\n responseFormat.schema != null\n ) {\n // kimi-k2.5 produces nonsensical output when the top-level `$schema`\n // keyword injected by the AI SDK is present, even though it otherwise\n // supports structured outputs. Strip it from the schema sent to\n // Moonshot; the full original schema is still used for result\n // validation.\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.schema;\n response_format = {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n strict: moonshotOptions.strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n };\n } else {\n response_format = { type: 'json_object' };\n }\n }\n\n const { messages, warnings: messageWarnings } =\n await convertToMoonshotAIChatMessages({\n modelId: this.modelId,\n prompt,\n providerOptionsName: this.providerOptionsName,\n responseFormat: response_format,\n });\n allWarnings.push(...messageWarnings);\n\n return {\n args: {\n model: this.modelId,\n ...((moonshotOptions.logprobs === true ||\n moonshotOptions.topLogprobs != null) && { logprobs: true }),\n ...(moonshotOptions.topLogprobs != null && {\n top_logprobs: moonshotOptions.topLogprobs,\n }),\n max_completion_tokens: maxOutputTokens,\n temperature: supportsSamplingOptions ? temperature : undefined,\n top_p: supportsSamplingOptions ? topP : undefined,\n frequency_penalty: supportsSamplingOptions\n ? frequencyPenalty\n : undefined,\n presence_penalty: supportsSamplingOptions ? presencePenalty : undefined,\n response_format,\n stop: stopSequences,\n messages,\n tools: moonshotTools,\n tool_choice: moonshotToolChoice,\n ...(moonshotOptions.prediction != null && {\n prediction: moonshotOptions.prediction,\n }),\n ...(thinking != null ? { thinking } : {}),\n ...(reasoningEffort != null && {\n reasoning_effort: reasoningEffort,\n }),\n ...(moonshotOptions.promptCacheKey != null && {\n prompt_cache_key: moonshotOptions.promptCacheKey,\n }),\n ...(moonshotOptions.safetyIdentifier != null && {\n safety_identifier: moonshotOptions.safetyIdentifier,\n }),\n },\n warnings: [...allWarnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\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 moonshotAIChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = responseBody.choices[0];\n const content: Array<LanguageModelV4Content> = [];\n\n // reasoning content (before text):\n const reasoning = choice.message.reasoning_content;\n if (reasoning != null && reasoning.length > 0) {\n content.push({ type: 'reasoning', text: reasoning });\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: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: convertMoonshotAIChatUsage(responseBody.usage),\n providerMetadata: {\n [this.providerOptionsName]: {\n ...(choice.logprobs != null && { logprobs: choice.logprobs }),\n ...(responseBody.object != null && {\n responseObject: responseBody.object,\n }),\n ...(choice.index != null && { choiceIndex: choice.index }),\n ...(choice.message.role != null && {\n messageRole: choice.message.role,\n }),\n ...(choice.message.tool_calls != null && {\n toolCallTypes: choice.message.tool_calls\n .map(toolCall => toolCall.type)\n .filter(type => type != null),\n }),\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const body = {\n ...args,\n stream: true,\n ...(this.config.includeUsage && {\n stream_options: { include_usage: true },\n }),\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 moonshotAIChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let toolCallTracker: StreamingToolCallTracker;\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let topLevelUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n let choiceUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n const providerOptionsName = this.providerOptionsName;\n let isFirstChunk = true;\n let isActiveReasoning = false;\n let isActiveText = false;\n let responseObject: 'chat.completion.chunk' | undefined;\n let choiceIndex: number | undefined;\n let messageRole: 'assistant' | undefined;\n const toolCallTypes = new Map<number, 'function'>();\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<InferSchema<typeof moonshotAIChatChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n toolCallTracker = new StreamingToolCallTracker(controller, {\n generateId,\n });\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({\n type: 'error',\n error: createMoonshotAIStreamError(value.error, value),\n });\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 topLevelUsage = value.usage;\n }\n\n if (value.object != null) {\n responseObject = value.object;\n }\n\n const choice = value.choices[0];\n\n if (choice?.usage != null) {\n choiceUsage = choice.usage;\n }\n\n if (choice?.index != null) {\n choiceIndex = choice.index;\n }\n\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\n }\n\n if (choice?.logprobs?.content != null) {\n contentLogprobs.push(...choice.logprobs.content);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.role != null) {\n messageRole = delta.role;\n }\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 [index, toolCallDelta] of delta.tool_calls.entries()) {\n const toolCallIndex = toolCallDelta.index ?? index;\n if (toolCallDelta.type != null) {\n toolCallTypes.set(toolCallIndex, toolCallDelta.type);\n }\n toolCallTracker.processDelta({\n ...toolCallDelta,\n index: toolCallIndex,\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 toolCallTracker.flush();\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertMoonshotAIChatUsage(topLevelUsage ?? choiceUsage),\n providerMetadata: {\n [providerOptionsName]: {\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n ...(responseObject != null && { responseObject }),\n ...(choiceIndex != null && { choiceIndex }),\n ...(messageRole != null && { messageRole }),\n ...(toolCallTypes.size > 0 && {\n toolCallTypes: [...toolCallTypes.entries()]\n .sort(([left], [right]) => left - right)\n .map(([, type]) => type),\n }),\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InvalidPromptError,\n UnsupportedFunctionalityError,\n type LanguageModelV4FilePart,\n type LanguageModelV4Prompt,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n convertBase64ToUint8Array,\n convertToBase64,\n getTopLevelMediaType,\n parseProviderOptions,\n resolveProviderReference,\n resolveFullMediaType,\n} from '@ai-sdk/provider-utils';\n\nimport type { MoonshotAIMessages } from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n moonshotaiAllMessageProviderOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nconst supportedImageMediaTypes = [\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/bmp',\n 'image/heic',\n 'image/heif',\n] as const;\n\nconst supportedVideoMediaTypes = [\n 'video/mp4',\n 'video/mpeg',\n 'video/mov',\n 'video/avi',\n 'video/x-flv',\n 'video/mpg',\n 'video/webm',\n 'video/wmv',\n 'video/3gpp',\n] as const;\n\nfunction formatMediaUrl({\n part,\n supportedMediaTypes,\n topLevelMediaType,\n}: {\n part: LanguageModelV4FilePart;\n supportedMediaTypes: readonly string[];\n topLevelMediaType: 'image' | 'video';\n}): string {\n if (part.data.type !== 'url' && part.data.type !== 'data') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part data type ${part.data.type}`,\n });\n }\n\n const mediaType =\n part.data.type === 'url' ? part.mediaType : resolveFullMediaType({ part });\n\n if (\n !supportedMediaTypes.includes(mediaType) &&\n !(\n part.data.type === 'url' &&\n (mediaType === topLevelMediaType ||\n mediaType === `${topLevelMediaType}/*`)\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${mediaType}`,\n });\n }\n\n return part.data.type === 'url'\n ? part.data.url.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data.data)}`;\n}\n\n// Moonshot AI chat completions accepts text, image_url, and video_url content\n// parts only. Anything else (audio, PDF, other file types) throws here rather\n// than being rejected by the API with a 400.\nexport async function convertToMoonshotAIChatMessages({\n modelId,\n prompt,\n providerOptionsName = 'moonshotai',\n responseFormat,\n}: {\n modelId?: MoonshotAIChatModelId;\n prompt: LanguageModelV4Prompt;\n providerOptionsName?: string;\n responseFormat?: Record<string, unknown>;\n}): Promise<{\n messages: MoonshotAIMessages;\n warnings: Array<SharedV4Warning>;\n}> {\n const messages: MoonshotAIMessages = [];\n const warnings: Array<SharedV4Warning> = [];\n const modelFamily =\n modelId == null ? 'unknown' : getMoonshotAIModelFamily(modelId);\n\n for (const [index, { role, content, providerOptions }] of prompt.entries()) {\n const moonshotMessageOptions = await parseProviderOptions({\n provider: providerOptionsName,\n providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (moonshotMessageOptions?.partial === true && role !== 'assistant') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (moonshotMessageOptions?.tools != null && role !== 'system') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n switch (role) {\n case 'system': {\n if (moonshotMessageOptions?.tools?.length) {\n if (content.length > 0) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'A Moonshot dynamic-tool system message must use empty content because the API forbids content alongside tools.',\n });\n }\n\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'unsupported',\n feature: `dynamic tool loading for model \"${modelId}\"`,\n details:\n 'Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted.',\n });\n break;\n }\n\n const { tools, toolWarnings } = prepareTools({\n modelId: modelId ?? 'custom-model',\n tools: moonshotMessageOptions.tools,\n });\n warnings.push(...toolWarnings);\n messages.push({ role: 'system', tools: tools ?? [] });\n break;\n }\n\n messages.push({\n role: 'system',\n content,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\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 ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n const topLevel = getTopLevelMediaType(part.mediaType);\n\n switch (part.data.type) {\n case 'reference': {\n if (topLevel !== 'image' && topLevel !== 'video') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n\n const reference = resolveProviderReference({\n reference: part.data.reference,\n provider: 'moonshotai',\n });\n\n if (!reference.startsWith('ms://')) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Moonshot file provider references without an ms:// URL',\n });\n }\n\n return topLevel === 'image'\n ? {\n type: 'image_url' as const,\n image_url: { url: reference },\n }\n : {\n type: 'video_url' as const,\n video_url: { url: reference },\n };\n }\n case 'text': {\n if (topLevel === 'text') {\n return {\n type: 'text' as const,\n text: part.data.text,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n case 'url':\n case 'data': {\n if (topLevel === 'image') {\n return {\n type: 'image_url' as const,\n image_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedImageMediaTypes,\n topLevelMediaType: 'image',\n }),\n },\n };\n }\n\n if (topLevel === 'video') {\n return {\n type: 'video_url' as const,\n video_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedVideoMediaTypes,\n topLevelMediaType: 'video',\n }),\n },\n };\n }\n\n if (topLevel === 'text') {\n const textContent =\n part.data.type === 'url'\n ? part.data.url.toString()\n : typeof part.data.data === 'string'\n ? new TextDecoder().decode(\n convertBase64ToUint8Array(part.data.data),\n )\n : new TextDecoder().decode(part.data.data);\n\n return {\n type: 'text' as const,\n text: textContent,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }\n }),\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n if (moonshotMessageOptions?.partial === true) {\n if (index !== prompt.length - 1) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (responseFormat?.type === 'json_object') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n }\n\n let text = '';\n let reasoning = '';\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 reasoning += 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 });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? text || null : text,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n ...(moonshotMessageOptions?.partial === true && {\n partial: true,\n }),\n ...(reasoning.length > 0 ? { reasoning_content: reasoning } : {}),\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n if (moonshotMessageOptions?.name != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'message name on tool messages',\n });\n }\n\n for (const toolResponse of content) {\n if (toolResponse.type === 'tool-approval-response') {\n continue;\n }\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 call 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 const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","import type { LanguageModelV4FunctionTool } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIChatModelId =\n | 'moonshot-v1-auto'\n | 'moonshot-v1-8k'\n | 'moonshot-v1-32k'\n | 'moonshot-v1-128k'\n | 'moonshot-v1-8k-vision-preview'\n | 'moonshot-v1-32k-vision-preview'\n | 'moonshot-v1-128k-vision-preview'\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7-code'\n | 'kimi-k2.7-code-highspeed'\n | 'kimi-k3'\n | (string & {});\n\nexport function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport type MoonshotAIModelFamily =\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7'\n | 'kimi-k3'\n | 'moonshot-v1'\n | 'unknown';\n\nexport function getMoonshotAIModelFamily(\n modelId: MoonshotAIChatModelId,\n): MoonshotAIModelFamily {\n if (modelId === 'kimi-k2.5') return 'kimi-k2.5';\n if (modelId === 'kimi-k2.6') return 'kimi-k2.6';\n if (modelId === 'kimi-k2.7-code' || modelId === 'kimi-k2.7-code-highspeed') {\n return 'kimi-k2.7';\n }\n if (modelId === 'kimi-k3') return 'kimi-k3';\n if (modelId.startsWith('moonshot-v1-')) return 'moonshot-v1';\n return 'unknown';\n}\n\nexport const moonshotaiLanguageModelOptions = z.object({\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Whether to return log probabilities for generated tokens.\n */\n logprobs: z.boolean().optional(),\n\n /**\n * Number of most likely tokens to return at each token position.\n *\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs: z.number().int().min(0).max(20).optional(),\n\n /**\n * Reasoning effort for Kimi K3. Supports `low`, `high`, and `max`;\n * defaults to `max`.\n */\n reasoningEffort: z.enum(['low', 'high', 'max']).optional(),\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction: z\n .object({\n type: z.literal('content'),\n content: z.union([\n z.string(),\n z.array(z.object({ type: z.literal('text'), text: z.string() })),\n ]),\n })\n .optional(),\n\n /**\n * Thinking configuration for Kimi K2.x models. Kimi K2.5 and K2.6 support\n * enabling or disabling thinking. Kimi K2.7 Code always has thinking\n * enabled.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n /**\n * @deprecated Moonshot Chat Completions does not support thinking\n * budgets. Accepted for backwards compatibility, then omitted with a\n * warning.\n */\n budgetTokens: z.number().int().min(1024).optional(),\n })\n .optional(),\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory: z.enum(['disabled', 'interleaved', 'preserved']).optional(),\n\n /**\n * Used to cache responses for similar requests to optimize cache hit rates.\n * Typically a session or task id.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * A stable identifier used to help Moonshot detect users violating usage\n * policies. Recommended to hash the username or email address.\n */\n safetyIdentifier: z.string().optional(),\n});\n\nexport type MoonshotAILanguageModelOptions = {\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema?: boolean;\n\n /** Whether to return log probabilities for generated tokens. */\n logprobs?: boolean;\n\n /**\n * Number of most likely tokens to return at each token position.\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs?: number;\n\n /** Reasoning effort for Kimi K3. */\n reasoningEffort?: 'low' | 'high' | 'max';\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction?: {\n type: 'content';\n content: string | Array<{ type: 'text'; text: string }>;\n };\n\n /** Controls thinking on Kimi K2.5 and K2.6. K2.7 is always enabled. */\n thinking?: {\n type?: 'enabled' | 'disabled';\n\n /**\n * @deprecated Moonshot Chat Completions does not support thinking budgets.\n * This value is ignored with a warning.\n */\n budgetTokens?: number;\n };\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory?: 'disabled' | 'interleaved' | 'preserved';\n promptCacheKey?: string;\n safetyIdentifier?: string;\n};\n\nexport const moonshotaiMessageProviderOptions = z.object({\n /**\n * The name of the participant represented by the message.\n *\n * Supported on system, user, and assistant messages.\n */\n name: z.string().optional(),\n});\n\nexport type MoonshotAIMessageProviderOptions = z.infer<\n typeof moonshotaiMessageProviderOptions\n>;\n\nexport const moonshotaiAssistantMessageProviderOptions =\n moonshotaiMessageProviderOptions.extend({\n /**\n * Whether the assistant message content is a partial response that Moonshot\n * should continue. Only supported on the final assistant message and cannot\n * be combined with JSON object response format.\n */\n partial: z.literal(true).optional(),\n });\n\nexport type MoonshotAIAssistantMessageProviderOptions = z.infer<\n typeof moonshotaiAssistantMessageProviderOptions\n>;\n\nconst moonshotaiDynamicToolSchema = z.object({\n type: z.literal('function'),\n name: z.string(),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()),\n strict: z.boolean().optional(),\n});\n\nexport const moonshotaiAllMessageProviderOptions =\n moonshotaiAssistantMessageProviderOptions.extend({\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools: z.array(moonshotaiDynamicToolSchema).optional(),\n });\n\nexport type MoonshotAISystemMessageProviderOptions =\n MoonshotAIMessageProviderOptions & {\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools?: Array<\n Pick<\n LanguageModelV4FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema' | 'strict'\n >\n >;\n };\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport type { MoonshotAIFunctionTool } from './moonshotai-chat-api-types';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nexport function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n modelId: MoonshotAIChatModelId;\n}): {\n tools: undefined | Array<MoonshotAIFunctionTool>;\n toolChoice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: SharedV4Warning[];\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: SharedV4Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const moonshotTools: Array<MoonshotAIFunctionTool> = [];\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 moonshotTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: normalizeJsonSchemaForMFJS(tool.inputSchema),\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: moonshotTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'required':\n if (\n modelId === 'kimi-k2.6' ||\n modelId === 'kimi-k2.7-code' ||\n modelId === 'kimi-k2.7-code-highspeed'\n ) {\n toolWarnings.push({\n type: 'unsupported',\n feature: `tool choice \"required\" for model \"${modelId}\"`,\n details:\n 'Moonshot AI rejects required tool choice for this model. The setting has been omitted; use \"auto\" or select a specific tool instead.',\n });\n return {\n tools: moonshotTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: moonshotTools,\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","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport { isRecord } from '@ai-sdk/provider-utils';\n\nconst SCHEMA_ARRAY_KEYS = ['allOf', 'anyOf', 'oneOf', 'prefixItems'] as const;\nconst SCHEMA_MAP_KEYS = [\n 'properties',\n 'patternProperties',\n '$defs',\n 'dependentSchemas',\n] as const;\nconst SCHEMA_SINGLE_KEYS = [\n 'additionalProperties',\n 'propertyNames',\n 'items',\n 'contains',\n 'not',\n 'if',\n 'then',\n 'else',\n] as const;\n\n/**\n * Normalizes a JSON Schema to the subset Moonshot's MFJS validator accepts:\n * `object` root required, tuple `items` become `prefixItems`, and `type` next\n * to `anyOf` moves into the branches. Everything else passes through. The\n * full original schema is still used for AI SDK result validation.\n */\nexport function normalizeJsonSchemaForMFJS(schema: unknown): unknown {\n return normalizeDefinition(schema, true);\n}\n\nfunction normalizeDefinition(definition: unknown, isRoot: boolean): unknown {\n if (typeof definition === 'boolean' || !isRecord(definition)) {\n if (isRoot) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n return definition;\n }\n\n if (isRoot && definition.type !== 'object') {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n\n const result: Record<string, unknown> = { ...definition };\n\n // Existing prefixItems stay first (they are positional).\n if (Array.isArray(result.items)) {\n const tuple = result.items;\n result.prefixItems = [\n ...(Array.isArray(result.prefixItems) ? result.prefixItems : []),\n ...tuple.map(item => normalizeDefinition(item, false)),\n ];\n delete result.items;\n } else if (isRecord(result.items)) {\n result.items = normalizeDefinition(result.items, false);\n }\n\n // MFJS requires type to live inside anyOf items.\n if (typeof result.type === 'string' && Array.isArray(result.anyOf)) {\n const parentType = result.type;\n delete result.type;\n result.anyOf = result.anyOf.map(branch =>\n isRecord(branch) && branch.type == null\n ? { type: parentType, ...branch }\n : branch,\n );\n }\n\n for (const key of SCHEMA_ARRAY_KEYS) {\n const value = result[key];\n if (Array.isArray(value)) {\n result[key] = value.map(item => normalizeDefinition(item, false));\n }\n }\n\n for (const key of SCHEMA_MAP_KEYS) {\n const value = result[key];\n if (isRecord(value)) {\n result[key] = Object.fromEntries(\n Object.entries(value).map(([k, v]) => [\n k,\n normalizeDefinition(v, false),\n ]),\n );\n }\n }\n\n for (const key of SCHEMA_SINGLE_KEYS) {\n const value = result[key];\n if (isRecord(value) || typeof value === 'boolean') {\n result[key] = normalizeDefinition(value, false);\n }\n }\n\n return result;\n}\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { createNullLanguageModelUsage } from '@ai-sdk/provider-utils';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n cached_tokens?: number | null;\n prompt_tokens_details?: {\n cached_tokens?: number | null;\n } | null;\n completion_tokens_details?: {\n reasoning_tokens?: number | null;\n } | null;\n }\n | undefined\n | null,\n): LanguageModelV4Usage {\n if (usage == null) {\n return createNullLanguageModelUsage();\n }\n\n const promptTokens = usage.prompt_tokens ?? 0;\n const completionTokens = usage.completion_tokens ?? 0;\n\n const cacheReadTokens =\n usage.cached_tokens ?? usage.prompt_tokens_details?.cached_tokens ?? 0;\n\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: Math.max(0, completionTokens - reasoningTokens),\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapMoonshotAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['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","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIMessages = Array<MoonshotAIMessage>;\n\nexport type MoonshotAIMessage =\n | MoonshotAISystemMessage\n | MoonshotAIUserMessage\n | MoonshotAIAssistantMessage\n | MoonshotAIToolMessage;\n\nexport type MoonshotAISystemMessage =\n | {\n role: 'system';\n content: string;\n name?: string;\n }\n | {\n role: 'system';\n tools: Array<MoonshotAIFunctionTool>;\n };\n\nexport interface MoonshotAIFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n strict?: boolean;\n };\n}\n\nexport interface MoonshotAIUserMessage {\n role: 'user';\n content: string | Array<MoonshotAIContentPart>;\n name?: string;\n}\n\nexport type MoonshotAIContentPart =\n | MoonshotAIContentPartText\n | MoonshotAIContentPartImage\n | MoonshotAIContentPartVideo;\n\nexport interface MoonshotAIContentPartText {\n type: 'text';\n text: string;\n}\n\nexport interface MoonshotAIContentPartImage {\n type: 'image_url';\n image_url: { url: string };\n}\n\nexport interface MoonshotAIContentPartVideo {\n type: 'video_url';\n video_url: { url: string };\n}\n\nexport interface MoonshotAIAssistantMessage {\n role: 'assistant';\n content?: string | null;\n name?: string;\n partial?: true;\n reasoning_content?: string;\n tool_calls?: Array<MoonshotAIMessageToolCall>;\n}\n\nexport interface MoonshotAIMessageToolCall {\n type: 'function';\n id: string;\n function: {\n arguments: string;\n name: string;\n };\n}\n\nexport interface MoonshotAIToolMessage {\n role: 'tool';\n content: string;\n tool_call_id: string;\n}\n\n// Schemas below are limited versions focused on what the implementation\n// needs. This limits breakages when the API changes and increases efficiency.\n\n// Loose, nested objects included: the parsed value is returned as `usage.raw`.\nconst tokenUsageSchema = z\n .looseObject({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .looseObject({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .looseObject({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatTokenUsage = z.infer<typeof tokenUsageSchema>;\n\nexport const moonshotAIErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotAIErrorSchema>;\n\nconst moonshotAIChatLogprobSchema = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n }),\n ),\n});\n\nconst moonshotAIChatLogprobsSchema = z\n .object({\n content: z.array(moonshotAIChatLogprobSchema).nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nexport const moonshotAIChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('chat.completion').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\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 type: z.literal('function').nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\n});\n\nexport const moonshotAIChatChunkSchema = 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 object: z.literal('chat.completion.chunk').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\n delta: z\n .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 index: z.number().nullish(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n usage: tokenUsageSchema,\n }),\n ),\n usage: tokenUsageSchema,\n }),\n moonshotAIErrorSchema,\n ]),\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"],"mappings":"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","names":["parseProviderOptions","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","z","parseProviderOptions","_a","_b"]}
1
+ {"version":3,"sources":["../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-to-moonshotai-chat-messages.ts","../src/moonshotai-chat-options.ts","../src/moonshotai-prepare-tools.ts","../src/normalize-json-schema-for-mfjs.ts","../src/convert-moonshotai-chat-usage.ts","../src/map-moonshotai-finish-reason.ts","../src/moonshotai-chat-api-types.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type { MoonshotAIErrorData } from './moonshotai-chat-api-types';\n\nexport interface MoonshotAIProviderSettings {\n /**\n * Moonshot API key. Default value is taken from the `MOONSHOT_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\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 MoonshotAIProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n}\n\nconst defaultBaseURL = 'https://api.moonshot.ai/v1';\n\nexport function getModelStructuredOutputSupport(\n modelId: MoonshotAIChatModelId,\n): boolean {\n return (\n modelId.startsWith('kimi-k') ||\n modelId === 'moonshot-v1-8k' ||\n modelId === 'moonshot-v1-32k' ||\n modelId === 'moonshot-v1-128k' ||\n modelId === 'moonshot-v1-auto' ||\n modelId === 'moonshot-v1-8k-vision-preview' ||\n modelId === 'moonshot-v1-32k-vision-preview' ||\n modelId === 'moonshot-v1-128k-vision-preview'\n );\n}\n\nexport function createMoonshotAI(\n options: MoonshotAIProviderSettings = {},\n): MoonshotAIProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'MOONSHOT_API_KEY',\n description: 'Moonshot API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/moonshotai/${VERSION}`,\n );\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n provider: 'moonshotai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n includeUsage: true,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const moonshotai = createMoonshotAI();\n","import type {\n APICallError,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createLanguageModelResponseMetadata as getResponseMetadata,\n createProviderStreamError,\n generateId,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n StreamingToolCallTracker,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type InferSchema,\n type ParseResult,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { convertToMoonshotAIChatMessages } from './convert-to-moonshotai-chat-messages';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { mapMoonshotAIFinishReason } from './map-moonshotai-finish-reason';\nimport {\n moonshotAIChatChunkSchema,\n moonshotAIChatResponseSchema,\n moonshotAIErrorSchema,\n type MoonshotAIChatLogprob,\n type MoonshotAIChatTokenUsage,\n} from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n moonshotaiLanguageModelOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nexport type MoonshotAIChatConfig = {\n provider: string;\n headers?: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n includeUsage?: boolean;\n supportsStructuredOutputs?: boolean;\n};\n\nfunction createMoonshotAIStreamError(\n error: { message: string; type?: string | null; code?: string | null },\n data: unknown,\n) {\n return createProviderStreamError({\n message: error.message,\n type: error.type ?? undefined,\n code: error.code ?? undefined,\n ...getMoonshotAIStreamErrorMetadata(error.type),\n data,\n });\n}\n\nfunction getMoonshotAIStreamErrorMetadata(type?: string | null): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (type) {\n case 'rate_limit_exceeded':\n case 'rate_limit_error':\n return { statusCode: 429, isRetryable: true };\n case 'server_error':\n case 'api_error':\n case 'internal_server_error':\n return { statusCode: 500, isRetryable: true };\n case 'overloaded_error':\n case 'service_unavailable':\n return { statusCode: 503, isRetryable: true };\n case 'timeout':\n case 'timeout_error':\n return { statusCode: 504, isRetryable: true };\n case 'authentication_error':\n case 'invalid_api_key':\n return { statusCode: 401, isRetryable: false };\n case 'permission_error':\n return { statusCode: 403, isRetryable: false };\n case 'not_found_error':\n case 'model_not_found':\n return { statusCode: 404, isRetryable: false };\n case 'bad_request':\n case 'context_length_exceeded':\n case 'invalid_request_error':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n\nexport class MoonshotAIChatLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: MoonshotAIChatModelId;\n\n // Moonshot AI does not fetch external URLs; the AI SDK downloads and\n // inlines URL file parts instead. ms:// file references from the Moonshot\n // Files API are passed through natively.\n readonly supportedUrls = {\n 'image/*': [/^ms:\\/\\//],\n 'video/*': [/^ms:\\/\\//],\n };\n\n private readonly config: MoonshotAIChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n\n static [WORKFLOW_SERIALIZE](model: MoonshotAIChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: MoonshotAIChatModelId;\n config: MoonshotAIChatConfig;\n }) {\n return new MoonshotAIChatLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: MoonshotAIChatModelId, config: MoonshotAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n\n this.failedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: moonshotAIErrorSchema,\n errorToMessage: error => 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 reasoning,\n providerOptions,\n stopSequences,\n responseFormat,\n seed,\n toolChoice,\n tools,\n }: LanguageModelV4CallOptions) {\n const moonshotOptions =\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: moonshotaiLanguageModelOptions,\n })) ?? {};\n\n const allWarnings: SharedV4Warning[] = [];\n if (topK != null) {\n allWarnings.push({ type: 'unsupported', feature: 'topK' });\n }\n if (seed != null) {\n allWarnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n const supportsSamplingOptions = !isMoonshotAIKimiModel(this.modelId);\n\n if (!supportsSamplingOptions && temperature != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `temperature is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && topP != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'topP',\n details: `topP is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && frequencyPenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'frequencyPenalty',\n details: `frequencyPenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && presencePenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'presencePenalty',\n details: `presencePenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n\n const {\n tools: moonshotTools,\n toolChoice: moonshotToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n\n const modelFamily = getMoonshotAIModelFamily(this.modelId);\n const requestedThinking = moonshotOptions.thinking;\n const requestedReasoningEffort = moonshotOptions.reasoningEffort;\n const preserveReasoning = moonshotOptions.reasoningHistory === 'preserved';\n\n if (requestedThinking?.budgetTokens != null) {\n allWarnings.push({\n type: 'deprecated',\n setting: 'providerOptions.moonshotai.thinking.budgetTokens',\n message:\n 'Moonshot Chat Completions does not support budget_tokens. Remove budgetTokens; the option has been omitted.',\n });\n }\n\n let thinking: { type: 'enabled' | 'disabled'; keep?: 'all' } | undefined;\n let reasoningEffort: 'low' | 'high' | 'max' | undefined;\n\n const warnUnsupportedReasoningEffort = () => {\n if (requestedReasoningEffort != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoningEffort',\n details: `reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${this.modelId}\".`,\n });\n }\n };\n\n switch (modelFamily) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details:\n 'Kimi K3 always reasons and does not accept the thinking field. The option has been omitted.',\n });\n }\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details: 'Kimi K3 reasoning cannot be disabled.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled' || reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature:\n requestedThinking?.type === 'disabled'\n ? 'thinking.type \"disabled\"'\n : 'reasoning \"none\"',\n details: 'Kimi K2.7 thinking cannot be disabled.',\n });\n } else if (requestedThinking?.type === 'enabled') {\n thinking = { type: 'enabled' };\n }\n break;\n }\n case 'kimi-k2.6': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null || preserveReasoning) {\n thinking = {\n type: thinkingType ?? 'enabled',\n ...(preserveReasoning ? { keep: 'all' as const } : {}),\n };\n }\n break;\n }\n case 'kimi-k2.5': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null) {\n thinking = { type: thinkingType };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details: `thinking is not supported by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (isCustomReasoning(reasoning) && reasoning !== 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: `reasoning is not supported by model \"${this.modelId}\".`,\n });\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'unknown': {\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details:\n 'Use providerOptions.moonshotai.thinking to control thinking on custom models.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n }\n\n let response_format: Record<string, unknown> | undefined;\n if (responseFormat?.type === 'json') {\n if (\n this.config.supportsStructuredOutputs === true &&\n responseFormat.schema != null\n ) {\n // kimi-k2.5 produces nonsensical output when the top-level `$schema`\n // keyword injected by the AI SDK is present, even though it otherwise\n // supports structured outputs. Strip it from the schema sent to\n // Moonshot; the full original schema is still used for result\n // validation.\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.schema;\n response_format = {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n strict: moonshotOptions.strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n };\n } else {\n response_format = { type: 'json_object' };\n }\n }\n\n const { messages, warnings: messageWarnings } =\n await convertToMoonshotAIChatMessages({\n modelId: this.modelId,\n prompt,\n providerOptionsName: this.providerOptionsName,\n responseFormat: response_format,\n });\n allWarnings.push(...messageWarnings);\n\n return {\n args: {\n model: this.modelId,\n ...((moonshotOptions.logprobs === true ||\n moonshotOptions.topLogprobs != null) && { logprobs: true }),\n ...(moonshotOptions.topLogprobs != null && {\n top_logprobs: moonshotOptions.topLogprobs,\n }),\n max_completion_tokens: maxOutputTokens,\n temperature: supportsSamplingOptions ? temperature : undefined,\n top_p: supportsSamplingOptions ? topP : undefined,\n frequency_penalty: supportsSamplingOptions\n ? frequencyPenalty\n : undefined,\n presence_penalty: supportsSamplingOptions ? presencePenalty : undefined,\n response_format,\n stop: stopSequences,\n messages,\n tools: moonshotTools,\n tool_choice: moonshotToolChoice,\n ...(moonshotOptions.prediction != null && {\n prediction: moonshotOptions.prediction,\n }),\n ...(thinking != null ? { thinking } : {}),\n ...(reasoningEffort != null && {\n reasoning_effort: reasoningEffort,\n }),\n ...(moonshotOptions.promptCacheKey != null && {\n prompt_cache_key: moonshotOptions.promptCacheKey,\n }),\n ...(moonshotOptions.safetyIdentifier != null && {\n safety_identifier: moonshotOptions.safetyIdentifier,\n }),\n },\n warnings: [...allWarnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\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 moonshotAIChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = responseBody.choices[0];\n const content: Array<LanguageModelV4Content> = [];\n\n // reasoning content (before text):\n const reasoning = choice.message.reasoning_content;\n if (reasoning != null && reasoning.length > 0) {\n content.push({ type: 'reasoning', text: reasoning });\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: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: convertMoonshotAIChatUsage(responseBody.usage),\n providerMetadata: {\n [this.providerOptionsName]: {\n ...(choice.logprobs != null && { logprobs: choice.logprobs }),\n ...(responseBody.object != null && {\n responseObject: responseBody.object,\n }),\n ...(choice.index != null && { choiceIndex: choice.index }),\n ...(choice.message.role != null && {\n messageRole: choice.message.role,\n }),\n ...(choice.message.tool_calls != null && {\n toolCallTypes: choice.message.tool_calls\n .map(toolCall => toolCall.type)\n .filter(type => type != null),\n }),\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const body = {\n ...args,\n stream: true,\n ...(this.config.includeUsage && {\n stream_options: { include_usage: true },\n }),\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 moonshotAIChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let toolCallTracker: StreamingToolCallTracker;\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let topLevelUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n let choiceUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n const providerOptionsName = this.providerOptionsName;\n let isFirstChunk = true;\n let isActiveReasoning = false;\n let isActiveText = false;\n let responseObject: 'chat.completion.chunk' | undefined;\n let choiceIndex: number | undefined;\n let messageRole: 'assistant' | undefined;\n const toolCallTypes = new Map<number, 'function'>();\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<InferSchema<typeof moonshotAIChatChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n toolCallTracker = new StreamingToolCallTracker(controller, {\n generateId,\n });\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({\n type: 'error',\n error: createMoonshotAIStreamError(value.error, value),\n });\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 topLevelUsage = value.usage;\n }\n\n if (value.object != null) {\n responseObject = value.object;\n }\n\n const choice = value.choices[0];\n\n if (choice?.usage != null) {\n choiceUsage = choice.usage;\n }\n\n if (choice?.index != null) {\n choiceIndex = choice.index;\n }\n\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\n }\n\n if (choice?.logprobs?.content != null) {\n contentLogprobs.push(...choice.logprobs.content);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.role != null) {\n messageRole = delta.role;\n }\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 && delta.tool_calls.length > 0) {\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 [index, toolCallDelta] of delta.tool_calls.entries()) {\n const toolCallIndex = toolCallDelta.index ?? index;\n if (toolCallDelta.type != null) {\n toolCallTypes.set(toolCallIndex, toolCallDelta.type);\n }\n toolCallTracker.processDelta({\n ...toolCallDelta,\n index: toolCallIndex,\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 toolCallTracker.flush();\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertMoonshotAIChatUsage(topLevelUsage ?? choiceUsage),\n providerMetadata: {\n [providerOptionsName]: {\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n ...(responseObject != null && { responseObject }),\n ...(choiceIndex != null && { choiceIndex }),\n ...(messageRole != null && { messageRole }),\n ...(toolCallTypes.size > 0 && {\n toolCallTypes: [...toolCallTypes.entries()]\n .sort(([left], [right]) => left - right)\n .map(([, type]) => type),\n }),\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InvalidPromptError,\n UnsupportedFunctionalityError,\n type LanguageModelV4FilePart,\n type LanguageModelV4Prompt,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n convertBase64ToUint8Array,\n convertToBase64,\n getTopLevelMediaType,\n parseProviderOptions,\n resolveProviderReference,\n resolveFullMediaType,\n} from '@ai-sdk/provider-utils';\n\nimport type { MoonshotAIMessages } from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n moonshotaiAllMessageProviderOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nconst supportedImageMediaTypes = [\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/bmp',\n 'image/heic',\n 'image/heif',\n] as const;\n\nconst supportedVideoMediaTypes = [\n 'video/mp4',\n 'video/mpeg',\n 'video/mov',\n 'video/avi',\n 'video/x-flv',\n 'video/mpg',\n 'video/webm',\n 'video/wmv',\n 'video/3gpp',\n] as const;\n\nfunction formatMediaUrl({\n part,\n supportedMediaTypes,\n topLevelMediaType,\n}: {\n part: LanguageModelV4FilePart;\n supportedMediaTypes: readonly string[];\n topLevelMediaType: 'image' | 'video';\n}): string {\n if (part.data.type !== 'url' && part.data.type !== 'data') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part data type ${part.data.type}`,\n });\n }\n\n const mediaType =\n part.data.type === 'url' ? part.mediaType : resolveFullMediaType({ part });\n\n if (\n !supportedMediaTypes.includes(mediaType) &&\n !(\n part.data.type === 'url' &&\n (mediaType === topLevelMediaType ||\n mediaType === `${topLevelMediaType}/*`)\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${mediaType}`,\n });\n }\n\n return part.data.type === 'url'\n ? part.data.url.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data.data)}`;\n}\n\n// Moonshot AI chat completions accepts text, image_url, and video_url content\n// parts only. Anything else (audio, PDF, other file types) throws here rather\n// than being rejected by the API with a 400.\nexport async function convertToMoonshotAIChatMessages({\n modelId,\n prompt,\n providerOptionsName = 'moonshotai',\n responseFormat,\n}: {\n modelId?: MoonshotAIChatModelId;\n prompt: LanguageModelV4Prompt;\n providerOptionsName?: string;\n responseFormat?: Record<string, unknown>;\n}): Promise<{\n messages: MoonshotAIMessages;\n warnings: Array<SharedV4Warning>;\n}> {\n const messages: MoonshotAIMessages = [];\n const warnings: Array<SharedV4Warning> = [];\n const modelFamily =\n modelId == null ? 'unknown' : getMoonshotAIModelFamily(modelId);\n\n for (const [index, { role, content, providerOptions }] of prompt.entries()) {\n const moonshotMessageOptions = await parseProviderOptions({\n provider: providerOptionsName,\n providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (moonshotMessageOptions?.partial === true && role !== 'assistant') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (moonshotMessageOptions?.tools != null && role !== 'system') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n switch (role) {\n case 'system': {\n if (moonshotMessageOptions?.tools?.length) {\n if (content.length > 0) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'A Moonshot dynamic-tool system message must use empty content because the API forbids content alongside tools.',\n });\n }\n\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'unsupported',\n feature: `dynamic tool loading for model \"${modelId}\"`,\n details:\n 'Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted.',\n });\n break;\n }\n\n const { tools, toolWarnings } = prepareTools({\n modelId: modelId ?? 'custom-model',\n tools: moonshotMessageOptions.tools,\n });\n warnings.push(...toolWarnings);\n messages.push({ role: 'system', tools: tools ?? [] });\n break;\n }\n\n messages.push({\n role: 'system',\n content,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\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 ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n const topLevel = getTopLevelMediaType(part.mediaType);\n\n switch (part.data.type) {\n case 'reference': {\n if (topLevel !== 'image' && topLevel !== 'video') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n\n const reference = resolveProviderReference({\n reference: part.data.reference,\n provider: 'moonshotai',\n });\n\n if (!reference.startsWith('ms://')) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Moonshot file provider references without an ms:// URL',\n });\n }\n\n return topLevel === 'image'\n ? {\n type: 'image_url' as const,\n image_url: { url: reference },\n }\n : {\n type: 'video_url' as const,\n video_url: { url: reference },\n };\n }\n case 'text': {\n if (topLevel === 'text') {\n return {\n type: 'text' as const,\n text: part.data.text,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n case 'url':\n case 'data': {\n if (topLevel === 'image') {\n return {\n type: 'image_url' as const,\n image_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedImageMediaTypes,\n topLevelMediaType: 'image',\n }),\n },\n };\n }\n\n if (topLevel === 'video') {\n return {\n type: 'video_url' as const,\n video_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedVideoMediaTypes,\n topLevelMediaType: 'video',\n }),\n },\n };\n }\n\n if (topLevel === 'text') {\n const textContent =\n part.data.type === 'url'\n ? part.data.url.toString()\n : typeof part.data.data === 'string'\n ? new TextDecoder().decode(\n convertBase64ToUint8Array(part.data.data),\n )\n : new TextDecoder().decode(part.data.data);\n\n return {\n type: 'text' as const,\n text: textContent,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }\n }),\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n if (moonshotMessageOptions?.partial === true) {\n if (index !== prompt.length - 1) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (responseFormat?.type === 'json_object') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n }\n\n let text = '';\n let reasoning = '';\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 reasoning += 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 });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? text || null : text,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n ...(moonshotMessageOptions?.partial === true && {\n partial: true,\n }),\n ...(reasoning.length > 0 ? { reasoning_content: reasoning } : {}),\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n if (moonshotMessageOptions?.name != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'message name on tool messages',\n });\n }\n\n for (const toolResponse of content) {\n if (toolResponse.type === 'tool-approval-response') {\n continue;\n }\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 call 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 const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","import type { LanguageModelV4FunctionTool } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIChatModelId =\n | 'moonshot-v1-auto'\n | 'moonshot-v1-8k'\n | 'moonshot-v1-32k'\n | 'moonshot-v1-128k'\n | 'moonshot-v1-8k-vision-preview'\n | 'moonshot-v1-32k-vision-preview'\n | 'moonshot-v1-128k-vision-preview'\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7-code'\n | 'kimi-k2.7-code-highspeed'\n | 'kimi-k3'\n | (string & {});\n\nexport function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport type MoonshotAIModelFamily =\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7'\n | 'kimi-k3'\n | 'moonshot-v1'\n | 'unknown';\n\nexport function getMoonshotAIModelFamily(\n modelId: MoonshotAIChatModelId,\n): MoonshotAIModelFamily {\n if (modelId === 'kimi-k2.5') return 'kimi-k2.5';\n if (modelId === 'kimi-k2.6') return 'kimi-k2.6';\n if (modelId === 'kimi-k2.7-code' || modelId === 'kimi-k2.7-code-highspeed') {\n return 'kimi-k2.7';\n }\n if (modelId === 'kimi-k3') return 'kimi-k3';\n if (modelId.startsWith('moonshot-v1-')) return 'moonshot-v1';\n return 'unknown';\n}\n\nexport const moonshotaiLanguageModelOptions = z.object({\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Whether to return log probabilities for generated tokens.\n */\n logprobs: z.boolean().optional(),\n\n /**\n * Number of most likely tokens to return at each token position.\n *\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs: z.number().int().min(0).max(20).optional(),\n\n /**\n * Reasoning effort for Kimi K3. Supports `low`, `high`, and `max`;\n * defaults to `max`.\n */\n reasoningEffort: z.enum(['low', 'high', 'max']).optional(),\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction: z\n .object({\n type: z.literal('content'),\n content: z.union([\n z.string(),\n z.array(z.object({ type: z.literal('text'), text: z.string() })),\n ]),\n })\n .optional(),\n\n /**\n * Thinking configuration for Kimi K2.x models. Kimi K2.5 and K2.6 support\n * enabling or disabling thinking. Kimi K2.7 Code always has thinking\n * enabled.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n /**\n * @deprecated Moonshot Chat Completions does not support thinking\n * budgets. Accepted for backwards compatibility, then omitted with a\n * warning.\n */\n budgetTokens: z.number().int().min(1024).optional(),\n })\n .optional(),\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory: z.enum(['disabled', 'interleaved', 'preserved']).optional(),\n\n /**\n * Used to cache responses for similar requests to optimize cache hit rates.\n * Typically a session or task id.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * A stable identifier used to help Moonshot detect users violating usage\n * policies. Recommended to hash the username or email address.\n */\n safetyIdentifier: z.string().optional(),\n});\n\nexport type MoonshotAILanguageModelOptions = {\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema?: boolean;\n\n /** Whether to return log probabilities for generated tokens. */\n logprobs?: boolean;\n\n /**\n * Number of most likely tokens to return at each token position.\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs?: number;\n\n /** Reasoning effort for Kimi K3. */\n reasoningEffort?: 'low' | 'high' | 'max';\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction?: {\n type: 'content';\n content: string | Array<{ type: 'text'; text: string }>;\n };\n\n /** Controls thinking on Kimi K2.5 and K2.6. K2.7 is always enabled. */\n thinking?: {\n type?: 'enabled' | 'disabled';\n\n /**\n * @deprecated Moonshot Chat Completions does not support thinking budgets.\n * This value is ignored with a warning.\n */\n budgetTokens?: number;\n };\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory?: 'disabled' | 'interleaved' | 'preserved';\n promptCacheKey?: string;\n safetyIdentifier?: string;\n};\n\nexport const moonshotaiMessageProviderOptions = z.object({\n /**\n * The name of the participant represented by the message.\n *\n * Supported on system, user, and assistant messages.\n */\n name: z.string().optional(),\n});\n\nexport type MoonshotAIMessageProviderOptions = z.infer<\n typeof moonshotaiMessageProviderOptions\n>;\n\nexport const moonshotaiAssistantMessageProviderOptions =\n moonshotaiMessageProviderOptions.extend({\n /**\n * Whether the assistant message content is a partial response that Moonshot\n * should continue. Only supported on the final assistant message and cannot\n * be combined with JSON object response format.\n */\n partial: z.literal(true).optional(),\n });\n\nexport type MoonshotAIAssistantMessageProviderOptions = z.infer<\n typeof moonshotaiAssistantMessageProviderOptions\n>;\n\nconst moonshotaiDynamicToolSchema = z.object({\n type: z.literal('function'),\n name: z.string(),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()),\n strict: z.boolean().optional(),\n});\n\nexport const moonshotaiAllMessageProviderOptions =\n moonshotaiAssistantMessageProviderOptions.extend({\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools: z.array(moonshotaiDynamicToolSchema).optional(),\n });\n\nexport type MoonshotAISystemMessageProviderOptions =\n MoonshotAIMessageProviderOptions & {\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools?: Array<\n Pick<\n LanguageModelV4FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema' | 'strict'\n >\n >;\n };\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport type { MoonshotAIFunctionTool } from './moonshotai-chat-api-types';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nexport function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n modelId: MoonshotAIChatModelId;\n}): {\n tools: undefined | Array<MoonshotAIFunctionTool>;\n toolChoice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: SharedV4Warning[];\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: SharedV4Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const moonshotTools: Array<MoonshotAIFunctionTool> = [];\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 moonshotTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: normalizeJsonSchemaForMFJS(tool.inputSchema),\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: moonshotTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'required':\n if (\n modelId === 'kimi-k2.6' ||\n modelId === 'kimi-k2.7-code' ||\n modelId === 'kimi-k2.7-code-highspeed'\n ) {\n toolWarnings.push({\n type: 'unsupported',\n feature: `tool choice \"required\" for model \"${modelId}\"`,\n details:\n 'Moonshot AI rejects required tool choice for this model. The setting has been omitted; use \"auto\" or select a specific tool instead.',\n });\n return {\n tools: moonshotTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: moonshotTools,\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","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport { isRecord } from '@ai-sdk/provider-utils';\n\nconst SCHEMA_ARRAY_KEYS = ['allOf', 'anyOf', 'oneOf', 'prefixItems'] as const;\nconst SCHEMA_MAP_KEYS = [\n 'properties',\n 'patternProperties',\n '$defs',\n 'dependentSchemas',\n] as const;\nconst SCHEMA_SINGLE_KEYS = [\n 'additionalProperties',\n 'propertyNames',\n 'items',\n 'contains',\n 'not',\n 'if',\n 'then',\n 'else',\n] as const;\n\n/**\n * Normalizes a JSON Schema to the subset Moonshot's MFJS validator accepts:\n * `object` root required, tuple `items` become `prefixItems`, and `type` next\n * to `anyOf` moves into the branches. Everything else passes through. The\n * full original schema is still used for AI SDK result validation.\n */\nexport function normalizeJsonSchemaForMFJS(schema: unknown): unknown {\n return normalizeDefinition(schema, true);\n}\n\nfunction normalizeDefinition(definition: unknown, isRoot: boolean): unknown {\n if (typeof definition === 'boolean' || !isRecord(definition)) {\n if (isRoot) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n return definition;\n }\n\n if (isRoot && definition.type !== 'object') {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n\n const result: Record<string, unknown> = { ...definition };\n\n // Existing prefixItems stay first (they are positional).\n if (Array.isArray(result.items)) {\n const tuple = result.items;\n result.prefixItems = [\n ...(Array.isArray(result.prefixItems) ? result.prefixItems : []),\n ...tuple.map(item => normalizeDefinition(item, false)),\n ];\n delete result.items;\n } else if (isRecord(result.items)) {\n result.items = normalizeDefinition(result.items, false);\n }\n\n // MFJS requires type to live inside anyOf items.\n if (typeof result.type === 'string' && Array.isArray(result.anyOf)) {\n const parentType = result.type;\n delete result.type;\n result.anyOf = result.anyOf.map(branch =>\n isRecord(branch) && branch.type == null\n ? { type: parentType, ...branch }\n : branch,\n );\n }\n\n for (const key of SCHEMA_ARRAY_KEYS) {\n const value = result[key];\n if (Array.isArray(value)) {\n result[key] = value.map(item => normalizeDefinition(item, false));\n }\n }\n\n for (const key of SCHEMA_MAP_KEYS) {\n const value = result[key];\n if (isRecord(value)) {\n result[key] = Object.fromEntries(\n Object.entries(value).map(([k, v]) => [\n k,\n normalizeDefinition(v, false),\n ]),\n );\n }\n }\n\n for (const key of SCHEMA_SINGLE_KEYS) {\n const value = result[key];\n if (isRecord(value) || typeof value === 'boolean') {\n result[key] = normalizeDefinition(value, false);\n }\n }\n\n return result;\n}\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { createNullLanguageModelUsage } from '@ai-sdk/provider-utils';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n cached_tokens?: number | null;\n prompt_tokens_details?: {\n cached_tokens?: number | null;\n } | null;\n completion_tokens_details?: {\n reasoning_tokens?: number | null;\n } | null;\n }\n | undefined\n | null,\n): LanguageModelV4Usage {\n if (usage == null) {\n return createNullLanguageModelUsage();\n }\n\n const promptTokens = usage.prompt_tokens ?? 0;\n const completionTokens = usage.completion_tokens ?? 0;\n\n const cacheReadTokens =\n usage.cached_tokens ?? usage.prompt_tokens_details?.cached_tokens ?? 0;\n\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: Math.max(0, completionTokens - reasoningTokens),\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapMoonshotAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['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","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIMessages = Array<MoonshotAIMessage>;\n\nexport type MoonshotAIMessage =\n | MoonshotAISystemMessage\n | MoonshotAIUserMessage\n | MoonshotAIAssistantMessage\n | MoonshotAIToolMessage;\n\nexport type MoonshotAISystemMessage =\n | {\n role: 'system';\n content: string;\n name?: string;\n }\n | {\n role: 'system';\n tools: Array<MoonshotAIFunctionTool>;\n };\n\nexport interface MoonshotAIFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n strict?: boolean;\n };\n}\n\nexport interface MoonshotAIUserMessage {\n role: 'user';\n content: string | Array<MoonshotAIContentPart>;\n name?: string;\n}\n\nexport type MoonshotAIContentPart =\n | MoonshotAIContentPartText\n | MoonshotAIContentPartImage\n | MoonshotAIContentPartVideo;\n\nexport interface MoonshotAIContentPartText {\n type: 'text';\n text: string;\n}\n\nexport interface MoonshotAIContentPartImage {\n type: 'image_url';\n image_url: { url: string };\n}\n\nexport interface MoonshotAIContentPartVideo {\n type: 'video_url';\n video_url: { url: string };\n}\n\nexport interface MoonshotAIAssistantMessage {\n role: 'assistant';\n content?: string | null;\n name?: string;\n partial?: true;\n reasoning_content?: string;\n tool_calls?: Array<MoonshotAIMessageToolCall>;\n}\n\nexport interface MoonshotAIMessageToolCall {\n type: 'function';\n id: string;\n function: {\n arguments: string;\n name: string;\n };\n}\n\nexport interface MoonshotAIToolMessage {\n role: 'tool';\n content: string;\n tool_call_id: string;\n}\n\n// Schemas below are limited versions focused on what the implementation\n// needs. This limits breakages when the API changes and increases efficiency.\n\n// Loose, nested objects included: the parsed value is returned as `usage.raw`.\nconst tokenUsageSchema = z\n .looseObject({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .looseObject({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .looseObject({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatTokenUsage = z.infer<typeof tokenUsageSchema>;\n\nexport const moonshotAIErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotAIErrorSchema>;\n\nconst moonshotAIChatLogprobSchema = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n }),\n ),\n});\n\nconst moonshotAIChatLogprobsSchema = z\n .object({\n content: z.array(moonshotAIChatLogprobSchema).nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nexport const moonshotAIChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('chat.completion').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\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 type: z.literal('function').nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\n});\n\nexport const moonshotAIChatChunkSchema = 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 object: z.literal('chat.completion.chunk').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\n delta: z\n .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 index: z.number().nullish(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n usage: tokenUsageSchema,\n }),\n ),\n usage: tokenUsageSchema,\n }),\n moonshotAIErrorSchema,\n ]),\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"],"mappings":"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","names":["parseProviderOptions","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","z","parseProviderOptions","_a","_b"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/moonshotai",
3
- "version": "3.0.48",
3
+ "version": "3.0.49",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -25,8 +25,8 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/provider": "4.0.13",
29
- "@ai-sdk/provider-utils": "5.0.39"
28
+ "@ai-sdk/provider": "4.0.14",
29
+ "@ai-sdk/provider-utils": "5.0.40"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@ai-sdk/test-server": "2.0.1",
@@ -726,7 +726,7 @@ export class MoonshotAIChatLanguageModel implements LanguageModelV4 {
726
726
  });
727
727
  }
728
728
 
729
- if (delta.tool_calls != null) {
729
+ if (delta.tool_calls != null && delta.tool_calls.length > 0) {
730
730
  // end reasoning when tool calls start:
731
731
  if (isActiveReasoning) {
732
732
  controller.enqueue({