@juspay/neurolink 11.3.0 → 11.4.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 +2 -2
- package/dist/adapters/providerImageAdapter.js +1 -1
- package/dist/browser/neurolink.min.js +6 -6
- package/dist/cli/commands/mcp.js +8 -8
- package/dist/constants/contextWindows.js +1 -1
- package/dist/constants/enums.d.ts +3 -2
- package/dist/constants/enums.js +7 -3
- package/dist/constants/tokens.d.ts +1 -1
- package/dist/constants/tokens.js +1 -1
- package/dist/lib/adapters/providerImageAdapter.js +1 -1
- package/dist/lib/constants/contextWindows.js +1 -1
- package/dist/lib/constants/enums.d.ts +3 -2
- package/dist/lib/constants/enums.js +7 -3
- package/dist/lib/constants/tokens.d.ts +1 -1
- package/dist/lib/constants/tokens.js +1 -1
- 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/providers/googleVertex/constants.js +1 -1
- package/dist/lib/types/model.d.ts +77 -0
- 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/providers/googleVertex/constants.js +1 -1
- package/dist/types/model.d.ts +77 -0
- package/package.json +3 -2
package/dist/cli/commands/mcp.js
CHANGED
|
@@ -1545,7 +1545,7 @@ export class MCPCommandFactory {
|
|
|
1545
1545
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
1546
1546
|
tools: [
|
|
1547
1547
|
${tools
|
|
1548
|
-
.map((toolName) => ` { name: "${toolName}", description: "
|
|
1548
|
+
.map((toolName) => ` { name: "${toolName}", description: "Add a description for ${toolName}", inputSchema: { type: "object", properties: {}, required: [] } },`)
|
|
1549
1549
|
.join("\n")}
|
|
1550
1550
|
],
|
|
1551
1551
|
}));
|
|
@@ -1554,7 +1554,7 @@ ${tools
|
|
|
1554
1554
|
switch (request.params.name) {
|
|
1555
1555
|
${tools
|
|
1556
1556
|
.map((toolName) => ` case "${toolName}":
|
|
1557
|
-
//
|
|
1557
|
+
// Implement ${toolName} tool logic here
|
|
1558
1558
|
return {
|
|
1559
1559
|
content: [{ type: "text", text: "${toolName} executed successfully" }],
|
|
1560
1560
|
};`)
|
|
@@ -1661,7 +1661,7 @@ npm run build # Build for production
|
|
|
1661
1661
|
|
|
1662
1662
|
## Tools
|
|
1663
1663
|
|
|
1664
|
-
${tools.length > 0 ? tools.map((t) => `- **${t}**:
|
|
1664
|
+
${tools.length > 0 ? tools.map((t) => `- **${t}**: add a description`).join("\n") : "- **hello**: A simple hello tool"}
|
|
1665
1665
|
`;
|
|
1666
1666
|
fs.writeFileSync(path.join(serverDir, "README.md"), readme);
|
|
1667
1667
|
}
|
|
@@ -1682,7 +1682,7 @@ ${tools.length > 0 ? tools.map((t) => `- **${t}**: TODO: Add description`).join(
|
|
|
1682
1682
|
const _safeName = toolName.replace(/-/g, "_");
|
|
1683
1683
|
const keyword = index === 0 ? "if" : "elif";
|
|
1684
1684
|
return ` ${keyword} name == "${toolName}":
|
|
1685
|
-
#
|
|
1685
|
+
# Implement ${toolName} tool logic here
|
|
1686
1686
|
return [TextContent(type="text", text="${toolName} executed successfully")]`;
|
|
1687
1687
|
})
|
|
1688
1688
|
.join("\n");
|
|
@@ -1710,7 +1710,7 @@ async def call_tool(name: str, arguments: dict) -> list[TextContent]:
|
|
|
1710
1710
|
.map((toolName) => `
|
|
1711
1711
|
Tool(
|
|
1712
1712
|
name="${toolName}",
|
|
1713
|
-
description="
|
|
1713
|
+
description="Add a description for ${toolName}",
|
|
1714
1714
|
inputSchema={
|
|
1715
1715
|
"type": "object",
|
|
1716
1716
|
"properties": {},
|
|
@@ -1798,7 +1798,7 @@ neurolink mcp add ${serverName} python ${path.join(serverDir, "server.py")}
|
|
|
1798
1798
|
|
|
1799
1799
|
## Tools
|
|
1800
1800
|
|
|
1801
|
-
${tools.length > 0 ? tools.map((t) => `- **${t}**:
|
|
1801
|
+
${tools.length > 0 ? tools.map((t) => `- **${t}**: add a description`).join("\n") : "- **hello**: A simple hello tool"}
|
|
1802
1802
|
`;
|
|
1803
1803
|
fs.writeFileSync(path.join(serverDir, "README.md"), readme);
|
|
1804
1804
|
}
|
|
@@ -1840,7 +1840,7 @@ if (handlers[request.params.name]) {
|
|
|
1840
1840
|
};
|
|
1841
1841
|
}`;
|
|
1842
1842
|
const toolList = tools.length > 0
|
|
1843
|
-
? tools.map((t) => `{ name: "${t}", description: "
|
|
1843
|
+
? tools.map((t) => `{ name: "${t}", description: "Add a description", inputSchema: { type: "object", properties: {} } }`)
|
|
1844
1844
|
: [
|
|
1845
1845
|
`{ name: "hello", description: "A simple hello tool", inputSchema: { type: "object", properties: { name: { type: "string" } }, required: ["name"] } }`,
|
|
1846
1846
|
];
|
|
@@ -1896,7 +1896,7 @@ neurolink mcp add ${serverName} node ${path.join(serverDir, "server.js")}
|
|
|
1896
1896
|
|
|
1897
1897
|
## Tools
|
|
1898
1898
|
|
|
1899
|
-
${tools.length > 0 ? tools.map((t) => `- **${t}**:
|
|
1899
|
+
${tools.length > 0 ? tools.map((t) => `- **${t}**: add a description`).join("\n") : "- **hello**: A simple hello tool"}
|
|
1900
1900
|
`;
|
|
1901
1901
|
fs.writeFileSync(path.join(serverDir, "README.md"), readme);
|
|
1902
1902
|
}
|
|
@@ -285,7 +285,7 @@ export const MODEL_CONTEXT_WINDOWS = {
|
|
|
285
285
|
"anthropic.claude-opus-4-6-v1:0": 1_000_000,
|
|
286
286
|
"anthropic.claude-sonnet-4-6": 1_000_000,
|
|
287
287
|
// Claude 4.5
|
|
288
|
-
"anthropic.claude-opus-4-5-
|
|
288
|
+
"anthropic.claude-opus-4-5-20251101-v1:0": 200_000,
|
|
289
289
|
"anthropic.claude-sonnet-4-5-20250929-v1:0": 200_000,
|
|
290
290
|
"anthropic.claude-haiku-4-5-20251001-v1:0": 200_000,
|
|
291
291
|
// Claude legacy
|
|
@@ -69,7 +69,7 @@ export declare enum OpenRouterModels {
|
|
|
69
69
|
export declare enum BedrockModels {
|
|
70
70
|
CLAUDE_4_6_OPUS = "anthropic.claude-opus-4-6-v1:0",
|
|
71
71
|
CLAUDE_4_6_SONNET = "anthropic.claude-sonnet-4-6",
|
|
72
|
-
CLAUDE_4_5_OPUS = "anthropic.claude-opus-4-5-
|
|
72
|
+
CLAUDE_4_5_OPUS = "anthropic.claude-opus-4-5-20251101-v1:0",
|
|
73
73
|
CLAUDE_4_5_SONNET = "anthropic.claude-sonnet-4-5-20250929-v1:0",
|
|
74
74
|
CLAUDE_4_5_HAIKU = "anthropic.claude-haiku-4-5-20251001-v1:0",
|
|
75
75
|
CLAUDE_4_1_OPUS = "anthropic.claude-opus-4-1-20250805-v1:0",
|
|
@@ -256,7 +256,7 @@ export declare enum AzureOpenAIModels {
|
|
|
256
256
|
export declare enum VertexModels {
|
|
257
257
|
CLAUDE_4_6_OPUS = "claude-opus-4-6",
|
|
258
258
|
CLAUDE_4_6_SONNET = "claude-sonnet-4-6",
|
|
259
|
-
CLAUDE_4_5_OPUS = "claude-opus-4-5@
|
|
259
|
+
CLAUDE_4_5_OPUS = "claude-opus-4-5@20251101",
|
|
260
260
|
CLAUDE_4_5_SONNET = "claude-sonnet-4-5@20250929",
|
|
261
261
|
CLAUDE_4_5_HAIKU = "claude-haiku-4-5@20251001",
|
|
262
262
|
CLAUDE_4_0_SONNET = "claude-sonnet-4@20250514",
|
|
@@ -329,6 +329,7 @@ export declare enum GoogleAIModels {
|
|
|
329
329
|
* Supported Models for Anthropic (Direct API)
|
|
330
330
|
*/
|
|
331
331
|
export declare enum AnthropicModels {
|
|
332
|
+
CLAUDE_SONNET_5 = "claude-sonnet-5",
|
|
332
333
|
CLAUDE_OPUS_4_6 = "claude-opus-4-6",
|
|
333
334
|
CLAUDE_SONNET_4_6 = "claude-sonnet-4-6",
|
|
334
335
|
CLAUDE_OPUS_4_5 = "claude-opus-4-5-20251101",
|
package/dist/constants/enums.js
CHANGED
|
@@ -91,7 +91,7 @@ export var BedrockModels;
|
|
|
91
91
|
BedrockModels["CLAUDE_4_6_OPUS"] = "anthropic.claude-opus-4-6-v1:0";
|
|
92
92
|
BedrockModels["CLAUDE_4_6_SONNET"] = "anthropic.claude-sonnet-4-6";
|
|
93
93
|
// Claude 4.5 Series (September-November 2025)
|
|
94
|
-
BedrockModels["CLAUDE_4_5_OPUS"] = "anthropic.claude-opus-4-5-
|
|
94
|
+
BedrockModels["CLAUDE_4_5_OPUS"] = "anthropic.claude-opus-4-5-20251101-v1:0";
|
|
95
95
|
BedrockModels["CLAUDE_4_5_SONNET"] = "anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
96
96
|
BedrockModels["CLAUDE_4_5_HAIKU"] = "anthropic.claude-haiku-4-5-20251001-v1:0";
|
|
97
97
|
// Claude 4 Series (May-August 2025)
|
|
@@ -356,7 +356,7 @@ export var VertexModels;
|
|
|
356
356
|
VertexModels["CLAUDE_4_6_OPUS"] = "claude-opus-4-6";
|
|
357
357
|
VertexModels["CLAUDE_4_6_SONNET"] = "claude-sonnet-4-6";
|
|
358
358
|
// Claude 4.5 Series (September-November 2025)
|
|
359
|
-
VertexModels["CLAUDE_4_5_OPUS"] = "claude-opus-4-5@
|
|
359
|
+
VertexModels["CLAUDE_4_5_OPUS"] = "claude-opus-4-5@20251101";
|
|
360
360
|
VertexModels["CLAUDE_4_5_SONNET"] = "claude-sonnet-4-5@20250929";
|
|
361
361
|
VertexModels["CLAUDE_4_5_HAIKU"] = "claude-haiku-4-5@20251001";
|
|
362
362
|
// Claude 4 Series (May 2025)
|
|
@@ -446,7 +446,11 @@ export var GoogleAIModels;
|
|
|
446
446
|
*/
|
|
447
447
|
export var AnthropicModels;
|
|
448
448
|
(function (AnthropicModels) {
|
|
449
|
-
// Claude
|
|
449
|
+
// Claude 5 Series (mid 2026) — see MODEL_CONTEXT_WINDOWS.anthropic
|
|
450
|
+
// (src/lib/constants/contextWindows.ts) for the 1M context window this id
|
|
451
|
+
// already carries there.
|
|
452
|
+
AnthropicModels["CLAUDE_SONNET_5"] = "claude-sonnet-5";
|
|
453
|
+
// Claude 4.6 Series (February 2026)
|
|
450
454
|
AnthropicModels["CLAUDE_OPUS_4_6"] = "claude-opus-4-6";
|
|
451
455
|
AnthropicModels["CLAUDE_SONNET_4_6"] = "claude-sonnet-4-6";
|
|
452
456
|
// Claude 4.5 Series (September-November 2025)
|
|
@@ -122,7 +122,7 @@ export declare const PROVIDER_TOKEN_LIMITS: {
|
|
|
122
122
|
readonly "gemini-1.5-pro": 8192;
|
|
123
123
|
readonly "gemini-1.5-flash": 8192;
|
|
124
124
|
readonly "claude-sonnet-4-5@20250929": 8192;
|
|
125
|
-
readonly "claude-opus-4-5@
|
|
125
|
+
readonly "claude-opus-4-5@20251101": 8192;
|
|
126
126
|
readonly "claude-haiku-4-5@20251001": 8192;
|
|
127
127
|
readonly "claude-sonnet-4@20250514": 4096;
|
|
128
128
|
readonly "claude-opus-4@20250514": 4096;
|
package/dist/constants/tokens.js
CHANGED
|
@@ -136,7 +136,7 @@ export const PROVIDER_TOKEN_LIMITS = {
|
|
|
136
136
|
"gemini-1.5-flash": 8192,
|
|
137
137
|
// Claude 4.5 Series (September-November 2025)
|
|
138
138
|
"claude-sonnet-4-5@20250929": 8192,
|
|
139
|
-
"claude-opus-4-5@
|
|
139
|
+
"claude-opus-4-5@20251101": 8192,
|
|
140
140
|
"claude-haiku-4-5@20251001": 8192,
|
|
141
141
|
// Claude 4 Series (May 2025)
|
|
142
142
|
"claude-sonnet-4@20250514": 4096,
|
|
@@ -412,7 +412,7 @@ const VISION_CAPABILITIES = {
|
|
|
412
412
|
"claude-opus-4-5",
|
|
413
413
|
"claude-opus-4.5",
|
|
414
414
|
"anthropic.claude-opus-4-5",
|
|
415
|
-
"anthropic.claude-opus-4-5-
|
|
415
|
+
"anthropic.claude-opus-4-5-20251101-v1:0",
|
|
416
416
|
"claude-haiku-4-5",
|
|
417
417
|
"claude-haiku-4.5",
|
|
418
418
|
"anthropic.claude-haiku-4-5",
|
|
@@ -285,7 +285,7 @@ export const MODEL_CONTEXT_WINDOWS = {
|
|
|
285
285
|
"anthropic.claude-opus-4-6-v1:0": 1_000_000,
|
|
286
286
|
"anthropic.claude-sonnet-4-6": 1_000_000,
|
|
287
287
|
// Claude 4.5
|
|
288
|
-
"anthropic.claude-opus-4-5-
|
|
288
|
+
"anthropic.claude-opus-4-5-20251101-v1:0": 200_000,
|
|
289
289
|
"anthropic.claude-sonnet-4-5-20250929-v1:0": 200_000,
|
|
290
290
|
"anthropic.claude-haiku-4-5-20251001-v1:0": 200_000,
|
|
291
291
|
// Claude legacy
|
|
@@ -69,7 +69,7 @@ export declare enum OpenRouterModels {
|
|
|
69
69
|
export declare enum BedrockModels {
|
|
70
70
|
CLAUDE_4_6_OPUS = "anthropic.claude-opus-4-6-v1:0",
|
|
71
71
|
CLAUDE_4_6_SONNET = "anthropic.claude-sonnet-4-6",
|
|
72
|
-
CLAUDE_4_5_OPUS = "anthropic.claude-opus-4-5-
|
|
72
|
+
CLAUDE_4_5_OPUS = "anthropic.claude-opus-4-5-20251101-v1:0",
|
|
73
73
|
CLAUDE_4_5_SONNET = "anthropic.claude-sonnet-4-5-20250929-v1:0",
|
|
74
74
|
CLAUDE_4_5_HAIKU = "anthropic.claude-haiku-4-5-20251001-v1:0",
|
|
75
75
|
CLAUDE_4_1_OPUS = "anthropic.claude-opus-4-1-20250805-v1:0",
|
|
@@ -256,7 +256,7 @@ export declare enum AzureOpenAIModels {
|
|
|
256
256
|
export declare enum VertexModels {
|
|
257
257
|
CLAUDE_4_6_OPUS = "claude-opus-4-6",
|
|
258
258
|
CLAUDE_4_6_SONNET = "claude-sonnet-4-6",
|
|
259
|
-
CLAUDE_4_5_OPUS = "claude-opus-4-5@
|
|
259
|
+
CLAUDE_4_5_OPUS = "claude-opus-4-5@20251101",
|
|
260
260
|
CLAUDE_4_5_SONNET = "claude-sonnet-4-5@20250929",
|
|
261
261
|
CLAUDE_4_5_HAIKU = "claude-haiku-4-5@20251001",
|
|
262
262
|
CLAUDE_4_0_SONNET = "claude-sonnet-4@20250514",
|
|
@@ -329,6 +329,7 @@ export declare enum GoogleAIModels {
|
|
|
329
329
|
* Supported Models for Anthropic (Direct API)
|
|
330
330
|
*/
|
|
331
331
|
export declare enum AnthropicModels {
|
|
332
|
+
CLAUDE_SONNET_5 = "claude-sonnet-5",
|
|
332
333
|
CLAUDE_OPUS_4_6 = "claude-opus-4-6",
|
|
333
334
|
CLAUDE_SONNET_4_6 = "claude-sonnet-4-6",
|
|
334
335
|
CLAUDE_OPUS_4_5 = "claude-opus-4-5-20251101",
|
|
@@ -91,7 +91,7 @@ export var BedrockModels;
|
|
|
91
91
|
BedrockModels["CLAUDE_4_6_OPUS"] = "anthropic.claude-opus-4-6-v1:0";
|
|
92
92
|
BedrockModels["CLAUDE_4_6_SONNET"] = "anthropic.claude-sonnet-4-6";
|
|
93
93
|
// Claude 4.5 Series (September-November 2025)
|
|
94
|
-
BedrockModels["CLAUDE_4_5_OPUS"] = "anthropic.claude-opus-4-5-
|
|
94
|
+
BedrockModels["CLAUDE_4_5_OPUS"] = "anthropic.claude-opus-4-5-20251101-v1:0";
|
|
95
95
|
BedrockModels["CLAUDE_4_5_SONNET"] = "anthropic.claude-sonnet-4-5-20250929-v1:0";
|
|
96
96
|
BedrockModels["CLAUDE_4_5_HAIKU"] = "anthropic.claude-haiku-4-5-20251001-v1:0";
|
|
97
97
|
// Claude 4 Series (May-August 2025)
|
|
@@ -356,7 +356,7 @@ export var VertexModels;
|
|
|
356
356
|
VertexModels["CLAUDE_4_6_OPUS"] = "claude-opus-4-6";
|
|
357
357
|
VertexModels["CLAUDE_4_6_SONNET"] = "claude-sonnet-4-6";
|
|
358
358
|
// Claude 4.5 Series (September-November 2025)
|
|
359
|
-
VertexModels["CLAUDE_4_5_OPUS"] = "claude-opus-4-5@
|
|
359
|
+
VertexModels["CLAUDE_4_5_OPUS"] = "claude-opus-4-5@20251101";
|
|
360
360
|
VertexModels["CLAUDE_4_5_SONNET"] = "claude-sonnet-4-5@20250929";
|
|
361
361
|
VertexModels["CLAUDE_4_5_HAIKU"] = "claude-haiku-4-5@20251001";
|
|
362
362
|
// Claude 4 Series (May 2025)
|
|
@@ -446,7 +446,11 @@ export var GoogleAIModels;
|
|
|
446
446
|
*/
|
|
447
447
|
export var AnthropicModels;
|
|
448
448
|
(function (AnthropicModels) {
|
|
449
|
-
// Claude
|
|
449
|
+
// Claude 5 Series (mid 2026) — see MODEL_CONTEXT_WINDOWS.anthropic
|
|
450
|
+
// (src/lib/constants/contextWindows.ts) for the 1M context window this id
|
|
451
|
+
// already carries there.
|
|
452
|
+
AnthropicModels["CLAUDE_SONNET_5"] = "claude-sonnet-5";
|
|
453
|
+
// Claude 4.6 Series (February 2026)
|
|
450
454
|
AnthropicModels["CLAUDE_OPUS_4_6"] = "claude-opus-4-6";
|
|
451
455
|
AnthropicModels["CLAUDE_SONNET_4_6"] = "claude-sonnet-4-6";
|
|
452
456
|
// Claude 4.5 Series (September-November 2025)
|
|
@@ -122,7 +122,7 @@ export declare const PROVIDER_TOKEN_LIMITS: {
|
|
|
122
122
|
readonly "gemini-1.5-pro": 8192;
|
|
123
123
|
readonly "gemini-1.5-flash": 8192;
|
|
124
124
|
readonly "claude-sonnet-4-5@20250929": 8192;
|
|
125
|
-
readonly "claude-opus-4-5@
|
|
125
|
+
readonly "claude-opus-4-5@20251101": 8192;
|
|
126
126
|
readonly "claude-haiku-4-5@20251001": 8192;
|
|
127
127
|
readonly "claude-sonnet-4@20250514": 4096;
|
|
128
128
|
readonly "claude-opus-4@20250514": 4096;
|
|
@@ -136,7 +136,7 @@ export const PROVIDER_TOKEN_LIMITS = {
|
|
|
136
136
|
"gemini-1.5-flash": 8192,
|
|
137
137
|
// Claude 4.5 Series (September-November 2025)
|
|
138
138
|
"claude-sonnet-4-5@20250929": 8192,
|
|
139
|
-
"claude-opus-4-5@
|
|
139
|
+
"claude-opus-4-5@20251101": 8192,
|
|
140
140
|
"claude-haiku-4-5@20251001": 8192,
|
|
141
141
|
// Claude 4 Series (May 2025)
|
|
142
142
|
"claude-sonnet-4@20250514": 4096,
|
|
@@ -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;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { PROVIDER_MAX_TOKENS } from "../core/constants.js";
|
|
2
|
+
import { anthropicManifest } from "./manifests/anthropic.js";
|
|
3
|
+
import { openaiManifest } from "./manifests/openai.js";
|
|
4
|
+
import { azureManifest } from "./manifests/azure.js";
|
|
5
|
+
import { bedrockManifest } from "./manifests/bedrock.js";
|
|
6
|
+
import { ollamaManifest } from "./manifests/ollama.js";
|
|
7
|
+
import { mistralManifest } from "./manifests/mistral.js";
|
|
8
|
+
import { googleAiManifest } from "./manifests/google-ai.js";
|
|
9
|
+
import { openaiCompatibleManifest } from "./manifests/openai-compatible.js";
|
|
10
|
+
import { openrouterManifest } from "./manifests/openrouter.js";
|
|
11
|
+
import { vertexManifest } from "./manifests/vertex.js";
|
|
12
|
+
import { huggingfaceManifest } from "./manifests/huggingface.js";
|
|
13
|
+
import { litellmManifest } from "./manifests/litellm.js";
|
|
14
|
+
import { sagemakerManifest } from "./manifests/sagemaker.js";
|
|
15
|
+
import { deepseekManifest } from "./manifests/deepseek.js";
|
|
16
|
+
import { nvidiaNimManifest } from "./manifests/nvidia-nim.js";
|
|
17
|
+
import { lmStudioManifest } from "./manifests/lm-studio.js";
|
|
18
|
+
import { llamacppManifest } from "./manifests/llamacpp.js";
|
|
19
|
+
import { xaiManifest } from "./manifests/xai.js";
|
|
20
|
+
import { groqManifest } from "./manifests/groq.js";
|
|
21
|
+
import { cohereManifest } from "./manifests/cohere.js";
|
|
22
|
+
import { togetherAiManifest } from "./manifests/together-ai.js";
|
|
23
|
+
import { fireworksManifest } from "./manifests/fireworks.js";
|
|
24
|
+
import { perplexityManifest } from "./manifests/perplexity.js";
|
|
25
|
+
import { cloudflareManifest } from "./manifests/cloudflare.js";
|
|
26
|
+
import { replicateManifest } from "./manifests/replicate.js";
|
|
27
|
+
import { voyageManifest } from "./manifests/voyage.js";
|
|
28
|
+
import { jinaManifest } from "./manifests/jina.js";
|
|
29
|
+
import { stabilityManifest } from "./manifests/stability.js";
|
|
30
|
+
import { ideogramManifest } from "./manifests/ideogram.js";
|
|
31
|
+
import { recraftManifest } from "./manifests/recraft.js";
|
|
32
|
+
/**
|
|
33
|
+
* Every provider's model manifest, keyed by the exact AIProviderName enum
|
|
34
|
+
* value (kebab-case) — e.g. "google-ai", "nvidia-nim". Manifests are pure
|
|
35
|
+
* data with zero heavy dependencies, so they are imported statically here
|
|
36
|
+
* (Critical Rule 1's dynamic-import mandate targets providerRegistry.ts's
|
|
37
|
+
* *provider* factories, which pull in real SDK clients — not this).
|
|
38
|
+
*/
|
|
39
|
+
export const MANIFEST_REGISTRY = {
|
|
40
|
+
anthropic: anthropicManifest,
|
|
41
|
+
openai: openaiManifest,
|
|
42
|
+
azure: azureManifest,
|
|
43
|
+
bedrock: bedrockManifest,
|
|
44
|
+
ollama: ollamaManifest,
|
|
45
|
+
mistral: mistralManifest,
|
|
46
|
+
"google-ai": googleAiManifest,
|
|
47
|
+
"openai-compatible": openaiCompatibleManifest,
|
|
48
|
+
openrouter: openrouterManifest,
|
|
49
|
+
vertex: vertexManifest,
|
|
50
|
+
huggingface: huggingfaceManifest,
|
|
51
|
+
litellm: litellmManifest,
|
|
52
|
+
sagemaker: sagemakerManifest,
|
|
53
|
+
deepseek: deepseekManifest,
|
|
54
|
+
"nvidia-nim": nvidiaNimManifest,
|
|
55
|
+
"lm-studio": lmStudioManifest,
|
|
56
|
+
llamacpp: llamacppManifest,
|
|
57
|
+
xai: xaiManifest,
|
|
58
|
+
groq: groqManifest,
|
|
59
|
+
cohere: cohereManifest,
|
|
60
|
+
"together-ai": togetherAiManifest,
|
|
61
|
+
fireworks: fireworksManifest,
|
|
62
|
+
perplexity: perplexityManifest,
|
|
63
|
+
cloudflare: cloudflareManifest,
|
|
64
|
+
replicate: replicateManifest,
|
|
65
|
+
voyage: voyageManifest,
|
|
66
|
+
jina: jinaManifest,
|
|
67
|
+
stability: stabilityManifest,
|
|
68
|
+
ideogram: ideogramManifest,
|
|
69
|
+
recraft: recraftManifest,
|
|
70
|
+
};
|
|
71
|
+
export function getManifestForProvider(provider) {
|
|
72
|
+
return MANIFEST_REGISTRY[provider];
|
|
73
|
+
}
|
|
74
|
+
export function getAllManifestProviders() {
|
|
75
|
+
return Object.keys(MANIFEST_REGISTRY);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Apply every matching family rule's patch, in declaration order, on top of
|
|
79
|
+
* a base entry. Later rules win on overlapping fields (last patch applied
|
|
80
|
+
* wins), matching the "later registrations overwrite earlier ones" idiom
|
|
81
|
+
* used elsewhere in this subsystem (see registerRuntimeContextWindow's
|
|
82
|
+
* docblock, src/lib/constants/contextWindows.ts).
|
|
83
|
+
*/
|
|
84
|
+
function applyFamilyRules(manifest, model, base) {
|
|
85
|
+
if (!manifest.familyRules) {
|
|
86
|
+
return base;
|
|
87
|
+
}
|
|
88
|
+
let result = base;
|
|
89
|
+
for (const rule of manifest.familyRules) {
|
|
90
|
+
if (rule.pattern.test(model)) {
|
|
91
|
+
result = { ...result, ...rule.patch };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Resolve a model against a provider's manifest WITHOUT ever falling back to
|
|
98
|
+
* the provider's `_default` entry. Used by callers that need to insert their
|
|
99
|
+
* own special-case fallback (cross-provider pricing, proxy pass-through)
|
|
100
|
+
* between "no real match" and "give up" — see resolveManifestEntry's
|
|
101
|
+
* docblock for why the split exists.
|
|
102
|
+
*
|
|
103
|
+
* Resolution order: exact canonical id, then a declared alias, then
|
|
104
|
+
* longest-prefix match (for tagged/gateway-shaped ids like Ollama's
|
|
105
|
+
* "llama3.2:latest" or OpenRouter's "openai/gpt-4o"), then undefined.
|
|
106
|
+
* Family rules are applied on top of whichever entry matched.
|
|
107
|
+
*/
|
|
108
|
+
export function resolveManifestEntryExact(provider, model) {
|
|
109
|
+
const manifest = MANIFEST_REGISTRY[provider];
|
|
110
|
+
if (!manifest) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
const exact = manifest.models[model];
|
|
114
|
+
if (exact) {
|
|
115
|
+
return applyFamilyRules(manifest, model, exact);
|
|
116
|
+
}
|
|
117
|
+
const aliasMatch = Object.entries(manifest.models).find(([canonicalId, entry]) => canonicalId !== "_default" && entry.aliases.includes(model));
|
|
118
|
+
if (aliasMatch) {
|
|
119
|
+
return applyFamilyRules(manifest, model, aliasMatch[1]);
|
|
120
|
+
}
|
|
121
|
+
const sortedKeys = Object.keys(manifest.models)
|
|
122
|
+
.filter((k) => k !== "_default")
|
|
123
|
+
.sort((a, b) => b.length - a.length);
|
|
124
|
+
const prefixKey = sortedKeys.find((k) => model.startsWith(k));
|
|
125
|
+
if (prefixKey) {
|
|
126
|
+
return applyFamilyRules(manifest, model, manifest.models[prefixKey]);
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Provider-specific output-token ceiling used to synthesize a `_default`
|
|
132
|
+
* entry when a manifest declares no explicit one (currently every
|
|
133
|
+
* MODEL_REGISTRY-generated manifest — azure, bedrock, ollama, mistral,
|
|
134
|
+
* google-ai — since `generateFullManifest` only emits real model ids).
|
|
135
|
+
* Mirrors the same table + fallback chain the minimal-manifest generator
|
|
136
|
+
* already uses (scripts/generate-remaining-manifests.ts), so a provider
|
|
137
|
+
* with no PROVIDER_MAX_TOKENS entry still gets an honest ceiling instead of
|
|
138
|
+
* `undefined`. Clamped against the manifest's own `defaultContextWindow` —
|
|
139
|
+
* an output ceiling can never legitimately exceed total context.
|
|
140
|
+
*/
|
|
141
|
+
function defaultMaxOutputTokens(provider, defaultContextWindow) {
|
|
142
|
+
const providerLimits = PROVIDER_MAX_TOKENS[provider];
|
|
143
|
+
const rawMax = typeof providerLimits === "number"
|
|
144
|
+
? providerLimits
|
|
145
|
+
: (providerLimits?.default ?? PROVIDER_MAX_TOKENS.default);
|
|
146
|
+
return Math.min(rawMax, defaultContextWindow);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Resolve a model against a provider's manifest, falling back to the
|
|
150
|
+
* provider's `_default` entry (synthesized from `PROVIDER_MAX_TOKENS`,
|
|
151
|
+
* clamped to `defaultContextWindow`, when no explicit `_default` model
|
|
152
|
+
* entry exists) when no real model matches. Family rules are tested
|
|
153
|
+
* against the ORIGINAL model string even on the `_default` path, so an
|
|
154
|
+
* unmatched gateway-shaped id still gets patched.
|
|
155
|
+
*/
|
|
156
|
+
export function resolveManifestEntry(provider, model) {
|
|
157
|
+
const exact = resolveManifestEntryExact(provider, model);
|
|
158
|
+
if (exact) {
|
|
159
|
+
return exact;
|
|
160
|
+
}
|
|
161
|
+
const manifest = MANIFEST_REGISTRY[provider];
|
|
162
|
+
if (!manifest) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
const defaultEntry = manifest.models._default ?? {
|
|
166
|
+
aliases: [],
|
|
167
|
+
contextWindow: manifest.defaultContextWindow,
|
|
168
|
+
maxOutputTokens: defaultMaxOutputTokens(provider, manifest.defaultContextWindow),
|
|
169
|
+
vision: false,
|
|
170
|
+
functionCalling: false,
|
|
171
|
+
};
|
|
172
|
+
return applyFamilyRules(manifest, model, defaultEntry);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=manifestRegistry.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProviderModelManifest } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Anthropic model manifest. Canonical ids match AnthropicModels
|
|
4
|
+
* (src/lib/constants/enums.ts:524+) and MODEL_CONTEXT_WINDOWS.anthropic
|
|
5
|
+
* (src/lib/constants/contextWindows.ts:160-182). maxOutputTokens values
|
|
6
|
+
* come from getClaudeMaxOutputTokens (src/lib/utils/tokenLimits.ts) — the
|
|
7
|
+
* regex ladder already authoritative for native Claude request paths.
|
|
8
|
+
*/
|
|
9
|
+
export declare const anthropicManifest: ProviderModelManifest;
|