@elizaos/plugin-zai 2.0.3-beta.5 → 2.0.3-beta.7

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.
@@ -0,0 +1,348 @@
1
+ // index.ts
2
+ import { logger as logger3, ModelType as ModelType2 } from "@elizaos/core";
3
+
4
+ // init.ts
5
+ import { logger } from "@elizaos/core";
6
+
7
+ // types/index.ts
8
+ function createModelName(name) {
9
+ if (!name || name.trim().length === 0) {
10
+ throw new Error("Model name cannot be empty");
11
+ }
12
+ return name;
13
+ }
14
+
15
+ // utils/config.ts
16
+ var DEFAULT_SMALL_MODEL = "glm-4.5-air";
17
+ var DEFAULT_LARGE_MODEL = "glm-5.1";
18
+ var DEFAULT_BASE_URL = "https://api.z.ai/api/paas/v4";
19
+ function isBrowser() {
20
+ return typeof globalThis !== "undefined" && typeof globalThis.document !== "undefined";
21
+ }
22
+ function getEnvValue(key) {
23
+ if (typeof process === "undefined") {
24
+ return;
25
+ }
26
+ const envValue = process.env[key];
27
+ if (typeof envValue === "string" && envValue.length > 0) {
28
+ return envValue;
29
+ }
30
+ return;
31
+ }
32
+ function getRawSetting(runtime, key) {
33
+ const runtimeValue = runtime.getSetting(key);
34
+ if (typeof runtimeValue === "string" && runtimeValue.length > 0) {
35
+ return runtimeValue;
36
+ }
37
+ return getEnvValue(key);
38
+ }
39
+ function getCanonicalApiKeySetting(runtime) {
40
+ return getRawSetting(runtime, "ZAI_API_KEY") ?? getRawSetting(runtime, "Z_AI_API_KEY");
41
+ }
42
+ function getApiKeyOptional(runtime) {
43
+ const apiKey = getCanonicalApiKeySetting(runtime);
44
+ if (!apiKey || apiKey.trim().length === 0) {
45
+ return null;
46
+ }
47
+ return apiKey;
48
+ }
49
+ function getBaseURL(runtime) {
50
+ if (isBrowser()) {
51
+ const browserURL = getRawSetting(runtime, "ZAI_BROWSER_BASE_URL");
52
+ if (browserURL) {
53
+ return normalizeBaseURL(browserURL);
54
+ }
55
+ }
56
+ const raw = getRawSetting(runtime, "ZAI_BASE_URL") ?? DEFAULT_BASE_URL;
57
+ return normalizeDirectApiBaseURL(raw);
58
+ }
59
+ function getSmallModel(runtime) {
60
+ const model = getRawSetting(runtime, "ZAI_SMALL_MODEL") ?? DEFAULT_SMALL_MODEL;
61
+ return createModelName(model);
62
+ }
63
+ function getLargeModel(runtime) {
64
+ const model = getRawSetting(runtime, "ZAI_LARGE_MODEL") ?? DEFAULT_LARGE_MODEL;
65
+ return createModelName(model);
66
+ }
67
+ function getExperimentalTelemetry(runtime) {
68
+ const setting = getRawSetting(runtime, "ZAI_EXPERIMENTAL_TELEMETRY");
69
+ if (!setting) {
70
+ return false;
71
+ }
72
+ return setting.toLowerCase() === "true";
73
+ }
74
+ function parsePositiveInt(value) {
75
+ if (value === undefined) {
76
+ return 0;
77
+ }
78
+ const trimmed = value.trim();
79
+ if (!/^\d+$/.test(trimmed)) {
80
+ return 0;
81
+ }
82
+ const parsed = Number(trimmed);
83
+ return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : 0;
84
+ }
85
+ function getCoTBudget(runtime, modelSize) {
86
+ const specificKey = modelSize === "small" ? "ZAI_COT_BUDGET_SMALL" : "ZAI_COT_BUDGET_LARGE";
87
+ const specific = parsePositiveInt(getRawSetting(runtime, specificKey));
88
+ if (specific > 0) {
89
+ return specific;
90
+ }
91
+ if (getRawSetting(runtime, specificKey) !== undefined) {
92
+ return 0;
93
+ }
94
+ return parsePositiveInt(getRawSetting(runtime, "ZAI_COT_BUDGET"));
95
+ }
96
+ function getThinkingConfig(runtime, modelSize) {
97
+ const explicit = getRawSetting(runtime, "ZAI_THINKING_TYPE")?.trim().toLowerCase();
98
+ if (explicit === "enabled" || explicit === "disabled") {
99
+ return { type: explicit };
100
+ }
101
+ if (getCoTBudget(runtime, modelSize) > 0) {
102
+ return { type: "enabled" };
103
+ }
104
+ return null;
105
+ }
106
+ function normalizeBaseURL(raw) {
107
+ return raw.trim().replace(/\/+$/, "");
108
+ }
109
+ function normalizeDirectApiBaseURL(raw) {
110
+ const normalized = normalizeBaseURL(raw);
111
+ const lower = normalized.toLowerCase();
112
+ if (lower.includes("/api/coding/") || lower.includes("/api/anthropic")) {
113
+ throw new Error("ZAI_BASE_URL must target z.ai's general API endpoint (https://api.z.ai/api/paas/v4). " + "Coding Plan and Anthropic-compatible endpoints are reserved for supported coding tools.");
114
+ }
115
+ return normalized;
116
+ }
117
+
118
+ // init.ts
119
+ function disableAiSdkWarningsForZai() {
120
+ const mutableGlobalThis = globalThis;
121
+ if (mutableGlobalThis.AI_SDK_LOG_WARNINGS === undefined) {
122
+ mutableGlobalThis.AI_SDK_LOG_WARNINGS = false;
123
+ }
124
+ }
125
+ function initializeZai(_config, runtime) {
126
+ disableAiSdkWarningsForZai();
127
+ const apiKey = getApiKeyOptional(runtime);
128
+ if (!apiKey && !isBrowser()) {
129
+ logger.warn("ZAI_API_KEY is not set in environment - z.ai functionality will be limited. " + "Set ZAI_API_KEY in your environment variables or runtime settings. Legacy Z_AI_API_KEY is also accepted.");
130
+ return;
131
+ }
132
+ if (apiKey) {
133
+ logger.log("z.ai API key configured successfully");
134
+ }
135
+ }
136
+
137
+ // models/text.ts
138
+ import { logger as logger2, ModelType } from "@elizaos/core";
139
+ import { generateText } from "ai";
140
+
141
+ // providers/openai-compatible.ts
142
+ import {
143
+ createOpenAICompatible
144
+ } from "@ai-sdk/openai-compatible";
145
+ function createZaiClient(runtime, opts = {}) {
146
+ const apiKey = getApiKeyOptional(runtime) ?? undefined;
147
+ const baseURL = getBaseURL(runtime);
148
+ return createOpenAICompatible({
149
+ name: "zai",
150
+ baseURL,
151
+ ...apiKey ? { apiKey } : {},
152
+ fetch: opts.fetch ?? runtime.fetch,
153
+ includeUsage: true
154
+ });
155
+ }
156
+ // utils/events.ts
157
+ import { EventType } from "@elizaos/core";
158
+ function emitModelUsageEvent(runtime, type, usage) {
159
+ const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;
160
+ const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;
161
+ const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;
162
+ runtime.emitEvent(EventType.MODEL_USED, {
163
+ runtime,
164
+ source: "zai",
165
+ type,
166
+ tokens: {
167
+ prompt: promptTokens,
168
+ completion: completionTokens,
169
+ total: totalTokens
170
+ }
171
+ });
172
+ }
173
+
174
+ // models/text.ts
175
+ function resolveRequestedModelName(params, fallback) {
176
+ const requestedModel = params.model;
177
+ return typeof requestedModel === "string" && requestedModel.trim().length > 0 ? createModelName(requestedModel.trim()) : fallback;
178
+ }
179
+ function resolveTextParams(params, modelName, thinking) {
180
+ const prompt = params.prompt ?? "";
181
+ const stopSequences = (params.stopSequences ?? []).slice(0, 1);
182
+ const frequencyPenalty = params.frequencyPenalty ?? 0.7;
183
+ const presencePenalty = params.presencePenalty ?? 0.7;
184
+ const rawParams = params;
185
+ const topPExplicit = rawParams.topP != null;
186
+ const temperature = params.temperature ?? 0.7;
187
+ const topP = topPExplicit ? params.topP ?? 0.9 : undefined;
188
+ const defaultMaxTokens = modelName.includes("air") || modelName.includes("flash") ? 4096 : 8192;
189
+ const maxTokens = params.omitMaxTokens ? undefined : params.maxTokens ?? defaultMaxTokens;
190
+ const rawProviderOptions = rawParams.providerOptions;
191
+ const providerOptions = rawProviderOptions ? JSON.parse(JSON.stringify(rawProviderOptions)) : {};
192
+ return {
193
+ prompt,
194
+ stopSequences,
195
+ maxTokens,
196
+ temperature,
197
+ topP,
198
+ frequencyPenalty,
199
+ presencePenalty,
200
+ providerOptions,
201
+ thinking
202
+ };
203
+ }
204
+ function createZaiRequestFetch(thinking, baseFetch) {
205
+ if (!thinking) {
206
+ return baseFetch;
207
+ }
208
+ const wrapped = async (input, init) => {
209
+ if (init && typeof init.body === "string") {
210
+ try {
211
+ const body = JSON.parse(init.body);
212
+ if (!Object.hasOwn(body, "thinking")) {
213
+ body.thinking = thinking;
214
+ init.body = JSON.stringify(body);
215
+ }
216
+ } catch {}
217
+ }
218
+ return baseFetch(input, init);
219
+ };
220
+ return Object.assign(wrapped, baseFetch);
221
+ }
222
+ async function generateTextWithModel(runtime, params, modelName, modelSize, modelType) {
223
+ const experimentalTelemetry = getExperimentalTelemetry(runtime);
224
+ const thinking = getThinkingConfig(runtime, modelSize);
225
+ const requestFetch = createZaiRequestFetch(thinking, runtime.fetch ?? fetch);
226
+ const zai = createZaiClient(runtime, { fetch: requestFetch });
227
+ logger2.log(`[z.ai] Using ${modelType} model: ${modelName}`);
228
+ const resolved = resolveTextParams(params, modelName, thinking);
229
+ const agentName = resolved.providerOptions.agentName;
230
+ const telemetryConfig = {
231
+ isEnabled: experimentalTelemetry,
232
+ functionId: agentName ? `agent:${agentName}` : undefined,
233
+ metadata: agentName ? { agentName } : undefined
234
+ };
235
+ const generateParams = {
236
+ model: zai(modelName),
237
+ prompt: resolved.prompt,
238
+ system: runtime.character.system ?? undefined,
239
+ temperature: resolved.temperature,
240
+ stopSequences: resolved.stopSequences,
241
+ frequencyPenalty: resolved.frequencyPenalty,
242
+ presencePenalty: resolved.presencePenalty,
243
+ experimental_telemetry: telemetryConfig,
244
+ topP: resolved.topP,
245
+ ...typeof resolved.maxTokens === "number" ? { maxTokens: resolved.maxTokens } : {}
246
+ };
247
+ const { text, usage } = await generateText(generateParams);
248
+ if (usage) {
249
+ emitModelUsageEvent(runtime, modelType, usage);
250
+ }
251
+ return text;
252
+ }
253
+ async function handleTextSmall(runtime, params) {
254
+ const modelName = resolveRequestedModelName(params, getSmallModel(runtime));
255
+ return generateTextWithModel(runtime, params, modelName, "small", ModelType.TEXT_SMALL);
256
+ }
257
+ async function handleTextLarge(runtime, params) {
258
+ const modelName = resolveRequestedModelName(params, getLargeModel(runtime));
259
+ return generateTextWithModel(runtime, params, modelName, "large", ModelType.TEXT_LARGE);
260
+ }
261
+ // index.ts
262
+ var pluginTests = [
263
+ {
264
+ name: "zai_plugin_tests",
265
+ tests: [
266
+ {
267
+ name: "zai_test_api_key_validation",
268
+ fn: async (runtime) => {
269
+ const apiKey = getApiKeyOptional(runtime);
270
+ if (!apiKey) {
271
+ throw new Error("ZAI_API_KEY is not configured");
272
+ }
273
+ logger3.log("z.ai API key is configured");
274
+ }
275
+ },
276
+ {
277
+ name: "zai_test_text_small",
278
+ fn: async (runtime) => {
279
+ const text = await runtime.useModel(ModelType2.TEXT_SMALL, {
280
+ prompt: "What is the nature of reality in 10 words?"
281
+ });
282
+ if (typeof text !== "string" || text.length === 0) {
283
+ throw new Error("Failed to generate text: empty response");
284
+ }
285
+ logger3.log({ text }, "generated with test_text_small");
286
+ }
287
+ },
288
+ {
289
+ name: "zai_test_text_large",
290
+ fn: async (runtime) => {
291
+ const text = await runtime.useModel(ModelType2.TEXT_LARGE, {
292
+ prompt: "What is the nature of reality in 10 words?"
293
+ });
294
+ if (typeof text !== "string" || text.length === 0) {
295
+ throw new Error("Failed to generate text: empty response");
296
+ }
297
+ logger3.log({ text }, "generated with test_text_large");
298
+ }
299
+ }
300
+ ]
301
+ }
302
+ ];
303
+ function getProcessEnv() {
304
+ if (typeof process === "undefined") {
305
+ return {};
306
+ }
307
+ return process.env;
308
+ }
309
+ var env = getProcessEnv();
310
+ var zaiPlugin = {
311
+ name: "zai",
312
+ description: "z.ai plugin (OpenAI-compatible direct API; supports text generation)",
313
+ config: {
314
+ ZAI_API_KEY: env.ZAI_API_KEY ?? env.Z_AI_API_KEY ?? null,
315
+ Z_AI_API_KEY: env.Z_AI_API_KEY ?? null,
316
+ ZAI_SMALL_MODEL: env.ZAI_SMALL_MODEL ?? null,
317
+ ZAI_LARGE_MODEL: env.ZAI_LARGE_MODEL ?? null,
318
+ ZAI_EXPERIMENTAL_TELEMETRY: env.ZAI_EXPERIMENTAL_TELEMETRY ?? null,
319
+ ZAI_BASE_URL: env.ZAI_BASE_URL ?? null,
320
+ ZAI_BROWSER_BASE_URL: env.ZAI_BROWSER_BASE_URL ?? null,
321
+ ZAI_COT_BUDGET: env.ZAI_COT_BUDGET ?? null,
322
+ ZAI_COT_BUDGET_SMALL: env.ZAI_COT_BUDGET_SMALL ?? null,
323
+ ZAI_COT_BUDGET_LARGE: env.ZAI_COT_BUDGET_LARGE ?? null,
324
+ ZAI_THINKING_TYPE: env.ZAI_THINKING_TYPE ?? null
325
+ },
326
+ async init(config, runtime) {
327
+ initializeZai(config, runtime);
328
+ },
329
+ models: {
330
+ [ModelType2.TEXT_SMALL]: async (runtime, params) => {
331
+ return handleTextSmall(runtime, params);
332
+ },
333
+ [ModelType2.TEXT_LARGE]: async (runtime, params) => {
334
+ return handleTextLarge(runtime, params);
335
+ }
336
+ },
337
+ tests: pluginTests
338
+ };
339
+ var plugin_zai_default = zaiPlugin;
340
+
341
+ // index.node.ts
342
+ var index_node_default = plugin_zai_default;
343
+ export {
344
+ zaiPlugin,
345
+ index_node_default as default
346
+ };
347
+
348
+ //# debugId=35C088D35A18491464756E2164756E21
@@ -0,0 +1,17 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../index.ts", "../../init.ts", "../../types/index.ts", "../../utils/config.ts", "../../models/text.ts", "../../providers/openai-compatible.ts", "../../utils/events.ts", "../../index.node.ts"],
4
+ "sourcesContent": [
5
+ "import type {\n GenerateTextParams,\n IAgentRuntime,\n Plugin,\n ProcessEnvLike,\n TestCase,\n TestSuite,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { initializeZai, type PluginConfig } from \"./init\";\nimport { handleTextLarge, handleTextSmall } from \"./models\";\nimport { getApiKeyOptional } from \"./utils/config\";\n\nexport type { PluginConfig } from \"./init\";\n\nconst pluginTests = [\n {\n name: \"zai_plugin_tests\",\n tests: [\n {\n name: \"zai_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKeyOptional(runtime);\n if (!apiKey) {\n throw new Error(\"ZAI_API_KEY is not configured\");\n }\n logger.log(\"z.ai API key is configured\");\n },\n },\n {\n name: \"zai_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_small\");\n },\n },\n {\n name: \"zai_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_large\");\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\nfunction getProcessEnv(): ProcessEnvLike {\n // In browsers, `process` is not defined (and we must not reference it unguarded).\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const zaiPlugin: Plugin = {\n name: \"zai\",\n description: \"z.ai plugin (OpenAI-compatible direct API; supports text generation)\",\n config: {\n ZAI_API_KEY: env.ZAI_API_KEY ?? env.Z_AI_API_KEY ?? null,\n Z_AI_API_KEY: env.Z_AI_API_KEY ?? null,\n ZAI_SMALL_MODEL: env.ZAI_SMALL_MODEL ?? null,\n ZAI_LARGE_MODEL: env.ZAI_LARGE_MODEL ?? null,\n ZAI_EXPERIMENTAL_TELEMETRY: env.ZAI_EXPERIMENTAL_TELEMETRY ?? null,\n ZAI_BASE_URL: env.ZAI_BASE_URL ?? null,\n ZAI_BROWSER_BASE_URL: env.ZAI_BROWSER_BASE_URL ?? null,\n ZAI_COT_BUDGET: env.ZAI_COT_BUDGET ?? null,\n ZAI_COT_BUDGET_SMALL: env.ZAI_COT_BUDGET_SMALL ?? null,\n ZAI_COT_BUDGET_LARGE: env.ZAI_COT_BUDGET_LARGE ?? null,\n ZAI_THINKING_TYPE: env.ZAI_THINKING_TYPE ?? null,\n },\n\n async init(config: Record<string, string>, runtime: IAgentRuntime) {\n initializeZai(config as PluginConfig, runtime);\n },\n\n models: {\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n },\n\n tests: pluginTests as TestSuite[],\n};\n\nexport default zaiPlugin;\n",
6
+ "import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { getApiKeyOptional, isBrowser } from \"./utils/config\";\n\nexport interface PluginConfig {\n readonly ZAI_API_KEY?: string;\n readonly Z_AI_API_KEY?: string;\n readonly ZAI_SMALL_MODEL?: string;\n readonly ZAI_LARGE_MODEL?: string;\n readonly ZAI_EXPERIMENTAL_TELEMETRY?: string;\n readonly ZAI_BASE_URL?: string;\n readonly ZAI_BROWSER_BASE_URL?: string;\n readonly ZAI_COT_BUDGET?: string;\n readonly ZAI_COT_BUDGET_SMALL?: string;\n readonly ZAI_COT_BUDGET_LARGE?: string;\n readonly ZAI_THINKING_TYPE?: string;\n}\n\nfunction disableAiSdkWarningsForZai(): void {\n const mutableGlobalThis = globalThis as typeof globalThis & {\n AI_SDK_LOG_WARNINGS?: boolean;\n };\n if (mutableGlobalThis.AI_SDK_LOG_WARNINGS === undefined) {\n mutableGlobalThis.AI_SDK_LOG_WARNINGS = false;\n }\n}\n\nexport function initializeZai(_config: PluginConfig, runtime: IAgentRuntime): void {\n disableAiSdkWarningsForZai();\n const apiKey = getApiKeyOptional(runtime);\n\n if (!apiKey && !isBrowser()) {\n logger.warn(\n \"ZAI_API_KEY is not set in environment - z.ai functionality will be limited. \" +\n \"Set ZAI_API_KEY in your environment variables or runtime settings. Legacy Z_AI_API_KEY is also accepted.\"\n );\n return;\n }\n\n if (apiKey) {\n logger.log(\"z.ai API key configured successfully\");\n }\n}\n",
7
+ "export type ValidatedApiKey = string & { readonly __brand: \"ValidatedApiKey\" };\n\nexport type ModelName = string & { readonly __brand: \"ModelName\" };\n\nexport type ModelSize = \"small\" | \"large\";\n\nexport interface ProviderOptions {\n readonly agentName?: string;\n}\n\nexport function assertValidApiKey(apiKey: string | undefined): asserts apiKey is ValidatedApiKey {\n if (!apiKey || apiKey.trim().length === 0) {\n throw new Error(\n \"ZAI_API_KEY is required but not configured. \" +\n \"Set it in your environment variables or runtime settings.\"\n );\n }\n}\n\nexport function createModelName(name: string): ModelName {\n if (!name || name.trim().length === 0) {\n throw new Error(\"Model name cannot be empty\");\n }\n return name as ModelName;\n}\n",
8
+ "import type { IAgentRuntime } from \"@elizaos/core\";\nimport type { ModelName, ModelSize, ValidatedApiKey } from \"../types\";\nimport { assertValidApiKey, createModelName } from \"../types\";\n\nconst DEFAULT_SMALL_MODEL = \"glm-4.5-air\";\nconst DEFAULT_LARGE_MODEL = \"glm-5.1\";\n\nconst DEFAULT_BASE_URL = \"https://api.z.ai/api/paas/v4\";\n\nexport interface ZaiThinkingConfig {\n readonly type: \"enabled\" | \"disabled\";\n readonly clear_thinking?: boolean;\n}\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { document?: Document }).document !== \"undefined\"\n );\n}\n\nfunction getEnvValue(key: string): string | undefined {\n // In real browsers, `process` is not defined. `typeof process` is safe.\n if (typeof process === \"undefined\") {\n return undefined;\n }\n\n const envValue = process.env[key];\n if (typeof envValue === \"string\" && envValue.length > 0) {\n return envValue;\n }\n\n return undefined;\n}\n\nexport function getRawSetting(runtime: IAgentRuntime, key: string): string | undefined {\n const runtimeValue = runtime.getSetting(key);\n if (typeof runtimeValue === \"string\" && runtimeValue.length > 0) {\n return runtimeValue;\n }\n\n return getEnvValue(key);\n}\n\nfunction getCanonicalApiKeySetting(runtime: IAgentRuntime): string | undefined {\n return getRawSetting(runtime, \"ZAI_API_KEY\") ?? getRawSetting(runtime, \"Z_AI_API_KEY\");\n}\n\nexport function getApiKey(runtime: IAgentRuntime): ValidatedApiKey {\n const apiKey = getCanonicalApiKeySetting(runtime);\n assertValidApiKey(apiKey);\n return apiKey;\n}\n\nexport function getApiKeyOptional(runtime: IAgentRuntime): ValidatedApiKey | null {\n const apiKey = getCanonicalApiKeySetting(runtime);\n if (!apiKey || apiKey.trim().length === 0) {\n return null;\n }\n return apiKey as ValidatedApiKey;\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n if (isBrowser()) {\n const browserURL = getRawSetting(runtime, \"ZAI_BROWSER_BASE_URL\");\n if (browserURL) {\n return normalizeBaseURL(browserURL);\n }\n }\n\n const raw = getRawSetting(runtime, \"ZAI_BASE_URL\") ?? DEFAULT_BASE_URL;\n return normalizeDirectApiBaseURL(raw);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"ZAI_SMALL_MODEL\") ?? DEFAULT_SMALL_MODEL;\n return createModelName(model);\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"ZAI_LARGE_MODEL\") ?? DEFAULT_LARGE_MODEL;\n return createModelName(model);\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n const setting = getRawSetting(runtime, \"ZAI_EXPERIMENTAL_TELEMETRY\");\n if (!setting) {\n return false;\n }\n return setting.toLowerCase() === \"true\";\n}\n\nfunction parsePositiveInt(value: string | undefined): number {\n if (value === undefined) {\n return 0;\n }\n const trimmed = value.trim();\n if (!/^\\d+$/.test(trimmed)) {\n return 0;\n }\n const parsed = Number(trimmed);\n return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : 0;\n}\n\nexport function getCoTBudget(runtime: IAgentRuntime, modelSize: ModelSize): number {\n const specificKey = modelSize === \"small\" ? \"ZAI_COT_BUDGET_SMALL\" : \"ZAI_COT_BUDGET_LARGE\";\n\n const specific = parsePositiveInt(getRawSetting(runtime, specificKey));\n if (specific > 0) {\n return specific;\n }\n if (getRawSetting(runtime, specificKey) !== undefined) {\n return 0;\n }\n\n return parsePositiveInt(getRawSetting(runtime, \"ZAI_COT_BUDGET\"));\n}\n\nexport function getThinkingConfig(\n runtime: IAgentRuntime,\n modelSize: ModelSize\n): ZaiThinkingConfig | null {\n const explicit = getRawSetting(runtime, \"ZAI_THINKING_TYPE\")?.trim().toLowerCase();\n if (explicit === \"enabled\" || explicit === \"disabled\") {\n return { type: explicit };\n }\n if (getCoTBudget(runtime, modelSize) > 0) {\n return { type: \"enabled\" };\n }\n return null;\n}\n\nfunction normalizeBaseURL(raw: string): string {\n return raw.trim().replace(/\\/+$/, \"\");\n}\n\nfunction normalizeDirectApiBaseURL(raw: string): string {\n const normalized = normalizeBaseURL(raw);\n const lower = normalized.toLowerCase();\n if (lower.includes(\"/api/coding/\") || lower.includes(\"/api/anthropic\")) {\n throw new Error(\n \"ZAI_BASE_URL must target z.ai's general API endpoint (https://api.z.ai/api/paas/v4). \" +\n \"Coding Plan and Anthropic-compatible endpoints are reserved for supported coding tools.\"\n );\n }\n return normalized;\n}\n\nexport function validateConfiguration(runtime: IAgentRuntime): void {\n if (!isBrowser()) {\n getApiKey(runtime);\n }\n}\n",
9
+ "import type { GenerateTextParams, IAgentRuntime } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText } from \"ai\";\nimport { createZaiClient, type ZaiFetch } from \"../providers\";\nimport { createModelName, type ModelName, type ModelSize, type ProviderOptions } from \"../types\";\nimport {\n getExperimentalTelemetry,\n getLargeModel,\n getSmallModel,\n getThinkingConfig,\n type ZaiThinkingConfig,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\ninterface ResolvedTextParams {\n readonly prompt: string;\n readonly stopSequences: readonly string[];\n readonly maxTokens?: number;\n readonly temperature: number | undefined;\n readonly topP: number | undefined;\n readonly frequencyPenalty: number;\n readonly presencePenalty: number;\n readonly providerOptions: ProviderOptions;\n readonly thinking: ZaiThinkingConfig | null;\n}\n\nfunction resolveRequestedModelName(params: GenerateTextParams, fallback: ModelName): ModelName {\n const requestedModel = (params as GenerateTextParams & { model?: unknown }).model;\n return typeof requestedModel === \"string\" && requestedModel.trim().length > 0\n ? createModelName(requestedModel.trim())\n : fallback;\n}\n\nfunction resolveTextParams(\n params: GenerateTextParams,\n modelName: ModelName,\n thinking: ZaiThinkingConfig | null\n): ResolvedTextParams {\n const prompt = params.prompt ?? \"\";\n const stopSequences = (params.stopSequences ?? []).slice(0, 1);\n const frequencyPenalty = params.frequencyPenalty ?? 0.7;\n const presencePenalty = params.presencePenalty ?? 0.7;\n\n const rawParams = params as unknown as Record<string, unknown>;\n const topPExplicit = rawParams.topP != null;\n const temperature = params.temperature ?? 0.7;\n const topP = topPExplicit ? (params.topP ?? 0.9) : undefined;\n\n const defaultMaxTokens = modelName.includes(\"air\") || modelName.includes(\"flash\") ? 4096 : 8192;\n const maxTokens = params.omitMaxTokens ? undefined : (params.maxTokens ?? defaultMaxTokens);\n\n const rawProviderOptions = rawParams.providerOptions as ProviderOptions | undefined;\n const providerOptions: ProviderOptions = rawProviderOptions\n ? JSON.parse(JSON.stringify(rawProviderOptions))\n : {};\n\n return {\n prompt,\n stopSequences,\n maxTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n providerOptions,\n thinking,\n };\n}\n\nfunction createZaiRequestFetch(thinking: ZaiThinkingConfig | null, baseFetch: ZaiFetch): ZaiFetch {\n if (!thinking) {\n return baseFetch;\n }\n\n const wrapped = async (input: RequestInfo | URL, init?: RequestInit) => {\n if (init && typeof init.body === \"string\") {\n try {\n const body = JSON.parse(init.body) as Record<string, unknown>;\n if (!Object.hasOwn(body, \"thinking\")) {\n body.thinking = thinking;\n init.body = JSON.stringify(body);\n }\n } catch {\n // Non-JSON request bodies pass through unchanged.\n }\n }\n return baseFetch(input, init);\n };\n return Object.assign(wrapped, baseFetch) as ZaiFetch;\n}\n\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelName: ModelName,\n modelSize: ModelSize,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE\n): Promise<string> {\n const experimentalTelemetry = getExperimentalTelemetry(runtime);\n const thinking = getThinkingConfig(runtime, modelSize);\n const requestFetch = createZaiRequestFetch(thinking, (runtime.fetch ?? fetch) as ZaiFetch);\n const zai = createZaiClient(runtime, { fetch: requestFetch });\n\n logger.log(`[z.ai] Using ${modelType} model: ${modelName}`);\n\n const resolved = resolveTextParams(params, modelName, thinking);\n\n const agentName = resolved.providerOptions.agentName;\n const telemetryConfig = {\n isEnabled: experimentalTelemetry,\n functionId: agentName ? `agent:${agentName}` : undefined,\n metadata: agentName ? { agentName } : undefined,\n };\n\n const generateParams = {\n model: zai(modelName),\n prompt: resolved.prompt,\n system: runtime.character.system ?? undefined,\n temperature: resolved.temperature,\n stopSequences: resolved.stopSequences as string[],\n frequencyPenalty: resolved.frequencyPenalty,\n presencePenalty: resolved.presencePenalty,\n experimental_telemetry: telemetryConfig,\n topP: resolved.topP,\n ...(typeof resolved.maxTokens === \"number\" ? { maxTokens: resolved.maxTokens } : {}),\n };\n\n const { text, usage } = await generateText(generateParams as Parameters<typeof generateText>[0]);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, usage);\n }\n\n return text;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = resolveRequestedModelName(params, getSmallModel(runtime));\n return generateTextWithModel(runtime, params, modelName, \"small\", ModelType.TEXT_SMALL);\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = resolveRequestedModelName(params, getLargeModel(runtime));\n return generateTextWithModel(runtime, params, modelName, \"large\", ModelType.TEXT_LARGE);\n}\n",
10
+ "import {\n createOpenAICompatible,\n type OpenAICompatibleProvider,\n type OpenAICompatibleProviderSettings,\n} from \"@ai-sdk/openai-compatible\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKeyOptional, getBaseURL } from \"../utils/config\";\n\nexport type ZaiProvider = OpenAICompatibleProvider;\nexport type ZaiFetch = NonNullable<OpenAICompatibleProviderSettings[\"fetch\"]>;\n\nexport function createZaiClient(\n runtime: IAgentRuntime,\n opts: { fetch?: ZaiFetch } = {}\n): ZaiProvider {\n const apiKey = getApiKeyOptional(runtime) ?? undefined;\n const baseURL = getBaseURL(runtime);\n\n return createOpenAICompatible({\n name: \"zai\",\n baseURL,\n ...(apiKey ? { apiKey } : {}),\n fetch: opts.fetch ?? (runtime.fetch as ZaiFetch | undefined),\n includeUsage: true,\n });\n}\n",
11
+ "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\n\ntype ModelUsage = {\n promptTokens?: number;\n completionTokens?: number;\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n};\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n usage: ModelUsage\n): void {\n const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;\n const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;\n const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;\n\n runtime.emitEvent(EventType.MODEL_USED, {\n runtime,\n source: \"zai\",\n type,\n tokens: {\n prompt: promptTokens,\n completion: completionTokens,\n total: totalTokens,\n },\n });\n}\n",
12
+ "import pluginDefault from \"./index\";\n\nexport * from \"./index\";\nexport default pluginDefault;\n"
13
+ ],
14
+ "mappings": "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",
15
+ "debugId": "35C088D35A18491464756E2164756E21",
16
+ "names": []
17
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-zai",
3
- "version": "2.0.3-beta.5",
3
+ "version": "2.0.3-beta.7",
4
4
  "type": "module",
5
5
  "main": "dist/node/index.node.js",
6
6
  "module": "dist/node/index.node.js",
@@ -56,7 +56,7 @@
56
56
  "sideEffects": false,
57
57
  "dependencies": {
58
58
  "@ai-sdk/openai-compatible": "^2.0.51",
59
- "@elizaos/core": "2.0.3-beta.5",
59
+ "@elizaos/core": "2.0.3-beta.7",
60
60
  "ai": "^6.0.23"
61
61
  },
62
62
  "devDependencies": {
@@ -163,7 +163,7 @@
163
163
  }
164
164
  },
165
165
  "peerDependencies": {
166
- "@elizaos/core": "2.0.3-beta.5"
166
+ "@elizaos/core": "2.0.3-beta.7"
167
167
  },
168
- "gitHead": "ff6157011c9459670021cc28a6797592a78b8817"
168
+ "gitHead": "61094f10458d11055c75b3dd0bae374e3f66bac5"
169
169
  }