@openclaw/deepinfra-provider 2026.7.2-beta.5 → 2026.7.33

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.
@@ -4,12 +4,21 @@
4
4
  "onStartup": false
5
5
  },
6
6
  "enabledByDefault": true,
7
- "providers": ["deepinfra"],
8
- "providerCatalogEntry": "./provider-discovery.ts",
7
+ "providers": [
8
+ "deepinfra"
9
+ ],
10
+ "providerCatalogEntry": "./dist/provider-discovery.js",
11
+ "providerAuthEnvVars": {
12
+ "deepinfra": [
13
+ "DEEPINFRA_API_KEY"
14
+ ]
15
+ },
9
16
  "providerEndpoints": [
10
17
  {
11
18
  "endpointClass": "deepinfra-native",
12
- "hosts": ["api.deepinfra.com"]
19
+ "hosts": [
20
+ "api.deepinfra.com"
21
+ ]
13
22
  }
14
23
  ],
15
24
  "providerRequest": {
@@ -23,8 +32,12 @@
23
32
  "providers": [
24
33
  {
25
34
  "id": "deepinfra",
26
- "authMethods": ["api-key"],
27
- "envVars": ["DEEPINFRA_API_KEY"]
35
+ "authMethods": [
36
+ "api-key"
37
+ ],
38
+ "envVars": [
39
+ "DEEPINFRA_API_KEY"
40
+ ]
28
41
  }
29
42
  ]
30
43
  },
@@ -38,30 +51,15 @@
38
51
  "id": "deepseek-ai/DeepSeek-V4-Flash",
39
52
  "name": "DeepSeek V4 Flash",
40
53
  "reasoning": true,
41
- "input": ["text"],
42
- "contextWindow": 1048576,
43
- "maxTokens": 1048576,
44
- "cost": {
45
- "input": 0.09,
46
- "output": 0.18,
47
- "cacheRead": 0.018,
48
- "cacheWrite": 0
49
- },
50
- "compat": {
51
- "supportsUsageInStreaming": true
52
- }
53
- },
54
- {
55
- "id": "deepseek-ai/DeepSeek-V4-Pro",
56
- "name": "DeepSeek V4 Pro",
57
- "reasoning": true,
58
- "input": ["text"],
54
+ "input": [
55
+ "text"
56
+ ],
59
57
  "contextWindow": 1048576,
60
58
  "maxTokens": 1048576,
61
59
  "cost": {
62
- "input": 1.3,
63
- "output": 2.6,
64
- "cacheRead": 0.1,
60
+ "input": 0.1,
61
+ "output": 0.2,
62
+ "cacheRead": 0.02,
65
63
  "cacheWrite": 0
66
64
  },
67
65
  "compat": {
@@ -69,16 +67,18 @@
69
67
  }
70
68
  },
71
69
  {
72
- "id": "zai-org/GLM-5.2",
73
- "name": "GLM-5.2",
74
- "reasoning": true,
75
- "input": ["text"],
76
- "contextWindow": 1048576,
77
- "maxTokens": 1048576,
70
+ "id": "deepseek-ai/DeepSeek-V3.2",
71
+ "name": "DeepSeek V3.2",
72
+ "reasoning": false,
73
+ "input": [
74
+ "text"
75
+ ],
76
+ "contextWindow": 163840,
77
+ "maxTokens": 163840,
78
78
  "cost": {
79
- "input": 0.93,
80
- "output": 3,
81
- "cacheRead": 0.18,
79
+ "input": 0.26,
80
+ "output": 0.38,
81
+ "cacheRead": 0.13,
82
82
  "cacheWrite": 0
83
83
  },
84
84
  "compat": {
@@ -86,16 +86,18 @@
86
86
  }
87
87
  },
88
88
  {
89
- "id": "stepfun-ai/Step-3.7-Flash",
90
- "name": "Step 3.7 Flash",
89
+ "id": "zai-org/GLM-5.1",
90
+ "name": "GLM-5.1",
91
91
  "reasoning": true,
92
- "input": ["text", "image"],
93
- "contextWindow": 262144,
94
- "maxTokens": 262144,
92
+ "input": [
93
+ "text"
94
+ ],
95
+ "contextWindow": 202752,
96
+ "maxTokens": 202752,
95
97
  "cost": {
96
- "input": 0.2,
97
- "output": 1.15,
98
- "cacheRead": 0.04,
98
+ "input": 1.05,
99
+ "output": 3.5,
100
+ "cacheRead": 0.205000005,
99
101
  "cacheWrite": 0
100
102
  },
101
103
  "compat": {
@@ -103,16 +105,18 @@
103
105
  }
104
106
  },
105
107
  {
106
- "id": "moonshotai/Kimi-K2.7-Code",
107
- "name": "Kimi K2.7 Code",
108
- "reasoning": true,
109
- "input": ["text", "image"],
108
+ "id": "stepfun-ai/Step-3.5-Flash",
109
+ "name": "Step 3.5 Flash",
110
+ "reasoning": false,
111
+ "input": [
112
+ "text"
113
+ ],
110
114
  "contextWindow": 262144,
111
115
  "maxTokens": 262144,
112
116
  "cost": {
113
- "input": 0.74,
114
- "output": 3.5,
115
- "cacheRead": 0.15,
117
+ "input": 0.1,
118
+ "output": 0.3,
119
+ "cacheRead": 0.02,
116
120
  "cacheWrite": 0
117
121
  },
118
122
  "compat": {
@@ -120,16 +124,18 @@
120
124
  }
121
125
  },
122
126
  {
123
- "id": "moonshotai/Kimi-K2.6",
124
- "name": "Kimi K2.6",
127
+ "id": "MiniMaxAI/MiniMax-M2.5",
128
+ "name": "MiniMax M2.5",
125
129
  "reasoning": true,
126
- "input": ["text", "image"],
127
- "contextWindow": 262144,
128
- "maxTokens": 262144,
130
+ "input": [
131
+ "text"
132
+ ],
133
+ "contextWindow": 196608,
134
+ "maxTokens": 196608,
129
135
  "cost": {
130
- "input": 0.75,
131
- "output": 3.5,
132
- "cacheRead": 0.15,
136
+ "input": 0.15,
137
+ "output": 1.15,
138
+ "cacheRead": 0.03,
133
139
  "cacheWrite": 0
134
140
  },
135
141
  "compat": {
@@ -137,16 +143,19 @@
137
143
  }
138
144
  },
139
145
  {
140
- "id": "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B",
141
- "name": "NVIDIA Nemotron 3 Ultra 550B A55B",
146
+ "id": "moonshotai/Kimi-K2.5",
147
+ "name": "Kimi K2.5",
142
148
  "reasoning": true,
143
- "input": ["text", "image"],
149
+ "input": [
150
+ "text",
151
+ "image"
152
+ ],
144
153
  "contextWindow": 262144,
145
154
  "maxTokens": 262144,
146
155
  "cost": {
147
- "input": 0.5,
148
- "output": 2.2,
149
- "cacheRead": 0.1,
156
+ "input": 0.45,
157
+ "output": 2.25,
158
+ "cacheRead": 0.070000002,
150
159
  "cacheWrite": 0
151
160
  },
152
161
  "compat": {
@@ -157,12 +166,14 @@
157
166
  "id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B",
158
167
  "name": "NVIDIA Nemotron 3 Super 120B A12B",
159
168
  "reasoning": true,
160
- "input": ["text"],
169
+ "input": [
170
+ "text"
171
+ ],
161
172
  "contextWindow": 262144,
162
173
  "maxTokens": 262144,
163
174
  "cost": {
164
- "input": 0.085,
165
- "output": 0.4,
175
+ "input": 0.1,
176
+ "output": 0.5,
166
177
  "cacheRead": 0,
167
178
  "cacheWrite": 0
168
179
  },
@@ -171,75 +182,18 @@
171
182
  }
172
183
  },
173
184
  {
174
- "id": "deepseek-ai/DeepSeek-V3.2",
175
- "name": "DeepSeek V3.2",
176
- "status": "deprecated",
177
- "replacedBy": "deepseek-ai/DeepSeek-V4-Pro",
185
+ "id": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
186
+ "name": "Llama 3.3 70B Instruct Turbo",
178
187
  "reasoning": false,
179
- "input": ["text"],
180
- "contextWindow": 163840,
181
- "maxTokens": 163840,
182
- "cost": {
183
- "input": 0.26,
184
- "output": 0.38,
185
- "cacheRead": 0.13,
186
- "cacheWrite": 0
187
- },
188
- "compat": {
189
- "supportsUsageInStreaming": true
190
- }
191
- },
192
- {
193
- "id": "zai-org/GLM-5.1",
194
- "name": "GLM-5.1",
195
- "status": "deprecated",
196
- "replacedBy": "zai-org/GLM-5.2",
197
- "reasoning": true,
198
- "input": ["text"],
199
- "contextWindow": 202752,
200
- "maxTokens": 202752,
201
- "cost": {
202
- "input": 1.05,
203
- "output": 3.5,
204
- "cacheRead": 0.205000005,
205
- "cacheWrite": 0
206
- },
207
- "compat": {
208
- "supportsUsageInStreaming": true
209
- }
210
- },
211
- {
212
- "id": "stepfun-ai/Step-3.5-Flash",
213
- "name": "Step 3.5 Flash",
214
- "status": "deprecated",
215
- "replacedBy": "stepfun-ai/Step-3.7-Flash",
216
- "reasoning": true,
217
- "input": ["text"],
218
- "contextWindow": 262144,
219
- "maxTokens": 262144,
188
+ "input": [
189
+ "text"
190
+ ],
191
+ "contextWindow": 131072,
192
+ "maxTokens": 131072,
220
193
  "cost": {
221
194
  "input": 0.1,
222
- "output": 0.3,
223
- "cacheRead": 0.02,
224
- "cacheWrite": 0
225
- },
226
- "compat": {
227
- "supportsUsageInStreaming": true
228
- }
229
- },
230
- {
231
- "id": "moonshotai/Kimi-K2.5",
232
- "name": "Kimi K2.5",
233
- "status": "deprecated",
234
- "replacedBy": "moonshotai/Kimi-K2.6",
235
- "reasoning": true,
236
- "input": ["text", "image"],
237
- "contextWindow": 262144,
238
- "maxTokens": 262144,
239
- "cost": {
240
- "input": 0.45,
241
- "output": 2.25,
242
- "cacheRead": 0.070000002,
195
+ "output": 0.32,
196
+ "cacheRead": 0,
243
197
  "cacheWrite": 0
244
198
  },
245
199
  "compat": {
@@ -271,15 +225,28 @@
271
225
  }
272
226
  ],
273
227
  "contracts": {
274
- "mediaUnderstandingProviders": ["deepinfra"],
275
- "embeddingProviders": ["deepinfra"],
276
- "imageGenerationProviders": ["deepinfra"],
277
- "speechProviders": ["deepinfra"],
278
- "videoGenerationProviders": ["deepinfra"]
228
+ "mediaUnderstandingProviders": [
229
+ "deepinfra"
230
+ ],
231
+ "memoryEmbeddingProviders": [
232
+ "deepinfra"
233
+ ],
234
+ "imageGenerationProviders": [
235
+ "deepinfra"
236
+ ],
237
+ "speechProviders": [
238
+ "deepinfra"
239
+ ],
240
+ "videoGenerationProviders": [
241
+ "deepinfra"
242
+ ]
279
243
  },
280
244
  "mediaUnderstandingProviderMetadata": {
281
245
  "deepinfra": {
282
- "capabilities": ["image", "audio"],
246
+ "capabilities": [
247
+ "image",
248
+ "audio"
249
+ ],
283
250
  "defaultModels": {
284
251
  "image": "moonshotai/Kimi-K2.5",
285
252
  "audio": "openai/whisper-large-v3-turbo"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/deepinfra-provider",
3
- "version": "2026.7.2-beta.5",
3
+ "version": "2026.7.33",
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.7.2-beta.5"
21
+ "pluginApi": ">=2026.7.33"
22
22
  },
23
23
  "build": {
24
- "openclawVersion": "2026.7.2-beta.5",
24
+ "openclawVersion": "2026.7.33",
25
25
  "bundledDist": false
26
26
  },
27
27
  "release": {
@@ -38,7 +38,7 @@
38
38
  "README.md"
39
39
  ],
40
40
  "peerDependencies": {
41
- "openclaw": ">=2026.7.2-beta.5"
41
+ "openclaw": ">=2026.7.33"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "openclaw": {
@@ -1,84 +0,0 @@
1
- import { t as modelCatalog } from "./openclaw.plugin-DhzOI6DT.js";
2
- import { asObjectRecord } from "openclaw/plugin-sdk/runtime-doctor";
3
- //#region extensions/deepinfra/doctor-contract-api.ts
4
- const PROVIDER_PATH = "models.providers.deepinfra";
5
- const NATIVE_INFERENCE_PATH = "/v1/inference";
6
- const OPENAI_COMPAT_PATH = "/v1/openai";
7
- const CANONICAL_BASE_URL = modelCatalog.providers.deepinfra.baseUrl;
8
- 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
- const legacyConfigRules = [{
10
- path: [
11
- "models",
12
- "providers",
13
- "deepinfra",
14
- "nativeBaseUrl"
15
- ],
16
- message: `${PROVIDER_PATH}.nativeBaseUrl is legacy; video generation uses the OpenAI-compatible ${PROVIDER_PATH}.baseUrl. ${FIX_HINT}`
17
- }, {
18
- path: [
19
- "models",
20
- "providers",
21
- "deepinfra",
22
- "baseUrl"
23
- ],
24
- message: `${PROVIDER_PATH}.baseUrl targets the retired native ${NATIVE_INFERENCE_PATH} surface; use an ${OPENAI_COMPAT_PATH} base. ${FIX_HINT}`,
25
- match: (value) => typeof value === "string" && value.includes(NATIVE_INFERENCE_PATH)
26
- }];
27
- function isDeepInfraApiHost(value) {
28
- try {
29
- return new URL(value).host === "api.deepinfra.com";
30
- } catch {
31
- return false;
32
- }
33
- }
34
- function normalizeBaseUrlValue(value) {
35
- if (typeof value !== "string") return;
36
- const trimmed = value.trim().replace(/\/+$/u, "");
37
- return trimmed ? trimmed : void 0;
38
- }
39
- function normalizeCompatibilityConfig({ cfg }) {
40
- const models = asObjectRecord(cfg.models);
41
- const providers = asObjectRecord(models?.providers);
42
- const provider = asObjectRecord(providers?.deepinfra);
43
- if (!provider) return {
44
- config: cfg,
45
- changes: []
46
- };
47
- const changes = [];
48
- const next = { ...provider };
49
- if (Object.hasOwn(next, "nativeBaseUrl")) {
50
- const legacyNative = normalizeBaseUrlValue(next.nativeBaseUrl);
51
- delete next.nativeBaseUrl;
52
- if (normalizeBaseUrlValue(next.baseUrl)) changes.push(`${PROVIDER_PATH}.nativeBaseUrl: removed (baseUrl is already configured)`);
53
- else if (legacyNative && !isDeepInfraApiHost(legacyNative)) {
54
- next.baseUrl = CANONICAL_BASE_URL;
55
- changes.push(`${PROVIDER_PATH}.nativeBaseUrl: removed retired custom native endpoint; using ${CANONICAL_BASE_URL} - set ${PROVIDER_PATH}.baseUrl manually if your host serves an OpenAI-compatible videos API`);
56
- } else {
57
- next.baseUrl = legacyNative?.includes(NATIVE_INFERENCE_PATH) ? legacyNative.replace(NATIVE_INFERENCE_PATH, OPENAI_COMPAT_PATH) : CANONICAL_BASE_URL;
58
- changes.push(`${PROVIDER_PATH}.nativeBaseUrl -> ${PROVIDER_PATH}.baseUrl (OpenAI-compatible ${OPENAI_COMPAT_PATH} endpoint)`);
59
- }
60
- }
61
- if (typeof next.baseUrl === "string" && next.baseUrl.includes(NATIVE_INFERENCE_PATH) && isDeepInfraApiHost(next.baseUrl)) {
62
- next.baseUrl = next.baseUrl.replace(NATIVE_INFERENCE_PATH, OPENAI_COMPAT_PATH);
63
- changes.push(`${PROVIDER_PATH}.baseUrl: ${NATIVE_INFERENCE_PATH} -> ${OPENAI_COMPAT_PATH}`);
64
- }
65
- if (changes.length === 0) return {
66
- config: cfg,
67
- changes: []
68
- };
69
- return {
70
- config: {
71
- ...cfg,
72
- models: {
73
- ...models,
74
- providers: {
75
- ...providers,
76
- deepinfra: next
77
- }
78
- }
79
- },
80
- changes
81
- };
82
- }
83
- //#endregion
84
- export { legacyConfigRules, normalizeCompatibilityConfig };
@@ -1,58 +0,0 @@
1
- import { DEFAULT_DEEPINFRA_EMBEDDING_MODEL, createDeepInfraEmbeddingProvider } from "./embedding-provider.js";
2
- //#region extensions/deepinfra/embedding-adapter.ts
3
- function textFromEmbeddingInput(input) {
4
- return typeof input === "string" ? input : input.text;
5
- }
6
- function adaptMemoryEmbeddingProvider(provider) {
7
- return {
8
- id: provider.id,
9
- model: provider.model,
10
- ...typeof provider.maxInputTokens === "number" ? { maxInputTokens: provider.maxInputTokens } : {},
11
- embed: async (input, options) => await provider.embedQuery(textFromEmbeddingInput(input), { signal: options?.signal }),
12
- embedBatch: async (inputs, options) => await provider.embedBatch(inputs.map(textFromEmbeddingInput), { signal: options?.signal }),
13
- ...provider.close ? { close: async () => await provider.close?.() } : {}
14
- };
15
- }
16
- function buildMemoryCreateOptions(options) {
17
- return {
18
- config: options.config,
19
- agentDir: options.agentDir,
20
- provider: "deepinfra",
21
- fallback: "none",
22
- remote: options.remote,
23
- model: options.model,
24
- inputType: options.inputType,
25
- queryInputType: options.queryInputType,
26
- documentInputType: options.documentInputType,
27
- outputDimensionality: options.dimensions,
28
- taskType: options.taskType
29
- };
30
- }
31
- function buildDeepInfraEmbeddingAdapter(options) {
32
- const defaultModel = options?.embedModels?.[0]?.id ?? DEFAULT_DEEPINFRA_EMBEDDING_MODEL;
33
- return {
34
- id: "deepinfra",
35
- defaultModel,
36
- transport: "remote",
37
- authProviderId: "deepinfra",
38
- create: async (createOptions) => {
39
- const { provider, client } = await createDeepInfraEmbeddingProvider({
40
- ...buildMemoryCreateOptions(createOptions),
41
- defaultModel
42
- });
43
- return {
44
- provider: provider ? adaptMemoryEmbeddingProvider(provider) : null,
45
- runtime: {
46
- id: "deepinfra",
47
- cacheKeyData: {
48
- provider: "deepinfra",
49
- model: client.model
50
- }
51
- }
52
- };
53
- }
54
- };
55
- }
56
- const deepinfraEmbeddingProviderAdapter = buildDeepInfraEmbeddingAdapter();
57
- //#endregion
58
- export { buildDeepInfraEmbeddingAdapter, deepinfraEmbeddingProviderAdapter };