@ai-sdk/moonshotai 0.0.30 → 0.0.31

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,11 @@
1
1
  # @ai-sdk/moonshotai
2
2
 
3
+ ## 0.0.31
4
+
5
+ ### Patch Changes
6
+
7
+ - 655c639: Enable structured output for unknown model IDs so future Moonshot models retain JSON schemas instead of silently falling back to JSON object mode.
8
+
3
9
  ## 0.0.30
4
10
 
5
11
  ### Patch Changes
package/dist/index.js CHANGED
@@ -848,7 +848,7 @@ var MoonshotAIChatLanguageModel = class extends import_openai_compatible.OpenAIC
848
848
  };
849
849
 
850
850
  // src/version.ts
851
- var VERSION = true ? "0.0.30" : "0.0.0-test";
851
+ var VERSION = true ? "0.0.31" : "0.0.0-test";
852
852
 
853
853
  // src/moonshotai-provider.ts
854
854
  var moonshotaiErrorSchema = import_v43.z.object({
@@ -863,8 +863,8 @@ var moonshotaiErrorStructure = {
863
863
  errorToMessage: (data) => data.error.message
864
864
  };
865
865
  var defaultBaseURL = "https://api.moonshot.ai/v1";
866
- function getModelStructuredOutputSupport(modelId) {
867
- return modelId.startsWith("kimi-k") || modelId === "moonshot-v1-8k" || modelId === "moonshot-v1-32k" || modelId === "moonshot-v1-128k" || modelId === "moonshot-v1-auto" || modelId === "moonshot-v1-8k-vision-preview" || modelId === "moonshot-v1-32k-vision-preview" || modelId === "moonshot-v1-128k-vision-preview";
866
+ function getModelStructuredOutputSupport(_modelId) {
867
+ return true;
868
868
  }
869
869
  function createMoonshotAI(options = {}) {
870
870
  var _a;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-moonshotai-chat-usage.ts","../src/moonshotai-chat-metadata-extractor.ts","../src/moonshotai-chat-options.ts","../src/normalize-json-schema-for-mfjs.ts","../src/version.ts"],"sourcesContent":["export { createMoonshotAI, moonshotai } from './moonshotai-provider';\nexport type {\n MoonshotAIProvider,\n MoonshotAIProviderSettings,\n} from './moonshotai-provider';\nexport type {\n MoonshotAIAssistantMessageProviderOptions,\n MoonshotAIChatModelId,\n MoonshotAIMessageProviderOptions,\n MoonshotAIProviderOptions,\n MoonshotAISystemMessageProviderOptions,\n} from './moonshotai-chat-options';\n","import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport {\n type LanguageModelV2,\n type ProviderV2,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotaiErrorSchema>;\n\nconst moonshotaiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nconst moonshotaiErrorStructure: ProviderErrorStructure<MoonshotAIErrorData> = {\n errorSchema: moonshotaiErrorSchema,\n errorToMessage: data => data.error.message,\n};\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 ProviderV2 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\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 interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `moonshotai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n includeUsage: true,\n errorStructure: moonshotaiErrorStructure,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v2' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\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 { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type { OpenAICompatibleChatConfig } from '@ai-sdk/openai-compatible/internal';\nimport {\n InvalidPromptError,\n type JSONValue,\n type LanguageModelV2,\n type LanguageModelV2CallOptions,\n type LanguageModelV2CallWarning,\n type LanguageModelV2Prompt,\n type LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport { parseProviderOptions } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { moonshotAIChatMetadataExtractor } from './moonshotai-chat-metadata-extractor';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n type MoonshotAIChatModelId,\n type MoonshotAIProviderOptions,\n moonshotaiAllMessageProviderOptions,\n moonshotaiProviderOptions,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nfunction transformMoonshotRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n strictJsonSchema,\n max_tokens: maxTokens,\n logprobs,\n topLogprobs,\n ...transformedArgs\n } = args;\n const moonshotArgs: Record<string, any> = {\n ...transformedArgs,\n ...((logprobs === true || topLogprobs != null) && { logprobs: true }),\n ...(topLogprobs != null && { top_logprobs: topLogprobs }),\n ...(maxTokens != null ? { max_completion_tokens: maxTokens } : {}),\n };\n\n if (Array.isArray(moonshotArgs.messages)) {\n moonshotArgs.messages = moonshotArgs.messages.map(\n (message: Record<string, unknown>) => {\n if (message.role !== 'system' || !Array.isArray(message.tools)) {\n return message;\n }\n\n const { content: _content, ...dynamicToolMessage } = message;\n return dynamicToolMessage;\n },\n );\n }\n\n const responseFormat = moonshotArgs.response_format;\n\n if (\n responseFormat?.type === 'json_object' &&\n moonshotArgs.messages?.some(\n (message: Record<string, unknown>) => message.partial === true,\n )\n ) {\n throw new InvalidPromptError({\n prompt: args.messages,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n\n if (\n responseFormat?.type !== 'json_schema' ||\n responseFormat.json_schema?.schema == null\n ) {\n return moonshotArgs;\n }\n\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.json_schema.schema;\n\n return {\n ...moonshotArgs,\n response_format: {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.json_schema.name ?? 'response',\n strict: strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n },\n };\n}\n\nconst moonshotAIValidatedOptionsSchema = moonshotaiProviderOptions.pick({\n logprobs: true,\n topLogprobs: true,\n prediction: true,\n});\n\nasync function validateProviderOptions(\n options: LanguageModelV2CallOptions,\n): Promise<void> {\n await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: options.providerOptions,\n schema: moonshotAIValidatedOptionsSchema,\n });\n}\n\nasync function prepareMessageOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): Promise<{\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n}> {\n const prompt: LanguageModelV2Prompt = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const [index, message] of options.prompt.entries()) {\n const messageOptions = await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: message.providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (messageOptions?.partial === true && message.role !== 'assistant') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (messageOptions?.tools != null && message.role !== 'system') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n if (\n messageOptions?.partial === true &&\n index !== options.prompt.length - 1\n ) {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (messageOptions?.tools?.length && message.role === 'system') {\n if (message.content.length > 0) {\n throw new InvalidPromptError({\n prompt: options.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 const modelFamily = getMoonshotAIModelFamily(modelId);\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'other',\n message: `Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted for model \"${modelId}\".`,\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: {\n ...message.providerOptions?.openaiCompatible,\n tools: messageOptions.tools.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n ...(tool.description != null\n ? { description: tool.description }\n : {}),\n parameters: normalizeJsonSchemaForMFJS(\n tool.inputSchema,\n ) as JSONValue,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n })),\n },\n },\n });\n continue;\n }\n\n if (messageOptions?.name == null && messageOptions?.partial !== true) {\n prompt.push(message);\n continue;\n }\n\n if (message.role === 'tool' && messageOptions?.name != null) {\n warnings.push({\n type: 'other',\n message:\n 'Moonshot AI does not support message names on tool messages. The name has been omitted.',\n });\n prompt.push(message);\n continue;\n }\n\n const openAICompatibleOptions = {\n ...message.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && { name: messageOptions.name }),\n ...(messageOptions.partial === true && { partial: true }),\n };\n\n // The v5 OpenAI-compatible converter reads metadata from the text part\n // for single-part user messages and from the message for every other\n // supported message shape.\n if (\n message.role === 'user' &&\n message.content.length === 1 &&\n message.content[0].type === 'text'\n ) {\n const textPart = message.content[0];\n prompt.push({\n ...message,\n content: [\n {\n ...textPart,\n providerOptions: {\n ...textPart.providerOptions,\n openaiCompatible: {\n ...openAICompatibleOptions,\n ...textPart.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && {\n name: messageOptions.name,\n }),\n },\n },\n },\n ],\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: openAICompatibleOptions,\n },\n });\n }\n\n return {\n options: { ...options, prompt },\n warnings,\n };\n}\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\ntype MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nfunction extractMoonshotAIChatLogprobs(value: unknown) {\n const result = moonshotAIChatLogprobsSchema.safeParse(\n (value as { choices?: Array<{ logprobs?: unknown }> })?.choices?.[0]\n ?.logprobs,\n );\n\n return result.success ? (result.data ?? undefined) : undefined;\n}\n\nfunction prepareSamplingOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (!isMoonshotAIKimiModel(modelId)) {\n return { options, warnings: [] };\n }\n\n const warnings: LanguageModelV2CallWarning[] = [];\n const samplingSettings = [\n ['temperature', options.temperature],\n ['topP', options.topP],\n ['frequencyPenalty', options.frequencyPenalty],\n ['presencePenalty', options.presencePenalty],\n ] as const;\n\n for (const [setting, value] of samplingSettings) {\n if (value != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting,\n details: `${setting} is fixed by model \"${modelId}\" and has been omitted.`,\n });\n }\n }\n\n return {\n options: {\n ...options,\n temperature: undefined,\n topP: undefined,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n },\n warnings,\n };\n}\n\nfunction prepareToolChoiceOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (\n options.toolChoice?.type !== 'required' ||\n !['kimi-k2.6', 'kimi-k2.7'].includes(getMoonshotAIModelFamily(modelId))\n ) {\n return { options, warnings: [] };\n }\n\n return {\n options: { ...options, toolChoice: undefined },\n warnings: [\n {\n type: 'unsupported-setting',\n setting: 'toolChoice',\n details: `toolChoice \"required\" is not supported by model \"${modelId}\" and has been omitted; use \"auto\" or select a specific tool instead.`,\n },\n ],\n };\n}\n\nfunction prepareReasoningOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n const providerOptions = options.providerOptions?.moonshotai;\n if (\n providerOptions == null ||\n typeof providerOptions !== 'object' ||\n Array.isArray(providerOptions)\n ) {\n return { options, warnings: [] };\n }\n\n const moonshotOptions = providerOptions as MoonshotAIProviderOptions;\n const {\n reasoningEffort: requestedReasoningEffort,\n thinking: requestedThinking,\n reasoningHistory,\n ...otherMoonshotOptions\n } = moonshotOptions;\n const preserveReasoning = reasoningHistory === 'preserved';\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (requestedThinking?.budgetTokens != null) {\n warnings.push({\n type: 'other',\n message:\n 'providerOptions.moonshotai.thinking.budgetTokens is deprecated because Moonshot Chat Completions does not support budget_tokens. 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 warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${modelId}\".`,\n });\n }\n };\n\n switch (getMoonshotAIModelFamily(modelId)) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K3 always reasons and does not accept providerOptions.moonshotai.thinking. The option has been omitted.',\n });\n }\n reasoningEffort = requestedReasoningEffort;\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K2.7 thinking cannot be disabled. providerOptions.moonshotai.thinking has been omitted.',\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 = requestedThinking?.type;\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 if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.thinking is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'unknown': {\n reasoningEffort = requestedReasoningEffort;\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n }\n\n return {\n options: {\n ...options,\n providerOptions: {\n ...options.providerOptions,\n moonshotai: {\n ...otherMoonshotOptions,\n ...(reasoningEffort != null ? { reasoningEffort } : {}),\n ...(thinking != null ? { thinking } : {}),\n },\n },\n },\n warnings,\n };\n}\n\nexport class MoonshotAIChatLanguageModel extends OpenAICompatibleChatLanguageModel {\n constructor(\n modelId: MoonshotAIChatModelId,\n config: OpenAICompatibleChatConfig,\n ) {\n super(modelId, {\n ...config,\n metadataExtractor: moonshotAIChatMetadataExtractor,\n transformRequestBody: args =>\n transformMoonshotRequestBody(\n config.transformRequestBody?.(args) ?? args,\n ),\n });\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n const result = await super.doGenerate(toolChoiceOptions);\n\n // @ts-expect-error accessing response body from parent result\n const usage = result.response?.body?.usage;\n const logprobs = extractMoonshotAIChatLogprobs(result.response?.body);\n\n return {\n ...result,\n usage: convertMoonshotAIChatUsage(usage),\n providerMetadata: {\n ...result.providerMetadata,\n moonshotai: {\n ...result.providerMetadata?.moonshotai,\n ...(logprobs != null && { logprobs }),\n },\n },\n warnings: [\n ...result.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const originalIncludeRawChunks = options.includeRawChunks;\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n\n // Enable raw chunks to capture pre-Zod usage data, since MoonshotAI\n // returns cached_tokens at the top level of usage (not nested in\n // prompt_tokens_details) and the parent's z.object() schema strips it.\n const result = await super.doStream({\n ...toolChoiceOptions,\n includeRawChunks: true,\n });\n\n let rawUsage: unknown = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV2StreamPart,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n if (chunk.type === 'stream-start') {\n controller.enqueue({\n ...chunk,\n warnings: [\n ...chunk.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n });\n return;\n }\n\n if (chunk.type === 'raw') {\n // Capture raw usage data before Zod strips cached_tokens\n const rawValue = chunk.rawValue as Record<string, unknown>;\n if (rawValue?.usage != null) {\n rawUsage = rawValue.usage;\n }\n\n const logprobs = extractMoonshotAIChatLogprobs(rawValue);\n if (logprobs?.content != null) {\n contentLogprobs.push(...logprobs.content);\n }\n\n // Only forward raw chunks if originally requested\n if (originalIncludeRawChunks) {\n controller.enqueue(chunk);\n }\n return;\n }\n\n if (chunk.type === 'finish') {\n // Re-convert usage from raw data to capture cached_tokens\n controller.enqueue({\n ...chunk,\n usage: rawUsage\n ? convertMoonshotAIChatUsage(rawUsage as any)\n : chunk.usage,\n providerMetadata: {\n ...chunk.providerMetadata,\n moonshotai: {\n ...chunk.providerMetadata?.moonshotai,\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n },\n },\n });\n return;\n }\n\n controller.enqueue(chunk);\n },\n }),\n ),\n };\n }\n}\n","import type { LanguageModelV2Usage } from '@ai-sdk/provider';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n total_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): LanguageModelV2Usage {\n if (usage == null) {\n return {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n }\n\n const cachedInputTokens =\n usage.cached_tokens ??\n usage.prompt_tokens_details?.cached_tokens ??\n undefined;\n\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? undefined;\n\n return {\n inputTokens: usage.prompt_tokens ?? undefined,\n outputTokens: usage.completion_tokens ?? undefined,\n totalTokens: usage.total_tokens ?? undefined,\n reasoningTokens,\n cachedInputTokens,\n };\n}\n","import type { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport type { JSONValue } from '@ai-sdk/provider';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction getFirstChoice(value: Record<string, unknown>) {\n const choices = value.choices;\n return Array.isArray(choices) && isRecord(choices[0])\n ? choices[0]\n : undefined;\n}\n\nfunction getToolCallTypes(value: unknown): Array<'function'> | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.flatMap(toolCall =>\n isRecord(toolCall) && toolCall.type === 'function' ? [toolCall.type] : [],\n );\n}\n\nfunction extractMetadata(value: unknown): Record<string, JSONValue> {\n if (!isRecord(value)) {\n return {};\n }\n\n const choice = getFirstChoice(value);\n const message =\n choice != null && isRecord(choice.message) ? choice.message : undefined;\n const toolCallTypes = getToolCallTypes(message?.tool_calls);\n\n return {\n ...(value.object === 'chat.completion' && {\n responseObject: value.object,\n }),\n ...(typeof choice?.index === 'number' && {\n choiceIndex: choice.index,\n }),\n ...(message?.role === 'assistant' && {\n messageRole: message.role,\n }),\n ...(toolCallTypes != null && { toolCallTypes }),\n };\n}\n\nexport const moonshotAIChatMetadataExtractor: MetadataExtractor = {\n async extractMetadata({ parsedBody }) {\n return { moonshotai: extractMetadata(parsedBody) };\n },\n\n createStreamExtractor() {\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 processChunk(parsedChunk) {\n if (!isRecord(parsedChunk)) {\n return;\n }\n\n if (parsedChunk.object === 'chat.completion.chunk') {\n responseObject = parsedChunk.object;\n }\n\n const choice = getFirstChoice(parsedChunk);\n if (typeof choice?.index === 'number') {\n choiceIndex = choice.index;\n }\n\n const delta =\n choice != null && isRecord(choice.delta) ? choice.delta : undefined;\n if (delta?.role === 'assistant') {\n messageRole = delta.role;\n }\n\n if (Array.isArray(delta?.tool_calls)) {\n for (const [fallbackIndex, toolCall] of delta.tool_calls.entries()) {\n if (!isRecord(toolCall) || toolCall.type !== 'function') {\n continue;\n }\n\n const index =\n typeof toolCall.index === 'number'\n ? toolCall.index\n : fallbackIndex;\n toolCallTypes.set(index, toolCall.type);\n }\n }\n },\n\n buildMetadata() {\n return {\n moonshotai: {\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","import type { LanguageModelV2FunctionTool } 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 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 function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport const moonshotaiProviderOptions = 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\nexport type MoonshotAIProviderOptions = {\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};\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 LanguageModelV2FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema'\n > & {\n /** Whether Moonshot should enforce the tool input schema strictly. */\n strict?: boolean;\n }\n >;\n };\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\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\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\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 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 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(([key, item]) => [\n key,\n normalizeDefinition(item, 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","// 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":["import_provider","import_provider_utils","import_v4","import_provider","import_v4","isRecord","key"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-moonshotai-chat-usage.ts","../src/moonshotai-chat-metadata-extractor.ts","../src/moonshotai-chat-options.ts","../src/normalize-json-schema-for-mfjs.ts","../src/version.ts"],"sourcesContent":["export { createMoonshotAI, moonshotai } from './moonshotai-provider';\nexport type {\n MoonshotAIProvider,\n MoonshotAIProviderSettings,\n} from './moonshotai-provider';\nexport type {\n MoonshotAIAssistantMessageProviderOptions,\n MoonshotAIChatModelId,\n MoonshotAIMessageProviderOptions,\n MoonshotAIProviderOptions,\n MoonshotAISystemMessageProviderOptions,\n} from './moonshotai-chat-options';\n","import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport {\n type LanguageModelV2,\n type ProviderV2,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotaiErrorSchema>;\n\nconst moonshotaiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nconst moonshotaiErrorStructure: ProviderErrorStructure<MoonshotAIErrorData> = {\n errorSchema: moonshotaiErrorSchema,\n errorToMessage: data => data.error.message,\n};\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 ProviderV2 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\n}\n\nconst defaultBaseURL = 'https://api.moonshot.ai/v1';\n\nexport function getModelStructuredOutputSupport(\n _modelId: MoonshotAIChatModelId,\n): boolean {\n // All known Moonshot models support structured output. Future IDs inherit\n // that support instead of depending on a specific family name.\n return true;\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 interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `moonshotai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n includeUsage: true,\n errorStructure: moonshotaiErrorStructure,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v2' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\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 { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type { OpenAICompatibleChatConfig } from '@ai-sdk/openai-compatible/internal';\nimport {\n InvalidPromptError,\n type JSONValue,\n type LanguageModelV2,\n type LanguageModelV2CallOptions,\n type LanguageModelV2CallWarning,\n type LanguageModelV2Prompt,\n type LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport { parseProviderOptions } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { moonshotAIChatMetadataExtractor } from './moonshotai-chat-metadata-extractor';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n type MoonshotAIChatModelId,\n type MoonshotAIProviderOptions,\n moonshotaiAllMessageProviderOptions,\n moonshotaiProviderOptions,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nfunction transformMoonshotRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n strictJsonSchema,\n max_tokens: maxTokens,\n logprobs,\n topLogprobs,\n ...transformedArgs\n } = args;\n const moonshotArgs: Record<string, any> = {\n ...transformedArgs,\n ...((logprobs === true || topLogprobs != null) && { logprobs: true }),\n ...(topLogprobs != null && { top_logprobs: topLogprobs }),\n ...(maxTokens != null ? { max_completion_tokens: maxTokens } : {}),\n };\n\n if (Array.isArray(moonshotArgs.messages)) {\n moonshotArgs.messages = moonshotArgs.messages.map(\n (message: Record<string, unknown>) => {\n if (message.role !== 'system' || !Array.isArray(message.tools)) {\n return message;\n }\n\n const { content: _content, ...dynamicToolMessage } = message;\n return dynamicToolMessage;\n },\n );\n }\n\n const responseFormat = moonshotArgs.response_format;\n\n if (\n responseFormat?.type === 'json_object' &&\n moonshotArgs.messages?.some(\n (message: Record<string, unknown>) => message.partial === true,\n )\n ) {\n throw new InvalidPromptError({\n prompt: args.messages,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n\n if (\n responseFormat?.type !== 'json_schema' ||\n responseFormat.json_schema?.schema == null\n ) {\n return moonshotArgs;\n }\n\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.json_schema.schema;\n\n return {\n ...moonshotArgs,\n response_format: {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.json_schema.name ?? 'response',\n strict: strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n },\n };\n}\n\nconst moonshotAIValidatedOptionsSchema = moonshotaiProviderOptions.pick({\n logprobs: true,\n topLogprobs: true,\n prediction: true,\n});\n\nasync function validateProviderOptions(\n options: LanguageModelV2CallOptions,\n): Promise<void> {\n await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: options.providerOptions,\n schema: moonshotAIValidatedOptionsSchema,\n });\n}\n\nasync function prepareMessageOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): Promise<{\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n}> {\n const prompt: LanguageModelV2Prompt = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const [index, message] of options.prompt.entries()) {\n const messageOptions = await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: message.providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (messageOptions?.partial === true && message.role !== 'assistant') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (messageOptions?.tools != null && message.role !== 'system') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n if (\n messageOptions?.partial === true &&\n index !== options.prompt.length - 1\n ) {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (messageOptions?.tools?.length && message.role === 'system') {\n if (message.content.length > 0) {\n throw new InvalidPromptError({\n prompt: options.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 const modelFamily = getMoonshotAIModelFamily(modelId);\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'other',\n message: `Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted for model \"${modelId}\".`,\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: {\n ...message.providerOptions?.openaiCompatible,\n tools: messageOptions.tools.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n ...(tool.description != null\n ? { description: tool.description }\n : {}),\n parameters: normalizeJsonSchemaForMFJS(\n tool.inputSchema,\n ) as JSONValue,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n })),\n },\n },\n });\n continue;\n }\n\n if (messageOptions?.name == null && messageOptions?.partial !== true) {\n prompt.push(message);\n continue;\n }\n\n if (message.role === 'tool' && messageOptions?.name != null) {\n warnings.push({\n type: 'other',\n message:\n 'Moonshot AI does not support message names on tool messages. The name has been omitted.',\n });\n prompt.push(message);\n continue;\n }\n\n const openAICompatibleOptions = {\n ...message.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && { name: messageOptions.name }),\n ...(messageOptions.partial === true && { partial: true }),\n };\n\n // The v5 OpenAI-compatible converter reads metadata from the text part\n // for single-part user messages and from the message for every other\n // supported message shape.\n if (\n message.role === 'user' &&\n message.content.length === 1 &&\n message.content[0].type === 'text'\n ) {\n const textPart = message.content[0];\n prompt.push({\n ...message,\n content: [\n {\n ...textPart,\n providerOptions: {\n ...textPart.providerOptions,\n openaiCompatible: {\n ...openAICompatibleOptions,\n ...textPart.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && {\n name: messageOptions.name,\n }),\n },\n },\n },\n ],\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: openAICompatibleOptions,\n },\n });\n }\n\n return {\n options: { ...options, prompt },\n warnings,\n };\n}\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\ntype MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nfunction extractMoonshotAIChatLogprobs(value: unknown) {\n const result = moonshotAIChatLogprobsSchema.safeParse(\n (value as { choices?: Array<{ logprobs?: unknown }> })?.choices?.[0]\n ?.logprobs,\n );\n\n return result.success ? (result.data ?? undefined) : undefined;\n}\n\nfunction prepareSamplingOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (!isMoonshotAIKimiModel(modelId)) {\n return { options, warnings: [] };\n }\n\n const warnings: LanguageModelV2CallWarning[] = [];\n const samplingSettings = [\n ['temperature', options.temperature],\n ['topP', options.topP],\n ['frequencyPenalty', options.frequencyPenalty],\n ['presencePenalty', options.presencePenalty],\n ] as const;\n\n for (const [setting, value] of samplingSettings) {\n if (value != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting,\n details: `${setting} is fixed by model \"${modelId}\" and has been omitted.`,\n });\n }\n }\n\n return {\n options: {\n ...options,\n temperature: undefined,\n topP: undefined,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n },\n warnings,\n };\n}\n\nfunction prepareToolChoiceOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (\n options.toolChoice?.type !== 'required' ||\n !['kimi-k2.6', 'kimi-k2.7'].includes(getMoonshotAIModelFamily(modelId))\n ) {\n return { options, warnings: [] };\n }\n\n return {\n options: { ...options, toolChoice: undefined },\n warnings: [\n {\n type: 'unsupported-setting',\n setting: 'toolChoice',\n details: `toolChoice \"required\" is not supported by model \"${modelId}\" and has been omitted; use \"auto\" or select a specific tool instead.`,\n },\n ],\n };\n}\n\nfunction prepareReasoningOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n const providerOptions = options.providerOptions?.moonshotai;\n if (\n providerOptions == null ||\n typeof providerOptions !== 'object' ||\n Array.isArray(providerOptions)\n ) {\n return { options, warnings: [] };\n }\n\n const moonshotOptions = providerOptions as MoonshotAIProviderOptions;\n const {\n reasoningEffort: requestedReasoningEffort,\n thinking: requestedThinking,\n reasoningHistory,\n ...otherMoonshotOptions\n } = moonshotOptions;\n const preserveReasoning = reasoningHistory === 'preserved';\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (requestedThinking?.budgetTokens != null) {\n warnings.push({\n type: 'other',\n message:\n 'providerOptions.moonshotai.thinking.budgetTokens is deprecated because Moonshot Chat Completions does not support budget_tokens. 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 warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${modelId}\".`,\n });\n }\n };\n\n switch (getMoonshotAIModelFamily(modelId)) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K3 always reasons and does not accept providerOptions.moonshotai.thinking. The option has been omitted.',\n });\n }\n reasoningEffort = requestedReasoningEffort;\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K2.7 thinking cannot be disabled. providerOptions.moonshotai.thinking has been omitted.',\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 = requestedThinking?.type;\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 if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.thinking is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'unknown': {\n reasoningEffort = requestedReasoningEffort;\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n }\n\n return {\n options: {\n ...options,\n providerOptions: {\n ...options.providerOptions,\n moonshotai: {\n ...otherMoonshotOptions,\n ...(reasoningEffort != null ? { reasoningEffort } : {}),\n ...(thinking != null ? { thinking } : {}),\n },\n },\n },\n warnings,\n };\n}\n\nexport class MoonshotAIChatLanguageModel extends OpenAICompatibleChatLanguageModel {\n constructor(\n modelId: MoonshotAIChatModelId,\n config: OpenAICompatibleChatConfig,\n ) {\n super(modelId, {\n ...config,\n metadataExtractor: moonshotAIChatMetadataExtractor,\n transformRequestBody: args =>\n transformMoonshotRequestBody(\n config.transformRequestBody?.(args) ?? args,\n ),\n });\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n const result = await super.doGenerate(toolChoiceOptions);\n\n // @ts-expect-error accessing response body from parent result\n const usage = result.response?.body?.usage;\n const logprobs = extractMoonshotAIChatLogprobs(result.response?.body);\n\n return {\n ...result,\n usage: convertMoonshotAIChatUsage(usage),\n providerMetadata: {\n ...result.providerMetadata,\n moonshotai: {\n ...result.providerMetadata?.moonshotai,\n ...(logprobs != null && { logprobs }),\n },\n },\n warnings: [\n ...result.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const originalIncludeRawChunks = options.includeRawChunks;\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n\n // Enable raw chunks to capture pre-Zod usage data, since MoonshotAI\n // returns cached_tokens at the top level of usage (not nested in\n // prompt_tokens_details) and the parent's z.object() schema strips it.\n const result = await super.doStream({\n ...toolChoiceOptions,\n includeRawChunks: true,\n });\n\n let rawUsage: unknown = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV2StreamPart,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n if (chunk.type === 'stream-start') {\n controller.enqueue({\n ...chunk,\n warnings: [\n ...chunk.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n });\n return;\n }\n\n if (chunk.type === 'raw') {\n // Capture raw usage data before Zod strips cached_tokens\n const rawValue = chunk.rawValue as Record<string, unknown>;\n if (rawValue?.usage != null) {\n rawUsage = rawValue.usage;\n }\n\n const logprobs = extractMoonshotAIChatLogprobs(rawValue);\n if (logprobs?.content != null) {\n contentLogprobs.push(...logprobs.content);\n }\n\n // Only forward raw chunks if originally requested\n if (originalIncludeRawChunks) {\n controller.enqueue(chunk);\n }\n return;\n }\n\n if (chunk.type === 'finish') {\n // Re-convert usage from raw data to capture cached_tokens\n controller.enqueue({\n ...chunk,\n usage: rawUsage\n ? convertMoonshotAIChatUsage(rawUsage as any)\n : chunk.usage,\n providerMetadata: {\n ...chunk.providerMetadata,\n moonshotai: {\n ...chunk.providerMetadata?.moonshotai,\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n },\n },\n });\n return;\n }\n\n controller.enqueue(chunk);\n },\n }),\n ),\n };\n }\n}\n","import type { LanguageModelV2Usage } from '@ai-sdk/provider';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n total_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): LanguageModelV2Usage {\n if (usage == null) {\n return {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n }\n\n const cachedInputTokens =\n usage.cached_tokens ??\n usage.prompt_tokens_details?.cached_tokens ??\n undefined;\n\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? undefined;\n\n return {\n inputTokens: usage.prompt_tokens ?? undefined,\n outputTokens: usage.completion_tokens ?? undefined,\n totalTokens: usage.total_tokens ?? undefined,\n reasoningTokens,\n cachedInputTokens,\n };\n}\n","import type { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport type { JSONValue } from '@ai-sdk/provider';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction getFirstChoice(value: Record<string, unknown>) {\n const choices = value.choices;\n return Array.isArray(choices) && isRecord(choices[0])\n ? choices[0]\n : undefined;\n}\n\nfunction getToolCallTypes(value: unknown): Array<'function'> | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.flatMap(toolCall =>\n isRecord(toolCall) && toolCall.type === 'function' ? [toolCall.type] : [],\n );\n}\n\nfunction extractMetadata(value: unknown): Record<string, JSONValue> {\n if (!isRecord(value)) {\n return {};\n }\n\n const choice = getFirstChoice(value);\n const message =\n choice != null && isRecord(choice.message) ? choice.message : undefined;\n const toolCallTypes = getToolCallTypes(message?.tool_calls);\n\n return {\n ...(value.object === 'chat.completion' && {\n responseObject: value.object,\n }),\n ...(typeof choice?.index === 'number' && {\n choiceIndex: choice.index,\n }),\n ...(message?.role === 'assistant' && {\n messageRole: message.role,\n }),\n ...(toolCallTypes != null && { toolCallTypes }),\n };\n}\n\nexport const moonshotAIChatMetadataExtractor: MetadataExtractor = {\n async extractMetadata({ parsedBody }) {\n return { moonshotai: extractMetadata(parsedBody) };\n },\n\n createStreamExtractor() {\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 processChunk(parsedChunk) {\n if (!isRecord(parsedChunk)) {\n return;\n }\n\n if (parsedChunk.object === 'chat.completion.chunk') {\n responseObject = parsedChunk.object;\n }\n\n const choice = getFirstChoice(parsedChunk);\n if (typeof choice?.index === 'number') {\n choiceIndex = choice.index;\n }\n\n const delta =\n choice != null && isRecord(choice.delta) ? choice.delta : undefined;\n if (delta?.role === 'assistant') {\n messageRole = delta.role;\n }\n\n if (Array.isArray(delta?.tool_calls)) {\n for (const [fallbackIndex, toolCall] of delta.tool_calls.entries()) {\n if (!isRecord(toolCall) || toolCall.type !== 'function') {\n continue;\n }\n\n const index =\n typeof toolCall.index === 'number'\n ? toolCall.index\n : fallbackIndex;\n toolCallTypes.set(index, toolCall.type);\n }\n }\n },\n\n buildMetadata() {\n return {\n moonshotai: {\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","import type { LanguageModelV2FunctionTool } 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 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 function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport const moonshotaiProviderOptions = 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\nexport type MoonshotAIProviderOptions = {\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};\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 LanguageModelV2FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema'\n > & {\n /** Whether Moonshot should enforce the tool input schema strictly. */\n strict?: boolean;\n }\n >;\n };\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\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\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\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 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 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(([key, item]) => [\n key,\n normalizeDefinition(item, 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","// 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":["import_provider","import_provider_utils","import_v4","import_provider","import_v4","isRecord","key"]}
package/dist/index.mjs CHANGED
@@ -829,7 +829,7 @@ var MoonshotAIChatLanguageModel = class extends OpenAICompatibleChatLanguageMode
829
829
  };
830
830
 
831
831
  // src/version.ts
832
- var VERSION = true ? "0.0.30" : "0.0.0-test";
832
+ var VERSION = true ? "0.0.31" : "0.0.0-test";
833
833
 
834
834
  // src/moonshotai-provider.ts
835
835
  var moonshotaiErrorSchema = z3.object({
@@ -844,8 +844,8 @@ var moonshotaiErrorStructure = {
844
844
  errorToMessage: (data) => data.error.message
845
845
  };
846
846
  var defaultBaseURL = "https://api.moonshot.ai/v1";
847
- function getModelStructuredOutputSupport(modelId) {
848
- return modelId.startsWith("kimi-k") || modelId === "moonshot-v1-8k" || modelId === "moonshot-v1-32k" || modelId === "moonshot-v1-128k" || modelId === "moonshot-v1-auto" || modelId === "moonshot-v1-8k-vision-preview" || modelId === "moonshot-v1-32k-vision-preview" || modelId === "moonshot-v1-128k-vision-preview";
847
+ function getModelStructuredOutputSupport(_modelId) {
848
+ return true;
849
849
  }
850
850
  function createMoonshotAI(options = {}) {
851
851
  var _a;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-moonshotai-chat-usage.ts","../src/moonshotai-chat-metadata-extractor.ts","../src/moonshotai-chat-options.ts","../src/normalize-json-schema-for-mfjs.ts","../src/version.ts"],"sourcesContent":["import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport {\n type LanguageModelV2,\n type ProviderV2,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotaiErrorSchema>;\n\nconst moonshotaiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nconst moonshotaiErrorStructure: ProviderErrorStructure<MoonshotAIErrorData> = {\n errorSchema: moonshotaiErrorSchema,\n errorToMessage: data => data.error.message,\n};\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 ProviderV2 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\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 interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `moonshotai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n includeUsage: true,\n errorStructure: moonshotaiErrorStructure,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v2' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\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 { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type { OpenAICompatibleChatConfig } from '@ai-sdk/openai-compatible/internal';\nimport {\n InvalidPromptError,\n type JSONValue,\n type LanguageModelV2,\n type LanguageModelV2CallOptions,\n type LanguageModelV2CallWarning,\n type LanguageModelV2Prompt,\n type LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport { parseProviderOptions } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { moonshotAIChatMetadataExtractor } from './moonshotai-chat-metadata-extractor';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n type MoonshotAIChatModelId,\n type MoonshotAIProviderOptions,\n moonshotaiAllMessageProviderOptions,\n moonshotaiProviderOptions,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nfunction transformMoonshotRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n strictJsonSchema,\n max_tokens: maxTokens,\n logprobs,\n topLogprobs,\n ...transformedArgs\n } = args;\n const moonshotArgs: Record<string, any> = {\n ...transformedArgs,\n ...((logprobs === true || topLogprobs != null) && { logprobs: true }),\n ...(topLogprobs != null && { top_logprobs: topLogprobs }),\n ...(maxTokens != null ? { max_completion_tokens: maxTokens } : {}),\n };\n\n if (Array.isArray(moonshotArgs.messages)) {\n moonshotArgs.messages = moonshotArgs.messages.map(\n (message: Record<string, unknown>) => {\n if (message.role !== 'system' || !Array.isArray(message.tools)) {\n return message;\n }\n\n const { content: _content, ...dynamicToolMessage } = message;\n return dynamicToolMessage;\n },\n );\n }\n\n const responseFormat = moonshotArgs.response_format;\n\n if (\n responseFormat?.type === 'json_object' &&\n moonshotArgs.messages?.some(\n (message: Record<string, unknown>) => message.partial === true,\n )\n ) {\n throw new InvalidPromptError({\n prompt: args.messages,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n\n if (\n responseFormat?.type !== 'json_schema' ||\n responseFormat.json_schema?.schema == null\n ) {\n return moonshotArgs;\n }\n\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.json_schema.schema;\n\n return {\n ...moonshotArgs,\n response_format: {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.json_schema.name ?? 'response',\n strict: strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n },\n };\n}\n\nconst moonshotAIValidatedOptionsSchema = moonshotaiProviderOptions.pick({\n logprobs: true,\n topLogprobs: true,\n prediction: true,\n});\n\nasync function validateProviderOptions(\n options: LanguageModelV2CallOptions,\n): Promise<void> {\n await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: options.providerOptions,\n schema: moonshotAIValidatedOptionsSchema,\n });\n}\n\nasync function prepareMessageOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): Promise<{\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n}> {\n const prompt: LanguageModelV2Prompt = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const [index, message] of options.prompt.entries()) {\n const messageOptions = await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: message.providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (messageOptions?.partial === true && message.role !== 'assistant') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (messageOptions?.tools != null && message.role !== 'system') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n if (\n messageOptions?.partial === true &&\n index !== options.prompt.length - 1\n ) {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (messageOptions?.tools?.length && message.role === 'system') {\n if (message.content.length > 0) {\n throw new InvalidPromptError({\n prompt: options.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 const modelFamily = getMoonshotAIModelFamily(modelId);\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'other',\n message: `Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted for model \"${modelId}\".`,\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: {\n ...message.providerOptions?.openaiCompatible,\n tools: messageOptions.tools.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n ...(tool.description != null\n ? { description: tool.description }\n : {}),\n parameters: normalizeJsonSchemaForMFJS(\n tool.inputSchema,\n ) as JSONValue,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n })),\n },\n },\n });\n continue;\n }\n\n if (messageOptions?.name == null && messageOptions?.partial !== true) {\n prompt.push(message);\n continue;\n }\n\n if (message.role === 'tool' && messageOptions?.name != null) {\n warnings.push({\n type: 'other',\n message:\n 'Moonshot AI does not support message names on tool messages. The name has been omitted.',\n });\n prompt.push(message);\n continue;\n }\n\n const openAICompatibleOptions = {\n ...message.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && { name: messageOptions.name }),\n ...(messageOptions.partial === true && { partial: true }),\n };\n\n // The v5 OpenAI-compatible converter reads metadata from the text part\n // for single-part user messages and from the message for every other\n // supported message shape.\n if (\n message.role === 'user' &&\n message.content.length === 1 &&\n message.content[0].type === 'text'\n ) {\n const textPart = message.content[0];\n prompt.push({\n ...message,\n content: [\n {\n ...textPart,\n providerOptions: {\n ...textPart.providerOptions,\n openaiCompatible: {\n ...openAICompatibleOptions,\n ...textPart.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && {\n name: messageOptions.name,\n }),\n },\n },\n },\n ],\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: openAICompatibleOptions,\n },\n });\n }\n\n return {\n options: { ...options, prompt },\n warnings,\n };\n}\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\ntype MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nfunction extractMoonshotAIChatLogprobs(value: unknown) {\n const result = moonshotAIChatLogprobsSchema.safeParse(\n (value as { choices?: Array<{ logprobs?: unknown }> })?.choices?.[0]\n ?.logprobs,\n );\n\n return result.success ? (result.data ?? undefined) : undefined;\n}\n\nfunction prepareSamplingOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (!isMoonshotAIKimiModel(modelId)) {\n return { options, warnings: [] };\n }\n\n const warnings: LanguageModelV2CallWarning[] = [];\n const samplingSettings = [\n ['temperature', options.temperature],\n ['topP', options.topP],\n ['frequencyPenalty', options.frequencyPenalty],\n ['presencePenalty', options.presencePenalty],\n ] as const;\n\n for (const [setting, value] of samplingSettings) {\n if (value != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting,\n details: `${setting} is fixed by model \"${modelId}\" and has been omitted.`,\n });\n }\n }\n\n return {\n options: {\n ...options,\n temperature: undefined,\n topP: undefined,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n },\n warnings,\n };\n}\n\nfunction prepareToolChoiceOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (\n options.toolChoice?.type !== 'required' ||\n !['kimi-k2.6', 'kimi-k2.7'].includes(getMoonshotAIModelFamily(modelId))\n ) {\n return { options, warnings: [] };\n }\n\n return {\n options: { ...options, toolChoice: undefined },\n warnings: [\n {\n type: 'unsupported-setting',\n setting: 'toolChoice',\n details: `toolChoice \"required\" is not supported by model \"${modelId}\" and has been omitted; use \"auto\" or select a specific tool instead.`,\n },\n ],\n };\n}\n\nfunction prepareReasoningOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n const providerOptions = options.providerOptions?.moonshotai;\n if (\n providerOptions == null ||\n typeof providerOptions !== 'object' ||\n Array.isArray(providerOptions)\n ) {\n return { options, warnings: [] };\n }\n\n const moonshotOptions = providerOptions as MoonshotAIProviderOptions;\n const {\n reasoningEffort: requestedReasoningEffort,\n thinking: requestedThinking,\n reasoningHistory,\n ...otherMoonshotOptions\n } = moonshotOptions;\n const preserveReasoning = reasoningHistory === 'preserved';\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (requestedThinking?.budgetTokens != null) {\n warnings.push({\n type: 'other',\n message:\n 'providerOptions.moonshotai.thinking.budgetTokens is deprecated because Moonshot Chat Completions does not support budget_tokens. 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 warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${modelId}\".`,\n });\n }\n };\n\n switch (getMoonshotAIModelFamily(modelId)) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K3 always reasons and does not accept providerOptions.moonshotai.thinking. The option has been omitted.',\n });\n }\n reasoningEffort = requestedReasoningEffort;\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K2.7 thinking cannot be disabled. providerOptions.moonshotai.thinking has been omitted.',\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 = requestedThinking?.type;\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 if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.thinking is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'unknown': {\n reasoningEffort = requestedReasoningEffort;\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n }\n\n return {\n options: {\n ...options,\n providerOptions: {\n ...options.providerOptions,\n moonshotai: {\n ...otherMoonshotOptions,\n ...(reasoningEffort != null ? { reasoningEffort } : {}),\n ...(thinking != null ? { thinking } : {}),\n },\n },\n },\n warnings,\n };\n}\n\nexport class MoonshotAIChatLanguageModel extends OpenAICompatibleChatLanguageModel {\n constructor(\n modelId: MoonshotAIChatModelId,\n config: OpenAICompatibleChatConfig,\n ) {\n super(modelId, {\n ...config,\n metadataExtractor: moonshotAIChatMetadataExtractor,\n transformRequestBody: args =>\n transformMoonshotRequestBody(\n config.transformRequestBody?.(args) ?? args,\n ),\n });\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n const result = await super.doGenerate(toolChoiceOptions);\n\n // @ts-expect-error accessing response body from parent result\n const usage = result.response?.body?.usage;\n const logprobs = extractMoonshotAIChatLogprobs(result.response?.body);\n\n return {\n ...result,\n usage: convertMoonshotAIChatUsage(usage),\n providerMetadata: {\n ...result.providerMetadata,\n moonshotai: {\n ...result.providerMetadata?.moonshotai,\n ...(logprobs != null && { logprobs }),\n },\n },\n warnings: [\n ...result.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const originalIncludeRawChunks = options.includeRawChunks;\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n\n // Enable raw chunks to capture pre-Zod usage data, since MoonshotAI\n // returns cached_tokens at the top level of usage (not nested in\n // prompt_tokens_details) and the parent's z.object() schema strips it.\n const result = await super.doStream({\n ...toolChoiceOptions,\n includeRawChunks: true,\n });\n\n let rawUsage: unknown = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV2StreamPart,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n if (chunk.type === 'stream-start') {\n controller.enqueue({\n ...chunk,\n warnings: [\n ...chunk.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n });\n return;\n }\n\n if (chunk.type === 'raw') {\n // Capture raw usage data before Zod strips cached_tokens\n const rawValue = chunk.rawValue as Record<string, unknown>;\n if (rawValue?.usage != null) {\n rawUsage = rawValue.usage;\n }\n\n const logprobs = extractMoonshotAIChatLogprobs(rawValue);\n if (logprobs?.content != null) {\n contentLogprobs.push(...logprobs.content);\n }\n\n // Only forward raw chunks if originally requested\n if (originalIncludeRawChunks) {\n controller.enqueue(chunk);\n }\n return;\n }\n\n if (chunk.type === 'finish') {\n // Re-convert usage from raw data to capture cached_tokens\n controller.enqueue({\n ...chunk,\n usage: rawUsage\n ? convertMoonshotAIChatUsage(rawUsage as any)\n : chunk.usage,\n providerMetadata: {\n ...chunk.providerMetadata,\n moonshotai: {\n ...chunk.providerMetadata?.moonshotai,\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n },\n },\n });\n return;\n }\n\n controller.enqueue(chunk);\n },\n }),\n ),\n };\n }\n}\n","import type { LanguageModelV2Usage } from '@ai-sdk/provider';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n total_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): LanguageModelV2Usage {\n if (usage == null) {\n return {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n }\n\n const cachedInputTokens =\n usage.cached_tokens ??\n usage.prompt_tokens_details?.cached_tokens ??\n undefined;\n\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? undefined;\n\n return {\n inputTokens: usage.prompt_tokens ?? undefined,\n outputTokens: usage.completion_tokens ?? undefined,\n totalTokens: usage.total_tokens ?? undefined,\n reasoningTokens,\n cachedInputTokens,\n };\n}\n","import type { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport type { JSONValue } from '@ai-sdk/provider';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction getFirstChoice(value: Record<string, unknown>) {\n const choices = value.choices;\n return Array.isArray(choices) && isRecord(choices[0])\n ? choices[0]\n : undefined;\n}\n\nfunction getToolCallTypes(value: unknown): Array<'function'> | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.flatMap(toolCall =>\n isRecord(toolCall) && toolCall.type === 'function' ? [toolCall.type] : [],\n );\n}\n\nfunction extractMetadata(value: unknown): Record<string, JSONValue> {\n if (!isRecord(value)) {\n return {};\n }\n\n const choice = getFirstChoice(value);\n const message =\n choice != null && isRecord(choice.message) ? choice.message : undefined;\n const toolCallTypes = getToolCallTypes(message?.tool_calls);\n\n return {\n ...(value.object === 'chat.completion' && {\n responseObject: value.object,\n }),\n ...(typeof choice?.index === 'number' && {\n choiceIndex: choice.index,\n }),\n ...(message?.role === 'assistant' && {\n messageRole: message.role,\n }),\n ...(toolCallTypes != null && { toolCallTypes }),\n };\n}\n\nexport const moonshotAIChatMetadataExtractor: MetadataExtractor = {\n async extractMetadata({ parsedBody }) {\n return { moonshotai: extractMetadata(parsedBody) };\n },\n\n createStreamExtractor() {\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 processChunk(parsedChunk) {\n if (!isRecord(parsedChunk)) {\n return;\n }\n\n if (parsedChunk.object === 'chat.completion.chunk') {\n responseObject = parsedChunk.object;\n }\n\n const choice = getFirstChoice(parsedChunk);\n if (typeof choice?.index === 'number') {\n choiceIndex = choice.index;\n }\n\n const delta =\n choice != null && isRecord(choice.delta) ? choice.delta : undefined;\n if (delta?.role === 'assistant') {\n messageRole = delta.role;\n }\n\n if (Array.isArray(delta?.tool_calls)) {\n for (const [fallbackIndex, toolCall] of delta.tool_calls.entries()) {\n if (!isRecord(toolCall) || toolCall.type !== 'function') {\n continue;\n }\n\n const index =\n typeof toolCall.index === 'number'\n ? toolCall.index\n : fallbackIndex;\n toolCallTypes.set(index, toolCall.type);\n }\n }\n },\n\n buildMetadata() {\n return {\n moonshotai: {\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","import type { LanguageModelV2FunctionTool } 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 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 function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport const moonshotaiProviderOptions = 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\nexport type MoonshotAIProviderOptions = {\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};\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 LanguageModelV2FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema'\n > & {\n /** Whether Moonshot should enforce the tool input schema strictly. */\n strict?: boolean;\n }\n >;\n };\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\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\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\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 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 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(([key, item]) => [\n key,\n normalizeDefinition(item, 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","// 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":["z","z","isRecord","key","z","z"]}
1
+ {"version":3,"sources":["../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-moonshotai-chat-usage.ts","../src/moonshotai-chat-metadata-extractor.ts","../src/moonshotai-chat-options.ts","../src/normalize-json-schema-for-mfjs.ts","../src/version.ts"],"sourcesContent":["import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport {\n type LanguageModelV2,\n type ProviderV2,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotaiErrorSchema>;\n\nconst moonshotaiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nconst moonshotaiErrorStructure: ProviderErrorStructure<MoonshotAIErrorData> = {\n errorSchema: moonshotaiErrorSchema,\n errorToMessage: data => data.error.message,\n};\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 ProviderV2 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV2;\n}\n\nconst defaultBaseURL = 'https://api.moonshot.ai/v1';\n\nexport function getModelStructuredOutputSupport(\n _modelId: MoonshotAIChatModelId,\n): boolean {\n // All known Moonshot models support structured output. Future IDs inherit\n // that support instead of depending on a specific family name.\n return true;\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 interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `moonshotai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n includeUsage: true,\n errorStructure: moonshotaiErrorStructure,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v2' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\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 { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type { OpenAICompatibleChatConfig } from '@ai-sdk/openai-compatible/internal';\nimport {\n InvalidPromptError,\n type JSONValue,\n type LanguageModelV2,\n type LanguageModelV2CallOptions,\n type LanguageModelV2CallWarning,\n type LanguageModelV2Prompt,\n type LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport { parseProviderOptions } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { moonshotAIChatMetadataExtractor } from './moonshotai-chat-metadata-extractor';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n type MoonshotAIChatModelId,\n type MoonshotAIProviderOptions,\n moonshotaiAllMessageProviderOptions,\n moonshotaiProviderOptions,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nfunction transformMoonshotRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n strictJsonSchema,\n max_tokens: maxTokens,\n logprobs,\n topLogprobs,\n ...transformedArgs\n } = args;\n const moonshotArgs: Record<string, any> = {\n ...transformedArgs,\n ...((logprobs === true || topLogprobs != null) && { logprobs: true }),\n ...(topLogprobs != null && { top_logprobs: topLogprobs }),\n ...(maxTokens != null ? { max_completion_tokens: maxTokens } : {}),\n };\n\n if (Array.isArray(moonshotArgs.messages)) {\n moonshotArgs.messages = moonshotArgs.messages.map(\n (message: Record<string, unknown>) => {\n if (message.role !== 'system' || !Array.isArray(message.tools)) {\n return message;\n }\n\n const { content: _content, ...dynamicToolMessage } = message;\n return dynamicToolMessage;\n },\n );\n }\n\n const responseFormat = moonshotArgs.response_format;\n\n if (\n responseFormat?.type === 'json_object' &&\n moonshotArgs.messages?.some(\n (message: Record<string, unknown>) => message.partial === true,\n )\n ) {\n throw new InvalidPromptError({\n prompt: args.messages,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n\n if (\n responseFormat?.type !== 'json_schema' ||\n responseFormat.json_schema?.schema == null\n ) {\n return moonshotArgs;\n }\n\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.json_schema.schema;\n\n return {\n ...moonshotArgs,\n response_format: {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.json_schema.name ?? 'response',\n strict: strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n },\n };\n}\n\nconst moonshotAIValidatedOptionsSchema = moonshotaiProviderOptions.pick({\n logprobs: true,\n topLogprobs: true,\n prediction: true,\n});\n\nasync function validateProviderOptions(\n options: LanguageModelV2CallOptions,\n): Promise<void> {\n await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: options.providerOptions,\n schema: moonshotAIValidatedOptionsSchema,\n });\n}\n\nasync function prepareMessageOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): Promise<{\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n}> {\n const prompt: LanguageModelV2Prompt = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const [index, message] of options.prompt.entries()) {\n const messageOptions = await parseProviderOptions({\n provider: 'moonshotai',\n providerOptions: message.providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (messageOptions?.partial === true && message.role !== 'assistant') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (messageOptions?.tools != null && message.role !== 'system') {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n if (\n messageOptions?.partial === true &&\n index !== options.prompt.length - 1\n ) {\n throw new InvalidPromptError({\n prompt: options.prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (messageOptions?.tools?.length && message.role === 'system') {\n if (message.content.length > 0) {\n throw new InvalidPromptError({\n prompt: options.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 const modelFamily = getMoonshotAIModelFamily(modelId);\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'other',\n message: `Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted for model \"${modelId}\".`,\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: {\n ...message.providerOptions?.openaiCompatible,\n tools: messageOptions.tools.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n ...(tool.description != null\n ? { description: tool.description }\n : {}),\n parameters: normalizeJsonSchemaForMFJS(\n tool.inputSchema,\n ) as JSONValue,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n })),\n },\n },\n });\n continue;\n }\n\n if (messageOptions?.name == null && messageOptions?.partial !== true) {\n prompt.push(message);\n continue;\n }\n\n if (message.role === 'tool' && messageOptions?.name != null) {\n warnings.push({\n type: 'other',\n message:\n 'Moonshot AI does not support message names on tool messages. The name has been omitted.',\n });\n prompt.push(message);\n continue;\n }\n\n const openAICompatibleOptions = {\n ...message.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && { name: messageOptions.name }),\n ...(messageOptions.partial === true && { partial: true }),\n };\n\n // The v5 OpenAI-compatible converter reads metadata from the text part\n // for single-part user messages and from the message for every other\n // supported message shape.\n if (\n message.role === 'user' &&\n message.content.length === 1 &&\n message.content[0].type === 'text'\n ) {\n const textPart = message.content[0];\n prompt.push({\n ...message,\n content: [\n {\n ...textPart,\n providerOptions: {\n ...textPart.providerOptions,\n openaiCompatible: {\n ...openAICompatibleOptions,\n ...textPart.providerOptions?.openaiCompatible,\n ...(messageOptions.name != null && {\n name: messageOptions.name,\n }),\n },\n },\n },\n ],\n });\n continue;\n }\n\n prompt.push({\n ...message,\n providerOptions: {\n ...message.providerOptions,\n openaiCompatible: openAICompatibleOptions,\n },\n });\n }\n\n return {\n options: { ...options, prompt },\n warnings,\n };\n}\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\ntype MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nfunction extractMoonshotAIChatLogprobs(value: unknown) {\n const result = moonshotAIChatLogprobsSchema.safeParse(\n (value as { choices?: Array<{ logprobs?: unknown }> })?.choices?.[0]\n ?.logprobs,\n );\n\n return result.success ? (result.data ?? undefined) : undefined;\n}\n\nfunction prepareSamplingOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (!isMoonshotAIKimiModel(modelId)) {\n return { options, warnings: [] };\n }\n\n const warnings: LanguageModelV2CallWarning[] = [];\n const samplingSettings = [\n ['temperature', options.temperature],\n ['topP', options.topP],\n ['frequencyPenalty', options.frequencyPenalty],\n ['presencePenalty', options.presencePenalty],\n ] as const;\n\n for (const [setting, value] of samplingSettings) {\n if (value != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting,\n details: `${setting} is fixed by model \"${modelId}\" and has been omitted.`,\n });\n }\n }\n\n return {\n options: {\n ...options,\n temperature: undefined,\n topP: undefined,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n },\n warnings,\n };\n}\n\nfunction prepareToolChoiceOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n if (\n options.toolChoice?.type !== 'required' ||\n !['kimi-k2.6', 'kimi-k2.7'].includes(getMoonshotAIModelFamily(modelId))\n ) {\n return { options, warnings: [] };\n }\n\n return {\n options: { ...options, toolChoice: undefined },\n warnings: [\n {\n type: 'unsupported-setting',\n setting: 'toolChoice',\n details: `toolChoice \"required\" is not supported by model \"${modelId}\" and has been omitted; use \"auto\" or select a specific tool instead.`,\n },\n ],\n };\n}\n\nfunction prepareReasoningOptions({\n modelId,\n options,\n}: {\n modelId: MoonshotAIChatModelId;\n options: LanguageModelV2CallOptions;\n}): {\n options: LanguageModelV2CallOptions;\n warnings: LanguageModelV2CallWarning[];\n} {\n const providerOptions = options.providerOptions?.moonshotai;\n if (\n providerOptions == null ||\n typeof providerOptions !== 'object' ||\n Array.isArray(providerOptions)\n ) {\n return { options, warnings: [] };\n }\n\n const moonshotOptions = providerOptions as MoonshotAIProviderOptions;\n const {\n reasoningEffort: requestedReasoningEffort,\n thinking: requestedThinking,\n reasoningHistory,\n ...otherMoonshotOptions\n } = moonshotOptions;\n const preserveReasoning = reasoningHistory === 'preserved';\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (requestedThinking?.budgetTokens != null) {\n warnings.push({\n type: 'other',\n message:\n 'providerOptions.moonshotai.thinking.budgetTokens is deprecated because Moonshot Chat Completions does not support budget_tokens. 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 warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${modelId}\".`,\n });\n }\n };\n\n switch (getMoonshotAIModelFamily(modelId)) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K3 always reasons and does not accept providerOptions.moonshotai.thinking. The option has been omitted.',\n });\n }\n reasoningEffort = requestedReasoningEffort;\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details:\n 'Kimi K2.7 thinking cannot be disabled. providerOptions.moonshotai.thinking has been omitted.',\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 = requestedThinking?.type;\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 if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.thinking is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n case 'unknown': {\n reasoningEffort = requestedReasoningEffort;\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `providerOptions.moonshotai.reasoningHistory 'preserved' is not supported by model \"${modelId}\" and has been omitted.`,\n });\n }\n break;\n }\n }\n\n return {\n options: {\n ...options,\n providerOptions: {\n ...options.providerOptions,\n moonshotai: {\n ...otherMoonshotOptions,\n ...(reasoningEffort != null ? { reasoningEffort } : {}),\n ...(thinking != null ? { thinking } : {}),\n },\n },\n },\n warnings,\n };\n}\n\nexport class MoonshotAIChatLanguageModel extends OpenAICompatibleChatLanguageModel {\n constructor(\n modelId: MoonshotAIChatModelId,\n config: OpenAICompatibleChatConfig,\n ) {\n super(modelId, {\n ...config,\n metadataExtractor: moonshotAIChatMetadataExtractor,\n transformRequestBody: args =>\n transformMoonshotRequestBody(\n config.transformRequestBody?.(args) ?? args,\n ),\n });\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n const result = await super.doGenerate(toolChoiceOptions);\n\n // @ts-expect-error accessing response body from parent result\n const usage = result.response?.body?.usage;\n const logprobs = extractMoonshotAIChatLogprobs(result.response?.body);\n\n return {\n ...result,\n usage: convertMoonshotAIChatUsage(usage),\n providerMetadata: {\n ...result.providerMetadata,\n moonshotai: {\n ...result.providerMetadata?.moonshotai,\n ...(logprobs != null && { logprobs }),\n },\n },\n warnings: [\n ...result.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { options: messageOptions, warnings: messageWarnings } =\n await prepareMessageOptions({ modelId: this.modelId, options });\n await validateProviderOptions(messageOptions);\n\n const originalIncludeRawChunks = options.includeRawChunks;\n const { options: samplingOptions, warnings: samplingWarnings } =\n prepareSamplingOptions({\n modelId: this.modelId,\n options: messageOptions,\n });\n const { options: sanitizedOptions, warnings: reasoningWarnings } =\n prepareReasoningOptions({\n modelId: this.modelId,\n options: samplingOptions,\n });\n const { options: toolChoiceOptions, warnings: toolChoiceWarnings } =\n prepareToolChoiceOptions({\n modelId: this.modelId,\n options: sanitizedOptions,\n });\n\n // Enable raw chunks to capture pre-Zod usage data, since MoonshotAI\n // returns cached_tokens at the top level of usage (not nested in\n // prompt_tokens_details) and the parent's z.object() schema strips it.\n const result = await super.doStream({\n ...toolChoiceOptions,\n includeRawChunks: true,\n });\n\n let rawUsage: unknown = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV2StreamPart,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n if (chunk.type === 'stream-start') {\n controller.enqueue({\n ...chunk,\n warnings: [\n ...chunk.warnings,\n ...messageWarnings,\n ...samplingWarnings,\n ...reasoningWarnings,\n ...toolChoiceWarnings,\n ],\n });\n return;\n }\n\n if (chunk.type === 'raw') {\n // Capture raw usage data before Zod strips cached_tokens\n const rawValue = chunk.rawValue as Record<string, unknown>;\n if (rawValue?.usage != null) {\n rawUsage = rawValue.usage;\n }\n\n const logprobs = extractMoonshotAIChatLogprobs(rawValue);\n if (logprobs?.content != null) {\n contentLogprobs.push(...logprobs.content);\n }\n\n // Only forward raw chunks if originally requested\n if (originalIncludeRawChunks) {\n controller.enqueue(chunk);\n }\n return;\n }\n\n if (chunk.type === 'finish') {\n // Re-convert usage from raw data to capture cached_tokens\n controller.enqueue({\n ...chunk,\n usage: rawUsage\n ? convertMoonshotAIChatUsage(rawUsage as any)\n : chunk.usage,\n providerMetadata: {\n ...chunk.providerMetadata,\n moonshotai: {\n ...chunk.providerMetadata?.moonshotai,\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n },\n },\n });\n return;\n }\n\n controller.enqueue(chunk);\n },\n }),\n ),\n };\n }\n}\n","import type { LanguageModelV2Usage } from '@ai-sdk/provider';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n total_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): LanguageModelV2Usage {\n if (usage == null) {\n return {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n }\n\n const cachedInputTokens =\n usage.cached_tokens ??\n usage.prompt_tokens_details?.cached_tokens ??\n undefined;\n\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? undefined;\n\n return {\n inputTokens: usage.prompt_tokens ?? undefined,\n outputTokens: usage.completion_tokens ?? undefined,\n totalTokens: usage.total_tokens ?? undefined,\n reasoningTokens,\n cachedInputTokens,\n };\n}\n","import type { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport type { JSONValue } from '@ai-sdk/provider';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction getFirstChoice(value: Record<string, unknown>) {\n const choices = value.choices;\n return Array.isArray(choices) && isRecord(choices[0])\n ? choices[0]\n : undefined;\n}\n\nfunction getToolCallTypes(value: unknown): Array<'function'> | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.flatMap(toolCall =>\n isRecord(toolCall) && toolCall.type === 'function' ? [toolCall.type] : [],\n );\n}\n\nfunction extractMetadata(value: unknown): Record<string, JSONValue> {\n if (!isRecord(value)) {\n return {};\n }\n\n const choice = getFirstChoice(value);\n const message =\n choice != null && isRecord(choice.message) ? choice.message : undefined;\n const toolCallTypes = getToolCallTypes(message?.tool_calls);\n\n return {\n ...(value.object === 'chat.completion' && {\n responseObject: value.object,\n }),\n ...(typeof choice?.index === 'number' && {\n choiceIndex: choice.index,\n }),\n ...(message?.role === 'assistant' && {\n messageRole: message.role,\n }),\n ...(toolCallTypes != null && { toolCallTypes }),\n };\n}\n\nexport const moonshotAIChatMetadataExtractor: MetadataExtractor = {\n async extractMetadata({ parsedBody }) {\n return { moonshotai: extractMetadata(parsedBody) };\n },\n\n createStreamExtractor() {\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 processChunk(parsedChunk) {\n if (!isRecord(parsedChunk)) {\n return;\n }\n\n if (parsedChunk.object === 'chat.completion.chunk') {\n responseObject = parsedChunk.object;\n }\n\n const choice = getFirstChoice(parsedChunk);\n if (typeof choice?.index === 'number') {\n choiceIndex = choice.index;\n }\n\n const delta =\n choice != null && isRecord(choice.delta) ? choice.delta : undefined;\n if (delta?.role === 'assistant') {\n messageRole = delta.role;\n }\n\n if (Array.isArray(delta?.tool_calls)) {\n for (const [fallbackIndex, toolCall] of delta.tool_calls.entries()) {\n if (!isRecord(toolCall) || toolCall.type !== 'function') {\n continue;\n }\n\n const index =\n typeof toolCall.index === 'number'\n ? toolCall.index\n : fallbackIndex;\n toolCallTypes.set(index, toolCall.type);\n }\n }\n },\n\n buildMetadata() {\n return {\n moonshotai: {\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","import type { LanguageModelV2FunctionTool } 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 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 function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport const moonshotaiProviderOptions = 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\nexport type MoonshotAIProviderOptions = {\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};\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 LanguageModelV2FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema'\n > & {\n /** Whether Moonshot should enforce the tool input schema strictly. */\n strict?: boolean;\n }\n >;\n };\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\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\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\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 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 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(([key, item]) => [\n key,\n normalizeDefinition(item, 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","// 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":["z","z","isRecord","key","z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/moonshotai",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -25,8 +25,8 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/provider": "2.0.5",
29
28
  "@ai-sdk/openai-compatible": "1.0.58",
29
+ "@ai-sdk/provider": "2.0.5",
30
30
  "@ai-sdk/provider-utils": "3.0.41"
31
31
  },
32
32
  "devDependencies": {
@@ -71,18 +71,11 @@ export interface MoonshotAIProvider extends ProviderV2 {
71
71
  const defaultBaseURL = 'https://api.moonshot.ai/v1';
72
72
 
73
73
  export function getModelStructuredOutputSupport(
74
- modelId: MoonshotAIChatModelId,
74
+ _modelId: MoonshotAIChatModelId,
75
75
  ): boolean {
76
- return (
77
- modelId.startsWith('kimi-k') ||
78
- modelId === 'moonshot-v1-8k' ||
79
- modelId === 'moonshot-v1-32k' ||
80
- modelId === 'moonshot-v1-128k' ||
81
- modelId === 'moonshot-v1-auto' ||
82
- modelId === 'moonshot-v1-8k-vision-preview' ||
83
- modelId === 'moonshot-v1-32k-vision-preview' ||
84
- modelId === 'moonshot-v1-128k-vision-preview'
85
- );
76
+ // All known Moonshot models support structured output. Future IDs inherit
77
+ // that support instead of depending on a specific family name.
78
+ return true;
86
79
  }
87
80
 
88
81
  export function createMoonshotAI(