@openclaw/deepinfra-provider 2026.9.6 → 2026.9.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.
- package/assets/icon.png +0 -0
- package/dist/.setup/openclaw.plugin-D7BLeoIa.mjs +272 -0
- package/dist/doctor-contract-api.js +186 -4
- package/dist/index.js +6 -19
- package/dist/media-models.js +2 -2
- package/dist/provider-models.js +4 -7
- package/dist/provider-static-catalog.js +2 -2
- package/dist/surface-model-catalogs.js +1 -1
- package/dist/video-generation-provider.js +11 -23
- package/package.json +4 -4
- package/dist/.setup/openclaw.plugin-BRaVociw.mjs +0 -213
package/assets/icon.png
CHANGED
|
Binary file
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
//#region extensions/deepinfra/openclaw.plugin.json
|
|
2
|
+
var openclaw_plugin_default = {
|
|
3
|
+
id: "deepinfra",
|
|
4
|
+
categories: ["models"],
|
|
5
|
+
capabilityCatalogEntry: "./capability-catalog.ts",
|
|
6
|
+
doctorContract: { "configRepair": true },
|
|
7
|
+
activation: { "onStartup": false },
|
|
8
|
+
enabledByDefault: true,
|
|
9
|
+
providers: ["deepinfra"],
|
|
10
|
+
providerCatalogEntry: "./provider-discovery.ts",
|
|
11
|
+
providerEndpoints: [{
|
|
12
|
+
"endpointClass": "deepinfra-native",
|
|
13
|
+
"hosts": ["api.deepinfra.com"]
|
|
14
|
+
}],
|
|
15
|
+
providerRequest: { "providers": { "deepinfra": { "family": "deepinfra" } } },
|
|
16
|
+
setup: { "providers": [{
|
|
17
|
+
"id": "deepinfra",
|
|
18
|
+
"authMethods": ["api-key"],
|
|
19
|
+
"envVars": ["DEEPINFRA_API_KEY"]
|
|
20
|
+
}] },
|
|
21
|
+
modelCatalog: {
|
|
22
|
+
"modelsDev": { "deepinfra": "deepinfra" },
|
|
23
|
+
"providers": { "deepinfra": {
|
|
24
|
+
"baseUrl": "https://api.deepinfra.com/v1/openai",
|
|
25
|
+
"api": "openai-completions",
|
|
26
|
+
"models": [
|
|
27
|
+
{
|
|
28
|
+
"id": "deepseek-ai/DeepSeek-V4-Flash",
|
|
29
|
+
"name": "DeepSeek V4 Flash",
|
|
30
|
+
"reasoning": true,
|
|
31
|
+
"input": ["text"],
|
|
32
|
+
"contextWindow": 1048576,
|
|
33
|
+
"maxTokens": 1048576,
|
|
34
|
+
"cost": {
|
|
35
|
+
"input": .09,
|
|
36
|
+
"output": .18,
|
|
37
|
+
"cacheRead": .018,
|
|
38
|
+
"cacheWrite": 0
|
|
39
|
+
},
|
|
40
|
+
"compat": {
|
|
41
|
+
"supportsUsageInStreaming": true,
|
|
42
|
+
"codeMode": "capable"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "deepseek-ai/DeepSeek-V4-Pro",
|
|
47
|
+
"name": "DeepSeek V4 Pro",
|
|
48
|
+
"reasoning": true,
|
|
49
|
+
"input": ["text"],
|
|
50
|
+
"contextWindow": 1048576,
|
|
51
|
+
"maxTokens": 1048576,
|
|
52
|
+
"cost": {
|
|
53
|
+
"input": 1.3,
|
|
54
|
+
"output": 2.6,
|
|
55
|
+
"cacheRead": .1,
|
|
56
|
+
"cacheWrite": 0
|
|
57
|
+
},
|
|
58
|
+
"compat": {
|
|
59
|
+
"supportsUsageInStreaming": true,
|
|
60
|
+
"codeMode": "capable"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "zai-org/GLM-5.2",
|
|
65
|
+
"name": "GLM-5.2",
|
|
66
|
+
"reasoning": true,
|
|
67
|
+
"input": ["text"],
|
|
68
|
+
"contextWindow": 1048576,
|
|
69
|
+
"maxTokens": 1048576,
|
|
70
|
+
"cost": {
|
|
71
|
+
"input": .4875,
|
|
72
|
+
"output": 1.56,
|
|
73
|
+
"cacheRead": .091000001625,
|
|
74
|
+
"cacheWrite": 0
|
|
75
|
+
},
|
|
76
|
+
"compat": {
|
|
77
|
+
"supportsUsageInStreaming": true,
|
|
78
|
+
"codeMode": "capable"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "stepfun-ai/Step-3.7-Flash",
|
|
83
|
+
"name": "Step 3.7 Flash",
|
|
84
|
+
"reasoning": true,
|
|
85
|
+
"input": ["text", "image"],
|
|
86
|
+
"contextWindow": 262144,
|
|
87
|
+
"maxTokens": 262144,
|
|
88
|
+
"cost": {
|
|
89
|
+
"input": .2,
|
|
90
|
+
"output": 1.15,
|
|
91
|
+
"cacheRead": .04,
|
|
92
|
+
"cacheWrite": 0
|
|
93
|
+
},
|
|
94
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "moonshotai/Kimi-K2.7-Code",
|
|
98
|
+
"name": "Kimi K2.7 Code",
|
|
99
|
+
"reasoning": true,
|
|
100
|
+
"input": ["text", "image"],
|
|
101
|
+
"contextWindow": 262144,
|
|
102
|
+
"maxTokens": 262144,
|
|
103
|
+
"cost": {
|
|
104
|
+
"input": .68,
|
|
105
|
+
"output": 3.4,
|
|
106
|
+
"cacheRead": .136,
|
|
107
|
+
"cacheWrite": 0
|
|
108
|
+
},
|
|
109
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "moonshotai/Kimi-K2.6",
|
|
113
|
+
"name": "Kimi K2.6",
|
|
114
|
+
"reasoning": true,
|
|
115
|
+
"input": ["text", "image"],
|
|
116
|
+
"contextWindow": 262144,
|
|
117
|
+
"maxTokens": 262144,
|
|
118
|
+
"cost": {
|
|
119
|
+
"input": .75,
|
|
120
|
+
"output": 3.5,
|
|
121
|
+
"cacheRead": .15,
|
|
122
|
+
"cacheWrite": 0
|
|
123
|
+
},
|
|
124
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"id": "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B",
|
|
128
|
+
"name": "NVIDIA Nemotron 3 Ultra 550B A55B",
|
|
129
|
+
"reasoning": true,
|
|
130
|
+
"input": ["text", "image"],
|
|
131
|
+
"contextWindow": 262144,
|
|
132
|
+
"maxTokens": 262144,
|
|
133
|
+
"cost": {
|
|
134
|
+
"input": .5,
|
|
135
|
+
"output": 2.2,
|
|
136
|
+
"cacheRead": .1,
|
|
137
|
+
"cacheWrite": 0
|
|
138
|
+
},
|
|
139
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B",
|
|
143
|
+
"name": "NVIDIA Nemotron 3 Super 120B A12B",
|
|
144
|
+
"reasoning": true,
|
|
145
|
+
"input": ["text"],
|
|
146
|
+
"contextWindow": 262144,
|
|
147
|
+
"maxTokens": 262144,
|
|
148
|
+
"cost": {
|
|
149
|
+
"input": .085,
|
|
150
|
+
"output": .4,
|
|
151
|
+
"cacheRead": 0,
|
|
152
|
+
"cacheWrite": 0
|
|
153
|
+
},
|
|
154
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"id": "deepseek-ai/DeepSeek-V3.2",
|
|
158
|
+
"name": "DeepSeek V3.2",
|
|
159
|
+
"status": "deprecated",
|
|
160
|
+
"replacedBy": "deepseek-ai/DeepSeek-V4-Pro",
|
|
161
|
+
"reasoning": false,
|
|
162
|
+
"input": ["text"],
|
|
163
|
+
"contextWindow": 163840,
|
|
164
|
+
"maxTokens": 163840,
|
|
165
|
+
"cost": {
|
|
166
|
+
"input": .26,
|
|
167
|
+
"output": .38,
|
|
168
|
+
"cacheRead": .13,
|
|
169
|
+
"cacheWrite": 0
|
|
170
|
+
},
|
|
171
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"id": "zai-org/GLM-5.1",
|
|
175
|
+
"name": "GLM-5.1",
|
|
176
|
+
"status": "deprecated",
|
|
177
|
+
"replacedBy": "zai-org/GLM-5.2",
|
|
178
|
+
"reasoning": true,
|
|
179
|
+
"input": ["text"],
|
|
180
|
+
"contextWindow": 202752,
|
|
181
|
+
"maxTokens": 202752,
|
|
182
|
+
"cost": {
|
|
183
|
+
"input": 1.05,
|
|
184
|
+
"output": 3.5,
|
|
185
|
+
"cacheRead": .205000005,
|
|
186
|
+
"cacheWrite": 0
|
|
187
|
+
},
|
|
188
|
+
"compat": {
|
|
189
|
+
"supportsUsageInStreaming": true,
|
|
190
|
+
"codeMode": "capable"
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "stepfun-ai/Step-3.5-Flash",
|
|
195
|
+
"name": "Step 3.5 Flash",
|
|
196
|
+
"status": "deprecated",
|
|
197
|
+
"replacedBy": "stepfun-ai/Step-3.7-Flash",
|
|
198
|
+
"reasoning": true,
|
|
199
|
+
"input": ["text"],
|
|
200
|
+
"contextWindow": 262144,
|
|
201
|
+
"maxTokens": 262144,
|
|
202
|
+
"cost": {
|
|
203
|
+
"input": .09,
|
|
204
|
+
"output": .3,
|
|
205
|
+
"cacheRead": .0199999998,
|
|
206
|
+
"cacheWrite": 0
|
|
207
|
+
},
|
|
208
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "moonshotai/Kimi-K2.5",
|
|
212
|
+
"name": "Kimi K2.5",
|
|
213
|
+
"status": "deprecated",
|
|
214
|
+
"replacedBy": "moonshotai/Kimi-K2.6",
|
|
215
|
+
"reasoning": true,
|
|
216
|
+
"input": ["text", "image"],
|
|
217
|
+
"contextWindow": 262144,
|
|
218
|
+
"maxTokens": 262144,
|
|
219
|
+
"cost": {
|
|
220
|
+
"input": .45,
|
|
221
|
+
"output": 2.25,
|
|
222
|
+
"cacheRead": .070000002,
|
|
223
|
+
"cacheWrite": 0
|
|
224
|
+
},
|
|
225
|
+
"compat": { "supportsUsageInStreaming": true }
|
|
226
|
+
}
|
|
227
|
+
]
|
|
228
|
+
} },
|
|
229
|
+
"discovery": { "deepinfra": "refreshable" }
|
|
230
|
+
},
|
|
231
|
+
modelPricing: { "providers": { "deepinfra": { "deepinfra": { "provider": "deepinfra" } } } },
|
|
232
|
+
providerAuthChoices: [{
|
|
233
|
+
"provider": "deepinfra",
|
|
234
|
+
"method": "api-key",
|
|
235
|
+
"choiceId": "deepinfra-api-key",
|
|
236
|
+
"appGuidedSecret": true,
|
|
237
|
+
"choiceLabel": "DeepInfra API key",
|
|
238
|
+
"choiceHint": "Unified API for open source models",
|
|
239
|
+
"groupId": "deepinfra",
|
|
240
|
+
"groupLabel": "DeepInfra",
|
|
241
|
+
"groupHint": "Unified API for open source models",
|
|
242
|
+
"optionKey": "deepinfraApiKey",
|
|
243
|
+
"cliFlag": "--deepinfra-api-key",
|
|
244
|
+
"cliOption": "--deepinfra-api-key <key>",
|
|
245
|
+
"cliDescription": "DeepInfra API key"
|
|
246
|
+
}],
|
|
247
|
+
contracts: {
|
|
248
|
+
"mediaUnderstandingProviders": ["deepinfra"],
|
|
249
|
+
"embeddingProviders": ["deepinfra"],
|
|
250
|
+
"imageGenerationProviders": ["deepinfra"],
|
|
251
|
+
"speechProviders": ["deepinfra"],
|
|
252
|
+
"videoGenerationProviders": ["deepinfra"]
|
|
253
|
+
},
|
|
254
|
+
mediaUnderstandingProviderMetadata: { "deepinfra": {
|
|
255
|
+
"capabilities": ["image", "audio"],
|
|
256
|
+
"defaultModels": {
|
|
257
|
+
"image": "moonshotai/Kimi-K2.5",
|
|
258
|
+
"audio": "openai/whisper-large-v3-turbo"
|
|
259
|
+
},
|
|
260
|
+
"autoPriority": {
|
|
261
|
+
"image": 45,
|
|
262
|
+
"audio": 45
|
|
263
|
+
}
|
|
264
|
+
} },
|
|
265
|
+
configSchema: {
|
|
266
|
+
"type": "object",
|
|
267
|
+
"additionalProperties": false,
|
|
268
|
+
"properties": {}
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
//#endregion
|
|
272
|
+
export { openclaw_plugin_default as t };
|
|
@@ -1,10 +1,192 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
|
|
1
|
+
import { t as openclaw_plugin_default } from "./.setup/openclaw.plugin-D7BLeoIa.mjs";
|
|
2
|
+
//#region \0rolldown/runtime.js
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __exportAll = (all, no_symbols) => {
|
|
8
|
+
let target = {};
|
|
9
|
+
for (var name in all) __defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true
|
|
12
|
+
});
|
|
13
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
14
|
+
return target;
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
18
|
+
key = keys[i];
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
20
|
+
get: ((k) => from[k]).bind(null, key),
|
|
21
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region packages/normalization-core/src/record-coerce.ts
|
|
29
|
+
/** Type guard for non-array object records at browser-safe boundaries. */
|
|
30
|
+
function isRecord(value) {
|
|
31
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
32
|
+
}
|
|
33
|
+
/** Returns a non-array record or null. */
|
|
34
|
+
function asNullableRecord(value) {
|
|
35
|
+
return isRecord(value) ? value : null;
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/config/channel-config-normalization.ts
|
|
39
|
+
/** Applies one channel-specific doctor migration to every object-shaped account. */
|
|
40
|
+
function normalizeChannelAccounts(params) {
|
|
41
|
+
const rawAccounts = asNullableRecord(params.entry.accounts);
|
|
42
|
+
if (!rawAccounts) return {
|
|
43
|
+
entry: params.entry,
|
|
44
|
+
changed: false
|
|
45
|
+
};
|
|
46
|
+
let changed = false;
|
|
47
|
+
const accounts = { ...rawAccounts };
|
|
48
|
+
for (const [accountId, value] of Object.entries(rawAccounts)) {
|
|
49
|
+
const account = asNullableRecord(value);
|
|
50
|
+
if (!account) continue;
|
|
51
|
+
const normalized = params.normalizeAccount({
|
|
52
|
+
account,
|
|
53
|
+
accountId,
|
|
54
|
+
pathPrefix: `${params.pathPrefix}.accounts.${accountId}`,
|
|
55
|
+
changes: params.changes
|
|
56
|
+
});
|
|
57
|
+
if (normalized.changed) {
|
|
58
|
+
accounts[accountId] = normalized.entry;
|
|
59
|
+
changed = true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return changed ? {
|
|
63
|
+
entry: {
|
|
64
|
+
...params.entry,
|
|
65
|
+
accounts
|
|
66
|
+
},
|
|
67
|
+
changed: true
|
|
68
|
+
} : {
|
|
69
|
+
entry: params.entry,
|
|
70
|
+
changed: false
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/** Applies the same channel-specific doctor migration at root and account scope. */
|
|
74
|
+
function normalizeChannelConfigEntries(params) {
|
|
75
|
+
const changes = params.changes ?? [];
|
|
76
|
+
const channels = params.cfg.channels;
|
|
77
|
+
const entry = asNullableRecord(channels?.[params.channelId]);
|
|
78
|
+
if (!entry) return {
|
|
79
|
+
config: params.cfg,
|
|
80
|
+
changes
|
|
81
|
+
};
|
|
82
|
+
const channelPath = `channels.${params.channelId}`;
|
|
83
|
+
const root = params.normalizeEntry({
|
|
84
|
+
entry,
|
|
85
|
+
pathPrefix: channelPath,
|
|
86
|
+
changes
|
|
87
|
+
});
|
|
88
|
+
const accounts = normalizeChannelAccounts({
|
|
89
|
+
entry: root.entry,
|
|
90
|
+
pathPrefix: channelPath,
|
|
91
|
+
changes,
|
|
92
|
+
normalizeAccount: (accountParams) => params.normalizeEntry({
|
|
93
|
+
entry: accountParams.account,
|
|
94
|
+
accountId: accountParams.accountId,
|
|
95
|
+
pathPrefix: accountParams.pathPrefix,
|
|
96
|
+
changes: accountParams.changes
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
if (!root.changed && !accounts.changed) return {
|
|
100
|
+
config: params.cfg,
|
|
101
|
+
changes
|
|
102
|
+
};
|
|
103
|
+
return {
|
|
104
|
+
config: {
|
|
105
|
+
...params.cfg,
|
|
106
|
+
channels: {
|
|
107
|
+
...channels,
|
|
108
|
+
[params.channelId]: accounts.entry
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
changes
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/plugin-sdk/legacy-webhook-listener-migration.ts
|
|
116
|
+
/** Preserve explicitly configured webhook listeners while moving ingress onto Gateway routes. */
|
|
117
|
+
function createLegacyWebhookListenerDoctorContract(params) {
|
|
118
|
+
const portKey = params.portKey ?? "webhookPort";
|
|
119
|
+
const hostKey = params.hostKey === void 0 ? "webhookHost" : params.hostKey;
|
|
120
|
+
const source = (entry) => params.webhookKey ? asNullableRecord(entry[params.webhookKey]) : entry;
|
|
121
|
+
const hasLegacy = (value) => {
|
|
122
|
+
const entry = asNullableRecord(value);
|
|
123
|
+
const listener = entry && source(entry);
|
|
124
|
+
return Boolean(listener && (Object.hasOwn(listener, portKey) || hostKey && Object.hasOwn(listener, hostKey)));
|
|
125
|
+
};
|
|
126
|
+
const prefix = `channels.${params.channelKey}`;
|
|
127
|
+
return {
|
|
128
|
+
legacyConfigRules: [{
|
|
129
|
+
path: ["channels", params.channelKey],
|
|
130
|
+
message: `${prefix} webhook listeners moved to Gateway routes. Run "openclaw doctor --fix" to preserve explicitly configured listener settings as legacyWebhook.`,
|
|
131
|
+
match: (value) => {
|
|
132
|
+
const accounts = asNullableRecord(asNullableRecord(value)?.accounts);
|
|
133
|
+
return hasLegacy(value) || Object.values(accounts ?? {}).some(hasLegacy);
|
|
134
|
+
}
|
|
135
|
+
}],
|
|
136
|
+
normalizeCompatibilityConfig: ({ cfg }) => {
|
|
137
|
+
const root = asNullableRecord(asNullableRecord(cfg.channels)?.[params.channelKey]);
|
|
138
|
+
const inherited = root && source(root);
|
|
139
|
+
const canonicalRoot = asNullableRecord(root?.legacyWebhook);
|
|
140
|
+
return normalizeChannelConfigEntries({
|
|
141
|
+
cfg,
|
|
142
|
+
channelId: params.channelKey,
|
|
143
|
+
normalizeEntry: ({ entry, accountId, pathPrefix, changes }) => {
|
|
144
|
+
const listener = source(entry);
|
|
145
|
+
if (!listener || !hasLegacy(entry)) return {
|
|
146
|
+
entry,
|
|
147
|
+
changed: false
|
|
148
|
+
};
|
|
149
|
+
const next = { ...entry };
|
|
150
|
+
const port = Object.hasOwn(listener, portKey) ? listener[portKey] : (accountId ? canonicalRoot?.port ?? inherited?.[portKey] : void 0) ?? params.defaultPort;
|
|
151
|
+
const inheritedHost = accountId ? canonicalRoot ? canonicalRoot.host : (hostKey ? inherited?.[hostKey] : void 0) ?? params.defaultHost : params.defaultHost;
|
|
152
|
+
const host = hostKey ? listener[hostKey] ?? inheritedHost : inheritedHost;
|
|
153
|
+
const legacyPath = [pathPrefix, params.webhookKey].filter(Boolean).join(".");
|
|
154
|
+
if (Object.hasOwn(entry, "legacyWebhook")) changes.push(`Removed ${legacyPath} legacy listener keys; ${pathPrefix}.legacyWebhook is already configured.`);
|
|
155
|
+
else if (accountId && root?.legacyWebhook === false) changes.push(`Removed ${legacyPath} legacy listener keys; ${prefix}.legacyWebhook: false keeps this account's inherited listener disabled.`);
|
|
156
|
+
else {
|
|
157
|
+
next.legacyWebhook = {
|
|
158
|
+
port,
|
|
159
|
+
...host !== void 0 ? { host } : {}
|
|
160
|
+
};
|
|
161
|
+
changes.push(`Moved ${legacyPath} listener settings to ${pathPrefix}.legacyWebhook. Point the external callback or reverse proxy at the Gateway port and webhook path, verify delivery, then set legacyWebhook: false to disable legacy forwarding.`);
|
|
162
|
+
}
|
|
163
|
+
const updated = params.webhookKey ? { ...listener } : next;
|
|
164
|
+
delete updated[portKey];
|
|
165
|
+
if (hostKey) delete updated[hostKey];
|
|
166
|
+
if (params.webhookKey) {
|
|
167
|
+
if (Object.keys(updated).length) next[params.webhookKey] = updated;
|
|
168
|
+
else delete next[params.webhookKey];
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
entry: next,
|
|
172
|
+
changed: true
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//#endregion
|
|
180
|
+
//#region \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
|
|
181
|
+
var runtime_doctor_migrations_exports = /* @__PURE__ */ __exportAll({ createLegacyWebhookListenerDoctorContract: () => createLegacyWebhookListenerDoctorContract });
|
|
182
|
+
import * as import_openclaw_plugin_sdk_runtime_doctor_migrations from "openclaw/plugin-sdk/runtime-doctor-migrations";
|
|
183
|
+
__reExport(runtime_doctor_migrations_exports, import_openclaw_plugin_sdk_runtime_doctor_migrations);
|
|
184
|
+
//#endregion
|
|
3
185
|
//#region extensions/deepinfra/doctor-contract-api.ts
|
|
4
186
|
const PROVIDER_PATH = "models.providers.deepinfra";
|
|
5
187
|
const NATIVE_INFERENCE_PATH = "/v1/inference";
|
|
6
188
|
const OPENAI_COMPAT_PATH = "/v1/openai";
|
|
7
|
-
const CANONICAL_BASE_URL = modelCatalog.providers.deepinfra.baseUrl;
|
|
189
|
+
const CANONICAL_BASE_URL = openclaw_plugin_default.modelCatalog.providers.deepinfra.baseUrl;
|
|
8
190
|
const FIX_HINT = `Run "openclaw doctor --fix" (api.deepinfra.com endpoints migrate automatically; custom hosts must set ${PROVIDER_PATH}.baseUrl to an OpenAI-compatible videos endpoint manually).`;
|
|
9
191
|
const legacyConfigRules = [{
|
|
10
192
|
path: [
|
|
@@ -45,7 +227,7 @@ function normalizeCompatibilityConfig({ cfg }) {
|
|
|
45
227
|
changes: []
|
|
46
228
|
};
|
|
47
229
|
const changes = [];
|
|
48
|
-
const providerRecord = asObjectRecord(provider) ?? {};
|
|
230
|
+
const providerRecord = (0, runtime_doctor_migrations_exports.asObjectRecord)(provider) ?? {};
|
|
49
231
|
const { nativeBaseUrl, ...providerWithoutLegacyNativeBaseUrl } = providerRecord;
|
|
50
232
|
const next = {
|
|
51
233
|
...providerWithoutLegacyNativeBaseUrl,
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createDeepInfraAnthropicCacheWrapper } from "./cache-wrapper.js";
|
|
2
|
+
import { t as openclaw_plugin_default } from "./.setup/openclaw.plugin-D7BLeoIa.mjs";
|
|
2
3
|
import { buildDeepInfraEmbeddingAdapter } from "./embedding-adapter.js";
|
|
3
4
|
import { buildDeepInfraImageGenerationProvider } from "./image-generation-provider.js";
|
|
4
5
|
import { buildDeepInfraMediaUnderstandingProvider } from "./media-understanding-provider.js";
|
|
@@ -18,33 +19,19 @@ var deepinfra_default = defineSingleProviderPluginEntry({
|
|
|
18
19
|
id: PROVIDER_ID,
|
|
19
20
|
name: "DeepInfra Provider",
|
|
20
21
|
description: "Bundled DeepInfra provider plugin",
|
|
22
|
+
manifest: openclaw_plugin_default,
|
|
21
23
|
provider: {
|
|
22
24
|
label: "DeepInfra",
|
|
23
25
|
docsPath: "/providers/deepinfra",
|
|
24
|
-
|
|
25
|
-
methodId: "api-key",
|
|
26
|
-
label: "DeepInfra API key",
|
|
27
|
-
hint: "Unified API for open source models",
|
|
28
|
-
optionKey: "deepinfraApiKey",
|
|
29
|
-
flagName: "--deepinfra-api-key",
|
|
30
|
-
envVar: "DEEPINFRA_API_KEY",
|
|
31
|
-
promptMessage: "Enter DeepInfra API key",
|
|
26
|
+
manifestAuth: {
|
|
32
27
|
noteTitle: "DeepInfra",
|
|
33
28
|
noteMessage: ["DeepInfra provides an OpenAI-compatible API for open source and frontier models.", "Get your API key at: https://deepinfra.com/dash/api_keys"].join("\n"),
|
|
34
29
|
defaultModel: DEEPINFRA_DEFAULT_MODEL_REF,
|
|
35
|
-
applyConfig:
|
|
36
|
-
|
|
37
|
-
choiceId: "deepinfra-api-key",
|
|
38
|
-
choiceLabel: "DeepInfra API key",
|
|
39
|
-
choiceHint: "Unified API for open source models",
|
|
40
|
-
groupId: PROVIDER_ID,
|
|
41
|
-
groupLabel: "DeepInfra",
|
|
42
|
-
groupHint: "Unified API for open source models"
|
|
43
|
-
}
|
|
44
|
-
}],
|
|
30
|
+
applyConfig: applyDeepInfraConfig
|
|
31
|
+
},
|
|
45
32
|
catalog: {
|
|
46
33
|
order: "simple",
|
|
47
|
-
run:
|
|
34
|
+
run: buildDeepInfraApiKeyCatalog,
|
|
48
35
|
staticRun: async () => ({ provider: buildStaticDeepInfraProvider() })
|
|
49
36
|
},
|
|
50
37
|
normalizeConfig: ({ providerConfig }) => providerConfig,
|
package/dist/media-models.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as openclaw_plugin_default } from "./.setup/openclaw.plugin-D7BLeoIa.mjs";
|
|
2
2
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
//#region extensions/deepinfra/media-models.ts
|
|
4
|
-
const DEEPINFRA_BASE_URL = modelCatalog.providers.deepinfra.baseUrl;
|
|
4
|
+
const DEEPINFRA_BASE_URL = openclaw_plugin_default.modelCatalog.providers.deepinfra.baseUrl;
|
|
5
5
|
const DEFAULT_DEEPINFRA_IMAGE_SIZE = "1024x1024";
|
|
6
6
|
const DEFAULT_DEEPINFRA_TTS_VOICE = "af_bella";
|
|
7
7
|
const DEEPINFRA_VIDEO_ASPECT_RATIOS = [
|
package/dist/provider-models.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as openclaw_plugin_default } from "./.setup/openclaw.plugin-D7BLeoIa.mjs";
|
|
2
2
|
import { DEEPINFRA_BASE_URL, DEEPINFRA_TTS_FALLBACK_CATALOG } from "./media-models.js";
|
|
3
3
|
import { DEEPINFRA_MODEL_CATALOG, buildDeepInfraModelDefinition } from "./provider-static-catalog.js";
|
|
4
4
|
import { parseDeepInfraPricingCatalog } from "./pricing-api.js";
|
|
@@ -149,14 +149,11 @@ const STATIC_NON_CHAT_FALLBACK = [
|
|
|
149
149
|
contextWindow: 8192
|
|
150
150
|
}
|
|
151
151
|
];
|
|
152
|
-
function
|
|
153
|
-
const catalog = bucketBySurface([...(modelCatalog.providers.deepinfra.models ?? []).map(manifestChatEntryToSurfaceModel), ...STATIC_NON_CHAT_FALLBACK]);
|
|
152
|
+
function getDeepInfraSurfaceFallbackCatalog() {
|
|
153
|
+
const catalog = bucketBySurface([...(openclaw_plugin_default.modelCatalog.providers.deepinfra.models ?? []).map(manifestChatEntryToSurfaceModel), ...STATIC_NON_CHAT_FALLBACK]);
|
|
154
154
|
catalog.live = false;
|
|
155
155
|
return catalog;
|
|
156
156
|
}
|
|
157
|
-
function getDeepInfraSurfaceFallbackCatalog() {
|
|
158
|
-
return manifestFallbackCatalog();
|
|
159
|
-
}
|
|
160
157
|
function chatSurfaceModelToModelDefinition(model) {
|
|
161
158
|
const manifestModel = DEEPINFRA_MODEL_CATALOG.find((entry) => entry.id === model.id);
|
|
162
159
|
const input = model.tags.includes("vlm") ? ["text", "image"] : ["text"];
|
|
@@ -185,7 +182,7 @@ async function discoverDeepInfraSurfaces(options) {
|
|
|
185
182
|
} catch (error) {
|
|
186
183
|
log.warn(`Model metadata discovery unavailable: ${String(error)}`);
|
|
187
184
|
}
|
|
188
|
-
return
|
|
185
|
+
return getDeepInfraSurfaceFallbackCatalog();
|
|
189
186
|
}
|
|
190
187
|
async function loadDeepInfraSurfaces() {
|
|
191
188
|
return getCachedLiveCatalogValue({
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as openclaw_plugin_default } from "./.setup/openclaw.plugin-D7BLeoIa.mjs";
|
|
2
2
|
import { DEEPINFRA_BASE_URL } from "./media-models.js";
|
|
3
3
|
import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-model-metadata";
|
|
4
4
|
//#region extensions/deepinfra/provider-static-catalog.ts
|
|
5
5
|
const DEEPINFRA_MANIFEST_PROVIDER = buildManifestModelProviderConfig({
|
|
6
6
|
providerId: "deepinfra",
|
|
7
|
-
catalog: modelCatalog.providers.deepinfra
|
|
7
|
+
catalog: openclaw_plugin_default.modelCatalog.providers.deepinfra
|
|
8
8
|
});
|
|
9
9
|
const DEEPINFRA_DEFAULT_MODEL_REF = `deepinfra/deepseek-ai/DeepSeek-V4-Flash`;
|
|
10
10
|
const DEEPINFRA_MODEL_CATALOG = DEEPINFRA_MANIFEST_PROVIDER.models;
|
|
@@ -67,4 +67,4 @@ async function resolveDeepInfraVideoModelCapabilities(ctx) {
|
|
|
67
67
|
return catalog.videoGen.find((m) => m.id === normalized) ?? catalog.videoGen.find((m) => m.id === rawId) ? buildDeepInfraVideoModelCapabilities() : void 0;
|
|
68
68
|
}
|
|
69
69
|
//#endregion
|
|
70
|
-
export { listDeepInfraImageGenCatalog, listDeepInfraVideoGenCatalog, resolveDeepInfraVideoModelCapabilities };
|
|
70
|
+
export { buildDeepInfraVideoModelCapabilities, listDeepInfraImageGenCatalog, listDeepInfraVideoGenCatalog, resolveDeepInfraVideoModelCapabilities };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DEEPINFRA_BASE_URL,
|
|
2
|
-
import { resolveDeepInfraVideoModelCapabilities } from "./surface-model-catalogs.js";
|
|
1
|
+
import { DEEPINFRA_BASE_URL, DEEPINFRA_VIDEO_FALLBACK_MODELS, normalizeDeepInfraBaseUrl, normalizeDeepInfraModelRef } from "./media-models.js";
|
|
2
|
+
import { buildDeepInfraVideoModelCapabilities, resolveDeepInfraVideoModelCapabilities } from "./surface-model-catalogs.js";
|
|
3
3
|
import { asSafeIntegerInRange, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { isProviderApiKeyConfigured } from "openclaw/plugin-sdk/provider-auth";
|
|
5
5
|
import { resolveGeneratedMediaMaxBytes } from "openclaw/plugin-sdk/media-generation-runtime";
|
|
@@ -39,12 +39,6 @@ function resolveDurationSeconds(value) {
|
|
|
39
39
|
if (typeof value !== "number" || !Number.isFinite(value)) return;
|
|
40
40
|
return value <= 6.5 ? 5 : 8;
|
|
41
41
|
}
|
|
42
|
-
function resolveSeed(value) {
|
|
43
|
-
return asSafeIntegerInRange(value, {
|
|
44
|
-
min: 0,
|
|
45
|
-
max: 4294967295
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
42
|
function buildDeepInfraVideoBody(req, model) {
|
|
49
43
|
const options = req.providerOptions ?? {};
|
|
50
44
|
const body = {
|
|
@@ -55,7 +49,10 @@ function buildDeepInfraVideoBody(req, model) {
|
|
|
55
49
|
if (aspectRatio) body.aspect_ratio = aspectRatio;
|
|
56
50
|
const duration = resolveDurationSeconds(req.durationSeconds);
|
|
57
51
|
if (duration) body.seconds = duration;
|
|
58
|
-
const seed =
|
|
52
|
+
const seed = asSafeIntegerInRange(options.seed, {
|
|
53
|
+
min: 0,
|
|
54
|
+
max: 4294967295
|
|
55
|
+
});
|
|
59
56
|
if (seed != null) body.seed = seed;
|
|
60
57
|
const negativePrompt = normalizeOptionalString(options.negative_prompt) ?? normalizeOptionalString(options.negativePrompt);
|
|
61
58
|
if (negativePrompt) body.negative_prompt = negativePrompt;
|
|
@@ -90,6 +87,7 @@ function resolveDeepInfraVideoBaseUrl(req) {
|
|
|
90
87
|
function buildDeepInfraVideoGenerationProvider(options) {
|
|
91
88
|
const ids = options?.videoGenModels && options.videoGenModels.length > 0 ? options.videoGenModels.map((model) => model.id) : [...DEEPINFRA_VIDEO_FALLBACK_MODELS];
|
|
92
89
|
const defaultModel = ids[0] ?? DEEPINFRA_VIDEO_FALLBACK_MODELS[0];
|
|
90
|
+
const { providerOptions, ...capabilities } = buildDeepInfraVideoModelCapabilities();
|
|
93
91
|
return {
|
|
94
92
|
id: "deepinfra",
|
|
95
93
|
label: "DeepInfra",
|
|
@@ -101,21 +99,11 @@ function buildDeepInfraVideoGenerationProvider(options) {
|
|
|
101
99
|
...ctx
|
|
102
100
|
}),
|
|
103
101
|
capabilities: {
|
|
102
|
+
...capabilities,
|
|
104
103
|
generate: {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
supportsAspectRatio: true,
|
|
109
|
-
aspectRatios: [...DEEPINFRA_VIDEO_ASPECT_RATIOS],
|
|
110
|
-
providerOptions: {
|
|
111
|
-
seed: "number",
|
|
112
|
-
negative_prompt: "string",
|
|
113
|
-
negativePrompt: "string",
|
|
114
|
-
style: "string"
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
-
imageToVideo: { enabled: false },
|
|
118
|
-
videoToVideo: { enabled: false }
|
|
104
|
+
...capabilities.generate,
|
|
105
|
+
providerOptions
|
|
106
|
+
}
|
|
119
107
|
},
|
|
120
108
|
async generateVideo(req) {
|
|
121
109
|
if ((req.inputImages?.length ?? 0) > 0) throw new Error("DeepInfra video generation currently supports text-to-video only.");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/deepinfra-provider",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.7",
|
|
4
4
|
"description": "OpenClaw DeepInfra provider plugin.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"minHostVersion": ">=2026.6.8"
|
|
19
19
|
},
|
|
20
20
|
"compat": {
|
|
21
|
-
"pluginApi": ">=2026.9.
|
|
21
|
+
"pluginApi": ">=2026.9.7"
|
|
22
22
|
},
|
|
23
23
|
"build": {
|
|
24
|
-
"openclawVersion": "2026.9.
|
|
24
|
+
"openclawVersion": "2026.9.7",
|
|
25
25
|
"bundledDist": false
|
|
26
26
|
},
|
|
27
27
|
"release": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"assets/activity.svg"
|
|
41
41
|
],
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"openclaw": ">=2026.9.
|
|
43
|
+
"openclaw": ">=2026.9.7"
|
|
44
44
|
},
|
|
45
45
|
"peerDependenciesMeta": {
|
|
46
46
|
"openclaw": {
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
//#region extensions/deepinfra/openclaw.plugin.json
|
|
2
|
-
var modelCatalog = {
|
|
3
|
-
"modelsDev": { "deepinfra": "deepinfra" },
|
|
4
|
-
"providers": { "deepinfra": {
|
|
5
|
-
"baseUrl": "https://api.deepinfra.com/v1/openai",
|
|
6
|
-
"api": "openai-completions",
|
|
7
|
-
"models": [
|
|
8
|
-
{
|
|
9
|
-
"id": "deepseek-ai/DeepSeek-V4-Flash",
|
|
10
|
-
"name": "DeepSeek V4 Flash",
|
|
11
|
-
"reasoning": true,
|
|
12
|
-
"input": ["text"],
|
|
13
|
-
"contextWindow": 1048576,
|
|
14
|
-
"maxTokens": 1048576,
|
|
15
|
-
"cost": {
|
|
16
|
-
"input": .09,
|
|
17
|
-
"output": .18,
|
|
18
|
-
"cacheRead": .018,
|
|
19
|
-
"cacheWrite": 0
|
|
20
|
-
},
|
|
21
|
-
"compat": {
|
|
22
|
-
"supportsUsageInStreaming": true,
|
|
23
|
-
"codeMode": "capable"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"id": "deepseek-ai/DeepSeek-V4-Pro",
|
|
28
|
-
"name": "DeepSeek V4 Pro",
|
|
29
|
-
"reasoning": true,
|
|
30
|
-
"input": ["text"],
|
|
31
|
-
"contextWindow": 1048576,
|
|
32
|
-
"maxTokens": 1048576,
|
|
33
|
-
"cost": {
|
|
34
|
-
"input": 1.3,
|
|
35
|
-
"output": 2.6,
|
|
36
|
-
"cacheRead": .1,
|
|
37
|
-
"cacheWrite": 0
|
|
38
|
-
},
|
|
39
|
-
"compat": {
|
|
40
|
-
"supportsUsageInStreaming": true,
|
|
41
|
-
"codeMode": "capable"
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"id": "zai-org/GLM-5.2",
|
|
46
|
-
"name": "GLM-5.2",
|
|
47
|
-
"reasoning": true,
|
|
48
|
-
"input": ["text"],
|
|
49
|
-
"contextWindow": 1048576,
|
|
50
|
-
"maxTokens": 1048576,
|
|
51
|
-
"cost": {
|
|
52
|
-
"input": .4875,
|
|
53
|
-
"output": 1.56,
|
|
54
|
-
"cacheRead": .091000001625,
|
|
55
|
-
"cacheWrite": 0
|
|
56
|
-
},
|
|
57
|
-
"compat": {
|
|
58
|
-
"supportsUsageInStreaming": true,
|
|
59
|
-
"codeMode": "capable"
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"id": "stepfun-ai/Step-3.7-Flash",
|
|
64
|
-
"name": "Step 3.7 Flash",
|
|
65
|
-
"reasoning": true,
|
|
66
|
-
"input": ["text", "image"],
|
|
67
|
-
"contextWindow": 262144,
|
|
68
|
-
"maxTokens": 262144,
|
|
69
|
-
"cost": {
|
|
70
|
-
"input": .2,
|
|
71
|
-
"output": 1.15,
|
|
72
|
-
"cacheRead": .04,
|
|
73
|
-
"cacheWrite": 0
|
|
74
|
-
},
|
|
75
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"id": "moonshotai/Kimi-K2.7-Code",
|
|
79
|
-
"name": "Kimi K2.7 Code",
|
|
80
|
-
"reasoning": true,
|
|
81
|
-
"input": ["text", "image"],
|
|
82
|
-
"contextWindow": 262144,
|
|
83
|
-
"maxTokens": 262144,
|
|
84
|
-
"cost": {
|
|
85
|
-
"input": .68,
|
|
86
|
-
"output": 3.4,
|
|
87
|
-
"cacheRead": .136,
|
|
88
|
-
"cacheWrite": 0
|
|
89
|
-
},
|
|
90
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"id": "moonshotai/Kimi-K2.6",
|
|
94
|
-
"name": "Kimi K2.6",
|
|
95
|
-
"reasoning": true,
|
|
96
|
-
"input": ["text", "image"],
|
|
97
|
-
"contextWindow": 262144,
|
|
98
|
-
"maxTokens": 262144,
|
|
99
|
-
"cost": {
|
|
100
|
-
"input": .75,
|
|
101
|
-
"output": 3.5,
|
|
102
|
-
"cacheRead": .15,
|
|
103
|
-
"cacheWrite": 0
|
|
104
|
-
},
|
|
105
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"id": "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B",
|
|
109
|
-
"name": "NVIDIA Nemotron 3 Ultra 550B A55B",
|
|
110
|
-
"reasoning": true,
|
|
111
|
-
"input": ["text", "image"],
|
|
112
|
-
"contextWindow": 262144,
|
|
113
|
-
"maxTokens": 262144,
|
|
114
|
-
"cost": {
|
|
115
|
-
"input": .5,
|
|
116
|
-
"output": 2.2,
|
|
117
|
-
"cacheRead": .1,
|
|
118
|
-
"cacheWrite": 0
|
|
119
|
-
},
|
|
120
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
"id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B",
|
|
124
|
-
"name": "NVIDIA Nemotron 3 Super 120B A12B",
|
|
125
|
-
"reasoning": true,
|
|
126
|
-
"input": ["text"],
|
|
127
|
-
"contextWindow": 262144,
|
|
128
|
-
"maxTokens": 262144,
|
|
129
|
-
"cost": {
|
|
130
|
-
"input": .085,
|
|
131
|
-
"output": .4,
|
|
132
|
-
"cacheRead": 0,
|
|
133
|
-
"cacheWrite": 0
|
|
134
|
-
},
|
|
135
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
"id": "deepseek-ai/DeepSeek-V3.2",
|
|
139
|
-
"name": "DeepSeek V3.2",
|
|
140
|
-
"status": "deprecated",
|
|
141
|
-
"replacedBy": "deepseek-ai/DeepSeek-V4-Pro",
|
|
142
|
-
"reasoning": false,
|
|
143
|
-
"input": ["text"],
|
|
144
|
-
"contextWindow": 163840,
|
|
145
|
-
"maxTokens": 163840,
|
|
146
|
-
"cost": {
|
|
147
|
-
"input": .26,
|
|
148
|
-
"output": .38,
|
|
149
|
-
"cacheRead": .13,
|
|
150
|
-
"cacheWrite": 0
|
|
151
|
-
},
|
|
152
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
"id": "zai-org/GLM-5.1",
|
|
156
|
-
"name": "GLM-5.1",
|
|
157
|
-
"status": "deprecated",
|
|
158
|
-
"replacedBy": "zai-org/GLM-5.2",
|
|
159
|
-
"reasoning": true,
|
|
160
|
-
"input": ["text"],
|
|
161
|
-
"contextWindow": 202752,
|
|
162
|
-
"maxTokens": 202752,
|
|
163
|
-
"cost": {
|
|
164
|
-
"input": 1.05,
|
|
165
|
-
"output": 3.5,
|
|
166
|
-
"cacheRead": .205000005,
|
|
167
|
-
"cacheWrite": 0
|
|
168
|
-
},
|
|
169
|
-
"compat": {
|
|
170
|
-
"supportsUsageInStreaming": true,
|
|
171
|
-
"codeMode": "capable"
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
"id": "stepfun-ai/Step-3.5-Flash",
|
|
176
|
-
"name": "Step 3.5 Flash",
|
|
177
|
-
"status": "deprecated",
|
|
178
|
-
"replacedBy": "stepfun-ai/Step-3.7-Flash",
|
|
179
|
-
"reasoning": true,
|
|
180
|
-
"input": ["text"],
|
|
181
|
-
"contextWindow": 262144,
|
|
182
|
-
"maxTokens": 262144,
|
|
183
|
-
"cost": {
|
|
184
|
-
"input": .09,
|
|
185
|
-
"output": .3,
|
|
186
|
-
"cacheRead": .0199999998,
|
|
187
|
-
"cacheWrite": 0
|
|
188
|
-
},
|
|
189
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
"id": "moonshotai/Kimi-K2.5",
|
|
193
|
-
"name": "Kimi K2.5",
|
|
194
|
-
"status": "deprecated",
|
|
195
|
-
"replacedBy": "moonshotai/Kimi-K2.6",
|
|
196
|
-
"reasoning": true,
|
|
197
|
-
"input": ["text", "image"],
|
|
198
|
-
"contextWindow": 262144,
|
|
199
|
-
"maxTokens": 262144,
|
|
200
|
-
"cost": {
|
|
201
|
-
"input": .45,
|
|
202
|
-
"output": 2.25,
|
|
203
|
-
"cacheRead": .070000002,
|
|
204
|
-
"cacheWrite": 0
|
|
205
|
-
},
|
|
206
|
-
"compat": { "supportsUsageInStreaming": true }
|
|
207
|
-
}
|
|
208
|
-
]
|
|
209
|
-
} },
|
|
210
|
-
"discovery": { "deepinfra": "refreshable" }
|
|
211
|
-
};
|
|
212
|
-
//#endregion
|
|
213
|
-
export { modelCatalog as t };
|