@ai-sdk/alibaba 1.0.67 → 1.0.69
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 +20 -0
- package/dist/index.d.mts +15 -22
- package/dist/index.d.ts +15 -22
- package/dist/index.js +251 -213
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +227 -174
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/alibaba-chat-language-model.ts +94 -81
- package/src/alibaba-chat-options.ts +38 -29
- package/src/alibaba-embedding-model.ts +29 -22
- package/src/alibaba-embedding-options.ts +30 -21
- package/src/alibaba-error.ts +18 -9
- package/src/alibaba-video-model.ts +59 -45
package/dist/index.js
CHANGED
|
@@ -28,56 +28,65 @@ module.exports = __toCommonJS(index_exports);
|
|
|
28
28
|
|
|
29
29
|
// src/alibaba-provider.ts
|
|
30
30
|
var import_provider5 = require("@ai-sdk/provider");
|
|
31
|
-
var
|
|
31
|
+
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
|
32
32
|
|
|
33
33
|
// src/alibaba-chat-language-model.ts
|
|
34
34
|
var import_internal2 = require("@ai-sdk/openai-compatible/internal");
|
|
35
35
|
var import_provider2 = require("@ai-sdk/provider");
|
|
36
|
-
var
|
|
36
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
37
37
|
var import_v43 = require("zod/v4");
|
|
38
38
|
|
|
39
39
|
// src/alibaba-chat-options.ts
|
|
40
|
+
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
40
41
|
var import_v4 = require("zod/v4");
|
|
41
|
-
var alibabaLanguageModelOptions =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
42
|
+
var alibabaLanguageModelOptions = (0, import_provider_utils.lazySchema)(
|
|
43
|
+
() => (0, import_provider_utils.zodSchema)(
|
|
44
|
+
import_v4.z.object({
|
|
45
|
+
/**
|
|
46
|
+
* Enable thinking/reasoning mode for supported models.
|
|
47
|
+
* When enabled, the model generates reasoning content before the response.
|
|
48
|
+
*
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
enableThinking: import_v4.z.boolean().optional(),
|
|
52
|
+
/**
|
|
53
|
+
* Maximum number of reasoning tokens to generate.
|
|
54
|
+
*/
|
|
55
|
+
thinkingBudget: import_v4.z.number().positive().optional(),
|
|
56
|
+
/**
|
|
57
|
+
* Whether to preserve reasoning from previous assistant messages.
|
|
58
|
+
*
|
|
59
|
+
* When enabled, historical reasoning is sent separately as
|
|
60
|
+
* `reasoning_content` and Alibaba receives `preserve_thinking: true`.
|
|
61
|
+
* Defaults to `true` for models that support preserved thinking; set to
|
|
62
|
+
* `false` to opt out.
|
|
63
|
+
*/
|
|
64
|
+
preserveThinking: import_v4.z.boolean().optional(),
|
|
65
|
+
/**
|
|
66
|
+
* Whether to enable parallel function calling during tool use.
|
|
67
|
+
*
|
|
68
|
+
* @default true
|
|
69
|
+
*/
|
|
70
|
+
parallelToolCalls: import_v4.z.boolean().optional()
|
|
71
|
+
})
|
|
72
|
+
)
|
|
73
|
+
);
|
|
69
74
|
|
|
70
75
|
// src/alibaba-error.ts
|
|
71
|
-
var
|
|
76
|
+
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
72
77
|
var import_v42 = require("zod/v4");
|
|
73
|
-
var alibabaErrorDataSchema =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
var alibabaErrorDataSchema = (0, import_provider_utils2.lazySchema)(
|
|
79
|
+
() => (0, import_provider_utils2.zodSchema)(
|
|
80
|
+
import_v42.z.object({
|
|
81
|
+
error: import_v42.z.object({
|
|
82
|
+
message: import_v42.z.string(),
|
|
83
|
+
code: import_v42.z.string().nullish(),
|
|
84
|
+
type: import_v42.z.string().nullish()
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
)
|
|
88
|
+
);
|
|
89
|
+
var alibabaFailedResponseHandler = (0, import_provider_utils2.createJsonErrorResponseHandler)({
|
|
81
90
|
errorSchema: alibabaErrorDataSchema,
|
|
82
91
|
errorToMessage: (data) => data.error.message
|
|
83
92
|
});
|
|
@@ -101,12 +110,12 @@ function convertAlibabaUsage(usage) {
|
|
|
101
110
|
|
|
102
111
|
// src/convert-to-alibaba-chat-messages.ts
|
|
103
112
|
var import_provider = require("@ai-sdk/provider");
|
|
104
|
-
var
|
|
113
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
105
114
|
function formatImageUrl({
|
|
106
115
|
data,
|
|
107
116
|
mediaType
|
|
108
117
|
}) {
|
|
109
|
-
return data instanceof URL ? data.toString() : `data:${mediaType};base64,${(0,
|
|
118
|
+
return data instanceof URL ? data.toString() : `data:${mediaType};base64,${(0, import_provider_utils3.convertToBase64)(data)}`;
|
|
110
119
|
}
|
|
111
120
|
function convertToAlibabaChatMessages({
|
|
112
121
|
prompt,
|
|
@@ -375,7 +384,7 @@ var AlibabaLanguageModel = class {
|
|
|
375
384
|
var _a, _b;
|
|
376
385
|
const warnings = [];
|
|
377
386
|
const cacheControlValidator = new CacheControlValidator();
|
|
378
|
-
const alibabaOptions = await (0,
|
|
387
|
+
const alibabaOptions = await (0, import_provider_utils4.parseProviderOptions)({
|
|
379
388
|
provider: "alibaba",
|
|
380
389
|
providerOptions,
|
|
381
390
|
schema: alibabaLanguageModelOptions
|
|
@@ -393,7 +402,7 @@ var AlibabaLanguageModel = class {
|
|
|
393
402
|
details: `Alibaba does not support JSON Schema output for model ${this.modelId}. JSON Object mode is used instead. The schema was injected into the system message and will only be validated locally.`
|
|
394
403
|
});
|
|
395
404
|
}
|
|
396
|
-
const resolvedPrompt = useJsonObject ? (0,
|
|
405
|
+
const resolvedPrompt = useJsonObject ? (0, import_provider_utils4.injectJsonInstructionIntoMessages)({
|
|
397
406
|
messages: prompt,
|
|
398
407
|
schema: responseFormat.schema
|
|
399
408
|
}) : prompt;
|
|
@@ -448,12 +457,12 @@ var AlibabaLanguageModel = class {
|
|
|
448
457
|
responseHeaders,
|
|
449
458
|
value: response,
|
|
450
459
|
rawValue: rawResponse
|
|
451
|
-
} = await (0,
|
|
460
|
+
} = await (0, import_provider_utils4.postJsonToApi)({
|
|
452
461
|
url: `${this.config.baseURL}/chat/completions`,
|
|
453
|
-
headers: (0,
|
|
462
|
+
headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
|
|
454
463
|
body: args,
|
|
455
464
|
failedResponseHandler: alibabaFailedResponseHandler,
|
|
456
|
-
successfulResponseHandler: (0,
|
|
465
|
+
successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
|
|
457
466
|
alibabaChatResponseSchema
|
|
458
467
|
),
|
|
459
468
|
abortSignal: options.abortSignal,
|
|
@@ -461,10 +470,6 @@ var AlibabaLanguageModel = class {
|
|
|
461
470
|
});
|
|
462
471
|
const choice = response.choices[0];
|
|
463
472
|
const content = [];
|
|
464
|
-
const text = choice.message.content;
|
|
465
|
-
if (text != null && text.length > 0) {
|
|
466
|
-
content.push({ type: "text", text });
|
|
467
|
-
}
|
|
468
473
|
const reasoning = choice.message.reasoning_content;
|
|
469
474
|
if (reasoning != null && reasoning.length > 0) {
|
|
470
475
|
content.push({
|
|
@@ -472,6 +477,10 @@ var AlibabaLanguageModel = class {
|
|
|
472
477
|
text: reasoning
|
|
473
478
|
});
|
|
474
479
|
}
|
|
480
|
+
const text = choice.message.content;
|
|
481
|
+
if (text != null && text.length > 0) {
|
|
482
|
+
content.push({ type: "text", text });
|
|
483
|
+
}
|
|
475
484
|
if (choice.message.tool_calls != null) {
|
|
476
485
|
for (const toolCall of choice.message.tool_calls) {
|
|
477
486
|
content.push({
|
|
@@ -505,12 +514,12 @@ var AlibabaLanguageModel = class {
|
|
|
505
514
|
stream: true,
|
|
506
515
|
stream_options: this.config.includeUsage ? { include_usage: true } : void 0
|
|
507
516
|
};
|
|
508
|
-
const { responseHeaders, value: response } = await (0,
|
|
517
|
+
const { responseHeaders, value: response } = await (0, import_provider_utils4.postJsonToApi)({
|
|
509
518
|
url: `${this.config.baseURL}/chat/completions`,
|
|
510
|
-
headers: (0,
|
|
519
|
+
headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
|
|
511
520
|
body,
|
|
512
521
|
failedResponseHandler: alibabaFailedResponseHandler,
|
|
513
|
-
successfulResponseHandler: (0,
|
|
522
|
+
successfulResponseHandler: (0, import_provider_utils4.createEventSourceResponseHandler)(
|
|
514
523
|
alibabaChatChunkSchema
|
|
515
524
|
),
|
|
516
525
|
abortSignal: options.abortSignal,
|
|
@@ -562,7 +571,7 @@ var AlibabaLanguageModel = class {
|
|
|
562
571
|
controller.enqueue({ type: "text-end", id: "0" });
|
|
563
572
|
activeText = false;
|
|
564
573
|
}
|
|
565
|
-
activeReasoningId = (0,
|
|
574
|
+
activeReasoningId = (0, import_provider_utils4.generateId)();
|
|
566
575
|
controller.enqueue({
|
|
567
576
|
type: "reasoning-start",
|
|
568
577
|
id: activeReasoningId
|
|
@@ -702,7 +711,7 @@ var AlibabaLanguageModel = class {
|
|
|
702
711
|
};
|
|
703
712
|
}
|
|
704
713
|
};
|
|
705
|
-
var alibabaUsageSchema = import_v43.z.object({
|
|
714
|
+
var alibabaUsageSchema = () => import_v43.z.object({
|
|
706
715
|
prompt_tokens: import_v43.z.number(),
|
|
707
716
|
completion_tokens: import_v43.z.number(),
|
|
708
717
|
total_tokens: import_v43.z.number(),
|
|
@@ -714,96 +723,109 @@ var alibabaUsageSchema = import_v43.z.object({
|
|
|
714
723
|
reasoning_tokens: import_v43.z.number().nullish()
|
|
715
724
|
}).nullish()
|
|
716
725
|
});
|
|
717
|
-
var alibabaChatResponseSchema =
|
|
718
|
-
|
|
719
|
-
created: import_v43.z.number().nullish(),
|
|
720
|
-
model: import_v43.z.string().nullish(),
|
|
721
|
-
choices: import_v43.z.array(
|
|
726
|
+
var alibabaChatResponseSchema = (0, import_provider_utils4.lazySchema)(
|
|
727
|
+
() => (0, import_provider_utils4.zodSchema)(
|
|
722
728
|
import_v43.z.object({
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
729
|
+
id: import_v43.z.string().nullish(),
|
|
730
|
+
created: import_v43.z.number().nullish(),
|
|
731
|
+
model: import_v43.z.string().nullish(),
|
|
732
|
+
choices: import_v43.z.array(
|
|
733
|
+
import_v43.z.object({
|
|
734
|
+
message: import_v43.z.object({
|
|
735
|
+
role: import_v43.z.literal("assistant").nullish(),
|
|
736
|
+
content: import_v43.z.string().nullish(),
|
|
737
|
+
reasoning_content: import_v43.z.string().nullish(),
|
|
738
|
+
// Alibaba thinking mode
|
|
739
|
+
tool_calls: import_v43.z.array(
|
|
740
|
+
import_v43.z.object({
|
|
741
|
+
id: import_v43.z.string(),
|
|
742
|
+
type: import_v43.z.literal("function"),
|
|
743
|
+
function: import_v43.z.object({
|
|
744
|
+
name: import_v43.z.string(),
|
|
745
|
+
arguments: import_v43.z.string()
|
|
746
|
+
})
|
|
747
|
+
})
|
|
748
|
+
).nullish()
|
|
749
|
+
}),
|
|
750
|
+
finish_reason: import_v43.z.string().nullish(),
|
|
751
|
+
index: import_v43.z.number()
|
|
752
|
+
})
|
|
753
|
+
),
|
|
754
|
+
usage: alibabaUsageSchema().nullish()
|
|
741
755
|
})
|
|
742
|
-
)
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
id: import_v43.z.string().nullish(),
|
|
747
|
-
created: import_v43.z.number().nullish(),
|
|
748
|
-
model: import_v43.z.string().nullish(),
|
|
749
|
-
choices: import_v43.z.array(
|
|
756
|
+
)
|
|
757
|
+
);
|
|
758
|
+
var alibabaChatChunkSchema = (0, import_provider_utils4.lazySchema)(
|
|
759
|
+
() => (0, import_provider_utils4.zodSchema)(
|
|
750
760
|
import_v43.z.object({
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
761
|
+
id: import_v43.z.string().nullish(),
|
|
762
|
+
created: import_v43.z.number().nullish(),
|
|
763
|
+
model: import_v43.z.string().nullish(),
|
|
764
|
+
choices: import_v43.z.array(
|
|
765
|
+
import_v43.z.object({
|
|
766
|
+
delta: import_v43.z.object({
|
|
767
|
+
role: import_v43.z.enum(["assistant"]).nullish(),
|
|
768
|
+
content: import_v43.z.string().nullish(),
|
|
769
|
+
reasoning_content: import_v43.z.string().nullish(),
|
|
770
|
+
// Alibaba thinking mode delta
|
|
771
|
+
tool_calls: import_v43.z.array(
|
|
772
|
+
import_v43.z.object({
|
|
773
|
+
index: import_v43.z.number().nullish(),
|
|
774
|
+
// Index for accumulating tool calls
|
|
775
|
+
id: import_v43.z.string().nullish(),
|
|
776
|
+
type: import_v43.z.literal("function").nullish(),
|
|
777
|
+
function: import_v43.z.object({
|
|
778
|
+
name: import_v43.z.string().nullish(),
|
|
779
|
+
arguments: import_v43.z.string().nullish()
|
|
780
|
+
}).nullish()
|
|
781
|
+
})
|
|
782
|
+
).nullish()
|
|
783
|
+
}),
|
|
784
|
+
finish_reason: import_v43.z.string().nullish(),
|
|
785
|
+
index: import_v43.z.number()
|
|
786
|
+
})
|
|
787
|
+
),
|
|
788
|
+
usage: alibabaUsageSchema().nullish()
|
|
789
|
+
// Usage only appears in final chunk
|
|
771
790
|
})
|
|
772
|
-
)
|
|
773
|
-
|
|
774
|
-
// Usage only appears in final chunk
|
|
775
|
-
});
|
|
791
|
+
)
|
|
792
|
+
);
|
|
776
793
|
|
|
777
794
|
// src/alibaba-embedding-model.ts
|
|
778
795
|
var import_provider3 = require("@ai-sdk/provider");
|
|
779
|
-
var
|
|
796
|
+
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
|
780
797
|
var import_v45 = require("zod/v4");
|
|
781
798
|
|
|
782
799
|
// src/alibaba-embedding-options.ts
|
|
800
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
|
783
801
|
var import_v44 = require("zod/v4");
|
|
784
|
-
var alibabaEmbeddingModelOptions =
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
802
|
+
var alibabaEmbeddingModelOptions = (0, import_provider_utils5.lazySchema)(
|
|
803
|
+
() => (0, import_provider_utils5.zodSchema)(
|
|
804
|
+
import_v44.z.object({
|
|
805
|
+
/**
|
|
806
|
+
* Differentiates query text from document text for asymmetric retrieval tasks.
|
|
807
|
+
* Defaults to `document`.
|
|
808
|
+
*/
|
|
809
|
+
textType: import_v44.z.enum(["query", "document"]).optional(),
|
|
810
|
+
/**
|
|
811
|
+
* The dimension of the output embedding vectors. Defaults to 1024.
|
|
812
|
+
*
|
|
813
|
+
* `text-embedding-v4` also supports 1536 and 2048 dimensions.
|
|
814
|
+
*/
|
|
815
|
+
dimension: import_v44.z.number().optional(),
|
|
816
|
+
/**
|
|
817
|
+
* The output vector type. Defaults to `dense`.
|
|
818
|
+
*
|
|
819
|
+
* Sparse-only output is not supported by the AI SDK embedding interface,
|
|
820
|
+
* which requires dense number arrays.
|
|
821
|
+
*/
|
|
822
|
+
outputType: import_v44.z.enum(["dense", "sparse", "dense&sparse"]).optional()
|
|
823
|
+
})
|
|
824
|
+
)
|
|
825
|
+
);
|
|
804
826
|
|
|
805
827
|
// src/alibaba-embedding-model.ts
|
|
806
|
-
var alibabaEmbeddingFailedResponseHandler = (0,
|
|
828
|
+
var alibabaEmbeddingFailedResponseHandler = (0, import_provider_utils6.createJsonErrorResponseHandler)({
|
|
807
829
|
errorSchema: import_v45.z.object({
|
|
808
830
|
code: import_v45.z.string().nullish(),
|
|
809
831
|
message: import_v45.z.string(),
|
|
@@ -836,7 +858,7 @@ var AlibabaEmbeddingModel = class {
|
|
|
836
858
|
values
|
|
837
859
|
});
|
|
838
860
|
}
|
|
839
|
-
const alibabaOptions = await (0,
|
|
861
|
+
const alibabaOptions = await (0, import_provider_utils6.parseProviderOptions)({
|
|
840
862
|
provider: "alibaba",
|
|
841
863
|
providerOptions,
|
|
842
864
|
schema: alibabaEmbeddingModelOptions
|
|
@@ -851,9 +873,9 @@ var AlibabaEmbeddingModel = class {
|
|
|
851
873
|
responseHeaders,
|
|
852
874
|
value: response,
|
|
853
875
|
rawValue
|
|
854
|
-
} = await (0,
|
|
876
|
+
} = await (0, import_provider_utils6.postJsonToApi)({
|
|
855
877
|
url: `${this.config.baseURL}/services/embeddings/text-embedding/text-embedding`,
|
|
856
|
-
headers: (0,
|
|
878
|
+
headers: (0, import_provider_utils6.combineHeaders)(this.config.headers(), headers),
|
|
857
879
|
body: {
|
|
858
880
|
model: this.modelId,
|
|
859
881
|
input: {
|
|
@@ -866,7 +888,7 @@ var AlibabaEmbeddingModel = class {
|
|
|
866
888
|
}
|
|
867
889
|
},
|
|
868
890
|
failedResponseHandler: alibabaEmbeddingFailedResponseHandler,
|
|
869
|
-
successfulResponseHandler: (0,
|
|
891
|
+
successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
|
|
870
892
|
alibabaTextEmbeddingResponseSchema
|
|
871
893
|
),
|
|
872
894
|
abortSignal,
|
|
@@ -894,32 +916,36 @@ var AlibabaEmbeddingModel = class {
|
|
|
894
916
|
};
|
|
895
917
|
}
|
|
896
918
|
};
|
|
897
|
-
var alibabaTextEmbeddingSparseEmbeddingSchema = import_v45.z.object({
|
|
919
|
+
var alibabaTextEmbeddingSparseEmbeddingSchema = () => import_v45.z.object({
|
|
898
920
|
index: import_v45.z.number(),
|
|
899
921
|
value: import_v45.z.number(),
|
|
900
922
|
token: import_v45.z.string().nullish()
|
|
901
923
|
});
|
|
902
|
-
var alibabaTextEmbeddingResponseSchema =
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
import_v45.z.object({
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
924
|
+
var alibabaTextEmbeddingResponseSchema = (0, import_provider_utils6.lazySchema)(
|
|
925
|
+
() => (0, import_provider_utils6.zodSchema)(
|
|
926
|
+
import_v45.z.object({
|
|
927
|
+
output: import_v45.z.object({
|
|
928
|
+
embeddings: import_v45.z.array(
|
|
929
|
+
import_v45.z.object({
|
|
930
|
+
embedding: import_v45.z.array(import_v45.z.number()),
|
|
931
|
+
text_index: import_v45.z.number(),
|
|
932
|
+
sparse_embedding: import_v45.z.array(alibabaTextEmbeddingSparseEmbeddingSchema()).nullish()
|
|
933
|
+
})
|
|
934
|
+
)
|
|
935
|
+
}),
|
|
936
|
+
usage: import_v45.z.object({
|
|
937
|
+
total_tokens: import_v45.z.number()
|
|
938
|
+
}).nullish()
|
|
939
|
+
})
|
|
940
|
+
)
|
|
941
|
+
);
|
|
916
942
|
|
|
917
943
|
// src/alibaba-video-model.ts
|
|
918
944
|
var import_provider4 = require("@ai-sdk/provider");
|
|
919
|
-
var
|
|
945
|
+
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
920
946
|
var import_v46 = require("zod/v4");
|
|
921
|
-
var alibabaVideoModelOptionsSchema = (0,
|
|
922
|
-
() => (0,
|
|
947
|
+
var alibabaVideoModelOptionsSchema = (0, import_provider_utils7.lazySchema)(
|
|
948
|
+
() => (0, import_provider_utils7.zodSchema)(
|
|
923
949
|
import_v46.z.object({
|
|
924
950
|
negativePrompt: import_v46.z.string().nullish(),
|
|
925
951
|
audioUrl: import_v46.z.string().nullish(),
|
|
@@ -949,47 +975,59 @@ var alibabaVideoModelOptionsSchema = (0, import_provider_utils5.lazySchema)(
|
|
|
949
975
|
}).passthrough()
|
|
950
976
|
)
|
|
951
977
|
);
|
|
952
|
-
var alibabaVideoErrorSchema =
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
978
|
+
var alibabaVideoErrorSchema = (0, import_provider_utils7.lazySchema)(
|
|
979
|
+
() => (0, import_provider_utils7.zodSchema)(
|
|
980
|
+
import_v46.z.object({
|
|
981
|
+
code: import_v46.z.string().nullish(),
|
|
982
|
+
message: import_v46.z.string(),
|
|
983
|
+
request_id: import_v46.z.string().nullish()
|
|
984
|
+
})
|
|
985
|
+
)
|
|
986
|
+
);
|
|
987
|
+
var alibabaVideoFailedResponseHandler = (0, import_provider_utils7.createJsonErrorResponseHandler)({
|
|
958
988
|
errorSchema: alibabaVideoErrorSchema,
|
|
959
989
|
errorToMessage: (data) => data.message
|
|
960
990
|
});
|
|
961
|
-
var alibabaVideoCreateTaskSchema =
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
})
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
991
|
+
var alibabaVideoCreateTaskSchema = (0, import_provider_utils7.lazySchema)(
|
|
992
|
+
() => (0, import_provider_utils7.zodSchema)(
|
|
993
|
+
import_v46.z.object({
|
|
994
|
+
output: import_v46.z.object({
|
|
995
|
+
task_status: import_v46.z.string(),
|
|
996
|
+
task_id: import_v46.z.string()
|
|
997
|
+
}).nullish(),
|
|
998
|
+
request_id: import_v46.z.string().nullish()
|
|
999
|
+
})
|
|
1000
|
+
)
|
|
1001
|
+
);
|
|
1002
|
+
var alibabaVideoTaskStatusSchema = (0, import_provider_utils7.lazySchema)(
|
|
1003
|
+
() => (0, import_provider_utils7.zodSchema)(
|
|
1004
|
+
import_v46.z.object({
|
|
1005
|
+
output: import_v46.z.object({
|
|
1006
|
+
task_id: import_v46.z.string(),
|
|
1007
|
+
task_status: import_v46.z.string(),
|
|
1008
|
+
video_url: import_v46.z.string().nullish(),
|
|
1009
|
+
submit_time: import_v46.z.string().nullish(),
|
|
1010
|
+
scheduled_time: import_v46.z.string().nullish(),
|
|
1011
|
+
end_time: import_v46.z.string().nullish(),
|
|
1012
|
+
orig_prompt: import_v46.z.string().nullish(),
|
|
1013
|
+
actual_prompt: import_v46.z.string().nullish(),
|
|
1014
|
+
code: import_v46.z.string().nullish(),
|
|
1015
|
+
message: import_v46.z.string().nullish()
|
|
1016
|
+
}).nullish(),
|
|
1017
|
+
usage: import_v46.z.object({
|
|
1018
|
+
duration: import_v46.z.number().nullish(),
|
|
1019
|
+
output_video_duration: import_v46.z.number().nullish(),
|
|
1020
|
+
// wan3 splits the total: input video counts toward its 30s ceiling.
|
|
1021
|
+
input_video_duration: import_v46.z.number().nullish(),
|
|
1022
|
+
fps: import_v46.z.number().nullish(),
|
|
1023
|
+
SR: import_v46.z.number().nullish(),
|
|
1024
|
+
size: import_v46.z.string().nullish(),
|
|
1025
|
+
ratio: import_v46.z.string().nullish()
|
|
1026
|
+
}).nullish(),
|
|
1027
|
+
request_id: import_v46.z.string().nullish()
|
|
1028
|
+
})
|
|
1029
|
+
)
|
|
1030
|
+
);
|
|
993
1031
|
function detectMode(modelId) {
|
|
994
1032
|
if (modelId.includes("-i2v")) return "i2v";
|
|
995
1033
|
if (modelId.includes("-r2v")) return "r2v";
|
|
@@ -1039,7 +1077,7 @@ function fileToImageString(file) {
|
|
|
1039
1077
|
if (file.type === "url") {
|
|
1040
1078
|
return file.url;
|
|
1041
1079
|
}
|
|
1042
|
-
return typeof file.data === "string" ? file.data : (0,
|
|
1080
|
+
return typeof file.data === "string" ? file.data : (0, import_provider_utils7.convertUint8ArrayToBase64)(file.data);
|
|
1043
1081
|
}
|
|
1044
1082
|
function getFirstFrameImage(options) {
|
|
1045
1083
|
var _a, _b;
|
|
@@ -1075,7 +1113,7 @@ function resolveMedia(options, alibabaOptions, warnings, frames) {
|
|
|
1075
1113
|
} else if (reference.mediaType.startsWith("image/")) {
|
|
1076
1114
|
media.push({
|
|
1077
1115
|
type: "reference_image",
|
|
1078
|
-
url: (0,
|
|
1116
|
+
url: (0, import_provider_utils7.convertImageModelFileToDataUri)(reference)
|
|
1079
1117
|
});
|
|
1080
1118
|
} else {
|
|
1081
1119
|
warnings.push({
|
|
@@ -1088,13 +1126,13 @@ function resolveMedia(options, alibabaOptions, warnings, frames) {
|
|
|
1088
1126
|
if (frames.first != null) {
|
|
1089
1127
|
media.push({
|
|
1090
1128
|
type: "first_frame",
|
|
1091
|
-
url: (0,
|
|
1129
|
+
url: (0, import_provider_utils7.convertImageModelFileToDataUri)(frames.first)
|
|
1092
1130
|
});
|
|
1093
1131
|
}
|
|
1094
1132
|
if (frames.last != null) {
|
|
1095
1133
|
media.push({
|
|
1096
1134
|
type: "last_frame",
|
|
1097
|
-
url: (0,
|
|
1135
|
+
url: (0, import_provider_utils7.convertImageModelFileToDataUri)(frames.last)
|
|
1098
1136
|
});
|
|
1099
1137
|
}
|
|
1100
1138
|
return media.length > 0 ? media : void 0;
|
|
@@ -1136,7 +1174,7 @@ var AlibabaVideoModel = class {
|
|
|
1136
1174
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
1137
1175
|
const warnings = [];
|
|
1138
1176
|
const mode = detectMode(this.modelId);
|
|
1139
|
-
const alibabaOptions = await (0,
|
|
1177
|
+
const alibabaOptions = await (0, import_provider_utils7.parseProviderOptions)({
|
|
1140
1178
|
provider: "alibaba",
|
|
1141
1179
|
providerOptions: options.providerOptions,
|
|
1142
1180
|
schema: alibabaVideoModelOptionsSchema
|
|
@@ -1282,10 +1320,10 @@ var AlibabaVideoModel = class {
|
|
|
1282
1320
|
details: "Alibaba video models only support generating 1 video per call."
|
|
1283
1321
|
});
|
|
1284
1322
|
}
|
|
1285
|
-
const { value: createResponse } = await (0,
|
|
1323
|
+
const { value: createResponse } = await (0, import_provider_utils7.postJsonToApi)({
|
|
1286
1324
|
url: `${this.config.baseURL}/api/v1/services/aigc/video-generation/video-synthesis`,
|
|
1287
|
-
headers: (0,
|
|
1288
|
-
await (0,
|
|
1325
|
+
headers: (0, import_provider_utils7.combineHeaders)(
|
|
1326
|
+
await (0, import_provider_utils7.resolve)(this.config.headers),
|
|
1289
1327
|
options.headers,
|
|
1290
1328
|
{
|
|
1291
1329
|
"X-DashScope-Async": "enable"
|
|
@@ -1296,7 +1334,7 @@ var AlibabaVideoModel = class {
|
|
|
1296
1334
|
input,
|
|
1297
1335
|
parameters
|
|
1298
1336
|
},
|
|
1299
|
-
successfulResponseHandler: (0,
|
|
1337
|
+
successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
|
|
1300
1338
|
alibabaVideoCreateTaskSchema
|
|
1301
1339
|
),
|
|
1302
1340
|
failedResponseHandler: alibabaVideoFailedResponseHandler,
|
|
@@ -1316,20 +1354,20 @@ var AlibabaVideoModel = class {
|
|
|
1316
1354
|
let finalResponse;
|
|
1317
1355
|
let responseHeaders;
|
|
1318
1356
|
while (true) {
|
|
1319
|
-
await (0,
|
|
1357
|
+
await (0, import_provider_utils7.delay)(pollIntervalMs, { abortSignal: options.abortSignal });
|
|
1320
1358
|
if (Date.now() - startTime > pollTimeoutMs) {
|
|
1321
1359
|
throw new import_provider4.AISDKError({
|
|
1322
1360
|
name: "ALIBABA_VIDEO_GENERATION_TIMEOUT",
|
|
1323
1361
|
message: `Video generation timed out after ${pollTimeoutMs}ms`
|
|
1324
1362
|
});
|
|
1325
1363
|
}
|
|
1326
|
-
const { value: statusResponse, responseHeaders: pollHeaders } = await (0,
|
|
1327
|
-
url: `${this.config.baseURL}/api/v1/tasks/${taskId}`,
|
|
1328
|
-
headers: (0,
|
|
1329
|
-
await (0,
|
|
1364
|
+
const { value: statusResponse, responseHeaders: pollHeaders } = await (0, import_provider_utils7.getFromApi)({
|
|
1365
|
+
url: `${this.config.baseURL}/api/v1/tasks/${(0, import_provider_utils7.encodePathSegment)(taskId)}`,
|
|
1366
|
+
headers: (0, import_provider_utils7.combineHeaders)(
|
|
1367
|
+
await (0, import_provider_utils7.resolve)(this.config.headers),
|
|
1330
1368
|
options.headers
|
|
1331
1369
|
),
|
|
1332
|
-
successfulResponseHandler: (0,
|
|
1370
|
+
successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
|
|
1333
1371
|
alibabaVideoTaskStatusSchema
|
|
1334
1372
|
),
|
|
1335
1373
|
failedResponseHandler: alibabaVideoFailedResponseHandler,
|
|
@@ -1397,17 +1435,17 @@ var AlibabaVideoModel = class {
|
|
|
1397
1435
|
};
|
|
1398
1436
|
|
|
1399
1437
|
// src/version.ts
|
|
1400
|
-
var VERSION = true ? "1.0.
|
|
1438
|
+
var VERSION = true ? "1.0.69" : "0.0.0-test";
|
|
1401
1439
|
|
|
1402
1440
|
// src/alibaba-provider.ts
|
|
1403
1441
|
function createAlibaba(options = {}) {
|
|
1404
1442
|
var _a, _b, _c;
|
|
1405
|
-
const baseURL = (_a = (0,
|
|
1406
|
-
const videoBaseURL = (_b = (0,
|
|
1407
|
-
const embeddingBaseURL = (_c = (0,
|
|
1408
|
-
const getHeaders = () => (0,
|
|
1443
|
+
const baseURL = (_a = (0, import_provider_utils8.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
|
|
1444
|
+
const videoBaseURL = (_b = (0, import_provider_utils8.withoutTrailingSlash)(options.videoBaseURL)) != null ? _b : "https://dashscope-intl.aliyuncs.com";
|
|
1445
|
+
const embeddingBaseURL = (_c = (0, import_provider_utils8.withoutTrailingSlash)(options.embeddingBaseURL)) != null ? _c : "https://dashscope-intl.aliyuncs.com/api/v1";
|
|
1446
|
+
const getHeaders = () => (0, import_provider_utils8.withUserAgentSuffix)(
|
|
1409
1447
|
{
|
|
1410
|
-
Authorization: `Bearer ${(0,
|
|
1448
|
+
Authorization: `Bearer ${(0, import_provider_utils8.loadApiKey)({
|
|
1411
1449
|
apiKey: options.apiKey,
|
|
1412
1450
|
environmentVariableName: "ALIBABA_API_KEY",
|
|
1413
1451
|
description: "Alibaba Cloud (DashScope)"
|