@dexto/core 1.6.1 → 1.6.3
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/agent/DextoAgent.cjs +54 -0
- package/dist/agent/DextoAgent.d.ts +12 -1
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +54 -0
- package/dist/agent/agent-options.d.ts +6 -1
- package/dist/agent/agent-options.d.ts.map +1 -1
- package/dist/events/index.d.ts +9 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/llm/executor/provider-options.cjs +223 -28
- package/dist/llm/executor/provider-options.d.ts +3 -37
- package/dist/llm/executor/provider-options.d.ts.map +1 -1
- package/dist/llm/executor/provider-options.js +227 -27
- package/dist/llm/executor/stream-processor.cjs +54 -31
- package/dist/llm/executor/stream-processor.d.ts +9 -2
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +52 -29
- package/dist/llm/executor/turn-executor.cjs +63 -41
- package/dist/llm/executor/turn-executor.d.ts +2 -2
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +53 -31
- package/dist/llm/formatters/vercel.cjs +15 -3
- package/dist/llm/formatters/vercel.d.ts +1 -0
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +15 -3
- package/dist/llm/index.cjs +8 -0
- package/dist/llm/index.d.ts +2 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +7 -0
- package/dist/llm/providers/local/schemas.d.ts +2 -2
- package/dist/llm/providers/openrouter-model-registry.cjs +66 -11
- package/dist/llm/providers/openrouter-model-registry.d.ts +26 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -1
- package/dist/llm/providers/openrouter-model-registry.js +65 -11
- package/dist/{utils/user-info.cjs → llm/reasoning/anthropic-betas.cjs} +9 -8
- package/dist/llm/reasoning/anthropic-betas.d.ts +3 -0
- package/dist/llm/reasoning/anthropic-betas.d.ts.map +1 -0
- package/dist/llm/reasoning/anthropic-betas.js +7 -0
- package/dist/llm/reasoning/anthropic-thinking.cjs +79 -0
- package/dist/llm/reasoning/anthropic-thinking.d.ts +15 -0
- package/dist/llm/reasoning/anthropic-thinking.d.ts.map +1 -0
- package/dist/llm/reasoning/anthropic-thinking.js +52 -0
- package/dist/llm/reasoning/openai-reasoning-effort.cjs +86 -0
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts +5 -0
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +1 -0
- package/dist/llm/reasoning/openai-reasoning-effort.js +61 -0
- package/dist/llm/reasoning/profile.cjs +113 -0
- package/dist/llm/reasoning/profile.d.ts +13 -0
- package/dist/llm/reasoning/profile.d.ts.map +1 -0
- package/dist/llm/reasoning/profile.js +92 -0
- package/dist/llm/reasoning/profiles/anthropic.cjs +61 -0
- package/dist/llm/reasoning/profiles/anthropic.d.ts +8 -0
- package/dist/llm/reasoning/profiles/anthropic.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/anthropic.js +45 -0
- package/dist/llm/reasoning/profiles/bedrock.cjs +54 -0
- package/dist/llm/reasoning/profiles/bedrock.d.ts +3 -0
- package/dist/llm/reasoning/profiles/bedrock.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/bedrock.js +36 -0
- package/dist/llm/reasoning/profiles/google.cjs +45 -0
- package/dist/llm/reasoning/profiles/google.d.ts +9 -0
- package/dist/llm/reasoning/profiles/google.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/google.js +21 -0
- package/dist/llm/reasoning/profiles/openai-compatible.cjs +39 -0
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts +3 -0
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/openai-compatible.js +16 -0
- package/dist/llm/reasoning/profiles/openai.cjs +41 -0
- package/dist/llm/reasoning/profiles/openai.d.ts +3 -0
- package/dist/llm/reasoning/profiles/openai.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/openai.js +18 -0
- package/dist/llm/reasoning/profiles/openrouter.cjs +83 -0
- package/dist/llm/reasoning/profiles/openrouter.d.ts +10 -0
- package/dist/llm/reasoning/profiles/openrouter.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/openrouter.js +59 -0
- package/dist/llm/reasoning/profiles/shared.cjs +80 -0
- package/dist/llm/reasoning/profiles/shared.d.ts +25 -0
- package/dist/llm/reasoning/profiles/shared.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/shared.js +53 -0
- package/dist/llm/reasoning/profiles/vertex.cjs +46 -0
- package/dist/llm/reasoning/profiles/vertex.d.ts +3 -0
- package/dist/llm/reasoning/profiles/vertex.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/vertex.js +23 -0
- package/dist/llm/registry/auto-update.cjs +18 -0
- package/dist/llm/registry/auto-update.d.ts.map +1 -1
- package/dist/llm/registry/auto-update.js +18 -0
- package/dist/llm/registry/index.cjs +126 -26
- package/dist/llm/registry/index.d.ts +48 -4
- package/dist/llm/registry/index.d.ts.map +1 -1
- package/dist/llm/registry/index.js +136 -28
- package/dist/llm/registry/models.generated.cjs +5198 -59
- package/dist/llm/registry/models.generated.d.ts +1893 -76
- package/dist/llm/registry/models.generated.d.ts.map +1 -1
- package/dist/llm/registry/models.generated.js +5196 -58
- package/dist/llm/registry/sync.cjs +72 -1
- package/dist/llm/registry/sync.d.ts +21 -1
- package/dist/llm/registry/sync.d.ts.map +1 -1
- package/dist/llm/registry/sync.js +72 -1
- package/dist/llm/resolver.cjs +13 -1
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +13 -1
- package/dist/llm/schemas.cjs +75 -14
- package/dist/llm/schemas.d.ts +80 -23
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +75 -14
- package/dist/llm/services/factory.cjs +55 -8
- package/dist/llm/services/factory.d.ts +1 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +58 -8
- package/dist/llm/services/vercel.cjs +1 -1
- package/dist/llm/services/vercel.js +1 -1
- package/dist/llm/types.d.ts +9 -0
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/prompts/index.cjs +9 -0
- package/dist/prompts/index.d.ts +1 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +10 -0
- package/dist/prompts/prompt-manager.cjs +2 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +2 -0
- package/dist/prompts/providers/config-prompt-provider.cjs +11 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +11 -1
- package/dist/prompts/schemas.cjs +2 -2
- package/dist/prompts/schemas.js +2 -2
- package/dist/prompts/types.d.ts +6 -2
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +1 -1
- package/dist/tools/tool-manager.cjs +88 -2
- package/dist/tools/tool-manager.d.ts +15 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +88 -2
- package/dist/utils/service-initializer.d.ts +1 -0
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/package.json +7 -5
- package/dist/utils/schema-metadata.cjs +0 -235
- package/dist/utils/schema-metadata.d.ts +0 -82
- package/dist/utils/schema-metadata.d.ts.map +0 -1
- package/dist/utils/schema-metadata.js +0 -208
- package/dist/utils/user-info.d.ts +0 -2
- package/dist/utils/user-info.d.ts.map +0 -1
- package/dist/utils/user-info.js +0 -7
|
@@ -116,8 +116,9 @@ const LLM_REGISTRY = {
|
|
|
116
116
|
openai: {
|
|
117
117
|
models: mergeModels(import_models_generated.MODELS_BY_PROVIDER.openai, import_models_manual.MANUAL_MODELS_BY_PROVIDER.openai),
|
|
118
118
|
baseURLSupport: "none",
|
|
119
|
-
supportedFileTypes: []
|
|
119
|
+
supportedFileTypes: [],
|
|
120
120
|
// No defaults - models must explicitly specify support
|
|
121
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.openai
|
|
121
122
|
},
|
|
122
123
|
"openai-compatible": {
|
|
123
124
|
models: [],
|
|
@@ -130,52 +131,59 @@ const LLM_REGISTRY = {
|
|
|
130
131
|
anthropic: {
|
|
131
132
|
models: import_models_generated.MODELS_BY_PROVIDER.anthropic,
|
|
132
133
|
baseURLSupport: "none",
|
|
133
|
-
supportedFileTypes: []
|
|
134
|
+
supportedFileTypes: [],
|
|
134
135
|
// No defaults - models must explicitly specify support
|
|
136
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.anthropic
|
|
135
137
|
},
|
|
136
138
|
google: {
|
|
137
139
|
models: import_models_generated.MODELS_BY_PROVIDER.google,
|
|
138
140
|
baseURLSupport: "none",
|
|
139
|
-
supportedFileTypes: []
|
|
141
|
+
supportedFileTypes: [],
|
|
140
142
|
// No defaults - models must explicitly specify support
|
|
143
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.google
|
|
141
144
|
},
|
|
142
145
|
// https://console.groq.com/docs/models
|
|
143
146
|
groq: {
|
|
144
147
|
models: import_models_generated.MODELS_BY_PROVIDER.groq,
|
|
145
148
|
baseURLSupport: "none",
|
|
146
|
-
supportedFileTypes: []
|
|
149
|
+
supportedFileTypes: [],
|
|
147
150
|
// Groq currently doesn't support file uploads
|
|
151
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.groq
|
|
148
152
|
},
|
|
149
153
|
// https://docs.x.ai/docs/models
|
|
150
154
|
// Note: XAI API only supports image uploads (JPG/PNG up to 20MB), not PDFs
|
|
151
155
|
xai: {
|
|
152
156
|
models: import_models_generated.MODELS_BY_PROVIDER.xai,
|
|
153
157
|
baseURLSupport: "none",
|
|
154
|
-
supportedFileTypes: []
|
|
158
|
+
supportedFileTypes: [],
|
|
155
159
|
// No defaults - models must explicitly specify support
|
|
160
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.xai
|
|
156
161
|
},
|
|
157
162
|
// https://docs.cohere.com/reference/models
|
|
158
163
|
cohere: {
|
|
159
164
|
models: import_models_generated.MODELS_BY_PROVIDER.cohere,
|
|
160
165
|
baseURLSupport: "none",
|
|
161
|
-
supportedFileTypes: []
|
|
166
|
+
supportedFileTypes: [],
|
|
162
167
|
// No defaults - models must explicitly specify support
|
|
168
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.cohere
|
|
163
169
|
},
|
|
164
170
|
// https://platform.minimax.io/docs/api-reference/text-openai-api
|
|
165
171
|
// MiniMax provides an OpenAI-compatible endpoint at https://api.minimax.chat/v1
|
|
166
172
|
minimax: {
|
|
167
173
|
models: import_models_generated.MODELS_BY_PROVIDER.minimax,
|
|
168
174
|
baseURLSupport: "none",
|
|
169
|
-
supportedFileTypes: []
|
|
175
|
+
supportedFileTypes: [],
|
|
170
176
|
// No defaults - models must explicitly specify support
|
|
177
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.minimax
|
|
171
178
|
},
|
|
172
179
|
// https://open.bigmodel.cn/dev/api/normal-model/glm-4
|
|
173
180
|
// GLM (Zhipu AI) provides an OpenAI-compatible endpoint
|
|
174
181
|
glm: {
|
|
175
182
|
models: import_models_generated.MODELS_BY_PROVIDER.glm,
|
|
176
183
|
baseURLSupport: "none",
|
|
177
|
-
supportedFileTypes: []
|
|
184
|
+
supportedFileTypes: [],
|
|
178
185
|
// No defaults - models must explicitly specify support
|
|
186
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.glm
|
|
179
187
|
},
|
|
180
188
|
// https://openrouter.ai/docs
|
|
181
189
|
// OpenRouter is a unified API gateway providing access to 100+ models from various providers.
|
|
@@ -187,8 +195,9 @@ const LLM_REGISTRY = {
|
|
|
187
195
|
supportedFileTypes: ["pdf", "image", "audio"],
|
|
188
196
|
// Allow all types - user assumes responsibility
|
|
189
197
|
supportsCustomModels: true,
|
|
190
|
-
supportsAllRegistryModels: true
|
|
198
|
+
supportsAllRegistryModels: true,
|
|
191
199
|
// Can serve models from all other providers
|
|
200
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.openrouter
|
|
192
201
|
},
|
|
193
202
|
// https://docs.litellm.ai/
|
|
194
203
|
// LiteLLM is an OpenAI-compatible proxy that unifies 100+ LLM providers.
|
|
@@ -212,8 +221,9 @@ const LLM_REGISTRY = {
|
|
|
212
221
|
vertex: {
|
|
213
222
|
models: import_models_generated.MODELS_BY_PROVIDER.vertex,
|
|
214
223
|
baseURLSupport: "none",
|
|
215
|
-
supportedFileTypes: []
|
|
224
|
+
supportedFileTypes: [],
|
|
216
225
|
// No defaults - models must explicitly specify support
|
|
226
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.vertex
|
|
217
227
|
},
|
|
218
228
|
// https://docs.aws.amazon.com/bedrock/latest/userguide/models.html
|
|
219
229
|
bedrock: {
|
|
@@ -221,7 +231,8 @@ const LLM_REGISTRY = {
|
|
|
221
231
|
baseURLSupport: "none",
|
|
222
232
|
supportedFileTypes: [],
|
|
223
233
|
// No defaults - models must explicitly specify support
|
|
224
|
-
supportsCustomModels: true
|
|
234
|
+
supportsCustomModels: true,
|
|
235
|
+
modelsDev: import_models_generated.MODELS_DEV_PROVIDER_METADATA_BY_PROVIDER.bedrock
|
|
225
236
|
},
|
|
226
237
|
// Native local model execution via node-llama-cpp
|
|
227
238
|
local: {
|
|
@@ -249,7 +260,7 @@ const LLM_REGISTRY = {
|
|
|
249
260
|
// Claude models (Anthropic via OpenRouter)
|
|
250
261
|
{
|
|
251
262
|
name: "anthropic/claude-haiku-4.5",
|
|
252
|
-
displayName: "Claude 4.5
|
|
263
|
+
displayName: "Claude Haiku 4.5",
|
|
253
264
|
maxInputTokens: 2e5,
|
|
254
265
|
default: true,
|
|
255
266
|
supportedFileTypes: ["pdf", "image"],
|
|
@@ -264,7 +275,7 @@ const LLM_REGISTRY = {
|
|
|
264
275
|
},
|
|
265
276
|
{
|
|
266
277
|
name: "anthropic/claude-sonnet-4.5",
|
|
267
|
-
displayName: "Claude 4.5
|
|
278
|
+
displayName: "Claude Sonnet 4.5",
|
|
268
279
|
maxInputTokens: 2e5,
|
|
269
280
|
supportedFileTypes: ["pdf", "image"],
|
|
270
281
|
pricing: {
|
|
@@ -278,7 +289,7 @@ const LLM_REGISTRY = {
|
|
|
278
289
|
},
|
|
279
290
|
{
|
|
280
291
|
name: "anthropic/claude-opus-4.5",
|
|
281
|
-
displayName: "Claude 4.5
|
|
292
|
+
displayName: "Claude Opus 4.5",
|
|
282
293
|
maxInputTokens: 2e5,
|
|
283
294
|
supportedFileTypes: ["pdf", "image"],
|
|
284
295
|
pricing: {
|
|
@@ -512,20 +523,91 @@ function pickExistingOpenRouterModelId(candidates) {
|
|
|
512
523
|
return null;
|
|
513
524
|
}
|
|
514
525
|
function findModelInfo(provider, model) {
|
|
526
|
+
if (provider === "openrouter" && model.includes("/")) {
|
|
527
|
+
const dynamicOpenRouterModel = getOpenRouterGatewayModelById(model);
|
|
528
|
+
if (dynamicOpenRouterModel) return dynamicOpenRouterModel;
|
|
529
|
+
}
|
|
515
530
|
const providerInfo = LLM_REGISTRY[provider];
|
|
516
531
|
const normalizedModel = getNormalizedModelIdForLookup(provider, model);
|
|
517
532
|
const direct = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
|
|
518
533
|
if (direct) return direct;
|
|
519
534
|
if (provider !== "openrouter" && hasAllRegistryModelsSupport(provider) && model.includes("/")) {
|
|
520
|
-
const openrouterModel =
|
|
521
|
-
(m) => m.name.toLowerCase() === model.toLowerCase()
|
|
522
|
-
);
|
|
535
|
+
const openrouterModel = getOpenRouterGatewayModelById(model);
|
|
523
536
|
if (openrouterModel) return openrouterModel;
|
|
524
537
|
}
|
|
525
538
|
return null;
|
|
526
539
|
}
|
|
540
|
+
function ensureOpenRouterCatalogRefreshScheduled() {
|
|
541
|
+
const cacheInfo = (0, import_openrouter_model_registry.getOpenRouterModelCacheInfo)();
|
|
542
|
+
if (cacheInfo.modelCount === 0) {
|
|
543
|
+
(0, import_openrouter_model_registry.scheduleOpenRouterModelRefresh)({ force: true });
|
|
544
|
+
} else if (!cacheInfo.isFresh) {
|
|
545
|
+
(0, import_openrouter_model_registry.scheduleOpenRouterModelRefresh)();
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
function findOpenRouterSnapshotModelById(modelId) {
|
|
549
|
+
const normalized = modelId.toLowerCase();
|
|
550
|
+
return LLM_REGISTRY.openrouter.models.find((m) => m.name.toLowerCase() === normalized) ?? null;
|
|
551
|
+
}
|
|
552
|
+
function buildOpenRouterGatewayModelInfo(cachedModel, snapshot) {
|
|
553
|
+
const providerDefaults = LLM_REGISTRY.openrouter.supportedFileTypes;
|
|
554
|
+
const displayName = snapshot?.displayName ?? cachedModel.displayName;
|
|
555
|
+
const supportedFileTypes = snapshot?.supportedFileTypes ?? providerDefaults;
|
|
556
|
+
const maxInputTokens = typeof cachedModel.contextLength === "number" && cachedModel.contextLength > 0 ? cachedModel.contextLength : snapshot?.maxInputTokens ?? DEFAULT_MAX_INPUT_TOKENS;
|
|
557
|
+
const inferredReasoning = cachedModel.supportedParameters?.includes("reasoning") === true ? true : void 0;
|
|
558
|
+
const inferredSupportsTemperature = cachedModel.supportedParameters?.includes("temperature") === true ? true : void 0;
|
|
559
|
+
return {
|
|
560
|
+
name: snapshot?.name ?? cachedModel.id,
|
|
561
|
+
maxInputTokens,
|
|
562
|
+
supportedFileTypes,
|
|
563
|
+
...snapshot?.default ? { default: true } : {},
|
|
564
|
+
...displayName ? { displayName } : {},
|
|
565
|
+
...typeof snapshot?.reasoning === "boolean" ? { reasoning: snapshot.reasoning } : typeof inferredReasoning === "boolean" ? { reasoning: inferredReasoning } : {},
|
|
566
|
+
...typeof snapshot?.supportsTemperature === "boolean" ? { supportsTemperature: snapshot.supportsTemperature } : typeof inferredSupportsTemperature === "boolean" ? { supportsTemperature: inferredSupportsTemperature } : {},
|
|
567
|
+
...typeof snapshot?.supportsInterleaved === "boolean" ? { supportsInterleaved: snapshot.supportsInterleaved } : {},
|
|
568
|
+
...snapshot?.releaseDate ? { releaseDate: snapshot.releaseDate } : {},
|
|
569
|
+
...typeof snapshot?.supportsToolCall === "boolean" ? { supportsToolCall: snapshot.supportsToolCall } : {},
|
|
570
|
+
...snapshot?.status ? { status: snapshot.status } : {},
|
|
571
|
+
...snapshot?.modalities ? { modalities: snapshot.modalities } : {},
|
|
572
|
+
...snapshot?.providerMetadata ? { providerMetadata: snapshot.providerMetadata } : {},
|
|
573
|
+
...snapshot?.interleaved ? { interleaved: snapshot.interleaved } : {},
|
|
574
|
+
...snapshot?.pricing ? { pricing: snapshot.pricing } : {}
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
function getOpenRouterGatewayModelById(modelId) {
|
|
578
|
+
ensureOpenRouterCatalogRefreshScheduled();
|
|
579
|
+
const snapshot = findOpenRouterSnapshotModelById(modelId);
|
|
580
|
+
const cached = (0, import_openrouter_model_registry.getCachedOpenRouterModelsWithInfo)();
|
|
581
|
+
if (!cached || cached.length === 0) {
|
|
582
|
+
return snapshot ? { ...snapshot } : null;
|
|
583
|
+
}
|
|
584
|
+
const normalized = modelId.toLowerCase();
|
|
585
|
+
const cachedModel = cached.find((m) => m.id.toLowerCase() === normalized);
|
|
586
|
+
if (!cachedModel) return snapshot ? { ...snapshot } : null;
|
|
587
|
+
return buildOpenRouterGatewayModelInfo(cachedModel, snapshot);
|
|
588
|
+
}
|
|
589
|
+
function getOpenRouterGatewayCatalogModels() {
|
|
590
|
+
ensureOpenRouterCatalogRefreshScheduled();
|
|
591
|
+
const cached = (0, import_openrouter_model_registry.getCachedOpenRouterModelsWithInfo)();
|
|
592
|
+
if (!cached || cached.length === 0) {
|
|
593
|
+
return LLM_REGISTRY.openrouter.models.map((m) => ({ ...m }));
|
|
594
|
+
}
|
|
595
|
+
const models = cached.map(
|
|
596
|
+
(cachedModel) => buildOpenRouterGatewayModelInfo(
|
|
597
|
+
cachedModel,
|
|
598
|
+
findOpenRouterSnapshotModelById(cachedModel.id)
|
|
599
|
+
)
|
|
600
|
+
).sort((a, b) => a.name.localeCompare(b.name));
|
|
601
|
+
return models;
|
|
602
|
+
}
|
|
527
603
|
function getAllModelsForProvider(provider) {
|
|
528
604
|
const providerInfo = LLM_REGISTRY[provider];
|
|
605
|
+
if (provider === "openrouter") {
|
|
606
|
+
return getOpenRouterGatewayCatalogModels().map((m) => ({
|
|
607
|
+
...m,
|
|
608
|
+
originalProvider: "openrouter"
|
|
609
|
+
}));
|
|
610
|
+
}
|
|
529
611
|
if (!providerInfo.supportsAllRegistryModels) {
|
|
530
612
|
return providerInfo.models.map((m) => ({ ...m }));
|
|
531
613
|
}
|
|
@@ -537,13 +619,11 @@ function getAllModelsForProvider(provider) {
|
|
|
537
619
|
seen.add(key);
|
|
538
620
|
allModels.push({ ...model, originalProvider: provider });
|
|
539
621
|
}
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
allModels.push({ ...model, originalProvider: "openrouter" });
|
|
546
|
-
}
|
|
622
|
+
for (const model of getOpenRouterGatewayCatalogModels()) {
|
|
623
|
+
const key = model.name.toLowerCase();
|
|
624
|
+
if (seen.has(key)) continue;
|
|
625
|
+
seen.add(key);
|
|
626
|
+
allModels.push({ ...model, originalProvider: "openrouter" });
|
|
547
627
|
}
|
|
548
628
|
return allModels;
|
|
549
629
|
}
|
|
@@ -750,8 +830,28 @@ function getModelDisplayName(model, provider) {
|
|
|
750
830
|
return model;
|
|
751
831
|
}
|
|
752
832
|
}
|
|
753
|
-
function isReasoningCapableModel(model,
|
|
754
|
-
const
|
|
833
|
+
function isReasoningCapableModel(model, provider) {
|
|
834
|
+
const registryProvider = (() => {
|
|
835
|
+
if (model.includes("/")) return "openrouter";
|
|
836
|
+
if (provider) return provider;
|
|
837
|
+
try {
|
|
838
|
+
return getProviderFromModel(model);
|
|
839
|
+
} catch {
|
|
840
|
+
return void 0;
|
|
841
|
+
}
|
|
842
|
+
})();
|
|
843
|
+
if (registryProvider === "openrouter" && model.includes("/")) {
|
|
844
|
+
const dynamicModel = getOpenRouterGatewayModelById(model);
|
|
845
|
+
if (dynamicModel?.reasoning === true) return true;
|
|
846
|
+
if (dynamicModel?.reasoning === false) return false;
|
|
847
|
+
}
|
|
848
|
+
if (registryProvider) {
|
|
849
|
+
const modelInfo = findModelInfo(registryProvider, model);
|
|
850
|
+
if (modelInfo?.reasoning === true) return true;
|
|
851
|
+
if (modelInfo?.reasoning === false) return false;
|
|
852
|
+
}
|
|
853
|
+
const modelIdForHeuristics = model.includes("/") ? model.split("/").pop() ?? model : model;
|
|
854
|
+
const modelLower = modelIdForHeuristics.toLowerCase();
|
|
755
855
|
if (modelLower.includes("codex")) {
|
|
756
856
|
return true;
|
|
757
857
|
}
|
|
@@ -24,17 +24,58 @@ export interface ModelPricing {
|
|
|
24
24
|
outputPerM: number;
|
|
25
25
|
cacheReadPerM?: number;
|
|
26
26
|
cacheWritePerM?: number;
|
|
27
|
+
reasoningPerM?: number;
|
|
28
|
+
inputAudioPerM?: number;
|
|
29
|
+
outputAudioPerM?: number;
|
|
30
|
+
contextOver200kPerM?: {
|
|
31
|
+
inputPerM: number;
|
|
32
|
+
outputPerM: number;
|
|
33
|
+
};
|
|
27
34
|
currency?: 'USD';
|
|
28
35
|
unit?: 'per_million_tokens';
|
|
29
36
|
}
|
|
37
|
+
export type ModelModality = 'text' | 'audio' | 'image' | 'video' | 'pdf';
|
|
38
|
+
export interface ModelModalities {
|
|
39
|
+
input: ModelModality[];
|
|
40
|
+
output: ModelModality[];
|
|
41
|
+
}
|
|
42
|
+
export interface ModelProviderMetadata {
|
|
43
|
+
npm?: string;
|
|
44
|
+
api?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ModelInterleavedMetadata {
|
|
47
|
+
field?: string;
|
|
48
|
+
[key: string]: unknown;
|
|
49
|
+
}
|
|
30
50
|
export interface ModelInfo {
|
|
31
51
|
name: string;
|
|
32
52
|
maxInputTokens: number;
|
|
33
53
|
default?: boolean;
|
|
34
54
|
supportedFileTypes: SupportedFileType[];
|
|
35
55
|
displayName?: string;
|
|
56
|
+
/**
|
|
57
|
+
* models.dev capability hints (optional).
|
|
58
|
+
* - reasoning: model is marketed/flagged as a "reasoning" model / supports explicit reasoning mode.
|
|
59
|
+
* - supportsTemperature: model supports a temperature parameter (some reasoning models don't).
|
|
60
|
+
* - supportsInterleaved: model supports interleaved reasoning/content streaming paradigms.
|
|
61
|
+
*/
|
|
62
|
+
reasoning?: boolean;
|
|
63
|
+
supportsTemperature?: boolean;
|
|
64
|
+
supportsInterleaved?: boolean;
|
|
65
|
+
releaseDate?: string;
|
|
66
|
+
supportsToolCall?: boolean;
|
|
67
|
+
status?: string;
|
|
68
|
+
modalities?: ModelModalities;
|
|
69
|
+
providerMetadata?: ModelProviderMetadata;
|
|
70
|
+
interleaved?: true | ModelInterleavedMetadata;
|
|
36
71
|
pricing?: ModelPricing;
|
|
37
72
|
}
|
|
73
|
+
export interface ModelsDevProviderMetadata {
|
|
74
|
+
env: string[];
|
|
75
|
+
npm?: string;
|
|
76
|
+
api?: string;
|
|
77
|
+
doc?: string;
|
|
78
|
+
}
|
|
38
79
|
export declare const MIME_TYPE_TO_FILE_TYPE: Record<string, SupportedFileType>;
|
|
39
80
|
export declare function getAllowedMimeTypes(): string[];
|
|
40
81
|
export interface ProviderInfo {
|
|
@@ -42,6 +83,7 @@ export interface ProviderInfo {
|
|
|
42
83
|
baseURLSupport: 'none' | 'optional' | 'required';
|
|
43
84
|
supportedFileTypes: SupportedFileType[];
|
|
44
85
|
supportsCustomModels?: boolean;
|
|
86
|
+
modelsDev?: ModelsDevProviderMetadata;
|
|
45
87
|
/**
|
|
46
88
|
* When true, this provider can access all models from all other providers in the registry.
|
|
47
89
|
* Used for gateway providers like 'dexto-nova' that route to multiple upstream providers.
|
|
@@ -260,14 +302,16 @@ export declare function getModelPricing(provider: LLMProvider, model: string): M
|
|
|
260
302
|
*/
|
|
261
303
|
export declare function getModelDisplayName(model: string, provider?: LLMProvider): string;
|
|
262
304
|
/**
|
|
263
|
-
* Checks if a model
|
|
264
|
-
*
|
|
305
|
+
* Checks if a model is flagged as "reasoning-capable" by the registry (models.dev).
|
|
306
|
+
*
|
|
307
|
+
* Note: This is distinct from "supports tunable reasoning knobs". Some providers/models may
|
|
308
|
+
* have reasoning but limited/implicit tuning controls.
|
|
265
309
|
*
|
|
266
310
|
* @param model The model name to check.
|
|
267
311
|
* @param provider Optional provider for context (defaults to detecting from model name).
|
|
268
|
-
* @returns True if the model
|
|
312
|
+
* @returns True if the registry marks this model as reasoning-capable.
|
|
269
313
|
*/
|
|
270
|
-
export declare function isReasoningCapableModel(model: string,
|
|
314
|
+
export declare function isReasoningCapableModel(model: string, provider?: LLMProvider): boolean;
|
|
271
315
|
/**
|
|
272
316
|
* Calculates the cost for a given token usage based on model pricing.
|
|
273
317
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/llm/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/llm/registry/index.ts"],"names":[],"mappings":"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"}
|