@juspay/neurolink 12.23.3 → 12.24.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 +3 -4
- package/dist/browser/neurolink.min.js +367 -367
- package/dist/constants/enums.d.ts +61 -69
- package/dist/constants/enums.js +63 -96
- package/dist/factories/providerDescriptors.d.ts +1 -1
- package/dist/factories/providerDescriptors.js +50 -83
- package/dist/factories/providerRegistry.js +9 -16
- package/dist/models/manifestRegistry.js +11 -2
- package/dist/providers/catalog/deepseek.json +84 -0
- package/dist/providers/catalog/huggingface.json +405 -0
- package/dist/providers/catalog/index.generated.d.ts +1 -1
- package/dist/providers/catalog/index.generated.js +6 -0
- package/dist/providers/catalog/loader.js +20 -5
- package/dist/providers/catalog/mistral.json +8 -3
- package/dist/providers/catalog/provider-catalog.schema.json +31 -1
- package/dist/providers/catalog/schema.d.ts +8 -1
- package/dist/providers/catalog/schema.js +9 -1
- package/dist/providers/configuredOpenAICompat.d.ts +14 -5
- package/dist/providers/configuredOpenAICompat.js +19 -4
- package/dist/providers/embeddingResponseParsing.d.ts +1 -0
- package/dist/providers/embeddingResponseParsing.js +47 -0
- package/dist/providers/ideogram.js +7 -1
- package/dist/providers/jina.js +6 -15
- package/dist/providers/llamaCpp.js +4 -15
- package/dist/providers/lmStudio.js +4 -15
- package/dist/providers/localRuntimeOpenAICompat.d.ts +16 -0
- package/dist/providers/localRuntimeOpenAICompat.js +26 -0
- package/dist/providers/ollama/client.js +3 -9
- package/dist/providers/openaiChatCompletionsBase.d.ts +3 -3
- package/dist/providers/openaiChatCompletionsBase.js +3 -3
- package/dist/providers/openaiCompatCatalog.d.ts +16 -12
- package/dist/providers/openaiCompatCatalog.js +16 -12
- package/dist/providers/voyage.js +5 -18
- package/dist/types/providerCatalog.d.ts +46 -1
- package/dist/types/providerCatalog.generated.d.ts +2 -2
- package/dist/types/providers.d.ts +12 -8
- package/dist/utils/modelChoices.d.ts +2 -2
- package/dist/utils/modelChoices.js +10 -38
- package/dist/utils/sizeGuard.d.ts +8 -5
- package/dist/utils/sizeGuard.js +32 -9
- package/docs-site/static/search-index.json +1 -1
- package/package.json +1 -1
- package/dist/providers/deepseek.d.ts +0 -47
- package/dist/providers/deepseek.js +0 -120
- package/dist/providers/huggingFace/client.d.ts +0 -54
- package/dist/providers/huggingFace/client.js +0 -120
- package/dist/providers/huggingFace/index.d.ts +0 -1
- package/dist/providers/huggingFace/index.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ProviderFactory } from "./providerFactory.js";
|
|
2
2
|
import { logger } from "../utils/logger.js";
|
|
3
|
-
import { AIProviderName, GoogleAIModels, OpenAIModels, AnthropicModels, VertexModels, OllamaModels, LiteLLMModels,
|
|
3
|
+
import { AIProviderName, GoogleAIModels, OpenAIModels, AnthropicModels, VertexModels, OllamaModels, LiteLLMModels, NvidiaNimModels, OpenRouterModels, CohereModels, VoyageModels, JinaModels, StabilityModels, IdeogramModels, RecraftModels, TypeSafeModels, ReplicateModels, } from "../constants/enums.js";
|
|
4
4
|
import { PROVIDER_DESCRIPTORS_BY_NAME } from "./providerDescriptors.js";
|
|
5
5
|
import { OPENAI_COMPAT_CATALOG } from "../providers/openaiCompatCatalog.js";
|
|
6
6
|
import { providerChoicesFor } from "./mediaHandlerCatalog.js";
|
|
@@ -106,17 +106,13 @@ export class ProviderRegistry {
|
|
|
106
106
|
const { GoogleVertexProvider } = await import("../providers/googleVertex/index.js");
|
|
107
107
|
return new GoogleVertexProvider(modelName, providerName, sdk, region, vertexCreds);
|
|
108
108
|
}, VertexModels.CLAUDE_4_6_SONNET, ["vertex", "googleVertex"], PROVIDER_DESCRIPTORS_BY_NAME.get(AIProviderName.VERTEX));
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const { HuggingFaceProvider } = await import("../providers/huggingFace/index.js");
|
|
113
|
-
return new HuggingFaceProvider(modelName, sdk, region, hfCreds);
|
|
114
|
-
}, process.env.HUGGINGFACE_MODEL ||
|
|
115
|
-
HuggingFaceModels.QWEN_2_5_72B_INSTRUCT, ["huggingface", "hf"], PROVIDER_DESCRIPTORS_BY_NAME.get(AIProviderName.HUGGINGFACE));
|
|
109
|
+
// HuggingFace migrated to the JSON catalog (catalog/huggingface.json)
|
|
110
|
+
// — it is now registered by the "config-driven OpenAI-compatible
|
|
111
|
+
// catalog providers" loop below, not a dedicated block here.
|
|
116
112
|
// Register the config-driven OpenAI-compatible catalog providers
|
|
117
113
|
// (cerebras, groq, xai, together-ai, fireworks, perplexity, mistral,
|
|
118
|
-
// cloudflare).
|
|
119
|
-
// To add a new
|
|
114
|
+
// cloudflare, deepseek, huggingface).
|
|
115
|
+
// To add a new OpenAI-compatible provider, add one entry to
|
|
120
116
|
// OPENAI_COMPAT_CATALOG (openaiCompatCatalog.ts) — not a new block here.
|
|
121
117
|
for (const entry of OPENAI_COMPAT_CATALOG) {
|
|
122
118
|
ProviderFactory.registerProvider(entry.providerName, async (modelName, _providerName, sdk, _region, credentials) => {
|
|
@@ -163,12 +159,9 @@ export class ProviderRegistry {
|
|
|
163
159
|
const { AmazonSageMakerProvider } = await import("../providers/amazonSagemaker.js");
|
|
164
160
|
return new AmazonSageMakerProvider(modelName, undefined, region, undefined, sagemakerCreds);
|
|
165
161
|
}, process.env.SAGEMAKER_MODEL || "sagemaker-model", ["sagemaker", "aws-sagemaker"], PROVIDER_DESCRIPTORS_BY_NAME.get(AIProviderName.SAGEMAKER));
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const { DeepSeekProvider } = await import("../providers/deepseek.js");
|
|
170
|
-
return new DeepSeekProvider(modelName, sdk, undefined, deepseekCreds);
|
|
171
|
-
}, process.env.DEEPSEEK_MODEL || DeepSeekModels.DEEPSEEK_CHAT, ["deepseek", "ds"], PROVIDER_DESCRIPTORS_BY_NAME.get(AIProviderName.DEEPSEEK));
|
|
162
|
+
// DeepSeek migrated to the JSON catalog (catalog/deepseek.json) — it is
|
|
163
|
+
// now registered by the "config-driven OpenAI-compatible catalog
|
|
164
|
+
// providers" loop above, not a dedicated block here.
|
|
172
165
|
// Register NVIDIA NIM provider
|
|
173
166
|
ProviderFactory.registerProvider(AIProviderName.NVIDIA_NIM, async (modelName, _providerName, sdk, _region, credentials) => {
|
|
174
167
|
const nimCreds = credentials;
|
|
@@ -50,6 +50,15 @@ import { recraftManifest } from "./manifests/recraft.js";
|
|
|
50
50
|
* no alias field.
|
|
51
51
|
*/
|
|
52
52
|
function buildCatalogManifest(entry) {
|
|
53
|
+
// capabilities.tools is "model-dependent" for huggingface, but
|
|
54
|
+
// huggingface uses its own hand-written manifest (see MANIFEST_REGISTRY
|
|
55
|
+
// below), never this generic path — cerebras/sambanova, the only two
|
|
56
|
+
// providers actually routed through buildCatalogManifest() today, both
|
|
57
|
+
// have a plain boolean here. Narrowed rather than widening
|
|
58
|
+
// ProviderModelManifestEntry.functionCalling itself: a provider entering
|
|
59
|
+
// this generic (non-hand-curated) path with "model-dependent" tools gets
|
|
60
|
+
// the conservative false, not an unearned optimistic true.
|
|
61
|
+
const functionCalling = entry.capabilities.tools === true;
|
|
53
62
|
const namedModels = Object.fromEntries(Object.entries(entry.models.catalog).map(([modelId, spec]) => [
|
|
54
63
|
modelId,
|
|
55
64
|
{
|
|
@@ -57,7 +66,7 @@ function buildCatalogManifest(entry) {
|
|
|
57
66
|
contextWindow: spec.contextWindow ?? entry.models.defaultContextWindow,
|
|
58
67
|
maxOutputTokens: entry.models.defaultMaxOutputTokens,
|
|
59
68
|
vision: spec.vision,
|
|
60
|
-
functionCalling
|
|
69
|
+
functionCalling,
|
|
61
70
|
},
|
|
62
71
|
]));
|
|
63
72
|
return {
|
|
@@ -68,7 +77,7 @@ function buildCatalogManifest(entry) {
|
|
|
68
77
|
contextWindow: entry.models.defaultContextWindow,
|
|
69
78
|
maxOutputTokens: entry.models.defaultMaxOutputTokens,
|
|
70
79
|
vision: false,
|
|
71
|
-
functionCalling
|
|
80
|
+
functionCalling,
|
|
72
81
|
},
|
|
73
82
|
...namedModels,
|
|
74
83
|
},
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./provider-catalog.schema.json",
|
|
3
|
+
"id": "deepseek",
|
|
4
|
+
"displayName": "DeepSeek",
|
|
5
|
+
"enumTypeName": "DeepSeekModels",
|
|
6
|
+
"aliases": ["ds"],
|
|
7
|
+
"tier": 2,
|
|
8
|
+
"wire": {
|
|
9
|
+
"baseURL": "https://api.deepseek.com"
|
|
10
|
+
},
|
|
11
|
+
"models": {
|
|
12
|
+
"default": "deepseek-chat",
|
|
13
|
+
"fallbacks": ["deepseek-chat", "deepseek-reasoner"],
|
|
14
|
+
"defaultContextWindow": 64000,
|
|
15
|
+
"defaultMaxOutputTokens": 64000,
|
|
16
|
+
"catalog": {
|
|
17
|
+
"deepseek-chat": {
|
|
18
|
+
"contextWindow": 64000,
|
|
19
|
+
"maxOutputTokens": 64000,
|
|
20
|
+
"vision": false,
|
|
21
|
+
"status": "production",
|
|
22
|
+
"description": "DeepSeek-V3 general chat"
|
|
23
|
+
},
|
|
24
|
+
"deepseek-reasoner": {
|
|
25
|
+
"contextWindow": 64000,
|
|
26
|
+
"maxOutputTokens": 64000,
|
|
27
|
+
"vision": false,
|
|
28
|
+
"status": "production",
|
|
29
|
+
"description": "DeepSeek-R1 reasoning (slower, deeper)"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"capabilities": {
|
|
34
|
+
"text": true,
|
|
35
|
+
"streaming": true,
|
|
36
|
+
"tools": true,
|
|
37
|
+
"toolsWithStreaming": true,
|
|
38
|
+
"structuredOutput": true,
|
|
39
|
+
"structuredOutputWithTools": true,
|
|
40
|
+
"embeddings": false,
|
|
41
|
+
"thinking": true
|
|
42
|
+
},
|
|
43
|
+
"errorRules": [
|
|
44
|
+
{
|
|
45
|
+
"status": 401,
|
|
46
|
+
"pattern": "Invalid API key|Authentication",
|
|
47
|
+
"class": "authentication",
|
|
48
|
+
"message": "Invalid DeepSeek API key. Please check your {apiKeyEnvVar} environment variable."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"status": 402,
|
|
52
|
+
"pattern": "Insufficient Balance|insufficient_balance",
|
|
53
|
+
"class": "provider",
|
|
54
|
+
"message": "DeepSeek account has insufficient balance. Top up at https://platform.deepseek.com/usage"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"pattern": "model_not_found",
|
|
58
|
+
"class": "invalid-model",
|
|
59
|
+
"message": "DeepSeek model '{model}' not found. Use 'deepseek-chat' or 'deepseek-reasoner'."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"quirks": {
|
|
63
|
+
"responseFormatDowngrade": "json-schema-to-json-object"
|
|
64
|
+
},
|
|
65
|
+
"setup": {
|
|
66
|
+
"url": "https://platform.deepseek.com/api_keys",
|
|
67
|
+
"apiKeyFormat": null,
|
|
68
|
+
"billingPolicy": "no-free-tier",
|
|
69
|
+
"instructions": [
|
|
70
|
+
"1. Visit: https://platform.deepseek.com/api_keys",
|
|
71
|
+
"2. Create or sign in to your DeepSeek account",
|
|
72
|
+
"3. Generate a new API key",
|
|
73
|
+
"4. Set {apiKeyEnvVar} in your .env file"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"evidence": {
|
|
77
|
+
"rosterVerified": {
|
|
78
|
+
"date": "2026-09-22",
|
|
79
|
+
"method": "Ported from already-committed repo data (DeepSeekModels enum, deepseekManifest.ts, deepseek.ts's own error-rule and quirk comments) on origin/release @ a7fd9bf04 — no live vendor probe performed, per this migration's no-vendor-call constraint. billingPolicy is carried over from general knowledge, not independently re-verified live; flagged for confirmation before merge. The capability flags mirror the hand-written live-matrix row this entry replaces (test/helpers/providerMatrix.ts on origin/release), so the migration leaves the set of live-matrix cells unchanged."
|
|
80
|
+
},
|
|
81
|
+
"liveMatrix": null,
|
|
82
|
+
"addedInPR": "TBD — integration-tested in a worktree before a PR was opened"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./provider-catalog.schema.json",
|
|
3
|
+
"id": "huggingface",
|
|
4
|
+
"displayName": "HuggingFace",
|
|
5
|
+
"enumTypeName": "HuggingFaceModels",
|
|
6
|
+
"aliases": ["hf"],
|
|
7
|
+
"credentialsKey": "huggingFace",
|
|
8
|
+
"tier": 2,
|
|
9
|
+
"wire": {
|
|
10
|
+
"baseURL": "https://router.huggingface.co/v1",
|
|
11
|
+
"apiKeyFallbackEnvVars": ["HF_TOKEN"]
|
|
12
|
+
},
|
|
13
|
+
"models": {
|
|
14
|
+
"default": "Qwen/Qwen2.5-72B-Instruct",
|
|
15
|
+
"fallbackModelName": "meta-llama/Llama-3.1-8B-Instruct",
|
|
16
|
+
"fallbacks": ["meta-llama/Llama-3.1-8B-Instruct"],
|
|
17
|
+
"testModel": "meta-llama/Llama-3.1-8B-Instruct",
|
|
18
|
+
"topModels": [
|
|
19
|
+
"meta-llama/Llama-3.3-70B-Instruct",
|
|
20
|
+
"mistralai/Mistral-Large-3-675B-Instruct-2512",
|
|
21
|
+
"deepseek-ai/DeepSeek-R1",
|
|
22
|
+
"Qwen/Qwen2.5-72B-Instruct",
|
|
23
|
+
"microsoft/phi-4",
|
|
24
|
+
"google/gemma-3-27b-it"
|
|
25
|
+
],
|
|
26
|
+
"defaultContextWindow": 32000,
|
|
27
|
+
"defaultMaxOutputTokens": 32000,
|
|
28
|
+
"catalog": {
|
|
29
|
+
"meta-llama/Llama-3.3-70B-Instruct": {
|
|
30
|
+
"vision": false,
|
|
31
|
+
"status": "production",
|
|
32
|
+
"description": "Recommended - Latest Llama",
|
|
33
|
+
"enumMember": "LLAMA_3_3_70B_INSTRUCT"
|
|
34
|
+
},
|
|
35
|
+
"meta-llama/Llama-3.2-1B": {
|
|
36
|
+
"vision": false,
|
|
37
|
+
"status": "production",
|
|
38
|
+
"description": "Meta Llama 3.2 — Llama-3.2-1B",
|
|
39
|
+
"enumMember": "LLAMA_3_2_1B"
|
|
40
|
+
},
|
|
41
|
+
"meta-llama/Llama-3.2-3B-Instruct": {
|
|
42
|
+
"vision": false,
|
|
43
|
+
"status": "production",
|
|
44
|
+
"description": "Meta Llama 3.2 — Llama-3.2-3B-Instruct",
|
|
45
|
+
"enumMember": "LLAMA_3_2_3B_INSTRUCT"
|
|
46
|
+
},
|
|
47
|
+
"meta-llama/Llama-3.1-8B": {
|
|
48
|
+
"vision": false,
|
|
49
|
+
"status": "production",
|
|
50
|
+
"description": "Meta Llama 3.1 — Llama-3.1-8B",
|
|
51
|
+
"enumMember": "LLAMA_3_1_8B"
|
|
52
|
+
},
|
|
53
|
+
"meta-llama/Llama-3.1-8B-Instruct": {
|
|
54
|
+
"vision": false,
|
|
55
|
+
"status": "production",
|
|
56
|
+
"description": "Llama 3.1 8B, tool-calling capable",
|
|
57
|
+
"enumMember": "LLAMA_3_1_8B_INSTRUCT"
|
|
58
|
+
},
|
|
59
|
+
"meta-llama/Llama-3.1-70B-Instruct": {
|
|
60
|
+
"vision": false,
|
|
61
|
+
"status": "production",
|
|
62
|
+
"description": "Meta Llama 3.1 — Llama-3.1-70B-Instruct",
|
|
63
|
+
"enumMember": "LLAMA_3_1_70B_INSTRUCT"
|
|
64
|
+
},
|
|
65
|
+
"meta-llama/Llama-3.1-405B-Instruct": {
|
|
66
|
+
"vision": false,
|
|
67
|
+
"status": "production",
|
|
68
|
+
"description": "Meta Llama 3.1 — Llama-3.1-405B-Instruct",
|
|
69
|
+
"enumMember": "LLAMA_3_1_405B_INSTRUCT"
|
|
70
|
+
},
|
|
71
|
+
"meta-llama/Meta-Llama-3-8B-Instruct": {
|
|
72
|
+
"vision": false,
|
|
73
|
+
"status": "production",
|
|
74
|
+
"description": "Meta Llama 3.0 — Meta-Llama-3-8B-Instruct",
|
|
75
|
+
"enumMember": "LLAMA_3_8B_INSTRUCT"
|
|
76
|
+
},
|
|
77
|
+
"meta-llama/Meta-Llama-3-70B-Instruct": {
|
|
78
|
+
"vision": false,
|
|
79
|
+
"status": "production",
|
|
80
|
+
"description": "Meta Llama 3.0 — Meta-Llama-3-70B-Instruct",
|
|
81
|
+
"enumMember": "LLAMA_3_70B_INSTRUCT"
|
|
82
|
+
},
|
|
83
|
+
"mistralai/Mistral-Large-3-675B-Instruct-2512": {
|
|
84
|
+
"vision": false,
|
|
85
|
+
"status": "production",
|
|
86
|
+
"description": "Mistral Large",
|
|
87
|
+
"enumMember": "MISTRAL_LARGE_3_675B"
|
|
88
|
+
},
|
|
89
|
+
"mistralai/Mistral-Small-3.1-24B-Instruct-2503": {
|
|
90
|
+
"vision": false,
|
|
91
|
+
"status": "production",
|
|
92
|
+
"description": "Mistral Small — Mistral-Small-3.1-24B-Instruct-2503",
|
|
93
|
+
"enumMember": "MISTRAL_SMALL_3_1_24B"
|
|
94
|
+
},
|
|
95
|
+
"mistralai/Mistral-Small-24B-Instruct-2501": {
|
|
96
|
+
"vision": false,
|
|
97
|
+
"status": "production",
|
|
98
|
+
"description": "Mistral Small — Mistral-Small-24B-Instruct-2501",
|
|
99
|
+
"enumMember": "MISTRAL_SMALL_24B"
|
|
100
|
+
},
|
|
101
|
+
"mistralai/Mistral-7B-Instruct-v0.2": {
|
|
102
|
+
"vision": false,
|
|
103
|
+
"status": "production",
|
|
104
|
+
"description": "Mistral — Mistral-7B-Instruct-v0.2",
|
|
105
|
+
"enumMember": "MISTRAL_7B_INSTRUCT"
|
|
106
|
+
},
|
|
107
|
+
"mistralai/Mixtral-8x7B-Instruct-v0.1": {
|
|
108
|
+
"vision": false,
|
|
109
|
+
"status": "production",
|
|
110
|
+
"description": "Mistral — Mixtral-8x7B-Instruct-v0.1",
|
|
111
|
+
"enumMember": "MIXTRAL_8X7B_INSTRUCT"
|
|
112
|
+
},
|
|
113
|
+
"mistralai/Devstral-2": {
|
|
114
|
+
"vision": false,
|
|
115
|
+
"status": "production",
|
|
116
|
+
"description": "Mistral Devstral — Devstral-2",
|
|
117
|
+
"enumMember": "DEVSTRAL_2"
|
|
118
|
+
},
|
|
119
|
+
"Qwen/Qwen2.5-7B": {
|
|
120
|
+
"vision": false,
|
|
121
|
+
"status": "production",
|
|
122
|
+
"description": "Qwen 2.5 — Qwen2.5-7B",
|
|
123
|
+
"enumMember": "QWEN_2_5_7B"
|
|
124
|
+
},
|
|
125
|
+
"Qwen/Qwen2.5-32B": {
|
|
126
|
+
"vision": false,
|
|
127
|
+
"status": "production",
|
|
128
|
+
"description": "Qwen 2.5 — Qwen2.5-32B",
|
|
129
|
+
"enumMember": "QWEN_2_5_32B"
|
|
130
|
+
},
|
|
131
|
+
"Qwen/Qwen2.5-72B-Instruct": {
|
|
132
|
+
"vision": false,
|
|
133
|
+
"status": "production",
|
|
134
|
+
"description": "Qwen flagship",
|
|
135
|
+
"enumMember": "QWEN_2_5_72B_INSTRUCT"
|
|
136
|
+
},
|
|
137
|
+
"Qwen/Qwen2.5-Coder-7B": {
|
|
138
|
+
"vision": false,
|
|
139
|
+
"status": "production",
|
|
140
|
+
"description": "Qwen 2.5 Coder — Qwen2.5-Coder-7B",
|
|
141
|
+
"enumMember": "QWEN_2_5_CODER_7B"
|
|
142
|
+
},
|
|
143
|
+
"Qwen/Qwen2.5-Coder-32B-Instruct": {
|
|
144
|
+
"vision": false,
|
|
145
|
+
"status": "production",
|
|
146
|
+
"description": "Qwen 2.5 Coder — Qwen2.5-Coder-32B-Instruct",
|
|
147
|
+
"enumMember": "QWEN_2_5_CODER_32B_INSTRUCT"
|
|
148
|
+
},
|
|
149
|
+
"Qwen/QwQ-32B": {
|
|
150
|
+
"vision": false,
|
|
151
|
+
"status": "production",
|
|
152
|
+
"description": "Qwen QwQ — QwQ-32B",
|
|
153
|
+
"enumMember": "QWQ_32B"
|
|
154
|
+
},
|
|
155
|
+
"Qwen/Qwen2.5-VL-32B-Instruct": {
|
|
156
|
+
"vision": false,
|
|
157
|
+
"status": "production",
|
|
158
|
+
"description": "Qwen 2.5 VL (Multimodal) — Qwen2.5-VL-32B-Instruct",
|
|
159
|
+
"enumMember": "QWEN_2_5_VL_32B"
|
|
160
|
+
},
|
|
161
|
+
"deepseek-ai/DeepSeek-R1": {
|
|
162
|
+
"vision": false,
|
|
163
|
+
"status": "production",
|
|
164
|
+
"description": "Advanced reasoning",
|
|
165
|
+
"enumMember": "DEEPSEEK_R1"
|
|
166
|
+
},
|
|
167
|
+
"deepseek-ai/DeepSeek-V3": {
|
|
168
|
+
"vision": false,
|
|
169
|
+
"status": "production",
|
|
170
|
+
"description": "DeepSeek — DeepSeek-V3",
|
|
171
|
+
"enumMember": "DEEPSEEK_V3"
|
|
172
|
+
},
|
|
173
|
+
"deepseek-ai/DeepSeek-V3.1": {
|
|
174
|
+
"vision": false,
|
|
175
|
+
"status": "production",
|
|
176
|
+
"description": "DeepSeek — DeepSeek-V3.1",
|
|
177
|
+
"enumMember": "DEEPSEEK_V3_1"
|
|
178
|
+
},
|
|
179
|
+
"deepseek-ai/DeepSeek-V3.2-Exp": {
|
|
180
|
+
"vision": false,
|
|
181
|
+
"status": "production",
|
|
182
|
+
"description": "DeepSeek — DeepSeek-V3.2-Exp",
|
|
183
|
+
"enumMember": "DEEPSEEK_V3_2_EXP"
|
|
184
|
+
},
|
|
185
|
+
"microsoft/phi-4": {
|
|
186
|
+
"vision": false,
|
|
187
|
+
"status": "production",
|
|
188
|
+
"description": "Microsoft Phi-4",
|
|
189
|
+
"enumMember": "PHI_4"
|
|
190
|
+
},
|
|
191
|
+
"microsoft/Phi-4-reasoning": {
|
|
192
|
+
"vision": false,
|
|
193
|
+
"status": "production",
|
|
194
|
+
"description": "Microsoft Phi — Phi-4-reasoning",
|
|
195
|
+
"enumMember": "PHI_4_REASONING"
|
|
196
|
+
},
|
|
197
|
+
"microsoft/Phi-4-mini-instruct": {
|
|
198
|
+
"vision": false,
|
|
199
|
+
"status": "production",
|
|
200
|
+
"description": "Microsoft Phi — Phi-4-mini-instruct",
|
|
201
|
+
"enumMember": "PHI_4_MINI_INSTRUCT"
|
|
202
|
+
},
|
|
203
|
+
"microsoft/Phi-4-mini-reasoning": {
|
|
204
|
+
"vision": false,
|
|
205
|
+
"status": "production",
|
|
206
|
+
"description": "Microsoft Phi — Phi-4-mini-reasoning",
|
|
207
|
+
"enumMember": "PHI_4_MINI_REASONING"
|
|
208
|
+
},
|
|
209
|
+
"microsoft/Phi-3-mini-128k-instruct": {
|
|
210
|
+
"vision": false,
|
|
211
|
+
"status": "production",
|
|
212
|
+
"description": "Microsoft Phi — Phi-3-mini-128k-instruct",
|
|
213
|
+
"enumMember": "PHI_3_MINI_128K_INSTRUCT"
|
|
214
|
+
},
|
|
215
|
+
"microsoft/Phi-3-vision-128k-instruct": {
|
|
216
|
+
"vision": false,
|
|
217
|
+
"status": "production",
|
|
218
|
+
"description": "Microsoft Phi — Phi-3-vision-128k-instruct",
|
|
219
|
+
"enumMember": "PHI_3_VISION_128K_INSTRUCT"
|
|
220
|
+
},
|
|
221
|
+
"google/gemma-3-270m": {
|
|
222
|
+
"vision": false,
|
|
223
|
+
"status": "production",
|
|
224
|
+
"description": "Google Gemma 3 — gemma-3-270m",
|
|
225
|
+
"enumMember": "GEMMA_3_270M"
|
|
226
|
+
},
|
|
227
|
+
"google/gemma-3-1b-it": {
|
|
228
|
+
"vision": false,
|
|
229
|
+
"status": "production",
|
|
230
|
+
"description": "Google Gemma 3 — gemma-3-1b-it",
|
|
231
|
+
"enumMember": "GEMMA_3_1B_IT"
|
|
232
|
+
},
|
|
233
|
+
"google/gemma-3-4b-it": {
|
|
234
|
+
"vision": false,
|
|
235
|
+
"status": "production",
|
|
236
|
+
"description": "Google Gemma 3 — gemma-3-4b-it",
|
|
237
|
+
"enumMember": "GEMMA_3_4B_IT"
|
|
238
|
+
},
|
|
239
|
+
"google/gemma-3-12b-it": {
|
|
240
|
+
"vision": false,
|
|
241
|
+
"status": "production",
|
|
242
|
+
"description": "Google Gemma 3 — gemma-3-12b-it",
|
|
243
|
+
"enumMember": "GEMMA_3_12B_IT"
|
|
244
|
+
},
|
|
245
|
+
"google/gemma-3-27b-it": {
|
|
246
|
+
"vision": false,
|
|
247
|
+
"status": "production",
|
|
248
|
+
"description": "Google Gemma 3",
|
|
249
|
+
"enumMember": "GEMMA_3_27B_IT"
|
|
250
|
+
},
|
|
251
|
+
"google/gemma-2-9b": {
|
|
252
|
+
"vision": false,
|
|
253
|
+
"status": "production",
|
|
254
|
+
"description": "Google Gemma 2 — gemma-2-9b",
|
|
255
|
+
"enumMember": "GEMMA_2_9B"
|
|
256
|
+
},
|
|
257
|
+
"google/gemma-2-27b": {
|
|
258
|
+
"vision": false,
|
|
259
|
+
"status": "production",
|
|
260
|
+
"description": "Google Gemma 2 — gemma-2-27b",
|
|
261
|
+
"enumMember": "GEMMA_2_27B"
|
|
262
|
+
},
|
|
263
|
+
"google/gemma-2b": {
|
|
264
|
+
"vision": false,
|
|
265
|
+
"status": "production",
|
|
266
|
+
"description": "Google Gemma 1 — gemma-2b",
|
|
267
|
+
"enumMember": "GEMMA_2B"
|
|
268
|
+
},
|
|
269
|
+
"google/gemma-7b": {
|
|
270
|
+
"vision": false,
|
|
271
|
+
"status": "production",
|
|
272
|
+
"description": "Google Gemma 1 — gemma-7b",
|
|
273
|
+
"enumMember": "GEMMA_7B"
|
|
274
|
+
},
|
|
275
|
+
"tiiuae/falcon-40b-instruct": {
|
|
276
|
+
"vision": false,
|
|
277
|
+
"status": "production",
|
|
278
|
+
"description": "Falcon — falcon-40b-instruct",
|
|
279
|
+
"enumMember": "FALCON_40B_INSTRUCT"
|
|
280
|
+
},
|
|
281
|
+
"tiiuae/falcon-180B-chat": {
|
|
282
|
+
"vision": false,
|
|
283
|
+
"status": "production",
|
|
284
|
+
"description": "Falcon — falcon-180B-chat",
|
|
285
|
+
"enumMember": "FALCON_180B_CHAT"
|
|
286
|
+
},
|
|
287
|
+
"bigcode/starcoder2-15b": {
|
|
288
|
+
"vision": false,
|
|
289
|
+
"status": "production",
|
|
290
|
+
"description": "Code Models — starcoder2-15b",
|
|
291
|
+
"enumMember": "STARCODER2_15B"
|
|
292
|
+
},
|
|
293
|
+
"codellama/CodeLlama-34b-Instruct-hf": {
|
|
294
|
+
"vision": false,
|
|
295
|
+
"status": "production",
|
|
296
|
+
"description": "Code Models — CodeLlama-34b-Instruct-hf",
|
|
297
|
+
"enumMember": "CODELLAMA_34B_INSTRUCT"
|
|
298
|
+
},
|
|
299
|
+
"bigscience/bloom-7b1": {
|
|
300
|
+
"vision": false,
|
|
301
|
+
"status": "production",
|
|
302
|
+
"description": "BLOOM — bloom-7b1",
|
|
303
|
+
"enumMember": "BLOOM_7B1"
|
|
304
|
+
},
|
|
305
|
+
"bigscience/bloom-1b3": {
|
|
306
|
+
"vision": false,
|
|
307
|
+
"status": "production",
|
|
308
|
+
"description": "BLOOM — bloom-1b3",
|
|
309
|
+
"enumMember": "BLOOM_1B3"
|
|
310
|
+
},
|
|
311
|
+
"zai-org/GLM-5": {
|
|
312
|
+
"vision": false,
|
|
313
|
+
"status": "production",
|
|
314
|
+
"description": "Z.AI GLM-5 (February 2026) — GLM-5",
|
|
315
|
+
"enumMember": "GLM_5"
|
|
316
|
+
},
|
|
317
|
+
"Qwen/Qwen3.5-397B-A17B": {
|
|
318
|
+
"vision": false,
|
|
319
|
+
"status": "production",
|
|
320
|
+
"description": "Qwen 3.5 Multimodal (February 2026) — Qwen3.5-397B-A17B",
|
|
321
|
+
"enumMember": "QWEN_3_5_397B_A17B"
|
|
322
|
+
},
|
|
323
|
+
"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16": {
|
|
324
|
+
"vision": false,
|
|
325
|
+
"status": "production",
|
|
326
|
+
"description": "NVIDIA Nemotron 3 Nano — NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
|
|
327
|
+
"enumMember": "NEMOTRON_3_NANO_30B"
|
|
328
|
+
},
|
|
329
|
+
"HuggingFaceTB/SmolLM3-3B": {
|
|
330
|
+
"vision": false,
|
|
331
|
+
"status": "production",
|
|
332
|
+
"description": "HuggingFace SmolLM3 — SmolLM3-3B",
|
|
333
|
+
"enumMember": "SMOLLM3_3B"
|
|
334
|
+
},
|
|
335
|
+
"tiiuae/Falcon3-7B-Instruct": {
|
|
336
|
+
"vision": false,
|
|
337
|
+
"status": "production",
|
|
338
|
+
"description": "Falcon 3 Series — Falcon3-7B-Instruct",
|
|
339
|
+
"enumMember": "FALCON_3_7B_INSTRUCT"
|
|
340
|
+
},
|
|
341
|
+
"tiiuae/Falcon3-10B-Instruct": {
|
|
342
|
+
"vision": false,
|
|
343
|
+
"status": "production",
|
|
344
|
+
"description": "Falcon 3 Series — Falcon3-10B-Instruct",
|
|
345
|
+
"enumMember": "FALCON_3_10B_INSTRUCT"
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
"capabilities": {
|
|
350
|
+
"text": true,
|
|
351
|
+
"streaming": true,
|
|
352
|
+
"tools": "model-dependent",
|
|
353
|
+
"toolsWithStreaming": false,
|
|
354
|
+
"structuredOutput": false,
|
|
355
|
+
"structuredOutputWithTools": false,
|
|
356
|
+
"embeddings": false,
|
|
357
|
+
"thinking": false
|
|
358
|
+
},
|
|
359
|
+
"errorRules": [
|
|
360
|
+
{
|
|
361
|
+
"pattern": "API_TOKEN_INVALID|Invalid token",
|
|
362
|
+
"class": "authentication",
|
|
363
|
+
"message": "Invalid HuggingFace API token. Please check your {apiKeyEnvVar} environment variable."
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"pattern": "rate limit",
|
|
367
|
+
"class": "rate-limit",
|
|
368
|
+
"message": "HuggingFace rate limit exceeded. Consider using a paid plan or try again later."
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"pattern": "model.*not found|not found.*model",
|
|
372
|
+
"class": "invalid-model",
|
|
373
|
+
"message": "HuggingFace model '{model}' not found.\n\nSuggestions:\n1. Check model name spelling\n2. Ensure model exists on HuggingFace Hub\n3. For tool calling, use: Llama-3.1-8B-Instruct, Hermes-3-Llama-3.2-3B, or CodeLlama-34b-Instruct-hf"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"pattern": "function|tool",
|
|
377
|
+
"class": "provider",
|
|
378
|
+
"message": "HuggingFace tool calling error: {message}\n\nNotes:\n1. Ensure you're using a tool-capable model (Llama-3.1+, Hermes-3+, CodeLlama)\n2. Check that your model supports function calling\n3. Verify tool schema format is correct"
|
|
379
|
+
}
|
|
380
|
+
],
|
|
381
|
+
"timeouts": {
|
|
382
|
+
"generateMs": 120000,
|
|
383
|
+
"streamMs": 120000
|
|
384
|
+
},
|
|
385
|
+
"autoSelectPriority": 10,
|
|
386
|
+
"setup": {
|
|
387
|
+
"url": "https://huggingface.co/settings/tokens",
|
|
388
|
+
"apiKeyFormat": "^hf_[A-Za-z0-9]{37}$",
|
|
389
|
+
"billingPolicy": "free-with-card",
|
|
390
|
+
"instructions": [
|
|
391
|
+
"1. Visit: https://huggingface.co/settings/tokens",
|
|
392
|
+
"2. Create or sign in to your HuggingFace account",
|
|
393
|
+
"3. Generate a new access token",
|
|
394
|
+
"4. Set {apiKeyEnvVar} in your .env file (HF_TOKEN also accepted)"
|
|
395
|
+
]
|
|
396
|
+
},
|
|
397
|
+
"evidence": {
|
|
398
|
+
"rosterVerified": {
|
|
399
|
+
"date": "2026-09-22",
|
|
400
|
+
"method": "Ported from already-committed repo data (HuggingFaceModels enum, huggingfaceManifest.ts, the hand ProviderDescriptor, and huggingFace/client.ts's own error-rule/model comments) on this worktree's current state — no live vendor probe performed, per this migration's no-vendor-call constraint. models.catalog carries every member of the HuggingFaceModels enum it replaces, with the same enumMember names, plus the Llama-3.1-8B-Instruct fallback; topModels restores the previous picker order and text. Per-model vision is false to mirror huggingfaceManifest, which declares no HuggingFace vision support — it is not a vendor capability claim; billingPolicy is carried over from general knowledge, not independently re-verified live. testModel and the capability flags mirror the hand-written live-matrix row this entry replaces (test/helpers/providerMatrix.ts on origin/release), so the migration leaves the set of live-matrix cells unchanged."
|
|
401
|
+
},
|
|
402
|
+
"liveMatrix": null,
|
|
403
|
+
"addedInPR": "TBD — integration-tested in a worktree before a PR was opened"
|
|
404
|
+
}
|
|
405
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { ProviderCatalogJson } from "../../types/index.js";
|
|
2
2
|
export declare const CATALOG_JSON_ENTRIES: ProviderCatalogJson[];
|
|
3
|
-
export declare const CATALOG_PROVIDER_IDS: readonly ["api-route", "baseten", "cerebras", "cloudflare", "fireworks", "friendli", "gmicloud", "groq", "inception-labs", "io-intelligence", "mancer", "mistral", "perplexity", "sambanova", "together-ai", "upstage", "xai"];
|
|
3
|
+
export declare const CATALOG_PROVIDER_IDS: readonly ["api-route", "baseten", "cerebras", "cloudflare", "deepseek", "fireworks", "friendli", "gmicloud", "groq", "huggingface", "inception-labs", "io-intelligence", "mancer", "mistral", "perplexity", "sambanova", "together-ai", "upstage", "xai"];
|
|
@@ -4,10 +4,12 @@ import apiRouteJson from "./api-route.json" with { type: "json" };
|
|
|
4
4
|
import basetenJson from "./baseten.json" with { type: "json" };
|
|
5
5
|
import cerebrasJson from "./cerebras.json" with { type: "json" };
|
|
6
6
|
import cloudflareJson from "./cloudflare.json" with { type: "json" };
|
|
7
|
+
import deepseekJson from "./deepseek.json" with { type: "json" };
|
|
7
8
|
import fireworksJson from "./fireworks.json" with { type: "json" };
|
|
8
9
|
import friendliJson from "./friendli.json" with { type: "json" };
|
|
9
10
|
import gmicloudJson from "./gmicloud.json" with { type: "json" };
|
|
10
11
|
import groqJson from "./groq.json" with { type: "json" };
|
|
12
|
+
import huggingfaceJson from "./huggingface.json" with { type: "json" };
|
|
11
13
|
import inceptionLabsJson from "./inception-labs.json" with { type: "json" };
|
|
12
14
|
import ioIntelligenceJson from "./io-intelligence.json" with { type: "json" };
|
|
13
15
|
import mancerJson from "./mancer.json" with { type: "json" };
|
|
@@ -22,10 +24,12 @@ export const CATALOG_JSON_ENTRIES = [
|
|
|
22
24
|
basetenJson,
|
|
23
25
|
cerebrasJson,
|
|
24
26
|
cloudflareJson,
|
|
27
|
+
deepseekJson,
|
|
25
28
|
fireworksJson,
|
|
26
29
|
friendliJson,
|
|
27
30
|
gmicloudJson,
|
|
28
31
|
groqJson,
|
|
32
|
+
huggingfaceJson,
|
|
29
33
|
inceptionLabsJson,
|
|
30
34
|
ioIntelligenceJson,
|
|
31
35
|
mancerJson,
|
|
@@ -41,10 +45,12 @@ export const CATALOG_PROVIDER_IDS = [
|
|
|
41
45
|
"baseten",
|
|
42
46
|
"cerebras",
|
|
43
47
|
"cloudflare",
|
|
48
|
+
"deepseek",
|
|
44
49
|
"fireworks",
|
|
45
50
|
"friendli",
|
|
46
51
|
"gmicloud",
|
|
47
52
|
"groq",
|
|
53
|
+
"huggingface",
|
|
48
54
|
"inception-labs",
|
|
49
55
|
"io-intelligence",
|
|
50
56
|
"mancer",
|