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

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/dist/api.js CHANGED
@@ -1,9 +1,9 @@
1
- import { n as DEEPINFRA_DEFAULT_MODEL_REF } from "./provider-models-CXaqRQOl.js";
1
+ import { DEEPINFRA_DEFAULT_MODEL_REF } from "./provider-models.js";
2
+ import { deepinfraEmbeddingProviderAdapter } from "./embedding-adapter.js";
2
3
  import { buildDeepInfraImageGenerationProvider } from "./image-generation-provider.js";
3
4
  import { deepinfraMediaUnderstandingProvider } from "./media-understanding-provider.js";
4
- import { deepinfraMemoryEmbeddingProviderAdapter } from "./memory-embedding-adapter.js";
5
5
  import { applyDeepInfraConfig } from "./onboard.js";
6
6
  import { buildDeepInfraProvider, buildStaticDeepInfraProvider } from "./provider-catalog.js";
7
7
  import { buildDeepInfraSpeechProvider } from "./speech-provider.js";
8
8
  import { buildDeepInfraVideoGenerationProvider } from "./video-generation-provider.js";
9
- export { DEEPINFRA_DEFAULT_MODEL_REF, applyDeepInfraConfig, buildDeepInfraImageGenerationProvider, buildDeepInfraProvider, buildDeepInfraSpeechProvider, buildDeepInfraVideoGenerationProvider, buildStaticDeepInfraProvider, deepinfraMediaUnderstandingProvider, deepinfraMemoryEmbeddingProviderAdapter };
9
+ export { DEEPINFRA_DEFAULT_MODEL_REF, applyDeepInfraConfig, buildDeepInfraImageGenerationProvider, buildDeepInfraProvider, buildDeepInfraSpeechProvider, buildDeepInfraVideoGenerationProvider, buildStaticDeepInfraProvider, deepinfraEmbeddingProviderAdapter, deepinfraMediaUnderstandingProvider };
@@ -0,0 +1,84 @@
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 };
@@ -0,0 +1,58 @@
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 };
@@ -1,4 +1,4 @@
1
- import { t as DEEPINFRA_BASE_URL } from "./provider-models-CXaqRQOl.js";
1
+ import { DEEPINFRA_BASE_URL } from "./provider-models.js";
2
2
  import { DEEPINFRA_EMBED_FALLBACK_MODELS, normalizeDeepInfraModelRef } from "./media-models.js";
3
3
  import { createRemoteEmbeddingProvider, resolveRemoteEmbeddingClient } from "openclaw/plugin-sdk/memory-core-host-engine-embeddings";
4
4
  //#region extensions/deepinfra/embedding-provider.ts
@@ -1,7 +1,7 @@
1
- import { t as DEEPINFRA_BASE_URL } from "./provider-models-CXaqRQOl.js";
1
+ import { DEEPINFRA_BASE_URL } from "./provider-models.js";
2
2
  import { DEEPINFRA_IMAGE_FALLBACK_MODELS, normalizeDeepInfraBaseUrl, normalizeDeepInfraModelRef } from "./media-models.js";
3
- import { createOpenAiCompatibleImageGenerationProvider, imageSourceUploadFileName } from "openclaw/plugin-sdk/image-generation";
4
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
+ import { createOpenAiCompatibleImageGenerationProvider, imageSourceUploadFileName } from "openclaw/plugin-sdk/image-generation";
5
5
  //#region extensions/deepinfra/image-generation-provider.ts
6
6
  const DEEPINFRA_IMAGE_SIZES = [
7
7
  "512x512",
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { createDeepInfraAnthropicCacheWrapper } from "./cache-wrapper.js";
2
- import { a as discoverDeepInfraModels, c as hasDeepInfraApiKey, n as DEEPINFRA_DEFAULT_MODEL_REF, s as getDeepInfraSurfaceFallbackCatalog } from "./provider-models-CXaqRQOl.js";
2
+ import { DEEPINFRA_DEFAULT_MODEL_REF, discoverDeepInfraModels, getDeepInfraSurfaceFallbackCatalog, hasDeepInfraApiKey } from "./provider-models.js";
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";
5
- import { buildDeepInfraMemoryEmbeddingAdapter } from "./memory-embedding-adapter.js";
6
6
  import { applyDeepInfraConfig } from "./onboard.js";
7
7
  import { buildDeepInfraApiKeyCatalog, buildStaticDeepInfraProvider } from "./provider-catalog.js";
8
8
  import { buildDeepInfraSpeechProvider } from "./speech-provider.js";
@@ -104,7 +104,7 @@ var deepinfra_default = defineSingleProviderPluginEntry({
104
104
  vlmModels: catalog.vlm,
105
105
  sttModels: catalog.stt
106
106
  }));
107
- api.registerMemoryEmbeddingProvider(buildDeepInfraMemoryEmbeddingAdapter({ embedModels: catalog.embed }));
107
+ api.registerEmbeddingProvider(buildDeepInfraEmbeddingAdapter({ embedModels: catalog.embed }));
108
108
  api.registerSpeechProvider(buildDeepInfraSpeechProvider({ ttsModels: catalog.tts }));
109
109
  api.registerVideoGenerationProvider(buildDeepInfraVideoGenerationProvider({ videoGenModels: catalog.videoGen }));
110
110
  api.registerModelCatalogProvider({
@@ -1,7 +1,6 @@
1
- import { t as DEEPINFRA_BASE_URL } from "./provider-models-CXaqRQOl.js";
1
+ import { DEEPINFRA_BASE_URL } from "./provider-models.js";
2
2
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/deepinfra/media-models.ts
4
- const DEEPINFRA_NATIVE_BASE_URL = "https://api.deepinfra.com/v1/inference";
5
4
  const DEFAULT_DEEPINFRA_IMAGE_SIZE = "1024x1024";
6
5
  const DEFAULT_DEEPINFRA_TTS_VOICE = "af_bella";
7
6
  const DEEPINFRA_VIDEO_ASPECT_RATIOS = [
@@ -41,4 +40,4 @@ function normalizeDeepInfraBaseUrl(value, fallback = DEEPINFRA_BASE_URL) {
41
40
  return (normalizeOptionalString(value) ?? fallback).replace(/\/+$/u, "");
42
41
  }
43
42
  //#endregion
44
- export { DEEPINFRA_BASE_URL, DEEPINFRA_EMBED_FALLBACK_MODELS, DEEPINFRA_IMAGE_FALLBACK_MODELS, DEEPINFRA_NATIVE_BASE_URL, DEEPINFRA_STT_FALLBACK_MODELS, DEEPINFRA_TTS_FALLBACK_MODELS, DEEPINFRA_VIDEO_ASPECT_RATIOS, DEEPINFRA_VIDEO_DURATIONS, DEEPINFRA_VIDEO_FALLBACK_MODELS, DEEPINFRA_VLM_FALLBACK_MODELS, DEFAULT_DEEPINFRA_IMAGE_SIZE, DEFAULT_DEEPINFRA_TTS_VOICE, normalizeDeepInfraBaseUrl, normalizeDeepInfraModelRef };
43
+ export { DEEPINFRA_BASE_URL, DEEPINFRA_EMBED_FALLBACK_MODELS, DEEPINFRA_IMAGE_FALLBACK_MODELS, DEEPINFRA_STT_FALLBACK_MODELS, DEEPINFRA_TTS_FALLBACK_MODELS, DEEPINFRA_VIDEO_ASPECT_RATIOS, DEEPINFRA_VIDEO_DURATIONS, DEEPINFRA_VIDEO_FALLBACK_MODELS, DEEPINFRA_VLM_FALLBACK_MODELS, DEFAULT_DEEPINFRA_IMAGE_SIZE, DEFAULT_DEEPINFRA_TTS_VOICE, normalizeDeepInfraBaseUrl, normalizeDeepInfraModelRef };
@@ -1,4 +1,4 @@
1
- import { t as DEEPINFRA_BASE_URL } from "./provider-models-CXaqRQOl.js";
1
+ import { DEEPINFRA_BASE_URL } from "./provider-models.js";
2
2
  import { DEEPINFRA_STT_FALLBACK_MODELS, DEEPINFRA_VLM_FALLBACK_MODELS } from "./media-models.js";
3
3
  import { describeImageWithModel, describeImagesWithModel, transcribeOpenAiCompatibleAudio } from "openclaw/plugin-sdk/media-understanding";
4
4
  //#region extensions/deepinfra/media-understanding-provider.ts
package/dist/onboard.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as DEEPINFRA_DEFAULT_MODEL_REF } from "./provider-models-CXaqRQOl.js";
1
+ import { DEEPINFRA_DEFAULT_MODEL_REF } from "./provider-models.js";
2
2
  import { applyAgentDefaultModelPrimary } from "openclaw/plugin-sdk/provider-onboard";
3
3
  //#region extensions/deepinfra/onboard.ts
4
4
  function applyDeepInfraConfig(cfg, modelRef = DEEPINFRA_DEFAULT_MODEL_REF) {
@@ -0,0 +1,200 @@
1
+ //#region extensions/deepinfra/openclaw.plugin.json
2
+ var modelCatalog = {
3
+ "providers": { "deepinfra": {
4
+ "baseUrl": "https://api.deepinfra.com/v1/openai",
5
+ "api": "openai-completions",
6
+ "models": [
7
+ {
8
+ "id": "deepseek-ai/DeepSeek-V4-Flash",
9
+ "name": "DeepSeek V4 Flash",
10
+ "reasoning": true,
11
+ "input": ["text"],
12
+ "contextWindow": 1048576,
13
+ "maxTokens": 1048576,
14
+ "cost": {
15
+ "input": .09,
16
+ "output": .18,
17
+ "cacheRead": .018,
18
+ "cacheWrite": 0
19
+ },
20
+ "compat": { "supportsUsageInStreaming": true }
21
+ },
22
+ {
23
+ "id": "deepseek-ai/DeepSeek-V4-Pro",
24
+ "name": "DeepSeek V4 Pro",
25
+ "reasoning": true,
26
+ "input": ["text"],
27
+ "contextWindow": 1048576,
28
+ "maxTokens": 1048576,
29
+ "cost": {
30
+ "input": 1.3,
31
+ "output": 2.6,
32
+ "cacheRead": .1,
33
+ "cacheWrite": 0
34
+ },
35
+ "compat": { "supportsUsageInStreaming": true }
36
+ },
37
+ {
38
+ "id": "zai-org/GLM-5.2",
39
+ "name": "GLM-5.2",
40
+ "reasoning": true,
41
+ "input": ["text"],
42
+ "contextWindow": 1048576,
43
+ "maxTokens": 1048576,
44
+ "cost": {
45
+ "input": .93,
46
+ "output": 3,
47
+ "cacheRead": .18,
48
+ "cacheWrite": 0
49
+ },
50
+ "compat": { "supportsUsageInStreaming": true }
51
+ },
52
+ {
53
+ "id": "stepfun-ai/Step-3.7-Flash",
54
+ "name": "Step 3.7 Flash",
55
+ "reasoning": true,
56
+ "input": ["text", "image"],
57
+ "contextWindow": 262144,
58
+ "maxTokens": 262144,
59
+ "cost": {
60
+ "input": .2,
61
+ "output": 1.15,
62
+ "cacheRead": .04,
63
+ "cacheWrite": 0
64
+ },
65
+ "compat": { "supportsUsageInStreaming": true }
66
+ },
67
+ {
68
+ "id": "moonshotai/Kimi-K2.7-Code",
69
+ "name": "Kimi K2.7 Code",
70
+ "reasoning": true,
71
+ "input": ["text", "image"],
72
+ "contextWindow": 262144,
73
+ "maxTokens": 262144,
74
+ "cost": {
75
+ "input": .74,
76
+ "output": 3.5,
77
+ "cacheRead": .15,
78
+ "cacheWrite": 0
79
+ },
80
+ "compat": { "supportsUsageInStreaming": true }
81
+ },
82
+ {
83
+ "id": "moonshotai/Kimi-K2.6",
84
+ "name": "Kimi K2.6",
85
+ "reasoning": true,
86
+ "input": ["text", "image"],
87
+ "contextWindow": 262144,
88
+ "maxTokens": 262144,
89
+ "cost": {
90
+ "input": .75,
91
+ "output": 3.5,
92
+ "cacheRead": .15,
93
+ "cacheWrite": 0
94
+ },
95
+ "compat": { "supportsUsageInStreaming": true }
96
+ },
97
+ {
98
+ "id": "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B",
99
+ "name": "NVIDIA Nemotron 3 Ultra 550B A55B",
100
+ "reasoning": true,
101
+ "input": ["text", "image"],
102
+ "contextWindow": 262144,
103
+ "maxTokens": 262144,
104
+ "cost": {
105
+ "input": .5,
106
+ "output": 2.2,
107
+ "cacheRead": .1,
108
+ "cacheWrite": 0
109
+ },
110
+ "compat": { "supportsUsageInStreaming": true }
111
+ },
112
+ {
113
+ "id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B",
114
+ "name": "NVIDIA Nemotron 3 Super 120B A12B",
115
+ "reasoning": true,
116
+ "input": ["text"],
117
+ "contextWindow": 262144,
118
+ "maxTokens": 262144,
119
+ "cost": {
120
+ "input": .085,
121
+ "output": .4,
122
+ "cacheRead": 0,
123
+ "cacheWrite": 0
124
+ },
125
+ "compat": { "supportsUsageInStreaming": true }
126
+ },
127
+ {
128
+ "id": "deepseek-ai/DeepSeek-V3.2",
129
+ "name": "DeepSeek V3.2",
130
+ "status": "deprecated",
131
+ "replacedBy": "deepseek-ai/DeepSeek-V4-Pro",
132
+ "reasoning": false,
133
+ "input": ["text"],
134
+ "contextWindow": 163840,
135
+ "maxTokens": 163840,
136
+ "cost": {
137
+ "input": .26,
138
+ "output": .38,
139
+ "cacheRead": .13,
140
+ "cacheWrite": 0
141
+ },
142
+ "compat": { "supportsUsageInStreaming": true }
143
+ },
144
+ {
145
+ "id": "zai-org/GLM-5.1",
146
+ "name": "GLM-5.1",
147
+ "status": "deprecated",
148
+ "replacedBy": "zai-org/GLM-5.2",
149
+ "reasoning": true,
150
+ "input": ["text"],
151
+ "contextWindow": 202752,
152
+ "maxTokens": 202752,
153
+ "cost": {
154
+ "input": 1.05,
155
+ "output": 3.5,
156
+ "cacheRead": .205000005,
157
+ "cacheWrite": 0
158
+ },
159
+ "compat": { "supportsUsageInStreaming": true }
160
+ },
161
+ {
162
+ "id": "stepfun-ai/Step-3.5-Flash",
163
+ "name": "Step 3.5 Flash",
164
+ "status": "deprecated",
165
+ "replacedBy": "stepfun-ai/Step-3.7-Flash",
166
+ "reasoning": true,
167
+ "input": ["text"],
168
+ "contextWindow": 262144,
169
+ "maxTokens": 262144,
170
+ "cost": {
171
+ "input": .1,
172
+ "output": .3,
173
+ "cacheRead": .02,
174
+ "cacheWrite": 0
175
+ },
176
+ "compat": { "supportsUsageInStreaming": true }
177
+ },
178
+ {
179
+ "id": "moonshotai/Kimi-K2.5",
180
+ "name": "Kimi K2.5",
181
+ "status": "deprecated",
182
+ "replacedBy": "moonshotai/Kimi-K2.6",
183
+ "reasoning": true,
184
+ "input": ["text", "image"],
185
+ "contextWindow": 262144,
186
+ "maxTokens": 262144,
187
+ "cost": {
188
+ "input": .45,
189
+ "output": 2.25,
190
+ "cacheRead": .070000002,
191
+ "cacheWrite": 0
192
+ },
193
+ "compat": { "supportsUsageInStreaming": true }
194
+ }
195
+ ]
196
+ } },
197
+ "discovery": { "deepinfra": "refreshable" }
198
+ };
199
+ //#endregion
200
+ export { modelCatalog as t };
@@ -1,4 +1,4 @@
1
- import { a as discoverDeepInfraModels, i as buildDeepInfraModelDefinition, r as DEEPINFRA_MODEL_CATALOG, t as DEEPINFRA_BASE_URL } from "./provider-models-CXaqRQOl.js";
1
+ import { DEEPINFRA_BASE_URL, DEEPINFRA_MODEL_CATALOG, buildDeepInfraModelDefinition, discoverDeepInfraModels } from "./provider-models.js";
2
2
  import { buildSingleProviderApiKeyCatalog } from "openclaw/plugin-sdk/provider-catalog-shared";
3
3
  //#region extensions/deepinfra/provider-catalog.ts
4
4
  function buildStaticDeepInfraProvider() {