@ai-sdk/zai 3.0.21 → 3.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @ai-sdk/zai
2
2
 
3
+ ## 3.0.23
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [8c65988]
8
+ - Updated dependencies [527a163]
9
+ - @ai-sdk/provider@4.0.21
10
+ - @ai-sdk/provider-utils@5.0.53
11
+ - @ai-sdk/openai-compatible@3.0.61
12
+
13
+ ## 3.0.22
14
+
15
+ ### Patch Changes
16
+
17
+ - ede5b89: chore: migrate package builds from tsup to tsdown
18
+ - Updated dependencies [ede5b89]
19
+ - @ai-sdk/openai-compatible@3.0.60
20
+ - @ai-sdk/provider@4.0.20
21
+ - @ai-sdk/provider-utils@5.0.52
22
+
3
23
  ## 3.0.21
4
24
 
5
25
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,88 +1,94 @@
1
- import { z } from 'zod/v4';
2
- import { ProviderV4, LanguageModelV4 } from '@ai-sdk/provider';
3
- import { FetchFunction } from '@ai-sdk/provider-utils';
4
-
1
+ import { LanguageModelV4, ProviderV4 } from "@ai-sdk/provider";
2
+ import { FetchFunction } from "@ai-sdk/provider-utils";
3
+ import "@ai-sdk/openai-compatible";
4
+ import { z } from "zod/v4";
5
+ //#region src/zai-chat-language-model-options.d.ts
5
6
  declare const zaiLanguageModelChatOptions: z.ZodObject<{
6
- doSample: z.ZodOptional<z.ZodBoolean>;
7
- thinking: z.ZodOptional<z.ZodObject<{
8
- type: z.ZodOptional<z.ZodEnum<{
9
- enabled: "enabled";
10
- disabled: "disabled";
11
- }>>;
12
- clearThinking: z.ZodOptional<z.ZodBoolean>;
13
- }, z.core.$strip>>;
14
- reasoningEffort: z.ZodOptional<z.ZodEnum<{
15
- none: "none";
16
- minimal: "minimal";
17
- low: "low";
18
- medium: "medium";
19
- high: "high";
20
- xhigh: "xhigh";
21
- max: "max";
7
+ doSample: z.ZodOptional<z.ZodBoolean>;
8
+ thinking: z.ZodOptional<z.ZodObject<{
9
+ type: z.ZodOptional<z.ZodEnum<{
10
+ enabled: "enabled";
11
+ disabled: "disabled";
22
12
  }>>;
23
- toolStream: z.ZodOptional<z.ZodBoolean>;
24
- requestId: z.ZodOptional<z.ZodString>;
25
- userId: z.ZodOptional<z.ZodString>;
13
+ clearThinking: z.ZodOptional<z.ZodBoolean>;
14
+ }, z.core.$strip>>;
15
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
16
+ none: "none";
17
+ minimal: "minimal";
18
+ low: "low";
19
+ medium: "medium";
20
+ high: "high";
21
+ xhigh: "xhigh";
22
+ max: "max";
23
+ }>>;
24
+ toolStream: z.ZodOptional<z.ZodBoolean>;
25
+ requestId: z.ZodOptional<z.ZodString>;
26
+ userId: z.ZodOptional<z.ZodString>;
26
27
  }, z.core.$strip>;
27
28
  type ZaiLanguageModelChatOptions = z.infer<typeof zaiLanguageModelChatOptions>;
28
-
29
+ //#endregion
30
+ //#region src/zai-chat-options.d.ts
29
31
  /**
30
32
  * Z.AI chat model ids from the official OpenAPI 1.0.0 specification,
31
33
  * retrieved from https://docs.z.ai/openapi.json on 2026-08-26.
32
34
  */
33
35
  type ZaiChatModelId = 'glm-5.3' | 'glm-5.2' | 'glm-5.1' | 'glm-5-turbo' | 'glm-5' | 'glm-4.7' | 'glm-4.7-flash' | 'glm-4.7-flashx' | 'glm-4.6' | 'glm-4.5' | 'glm-4.5-air' | 'glm-4.5-x' | 'glm-4.5-airx' | 'glm-4.5-flash' | 'glm-4-32b-0414-128k' | 'glm-5.3-flash' | 'glm-5v-turbo' | 'glm-4.6v' | 'glm-4.6v-flash' | 'glm-4.6v-flashx' | 'glm-4.5v' | 'autoglm-phone-multilingual' | (string & {});
34
-
36
+ //#endregion
37
+ //#region src/zai-error.d.ts
35
38
  declare const zaiErrorSchema: z.ZodUnion<readonly [z.ZodObject<{
39
+ code: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
40
+ message: z.ZodString;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ error: z.ZodObject<{
36
43
  code: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
37
44
  message: z.ZodString;
38
- }, z.core.$strip>, z.ZodObject<{
39
- error: z.ZodObject<{
40
- code: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
41
- message: z.ZodString;
42
- }, z.core.$strip>;
45
+ }, z.core.$strip>;
43
46
  }, z.core.$strip>]>;
44
47
  type ZaiErrorData = z.infer<typeof zaiErrorSchema>;
45
-
48
+ //#endregion
49
+ //#region src/zai-provider.d.ts
46
50
  interface ZaiProviderSettings {
47
- /**
48
- * Z.AI API key. Defaults to the `ZAI_API_KEY` environment variable.
49
- */
50
- apiKey?: string;
51
- /**
52
- * Base URL for API calls. Defaults to
53
- * `https://api.z.ai/api/paas/v4`.
54
- */
55
- baseURL?: string;
56
- /**
57
- * Custom headers to include in requests.
58
- */
59
- headers?: Record<string, string>;
60
- /**
61
- * Custom fetch implementation.
62
- */
63
- fetch?: FetchFunction;
51
+ /**
52
+ * Z.AI API key. Defaults to the `ZAI_API_KEY` environment variable.
53
+ */
54
+ apiKey?: string;
55
+ /**
56
+ * Base URL for API calls. Defaults to
57
+ * `https://api.z.ai/api/paas/v4`.
58
+ */
59
+ baseURL?: string;
60
+ /**
61
+ * Custom headers to include in requests.
62
+ */
63
+ headers?: Record<string, string>;
64
+ /**
65
+ * Custom fetch implementation.
66
+ */
67
+ fetch?: FetchFunction;
64
68
  }
65
69
  interface ZaiProvider extends ProviderV4 {
66
- /**
67
- * Creates a Z.AI chat model for text generation.
68
- */
69
- (modelId: ZaiChatModelId): LanguageModelV4;
70
- /**
71
- * Creates a Z.AI language model.
72
- */
73
- languageModel(modelId: ZaiChatModelId): LanguageModelV4;
74
- /**
75
- * Creates a Z.AI chat model.
76
- */
77
- chat(modelId: ZaiChatModelId): LanguageModelV4;
78
- /**
79
- * @deprecated Use `embeddingModel` instead.
80
- */
81
- textEmbeddingModel(modelId: string): never;
70
+ /**
71
+ * Creates a Z.AI chat model for text generation.
72
+ */
73
+ (modelId: ZaiChatModelId): LanguageModelV4;
74
+ /**
75
+ * Creates a Z.AI language model.
76
+ */
77
+ languageModel(modelId: ZaiChatModelId): LanguageModelV4;
78
+ /**
79
+ * Creates a Z.AI chat model.
80
+ */
81
+ chat(modelId: ZaiChatModelId): LanguageModelV4;
82
+ /**
83
+ * @deprecated Use `embeddingModel` instead.
84
+ */
85
+ textEmbeddingModel(modelId: string): never;
82
86
  }
83
- declare function createZai(options?: ZaiProviderSettings): ZaiProvider;
84
- declare const zai: ZaiProvider;
85
-
86
- declare const VERSION: string;
87
-
88
- export { VERSION, type ZaiChatModelId, type ZaiErrorData, type ZaiLanguageModelChatOptions, type ZaiProvider, type ZaiProviderSettings, createZai, zai };
87
+ export declare function createZai(options?: ZaiProviderSettings): ZaiProvider;
88
+ export declare const zai: ZaiProvider;
89
+ //#endregion
90
+ //#region src/version.d.ts
91
+ export declare const VERSION: string;
92
+ //#endregion
93
+ export type { ZaiChatModelId, ZaiErrorData, ZaiLanguageModelChatOptions, ZaiProvider, ZaiProviderSettings };
94
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/zai-chat-language-model-options.ts","../src/zai-chat-options.ts","../src/zai-error.ts","../src/zai-provider.ts","../src/version.ts"],"mappings":";;;;;cAEa,6BAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;GAsCtC,EAAA,KAAA;KAEU,8BAA8B,EAAE,aACnC;;;;;;;KCvCG;;;cCIN,gBAAc,EAAA,mBAAA,EAAA;;;;;;;;GAGlB,EAAA,KAAA;KAEU,eAAe,EAAE,aAAa;;;UCEzB;;;;EAIf;;;;;EAMA;;;;EAKA,UAAU;;;;EAKV,QAAQ;;UAGO,oBAAoB;;;;GAIlC,SAAS,iBAAiB;;;;EAK3B,cAAc,SAAS,iBAAiB;;;;EAKxC,KAAK,SAAS,iBAAiB;;;;EAK/B,mBAAmB;;wBAGL,UAAU,UAAS,sBAA2B;qBA0CjD,KAAG;;;qBCpGH"}
package/dist/index.js CHANGED
@@ -1,264 +1,239 @@
1
- // src/zai-provider.ts
2
- import {
3
- NoSuchModelError
4
- } from "@ai-sdk/provider";
5
- import {
6
- loadApiKey,
7
- withoutTrailingSlash,
8
- withUserAgentSuffix
9
- } from "@ai-sdk/provider-utils";
10
-
11
- // src/version.ts
12
- var VERSION = true ? "3.0.21" : "0.0.0-test";
13
-
14
- // src/zai-chat-language-model.ts
1
+ import { NoSuchModelError } from "@ai-sdk/provider";
2
+ import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, loadApiKey, parseProviderOptions, serializeModelOptions, withUserAgentSuffix, withoutTrailingSlash } from "@ai-sdk/provider-utils";
15
3
  import { OpenAICompatibleChatLanguageModel } from "@ai-sdk/openai-compatible";
16
- import {
17
- parseProviderOptions,
18
- serializeModelOptions,
19
- WORKFLOW_DESERIALIZE,
20
- WORKFLOW_SERIALIZE
21
- } from "@ai-sdk/provider-utils";
22
-
23
- // src/zai-chat-language-model-options.ts
24
4
  import { z } from "zod/v4";
25
- var zaiLanguageModelChatOptions = z.object({
26
- /**
27
- * Enables or disables sampling. When disabled, temperature and topP do not
28
- * take effect.
29
- */
30
- doSample: z.boolean().optional(),
31
- /**
32
- * Controls model thinking and whether reasoning from earlier turns is kept.
33
- */
34
- thinking: z.object({
35
- type: z.enum(["enabled", "disabled"]).optional(),
36
- clearThinking: z.boolean().optional()
37
- }).optional(),
38
- /**
39
- * Controls reasoning effort for GLM-5.2 and later models.
40
- */
41
- reasoningEffort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max"]).optional(),
42
- /**
43
- * Enables incremental function-call argument streaming on supported models.
44
- */
45
- toolStream: z.boolean().optional(),
46
- /**
47
- * A caller-provided request identifier between 6 and 64 characters.
48
- */
49
- requestId: z.string().min(6).max(64).optional(),
50
- /**
51
- * A non-sensitive end-user identifier between 6 and 128 characters.
52
- */
53
- userId: z.string().min(6).max(128).optional()
5
+ //#region src/version.ts
6
+ const VERSION = "3.0.23";
7
+ //#endregion
8
+ //#region src/zai-chat-language-model-options.ts
9
+ const zaiLanguageModelChatOptions = z.object({
10
+ /**
11
+ * Enables or disables sampling. When disabled, temperature and topP do not
12
+ * take effect.
13
+ */
14
+ doSample: z.boolean().optional(),
15
+ /**
16
+ * Controls model thinking and whether reasoning from earlier turns is kept.
17
+ */
18
+ thinking: z.object({
19
+ type: z.enum(["enabled", "disabled"]).optional(),
20
+ clearThinking: z.boolean().optional()
21
+ }).optional(),
22
+ /**
23
+ * Controls reasoning effort for GLM-5.2 and later models.
24
+ */
25
+ reasoningEffort: z.enum([
26
+ "none",
27
+ "minimal",
28
+ "low",
29
+ "medium",
30
+ "high",
31
+ "xhigh",
32
+ "max"
33
+ ]).optional(),
34
+ /**
35
+ * Enables incremental function-call argument streaming on supported models.
36
+ */
37
+ toolStream: z.boolean().optional(),
38
+ /**
39
+ * A caller-provided request identifier between 6 and 64 characters.
40
+ */
41
+ requestId: z.string().min(6).max(64).optional(),
42
+ /**
43
+ * A non-sensitive end-user identifier between 6 and 128 characters.
44
+ */
45
+ userId: z.string().min(6).max(128).optional()
54
46
  });
55
-
56
- // src/zai-error.ts
57
- import { z as z2 } from "zod/v4";
58
- var zaiErrorDetailsSchema = z2.object({
59
- code: z2.union([z2.number(), z2.string()]).nullish(),
60
- message: z2.string()
47
+ //#endregion
48
+ //#region src/zai-error.ts
49
+ const zaiErrorDetailsSchema = z.object({
50
+ code: z.union([z.number(), z.string()]).nullish(),
51
+ message: z.string()
61
52
  });
62
- var zaiErrorSchema = z2.union([
63
- zaiErrorDetailsSchema,
64
- z2.object({ error: zaiErrorDetailsSchema })
65
- ]);
66
- var zaiErrorStructure = {
67
- errorSchema: zaiErrorSchema,
68
- errorToMessage: (data) => "error" in data ? data.error.message : data.message
53
+ const zaiErrorStructure = {
54
+ errorSchema: z.union([zaiErrorDetailsSchema, z.object({ error: zaiErrorDetailsSchema })]),
55
+ errorToMessage: (data) => "error" in data ? data.error.message : data.message
69
56
  };
70
-
71
- // src/zai-chat-language-model.ts
57
+ //#endregion
58
+ //#region src/zai-chat-language-model.ts
72
59
  function transformZaiRequestBody(args) {
73
- const {
74
- doSample,
75
- frequency_penalty: _frequencyPenalty,
76
- presence_penalty: _presencePenalty,
77
- requestId,
78
- seed: _seed,
79
- thinking,
80
- toolStream,
81
- user: _user,
82
- userId,
83
- verbosity: _verbosity,
84
- ...restArgs
85
- } = args;
86
- return {
87
- ...restArgs,
88
- ...doSample !== void 0 && { do_sample: doSample },
89
- ...thinking !== void 0 && {
90
- thinking: {
91
- ...thinking.type !== void 0 && { type: thinking.type },
92
- ...thinking.clearThinking !== void 0 && {
93
- clear_thinking: thinking.clearThinking
94
- }
95
- }
96
- },
97
- ...toolStream !== void 0 && { tool_stream: toolStream },
98
- ...requestId !== void 0 && { request_id: requestId },
99
- ...userId !== void 0 && { user_id: userId }
100
- };
60
+ const { doSample, frequency_penalty: _frequencyPenalty, presence_penalty: _presencePenalty, requestId, seed: _seed, thinking, toolStream, user: _user, userId, verbosity: _verbosity, ...restArgs } = args;
61
+ return {
62
+ ...restArgs,
63
+ ...doSample !== void 0 && { do_sample: doSample },
64
+ ...thinking !== void 0 && { thinking: {
65
+ ...thinking.type !== void 0 && { type: thinking.type },
66
+ ...thinking.clearThinking !== void 0 && { clear_thinking: thinking.clearThinking }
67
+ } },
68
+ ...toolStream !== void 0 && { tool_stream: toolStream },
69
+ ...requestId !== void 0 && { request_id: requestId },
70
+ ...userId !== void 0 && { user_id: userId }
71
+ };
101
72
  }
102
73
  function mapZaiFinishReason(finishReason) {
103
- switch (finishReason.raw) {
104
- case "sensitive":
105
- return { unified: "content-filter", raw: finishReason.raw };
106
- case "model_context_window_exceeded":
107
- return { unified: "length", raw: finishReason.raw };
108
- case "network_error":
109
- return { unified: "error", raw: finishReason.raw };
110
- default:
111
- return finishReason;
112
- }
74
+ switch (finishReason.raw) {
75
+ case "sensitive": return {
76
+ unified: "content-filter",
77
+ raw: finishReason.raw
78
+ };
79
+ case "model_context_window_exceeded": return {
80
+ unified: "length",
81
+ raw: finishReason.raw
82
+ };
83
+ case "network_error": return {
84
+ unified: "error",
85
+ raw: finishReason.raw
86
+ };
87
+ default: return finishReason;
88
+ }
113
89
  }
114
- var ZaiChatLanguageModel = class _ZaiChatLanguageModel extends OpenAICompatibleChatLanguageModel {
115
- static [WORKFLOW_SERIALIZE](model) {
116
- return serializeModelOptions({
117
- modelId: model.modelId,
118
- config: model.zaiConfig
119
- });
120
- }
121
- static [WORKFLOW_DESERIALIZE](options) {
122
- return new _ZaiChatLanguageModel(
123
- options.modelId,
124
- options.config
125
- );
126
- }
127
- constructor(modelId, config) {
128
- const headers = config.headers;
129
- super(modelId, {
130
- provider: config.provider,
131
- url: ({ path }) => `${config.baseURL}${path}`,
132
- headers: headers == null ? void 0 : () => typeof headers === "function" ? headers() : headers,
133
- fetch: config.fetch,
134
- errorStructure: zaiErrorStructure,
135
- transformRequestBody: transformZaiRequestBody,
136
- supportedUrls: () => ({
137
- "image/*": [/^https?:\/\//],
138
- "video/*": [/^https?:\/\//]
139
- })
140
- });
141
- this.zaiConfig = config;
142
- }
143
- async prepareCallOptions(options) {
144
- const warnings = [];
145
- const zaiOptions = await parseProviderOptions({
146
- provider: "zai",
147
- providerOptions: options.providerOptions,
148
- schema: zaiLanguageModelChatOptions
149
- });
150
- if (options.frequencyPenalty != null) {
151
- warnings.push({ type: "unsupported", feature: "frequencyPenalty" });
152
- }
153
- if (options.presencePenalty != null) {
154
- warnings.push({ type: "unsupported", feature: "presencePenalty" });
155
- }
156
- if (options.seed != null) {
157
- warnings.push({ type: "unsupported", feature: "seed" });
158
- }
159
- let tools = options.tools;
160
- let toolChoice = options.toolChoice;
161
- if (toolChoice?.type === "none") {
162
- tools = void 0;
163
- toolChoice = void 0;
164
- } else if (toolChoice != null && toolChoice.type !== "auto") {
165
- warnings.push({
166
- type: "unsupported",
167
- feature: `toolChoice ${toolChoice.type}`,
168
- details: "Z.AI currently supports only automatic tool selection."
169
- });
170
- toolChoice = void 0;
171
- }
172
- const normalizedOptions = {
173
- ...options,
174
- frequencyPenalty: void 0,
175
- presencePenalty: void 0,
176
- seed: void 0,
177
- tools,
178
- toolChoice,
179
- providerOptions: zaiOptions == null ? options.providerOptions : {
180
- ...options.providerOptions,
181
- zai: zaiOptions
182
- }
183
- };
184
- return { normalizedOptions, warnings };
185
- }
186
- async doGenerate(options) {
187
- const { normalizedOptions, warnings } = await this.prepareCallOptions(options);
188
- const result = await super.doGenerate(normalizedOptions);
189
- return {
190
- ...result,
191
- finishReason: mapZaiFinishReason(result.finishReason),
192
- warnings: [...result.warnings, ...warnings]
193
- };
194
- }
195
- async doStream(options) {
196
- const { normalizedOptions, warnings } = await this.prepareCallOptions(options);
197
- const result = await super.doStream(normalizedOptions);
198
- return {
199
- ...result,
200
- stream: result.stream.pipeThrough(
201
- new TransformStream({
202
- transform(part, controller) {
203
- if (part.type === "stream-start") {
204
- controller.enqueue({
205
- ...part,
206
- warnings: [...part.warnings, ...warnings]
207
- });
208
- return;
209
- }
210
- if (part.type === "finish") {
211
- controller.enqueue({
212
- ...part,
213
- finishReason: mapZaiFinishReason(part.finishReason)
214
- });
215
- return;
216
- }
217
- controller.enqueue(part);
218
- }
219
- })
220
- )
221
- };
222
- }
90
+ var ZaiChatLanguageModel = class ZaiChatLanguageModel extends OpenAICompatibleChatLanguageModel {
91
+ static [WORKFLOW_SERIALIZE](model) {
92
+ return serializeModelOptions({
93
+ modelId: model.modelId,
94
+ config: model.zaiConfig
95
+ });
96
+ }
97
+ static [WORKFLOW_DESERIALIZE](options) {
98
+ return new ZaiChatLanguageModel(options.modelId, options.config);
99
+ }
100
+ constructor(modelId, config) {
101
+ const headers = config.headers;
102
+ super(modelId, {
103
+ provider: config.provider,
104
+ url: ({ path }) => `${config.baseURL}${path}`,
105
+ headers: headers == null ? void 0 : () => typeof headers === "function" ? headers() : headers,
106
+ fetch: config.fetch,
107
+ errorStructure: zaiErrorStructure,
108
+ transformRequestBody: transformZaiRequestBody,
109
+ supportedUrls: () => ({
110
+ "image/*": [/^https?:\/\//],
111
+ "video/*": [/^https?:\/\//]
112
+ })
113
+ });
114
+ this.zaiConfig = config;
115
+ }
116
+ async prepareCallOptions(options) {
117
+ const warnings = [];
118
+ const zaiOptions = await parseProviderOptions({
119
+ provider: "zai",
120
+ providerOptions: options.providerOptions,
121
+ schema: zaiLanguageModelChatOptions
122
+ });
123
+ if (options.frequencyPenalty != null) warnings.push({
124
+ type: "unsupported",
125
+ feature: "frequencyPenalty"
126
+ });
127
+ if (options.presencePenalty != null) warnings.push({
128
+ type: "unsupported",
129
+ feature: "presencePenalty"
130
+ });
131
+ if (options.seed != null) warnings.push({
132
+ type: "unsupported",
133
+ feature: "seed"
134
+ });
135
+ let tools = options.tools;
136
+ let toolChoice = options.toolChoice;
137
+ if (toolChoice?.type === "none") {
138
+ tools = void 0;
139
+ toolChoice = void 0;
140
+ } else if (toolChoice != null && toolChoice.type !== "auto") {
141
+ warnings.push({
142
+ type: "unsupported",
143
+ feature: `toolChoice ${toolChoice.type}`,
144
+ details: "Z.AI currently supports only automatic tool selection."
145
+ });
146
+ toolChoice = void 0;
147
+ }
148
+ return {
149
+ normalizedOptions: {
150
+ ...options,
151
+ frequencyPenalty: void 0,
152
+ presencePenalty: void 0,
153
+ seed: void 0,
154
+ tools,
155
+ toolChoice,
156
+ providerOptions: zaiOptions == null ? options.providerOptions : {
157
+ ...options.providerOptions,
158
+ zai: zaiOptions
159
+ }
160
+ },
161
+ warnings
162
+ };
163
+ }
164
+ async doGenerate(options) {
165
+ const { normalizedOptions, warnings } = await this.prepareCallOptions(options);
166
+ const result = await super.doGenerate(normalizedOptions);
167
+ return {
168
+ ...result,
169
+ finishReason: mapZaiFinishReason(result.finishReason),
170
+ warnings: [...result.warnings, ...warnings]
171
+ };
172
+ }
173
+ async doStream(options) {
174
+ const { normalizedOptions, warnings } = await this.prepareCallOptions(options);
175
+ const result = await super.doStream(normalizedOptions);
176
+ return {
177
+ ...result,
178
+ stream: result.stream.pipeThrough(new TransformStream({ transform(part, controller) {
179
+ if (part.type === "stream-start") {
180
+ controller.enqueue({
181
+ ...part,
182
+ warnings: [...part.warnings, ...warnings]
183
+ });
184
+ return;
185
+ }
186
+ if (part.type === "finish") {
187
+ controller.enqueue({
188
+ ...part,
189
+ finishReason: mapZaiFinishReason(part.finishReason)
190
+ });
191
+ return;
192
+ }
193
+ controller.enqueue(part);
194
+ } }))
195
+ };
196
+ }
223
197
  };
224
-
225
- // src/zai-provider.ts
198
+ //#endregion
199
+ //#region src/zai-provider.ts
226
200
  function createZai(options = {}) {
227
- const baseURL = withoutTrailingSlash(options.baseURL) ?? "https://api.z.ai/api/paas/v4";
228
- const getHeaders = () => withUserAgentSuffix(
229
- {
230
- Authorization: `Bearer ${loadApiKey({
231
- apiKey: options.apiKey,
232
- environmentVariableName: "ZAI_API_KEY",
233
- description: "Z.AI API key"
234
- })}`,
235
- ...options.headers
236
- },
237
- `ai-sdk-zai/${VERSION}`
238
- );
239
- const createLanguageModel = (modelId) => new ZaiChatLanguageModel(modelId, {
240
- provider: "zai.chat",
241
- baseURL,
242
- headers: getHeaders,
243
- fetch: options.fetch
244
- });
245
- const provider = (modelId) => createLanguageModel(modelId);
246
- provider.specificationVersion = "v4";
247
- provider.languageModel = createLanguageModel;
248
- provider.chat = createLanguageModel;
249
- provider.embeddingModel = (modelId) => {
250
- throw new NoSuchModelError({ modelId, modelType: "embeddingModel" });
251
- };
252
- provider.textEmbeddingModel = provider.embeddingModel;
253
- provider.imageModel = (modelId) => {
254
- throw new NoSuchModelError({ modelId, modelType: "imageModel" });
255
- };
256
- return provider;
201
+ const baseURL = withoutTrailingSlash(options.baseURL) ?? "https://api.z.ai/api/paas/v4";
202
+ const getHeaders = () => withUserAgentSuffix({
203
+ Authorization: `Bearer ${loadApiKey({
204
+ apiKey: options.apiKey,
205
+ environmentVariableName: "ZAI_API_KEY",
206
+ description: "Z.AI API key"
207
+ })}`,
208
+ ...options.headers
209
+ }, `ai-sdk-zai/${VERSION}`);
210
+ const createLanguageModel = (modelId) => new ZaiChatLanguageModel(modelId, {
211
+ provider: "zai.chat",
212
+ baseURL,
213
+ headers: getHeaders,
214
+ fetch: options.fetch
215
+ });
216
+ const provider = (modelId) => createLanguageModel(modelId);
217
+ provider.specificationVersion = "v4";
218
+ provider.languageModel = createLanguageModel;
219
+ provider.chat = createLanguageModel;
220
+ provider.embeddingModel = (modelId) => {
221
+ throw new NoSuchModelError({
222
+ modelId,
223
+ modelType: "embeddingModel"
224
+ });
225
+ };
226
+ provider.textEmbeddingModel = provider.embeddingModel;
227
+ provider.imageModel = (modelId) => {
228
+ throw new NoSuchModelError({
229
+ modelId,
230
+ modelType: "imageModel"
231
+ });
232
+ };
233
+ return provider;
257
234
  }
258
- var zai = createZai();
259
- export {
260
- VERSION,
261
- createZai,
262
- zai
263
- };
235
+ const zai = createZai();
236
+ //#endregion
237
+ export { VERSION, createZai, zai };
238
+
264
239
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/zai-provider.ts","../src/version.ts","../src/zai-chat-language-model.ts","../src/zai-chat-language-model-options.ts","../src/zai-error.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 { VERSION } from './version';\nimport { ZaiChatLanguageModel } from './zai-chat-language-model';\nimport type { ZaiChatModelId } from './zai-chat-options';\n\nexport interface ZaiProviderSettings {\n /**\n * Z.AI API key. Defaults to the `ZAI_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for API calls. Defaults to\n * `https://api.z.ai/api/paas/v4`.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ZaiProvider extends ProviderV4 {\n /**\n * Creates a Z.AI chat model for text generation.\n */\n (modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI language model.\n */\n languageModel(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI chat model.\n */\n chat(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport function createZai(options: ZaiProviderSettings = {}): ZaiProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.z.ai/api/paas/v4';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ZAI_API_KEY',\n description: 'Z.AI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk-zai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: ZaiChatModelId) =>\n new ZaiChatLanguageModel(modelId, {\n provider: 'zai.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = (modelId: ZaiChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const zai = createZai();\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","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n parseProviderOptions,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport type { ZaiChatModelId } from './zai-chat-options';\nimport { zaiLanguageModelChatOptions } from './zai-chat-language-model-options';\nimport { zaiErrorStructure } from './zai-error';\n\ntype OpenAICompatibleChatConfig = ConstructorParameters<\n typeof OpenAICompatibleChatLanguageModel\n>[1];\n\nexport type ZaiChatConfig = {\n provider: string;\n baseURL: string;\n headers?:\n | Record<string, string | undefined>\n | (() => Record<string, string | undefined>);\n fetch?: FetchFunction;\n};\n\nfunction transformZaiRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n doSample,\n frequency_penalty: _frequencyPenalty,\n presence_penalty: _presencePenalty,\n requestId,\n seed: _seed,\n thinking,\n toolStream,\n user: _user,\n userId,\n verbosity: _verbosity,\n ...restArgs\n } = args;\n\n return {\n ...restArgs,\n ...(doSample !== undefined && { do_sample: doSample }),\n ...(thinking !== undefined && {\n thinking: {\n ...(thinking.type !== undefined && { type: thinking.type }),\n ...(thinking.clearThinking !== undefined && {\n clear_thinking: thinking.clearThinking,\n }),\n },\n }),\n ...(toolStream !== undefined && { tool_stream: toolStream }),\n ...(requestId !== undefined && { request_id: requestId }),\n ...(userId !== undefined && { user_id: userId }),\n };\n}\n\nfunction mapZaiFinishReason(\n finishReason: LanguageModelV4FinishReason,\n): LanguageModelV4FinishReason {\n switch (finishReason.raw) {\n case 'sensitive':\n return { unified: 'content-filter', raw: finishReason.raw };\n case 'model_context_window_exceeded':\n return { unified: 'length', raw: finishReason.raw };\n case 'network_error':\n return { unified: 'error', raw: finishReason.raw };\n default:\n return finishReason;\n }\n}\n\nexport class ZaiChatLanguageModel\n extends OpenAICompatibleChatLanguageModel\n implements LanguageModelV4\n{\n private readonly zaiConfig: ZaiChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: ZaiChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.zaiConfig,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: OpenAICompatibleChatConfig;\n }) {\n return new ZaiChatLanguageModel(\n options.modelId,\n options.config as unknown as ZaiChatConfig,\n );\n }\n\n constructor(modelId: ZaiChatModelId, config: ZaiChatConfig) {\n const headers = config.headers;\n\n super(modelId, {\n provider: config.provider,\n url: ({ path }) => `${config.baseURL}${path}`,\n headers:\n headers == null\n ? undefined\n : () => (typeof headers === 'function' ? headers() : headers),\n fetch: config.fetch,\n errorStructure: zaiErrorStructure,\n transformRequestBody: transformZaiRequestBody,\n supportedUrls: () => ({\n 'image/*': [/^https?:\\/\\//],\n 'video/*': [/^https?:\\/\\//],\n }),\n });\n\n this.zaiConfig = config;\n }\n\n private async prepareCallOptions(options: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const zaiOptions = await parseProviderOptions({\n provider: 'zai',\n providerOptions: options.providerOptions,\n schema: zaiLanguageModelChatOptions,\n });\n\n if (options.frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n if (options.presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n if (options.seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n let tools = options.tools;\n let toolChoice = options.toolChoice;\n\n if (toolChoice?.type === 'none') {\n tools = undefined;\n toolChoice = undefined;\n } else if (toolChoice != null && toolChoice.type !== 'auto') {\n warnings.push({\n type: 'unsupported',\n feature: `toolChoice ${toolChoice.type}`,\n details: 'Z.AI currently supports only automatic tool selection.',\n });\n toolChoice = undefined;\n }\n\n const normalizedOptions: LanguageModelV4CallOptions = {\n ...options,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n seed: undefined,\n tools,\n toolChoice,\n providerOptions:\n zaiOptions == null\n ? options.providerOptions\n : {\n ...options.providerOptions,\n zai: zaiOptions,\n },\n };\n\n return { normalizedOptions, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doGenerate(normalizedOptions);\n\n return {\n ...result,\n finishReason: mapZaiFinishReason(result.finishReason),\n warnings: [...result.warnings, ...warnings],\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doStream(normalizedOptions);\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV4StreamPart,\n LanguageModelV4StreamPart\n >({\n transform(part, controller) {\n if (part.type === 'stream-start') {\n controller.enqueue({\n ...part,\n warnings: [...part.warnings, ...warnings],\n });\n return;\n }\n\n if (part.type === 'finish') {\n controller.enqueue({\n ...part,\n finishReason: mapZaiFinishReason(part.finishReason),\n });\n return;\n }\n\n controller.enqueue(part);\n },\n }),\n ),\n };\n }\n}\n","import { z } from 'zod/v4';\n\nexport const zaiLanguageModelChatOptions = z.object({\n /**\n * Enables or disables sampling. When disabled, temperature and topP do not\n * take effect.\n */\n doSample: z.boolean().optional(),\n\n /**\n * Controls model thinking and whether reasoning from earlier turns is kept.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n clearThinking: z.boolean().optional(),\n })\n .optional(),\n\n /**\n * Controls reasoning effort for GLM-5.2 and later models.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'])\n .optional(),\n\n /**\n * Enables incremental function-call argument streaming on supported models.\n */\n toolStream: z.boolean().optional(),\n\n /**\n * A caller-provided request identifier between 6 and 64 characters.\n */\n requestId: z.string().min(6).max(64).optional(),\n\n /**\n * A non-sensitive end-user identifier between 6 and 128 characters.\n */\n userId: z.string().min(6).max(128).optional(),\n});\n\nexport type ZaiLanguageModelChatOptions = z.infer<\n typeof zaiLanguageModelChatOptions\n>;\n","import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport { z } from 'zod/v4';\n\nconst zaiErrorDetailsSchema = z.object({\n code: z.union([z.number(), z.string()]).nullish(),\n message: z.string(),\n});\n\nconst zaiErrorSchema = z.union([\n zaiErrorDetailsSchema,\n z.object({ error: zaiErrorDetailsSchema }),\n]);\n\nexport type ZaiErrorData = z.infer<typeof zaiErrorSchema>;\n\nexport const zaiErrorStructure: ProviderErrorStructure<ZaiErrorData> = {\n errorSchema: zaiErrorSchema,\n errorToMessage: data => ('error' in data ? data.error.message : data.message),\n};\n"],"mappings":"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","names":["z"]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/version.ts","../src/zai-chat-language-model-options.ts","../src/zai-error.ts","../src/zai-chat-language-model.ts","../src/zai-provider.ts"],"sourcesContent":["// 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","import { z } from 'zod/v4';\n\nexport const zaiLanguageModelChatOptions = z.object({\n /**\n * Enables or disables sampling. When disabled, temperature and topP do not\n * take effect.\n */\n doSample: z.boolean().optional(),\n\n /**\n * Controls model thinking and whether reasoning from earlier turns is kept.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n clearThinking: z.boolean().optional(),\n })\n .optional(),\n\n /**\n * Controls reasoning effort for GLM-5.2 and later models.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'])\n .optional(),\n\n /**\n * Enables incremental function-call argument streaming on supported models.\n */\n toolStream: z.boolean().optional(),\n\n /**\n * A caller-provided request identifier between 6 and 64 characters.\n */\n requestId: z.string().min(6).max(64).optional(),\n\n /**\n * A non-sensitive end-user identifier between 6 and 128 characters.\n */\n userId: z.string().min(6).max(128).optional(),\n});\n\nexport type ZaiLanguageModelChatOptions = z.infer<\n typeof zaiLanguageModelChatOptions\n>;\n","import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport { z } from 'zod/v4';\n\nconst zaiErrorDetailsSchema = z.object({\n code: z.union([z.number(), z.string()]).nullish(),\n message: z.string(),\n});\n\nconst zaiErrorSchema = z.union([\n zaiErrorDetailsSchema,\n z.object({ error: zaiErrorDetailsSchema }),\n]);\n\nexport type ZaiErrorData = z.infer<typeof zaiErrorSchema>;\n\nexport const zaiErrorStructure: ProviderErrorStructure<ZaiErrorData> = {\n errorSchema: zaiErrorSchema,\n errorToMessage: data => ('error' in data ? data.error.message : data.message),\n};\n","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n parseProviderOptions,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport type { ZaiChatModelId } from './zai-chat-options';\nimport { zaiLanguageModelChatOptions } from './zai-chat-language-model-options';\nimport { zaiErrorStructure } from './zai-error';\n\ntype OpenAICompatibleChatConfig = ConstructorParameters<\n typeof OpenAICompatibleChatLanguageModel\n>[1];\n\nexport type ZaiChatConfig = {\n provider: string;\n baseURL: string;\n headers?:\n | Record<string, string | undefined>\n | (() => Record<string, string | undefined>);\n fetch?: FetchFunction;\n};\n\nfunction transformZaiRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n doSample,\n frequency_penalty: _frequencyPenalty,\n presence_penalty: _presencePenalty,\n requestId,\n seed: _seed,\n thinking,\n toolStream,\n user: _user,\n userId,\n verbosity: _verbosity,\n ...restArgs\n } = args;\n\n return {\n ...restArgs,\n ...(doSample !== undefined && { do_sample: doSample }),\n ...(thinking !== undefined && {\n thinking: {\n ...(thinking.type !== undefined && { type: thinking.type }),\n ...(thinking.clearThinking !== undefined && {\n clear_thinking: thinking.clearThinking,\n }),\n },\n }),\n ...(toolStream !== undefined && { tool_stream: toolStream }),\n ...(requestId !== undefined && { request_id: requestId }),\n ...(userId !== undefined && { user_id: userId }),\n };\n}\n\nfunction mapZaiFinishReason(\n finishReason: LanguageModelV4FinishReason,\n): LanguageModelV4FinishReason {\n switch (finishReason.raw) {\n case 'sensitive':\n return { unified: 'content-filter', raw: finishReason.raw };\n case 'model_context_window_exceeded':\n return { unified: 'length', raw: finishReason.raw };\n case 'network_error':\n return { unified: 'error', raw: finishReason.raw };\n default:\n return finishReason;\n }\n}\n\nexport class ZaiChatLanguageModel\n extends OpenAICompatibleChatLanguageModel\n implements LanguageModelV4\n{\n private readonly zaiConfig: ZaiChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: ZaiChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.zaiConfig,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: OpenAICompatibleChatConfig;\n }) {\n return new ZaiChatLanguageModel(\n options.modelId,\n options.config as unknown as ZaiChatConfig,\n );\n }\n\n constructor(modelId: ZaiChatModelId, config: ZaiChatConfig) {\n const headers = config.headers;\n\n super(modelId, {\n provider: config.provider,\n url: ({ path }) => `${config.baseURL}${path}`,\n headers:\n headers == null\n ? undefined\n : () => (typeof headers === 'function' ? headers() : headers),\n fetch: config.fetch,\n errorStructure: zaiErrorStructure,\n transformRequestBody: transformZaiRequestBody,\n supportedUrls: () => ({\n 'image/*': [/^https?:\\/\\//],\n 'video/*': [/^https?:\\/\\//],\n }),\n });\n\n this.zaiConfig = config;\n }\n\n private async prepareCallOptions(options: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const zaiOptions = await parseProviderOptions({\n provider: 'zai',\n providerOptions: options.providerOptions,\n schema: zaiLanguageModelChatOptions,\n });\n\n if (options.frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n if (options.presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n if (options.seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n let tools = options.tools;\n let toolChoice = options.toolChoice;\n\n if (toolChoice?.type === 'none') {\n tools = undefined;\n toolChoice = undefined;\n } else if (toolChoice != null && toolChoice.type !== 'auto') {\n warnings.push({\n type: 'unsupported',\n feature: `toolChoice ${toolChoice.type}`,\n details: 'Z.AI currently supports only automatic tool selection.',\n });\n toolChoice = undefined;\n }\n\n const normalizedOptions: LanguageModelV4CallOptions = {\n ...options,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n seed: undefined,\n tools,\n toolChoice,\n providerOptions:\n zaiOptions == null\n ? options.providerOptions\n : {\n ...options.providerOptions,\n zai: zaiOptions,\n },\n };\n\n return { normalizedOptions, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doGenerate(normalizedOptions);\n\n return {\n ...result,\n finishReason: mapZaiFinishReason(result.finishReason),\n warnings: [...result.warnings, ...warnings],\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doStream(normalizedOptions);\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV4StreamPart,\n LanguageModelV4StreamPart\n >({\n transform(part, controller) {\n if (part.type === 'stream-start') {\n controller.enqueue({\n ...part,\n warnings: [...part.warnings, ...warnings],\n });\n return;\n }\n\n if (part.type === 'finish') {\n controller.enqueue({\n ...part,\n finishReason: mapZaiFinishReason(part.finishReason),\n });\n return;\n }\n\n controller.enqueue(part);\n },\n }),\n ),\n };\n }\n}\n","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 { VERSION } from './version';\nimport { ZaiChatLanguageModel } from './zai-chat-language-model';\nimport type { ZaiChatModelId } from './zai-chat-options';\n\nexport interface ZaiProviderSettings {\n /**\n * Z.AI API key. Defaults to the `ZAI_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for API calls. Defaults to\n * `https://api.z.ai/api/paas/v4`.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ZaiProvider extends ProviderV4 {\n /**\n * Creates a Z.AI chat model for text generation.\n */\n (modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI language model.\n */\n languageModel(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI chat model.\n */\n chat(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport function createZai(options: ZaiProviderSettings = {}): ZaiProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.z.ai/api/paas/v4';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ZAI_API_KEY',\n description: 'Z.AI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk-zai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: ZaiChatModelId) =>\n new ZaiChatLanguageModel(modelId, {\n provider: 'zai.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = (modelId: ZaiChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const zai = createZai();\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/zai",
3
- "version": "3.0.21",
3
+ "version": "3.0.23",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -29,14 +29,14 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@ai-sdk/openai-compatible": "3.0.59",
33
- "@ai-sdk/provider": "4.0.19",
34
- "@ai-sdk/provider-utils": "5.0.51"
32
+ "@ai-sdk/openai-compatible": "3.0.61",
33
+ "@ai-sdk/provider": "4.0.21",
34
+ "@ai-sdk/provider-utils": "5.0.53"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "22.19.19",
38
38
  "@vercel/ai-tsconfig": "0.0.0",
39
- "tsup": "^8.5.1",
39
+ "tsdown": "^0.23.0",
40
40
  "typescript": "5.8.3",
41
41
  "zod": "3.25.76"
42
42
  },
@@ -64,9 +64,9 @@
64
64
  ],
65
65
  "description": "The Z.AI provider for the AI SDK contains language model support for Z.AI's GLM models.",
66
66
  "scripts": {
67
- "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
68
- "build:watch": "pnpm clean && tsup --watch",
69
- "clean": "del-cli dist docs *.tsbuildinfo",
67
+ "build": "pnpm clean && tsdown",
68
+ "build:watch": "pnpm clean && tsdown --watch",
69
+ "clean": "del-cli docs *.tsbuildinfo",
70
70
  "type-check": "tsc --build",
71
71
  "test": "pnpm test:node && pnpm test:edge",
72
72
  "test:update": "pnpm test:node -u",