@juspay/neurolink 11.3.1 → 11.5.0
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/CHANGELOG.md +6 -2
- package/dist/adapters/providerImageAdapter.js +3 -1
- package/dist/browser/neurolink.min.js +276 -276
- package/dist/constants/contextWindows.js +1 -1
- package/dist/constants/enums.d.ts +26 -1
- package/dist/constants/enums.js +37 -3
- package/dist/lib/adapters/providerImageAdapter.js +3 -1
- package/dist/lib/constants/contextWindows.js +1 -1
- package/dist/lib/constants/enums.d.ts +26 -1
- package/dist/lib/constants/enums.js +37 -3
- package/dist/lib/models/manifestRegistry.d.ts +33 -0
- package/dist/lib/models/manifestRegistry.js +174 -0
- package/dist/lib/models/manifests/anthropic.d.ts +9 -0
- package/dist/lib/models/manifests/anthropic.js +346 -0
- package/dist/lib/models/manifests/azure.d.ts +2 -0
- package/dist/lib/models/manifests/azure.js +87 -0
- package/dist/lib/models/manifests/bedrock.d.ts +2 -0
- package/dist/lib/models/manifests/bedrock.js +75 -0
- package/dist/lib/models/manifests/cloudflare.d.ts +8 -0
- package/dist/lib/models/manifests/cloudflare.js +19 -0
- package/dist/lib/models/manifests/cohere.d.ts +8 -0
- package/dist/lib/models/manifests/cohere.js +19 -0
- package/dist/lib/models/manifests/deepseek.d.ts +8 -0
- package/dist/lib/models/manifests/deepseek.js +19 -0
- package/dist/lib/models/manifests/fireworks.d.ts +8 -0
- package/dist/lib/models/manifests/fireworks.js +19 -0
- package/dist/lib/models/manifests/google-ai.d.ts +2 -0
- package/dist/lib/models/manifests/google-ai.js +28 -0
- package/dist/lib/models/manifests/groq.d.ts +8 -0
- package/dist/lib/models/manifests/groq.js +19 -0
- package/dist/lib/models/manifests/huggingface.d.ts +8 -0
- package/dist/lib/models/manifests/huggingface.js +19 -0
- package/dist/lib/models/manifests/ideogram.d.ts +8 -0
- package/dist/lib/models/manifests/ideogram.js +19 -0
- package/dist/lib/models/manifests/jina.d.ts +8 -0
- package/dist/lib/models/manifests/jina.js +19 -0
- package/dist/lib/models/manifests/litellm.d.ts +8 -0
- package/dist/lib/models/manifests/litellm.js +19 -0
- package/dist/lib/models/manifests/llamacpp.d.ts +8 -0
- package/dist/lib/models/manifests/llamacpp.js +19 -0
- package/dist/lib/models/manifests/lm-studio.d.ts +8 -0
- package/dist/lib/models/manifests/lm-studio.js +19 -0
- package/dist/lib/models/manifests/mistral.d.ts +2 -0
- package/dist/lib/models/manifests/mistral.js +50 -0
- package/dist/lib/models/manifests/nvidia-nim.d.ts +8 -0
- package/dist/lib/models/manifests/nvidia-nim.js +19 -0
- package/dist/lib/models/manifests/ollama.d.ts +2 -0
- package/dist/lib/models/manifests/ollama.js +72 -0
- package/dist/lib/models/manifests/openai-compatible.d.ts +8 -0
- package/dist/lib/models/manifests/openai-compatible.js +19 -0
- package/dist/lib/models/manifests/openai.d.ts +11 -0
- package/dist/lib/models/manifests/openai.js +560 -0
- package/dist/lib/models/manifests/openrouter.d.ts +8 -0
- package/dist/lib/models/manifests/openrouter.js +19 -0
- package/dist/lib/models/manifests/perplexity.d.ts +8 -0
- package/dist/lib/models/manifests/perplexity.js +19 -0
- package/dist/lib/models/manifests/recraft.d.ts +8 -0
- package/dist/lib/models/manifests/recraft.js +19 -0
- package/dist/lib/models/manifests/replicate.d.ts +8 -0
- package/dist/lib/models/manifests/replicate.js +19 -0
- package/dist/lib/models/manifests/sagemaker.d.ts +8 -0
- package/dist/lib/models/manifests/sagemaker.js +19 -0
- package/dist/lib/models/manifests/stability.d.ts +8 -0
- package/dist/lib/models/manifests/stability.js +19 -0
- package/dist/lib/models/manifests/together-ai.d.ts +8 -0
- package/dist/lib/models/manifests/together-ai.js +19 -0
- package/dist/lib/models/manifests/vertex.d.ts +8 -0
- package/dist/lib/models/manifests/vertex.js +19 -0
- package/dist/lib/models/manifests/voyage.d.ts +8 -0
- package/dist/lib/models/manifests/voyage.js +19 -0
- package/dist/lib/models/manifests/xai.d.ts +8 -0
- package/dist/lib/models/manifests/xai.js +19 -0
- package/dist/lib/models/modelRegistry.js +225 -7
- package/dist/lib/types/model.d.ts +77 -0
- package/dist/lib/utils/modelChoices.js +0 -1
- package/dist/models/manifestRegistry.d.ts +33 -0
- package/dist/models/manifestRegistry.js +173 -0
- package/dist/models/manifests/anthropic.d.ts +9 -0
- package/dist/models/manifests/anthropic.js +345 -0
- package/dist/models/manifests/azure.d.ts +2 -0
- package/dist/models/manifests/azure.js +86 -0
- package/dist/models/manifests/bedrock.d.ts +2 -0
- package/dist/models/manifests/bedrock.js +74 -0
- package/dist/models/manifests/cloudflare.d.ts +8 -0
- package/dist/models/manifests/cloudflare.js +18 -0
- package/dist/models/manifests/cohere.d.ts +8 -0
- package/dist/models/manifests/cohere.js +18 -0
- package/dist/models/manifests/deepseek.d.ts +8 -0
- package/dist/models/manifests/deepseek.js +18 -0
- package/dist/models/manifests/fireworks.d.ts +8 -0
- package/dist/models/manifests/fireworks.js +18 -0
- package/dist/models/manifests/google-ai.d.ts +2 -0
- package/dist/models/manifests/google-ai.js +27 -0
- package/dist/models/manifests/groq.d.ts +8 -0
- package/dist/models/manifests/groq.js +18 -0
- package/dist/models/manifests/huggingface.d.ts +8 -0
- package/dist/models/manifests/huggingface.js +18 -0
- package/dist/models/manifests/ideogram.d.ts +8 -0
- package/dist/models/manifests/ideogram.js +18 -0
- package/dist/models/manifests/jina.d.ts +8 -0
- package/dist/models/manifests/jina.js +18 -0
- package/dist/models/manifests/litellm.d.ts +8 -0
- package/dist/models/manifests/litellm.js +18 -0
- package/dist/models/manifests/llamacpp.d.ts +8 -0
- package/dist/models/manifests/llamacpp.js +18 -0
- package/dist/models/manifests/lm-studio.d.ts +8 -0
- package/dist/models/manifests/lm-studio.js +18 -0
- package/dist/models/manifests/mistral.d.ts +2 -0
- package/dist/models/manifests/mistral.js +49 -0
- package/dist/models/manifests/nvidia-nim.d.ts +8 -0
- package/dist/models/manifests/nvidia-nim.js +18 -0
- package/dist/models/manifests/ollama.d.ts +2 -0
- package/dist/models/manifests/ollama.js +71 -0
- package/dist/models/manifests/openai-compatible.d.ts +8 -0
- package/dist/models/manifests/openai-compatible.js +18 -0
- package/dist/models/manifests/openai.d.ts +11 -0
- package/dist/models/manifests/openai.js +559 -0
- package/dist/models/manifests/openrouter.d.ts +8 -0
- package/dist/models/manifests/openrouter.js +18 -0
- package/dist/models/manifests/perplexity.d.ts +8 -0
- package/dist/models/manifests/perplexity.js +18 -0
- package/dist/models/manifests/recraft.d.ts +8 -0
- package/dist/models/manifests/recraft.js +18 -0
- package/dist/models/manifests/replicate.d.ts +8 -0
- package/dist/models/manifests/replicate.js +18 -0
- package/dist/models/manifests/sagemaker.d.ts +8 -0
- package/dist/models/manifests/sagemaker.js +18 -0
- package/dist/models/manifests/stability.d.ts +8 -0
- package/dist/models/manifests/stability.js +18 -0
- package/dist/models/manifests/together-ai.d.ts +8 -0
- package/dist/models/manifests/together-ai.js +18 -0
- package/dist/models/manifests/vertex.d.ts +8 -0
- package/dist/models/manifests/vertex.js +18 -0
- package/dist/models/manifests/voyage.d.ts +8 -0
- package/dist/models/manifests/voyage.js +18 -0
- package/dist/models/manifests/xai.d.ts +8 -0
- package/dist/models/manifests/xai.js +18 -0
- package/dist/models/modelRegistry.js +225 -7
- package/dist/types/model.d.ts +77 -0
- package/dist/utils/modelChoices.js +0 -1
- package/package.json +5 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal manifest: sagemaker has no MODEL_REGISTRY entries today, so
|
|
3
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
4
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
5
|
+
* metadata consolidation plan.
|
|
6
|
+
*/
|
|
7
|
+
export const sagemakerManifest = {
|
|
8
|
+
defaultContextWindow: 128000,
|
|
9
|
+
models: {
|
|
10
|
+
_default: {
|
|
11
|
+
aliases: [],
|
|
12
|
+
contextWindow: 128000,
|
|
13
|
+
maxOutputTokens: 64000,
|
|
14
|
+
vision: false,
|
|
15
|
+
functionCalling: false,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=sagemaker.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProviderModelManifest } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal manifest: stability has no MODEL_REGISTRY entries today, so
|
|
4
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
5
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
6
|
+
* metadata consolidation plan.
|
|
7
|
+
*/
|
|
8
|
+
export declare const stabilityManifest: ProviderModelManifest;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal manifest: stability has no MODEL_REGISTRY entries today, so
|
|
3
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
4
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
5
|
+
* metadata consolidation plan.
|
|
6
|
+
*/
|
|
7
|
+
export const stabilityManifest = {
|
|
8
|
+
defaultContextWindow: 2000,
|
|
9
|
+
models: {
|
|
10
|
+
_default: {
|
|
11
|
+
aliases: [],
|
|
12
|
+
contextWindow: 2000,
|
|
13
|
+
maxOutputTokens: 2000,
|
|
14
|
+
vision: false,
|
|
15
|
+
functionCalling: false,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=stability.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProviderModelManifest } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal manifest: together-ai has no MODEL_REGISTRY entries today, so
|
|
4
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
5
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
6
|
+
* metadata consolidation plan.
|
|
7
|
+
*/
|
|
8
|
+
export declare const togetherAiManifest: ProviderModelManifest;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal manifest: together-ai has no MODEL_REGISTRY entries today, so
|
|
3
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
4
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
5
|
+
* metadata consolidation plan.
|
|
6
|
+
*/
|
|
7
|
+
export const togetherAiManifest = {
|
|
8
|
+
defaultContextWindow: 128000,
|
|
9
|
+
models: {
|
|
10
|
+
_default: {
|
|
11
|
+
aliases: [],
|
|
12
|
+
contextWindow: 128000,
|
|
13
|
+
maxOutputTokens: 64000,
|
|
14
|
+
vision: false,
|
|
15
|
+
functionCalling: false,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=together-ai.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProviderModelManifest } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal manifest: vertex has no MODEL_REGISTRY entries today, so
|
|
4
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
5
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
6
|
+
* metadata consolidation plan.
|
|
7
|
+
*/
|
|
8
|
+
export declare const vertexManifest: ProviderModelManifest;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal manifest: vertex has no MODEL_REGISTRY entries today, so
|
|
3
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
4
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
5
|
+
* metadata consolidation plan.
|
|
6
|
+
*/
|
|
7
|
+
export const vertexManifest = {
|
|
8
|
+
defaultContextWindow: 1048576,
|
|
9
|
+
models: {
|
|
10
|
+
_default: {
|
|
11
|
+
aliases: [],
|
|
12
|
+
contextWindow: 1048576,
|
|
13
|
+
maxOutputTokens: 64000,
|
|
14
|
+
vision: false,
|
|
15
|
+
functionCalling: false,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=vertex.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProviderModelManifest } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal manifest: voyage has no MODEL_REGISTRY entries today, so
|
|
4
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
5
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
6
|
+
* metadata consolidation plan.
|
|
7
|
+
*/
|
|
8
|
+
export declare const voyageManifest: ProviderModelManifest;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal manifest: voyage has no MODEL_REGISTRY entries today, so
|
|
3
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
4
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
5
|
+
* metadata consolidation plan.
|
|
6
|
+
*/
|
|
7
|
+
export const voyageManifest = {
|
|
8
|
+
defaultContextWindow: 32000,
|
|
9
|
+
models: {
|
|
10
|
+
_default: {
|
|
11
|
+
aliases: [],
|
|
12
|
+
contextWindow: 32000,
|
|
13
|
+
maxOutputTokens: 32000,
|
|
14
|
+
vision: false,
|
|
15
|
+
functionCalling: false,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=voyage.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProviderModelManifest } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal manifest: xai has no MODEL_REGISTRY entries today, so
|
|
4
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
5
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
6
|
+
* metadata consolidation plan.
|
|
7
|
+
*/
|
|
8
|
+
export declare const xaiManifest: ProviderModelManifest;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal manifest: xai has no MODEL_REGISTRY entries today, so
|
|
3
|
+
* only the provider-wide fallback is known. Named models can be added here
|
|
4
|
+
* incrementally without touching any consumer — see Task 5 of the model
|
|
5
|
+
* metadata consolidation plan.
|
|
6
|
+
*/
|
|
7
|
+
export const xaiManifest = {
|
|
8
|
+
defaultContextWindow: 131072,
|
|
9
|
+
models: {
|
|
10
|
+
_default: {
|
|
11
|
+
aliases: [],
|
|
12
|
+
contextWindow: 131072,
|
|
13
|
+
maxOutputTokens: 64000,
|
|
14
|
+
vision: false,
|
|
15
|
+
functionCalling: false,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=xai.js.map
|
|
@@ -1046,8 +1046,11 @@ export const MODEL_REGISTRY = {
|
|
|
1046
1046
|
jsonMode: false,
|
|
1047
1047
|
},
|
|
1048
1048
|
pricing: {
|
|
1049
|
-
|
|
1050
|
-
|
|
1049
|
+
// $5 / $25 per MTok. Was 0.015/0.075 — Claude 3 Opus's rate, left
|
|
1050
|
+
// behind when the entry was updated to 4.5, so every cost estimate
|
|
1051
|
+
// for this model came out 3x high.
|
|
1052
|
+
inputCostPer1K: 0.005,
|
|
1053
|
+
outputCostPer1K: 0.025,
|
|
1051
1054
|
currency: "USD",
|
|
1052
1055
|
},
|
|
1053
1056
|
performance: {
|
|
@@ -1071,7 +1074,9 @@ export const MODEL_REGISTRY = {
|
|
|
1071
1074
|
},
|
|
1072
1075
|
aliases: [
|
|
1073
1076
|
"claude-4.5-opus",
|
|
1074
|
-
"claude-opus-latest"
|
|
1077
|
+
// "claude-opus-latest" now belongs to CLAUDE_OPUS_5. An alias declared
|
|
1078
|
+
// on two entries silently resolves to whichever appears later in this
|
|
1079
|
+
// object, so a "latest" pointer must live on exactly one model.
|
|
1075
1080
|
"opus-4.5",
|
|
1076
1081
|
"anthropic-flagship",
|
|
1077
1082
|
],
|
|
@@ -1080,6 +1085,210 @@ export const MODEL_REGISTRY = {
|
|
|
1080
1085
|
releaseDate: "2025-11-24",
|
|
1081
1086
|
category: "reasoning",
|
|
1082
1087
|
},
|
|
1088
|
+
// Claude 5 and 4.7/4.8. Limits and pricing from Anthropic's models
|
|
1089
|
+
// overview comparison tables. All current Claude models take image input;
|
|
1090
|
+
// these use adaptive thinking rather than the older `thinking.type`
|
|
1091
|
+
// extended-thinking switch, which the overview marks "No" for each.
|
|
1092
|
+
[AnthropicModels.CLAUDE_OPUS_5]: {
|
|
1093
|
+
id: AnthropicModels.CLAUDE_OPUS_5,
|
|
1094
|
+
name: "Claude Opus 5",
|
|
1095
|
+
provider: AIProviderName.ANTHROPIC,
|
|
1096
|
+
description: "For complex agentic coding and enterprise work",
|
|
1097
|
+
capabilities: {
|
|
1098
|
+
vision: true,
|
|
1099
|
+
functionCalling: true,
|
|
1100
|
+
codeGeneration: true,
|
|
1101
|
+
reasoning: true,
|
|
1102
|
+
multimodal: true,
|
|
1103
|
+
streaming: true,
|
|
1104
|
+
jsonMode: false,
|
|
1105
|
+
},
|
|
1106
|
+
pricing: {
|
|
1107
|
+
inputCostPer1K: 0.005,
|
|
1108
|
+
outputCostPer1K: 0.025,
|
|
1109
|
+
currency: "USD",
|
|
1110
|
+
},
|
|
1111
|
+
performance: { speed: "medium", quality: "high", accuracy: "high" },
|
|
1112
|
+
limits: {
|
|
1113
|
+
maxContextTokens: 1000000,
|
|
1114
|
+
maxOutputTokens: 128000,
|
|
1115
|
+
maxRequestsPerMinute: 50,
|
|
1116
|
+
},
|
|
1117
|
+
useCases: {
|
|
1118
|
+
coding: 10,
|
|
1119
|
+
creative: 10,
|
|
1120
|
+
analysis: 10,
|
|
1121
|
+
conversation: 9,
|
|
1122
|
+
reasoning: 10,
|
|
1123
|
+
translation: 9,
|
|
1124
|
+
summarization: 9,
|
|
1125
|
+
},
|
|
1126
|
+
aliases: ["opus-5", "claude-opus-latest"],
|
|
1127
|
+
deprecated: false,
|
|
1128
|
+
isLocal: false,
|
|
1129
|
+
releaseDate: "2026-07-24",
|
|
1130
|
+
category: "reasoning",
|
|
1131
|
+
},
|
|
1132
|
+
[AnthropicModels.CLAUDE_SONNET_5]: {
|
|
1133
|
+
id: AnthropicModels.CLAUDE_SONNET_5,
|
|
1134
|
+
name: "Claude Sonnet 5",
|
|
1135
|
+
provider: AIProviderName.ANTHROPIC,
|
|
1136
|
+
description: "The best combination of speed and intelligence",
|
|
1137
|
+
capabilities: {
|
|
1138
|
+
vision: true,
|
|
1139
|
+
functionCalling: true,
|
|
1140
|
+
codeGeneration: true,
|
|
1141
|
+
reasoning: true,
|
|
1142
|
+
multimodal: true,
|
|
1143
|
+
streaming: true,
|
|
1144
|
+
jsonMode: false,
|
|
1145
|
+
},
|
|
1146
|
+
pricing: {
|
|
1147
|
+
inputCostPer1K: 0.002,
|
|
1148
|
+
outputCostPer1K: 0.01,
|
|
1149
|
+
currency: "USD",
|
|
1150
|
+
},
|
|
1151
|
+
performance: { speed: "fast", quality: "high", accuracy: "high" },
|
|
1152
|
+
limits: {
|
|
1153
|
+
maxContextTokens: 1000000,
|
|
1154
|
+
maxOutputTokens: 128000,
|
|
1155
|
+
maxRequestsPerMinute: 50,
|
|
1156
|
+
},
|
|
1157
|
+
useCases: {
|
|
1158
|
+
coding: 9,
|
|
1159
|
+
creative: 9,
|
|
1160
|
+
analysis: 9,
|
|
1161
|
+
conversation: 9,
|
|
1162
|
+
reasoning: 9,
|
|
1163
|
+
translation: 9,
|
|
1164
|
+
summarization: 9,
|
|
1165
|
+
},
|
|
1166
|
+
aliases: ["sonnet-5", "claude-sonnet-latest"],
|
|
1167
|
+
deprecated: false,
|
|
1168
|
+
isLocal: false,
|
|
1169
|
+
releaseDate: "2026-06-30",
|
|
1170
|
+
category: "general",
|
|
1171
|
+
},
|
|
1172
|
+
[AnthropicModels.CLAUDE_FABLE_5]: {
|
|
1173
|
+
id: AnthropicModels.CLAUDE_FABLE_5,
|
|
1174
|
+
name: "Claude Fable 5",
|
|
1175
|
+
provider: AIProviderName.ANTHROPIC,
|
|
1176
|
+
description: "Next-generation intelligence for long-running agents",
|
|
1177
|
+
capabilities: {
|
|
1178
|
+
vision: true,
|
|
1179
|
+
functionCalling: true,
|
|
1180
|
+
codeGeneration: true,
|
|
1181
|
+
reasoning: true,
|
|
1182
|
+
multimodal: true,
|
|
1183
|
+
streaming: true,
|
|
1184
|
+
jsonMode: false,
|
|
1185
|
+
},
|
|
1186
|
+
pricing: {
|
|
1187
|
+
inputCostPer1K: 0.01,
|
|
1188
|
+
outputCostPer1K: 0.05,
|
|
1189
|
+
currency: "USD",
|
|
1190
|
+
},
|
|
1191
|
+
performance: { speed: "slow", quality: "high", accuracy: "high" },
|
|
1192
|
+
limits: {
|
|
1193
|
+
maxContextTokens: 1000000,
|
|
1194
|
+
maxOutputTokens: 128000,
|
|
1195
|
+
maxRequestsPerMinute: 50,
|
|
1196
|
+
},
|
|
1197
|
+
useCases: {
|
|
1198
|
+
coding: 10,
|
|
1199
|
+
creative: 10,
|
|
1200
|
+
analysis: 10,
|
|
1201
|
+
conversation: 9,
|
|
1202
|
+
reasoning: 10,
|
|
1203
|
+
translation: 9,
|
|
1204
|
+
summarization: 9,
|
|
1205
|
+
},
|
|
1206
|
+
aliases: ["fable-5"],
|
|
1207
|
+
deprecated: false,
|
|
1208
|
+
isLocal: false,
|
|
1209
|
+
releaseDate: "2026-06-09",
|
|
1210
|
+
category: "reasoning",
|
|
1211
|
+
},
|
|
1212
|
+
[AnthropicModels.CLAUDE_OPUS_4_8]: {
|
|
1213
|
+
id: AnthropicModels.CLAUDE_OPUS_4_8,
|
|
1214
|
+
name: "Claude Opus 4.8",
|
|
1215
|
+
provider: AIProviderName.ANTHROPIC,
|
|
1216
|
+
description: "Anthropic Opus 4.8, superseded by Claude Opus 5",
|
|
1217
|
+
capabilities: {
|
|
1218
|
+
vision: true,
|
|
1219
|
+
functionCalling: true,
|
|
1220
|
+
codeGeneration: true,
|
|
1221
|
+
reasoning: true,
|
|
1222
|
+
multimodal: true,
|
|
1223
|
+
streaming: true,
|
|
1224
|
+
jsonMode: false,
|
|
1225
|
+
},
|
|
1226
|
+
pricing: {
|
|
1227
|
+
inputCostPer1K: 0.005,
|
|
1228
|
+
outputCostPer1K: 0.025,
|
|
1229
|
+
currency: "USD",
|
|
1230
|
+
},
|
|
1231
|
+
performance: { speed: "medium", quality: "high", accuracy: "high" },
|
|
1232
|
+
limits: {
|
|
1233
|
+
maxContextTokens: 1000000,
|
|
1234
|
+
maxOutputTokens: 128000,
|
|
1235
|
+
maxRequestsPerMinute: 50,
|
|
1236
|
+
},
|
|
1237
|
+
useCases: {
|
|
1238
|
+
coding: 10,
|
|
1239
|
+
creative: 9,
|
|
1240
|
+
analysis: 10,
|
|
1241
|
+
conversation: 9,
|
|
1242
|
+
reasoning: 10,
|
|
1243
|
+
translation: 9,
|
|
1244
|
+
summarization: 9,
|
|
1245
|
+
},
|
|
1246
|
+
aliases: ["opus-4.8"],
|
|
1247
|
+
deprecated: false,
|
|
1248
|
+
isLocal: false,
|
|
1249
|
+
releaseDate: "2026-05-28",
|
|
1250
|
+
category: "reasoning",
|
|
1251
|
+
},
|
|
1252
|
+
[AnthropicModels.CLAUDE_OPUS_4_7]: {
|
|
1253
|
+
id: AnthropicModels.CLAUDE_OPUS_4_7,
|
|
1254
|
+
name: "Claude Opus 4.7",
|
|
1255
|
+
provider: AIProviderName.ANTHROPIC,
|
|
1256
|
+
description: "Anthropic Opus 4.7, superseded by Claude Opus 4.8",
|
|
1257
|
+
capabilities: {
|
|
1258
|
+
vision: true,
|
|
1259
|
+
functionCalling: true,
|
|
1260
|
+
codeGeneration: true,
|
|
1261
|
+
reasoning: true,
|
|
1262
|
+
multimodal: true,
|
|
1263
|
+
streaming: true,
|
|
1264
|
+
jsonMode: false,
|
|
1265
|
+
},
|
|
1266
|
+
pricing: {
|
|
1267
|
+
inputCostPer1K: 0.005,
|
|
1268
|
+
outputCostPer1K: 0.025,
|
|
1269
|
+
currency: "USD",
|
|
1270
|
+
},
|
|
1271
|
+
performance: { speed: "medium", quality: "high", accuracy: "high" },
|
|
1272
|
+
limits: {
|
|
1273
|
+
maxContextTokens: 1000000,
|
|
1274
|
+
maxOutputTokens: 128000,
|
|
1275
|
+
maxRequestsPerMinute: 50,
|
|
1276
|
+
},
|
|
1277
|
+
useCases: {
|
|
1278
|
+
coding: 10,
|
|
1279
|
+
creative: 9,
|
|
1280
|
+
analysis: 10,
|
|
1281
|
+
conversation: 9,
|
|
1282
|
+
reasoning: 10,
|
|
1283
|
+
translation: 9,
|
|
1284
|
+
summarization: 9,
|
|
1285
|
+
},
|
|
1286
|
+
aliases: ["opus-4.7"],
|
|
1287
|
+
deprecated: false,
|
|
1288
|
+
isLocal: false,
|
|
1289
|
+
releaseDate: "2026-04-16",
|
|
1290
|
+
category: "reasoning",
|
|
1291
|
+
},
|
|
1083
1292
|
[AnthropicModels.CLAUDE_SONNET_4_5]: {
|
|
1084
1293
|
id: AnthropicModels.CLAUDE_SONNET_4_5,
|
|
1085
1294
|
name: "Claude Sonnet 4.5",
|
|
@@ -1118,7 +1327,9 @@ export const MODEL_REGISTRY = {
|
|
|
1118
1327
|
translation: 8,
|
|
1119
1328
|
summarization: 8,
|
|
1120
1329
|
},
|
|
1121
|
-
|
|
1330
|
+
// "claude-sonnet-latest" now belongs to CLAUDE_SONNET_5 — see the note
|
|
1331
|
+
// on CLAUDE_OPUS_4_5's aliases.
|
|
1332
|
+
aliases: ["claude-4.5-sonnet", "sonnet-4.5"],
|
|
1122
1333
|
deprecated: false,
|
|
1123
1334
|
isLocal: false,
|
|
1124
1335
|
releaseDate: "2025-09-29",
|
|
@@ -1433,7 +1644,10 @@ export const MODEL_REGISTRY = {
|
|
|
1433
1644
|
summarization: 8,
|
|
1434
1645
|
},
|
|
1435
1646
|
aliases: ["pixtral", "mistral-vision"],
|
|
1436
|
-
|
|
1647
|
+
// Retired by Mistral on 2026-05-31. Kept so exact-id and alias lookups
|
|
1648
|
+
// still resolve for existing callers; `deprecated` removes it from
|
|
1649
|
+
// `models list` and the recommendation paths.
|
|
1650
|
+
deprecated: true,
|
|
1437
1651
|
isLocal: false,
|
|
1438
1652
|
releaseDate: "2024-09-01",
|
|
1439
1653
|
category: "vision",
|
|
@@ -2227,7 +2441,9 @@ export const MODEL_REGISTRY = {
|
|
|
2227
2441
|
summarization: 9,
|
|
2228
2442
|
},
|
|
2229
2443
|
aliases: ["azure-gpt-5-turbo", "gpt5-turbo-azure"],
|
|
2230
|
-
|
|
2444
|
+
// Azure OpenAI has never published a "gpt-5-turbo"; the id cannot be
|
|
2445
|
+
// deployed. Flagged so it stops being offered as a live choice.
|
|
2446
|
+
deprecated: true,
|
|
2231
2447
|
isLocal: false,
|
|
2232
2448
|
releaseDate: "2025-08-07",
|
|
2233
2449
|
category: "general",
|
|
@@ -2327,7 +2543,9 @@ export const USE_CASE_RECOMMENDATIONS = {
|
|
|
2327
2543
|
OpenAIModels.GPT_5_2_PRO,
|
|
2328
2544
|
AnthropicModels.CLAUDE_OPUS_4_5,
|
|
2329
2545
|
GoogleAIModels.GEMINI_2_5_PRO,
|
|
2330
|
-
|
|
2546
|
+
// Mistral's Pixtral Large sat here until it was retired on 2026-05-31.
|
|
2547
|
+
// Left without a substitute rather than guessing at a replacement's
|
|
2548
|
+
// vision support.
|
|
2331
2549
|
BedrockModels.NOVA_PREMIER,
|
|
2332
2550
|
],
|
|
2333
2551
|
};
|
|
@@ -263,3 +263,80 @@ export type ModelRoutingOptions = {
|
|
|
263
263
|
/** Fallback strategy if primary choice fails */
|
|
264
264
|
fallbackStrategy?: "fast" | "reasoning" | "auto";
|
|
265
265
|
};
|
|
266
|
+
/**
|
|
267
|
+
* A single model's metadata inside a provider's manifest. This is the one
|
|
268
|
+
* canonical shape every model-metadata consumer (context windows, pricing,
|
|
269
|
+
* MODEL_REGISTRY, vision capability, output-token ceilings) is intended to
|
|
270
|
+
* migrate onto — this PR is purely additive and does not yet move any
|
|
271
|
+
* consumer over.
|
|
272
|
+
*
|
|
273
|
+
* `pricingPerMTok` is optional by design: a model with no verified price
|
|
274
|
+
* (e.g. a just-announced model pricing.ts hasn't priced yet) must not report
|
|
275
|
+
* a fabricated rate. Absence here means "unknown", not "free" — callers that
|
|
276
|
+
* need to distinguish "free" from "unknown" already have `hasPricing()`
|
|
277
|
+
* (src/lib/utils/pricing.ts) for that.
|
|
278
|
+
*/
|
|
279
|
+
export type ProviderModelManifestEntry = {
|
|
280
|
+
/** Alternate identifiers that resolve to this canonical model id. */
|
|
281
|
+
aliases: string[];
|
|
282
|
+
/** Human-readable name. Falls back to a mechanical id-derived name when absent. */
|
|
283
|
+
displayName?: string;
|
|
284
|
+
contextWindow: number;
|
|
285
|
+
maxOutputTokens: number;
|
|
286
|
+
pricingPerMTok?: {
|
|
287
|
+
input: number;
|
|
288
|
+
output: number;
|
|
289
|
+
cacheRead?: number;
|
|
290
|
+
cacheWrite?: number;
|
|
291
|
+
};
|
|
292
|
+
vision: boolean;
|
|
293
|
+
nativeAudio?: boolean;
|
|
294
|
+
functionCalling: boolean;
|
|
295
|
+
reasoning?: boolean;
|
|
296
|
+
jsonMode?: boolean;
|
|
297
|
+
/**
|
|
298
|
+
* Whether the model accepts classic sampling parameters (temperature/topP).
|
|
299
|
+
* Mirrors ModelCapabilities.samplingParams (src/lib/types/model.ts:131) —
|
|
300
|
+
* unset means supported.
|
|
301
|
+
*/
|
|
302
|
+
samplingParams?: boolean;
|
|
303
|
+
/**
|
|
304
|
+
* Hand-tuned ModelInfo.performance/useCases/category values, carried
|
|
305
|
+
* forward verbatim for the ids that already had a MODEL_REGISTRY entry
|
|
306
|
+
* before this migration. Absent for every id that never had one — those
|
|
307
|
+
* get performance/useCases/category derived mechanically instead (see
|
|
308
|
+
* Task 9's buildModelRegistryFromManifests). Never populate this for a
|
|
309
|
+
* genuinely new model: mechanical derivation is the correct default, and
|
|
310
|
+
* a fabricated "curated" value would be worse than an honestly-derived one.
|
|
311
|
+
*/
|
|
312
|
+
curated?: {
|
|
313
|
+
performance?: ModelPerformance;
|
|
314
|
+
useCases?: UseCaseSuitability;
|
|
315
|
+
category?: ModelInfo["category"];
|
|
316
|
+
};
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* A regex-driven patch applied to an unlisted, gateway-shaped model id that
|
|
320
|
+
* matches `pattern` (e.g. "vertex_ai/claude-sonnet-5@20260203"). Generalizes
|
|
321
|
+
* the pattern VISION_FAMILY_RULES (src/lib/adapters/providerImageAdapter.ts)
|
|
322
|
+
* and SAMPLING_PARAM_REJECTING_FAMILIES (src/lib/models/modelRegistry.ts)
|
|
323
|
+
* already use independently, keyed per-provider instead of globally.
|
|
324
|
+
*/
|
|
325
|
+
export type ManifestFamilyRule = {
|
|
326
|
+
pattern: RegExp;
|
|
327
|
+
patch: Partial<ProviderModelManifestEntry>;
|
|
328
|
+
};
|
|
329
|
+
/**
|
|
330
|
+
* One provider's complete model manifest: every model NeuroLink knows about
|
|
331
|
+
* for that provider, plus the provider-wide fallback used when a caller
|
|
332
|
+
* passes a model id the manifest has never seen (a symbolic/local provider
|
|
333
|
+
* model, or a brand-new release the manifest hasn't been updated for yet).
|
|
334
|
+
*/
|
|
335
|
+
export type ProviderModelManifest = {
|
|
336
|
+
/** Used for `_default`-key lookups and providers with no named-model list. */
|
|
337
|
+
defaultContextWindow: number;
|
|
338
|
+
/** Applied, in order, to the resolved entry (see manifestRegistry.ts). */
|
|
339
|
+
familyRules?: ManifestFamilyRule[];
|
|
340
|
+
/** Keyed by canonical model id (the same id `ModelInfo.id` / AIProvider calls use). */
|
|
341
|
+
models: Record<string, ProviderModelManifestEntry>;
|
|
342
|
+
};
|
|
@@ -138,7 +138,6 @@ const TOP_MODELS_CONFIG = {
|
|
|
138
138
|
model: MistralModels.CODESTRAL_LATEST,
|
|
139
139
|
description: "Specialized for code",
|
|
140
140
|
},
|
|
141
|
-
{ model: MistralModels.PIXTRAL_LARGE, description: "Multimodal vision" },
|
|
142
141
|
{
|
|
143
142
|
model: MistralModels.MAGISTRAL_MEDIUM_LATEST,
|
|
144
143
|
description: "Reasoning model",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ProviderModelManifest, ProviderModelManifestEntry } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Every provider's model manifest, keyed by the exact AIProviderName enum
|
|
4
|
+
* value (kebab-case) — e.g. "google-ai", "nvidia-nim". Manifests are pure
|
|
5
|
+
* data with zero heavy dependencies, so they are imported statically here
|
|
6
|
+
* (Critical Rule 1's dynamic-import mandate targets providerRegistry.ts's
|
|
7
|
+
* *provider* factories, which pull in real SDK clients — not this).
|
|
8
|
+
*/
|
|
9
|
+
export declare const MANIFEST_REGISTRY: Record<string, ProviderModelManifest>;
|
|
10
|
+
export declare function getManifestForProvider(provider: string): ProviderModelManifest | undefined;
|
|
11
|
+
export declare function getAllManifestProviders(): string[];
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a model against a provider's manifest WITHOUT ever falling back to
|
|
14
|
+
* the provider's `_default` entry. Used by callers that need to insert their
|
|
15
|
+
* own special-case fallback (cross-provider pricing, proxy pass-through)
|
|
16
|
+
* between "no real match" and "give up" — see resolveManifestEntry's
|
|
17
|
+
* docblock for why the split exists.
|
|
18
|
+
*
|
|
19
|
+
* Resolution order: exact canonical id, then a declared alias, then
|
|
20
|
+
* longest-prefix match (for tagged/gateway-shaped ids like Ollama's
|
|
21
|
+
* "llama3.2:latest" or OpenRouter's "openai/gpt-4o"), then undefined.
|
|
22
|
+
* Family rules are applied on top of whichever entry matched.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveManifestEntryExact(provider: string, model: string): ProviderModelManifestEntry | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Resolve a model against a provider's manifest, falling back to the
|
|
27
|
+
* provider's `_default` entry (synthesized from `PROVIDER_MAX_TOKENS`,
|
|
28
|
+
* clamped to `defaultContextWindow`, when no explicit `_default` model
|
|
29
|
+
* entry exists) when no real model matches. Family rules are tested
|
|
30
|
+
* against the ORIGINAL model string even on the `_default` path, so an
|
|
31
|
+
* unmatched gateway-shaped id still gets patched.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveManifestEntry(provider: string, model: string): ProviderModelManifestEntry | undefined;
|