@ai-sdk/moonshotai 3.0.56 → 3.0.58
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 +15 -0
- package/dist/index.js +51 -59
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @ai-sdk/moonshotai
|
|
2
2
|
|
|
3
|
+
## 3.0.58
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [af9597b]
|
|
8
|
+
- Updated dependencies [bc49f78]
|
|
9
|
+
- @ai-sdk/provider-utils@5.0.49
|
|
10
|
+
|
|
11
|
+
## 3.0.57
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [be877ff]
|
|
16
|
+
- @ai-sdk/provider-utils@5.0.48
|
|
17
|
+
|
|
3
18
|
## 3.0.56
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -241,7 +241,7 @@ function prepareTools({
|
|
|
241
241
|
toolChoice,
|
|
242
242
|
modelId
|
|
243
243
|
}) {
|
|
244
|
-
tools =
|
|
244
|
+
tools = tools?.length ? tools : void 0;
|
|
245
245
|
const toolWarnings = [];
|
|
246
246
|
if (tools == null) {
|
|
247
247
|
return { tools: void 0, toolChoice: void 0, toolWarnings };
|
|
@@ -350,7 +350,6 @@ async function convertToMoonshotAIChatMessages({
|
|
|
350
350
|
providerOptionsName = "moonshotai",
|
|
351
351
|
responseFormat
|
|
352
352
|
}) {
|
|
353
|
-
var _a, _b;
|
|
354
353
|
const messages = [];
|
|
355
354
|
const warnings = [];
|
|
356
355
|
const modelFamily = modelId == null ? "unknown" : getMoonshotAIModelFamily(modelId);
|
|
@@ -360,13 +359,13 @@ async function convertToMoonshotAIChatMessages({
|
|
|
360
359
|
providerOptions,
|
|
361
360
|
schema: moonshotaiAllMessageProviderOptions
|
|
362
361
|
});
|
|
363
|
-
if (
|
|
362
|
+
if (moonshotMessageOptions?.partial === true && role !== "assistant") {
|
|
364
363
|
throw new InvalidPromptError({
|
|
365
364
|
prompt,
|
|
366
365
|
message: "Moonshot AI Partial Mode requires `partial: true` on an assistant message."
|
|
367
366
|
});
|
|
368
367
|
}
|
|
369
|
-
if (
|
|
368
|
+
if (moonshotMessageOptions?.tools != null && role !== "system") {
|
|
370
369
|
throw new InvalidPromptError({
|
|
371
370
|
prompt,
|
|
372
371
|
message: "Moonshot dynamic tools must be configured on a system message."
|
|
@@ -374,7 +373,7 @@ async function convertToMoonshotAIChatMessages({
|
|
|
374
373
|
}
|
|
375
374
|
switch (role) {
|
|
376
375
|
case "system": {
|
|
377
|
-
if (
|
|
376
|
+
if (moonshotMessageOptions?.tools?.length) {
|
|
378
377
|
if (content.length > 0) {
|
|
379
378
|
throw new InvalidPromptError({
|
|
380
379
|
prompt,
|
|
@@ -390,17 +389,17 @@ async function convertToMoonshotAIChatMessages({
|
|
|
390
389
|
break;
|
|
391
390
|
}
|
|
392
391
|
const { tools, toolWarnings } = prepareTools({
|
|
393
|
-
modelId: modelId
|
|
392
|
+
modelId: modelId ?? "custom-model",
|
|
394
393
|
tools: moonshotMessageOptions.tools
|
|
395
394
|
});
|
|
396
395
|
warnings.push(...toolWarnings);
|
|
397
|
-
messages.push({ role: "system", tools: tools
|
|
396
|
+
messages.push({ role: "system", tools: tools ?? [] });
|
|
398
397
|
break;
|
|
399
398
|
}
|
|
400
399
|
messages.push({
|
|
401
400
|
role: "system",
|
|
402
401
|
content,
|
|
403
|
-
...
|
|
402
|
+
...moonshotMessageOptions?.name != null && {
|
|
404
403
|
name: moonshotMessageOptions.name
|
|
405
404
|
}
|
|
406
405
|
});
|
|
@@ -411,7 +410,7 @@ async function convertToMoonshotAIChatMessages({
|
|
|
411
410
|
messages.push({
|
|
412
411
|
role: "user",
|
|
413
412
|
content: content[0].text,
|
|
414
|
-
...
|
|
413
|
+
...moonshotMessageOptions?.name != null && {
|
|
415
414
|
name: moonshotMessageOptions.name
|
|
416
415
|
}
|
|
417
416
|
});
|
|
@@ -504,21 +503,21 @@ async function convertToMoonshotAIChatMessages({
|
|
|
504
503
|
}
|
|
505
504
|
}
|
|
506
505
|
}),
|
|
507
|
-
...
|
|
506
|
+
...moonshotMessageOptions?.name != null && {
|
|
508
507
|
name: moonshotMessageOptions.name
|
|
509
508
|
}
|
|
510
509
|
});
|
|
511
510
|
break;
|
|
512
511
|
}
|
|
513
512
|
case "assistant": {
|
|
514
|
-
if (
|
|
513
|
+
if (moonshotMessageOptions?.partial === true) {
|
|
515
514
|
if (index !== prompt.length - 1) {
|
|
516
515
|
throw new InvalidPromptError({
|
|
517
516
|
prompt,
|
|
518
517
|
message: "Moonshot AI Partial Mode requires the partial assistant message to be the final message."
|
|
519
518
|
});
|
|
520
519
|
}
|
|
521
|
-
if (
|
|
520
|
+
if (responseFormat?.type === "json_object") {
|
|
522
521
|
throw new InvalidPromptError({
|
|
523
522
|
prompt,
|
|
524
523
|
message: "Moonshot AI Partial Mode cannot be combined with JSON object response format."
|
|
@@ -554,10 +553,10 @@ async function convertToMoonshotAIChatMessages({
|
|
|
554
553
|
messages.push({
|
|
555
554
|
role: "assistant",
|
|
556
555
|
content: toolCalls.length > 0 ? text || null : text,
|
|
557
|
-
...
|
|
556
|
+
...moonshotMessageOptions?.name != null && {
|
|
558
557
|
name: moonshotMessageOptions.name
|
|
559
558
|
},
|
|
560
|
-
...
|
|
559
|
+
...moonshotMessageOptions?.partial === true && {
|
|
561
560
|
partial: true
|
|
562
561
|
},
|
|
563
562
|
...reasoning.length > 0 ? { reasoning_content: reasoning } : {},
|
|
@@ -566,7 +565,7 @@ async function convertToMoonshotAIChatMessages({
|
|
|
566
565
|
break;
|
|
567
566
|
}
|
|
568
567
|
case "tool": {
|
|
569
|
-
if (
|
|
568
|
+
if (moonshotMessageOptions?.name != null) {
|
|
570
569
|
warnings.push({
|
|
571
570
|
type: "unsupported",
|
|
572
571
|
feature: "message name on tool messages"
|
|
@@ -584,7 +583,7 @@ async function convertToMoonshotAIChatMessages({
|
|
|
584
583
|
contentValue = output.value;
|
|
585
584
|
break;
|
|
586
585
|
case "execution-denied":
|
|
587
|
-
contentValue =
|
|
586
|
+
contentValue = output.reason ?? "Tool call execution denied.";
|
|
588
587
|
break;
|
|
589
588
|
case "content":
|
|
590
589
|
case "json":
|
|
@@ -612,14 +611,13 @@ async function convertToMoonshotAIChatMessages({
|
|
|
612
611
|
// src/convert-moonshotai-chat-usage.ts
|
|
613
612
|
import { createNullLanguageModelUsage } from "@ai-sdk/provider-utils";
|
|
614
613
|
function convertMoonshotAIChatUsage(usage) {
|
|
615
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
616
614
|
if (usage == null) {
|
|
617
615
|
return createNullLanguageModelUsage();
|
|
618
616
|
}
|
|
619
|
-
const promptTokens =
|
|
620
|
-
const completionTokens =
|
|
621
|
-
const cacheReadTokens =
|
|
622
|
-
const reasoningTokens =
|
|
617
|
+
const promptTokens = usage.prompt_tokens ?? 0;
|
|
618
|
+
const completionTokens = usage.completion_tokens ?? 0;
|
|
619
|
+
const cacheReadTokens = usage.cached_tokens ?? usage.prompt_tokens_details?.cached_tokens ?? 0;
|
|
620
|
+
const reasoningTokens = usage.completion_tokens_details?.reasoning_tokens ?? 0;
|
|
623
621
|
return {
|
|
624
622
|
inputTokens: {
|
|
625
623
|
total: promptTokens,
|
|
@@ -760,11 +758,10 @@ var moonshotAIChatChunkSchema = lazySchema(
|
|
|
760
758
|
|
|
761
759
|
// src/moonshotai-chat-language-model.ts
|
|
762
760
|
function createMoonshotAIStreamError(error, data) {
|
|
763
|
-
var _a, _b;
|
|
764
761
|
return createProviderStreamError({
|
|
765
762
|
message: error.message,
|
|
766
|
-
type:
|
|
767
|
-
code:
|
|
763
|
+
type: error.type ?? void 0,
|
|
764
|
+
code: error.code ?? void 0,
|
|
768
765
|
...getMoonshotAIStreamErrorMetadata(error.type),
|
|
769
766
|
data
|
|
770
767
|
});
|
|
@@ -848,12 +845,11 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
848
845
|
toolChoice,
|
|
849
846
|
tools
|
|
850
847
|
}) {
|
|
851
|
-
|
|
852
|
-
const moonshotOptions = (_a = await parseProviderOptions2({
|
|
848
|
+
const moonshotOptions = await parseProviderOptions2({
|
|
853
849
|
provider: this.providerOptionsName,
|
|
854
850
|
providerOptions,
|
|
855
851
|
schema: moonshotaiLanguageModelOptions
|
|
856
|
-
})
|
|
852
|
+
}) ?? {};
|
|
857
853
|
const allWarnings = [];
|
|
858
854
|
if (topK != null) {
|
|
859
855
|
allWarnings.push({ type: "unsupported", feature: "topK" });
|
|
@@ -899,7 +895,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
899
895
|
const requestedThinking = moonshotOptions.thinking;
|
|
900
896
|
const requestedReasoningEffort = moonshotOptions.reasoningEffort;
|
|
901
897
|
const preserveReasoning = moonshotOptions.reasoningHistory === "preserved";
|
|
902
|
-
if (
|
|
898
|
+
if (requestedThinking?.budgetTokens != null) {
|
|
903
899
|
allWarnings.push({
|
|
904
900
|
type: "deprecated",
|
|
905
901
|
setting: "providerOptions.moonshotai.thinking.budgetTokens",
|
|
@@ -933,7 +929,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
933
929
|
details: "Kimi K3 reasoning cannot be disabled."
|
|
934
930
|
});
|
|
935
931
|
}
|
|
936
|
-
reasoningEffort = requestedReasoningEffort
|
|
932
|
+
reasoningEffort = requestedReasoningEffort ?? (isCustomReasoning(reasoning) && reasoning !== "none" ? mapReasoningToProviderEffort({
|
|
937
933
|
reasoning,
|
|
938
934
|
effortMap: {
|
|
939
935
|
minimal: "low",
|
|
@@ -943,28 +939,28 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
943
939
|
xhigh: "max"
|
|
944
940
|
},
|
|
945
941
|
warnings: allWarnings
|
|
946
|
-
}) : void 0;
|
|
942
|
+
}) : void 0);
|
|
947
943
|
break;
|
|
948
944
|
}
|
|
949
945
|
case "kimi-k2.7": {
|
|
950
946
|
warnUnsupportedReasoningEffort();
|
|
951
|
-
if (
|
|
947
|
+
if (requestedThinking?.type === "disabled" || reasoning === "none") {
|
|
952
948
|
allWarnings.push({
|
|
953
949
|
type: "unsupported",
|
|
954
|
-
feature:
|
|
950
|
+
feature: requestedThinking?.type === "disabled" ? 'thinking.type "disabled"' : 'reasoning "none"',
|
|
955
951
|
details: "Kimi K2.7 thinking cannot be disabled."
|
|
956
952
|
});
|
|
957
|
-
} else if (
|
|
953
|
+
} else if (requestedThinking?.type === "enabled") {
|
|
958
954
|
thinking = { type: "enabled" };
|
|
959
955
|
}
|
|
960
956
|
break;
|
|
961
957
|
}
|
|
962
958
|
case "kimi-k2.6": {
|
|
963
959
|
warnUnsupportedReasoningEffort();
|
|
964
|
-
const thinkingType =
|
|
960
|
+
const thinkingType = requestedThinking?.type ?? (isCustomReasoning(reasoning) ? reasoning === "none" ? "disabled" : "enabled" : void 0);
|
|
965
961
|
if (thinkingType != null || preserveReasoning) {
|
|
966
962
|
thinking = {
|
|
967
|
-
type: thinkingType
|
|
963
|
+
type: thinkingType ?? "enabled",
|
|
968
964
|
...preserveReasoning ? { keep: "all" } : {}
|
|
969
965
|
};
|
|
970
966
|
}
|
|
@@ -972,7 +968,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
972
968
|
}
|
|
973
969
|
case "kimi-k2.5": {
|
|
974
970
|
warnUnsupportedReasoningEffort();
|
|
975
|
-
const thinkingType =
|
|
971
|
+
const thinkingType = requestedThinking?.type ?? (isCustomReasoning(reasoning) ? reasoning === "none" ? "disabled" : "enabled" : void 0);
|
|
976
972
|
if (thinkingType != null) {
|
|
977
973
|
thinking = { type: thinkingType };
|
|
978
974
|
}
|
|
@@ -1016,7 +1012,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1016
1012
|
details: "Use providerOptions.moonshotai.thinking to control thinking on custom models."
|
|
1017
1013
|
});
|
|
1018
1014
|
}
|
|
1019
|
-
reasoningEffort = requestedReasoningEffort
|
|
1015
|
+
reasoningEffort = requestedReasoningEffort ?? (isCustomReasoning(reasoning) && reasoning !== "none" ? mapReasoningToProviderEffort({
|
|
1020
1016
|
reasoning,
|
|
1021
1017
|
effortMap: {
|
|
1022
1018
|
minimal: "low",
|
|
@@ -1026,8 +1022,8 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1026
1022
|
xhigh: "max"
|
|
1027
1023
|
},
|
|
1028
1024
|
warnings: allWarnings
|
|
1029
|
-
}) : void 0;
|
|
1030
|
-
if (
|
|
1025
|
+
}) : void 0);
|
|
1026
|
+
if (requestedThinking?.type != null) {
|
|
1031
1027
|
thinking = { type: requestedThinking.type };
|
|
1032
1028
|
}
|
|
1033
1029
|
if (preserveReasoning) {
|
|
@@ -1040,14 +1036,14 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1040
1036
|
}
|
|
1041
1037
|
}
|
|
1042
1038
|
let response_format;
|
|
1043
|
-
if (
|
|
1039
|
+
if (responseFormat?.type === "json") {
|
|
1044
1040
|
if (this.config.supportsStructuredOutputs === true && responseFormat.schema != null) {
|
|
1045
1041
|
const { $schema: _$schema, ...schemaWithoutDollarSchema } = responseFormat.schema;
|
|
1046
1042
|
response_format = {
|
|
1047
1043
|
type: "json_schema",
|
|
1048
1044
|
json_schema: {
|
|
1049
|
-
name:
|
|
1050
|
-
strict:
|
|
1045
|
+
name: responseFormat.name ?? "response",
|
|
1046
|
+
strict: moonshotOptions.strictJsonSchema ?? true,
|
|
1051
1047
|
schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema)
|
|
1052
1048
|
}
|
|
1053
1049
|
};
|
|
@@ -1097,7 +1093,6 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1097
1093
|
};
|
|
1098
1094
|
}
|
|
1099
1095
|
async doGenerate(options) {
|
|
1100
|
-
var _a, _b, _c, _d;
|
|
1101
1096
|
const { args, warnings } = await this.getArgs({ ...options });
|
|
1102
1097
|
const {
|
|
1103
1098
|
responseHeaders,
|
|
@@ -1108,7 +1103,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1108
1103
|
path: "/chat/completions",
|
|
1109
1104
|
modelId: this.modelId
|
|
1110
1105
|
}),
|
|
1111
|
-
headers: combineHeaders(
|
|
1106
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
1112
1107
|
body: args,
|
|
1113
1108
|
failedResponseHandler: this.failedResponseHandler,
|
|
1114
1109
|
successfulResponseHandler: createJsonResponseHandler(
|
|
@@ -1129,7 +1124,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1129
1124
|
type: "tool-call",
|
|
1130
1125
|
toolCallId: toolCall.id || generateId(),
|
|
1131
1126
|
toolName: toolCall.function.name,
|
|
1132
|
-
input:
|
|
1127
|
+
input: toolCall.function.arguments ?? ""
|
|
1133
1128
|
});
|
|
1134
1129
|
}
|
|
1135
1130
|
}
|
|
@@ -1141,7 +1136,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1141
1136
|
content,
|
|
1142
1137
|
finishReason: {
|
|
1143
1138
|
unified: mapMoonshotAIFinishReason(choice.finish_reason),
|
|
1144
|
-
raw:
|
|
1139
|
+
raw: choice.finish_reason ?? void 0
|
|
1145
1140
|
},
|
|
1146
1141
|
usage: convertMoonshotAIChatUsage(responseBody.usage),
|
|
1147
1142
|
providerMetadata: {
|
|
@@ -1169,7 +1164,6 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1169
1164
|
};
|
|
1170
1165
|
}
|
|
1171
1166
|
async doStream(options) {
|
|
1172
|
-
var _a, _b;
|
|
1173
1167
|
const { args, warnings } = await this.getArgs({ ...options });
|
|
1174
1168
|
const body = {
|
|
1175
1169
|
...args,
|
|
@@ -1183,7 +1177,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1183
1177
|
path: "/chat/completions",
|
|
1184
1178
|
modelId: this.modelId
|
|
1185
1179
|
}),
|
|
1186
|
-
headers: combineHeaders(
|
|
1180
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
1187
1181
|
body,
|
|
1188
1182
|
failedResponseHandler: this.failedResponseHandler,
|
|
1189
1183
|
successfulResponseHandler: createEventSourceResponseHandler(
|
|
@@ -1218,7 +1212,6 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1218
1212
|
controller.enqueue({ type: "stream-start", warnings });
|
|
1219
1213
|
},
|
|
1220
1214
|
transform(chunk, controller) {
|
|
1221
|
-
var _a2, _b2;
|
|
1222
1215
|
if (options.includeRawChunks) {
|
|
1223
1216
|
controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
|
|
1224
1217
|
}
|
|
@@ -1250,22 +1243,22 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1250
1243
|
responseObject = value.object;
|
|
1251
1244
|
}
|
|
1252
1245
|
const choice = value.choices[0];
|
|
1253
|
-
if (
|
|
1246
|
+
if (choice?.usage != null) {
|
|
1254
1247
|
choiceUsage = choice.usage;
|
|
1255
1248
|
}
|
|
1256
|
-
if (
|
|
1249
|
+
if (choice?.index != null) {
|
|
1257
1250
|
choiceIndex = choice.index;
|
|
1258
1251
|
}
|
|
1259
|
-
if (
|
|
1252
|
+
if (choice?.finish_reason != null) {
|
|
1260
1253
|
finishReason = {
|
|
1261
1254
|
unified: mapMoonshotAIFinishReason(choice.finish_reason),
|
|
1262
1255
|
raw: choice.finish_reason
|
|
1263
1256
|
};
|
|
1264
1257
|
}
|
|
1265
|
-
if (
|
|
1258
|
+
if (choice?.logprobs?.content != null) {
|
|
1266
1259
|
contentLogprobs.push(...choice.logprobs.content);
|
|
1267
1260
|
}
|
|
1268
|
-
if (
|
|
1261
|
+
if (choice?.delta == null) {
|
|
1269
1262
|
return;
|
|
1270
1263
|
}
|
|
1271
1264
|
const delta = choice.delta;
|
|
@@ -1314,7 +1307,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1314
1307
|
isActiveReasoning = false;
|
|
1315
1308
|
}
|
|
1316
1309
|
for (const [index, toolCallDelta] of delta.tool_calls.entries()) {
|
|
1317
|
-
const toolCallIndex =
|
|
1310
|
+
const toolCallIndex = toolCallDelta.index ?? index;
|
|
1318
1311
|
if (toolCallDelta.type != null) {
|
|
1319
1312
|
toolCallTypes.set(toolCallIndex, toolCallDelta.type);
|
|
1320
1313
|
}
|
|
@@ -1336,7 +1329,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1336
1329
|
controller.enqueue({
|
|
1337
1330
|
type: "finish",
|
|
1338
1331
|
finishReason,
|
|
1339
|
-
usage: convertMoonshotAIChatUsage(topLevelUsage
|
|
1332
|
+
usage: convertMoonshotAIChatUsage(topLevelUsage ?? choiceUsage),
|
|
1340
1333
|
providerMetadata: {
|
|
1341
1334
|
[providerOptionsName]: {
|
|
1342
1335
|
...contentLogprobs.length > 0 && {
|
|
@@ -1361,7 +1354,7 @@ var MoonshotAIChatLanguageModel = class _MoonshotAIChatLanguageModel {
|
|
|
1361
1354
|
};
|
|
1362
1355
|
|
|
1363
1356
|
// src/version.ts
|
|
1364
|
-
var VERSION = true ? "3.0.
|
|
1357
|
+
var VERSION = true ? "3.0.58" : "0.0.0-test";
|
|
1365
1358
|
|
|
1366
1359
|
// src/moonshotai-provider.ts
|
|
1367
1360
|
var defaultBaseURL = "https://api.moonshot.ai/v1";
|
|
@@ -1369,8 +1362,7 @@ function getModelStructuredOutputSupport(modelId) {
|
|
|
1369
1362
|
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";
|
|
1370
1363
|
}
|
|
1371
1364
|
function createMoonshotAI(options = {}) {
|
|
1372
|
-
|
|
1373
|
-
const baseURL = withoutTrailingSlash((_a = options.baseURL) != null ? _a : defaultBaseURL);
|
|
1365
|
+
const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);
|
|
1374
1366
|
const getHeaders = () => withUserAgentSuffix(
|
|
1375
1367
|
{
|
|
1376
1368
|
Authorization: `Bearer ${loadApiKey({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-to-moonshotai-chat-messages.ts","../src/moonshotai-chat-options.ts","../src/moonshotai-prepare-tools.ts","../src/normalize-json-schema-for-mfjs.ts","../src/convert-moonshotai-chat-usage.ts","../src/map-moonshotai-finish-reason.ts","../src/moonshotai-chat-api-types.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type { MoonshotAIErrorData } from './moonshotai-chat-api-types';\n\nexport interface MoonshotAIProviderSettings {\n /**\n * Moonshot API key. Default value is taken from the `MOONSHOT_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface MoonshotAIProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n}\n\nconst defaultBaseURL = 'https://api.moonshot.ai/v1';\n\nexport function getModelStructuredOutputSupport(\n modelId: MoonshotAIChatModelId,\n): boolean {\n return (\n modelId.startsWith('kimi-k') ||\n modelId === 'moonshot-v1-8k' ||\n modelId === 'moonshot-v1-32k' ||\n modelId === 'moonshot-v1-128k' ||\n modelId === 'moonshot-v1-auto' ||\n modelId === 'moonshot-v1-8k-vision-preview' ||\n modelId === 'moonshot-v1-32k-vision-preview' ||\n modelId === 'moonshot-v1-128k-vision-preview'\n );\n}\n\nexport function createMoonshotAI(\n options: MoonshotAIProviderSettings = {},\n): MoonshotAIProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'MOONSHOT_API_KEY',\n description: 'Moonshot API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/moonshotai/${VERSION}`,\n );\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n provider: 'moonshotai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n includeUsage: true,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const moonshotai = createMoonshotAI();\n","import type {\n APICallError,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createLanguageModelResponseMetadata as getResponseMetadata,\n createProviderStreamError,\n generateId,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n StreamingToolCallTracker,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type InferSchema,\n type ParseResult,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { convertToMoonshotAIChatMessages } from './convert-to-moonshotai-chat-messages';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { mapMoonshotAIFinishReason } from './map-moonshotai-finish-reason';\nimport {\n moonshotAIChatChunkSchema,\n moonshotAIChatResponseSchema,\n moonshotAIErrorSchema,\n type MoonshotAIChatLogprob,\n type MoonshotAIChatTokenUsage,\n} from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n moonshotaiLanguageModelOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nexport type MoonshotAIChatConfig = {\n provider: string;\n headers?: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n includeUsage?: boolean;\n supportsStructuredOutputs?: boolean;\n};\n\nfunction createMoonshotAIStreamError(\n error: { message: string; type?: string | null; code?: string | null },\n data: unknown,\n) {\n return createProviderStreamError({\n message: error.message,\n type: error.type ?? undefined,\n code: error.code ?? undefined,\n ...getMoonshotAIStreamErrorMetadata(error.type),\n data,\n });\n}\n\nfunction getMoonshotAIStreamErrorMetadata(type?: string | null): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (type) {\n case 'rate_limit_exceeded':\n case 'rate_limit_error':\n return { statusCode: 429, isRetryable: true };\n case 'server_error':\n case 'api_error':\n case 'internal_server_error':\n return { statusCode: 500, isRetryable: true };\n case 'overloaded_error':\n case 'service_unavailable':\n return { statusCode: 503, isRetryable: true };\n case 'timeout':\n case 'timeout_error':\n return { statusCode: 504, isRetryable: true };\n case 'authentication_error':\n case 'invalid_api_key':\n return { statusCode: 401, isRetryable: false };\n case 'permission_error':\n return { statusCode: 403, isRetryable: false };\n case 'not_found_error':\n case 'model_not_found':\n return { statusCode: 404, isRetryable: false };\n case 'bad_request':\n case 'context_length_exceeded':\n case 'invalid_request_error':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n\nexport class MoonshotAIChatLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: MoonshotAIChatModelId;\n\n // Moonshot AI does not fetch external URLs; the AI SDK downloads and\n // inlines URL file parts instead. ms:// file references from the Moonshot\n // Files API are passed through natively.\n readonly supportedUrls = {\n 'image/*': [/^ms:\\/\\//],\n 'video/*': [/^ms:\\/\\//],\n };\n\n private readonly config: MoonshotAIChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n\n static [WORKFLOW_SERIALIZE](model: MoonshotAIChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: MoonshotAIChatModelId;\n config: MoonshotAIChatConfig;\n }) {\n return new MoonshotAIChatLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: MoonshotAIChatModelId, config: MoonshotAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n\n this.failedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: moonshotAIErrorSchema,\n errorToMessage: error => error.error.message,\n });\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n reasoning,\n providerOptions,\n stopSequences,\n responseFormat,\n seed,\n toolChoice,\n tools,\n }: LanguageModelV4CallOptions) {\n const moonshotOptions =\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: moonshotaiLanguageModelOptions,\n })) ?? {};\n\n const allWarnings: SharedV4Warning[] = [];\n if (topK != null) {\n allWarnings.push({ type: 'unsupported', feature: 'topK' });\n }\n if (seed != null) {\n allWarnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n const supportsSamplingOptions = !isMoonshotAIKimiModel(this.modelId);\n\n if (!supportsSamplingOptions && temperature != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `temperature is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && topP != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'topP',\n details: `topP is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && frequencyPenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'frequencyPenalty',\n details: `frequencyPenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && presencePenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'presencePenalty',\n details: `presencePenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n\n const {\n tools: moonshotTools,\n toolChoice: moonshotToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n\n const modelFamily = getMoonshotAIModelFamily(this.modelId);\n const requestedThinking = moonshotOptions.thinking;\n const requestedReasoningEffort = moonshotOptions.reasoningEffort;\n const preserveReasoning = moonshotOptions.reasoningHistory === 'preserved';\n\n if (requestedThinking?.budgetTokens != null) {\n allWarnings.push({\n type: 'deprecated',\n setting: 'providerOptions.moonshotai.thinking.budgetTokens',\n message:\n 'Moonshot Chat Completions does not support budget_tokens. Remove budgetTokens; the option has been omitted.',\n });\n }\n\n let thinking: { type: 'enabled' | 'disabled'; keep?: 'all' } | undefined;\n let reasoningEffort: 'low' | 'high' | 'max' | undefined;\n\n const warnUnsupportedReasoningEffort = () => {\n if (requestedReasoningEffort != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoningEffort',\n details: `reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${this.modelId}\".`,\n });\n }\n };\n\n switch (modelFamily) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details:\n 'Kimi K3 always reasons and does not accept the thinking field. The option has been omitted.',\n });\n }\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details: 'Kimi K3 reasoning cannot be disabled.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled' || reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature:\n requestedThinking?.type === 'disabled'\n ? 'thinking.type \"disabled\"'\n : 'reasoning \"none\"',\n details: 'Kimi K2.7 thinking cannot be disabled.',\n });\n } else if (requestedThinking?.type === 'enabled') {\n thinking = { type: 'enabled' };\n }\n break;\n }\n case 'kimi-k2.6': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null || preserveReasoning) {\n thinking = {\n type: thinkingType ?? 'enabled',\n ...(preserveReasoning ? { keep: 'all' as const } : {}),\n };\n }\n break;\n }\n case 'kimi-k2.5': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null) {\n thinking = { type: thinkingType };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details: `thinking is not supported by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (isCustomReasoning(reasoning) && reasoning !== 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: `reasoning is not supported by model \"${this.modelId}\".`,\n });\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'unknown': {\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details:\n 'Use providerOptions.moonshotai.thinking to control thinking on custom models.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n }\n\n let response_format: Record<string, unknown> | undefined;\n if (responseFormat?.type === 'json') {\n if (\n this.config.supportsStructuredOutputs === true &&\n responseFormat.schema != null\n ) {\n // kimi-k2.5 produces nonsensical output when the top-level `$schema`\n // keyword injected by the AI SDK is present, even though it otherwise\n // supports structured outputs. Strip it from the schema sent to\n // Moonshot; the full original schema is still used for result\n // validation.\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.schema;\n response_format = {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n strict: moonshotOptions.strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n };\n } else {\n response_format = { type: 'json_object' };\n }\n }\n\n const { messages, warnings: messageWarnings } =\n await convertToMoonshotAIChatMessages({\n modelId: this.modelId,\n prompt,\n providerOptionsName: this.providerOptionsName,\n responseFormat: response_format,\n });\n allWarnings.push(...messageWarnings);\n\n return {\n args: {\n model: this.modelId,\n ...((moonshotOptions.logprobs === true ||\n moonshotOptions.topLogprobs != null) && { logprobs: true }),\n ...(moonshotOptions.topLogprobs != null && {\n top_logprobs: moonshotOptions.topLogprobs,\n }),\n max_completion_tokens: maxOutputTokens,\n temperature: supportsSamplingOptions ? temperature : undefined,\n top_p: supportsSamplingOptions ? topP : undefined,\n frequency_penalty: supportsSamplingOptions\n ? frequencyPenalty\n : undefined,\n presence_penalty: supportsSamplingOptions ? presencePenalty : undefined,\n response_format,\n stop: stopSequences,\n messages,\n tools: moonshotTools,\n tool_choice: moonshotToolChoice,\n ...(moonshotOptions.prediction != null && {\n prediction: moonshotOptions.prediction,\n }),\n ...(thinking != null ? { thinking } : {}),\n ...(reasoningEffort != null && {\n reasoning_effort: reasoningEffort,\n }),\n ...(moonshotOptions.promptCacheKey != null && {\n prompt_cache_key: moonshotOptions.promptCacheKey,\n }),\n ...(moonshotOptions.safetyIdentifier != null && {\n safety_identifier: moonshotOptions.safetyIdentifier,\n }),\n },\n warnings: [...allWarnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const {\n responseHeaders,\n value: responseBody,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body: args,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n moonshotAIChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = responseBody.choices[0];\n const content: Array<LanguageModelV4Content> = [];\n\n // reasoning content (before text):\n const reasoning = choice.message.reasoning_content;\n if (reasoning != null && reasoning.length > 0) {\n content.push({ type: 'reasoning', text: reasoning });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id || generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments ?? '',\n });\n }\n }\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n return {\n content,\n finishReason: {\n unified: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: convertMoonshotAIChatUsage(responseBody.usage),\n providerMetadata: {\n [this.providerOptionsName]: {\n ...(choice.logprobs != null && { logprobs: choice.logprobs }),\n ...(responseBody.object != null && {\n responseObject: responseBody.object,\n }),\n ...(choice.index != null && { choiceIndex: choice.index }),\n ...(choice.message.role != null && {\n messageRole: choice.message.role,\n }),\n ...(choice.message.tool_calls != null && {\n toolCallTypes: choice.message.tool_calls\n .map(toolCall => toolCall.type)\n .filter(type => type != null),\n }),\n },\n },\n request: { body: args },\n response: {\n ...getResponseMetadata(responseBody),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const body = {\n ...args,\n stream: true,\n ...(this.config.includeUsage && {\n stream_options: { include_usage: true },\n }),\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n moonshotAIChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let toolCallTracker: StreamingToolCallTracker;\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let topLevelUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n let choiceUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n const providerOptionsName = this.providerOptionsName;\n let isFirstChunk = true;\n let isActiveReasoning = false;\n let isActiveText = false;\n let responseObject: 'chat.completion.chunk' | undefined;\n let choiceIndex: number | undefined;\n let messageRole: 'assistant' | undefined;\n const toolCallTypes = new Map<number, 'function'>();\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<InferSchema<typeof moonshotAIChatChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n toolCallTracker = new StreamingToolCallTracker(controller, {\n generateId,\n });\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // emit raw chunk if requested (before anything else):\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = { unified: 'error', raw: undefined };\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = { unified: 'error', raw: undefined };\n controller.enqueue({\n type: 'error',\n error: createMoonshotAIStreamError(value.error, value),\n });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n\n if (value.usage != null) {\n topLevelUsage = value.usage;\n }\n\n if (value.object != null) {\n responseObject = value.object;\n }\n\n const choice = value.choices[0];\n\n if (choice?.usage != null) {\n choiceUsage = choice.usage;\n }\n\n if (choice?.index != null) {\n choiceIndex = choice.index;\n }\n\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\n }\n\n if (choice?.logprobs?.content != null) {\n contentLogprobs.push(...choice.logprobs.content);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.role != null) {\n messageRole = delta.role;\n }\n\n // enqueue reasoning before text deltas:\n const reasoningContent = delta.reasoning_content;\n if (reasoningContent) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-start',\n id: 'reasoning-0',\n });\n isActiveReasoning = true;\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: 'reasoning-0',\n delta: reasoningContent,\n });\n }\n\n if (delta.content) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'txt-0' });\n isActiveText = true;\n }\n\n // end reasoning when text starts:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'txt-0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null && delta.tool_calls.length > 0) {\n // end reasoning when tool calls start:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\n }\n\n for (const [index, toolCallDelta] of delta.tool_calls.entries()) {\n const toolCallIndex = toolCallDelta.index ?? index;\n if (toolCallDelta.type != null) {\n toolCallTypes.set(toolCallIndex, toolCallDelta.type);\n }\n toolCallTracker.processDelta({\n ...toolCallDelta,\n index: toolCallIndex,\n });\n }\n }\n },\n\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: 'reasoning-end', id: 'reasoning-0' });\n }\n\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'txt-0' });\n }\n\n toolCallTracker.flush();\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertMoonshotAIChatUsage(topLevelUsage ?? choiceUsage),\n providerMetadata: {\n [providerOptionsName]: {\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n ...(responseObject != null && { responseObject }),\n ...(choiceIndex != null && { choiceIndex }),\n ...(messageRole != null && { messageRole }),\n ...(toolCallTypes.size > 0 && {\n toolCallTypes: [...toolCallTypes.entries()]\n .sort(([left], [right]) => left - right)\n .map(([, type]) => type),\n }),\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InvalidPromptError,\n UnsupportedFunctionalityError,\n type LanguageModelV4FilePart,\n type LanguageModelV4Prompt,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n convertBase64ToUint8Array,\n convertToBase64,\n getTopLevelMediaType,\n parseProviderOptions,\n resolveProviderReference,\n resolveFullMediaType,\n} from '@ai-sdk/provider-utils';\n\nimport type { MoonshotAIMessages } from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n moonshotaiAllMessageProviderOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nconst supportedImageMediaTypes = [\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/bmp',\n 'image/heic',\n 'image/heif',\n] as const;\n\nconst supportedVideoMediaTypes = [\n 'video/mp4',\n 'video/mpeg',\n 'video/mov',\n 'video/avi',\n 'video/x-flv',\n 'video/mpg',\n 'video/webm',\n 'video/wmv',\n 'video/3gpp',\n] as const;\n\nfunction formatMediaUrl({\n part,\n supportedMediaTypes,\n topLevelMediaType,\n}: {\n part: LanguageModelV4FilePart;\n supportedMediaTypes: readonly string[];\n topLevelMediaType: 'image' | 'video';\n}): string {\n if (part.data.type !== 'url' && part.data.type !== 'data') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part data type ${part.data.type}`,\n });\n }\n\n const mediaType =\n part.data.type === 'url' ? part.mediaType : resolveFullMediaType({ part });\n\n if (\n !supportedMediaTypes.includes(mediaType) &&\n !(\n part.data.type === 'url' &&\n (mediaType === topLevelMediaType ||\n mediaType === `${topLevelMediaType}/*`)\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${mediaType}`,\n });\n }\n\n return part.data.type === 'url'\n ? part.data.url.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data.data)}`;\n}\n\n// Moonshot AI chat completions accepts text, image_url, and video_url content\n// parts only. Anything else (audio, PDF, other file types) throws here rather\n// than being rejected by the API with a 400.\nexport async function convertToMoonshotAIChatMessages({\n modelId,\n prompt,\n providerOptionsName = 'moonshotai',\n responseFormat,\n}: {\n modelId?: MoonshotAIChatModelId;\n prompt: LanguageModelV4Prompt;\n providerOptionsName?: string;\n responseFormat?: Record<string, unknown>;\n}): Promise<{\n messages: MoonshotAIMessages;\n warnings: Array<SharedV4Warning>;\n}> {\n const messages: MoonshotAIMessages = [];\n const warnings: Array<SharedV4Warning> = [];\n const modelFamily =\n modelId == null ? 'unknown' : getMoonshotAIModelFamily(modelId);\n\n for (const [index, { role, content, providerOptions }] of prompt.entries()) {\n const moonshotMessageOptions = await parseProviderOptions({\n provider: providerOptionsName,\n providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (moonshotMessageOptions?.partial === true && role !== 'assistant') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (moonshotMessageOptions?.tools != null && role !== 'system') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n switch (role) {\n case 'system': {\n if (moonshotMessageOptions?.tools?.length) {\n if (content.length > 0) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'A Moonshot dynamic-tool system message must use empty content because the API forbids content alongside tools.',\n });\n }\n\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'unsupported',\n feature: `dynamic tool loading for model \"${modelId}\"`,\n details:\n 'Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted.',\n });\n break;\n }\n\n const { tools, toolWarnings } = prepareTools({\n modelId: modelId ?? 'custom-model',\n tools: moonshotMessageOptions.tools,\n });\n warnings.push(...toolWarnings);\n messages.push({ role: 'system', tools: tools ?? [] });\n break;\n }\n\n messages.push({\n role: 'system',\n content,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({\n role: 'user',\n content: content[0].text,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n const topLevel = getTopLevelMediaType(part.mediaType);\n\n switch (part.data.type) {\n case 'reference': {\n if (topLevel !== 'image' && topLevel !== 'video') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n\n const reference = resolveProviderReference({\n reference: part.data.reference,\n provider: 'moonshotai',\n });\n\n if (!reference.startsWith('ms://')) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Moonshot file provider references without an ms:// URL',\n });\n }\n\n return topLevel === 'image'\n ? {\n type: 'image_url' as const,\n image_url: { url: reference },\n }\n : {\n type: 'video_url' as const,\n video_url: { url: reference },\n };\n }\n case 'text': {\n if (topLevel === 'text') {\n return {\n type: 'text' as const,\n text: part.data.text,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n case 'url':\n case 'data': {\n if (topLevel === 'image') {\n return {\n type: 'image_url' as const,\n image_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedImageMediaTypes,\n topLevelMediaType: 'image',\n }),\n },\n };\n }\n\n if (topLevel === 'video') {\n return {\n type: 'video_url' as const,\n video_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedVideoMediaTypes,\n topLevelMediaType: 'video',\n }),\n },\n };\n }\n\n if (topLevel === 'text') {\n const textContent =\n part.data.type === 'url'\n ? part.data.url.toString()\n : typeof part.data.data === 'string'\n ? new TextDecoder().decode(\n convertBase64ToUint8Array(part.data.data),\n )\n : new TextDecoder().decode(part.data.data);\n\n return {\n type: 'text' as const,\n text: textContent,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }\n }),\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n if (moonshotMessageOptions?.partial === true) {\n if (index !== prompt.length - 1) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (responseFormat?.type === 'json_object') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n }\n\n let text = '';\n let reasoning = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'reasoning': {\n reasoning += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? text || null : text,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n ...(moonshotMessageOptions?.partial === true && {\n partial: true,\n }),\n ...(reasoning.length > 0 ? { reasoning_content: reasoning } : {}),\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n if (moonshotMessageOptions?.name != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'message name on tool messages',\n });\n }\n\n for (const toolResponse of content) {\n if (toolResponse.type === 'tool-approval-response') {\n continue;\n }\n\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'execution-denied':\n contentValue = output.reason ?? 'Tool call execution denied.';\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","import type { LanguageModelV4FunctionTool } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIChatModelId =\n | 'moonshot-v1-auto'\n | 'moonshot-v1-8k'\n | 'moonshot-v1-32k'\n | 'moonshot-v1-128k'\n | 'moonshot-v1-8k-vision-preview'\n | 'moonshot-v1-32k-vision-preview'\n | 'moonshot-v1-128k-vision-preview'\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7-code'\n | 'kimi-k2.7-code-highspeed'\n | 'kimi-k3'\n | (string & {});\n\nexport function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport type MoonshotAIModelFamily =\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7'\n | 'kimi-k3'\n | 'moonshot-v1'\n | 'unknown';\n\nexport function getMoonshotAIModelFamily(\n modelId: MoonshotAIChatModelId,\n): MoonshotAIModelFamily {\n if (modelId === 'kimi-k2.5') return 'kimi-k2.5';\n if (modelId === 'kimi-k2.6') return 'kimi-k2.6';\n if (modelId === 'kimi-k2.7-code' || modelId === 'kimi-k2.7-code-highspeed') {\n return 'kimi-k2.7';\n }\n if (modelId === 'kimi-k3') return 'kimi-k3';\n if (modelId.startsWith('moonshot-v1-')) return 'moonshot-v1';\n return 'unknown';\n}\n\nexport const moonshotaiLanguageModelOptions = z.object({\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Whether to return log probabilities for generated tokens.\n */\n logprobs: z.boolean().optional(),\n\n /**\n * Number of most likely tokens to return at each token position.\n *\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs: z.number().int().min(0).max(20).optional(),\n\n /**\n * Reasoning effort for Kimi K3. Supports `low`, `high`, and `max`;\n * defaults to `max`.\n */\n reasoningEffort: z.enum(['low', 'high', 'max']).optional(),\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction: z\n .object({\n type: z.literal('content'),\n content: z.union([\n z.string(),\n z.array(z.object({ type: z.literal('text'), text: z.string() })),\n ]),\n })\n .optional(),\n\n /**\n * Thinking configuration for Kimi K2.x models. Kimi K2.5 and K2.6 support\n * enabling or disabling thinking. Kimi K2.7 Code always has thinking\n * enabled.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n /**\n * @deprecated Moonshot Chat Completions does not support thinking\n * budgets. Accepted for backwards compatibility, then omitted with a\n * warning.\n */\n budgetTokens: z.number().int().min(1024).optional(),\n })\n .optional(),\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory: z.enum(['disabled', 'interleaved', 'preserved']).optional(),\n\n /**\n * Used to cache responses for similar requests to optimize cache hit rates.\n * Typically a session or task id.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * A stable identifier used to help Moonshot detect users violating usage\n * policies. Recommended to hash the username or email address.\n */\n safetyIdentifier: z.string().optional(),\n});\n\nexport type MoonshotAILanguageModelOptions = {\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema?: boolean;\n\n /** Whether to return log probabilities for generated tokens. */\n logprobs?: boolean;\n\n /**\n * Number of most likely tokens to return at each token position.\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs?: number;\n\n /** Reasoning effort for Kimi K3. */\n reasoningEffort?: 'low' | 'high' | 'max';\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction?: {\n type: 'content';\n content: string | Array<{ type: 'text'; text: string }>;\n };\n\n /** Controls thinking on Kimi K2.5 and K2.6. K2.7 is always enabled. */\n thinking?: {\n type?: 'enabled' | 'disabled';\n\n /**\n * @deprecated Moonshot Chat Completions does not support thinking budgets.\n * This value is ignored with a warning.\n */\n budgetTokens?: number;\n };\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory?: 'disabled' | 'interleaved' | 'preserved';\n promptCacheKey?: string;\n safetyIdentifier?: string;\n};\n\nexport const moonshotaiMessageProviderOptions = z.object({\n /**\n * The name of the participant represented by the message.\n *\n * Supported on system, user, and assistant messages.\n */\n name: z.string().optional(),\n});\n\nexport type MoonshotAIMessageProviderOptions = z.infer<\n typeof moonshotaiMessageProviderOptions\n>;\n\nexport const moonshotaiAssistantMessageProviderOptions =\n moonshotaiMessageProviderOptions.extend({\n /**\n * Whether the assistant message content is a partial response that Moonshot\n * should continue. Only supported on the final assistant message and cannot\n * be combined with JSON object response format.\n */\n partial: z.literal(true).optional(),\n });\n\nexport type MoonshotAIAssistantMessageProviderOptions = z.infer<\n typeof moonshotaiAssistantMessageProviderOptions\n>;\n\nconst moonshotaiDynamicToolSchema = z.object({\n type: z.literal('function'),\n name: z.string(),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()),\n strict: z.boolean().optional(),\n});\n\nexport const moonshotaiAllMessageProviderOptions =\n moonshotaiAssistantMessageProviderOptions.extend({\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools: z.array(moonshotaiDynamicToolSchema).optional(),\n });\n\nexport type MoonshotAISystemMessageProviderOptions =\n MoonshotAIMessageProviderOptions & {\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools?: Array<\n Pick<\n LanguageModelV4FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema' | 'strict'\n >\n >;\n };\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport type { MoonshotAIFunctionTool } from './moonshotai-chat-api-types';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nexport function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n modelId: MoonshotAIChatModelId;\n}): {\n tools: undefined | Array<MoonshotAIFunctionTool>;\n toolChoice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: SharedV4Warning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV4Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const moonshotTools: Array<MoonshotAIFunctionTool> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider') {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.id}`,\n });\n } else {\n moonshotTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: normalizeJsonSchemaForMFJS(tool.inputSchema),\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: moonshotTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'required':\n if (\n modelId === 'kimi-k2.6' ||\n modelId === 'kimi-k2.7-code' ||\n modelId === 'kimi-k2.7-code-highspeed'\n ) {\n toolWarnings.push({\n type: 'unsupported',\n feature: `tool choice \"required\" for model \"${modelId}\"`,\n details:\n 'Moonshot AI rejects required tool choice for this model. The setting has been omitted; use \"auto\" or select a specific tool instead.',\n });\n return {\n tools: moonshotTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: moonshotTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport { isRecord } from '@ai-sdk/provider-utils';\n\nconst SCHEMA_ARRAY_KEYS = ['allOf', 'anyOf', 'oneOf', 'prefixItems'] as const;\nconst SCHEMA_MAP_KEYS = [\n 'properties',\n 'patternProperties',\n '$defs',\n 'dependentSchemas',\n] as const;\nconst SCHEMA_SINGLE_KEYS = [\n 'additionalProperties',\n 'propertyNames',\n 'items',\n 'contains',\n 'not',\n 'if',\n 'then',\n 'else',\n] as const;\n\n/**\n * Normalizes a JSON Schema to the subset Moonshot's MFJS validator accepts:\n * `object` root required, tuple `items` become `prefixItems`, and `type` next\n * to `anyOf` moves into the branches. Everything else passes through. The\n * full original schema is still used for AI SDK result validation.\n */\nexport function normalizeJsonSchemaForMFJS(schema: unknown): unknown {\n return normalizeDefinition(schema, true);\n}\n\nfunction normalizeDefinition(definition: unknown, isRoot: boolean): unknown {\n if (typeof definition === 'boolean' || !isRecord(definition)) {\n if (isRoot) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n return definition;\n }\n\n if (isRoot && definition.type !== 'object') {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n\n const result: Record<string, unknown> = { ...definition };\n\n // Existing prefixItems stay first (they are positional).\n if (Array.isArray(result.items)) {\n const tuple = result.items;\n result.prefixItems = [\n ...(Array.isArray(result.prefixItems) ? result.prefixItems : []),\n ...tuple.map(item => normalizeDefinition(item, false)),\n ];\n delete result.items;\n } else if (isRecord(result.items)) {\n result.items = normalizeDefinition(result.items, false);\n }\n\n // MFJS requires type to live inside anyOf items.\n if (typeof result.type === 'string' && Array.isArray(result.anyOf)) {\n const parentType = result.type;\n delete result.type;\n result.anyOf = result.anyOf.map(branch =>\n isRecord(branch) && branch.type == null\n ? { type: parentType, ...branch }\n : branch,\n );\n }\n\n for (const key of SCHEMA_ARRAY_KEYS) {\n const value = result[key];\n if (Array.isArray(value)) {\n result[key] = value.map(item => normalizeDefinition(item, false));\n }\n }\n\n for (const key of SCHEMA_MAP_KEYS) {\n const value = result[key];\n if (isRecord(value)) {\n result[key] = Object.fromEntries(\n Object.entries(value).map(([k, v]) => [\n k,\n normalizeDefinition(v, false),\n ]),\n );\n }\n }\n\n for (const key of SCHEMA_SINGLE_KEYS) {\n const value = result[key];\n if (isRecord(value) || typeof value === 'boolean') {\n result[key] = normalizeDefinition(value, false);\n }\n }\n\n return result;\n}\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { createNullLanguageModelUsage } from '@ai-sdk/provider-utils';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n cached_tokens?: number | null;\n prompt_tokens_details?: {\n cached_tokens?: number | null;\n } | null;\n completion_tokens_details?: {\n reasoning_tokens?: number | null;\n } | null;\n }\n | undefined\n | null,\n): LanguageModelV4Usage {\n if (usage == null) {\n return createNullLanguageModelUsage();\n }\n\n const promptTokens = usage.prompt_tokens ?? 0;\n const completionTokens = usage.completion_tokens ?? 0;\n\n const cacheReadTokens =\n usage.cached_tokens ?? usage.prompt_tokens_details?.cached_tokens ?? 0;\n\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: completionTokens,\n text: Math.max(0, completionTokens - reasoningTokens),\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapMoonshotAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'other';\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIMessages = Array<MoonshotAIMessage>;\n\nexport type MoonshotAIMessage =\n | MoonshotAISystemMessage\n | MoonshotAIUserMessage\n | MoonshotAIAssistantMessage\n | MoonshotAIToolMessage;\n\nexport type MoonshotAISystemMessage =\n | {\n role: 'system';\n content: string;\n name?: string;\n }\n | {\n role: 'system';\n tools: Array<MoonshotAIFunctionTool>;\n };\n\nexport interface MoonshotAIFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n strict?: boolean;\n };\n}\n\nexport interface MoonshotAIUserMessage {\n role: 'user';\n content: string | Array<MoonshotAIContentPart>;\n name?: string;\n}\n\nexport type MoonshotAIContentPart =\n | MoonshotAIContentPartText\n | MoonshotAIContentPartImage\n | MoonshotAIContentPartVideo;\n\nexport interface MoonshotAIContentPartText {\n type: 'text';\n text: string;\n}\n\nexport interface MoonshotAIContentPartImage {\n type: 'image_url';\n image_url: { url: string };\n}\n\nexport interface MoonshotAIContentPartVideo {\n type: 'video_url';\n video_url: { url: string };\n}\n\nexport interface MoonshotAIAssistantMessage {\n role: 'assistant';\n content?: string | null;\n name?: string;\n partial?: true;\n reasoning_content?: string;\n tool_calls?: Array<MoonshotAIMessageToolCall>;\n}\n\nexport interface MoonshotAIMessageToolCall {\n type: 'function';\n id: string;\n function: {\n arguments: string;\n name: string;\n };\n}\n\nexport interface MoonshotAIToolMessage {\n role: 'tool';\n content: string;\n tool_call_id: string;\n}\n\n// Schemas below are limited versions focused on what the implementation\n// needs. This limits breakages when the API changes and increases efficiency.\n\n// Loose, nested objects included: the parsed value is returned as `usage.raw`.\nconst tokenUsageSchema = z\n .looseObject({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .looseObject({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .looseObject({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatTokenUsage = z.infer<typeof tokenUsageSchema>;\n\nexport const moonshotAIErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotAIErrorSchema>;\n\nconst moonshotAIChatLogprobSchema = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n }),\n ),\n});\n\nconst moonshotAIChatLogprobsSchema = z\n .object({\n content: z.array(moonshotAIChatLogprobSchema).nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nexport const moonshotAIChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('chat.completion').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\n});\n\nexport const moonshotAIChatChunkSchema = lazySchema(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('chat.completion.chunk').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\n delta: z\n .object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number().nullish(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n usage: tokenUsageSchema,\n }),\n ),\n usage: tokenUsageSchema,\n }),\n moonshotAIErrorSchema,\n ]),\n ),\n);\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;;;ACCP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uCAAuC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;;;AC/BP;AAAA,EACE;AAAA,EACA,iCAAAC;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACbP,SAAS,SAAS;AAiBX,SAAS,sBAAsB,SAAyC;AAC7E,SAAO,yBAAyB,OAAO,EAAE,WAAW,OAAO;AAC7D;AAUO,SAAS,yBACd,SACuB;AACvB,MAAI,YAAY,YAAa,QAAO;AACpC,MAAI,YAAY,YAAa,QAAO;AACpC,MAAI,YAAY,oBAAoB,YAAY,4BAA4B;AAC1E,WAAO;AAAA,EACT;AACA,MAAI,YAAY,UAAW,QAAO;AAClC,MAAI,QAAQ,WAAW,cAAc,EAAG,QAAO;AAC/C,SAAO;AACT;AAEO,IAAM,iCAAiC,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrD,kBAAkB,EAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,EAKvC,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/B,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtD,iBAAiB,EAAE,KAAK,CAAC,OAAO,QAAQ,KAAK,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzD,YAAY,EACT,OAAO;AAAA,IACN,MAAM,EAAE,QAAQ,SAAS;AAAA,IACzB,SAAS,EAAE,MAAM;AAAA,MACf,EAAE,OAAO;AAAA,MACT,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAAA,IACjE,CAAC;AAAA,EACH,CAAC,EACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOZ,UAAU,EACP,OAAO;AAAA,IACN,MAAM,EAAE,KAAK,CAAC,WAAW,UAAU,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM/C,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,SAAS;AAAA,EACpD,CAAC,EACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQZ,kBAAkB,EAAE,KAAK,CAAC,YAAY,eAAe,WAAW,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5E,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpC,kBAAkB,EAAE,OAAO,EAAE,SAAS;AACxC,CAAC;AAqDM,IAAM,mCAAmC,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvD,MAAM,EAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAMM,IAAM,4CACX,iCAAiC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtC,SAAS,EAAE,QAAQ,IAAI,EAAE,SAAS;AACpC,CAAC;AAMH,IAAM,8BAA8B,EAAE,OAAO;AAAA,EAC3C,MAAM,EAAE,QAAQ,UAAU;AAAA,EAC1B,MAAM,EAAE,OAAO;AAAA,EACf,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,EAC7C,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAC/B,CAAC;AAEM,IAAM,sCACX,0CAA0C,OAAO;AAAA;AAAA,EAE/C,OAAO,EAAE,MAAM,2BAA2B,EAAE,SAAS;AACvD,CAAC;;;ACnNH;AAAA,EACE,iCAAAC;AAAA,OAGK;;;ACJP,SAAS,qCAAqC;AAC9C,SAAS,gBAAgB;AAEzB,IAAM,oBAAoB,CAAC,SAAS,SAAS,SAAS,aAAa;AACnE,IAAM,kBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,SAAS,2BAA2B,QAA0B;AACnE,SAAO,oBAAoB,QAAQ,IAAI;AACzC;AAEA,SAAS,oBAAoB,YAAqB,QAA0B;AAC1E,MAAI,OAAO,eAAe,aAAa,CAAC,SAAS,UAAU,GAAG;AAC5D,QAAI,QAAQ;AACV,YAAM,IAAI,8BAA8B;AAAA,QACtC,eACE;AAAA,MACJ,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,WAAW,SAAS,UAAU;AAC1C,UAAM,IAAI,8BAA8B;AAAA,MACtC,eACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,QAAM,SAAkC,EAAE,GAAG,WAAW;AAGxD,MAAI,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC/B,UAAM,QAAQ,OAAO;AACrB,WAAO,cAAc;AAAA,MACnB,GAAI,MAAM,QAAQ,OAAO,WAAW,IAAI,OAAO,cAAc,CAAC;AAAA,MAC9D,GAAG,MAAM,IAAI,UAAQ,oBAAoB,MAAM,KAAK,CAAC;AAAA,IACvD;AACA,WAAO,OAAO;AAAA,EAChB,WAAW,SAAS,OAAO,KAAK,GAAG;AACjC,WAAO,QAAQ,oBAAoB,OAAO,OAAO,KAAK;AAAA,EACxD;AAGA,MAAI,OAAO,OAAO,SAAS,YAAY,MAAM,QAAQ,OAAO,KAAK,GAAG;AAClE,UAAM,aAAa,OAAO;AAC1B,WAAO,OAAO;AACd,WAAO,QAAQ,OAAO,MAAM;AAAA,MAAI,YAC9B,SAAS,MAAM,KAAK,OAAO,QAAQ,OAC/B,EAAE,MAAM,YAAY,GAAG,OAAO,IAC9B;AAAA,IACN;AAAA,EACF;AAEA,aAAW,OAAO,mBAAmB;AACnC,UAAM,QAAQ,OAAO,GAAG;AACxB,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,GAAG,IAAI,MAAM,IAAI,UAAQ,oBAAoB,MAAM,KAAK,CAAC;AAAA,IAClE;AAAA,EACF;AAEA,aAAW,OAAO,iBAAiB;AACjC,UAAM,QAAQ,OAAO,GAAG;AACxB,QAAI,SAAS,KAAK,GAAG;AACnB,aAAO,GAAG,IAAI,OAAO;AAAA,QACnB,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM;AAAA,UACpC;AAAA,UACA,oBAAoB,GAAG,KAAK;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,aAAW,OAAO,oBAAoB;AACpC,UAAM,QAAQ,OAAO,GAAG;AACxB,QAAI,SAAS,KAAK,KAAK,OAAO,UAAU,WAAW;AACjD,aAAO,GAAG,IAAI,oBAAoB,OAAO,KAAK;AAAA,IAChD;AAAA,EACF;AAEA,SAAO;AACT;;;AD5FO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAaE;AAEA,WAAQ,+BAAO,UAAS,QAAQ;AAEhC,QAAM,eAAkC,CAAC;AAEzC,MAAI,SAAS,MAAM;AACjB,WAAO,EAAE,OAAO,QAAW,YAAY,QAAW,aAAa;AAAA,EACjE;AAEA,QAAM,gBAA+C,CAAC;AAEtD,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,SAAS,YAAY;AAC5B,mBAAa,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,SAAS,yBAAyB,KAAK,EAAE;AAAA,MAC3C,CAAC;AAAA,IACH,OAAO;AACL,oBAAc,KAAK;AAAA,QACjB,MAAM;AAAA,QACN,UAAU;AAAA,UACR,MAAM,KAAK;AAAA,UACX,aAAa,KAAK;AAAA,UAClB,YAAY,2BAA2B,KAAK,WAAW;AAAA,UACvD,GAAI,KAAK,UAAU,OAAO,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,QACvD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,cAAc,MAAM;AACtB,WAAO,EAAE,OAAO,eAAe,YAAY,QAAW,aAAa;AAAA,EACrE;AAEA,QAAM,OAAO,WAAW;AAExB,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,OAAO,eAAe,YAAY,MAAM,aAAa;AAAA,IAChE,KAAK;AACH,UACE,YAAY,eACZ,YAAY,oBACZ,YAAY,4BACZ;AACA,qBAAa,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS,qCAAqC,OAAO;AAAA,UACrD,SACE;AAAA,QACJ,CAAC;AACD,eAAO;AAAA,UACL,OAAO;AAAA,UACP,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AACA,aAAO,EAAE,OAAO,eAAe,YAAY,MAAM,aAAa;AAAA,IAChE,KAAK;AACH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,YAAY;AAAA,UACV,MAAM;AAAA,UACN,UAAU,EAAE,MAAM,WAAW,SAAS;AAAA,QACxC;AAAA,QACA;AAAA,MACF;AAAA,IACF,SAAS;AACP,YAAM,mBAA0B;AAChC,YAAM,IAAIC,+BAA8B;AAAA,QACtC,eAAe,qBAAqB,gBAAgB;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AF9EA,IAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AACF,GAIW;AACT,MAAI,KAAK,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,QAAQ;AACzD,UAAM,IAAIC,+BAA8B;AAAA,MACtC,eAAe,uBAAuB,KAAK,KAAK,IAAI;AAAA,IACtD,CAAC;AAAA,EACH;AAEA,QAAM,YACJ,KAAK,KAAK,SAAS,QAAQ,KAAK,YAAY,qBAAqB,EAAE,KAAK,CAAC;AAE3E,MACE,CAAC,oBAAoB,SAAS,SAAS,KACvC,EACE,KAAK,KAAK,SAAS,UAClB,cAAc,qBACb,cAAc,GAAG,iBAAiB,QAEtC;AACA,UAAM,IAAIA,+BAA8B;AAAA,MACtC,eAAe,wBAAwB,SAAS;AAAA,IAClD,CAAC;AAAA,EACH;AAEA,SAAO,KAAK,KAAK,SAAS,QACtB,KAAK,KAAK,IAAI,SAAS,IACvB,QAAQ,SAAS,WAAW,gBAAgB,KAAK,KAAK,IAAI,CAAC;AACjE;AAKA,eAAsB,gCAAgC;AAAA,EACpD;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB;AACF,GAQG;AAlGH;AAmGE,QAAM,WAA+B,CAAC;AACtC,QAAM,WAAmC,CAAC;AAC1C,QAAM,cACJ,WAAW,OAAO,YAAY,yBAAyB,OAAO;AAEhE,aAAW,CAAC,OAAO,EAAE,MAAM,SAAS,gBAAgB,CAAC,KAAK,OAAO,QAAQ,GAAG;AAC1E,UAAM,yBAAyB,MAAM,qBAAqB;AAAA,MACxD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,SAAI,iEAAwB,aAAY,QAAQ,SAAS,aAAa;AACpE,YAAM,IAAI,mBAAmB;AAAA,QAC3B;AAAA,QACA,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,SAAI,iEAAwB,UAAS,QAAQ,SAAS,UAAU;AAC9D,YAAM,IAAI,mBAAmB;AAAA,QAC3B;AAAA,QACA,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,aAAI,sEAAwB,UAAxB,mBAA+B,QAAQ;AACzC,cAAI,QAAQ,SAAS,GAAG;AACtB,kBAAM,IAAI,mBAAmB;AAAA,cAC3B;AAAA,cACA,SACE;AAAA,YACJ,CAAC;AAAA,UACH;AAEA,cAAI,gBAAgB,aAAa,gBAAgB,WAAW;AAC1D,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS,mCAAmC,OAAO;AAAA,cACnD,SACE;AAAA,YACJ,CAAC;AACD;AAAA,UACF;AAEA,gBAAM,EAAE,OAAO,aAAa,IAAI,aAAa;AAAA,YAC3C,SAAS,4BAAW;AAAA,YACpB,OAAO,uBAAuB;AAAA,UAChC,CAAC;AACD,mBAAS,KAAK,GAAG,YAAY;AAC7B,mBAAS,KAAK,EAAE,MAAM,UAAU,OAAO,wBAAS,CAAC,EAAE,CAAC;AACpD;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN;AAAA,UACA,IAAI,iEAAwB,SAAQ,QAAQ;AAAA,YAC1C,MAAM,uBAAuB;AAAA,UAC/B;AAAA,QACF,CAAC;AACD;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,YAAI,QAAQ,WAAW,KAAK,QAAQ,CAAC,EAAE,SAAS,QAAQ;AACtD,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS,QAAQ,CAAC,EAAE;AAAA,YACpB,IAAI,iEAAwB,SAAQ,QAAQ;AAAA,cAC1C,MAAM,uBAAuB;AAAA,YAC/B;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,QAAQ,IAAI,UAAQ;AAC3B,oBAAQ,KAAK,MAAM;AAAA,cACjB,KAAK,QAAQ;AACX,uBAAO,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK;AAAA,cACzC;AAAA,cACA,KAAK,QAAQ;AACX,sBAAM,WAAW,qBAAqB,KAAK,SAAS;AAEpD,wBAAQ,KAAK,KAAK,MAAM;AAAA,kBACtB,KAAK,aAAa;AAChB,wBAAI,aAAa,WAAW,aAAa,SAAS;AAChD,4BAAM,IAAIA,+BAA8B;AAAA,wBACtC,eAAe,wBAAwB,KAAK,SAAS;AAAA,sBACvD,CAAC;AAAA,oBACH;AAEA,0BAAM,YAAY,yBAAyB;AAAA,sBACzC,WAAW,KAAK,KAAK;AAAA,sBACrB,UAAU;AAAA,oBACZ,CAAC;AAED,wBAAI,CAAC,UAAU,WAAW,OAAO,GAAG;AAClC,4BAAM,IAAIA,+BAA8B;AAAA,wBACtC,eACE;AAAA,sBACJ,CAAC;AAAA,oBACH;AAEA,2BAAO,aAAa,UAChB;AAAA,sBACE,MAAM;AAAA,sBACN,WAAW,EAAE,KAAK,UAAU;AAAA,oBAC9B,IACA;AAAA,sBACE,MAAM;AAAA,sBACN,WAAW,EAAE,KAAK,UAAU;AAAA,oBAC9B;AAAA,kBACN;AAAA,kBACA,KAAK,QAAQ;AACX,wBAAI,aAAa,QAAQ;AACvB,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,MAAM,KAAK,KAAK;AAAA,sBAClB;AAAA,oBACF;AAEA,0BAAM,IAAIA,+BAA8B;AAAA,sBACtC,eAAe,wBAAwB,KAAK,SAAS;AAAA,oBACvD,CAAC;AAAA,kBACH;AAAA,kBACA,KAAK;AAAA,kBACL,KAAK,QAAQ;AACX,wBAAI,aAAa,SAAS;AACxB,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,WAAW;AAAA,0BACT,KAAK,eAAe;AAAA,4BAClB;AAAA,4BACA,qBAAqB;AAAA,4BACrB,mBAAmB;AAAA,0BACrB,CAAC;AAAA,wBACH;AAAA,sBACF;AAAA,oBACF;AAEA,wBAAI,aAAa,SAAS;AACxB,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,WAAW;AAAA,0BACT,KAAK,eAAe;AAAA,4BAClB;AAAA,4BACA,qBAAqB;AAAA,4BACrB,mBAAmB;AAAA,0BACrB,CAAC;AAAA,wBACH;AAAA,sBACF;AAAA,oBACF;AAEA,wBAAI,aAAa,QAAQ;AACvB,4BAAM,cACJ,KAAK,KAAK,SAAS,QACf,KAAK,KAAK,IAAI,SAAS,IACvB,OAAO,KAAK,KAAK,SAAS,WACxB,IAAI,YAAY,EAAE;AAAA,wBAChB,0BAA0B,KAAK,KAAK,IAAI;AAAA,sBAC1C,IACA,IAAI,YAAY,EAAE,OAAO,KAAK,KAAK,IAAI;AAE/C,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,MAAM;AAAA,sBACR;AAAA,oBACF;AAEA,0BAAM,IAAIA,+BAA8B;AAAA,sBACtC,eAAe,wBAAwB,KAAK,SAAS;AAAA,oBACvD,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AAAA,UACD,IAAI,iEAAwB,SAAQ,QAAQ;AAAA,YAC1C,MAAM,uBAAuB;AAAA,UAC/B;AAAA,QACF,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,aAAI,iEAAwB,aAAY,MAAM;AAC5C,cAAI,UAAU,OAAO,SAAS,GAAG;AAC/B,kBAAM,IAAI,mBAAmB;AAAA,cAC3B;AAAA,cACA,SACE;AAAA,YACJ,CAAC;AAAA,UACH;AAEA,eAAI,iDAAgB,UAAS,eAAe;AAC1C,kBAAM,IAAI,mBAAmB;AAAA,cAC3B;AAAA,cACA,SACE;AAAA,YACJ,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAI,OAAO;AACX,YAAI,YAAY;AAChB,cAAM,YAID,CAAC;AAEN,mBAAW,QAAQ,SAAS;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,sBAAQ,KAAK;AACb;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAChB,2BAAa,KAAK;AAClB;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAChB,wBAAU,KAAK;AAAA,gBACb,IAAI,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,UAAU;AAAA,kBACR,MAAM,KAAK;AAAA,kBACX,WAAW,KAAK,UAAU,KAAK,KAAK;AAAA,gBACtC;AAAA,cACF,CAAC;AACD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,UAAU,SAAS,IAAI,QAAQ,OAAO;AAAA,UAC/C,IAAI,iEAAwB,SAAQ,QAAQ;AAAA,YAC1C,MAAM,uBAAuB;AAAA,UAC/B;AAAA,UACA,IAAI,iEAAwB,aAAY,QAAQ;AAAA,YAC9C,SAAS;AAAA,UACX;AAAA,UACA,GAAI,UAAU,SAAS,IAAI,EAAE,mBAAmB,UAAU,IAAI,CAAC;AAAA,UAC/D,YAAY,UAAU,SAAS,IAAI,YAAY;AAAA,QACjD,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,aAAI,iEAAwB,SAAQ,MAAM;AACxC,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAEA,mBAAW,gBAAgB,SAAS;AAClC,cAAI,aAAa,SAAS,0BAA0B;AAClD;AAAA,UACF;AAEA,gBAAM,SAAS,aAAa;AAE5B,cAAI;AACJ,kBAAQ,OAAO,MAAM;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AACH,6BAAe,OAAO;AACtB;AAAA,YACF,KAAK;AACH,8BAAe,YAAO,WAAP,YAAiB;AAChC;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,6BAAe,KAAK,UAAU,OAAO,KAAK;AAC1C;AAAA,UACJ;AAEA,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,cAAc,aAAa;AAAA,YAC3B,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,UAAU,SAAS;AAC9B;;;AIrZA,SAAS,oCAAoC;AAEtC,SAAS,2BACd,OAcsB;AAlBxB;AAmBE,MAAI,SAAS,MAAM;AACjB,WAAO,6BAA6B;AAAA,EACtC;AAEA,QAAM,gBAAe,WAAM,kBAAN,YAAuB;AAC5C,QAAM,oBAAmB,WAAM,sBAAN,YAA2B;AAEpD,QAAM,mBACJ,iBAAM,kBAAN,aAAuB,WAAM,0BAAN,mBAA6B,kBAApD,YAAqE;AAEvE,QAAM,mBACJ,iBAAM,8BAAN,mBAAiC,qBAAjC,YAAqD;AAEvD,SAAO;AAAA,IACL,aAAa;AAAA,MACX,OAAO;AAAA,MACP,SAAS,eAAe;AAAA,MACxB,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,cAAc;AAAA,MACZ,OAAO;AAAA,MACP,MAAM,KAAK,IAAI,GAAG,mBAAmB,eAAe;AAAA,MACpD,WAAW;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AACF;;;AC5CO,SAAS,0BACd,cACwC;AACxC,UAAQ,cAAc;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;AClBA,SAAS,YAAY,iBAAiB;AACtC,SAAS,KAAAC,UAAS;AAqFlB,IAAM,mBAAmBA,GACtB,YAAY;AAAA,EACX,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAClC,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACtC,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAClC,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACjC,uBAAuBA,GACpB,YAAY;AAAA,IACX,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACpC,CAAC,EACA,QAAQ;AAAA,EACX,2BAA2BA,GACxB,YAAY;AAAA,IACX,kBAAkBA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACvC,CAAC,EACA,QAAQ;AACb,CAAC,EACA,QAAQ;AAIJ,IAAM,wBAAwBA,GAAE,OAAO;AAAA,EAC5C,OAAOA,GAAE,OAAO;AAAA,IACd,SAASA,GAAE,OAAO;AAAA,IAClB,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,IACzB,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC3B,CAAC;AACH,CAAC;AAID,IAAM,8BAA8BA,GAAE,OAAO;AAAA,EAC3C,OAAOA,GAAE,OAAO;AAAA,EAChB,SAASA,GAAE,OAAO;AAAA,EAClB,OAAOA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACpC,cAAcA,GAAE;AAAA,IACdA,GAAE,OAAO;AAAA,MACP,OAAOA,GAAE,OAAO;AAAA,MAChB,SAASA,GAAE,OAAO;AAAA,MAClB,OAAOA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IACtC,CAAC;AAAA,EACH;AACF,CAAC;AAED,IAAM,+BAA+BA,GAClC,OAAO;AAAA,EACN,SAASA,GAAE,MAAM,2BAA2B,EAAE,QAAQ;AACxD,CAAC,EACA,QAAQ;AAIJ,IAAM,+BAA+BA,GAAE,OAAO;AAAA,EACnD,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,EACvB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC5B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,EAC1B,QAAQA,GAAE,QAAQ,iBAAiB,EAAE,QAAQ;AAAA,EAC7C,SAASA,GAAE;AAAA,IACTA,GAAE,OAAO;AAAA,MACP,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC1B,SAASA,GAAE,OAAO;AAAA,QAChB,MAAMA,GAAE,QAAQ,WAAW,EAAE,QAAQ;AAAA,QACrC,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAC5B,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACtC,YAAYA,GACT;AAAA,UACCA,GAAE,OAAO;AAAA,YACP,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,YACvB,MAAMA,GAAE,QAAQ,UAAU,EAAE,QAAQ;AAAA,YACpC,UAAUA,GAAE,OAAO;AAAA,cACjB,MAAMA,GAAE,OAAO;AAAA,cACf,WAAWA,GAAE,OAAO;AAAA,YACtB,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,QAAQ;AAAA,MACb,CAAC;AAAA,MACD,UAAU;AAAA,MACV,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AACT,CAAC;AAEM,IAAM,4BAA4B;AAAA,EAAW,MAClD;AAAA,IACEA,GAAE,MAAM;AAAA,MACNA,GAAE,OAAO;AAAA,QACP,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACvB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAC5B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAC1B,QAAQA,GAAE,QAAQ,uBAAuB,EAAE,QAAQ;AAAA,QACnD,SAASA,GAAE;AAAA,UACTA,GAAE,OAAO;AAAA,YACP,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,YAC1B,OAAOA,GACJ,OAAO;AAAA,cACN,MAAMA,GAAE,QAAQ,WAAW,EAAE,QAAQ;AAAA,cACrC,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,cAC5B,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,cACtC,YAAYA,GACT;AAAA,gBACCA,GAAE,OAAO;AAAA,kBACP,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,kBAC1B,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,kBACvB,MAAMA,GAAE,QAAQ,UAAU,EAAE,QAAQ;AAAA,kBACpC,UAAUA,GAAE,OAAO;AAAA,oBACjB,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,oBACzB,WAAWA,GAAE,OAAO,EAAE,QAAQ;AAAA,kBAChC,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,QAAQ;AAAA,YACb,CAAC,EACA,QAAQ;AAAA,YACX,UAAU;AAAA,YACV,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,YAClC,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAAA,MACD;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;APvJA,SAAS,4BACP,OACA,MACA;AA/DF;AAgEE,SAAO,0BAA0B;AAAA,IAC/B,SAAS,MAAM;AAAA,IACf,OAAM,WAAM,SAAN,YAAc;AAAA,IACpB,OAAM,WAAM,SAAN,YAAc;AAAA,IACpB,GAAG,iCAAiC,MAAM,IAAI;AAAA,IAC9C;AAAA,EACF,CAAC;AACH;AAEA,SAAS,iCAAiC,MAGxC;AACA,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,KAAK;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,YAAY,KAAK,aAAa,MAAM;AAAA,IAC/C;AACE,aAAO,CAAC;AAAA,EACZ;AACF;AAEO,IAAM,8BAAN,MAAM,6BAAuD;AAAA,EA8BlE,YAAY,SAAgC,QAA8B;AA7B1E,SAAS,uBAAuB;AAOhC;AAAA;AAAA;AAAA,SAAS,gBAAgB;AAAA,MACvB,WAAW,CAAC,UAAU;AAAA,MACtB,WAAW,CAAC,UAAU;AAAA,IACxB;AAoBE,SAAK,UAAU;AACf,SAAK,SAAS;AAEd,SAAK,wBAAwB,+BAA+B;AAAA,MAC1D,aAAa;AAAA,MACb,gBAAgB,WAAS,MAAM,MAAM;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAtBA,QAAQ,kBAAkB,EAAE,OAAoC;AAC9D,WAAO,sBAAsB;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,QAAQ,oBAAoB,EAAE,SAG3B;AACD,WAAO,IAAI,6BAA4B,QAAQ,SAAS,QAAQ,MAAM;AAAA,EACxE;AAAA,EAYA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAY,sBAA8B;AACxC,WAAO,KAAK,OAAO,SAAS,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAAA,EACjD;AAAA,EAEA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA+B;AA3KjC;AA4KI,UAAM,mBACH,WAAMC,sBAAqB;AAAA,MAC1B,UAAU,KAAK;AAAA,MACf;AAAA,MACA,QAAQ;AAAA,IACV,CAAC,MAJA,YAIM,CAAC;AAEV,UAAM,cAAiC,CAAC;AACxC,QAAI,QAAQ,MAAM;AAChB,kBAAY,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IAC3D;AACA,QAAI,QAAQ,MAAM;AAChB,kBAAY,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IAC3D;AAEA,UAAM,0BAA0B,CAAC,sBAAsB,KAAK,OAAO;AAEnE,QAAI,CAAC,2BAA2B,eAAe,MAAM;AACnD,kBAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,kCAAkC,KAAK,OAAO;AAAA,MACzD,CAAC;AAAA,IACH;AACA,QAAI,CAAC,2BAA2B,QAAQ,MAAM;AAC5C,kBAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,2BAA2B,KAAK,OAAO;AAAA,MAClD,CAAC;AAAA,IACH;AACA,QAAI,CAAC,2BAA2B,oBAAoB,MAAM;AACxD,kBAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,uCAAuC,KAAK,OAAO;AAAA,MAC9D,CAAC;AAAA,IACH;AACA,QAAI,CAAC,2BAA2B,mBAAmB,MAAM;AACvD,kBAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,sCAAsC,KAAK,OAAO;AAAA,MAC7D,CAAC;AAAA,IACH;AAEA,UAAM;AAAA,MACJ,OAAO;AAAA,MACP,YAAY;AAAA,MACZ;AAAA,IACF,IAAI,aAAa,EAAE,OAAO,YAAY,SAAS,KAAK,QAAQ,CAAC;AAE7D,UAAM,cAAc,yBAAyB,KAAK,OAAO;AACzD,UAAM,oBAAoB,gBAAgB;AAC1C,UAAM,2BAA2B,gBAAgB;AACjD,UAAM,oBAAoB,gBAAgB,qBAAqB;AAE/D,SAAI,uDAAmB,iBAAgB,MAAM;AAC3C,kBAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,QAAI;AACJ,QAAI;AAEJ,UAAM,iCAAiC,MAAM;AAC3C,UAAI,4BAA4B,MAAM;AACpC,oBAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS,gFAAgF,KAAK,OAAO;AAAA,QACvG,CAAC;AAAA,MACH;AAAA,IACF;AAEA,YAAQ,aAAa;AAAA,MACnB,KAAK,WAAW;AACd,YAAI,qBAAqB,MAAM;AAC7B,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SACE;AAAA,UACJ,CAAC;AAAA,QACH;AACA,YAAI,cAAc,QAAQ;AACxB,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA,0BACE,8DACC,kBAAkB,SAAS,KAAK,cAAc,SAC3C,6BAA6B;AAAA,UAC3B;AAAA,UACA,WAAW;AAAA,YACT,SAAS;AAAA,YACT,KAAK;AAAA,YACL,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,UAAU;AAAA,QACZ,CAAC,IACD;AACN;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAChB,uCAA+B;AAC/B,aAAI,uDAAmB,UAAS,cAAc,cAAc,QAAQ;AAClE,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,UACE,uDAAmB,UAAS,aACxB,6BACA;AAAA,YACN,SAAS;AAAA,UACX,CAAC;AAAA,QACH,YAAW,uDAAmB,UAAS,WAAW;AAChD,qBAAW,EAAE,MAAM,UAAU;AAAA,QAC/B;AACA;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAChB,uCAA+B;AAC/B,cAAM,gBACJ,4DAAmB,SAAnB,YACC,kBAAkB,SAAS,IACxB,cAAc,SACZ,aACA,YACF;AACN,YAAI,gBAAgB,QAAQ,mBAAmB;AAC7C,qBAAW;AAAA,YACT,MAAM,sCAAgB;AAAA,YACtB,GAAI,oBAAoB,EAAE,MAAM,MAAe,IAAI,CAAC;AAAA,UACtD;AAAA,QACF;AACA;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAChB,uCAA+B;AAC/B,cAAM,gBACJ,4DAAmB,SAAnB,YACC,kBAAkB,SAAS,IACxB,cAAc,SACZ,aACA,YACF;AACN,YAAI,gBAAgB,MAAM;AACxB,qBAAW,EAAE,MAAM,aAAa;AAAA,QAClC;AACA,YAAI,mBAAmB;AACrB,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS,2DAA2D,KAAK,OAAO;AAAA,UAClF,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAAA,MACA,KAAK,eAAe;AAClB,uCAA+B;AAC/B,YAAI,qBAAqB,MAAM;AAC7B,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,uCAAuC,KAAK,OAAO;AAAA,UAC9D,CAAC;AAAA,QACH;AACA,YAAI,kBAAkB,SAAS,KAAK,cAAc,QAAQ;AACxD,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,wCAAwC,KAAK,OAAO;AAAA,UAC/D,CAAC;AAAA,QACH;AACA,YAAI,mBAAmB;AACrB,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS,2DAA2D,KAAK,OAAO;AAAA,UAClF,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAAA,MACA,KAAK,WAAW;AACd,YAAI,cAAc,QAAQ;AACxB,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SACE;AAAA,UACJ,CAAC;AAAA,QACH;AACA,0BACE,8DACC,kBAAkB,SAAS,KAAK,cAAc,SAC3C,6BAA6B;AAAA,UAC3B;AAAA,UACA,WAAW;AAAA,YACT,SAAS;AAAA,YACT,KAAK;AAAA,YACL,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,UAAU;AAAA,QACZ,CAAC,IACD;AACN,aAAI,uDAAmB,SAAQ,MAAM;AACnC,qBAAW,EAAE,MAAM,kBAAkB,KAAK;AAAA,QAC5C;AACA,YAAI,mBAAmB;AACrB,sBAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS,2DAA2D,KAAK,OAAO;AAAA,UAClF,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACJ,SAAI,iDAAgB,UAAS,QAAQ;AACnC,UACE,KAAK,OAAO,8BAA8B,QAC1C,eAAe,UAAU,MACzB;AAMA,cAAM,EAAE,SAAS,UAAU,GAAG,0BAA0B,IACtD,eAAe;AACjB,0BAAkB;AAAA,UAChB,MAAM;AAAA,UACN,aAAa;AAAA,YACX,OAAM,oBAAe,SAAf,YAAuB;AAAA,YAC7B,SAAQ,qBAAgB,qBAAhB,YAAoC;AAAA,YAC5C,QAAQ,2BAA2B,yBAAyB;AAAA,UAC9D;AAAA,QACF;AAAA,MACF,OAAO;AACL,0BAAkB,EAAE,MAAM,cAAc;AAAA,MAC1C;AAAA,IACF;AAEA,UAAM,EAAE,UAAU,UAAU,gBAAgB,IAC1C,MAAM,gCAAgC;AAAA,MACpC,SAAS,KAAK;AAAA,MACd;AAAA,MACA,qBAAqB,KAAK;AAAA,MAC1B,gBAAgB;AAAA,IAClB,CAAC;AACH,gBAAY,KAAK,GAAG,eAAe;AAEnC,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,IAAK,gBAAgB,aAAa,QAChC,gBAAgB,eAAe,SAAS,EAAE,UAAU,KAAK;AAAA,QAC3D,GAAI,gBAAgB,eAAe,QAAQ;AAAA,UACzC,cAAc,gBAAgB;AAAA,QAChC;AAAA,QACA,uBAAuB;AAAA,QACvB,aAAa,0BAA0B,cAAc;AAAA,QACrD,OAAO,0BAA0B,OAAO;AAAA,QACxC,mBAAmB,0BACf,mBACA;AAAA,QACJ,kBAAkB,0BAA0B,kBAAkB;AAAA,QAC9D;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,OAAO;AAAA,QACP,aAAa;AAAA,QACb,GAAI,gBAAgB,cAAc,QAAQ;AAAA,UACxC,YAAY,gBAAgB;AAAA,QAC9B;AAAA,QACA,GAAI,YAAY,OAAO,EAAE,SAAS,IAAI,CAAC;AAAA,QACvC,GAAI,mBAAmB,QAAQ;AAAA,UAC7B,kBAAkB;AAAA,QACpB;AAAA,QACA,GAAI,gBAAgB,kBAAkB,QAAQ;AAAA,UAC5C,kBAAkB,gBAAgB;AAAA,QACpC;AAAA,QACA,GAAI,gBAAgB,oBAAoB,QAAQ;AAAA,UAC9C,mBAAmB,gBAAgB;AAAA,QACrC;AAAA,MACF;AAAA,MACA,UAAU,CAAC,GAAG,aAAa,GAAG,YAAY;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SACwC;AA1d5C;AA2dI,UAAM,EAAE,MAAM,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE,GAAG,QAAQ,CAAC;AAE5D,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,IAAI,MAAM,cAAc;AAAA,MACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAAS,gBAAe,gBAAK,QAAO,YAAZ,6BAAyB,QAAQ,OAAO;AAAA,MAChE,MAAM;AAAA,MACN,uBAAuB,KAAK;AAAA,MAC5B,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,SAAS,aAAa,QAAQ,CAAC;AACrC,UAAM,UAAyC,CAAC;AAGhD,UAAM,YAAY,OAAO,QAAQ;AACjC,QAAI,aAAa,QAAQ,UAAU,SAAS,GAAG;AAC7C,cAAQ,KAAK,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,IACrD;AAGA,QAAI,OAAO,QAAQ,cAAc,MAAM;AACrC,iBAAW,YAAY,OAAO,QAAQ,YAAY;AAChD,gBAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,YAAY,SAAS,MAAM,WAAW;AAAA,UACtC,UAAU,SAAS,SAAS;AAAA,UAC5B,QAAO,cAAS,SAAS,cAAlB,YAA+B;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF;AAGA,UAAM,OAAO,OAAO,QAAQ;AAC5B,QAAI,QAAQ,QAAQ,KAAK,SAAS,GAAG;AACnC,cAAQ,KAAK,EAAE,MAAM,QAAQ,KAAK,CAAC;AAAA,IACrC;AAEA,WAAO;AAAA,MACL;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,0BAA0B,OAAO,aAAa;AAAA,QACvD,MAAK,YAAO,kBAAP,YAAwB;AAAA,MAC/B;AAAA,MACA,OAAO,2BAA2B,aAAa,KAAK;AAAA,MACpD,kBAAkB;AAAA,QAChB,CAAC,KAAK,mBAAmB,GAAG;AAAA,UAC1B,GAAI,OAAO,YAAY,QAAQ,EAAE,UAAU,OAAO,SAAS;AAAA,UAC3D,GAAI,aAAa,UAAU,QAAQ;AAAA,YACjC,gBAAgB,aAAa;AAAA,UAC/B;AAAA,UACA,GAAI,OAAO,SAAS,QAAQ,EAAE,aAAa,OAAO,MAAM;AAAA,UACxD,GAAI,OAAO,QAAQ,QAAQ,QAAQ;AAAA,YACjC,aAAa,OAAO,QAAQ;AAAA,UAC9B;AAAA,UACA,GAAI,OAAO,QAAQ,cAAc,QAAQ;AAAA,YACvC,eAAe,OAAO,QAAQ,WAC3B,IAAI,cAAY,SAAS,IAAI,EAC7B,OAAO,UAAQ,QAAQ,IAAI;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS,EAAE,MAAM,KAAK;AAAA,MACtB,UAAU;AAAA,QACR,GAAG,oBAAoB,YAAY;AAAA,QACnC,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACsC;AA/iB1C;AAgjBI,UAAM,EAAE,MAAM,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE,GAAG,QAAQ,CAAC;AAE5D,UAAM,OAAO;AAAA,MACX,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,GAAI,KAAK,OAAO,gBAAgB;AAAA,QAC9B,gBAAgB,EAAE,eAAe,KAAK;AAAA,MACxC;AAAA,IACF;AAEA,UAAM,EAAE,iBAAiB,OAAO,SAAS,IAAI,MAAM,cAAc;AAAA,MAC/D,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAAS,gBAAe,gBAAK,QAAO,YAAZ,6BAAyB,QAAQ,OAAO;AAAA,MAChE;AAAA,MACA,uBAAuB,KAAK;AAAA,MAC5B,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI;AAEJ,QAAI,eAA4C;AAAA,MAC9C,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AACA,QAAI,gBAAsD;AAC1D,QAAI,cAAoD;AACxD,UAAM,kBAA2C,CAAC;AAClD,UAAM,sBAAsB,KAAK;AACjC,QAAI,eAAe;AACnB,QAAI,oBAAoB;AACxB,QAAI,eAAe;AACnB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,gBAAgB,oBAAI,IAAwB;AAElD,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,QACf,IAAI,gBAGF;AAAA,UACA,MAAM,YAAY;AAChB,8BAAkB,IAAI,yBAAyB,YAAY;AAAA,cACzD;AAAA,YACF,CAAC;AACD,uBAAW,QAAQ,EAAE,MAAM,gBAAgB,SAAS,CAAC;AAAA,UACvD;AAAA,UAEA,UAAU,OAAO,YAAY;AAxmBvC,gBAAAC,KAAAC;AA0mBY,gBAAI,QAAQ,kBAAkB;AAC5B,yBAAW,QAAQ,EAAE,MAAM,OAAO,UAAU,MAAM,SAAS,CAAC;AAAA,YAC9D;AAGA,gBAAI,CAAC,MAAM,SAAS;AAClB,6BAAe,EAAE,SAAS,SAAS,KAAK,OAAU;AAClD,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC;AACxD;AAAA,YACF;AACA,kBAAM,QAAQ,MAAM;AAGpB,gBAAI,WAAW,OAAO;AACpB,6BAAe,EAAE,SAAS,SAAS,KAAK,OAAU;AAClD,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,OAAO,4BAA4B,MAAM,OAAO,KAAK;AAAA,cACvD,CAAC;AACD;AAAA,YACF;AAEA,gBAAI,cAAc;AAChB,6BAAe;AAEf,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,GAAG,oBAAoB,KAAK;AAAA,cAC9B,CAAC;AAAA,YACH;AAEA,gBAAI,MAAM,SAAS,MAAM;AACvB,8BAAgB,MAAM;AAAA,YACxB;AAEA,gBAAI,MAAM,UAAU,MAAM;AACxB,+BAAiB,MAAM;AAAA,YACzB;AAEA,kBAAM,SAAS,MAAM,QAAQ,CAAC;AAE9B,iBAAI,iCAAQ,UAAS,MAAM;AACzB,4BAAc,OAAO;AAAA,YACvB;AAEA,iBAAI,iCAAQ,UAAS,MAAM;AACzB,4BAAc,OAAO;AAAA,YACvB;AAEA,iBAAI,iCAAQ,kBAAiB,MAAM;AACjC,6BAAe;AAAA,gBACb,SAAS,0BAA0B,OAAO,aAAa;AAAA,gBACvD,KAAK,OAAO;AAAA,cACd;AAAA,YACF;AAEA,kBAAID,MAAA,iCAAQ,aAAR,gBAAAA,IAAkB,YAAW,MAAM;AACrC,8BAAgB,KAAK,GAAG,OAAO,SAAS,OAAO;AAAA,YACjD;AAEA,iBAAI,iCAAQ,UAAS,MAAM;AACzB;AAAA,YACF;AAEA,kBAAM,QAAQ,OAAO;AAErB,gBAAI,MAAM,QAAQ,MAAM;AACtB,4BAAc,MAAM;AAAA,YACtB;AAGA,kBAAM,mBAAmB,MAAM;AAC/B,gBAAI,kBAAkB;AACpB,kBAAI,CAAC,mBAAmB;AACtB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,gBACN,CAAC;AACD,oCAAoB;AAAA,cACtB;AAEA,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI;AAAA,gBACJ,OAAO;AAAA,cACT,CAAC;AAAA,YACH;AAEA,gBAAI,MAAM,SAAS;AACjB,kBAAI,CAAC,cAAc;AACjB,2BAAW,QAAQ,EAAE,MAAM,cAAc,IAAI,QAAQ,CAAC;AACtD,+BAAe;AAAA,cACjB;AAGA,kBAAI,mBAAmB;AACrB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,gBACN,CAAC;AACD,oCAAoB;AAAA,cACtB;AAEA,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI;AAAA,gBACJ,OAAO,MAAM;AAAA,cACf,CAAC;AAAA,YACH;AAEA,gBAAI,MAAM,cAAc,QAAQ,MAAM,WAAW,SAAS,GAAG;AAE3D,kBAAI,mBAAmB;AACrB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,gBACN,CAAC;AACD,oCAAoB;AAAA,cACtB;AAEA,yBAAW,CAAC,OAAO,aAAa,KAAK,MAAM,WAAW,QAAQ,GAAG;AAC/D,sBAAM,iBAAgBC,MAAA,cAAc,UAAd,OAAAA,MAAuB;AAC7C,oBAAI,cAAc,QAAQ,MAAM;AAC9B,gCAAc,IAAI,eAAe,cAAc,IAAI;AAAA,gBACrD;AACA,gCAAgB,aAAa;AAAA,kBAC3B,GAAG;AAAA,kBACH,OAAO;AAAA,gBACT,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,UAEA,MAAM,YAAY;AAChB,gBAAI,mBAAmB;AACrB,yBAAW,QAAQ,EAAE,MAAM,iBAAiB,IAAI,cAAc,CAAC;AAAA,YACjE;AAEA,gBAAI,cAAc;AAChB,yBAAW,QAAQ,EAAE,MAAM,YAAY,IAAI,QAAQ,CAAC;AAAA,YACtD;AAEA,4BAAgB,MAAM;AAEtB,uBAAW,QAAQ;AAAA,cACjB,MAAM;AAAA,cACN;AAAA,cACA,OAAO,2BAA2B,wCAAiB,WAAW;AAAA,cAC9D,kBAAkB;AAAA,gBAChB,CAAC,mBAAmB,GAAG;AAAA,kBACrB,GAAI,gBAAgB,SAAS,KAAK;AAAA,oBAChC,UAAU,EAAE,SAAS,gBAAgB;AAAA,kBACvC;AAAA,kBACA,GAAI,kBAAkB,QAAQ,EAAE,eAAe;AAAA,kBAC/C,GAAI,eAAe,QAAQ,EAAE,YAAY;AAAA,kBACzC,GAAI,eAAe,QAAQ,EAAE,YAAY;AAAA,kBACzC,GAAI,cAAc,OAAO,KAAK;AAAA,oBAC5B,eAAe,CAAC,GAAG,cAAc,QAAQ,CAAC,EACvC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,OAAO,KAAK,EACtC,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI;AAAA,kBAC3B;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU,EAAE,SAAS,gBAAgB;AAAA,IACvC;AAAA,EACF;AACF;;;AQnxBO,IAAM,UACX,OACI,WACA;;;ATkDN,IAAM,iBAAiB;AAEhB,SAAS,gCACd,SACS;AACT,SACE,QAAQ,WAAW,QAAQ,KAC3B,YAAY,oBACZ,YAAY,qBACZ,YAAY,sBACZ,YAAY,sBACZ,YAAY,mCACZ,YAAY,oCACZ,YAAY;AAEhB;AAEO,SAAS,iBACd,UAAsC,CAAC,GACnB;AA1EtB;AA2EE,QAAM,UAAU,sBAAqB,aAAQ,YAAR,YAAmB,cAAc;AACtE,QAAM,aAAa,MACjB;AAAA,IACE;AAAA,MACE,eAAe,UAAU,WAAW;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,yBAAyB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC,CAAC;AAAA,MACF,GAAG,QAAQ;AAAA,IACb;AAAA,IACA,qBAAqB,OAAO;AAAA,EAC9B;AAEF,QAAM,kBAAkB,CAAC,YAAmC;AAC1D,WAAO,IAAI,4BAA4B,SAAS;AAAA,MAC9C,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,cAAc;AAAA,MACd,2BAA2B,gCAAgC,OAAO;AAAA,IACpE,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAAmC,gBAAgB,OAAO;AAE5E,WAAS,uBAAuB;AAChC,WAAS,YAAY;AACrB,WAAS,gBAAgB;AAEzB,WAAS,iBAAiB,CAAC,YAAoB;AAC7C,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,iBAAiB,CAAC;AAAA,EACrE;AAEA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEO,IAAM,aAAa,iBAAiB;","names":["parseProviderOptions","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","z","parseProviderOptions","_a","_b"]}
|
|
1
|
+
{"version":3,"sources":["../src/moonshotai-provider.ts","../src/moonshotai-chat-language-model.ts","../src/convert-to-moonshotai-chat-messages.ts","../src/moonshotai-chat-options.ts","../src/moonshotai-prepare-tools.ts","../src/normalize-json-schema-for-mfjs.ts","../src/convert-moonshotai-chat-usage.ts","../src/map-moonshotai-finish-reason.ts","../src/moonshotai-chat-api-types.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { MoonshotAIChatLanguageModel } from './moonshotai-chat-language-model';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { VERSION } from './version';\n\nexport type { MoonshotAIErrorData } from './moonshotai-chat-api-types';\n\nexport interface MoonshotAIProviderSettings {\n /**\n * Moonshot API key. Default value is taken from the `MOONSHOT_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface MoonshotAIProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a language model for text generation.\n */\n languageModel(modelId: MoonshotAIChatModelId): LanguageModelV4;\n}\n\nconst defaultBaseURL = 'https://api.moonshot.ai/v1';\n\nexport function getModelStructuredOutputSupport(\n modelId: MoonshotAIChatModelId,\n): boolean {\n return (\n modelId.startsWith('kimi-k') ||\n modelId === 'moonshot-v1-8k' ||\n modelId === 'moonshot-v1-32k' ||\n modelId === 'moonshot-v1-128k' ||\n modelId === 'moonshot-v1-auto' ||\n modelId === 'moonshot-v1-8k-vision-preview' ||\n modelId === 'moonshot-v1-32k-vision-preview' ||\n modelId === 'moonshot-v1-128k-vision-preview'\n );\n}\n\nexport function createMoonshotAI(\n options: MoonshotAIProviderSettings = {},\n): MoonshotAIProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'MOONSHOT_API_KEY',\n description: 'Moonshot API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/moonshotai/${VERSION}`,\n );\n\n const createChatModel = (modelId: MoonshotAIChatModelId) => {\n return new MoonshotAIChatLanguageModel(modelId, {\n provider: 'moonshotai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n includeUsage: true,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const provider = (modelId: MoonshotAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const moonshotai = createMoonshotAI();\n","import type {\n APICallError,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createLanguageModelResponseMetadata as getResponseMetadata,\n createProviderStreamError,\n generateId,\n isCustomReasoning,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n StreamingToolCallTracker,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type InferSchema,\n type ParseResult,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { convertToMoonshotAIChatMessages } from './convert-to-moonshotai-chat-messages';\nimport { convertMoonshotAIChatUsage } from './convert-moonshotai-chat-usage';\nimport { mapMoonshotAIFinishReason } from './map-moonshotai-finish-reason';\nimport {\n moonshotAIChatChunkSchema,\n moonshotAIChatResponseSchema,\n moonshotAIErrorSchema,\n type MoonshotAIChatLogprob,\n type MoonshotAIChatTokenUsage,\n} from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n isMoonshotAIKimiModel,\n moonshotaiLanguageModelOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nexport type MoonshotAIChatConfig = {\n provider: string;\n headers?: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n includeUsage?: boolean;\n supportsStructuredOutputs?: boolean;\n};\n\nfunction createMoonshotAIStreamError(\n error: { message: string; type?: string | null; code?: string | null },\n data: unknown,\n) {\n return createProviderStreamError({\n message: error.message,\n type: error.type ?? undefined,\n code: error.code ?? undefined,\n ...getMoonshotAIStreamErrorMetadata(error.type),\n data,\n });\n}\n\nfunction getMoonshotAIStreamErrorMetadata(type?: string | null): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (type) {\n case 'rate_limit_exceeded':\n case 'rate_limit_error':\n return { statusCode: 429, isRetryable: true };\n case 'server_error':\n case 'api_error':\n case 'internal_server_error':\n return { statusCode: 500, isRetryable: true };\n case 'overloaded_error':\n case 'service_unavailable':\n return { statusCode: 503, isRetryable: true };\n case 'timeout':\n case 'timeout_error':\n return { statusCode: 504, isRetryable: true };\n case 'authentication_error':\n case 'invalid_api_key':\n return { statusCode: 401, isRetryable: false };\n case 'permission_error':\n return { statusCode: 403, isRetryable: false };\n case 'not_found_error':\n case 'model_not_found':\n return { statusCode: 404, isRetryable: false };\n case 'bad_request':\n case 'context_length_exceeded':\n case 'invalid_request_error':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n\nexport class MoonshotAIChatLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly modelId: MoonshotAIChatModelId;\n\n // Moonshot AI does not fetch external URLs; the AI SDK downloads and\n // inlines URL file parts instead. ms:// file references from the Moonshot\n // Files API are passed through natively.\n readonly supportedUrls = {\n 'image/*': [/^ms:\\/\\//],\n 'video/*': [/^ms:\\/\\//],\n };\n\n private readonly config: MoonshotAIChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n\n static [WORKFLOW_SERIALIZE](model: MoonshotAIChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: MoonshotAIChatModelId;\n config: MoonshotAIChatConfig;\n }) {\n return new MoonshotAIChatLanguageModel(options.modelId, options.config);\n }\n\n constructor(modelId: MoonshotAIChatModelId, config: MoonshotAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n\n this.failedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: moonshotAIErrorSchema,\n errorToMessage: error => error.error.message,\n });\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n reasoning,\n providerOptions,\n stopSequences,\n responseFormat,\n seed,\n toolChoice,\n tools,\n }: LanguageModelV4CallOptions) {\n const moonshotOptions =\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: moonshotaiLanguageModelOptions,\n })) ?? {};\n\n const allWarnings: SharedV4Warning[] = [];\n if (topK != null) {\n allWarnings.push({ type: 'unsupported', feature: 'topK' });\n }\n if (seed != null) {\n allWarnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n const supportsSamplingOptions = !isMoonshotAIKimiModel(this.modelId);\n\n if (!supportsSamplingOptions && temperature != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `temperature is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && topP != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'topP',\n details: `topP is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && frequencyPenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'frequencyPenalty',\n details: `frequencyPenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (!supportsSamplingOptions && presencePenalty != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'presencePenalty',\n details: `presencePenalty is fixed by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n\n const {\n tools: moonshotTools,\n toolChoice: moonshotToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n\n const modelFamily = getMoonshotAIModelFamily(this.modelId);\n const requestedThinking = moonshotOptions.thinking;\n const requestedReasoningEffort = moonshotOptions.reasoningEffort;\n const preserveReasoning = moonshotOptions.reasoningHistory === 'preserved';\n\n if (requestedThinking?.budgetTokens != null) {\n allWarnings.push({\n type: 'deprecated',\n setting: 'providerOptions.moonshotai.thinking.budgetTokens',\n message:\n 'Moonshot Chat Completions does not support budget_tokens. Remove budgetTokens; the option has been omitted.',\n });\n }\n\n let thinking: { type: 'enabled' | 'disabled'; keep?: 'all' } | undefined;\n let reasoningEffort: 'low' | 'high' | 'max' | undefined;\n\n const warnUnsupportedReasoningEffort = () => {\n if (requestedReasoningEffort != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoningEffort',\n details: `reasoningEffort is only supported by Kimi K3 and has been omitted for model \"${this.modelId}\".`,\n });\n }\n };\n\n switch (modelFamily) {\n case 'kimi-k3': {\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details:\n 'Kimi K3 always reasons and does not accept the thinking field. The option has been omitted.',\n });\n }\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details: 'Kimi K3 reasoning cannot be disabled.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n break;\n }\n case 'kimi-k2.7': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking?.type === 'disabled' || reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature:\n requestedThinking?.type === 'disabled'\n ? 'thinking.type \"disabled\"'\n : 'reasoning \"none\"',\n details: 'Kimi K2.7 thinking cannot be disabled.',\n });\n } else if (requestedThinking?.type === 'enabled') {\n thinking = { type: 'enabled' };\n }\n break;\n }\n case 'kimi-k2.6': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null || preserveReasoning) {\n thinking = {\n type: thinkingType ?? 'enabled',\n ...(preserveReasoning ? { keep: 'all' as const } : {}),\n };\n }\n break;\n }\n case 'kimi-k2.5': {\n warnUnsupportedReasoningEffort();\n const thinkingType =\n requestedThinking?.type ??\n (isCustomReasoning(reasoning)\n ? reasoning === 'none'\n ? 'disabled'\n : 'enabled'\n : undefined);\n if (thinkingType != null) {\n thinking = { type: thinkingType };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'moonshot-v1': {\n warnUnsupportedReasoningEffort();\n if (requestedThinking != null) {\n allWarnings.push({\n type: 'unsupported',\n feature: 'thinking',\n details: `thinking is not supported by model \"${this.modelId}\" and has been omitted.`,\n });\n }\n if (isCustomReasoning(reasoning) && reasoning !== 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: `reasoning is not supported by model \"${this.modelId}\".`,\n });\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n case 'unknown': {\n if (reasoning === 'none') {\n allWarnings.push({\n type: 'unsupported',\n feature: 'reasoning \"none\"',\n details:\n 'Use providerOptions.moonshotai.thinking to control thinking on custom models.',\n });\n }\n reasoningEffort =\n requestedReasoningEffort ??\n (isCustomReasoning(reasoning) && reasoning !== 'none'\n ? mapReasoningToProviderEffort({\n reasoning,\n effortMap: {\n minimal: 'low',\n low: 'low',\n medium: 'high',\n high: 'high',\n xhigh: 'max',\n },\n warnings: allWarnings,\n })\n : undefined);\n if (requestedThinking?.type != null) {\n thinking = { type: requestedThinking.type };\n }\n if (preserveReasoning) {\n allWarnings.push({\n type: 'unsupported',\n feature: `reasoningHistory 'preserved' is not supported by model \"${this.modelId}\"`,\n });\n }\n break;\n }\n }\n\n let response_format: Record<string, unknown> | undefined;\n if (responseFormat?.type === 'json') {\n if (\n this.config.supportsStructuredOutputs === true &&\n responseFormat.schema != null\n ) {\n // kimi-k2.5 produces nonsensical output when the top-level `$schema`\n // keyword injected by the AI SDK is present, even though it otherwise\n // supports structured outputs. Strip it from the schema sent to\n // Moonshot; the full original schema is still used for result\n // validation.\n const { $schema: _$schema, ...schemaWithoutDollarSchema } =\n responseFormat.schema;\n response_format = {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n strict: moonshotOptions.strictJsonSchema ?? true,\n schema: normalizeJsonSchemaForMFJS(schemaWithoutDollarSchema),\n },\n };\n } else {\n response_format = { type: 'json_object' };\n }\n }\n\n const { messages, warnings: messageWarnings } =\n await convertToMoonshotAIChatMessages({\n modelId: this.modelId,\n prompt,\n providerOptionsName: this.providerOptionsName,\n responseFormat: response_format,\n });\n allWarnings.push(...messageWarnings);\n\n return {\n args: {\n model: this.modelId,\n ...((moonshotOptions.logprobs === true ||\n moonshotOptions.topLogprobs != null) && { logprobs: true }),\n ...(moonshotOptions.topLogprobs != null && {\n top_logprobs: moonshotOptions.topLogprobs,\n }),\n max_completion_tokens: maxOutputTokens,\n temperature: supportsSamplingOptions ? temperature : undefined,\n top_p: supportsSamplingOptions ? topP : undefined,\n frequency_penalty: supportsSamplingOptions\n ? frequencyPenalty\n : undefined,\n presence_penalty: supportsSamplingOptions ? presencePenalty : undefined,\n response_format,\n stop: stopSequences,\n messages,\n tools: moonshotTools,\n tool_choice: moonshotToolChoice,\n ...(moonshotOptions.prediction != null && {\n prediction: moonshotOptions.prediction,\n }),\n ...(thinking != null ? { thinking } : {}),\n ...(reasoningEffort != null && {\n reasoning_effort: reasoningEffort,\n }),\n ...(moonshotOptions.promptCacheKey != null && {\n prompt_cache_key: moonshotOptions.promptCacheKey,\n }),\n ...(moonshotOptions.safetyIdentifier != null && {\n safety_identifier: moonshotOptions.safetyIdentifier,\n }),\n },\n warnings: [...allWarnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const {\n responseHeaders,\n value: responseBody,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body: args,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n moonshotAIChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = responseBody.choices[0];\n const content: Array<LanguageModelV4Content> = [];\n\n // reasoning content (before text):\n const reasoning = choice.message.reasoning_content;\n if (reasoning != null && reasoning.length > 0) {\n content.push({ type: 'reasoning', text: reasoning });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id || generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments ?? '',\n });\n }\n }\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n return {\n content,\n finishReason: {\n unified: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: convertMoonshotAIChatUsage(responseBody.usage),\n providerMetadata: {\n [this.providerOptionsName]: {\n ...(choice.logprobs != null && { logprobs: choice.logprobs }),\n ...(responseBody.object != null && {\n responseObject: responseBody.object,\n }),\n ...(choice.index != null && { choiceIndex: choice.index }),\n ...(choice.message.role != null && {\n messageRole: choice.message.role,\n }),\n ...(choice.message.tool_calls != null && {\n toolCallTypes: choice.message.tool_calls\n .map(toolCall => toolCall.type)\n .filter(type => type != null),\n }),\n },\n },\n request: { body: args },\n response: {\n ...getResponseMetadata(responseBody),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const body = {\n ...args,\n stream: true,\n ...(this.config.includeUsage && {\n stream_options: { include_usage: true },\n }),\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers?.(), options.headers),\n body,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n moonshotAIChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let toolCallTracker: StreamingToolCallTracker;\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let topLevelUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n let choiceUsage: MoonshotAIChatTokenUsage | undefined = undefined;\n const contentLogprobs: MoonshotAIChatLogprob[] = [];\n const providerOptionsName = this.providerOptionsName;\n let isFirstChunk = true;\n let isActiveReasoning = false;\n let isActiveText = false;\n let responseObject: 'chat.completion.chunk' | undefined;\n let choiceIndex: number | undefined;\n let messageRole: 'assistant' | undefined;\n const toolCallTypes = new Map<number, 'function'>();\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<InferSchema<typeof moonshotAIChatChunkSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n toolCallTracker = new StreamingToolCallTracker(controller, {\n generateId,\n });\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // emit raw chunk if requested (before anything else):\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = { unified: 'error', raw: undefined };\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = { unified: 'error', raw: undefined };\n controller.enqueue({\n type: 'error',\n error: createMoonshotAIStreamError(value.error, value),\n });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n\n if (value.usage != null) {\n topLevelUsage = value.usage;\n }\n\n if (value.object != null) {\n responseObject = value.object;\n }\n\n const choice = value.choices[0];\n\n if (choice?.usage != null) {\n choiceUsage = choice.usage;\n }\n\n if (choice?.index != null) {\n choiceIndex = choice.index;\n }\n\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapMoonshotAIFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\n }\n\n if (choice?.logprobs?.content != null) {\n contentLogprobs.push(...choice.logprobs.content);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.role != null) {\n messageRole = delta.role;\n }\n\n // enqueue reasoning before text deltas:\n const reasoningContent = delta.reasoning_content;\n if (reasoningContent) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-start',\n id: 'reasoning-0',\n });\n isActiveReasoning = true;\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: 'reasoning-0',\n delta: reasoningContent,\n });\n }\n\n if (delta.content) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'txt-0' });\n isActiveText = true;\n }\n\n // end reasoning when text starts:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'txt-0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null && delta.tool_calls.length > 0) {\n // end reasoning when tool calls start:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\n }\n\n for (const [index, toolCallDelta] of delta.tool_calls.entries()) {\n const toolCallIndex = toolCallDelta.index ?? index;\n if (toolCallDelta.type != null) {\n toolCallTypes.set(toolCallIndex, toolCallDelta.type);\n }\n toolCallTracker.processDelta({\n ...toolCallDelta,\n index: toolCallIndex,\n });\n }\n }\n },\n\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: 'reasoning-end', id: 'reasoning-0' });\n }\n\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'txt-0' });\n }\n\n toolCallTracker.flush();\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertMoonshotAIChatUsage(topLevelUsage ?? choiceUsage),\n providerMetadata: {\n [providerOptionsName]: {\n ...(contentLogprobs.length > 0 && {\n logprobs: { content: contentLogprobs },\n }),\n ...(responseObject != null && { responseObject }),\n ...(choiceIndex != null && { choiceIndex }),\n ...(messageRole != null && { messageRole }),\n ...(toolCallTypes.size > 0 && {\n toolCallTypes: [...toolCallTypes.entries()]\n .sort(([left], [right]) => left - right)\n .map(([, type]) => type),\n }),\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InvalidPromptError,\n UnsupportedFunctionalityError,\n type LanguageModelV4FilePart,\n type LanguageModelV4Prompt,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n convertBase64ToUint8Array,\n convertToBase64,\n getTopLevelMediaType,\n parseProviderOptions,\n resolveProviderReference,\n resolveFullMediaType,\n} from '@ai-sdk/provider-utils';\n\nimport type { MoonshotAIMessages } from './moonshotai-chat-api-types';\nimport {\n getMoonshotAIModelFamily,\n moonshotaiAllMessageProviderOptions,\n type MoonshotAIChatModelId,\n} from './moonshotai-chat-options';\nimport { prepareTools } from './moonshotai-prepare-tools';\n\nconst supportedImageMediaTypes = [\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/bmp',\n 'image/heic',\n 'image/heif',\n] as const;\n\nconst supportedVideoMediaTypes = [\n 'video/mp4',\n 'video/mpeg',\n 'video/mov',\n 'video/avi',\n 'video/x-flv',\n 'video/mpg',\n 'video/webm',\n 'video/wmv',\n 'video/3gpp',\n] as const;\n\nfunction formatMediaUrl({\n part,\n supportedMediaTypes,\n topLevelMediaType,\n}: {\n part: LanguageModelV4FilePart;\n supportedMediaTypes: readonly string[];\n topLevelMediaType: 'image' | 'video';\n}): string {\n if (part.data.type !== 'url' && part.data.type !== 'data') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part data type ${part.data.type}`,\n });\n }\n\n const mediaType =\n part.data.type === 'url' ? part.mediaType : resolveFullMediaType({ part });\n\n if (\n !supportedMediaTypes.includes(mediaType) &&\n !(\n part.data.type === 'url' &&\n (mediaType === topLevelMediaType ||\n mediaType === `${topLevelMediaType}/*`)\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${mediaType}`,\n });\n }\n\n return part.data.type === 'url'\n ? part.data.url.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data.data)}`;\n}\n\n// Moonshot AI chat completions accepts text, image_url, and video_url content\n// parts only. Anything else (audio, PDF, other file types) throws here rather\n// than being rejected by the API with a 400.\nexport async function convertToMoonshotAIChatMessages({\n modelId,\n prompt,\n providerOptionsName = 'moonshotai',\n responseFormat,\n}: {\n modelId?: MoonshotAIChatModelId;\n prompt: LanguageModelV4Prompt;\n providerOptionsName?: string;\n responseFormat?: Record<string, unknown>;\n}): Promise<{\n messages: MoonshotAIMessages;\n warnings: Array<SharedV4Warning>;\n}> {\n const messages: MoonshotAIMessages = [];\n const warnings: Array<SharedV4Warning> = [];\n const modelFamily =\n modelId == null ? 'unknown' : getMoonshotAIModelFamily(modelId);\n\n for (const [index, { role, content, providerOptions }] of prompt.entries()) {\n const moonshotMessageOptions = await parseProviderOptions({\n provider: providerOptionsName,\n providerOptions,\n schema: moonshotaiAllMessageProviderOptions,\n });\n\n if (moonshotMessageOptions?.partial === true && role !== 'assistant') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires `partial: true` on an assistant message.',\n });\n }\n\n if (moonshotMessageOptions?.tools != null && role !== 'system') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot dynamic tools must be configured on a system message.',\n });\n }\n\n switch (role) {\n case 'system': {\n if (moonshotMessageOptions?.tools?.length) {\n if (content.length > 0) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'A Moonshot dynamic-tool system message must use empty content because the API forbids content alongside tools.',\n });\n }\n\n if (modelFamily !== 'kimi-k3' && modelFamily !== 'unknown') {\n warnings.push({\n type: 'unsupported',\n feature: `dynamic tool loading for model \"${modelId}\"`,\n details:\n 'Moonshot documents dynamic tool loading only for Kimi K3. The dynamic system message has been omitted.',\n });\n break;\n }\n\n const { tools, toolWarnings } = prepareTools({\n modelId: modelId ?? 'custom-model',\n tools: moonshotMessageOptions.tools,\n });\n warnings.push(...toolWarnings);\n messages.push({ role: 'system', tools: tools ?? [] });\n break;\n }\n\n messages.push({\n role: 'system',\n content,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({\n role: 'user',\n content: content[0].text,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n const topLevel = getTopLevelMediaType(part.mediaType);\n\n switch (part.data.type) {\n case 'reference': {\n if (topLevel !== 'image' && topLevel !== 'video') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n\n const reference = resolveProviderReference({\n reference: part.data.reference,\n provider: 'moonshotai',\n });\n\n if (!reference.startsWith('ms://')) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Moonshot file provider references without an ms:// URL',\n });\n }\n\n return topLevel === 'image'\n ? {\n type: 'image_url' as const,\n image_url: { url: reference },\n }\n : {\n type: 'video_url' as const,\n video_url: { url: reference },\n };\n }\n case 'text': {\n if (topLevel === 'text') {\n return {\n type: 'text' as const,\n text: part.data.text,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n case 'url':\n case 'data': {\n if (topLevel === 'image') {\n return {\n type: 'image_url' as const,\n image_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedImageMediaTypes,\n topLevelMediaType: 'image',\n }),\n },\n };\n }\n\n if (topLevel === 'video') {\n return {\n type: 'video_url' as const,\n video_url: {\n url: formatMediaUrl({\n part,\n supportedMediaTypes: supportedVideoMediaTypes,\n topLevelMediaType: 'video',\n }),\n },\n };\n }\n\n if (topLevel === 'text') {\n const textContent =\n part.data.type === 'url'\n ? part.data.url.toString()\n : typeof part.data.data === 'string'\n ? new TextDecoder().decode(\n convertBase64ToUint8Array(part.data.data),\n )\n : new TextDecoder().decode(part.data.data);\n\n return {\n type: 'text' as const,\n text: textContent,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }\n }),\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n if (moonshotMessageOptions?.partial === true) {\n if (index !== prompt.length - 1) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode requires the partial assistant message to be the final message.',\n });\n }\n\n if (responseFormat?.type === 'json_object') {\n throw new InvalidPromptError({\n prompt,\n message:\n 'Moonshot AI Partial Mode cannot be combined with JSON object response format.',\n });\n }\n }\n\n let text = '';\n let reasoning = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'reasoning': {\n reasoning += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? text || null : text,\n ...(moonshotMessageOptions?.name != null && {\n name: moonshotMessageOptions.name,\n }),\n ...(moonshotMessageOptions?.partial === true && {\n partial: true,\n }),\n ...(reasoning.length > 0 ? { reasoning_content: reasoning } : {}),\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n if (moonshotMessageOptions?.name != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'message name on tool messages',\n });\n }\n\n for (const toolResponse of content) {\n if (toolResponse.type === 'tool-approval-response') {\n continue;\n }\n\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'execution-denied':\n contentValue = output.reason ?? 'Tool call execution denied.';\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","import type { LanguageModelV4FunctionTool } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIChatModelId =\n | 'moonshot-v1-auto'\n | 'moonshot-v1-8k'\n | 'moonshot-v1-32k'\n | 'moonshot-v1-128k'\n | 'moonshot-v1-8k-vision-preview'\n | 'moonshot-v1-32k-vision-preview'\n | 'moonshot-v1-128k-vision-preview'\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7-code'\n | 'kimi-k2.7-code-highspeed'\n | 'kimi-k3'\n | (string & {});\n\nexport function isMoonshotAIKimiModel(modelId: MoonshotAIChatModelId): boolean {\n return getMoonshotAIModelFamily(modelId).startsWith('kimi-');\n}\n\nexport type MoonshotAIModelFamily =\n | 'kimi-k2.5'\n | 'kimi-k2.6'\n | 'kimi-k2.7'\n | 'kimi-k3'\n | 'moonshot-v1'\n | 'unknown';\n\nexport function getMoonshotAIModelFamily(\n modelId: MoonshotAIChatModelId,\n): MoonshotAIModelFamily {\n if (modelId === 'kimi-k2.5') return 'kimi-k2.5';\n if (modelId === 'kimi-k2.6') return 'kimi-k2.6';\n if (modelId === 'kimi-k2.7-code' || modelId === 'kimi-k2.7-code-highspeed') {\n return 'kimi-k2.7';\n }\n if (modelId === 'kimi-k3') return 'kimi-k3';\n if (modelId.startsWith('moonshot-v1-')) return 'moonshot-v1';\n return 'unknown';\n}\n\nexport const moonshotaiLanguageModelOptions = z.object({\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Whether to return log probabilities for generated tokens.\n */\n logprobs: z.boolean().optional(),\n\n /**\n * Number of most likely tokens to return at each token position.\n *\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs: z.number().int().min(0).max(20).optional(),\n\n /**\n * Reasoning effort for Kimi K3. Supports `low`, `high`, and `max`;\n * defaults to `max`.\n */\n reasoningEffort: z.enum(['low', 'high', 'max']).optional(),\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction: z\n .object({\n type: z.literal('content'),\n content: z.union([\n z.string(),\n z.array(z.object({ type: z.literal('text'), text: z.string() })),\n ]),\n })\n .optional(),\n\n /**\n * Thinking configuration for Kimi K2.x models. Kimi K2.5 and K2.6 support\n * enabling or disabling thinking. Kimi K2.7 Code always has thinking\n * enabled.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n /**\n * @deprecated Moonshot Chat Completions does not support thinking\n * budgets. Accepted for backwards compatibility, then omitted with a\n * warning.\n */\n budgetTokens: z.number().int().min(1024).optional(),\n })\n .optional(),\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory: z.enum(['disabled', 'interleaved', 'preserved']).optional(),\n\n /**\n * Used to cache responses for similar requests to optimize cache hit rates.\n * Typically a session or task id.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * A stable identifier used to help Moonshot detect users violating usage\n * policies. Recommended to hash the username or email address.\n */\n safetyIdentifier: z.string().optional(),\n});\n\nexport type MoonshotAILanguageModelOptions = {\n /**\n * Whether to use strict JSON schema validation for structured outputs.\n *\n * @default true\n */\n strictJsonSchema?: boolean;\n\n /** Whether to return log probabilities for generated tokens. */\n logprobs?: boolean;\n\n /**\n * Number of most likely tokens to return at each token position.\n * Setting this option automatically enables `logprobs`.\n */\n topLogprobs?: number;\n\n /** Reasoning effort for Kimi K3. */\n reasoningEffort?: 'low' | 'high' | 'max';\n\n /**\n * Static predicted content that can accelerate responses when much of the\n * output is known ahead of time.\n */\n prediction?: {\n type: 'content';\n content: string | Array<{ type: 'text'; text: string }>;\n };\n\n /** Controls thinking on Kimi K2.5 and K2.6. K2.7 is always enabled. */\n thinking?: {\n type?: 'enabled' | 'disabled';\n\n /**\n * @deprecated Moonshot Chat Completions does not support thinking budgets.\n * This value is ignored with a warning.\n */\n budgetTokens?: number;\n };\n\n /**\n * Controls preserved reasoning behavior in multi-turn conversations.\n * `disabled` and `interleaved` are compatibility values that leave the\n * request unchanged. `preserved` maps to `thinking.keep: 'all'` for Kimi\n * K2.6. Kimi K2.7 and K3 preserve reasoning by default.\n */\n reasoningHistory?: 'disabled' | 'interleaved' | 'preserved';\n promptCacheKey?: string;\n safetyIdentifier?: string;\n};\n\nexport const moonshotaiMessageProviderOptions = z.object({\n /**\n * The name of the participant represented by the message.\n *\n * Supported on system, user, and assistant messages.\n */\n name: z.string().optional(),\n});\n\nexport type MoonshotAIMessageProviderOptions = z.infer<\n typeof moonshotaiMessageProviderOptions\n>;\n\nexport const moonshotaiAssistantMessageProviderOptions =\n moonshotaiMessageProviderOptions.extend({\n /**\n * Whether the assistant message content is a partial response that Moonshot\n * should continue. Only supported on the final assistant message and cannot\n * be combined with JSON object response format.\n */\n partial: z.literal(true).optional(),\n });\n\nexport type MoonshotAIAssistantMessageProviderOptions = z.infer<\n typeof moonshotaiAssistantMessageProviderOptions\n>;\n\nconst moonshotaiDynamicToolSchema = z.object({\n type: z.literal('function'),\n name: z.string(),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()),\n strict: z.boolean().optional(),\n});\n\nexport const moonshotaiAllMessageProviderOptions =\n moonshotaiAssistantMessageProviderOptions.extend({\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools: z.array(moonshotaiDynamicToolSchema).optional(),\n });\n\nexport type MoonshotAISystemMessageProviderOptions =\n MoonshotAIMessageProviderOptions & {\n /** Function tools to load at this point in a Kimi K3 conversation. */\n tools?: Array<\n Pick<\n LanguageModelV4FunctionTool,\n 'type' | 'name' | 'description' | 'inputSchema' | 'strict'\n >\n >;\n };\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport type { MoonshotAIFunctionTool } from './moonshotai-chat-api-types';\nimport type { MoonshotAIChatModelId } from './moonshotai-chat-options';\nimport { normalizeJsonSchemaForMFJS } from './normalize-json-schema-for-mfjs';\n\nexport function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n modelId: MoonshotAIChatModelId;\n}): {\n tools: undefined | Array<MoonshotAIFunctionTool>;\n toolChoice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: SharedV4Warning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV4Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const moonshotTools: Array<MoonshotAIFunctionTool> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider') {\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.id}`,\n });\n } else {\n moonshotTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: normalizeJsonSchemaForMFJS(tool.inputSchema),\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: moonshotTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'required':\n if (\n modelId === 'kimi-k2.6' ||\n modelId === 'kimi-k2.7-code' ||\n modelId === 'kimi-k2.7-code-highspeed'\n ) {\n toolWarnings.push({\n type: 'unsupported',\n feature: `tool choice \"required\" for model \"${modelId}\"`,\n details:\n 'Moonshot AI rejects required tool choice for this model. The setting has been omitted; use \"auto\" or select a specific tool instead.',\n });\n return {\n tools: moonshotTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n return { tools: moonshotTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: moonshotTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport { isRecord } from '@ai-sdk/provider-utils';\n\nconst SCHEMA_ARRAY_KEYS = ['allOf', 'anyOf', 'oneOf', 'prefixItems'] as const;\nconst SCHEMA_MAP_KEYS = [\n 'properties',\n 'patternProperties',\n '$defs',\n 'dependentSchemas',\n] as const;\nconst SCHEMA_SINGLE_KEYS = [\n 'additionalProperties',\n 'propertyNames',\n 'items',\n 'contains',\n 'not',\n 'if',\n 'then',\n 'else',\n] as const;\n\n/**\n * Normalizes a JSON Schema to the subset Moonshot's MFJS validator accepts:\n * `object` root required, tuple `items` become `prefixItems`, and `type` next\n * to `anyOf` moves into the branches. Everything else passes through. The\n * full original schema is still used for AI SDK result validation.\n */\nexport function normalizeJsonSchemaForMFJS(schema: unknown): unknown {\n return normalizeDefinition(schema, true);\n}\n\nfunction normalizeDefinition(definition: unknown, isRoot: boolean): unknown {\n if (typeof definition === 'boolean' || !isRecord(definition)) {\n if (isRoot) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n return definition;\n }\n\n if (isRoot && definition.type !== 'object') {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'tool parameters must be a JSON Schema object with type \"object\" for moonshotai (MFJS)',\n });\n }\n\n const result: Record<string, unknown> = { ...definition };\n\n // Existing prefixItems stay first (they are positional).\n if (Array.isArray(result.items)) {\n const tuple = result.items;\n result.prefixItems = [\n ...(Array.isArray(result.prefixItems) ? result.prefixItems : []),\n ...tuple.map(item => normalizeDefinition(item, false)),\n ];\n delete result.items;\n } else if (isRecord(result.items)) {\n result.items = normalizeDefinition(result.items, false);\n }\n\n // MFJS requires type to live inside anyOf items.\n if (typeof result.type === 'string' && Array.isArray(result.anyOf)) {\n const parentType = result.type;\n delete result.type;\n result.anyOf = result.anyOf.map(branch =>\n isRecord(branch) && branch.type == null\n ? { type: parentType, ...branch }\n : branch,\n );\n }\n\n for (const key of SCHEMA_ARRAY_KEYS) {\n const value = result[key];\n if (Array.isArray(value)) {\n result[key] = value.map(item => normalizeDefinition(item, false));\n }\n }\n\n for (const key of SCHEMA_MAP_KEYS) {\n const value = result[key];\n if (isRecord(value)) {\n result[key] = Object.fromEntries(\n Object.entries(value).map(([k, v]) => [\n k,\n normalizeDefinition(v, false),\n ]),\n );\n }\n }\n\n for (const key of SCHEMA_SINGLE_KEYS) {\n const value = result[key];\n if (isRecord(value) || typeof value === 'boolean') {\n result[key] = normalizeDefinition(value, false);\n }\n }\n\n return result;\n}\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { createNullLanguageModelUsage } from '@ai-sdk/provider-utils';\n\nexport function convertMoonshotAIChatUsage(\n usage:\n | {\n prompt_tokens?: number | null;\n completion_tokens?: number | null;\n cached_tokens?: number | null;\n prompt_tokens_details?: {\n cached_tokens?: number | null;\n } | null;\n completion_tokens_details?: {\n reasoning_tokens?: number | null;\n } | null;\n }\n | undefined\n | null,\n): LanguageModelV4Usage {\n if (usage == null) {\n return createNullLanguageModelUsage();\n }\n\n const promptTokens = usage.prompt_tokens ?? 0;\n const completionTokens = usage.completion_tokens ?? 0;\n\n const cacheReadTokens =\n usage.cached_tokens ?? usage.prompt_tokens_details?.cached_tokens ?? 0;\n\n const reasoningTokens =\n usage.completion_tokens_details?.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens - cacheReadTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: completionTokens,\n text: Math.max(0, completionTokens - reasoningTokens),\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapMoonshotAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'other';\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type MoonshotAIMessages = Array<MoonshotAIMessage>;\n\nexport type MoonshotAIMessage =\n | MoonshotAISystemMessage\n | MoonshotAIUserMessage\n | MoonshotAIAssistantMessage\n | MoonshotAIToolMessage;\n\nexport type MoonshotAISystemMessage =\n | {\n role: 'system';\n content: string;\n name?: string;\n }\n | {\n role: 'system';\n tools: Array<MoonshotAIFunctionTool>;\n };\n\nexport interface MoonshotAIFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n strict?: boolean;\n };\n}\n\nexport interface MoonshotAIUserMessage {\n role: 'user';\n content: string | Array<MoonshotAIContentPart>;\n name?: string;\n}\n\nexport type MoonshotAIContentPart =\n | MoonshotAIContentPartText\n | MoonshotAIContentPartImage\n | MoonshotAIContentPartVideo;\n\nexport interface MoonshotAIContentPartText {\n type: 'text';\n text: string;\n}\n\nexport interface MoonshotAIContentPartImage {\n type: 'image_url';\n image_url: { url: string };\n}\n\nexport interface MoonshotAIContentPartVideo {\n type: 'video_url';\n video_url: { url: string };\n}\n\nexport interface MoonshotAIAssistantMessage {\n role: 'assistant';\n content?: string | null;\n name?: string;\n partial?: true;\n reasoning_content?: string;\n tool_calls?: Array<MoonshotAIMessageToolCall>;\n}\n\nexport interface MoonshotAIMessageToolCall {\n type: 'function';\n id: string;\n function: {\n arguments: string;\n name: string;\n };\n}\n\nexport interface MoonshotAIToolMessage {\n role: 'tool';\n content: string;\n tool_call_id: string;\n}\n\n// Schemas below are limited versions focused on what the implementation\n// needs. This limits breakages when the API changes and increases efficiency.\n\n// Loose, nested objects included: the parsed value is returned as `usage.raw`.\nconst tokenUsageSchema = z\n .looseObject({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .looseObject({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .looseObject({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatTokenUsage = z.infer<typeof tokenUsageSchema>;\n\nexport const moonshotAIErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n code: z.string().nullish(),\n }),\n});\n\nexport type MoonshotAIErrorData = z.infer<typeof moonshotAIErrorSchema>;\n\nconst moonshotAIChatLogprobSchema = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n }),\n ),\n});\n\nconst moonshotAIChatLogprobsSchema = z\n .object({\n content: z.array(moonshotAIChatLogprobSchema).nullish(),\n })\n .nullish();\n\nexport type MoonshotAIChatLogprob = z.infer<typeof moonshotAIChatLogprobSchema>;\n\nexport const moonshotAIChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('chat.completion').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\n});\n\nexport const moonshotAIChatChunkSchema = lazySchema(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('chat.completion.chunk').nullish(),\n choices: z.array(\n z.object({\n index: z.number().nullish(),\n delta: z\n .object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number().nullish(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: moonshotAIChatLogprobsSchema,\n finish_reason: z.string().nullish(),\n usage: tokenUsageSchema,\n }),\n ),\n usage: tokenUsageSchema,\n }),\n moonshotAIErrorSchema,\n ]),\n ),\n);\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["parseProviderOptions","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","z","parseProviderOptions"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/moonshotai",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.58",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@ai-sdk/provider": "4.0.18",
|
|
29
|
-
"@ai-sdk/provider-utils": "5.0.
|
|
29
|
+
"@ai-sdk/provider-utils": "5.0.49"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@ai-sdk/test-server": "2.0.
|
|
32
|
+
"@ai-sdk/test-server": "2.0.2",
|
|
33
33
|
"@types/node": "22.19.19",
|
|
34
34
|
"@vercel/ai-tsconfig": "0.0.0",
|
|
35
35
|
"tsup": "^8.5.1",
|