@juspay/neurolink 12.38.0 → 12.39.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.
Files changed (37) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +1 -1
  3. package/dist/browser/neurolink.min.js +464 -464
  4. package/dist/constants/enums.d.ts +226 -0
  5. package/dist/constants/enums.js +246 -0
  6. package/dist/core/modelConfiguration.js +1 -0
  7. package/dist/providers/anthropic/client.js +8 -1
  8. package/dist/providers/catalog/above-dev.json +194 -0
  9. package/dist/providers/catalog/aiand.json +204 -0
  10. package/dist/providers/catalog/ambient.json +117 -0
  11. package/dist/providers/catalog/bee-heossi.json +174 -0
  12. package/dist/providers/catalog/charm-hyper.json +349 -0
  13. package/dist/providers/catalog/chutes.json +236 -0
  14. package/dist/providers/catalog/deepinfra.json +157 -0
  15. package/dist/providers/catalog/empiriolabs.json +143 -0
  16. package/dist/providers/catalog/featherless-ai.json +212 -0
  17. package/dist/providers/catalog/inco.json +196 -0
  18. package/dist/providers/catalog/index.generated.d.ts +1 -1
  19. package/dist/providers/catalog/index.generated.js +60 -0
  20. package/dist/providers/catalog/inference-net.json +172 -0
  21. package/dist/providers/catalog/koscompute.json +81 -0
  22. package/dist/providers/catalog/lilac.json +107 -0
  23. package/dist/providers/catalog/llmtech.json +63 -0
  24. package/dist/providers/catalog/moark.json +94 -0
  25. package/dist/providers/catalog/neuralwatt.json +179 -0
  26. package/dist/providers/catalog/ovhcloud.json +232 -0
  27. package/dist/providers/catalog/pareto-inference.json +74 -0
  28. package/dist/providers/catalog/sarvam.json +72 -0
  29. package/dist/providers/catalog/schema.d.ts +2 -2
  30. package/dist/providers/catalog/synthetic.json +205 -0
  31. package/dist/providers/openRouter/client.js +1 -0
  32. package/dist/providers/openaiChatCompletionsBase.js +37 -1
  33. package/dist/types/openaiCompatible.d.ts +10 -0
  34. package/dist/types/providerCatalog.generated.d.ts +2 -2
  35. package/dist/types/providers.d.ts +80 -0
  36. package/docs-site/static/search-index.json +221 -4
  37. package/package.json +2 -1
@@ -0,0 +1,205 @@
1
+ {
2
+ "$schema": "./provider-catalog.schema.json",
3
+ "id": "synthetic",
4
+ "displayName": "Synthetic",
5
+ "aliases": [],
6
+ "tier": 2,
7
+ "wire": {
8
+ "baseURL": "https://api.synthetic.new/openai/v1"
9
+ },
10
+ "models": {
11
+ "default": "syn:large:text",
12
+ "fallbacks": [
13
+ "syn:small:text",
14
+ "syn:large:vision",
15
+ "syn:small:vision",
16
+ "hf:zai-org/GLM-5.3-Flash",
17
+ "hf:openai/gpt-oss-120b",
18
+ "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4",
19
+ "hf:deepseek-ai/DeepSeek-V4.1-Flash",
20
+ "hf:moonshotai/Kimi-K3",
21
+ "hf:Qwen/Qwen3.8-27B",
22
+ "hf:zai-org/GLM-4.7-Flash"
23
+ ],
24
+ "defaultContextWindow": 524288,
25
+ "defaultMaxOutputTokens": 65536,
26
+ "catalog": {
27
+ "syn:large:text": {
28
+ "contextWindow": 524288,
29
+ "maxOutputTokens": 65536,
30
+ "pricingPerMTok": {
31
+ "input": 0.6,
32
+ "output": 1.2,
33
+ "cachedInput": 0.03
34
+ },
35
+ "vision": true,
36
+ "status": "production",
37
+ "description": "Recommended - Synthetic's \"large:text\" convenience alias for deepseek-ai/DeepSeek-V4.1-Flash, described by the vendor as \"an efficient near-Fable model with vision.\" Despite the `:text` suffix it accepts image input (input_modalities: text, image, per the live roster). 512K context, 64K max output. Per unauthenticated GET https://api.synthetic.new/openai/v1/models (2026-09-28, HTTP 200): supported_features = tools, json_mode, structured_outputs, reasoning; reasoning_parameters.efforts = none/low/high/xhigh/max. Pricing (converted from the roster's per-token USD rates): $0.60 / $1.20 per MTok input/output, $0.03 per MTok cached input. Also reachable via the underlying weights id hf:deepseek-ai/DeepSeek-V4.1-Flash (same model, same pricing) — see that catalog entry. Not itself capability-probed with a live key; this is a roster+docs verified entry (see evidence.liveMatrix: null)."
38
+ },
39
+ "syn:small:text": {
40
+ "contextWindow": 196608,
41
+ "maxOutputTokens": 65536,
42
+ "pricingPerMTok": {
43
+ "input": 0.1,
44
+ "output": 0.5,
45
+ "cachedInput": 0.02
46
+ },
47
+ "vision": false,
48
+ "status": "production",
49
+ "description": "Synthetic's \"small:text\" convenience alias for zai-org/GLM-4.7-Flash — the smaller, faster sibling in the ~30B-parameter class, text-only input (no image modality on the live roster). Consumes rate limits more slowly per the vendor's own description. 192K context, 64K max output. supported_features = tools, json_mode, structured_outputs, reasoning (live roster GET, 2026-09-28). Pricing: $0.10 / $0.50 per MTok input/output, $0.02 per MTok cached input. Also reachable via hf:zai-org/GLM-4.7-Flash (same model). Roster+docs verified only; no live key probe."
50
+ },
51
+ "syn:large:vision": {
52
+ "contextWindow": 524288,
53
+ "maxOutputTokens": 65536,
54
+ "pricingPerMTok": {
55
+ "input": 3.0,
56
+ "output": 15.0,
57
+ "cachedInput": 0.45
58
+ },
59
+ "vision": true,
60
+ "status": "production",
61
+ "description": "Synthetic's \"large:vision\" convenience alias for moonshotai/Kimi-K3, described by the vendor as \"a massive 2.8T-parameter open-source model ... [that] supports vision on uploaded images.\" 512K context, 64K max output. supported_features = tools, json_mode, structured_outputs, reasoning (live roster GET, 2026-09-28). Pricing: $3.00 / $15.00 per MTok input/output, $0.45 per MTok cached input — the most expensive model in this roster. Also reachable via hf:moonshotai/Kimi-K3 (same model). Roster+docs verified only; no live key probe."
62
+ },
63
+ "syn:small:vision": {
64
+ "contextWindow": 262144,
65
+ "maxOutputTokens": 65536,
66
+ "pricingPerMTok": {
67
+ "input": 0.45,
68
+ "output": 2.2,
69
+ "cachedInput": 0.09
70
+ },
71
+ "vision": true,
72
+ "status": "production",
73
+ "description": "Synthetic's \"small:vision\" convenience alias for Qwen/Qwen3.8-27B — \"a small but capable coding and vision model from Qwen\" that consumes rate limits less quickly per the vendor. 256K context, 64K max output. supported_features = tools, json_mode, structured_outputs, reasoning (live roster GET, 2026-09-28). Pricing: $0.45 / $2.20 per MTok input/output, $0.09 per MTok cached input. Also reachable via hf:Qwen/Qwen3.8-27B (same model). Roster+docs verified only; no live key probe."
74
+ },
75
+ "hf:zai-org/GLM-5.3-Flash": {
76
+ "contextWindow": 524288,
77
+ "maxOutputTokens": 65536,
78
+ "pricingPerMTok": {
79
+ "input": 0.15,
80
+ "output": 0.5,
81
+ "cachedInput": 0.04
82
+ },
83
+ "vision": true,
84
+ "status": "production",
85
+ "description": "zai-org GLM-5.3-Flash, described by the vendor as \"an extremely efficient, Opus-4.8-equivalent model with vision.\" No `syn:` short alias — only reachable via this hf: (Hugging Face weights id) form. 512K context, 64K max output. supported_features = tools, json_mode, structured_outputs, reasoning (live roster GET, 2026-09-28). Pricing: $0.15 / $0.50 per MTok input/output, $0.04 per MTok cached input. Roster+docs verified only; no live key probe."
86
+ },
87
+ "hf:openai/gpt-oss-120b": {
88
+ "contextWindow": 131072,
89
+ "maxOutputTokens": 65536,
90
+ "pricingPerMTok": {
91
+ "input": 0.1,
92
+ "output": 0.1,
93
+ "cachedInput": 0.02
94
+ },
95
+ "vision": false,
96
+ "status": "production",
97
+ "description": "OpenAI's open-weight gpt-oss-120b, described by the vendor as \"OpenAI's largest open-source model. A strong reasoning model with great support for agentic tasks.\" Text-only input on the live roster. 128K context, 64K max output. supported_features = tools, json_mode, structured_outputs, reasoning (live roster GET, 2026-09-28). Pricing: $0.10 / $0.10 per MTok input/output, $0.02 per MTok cached input. Roster+docs verified only; no live key probe."
98
+ },
99
+ "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4": {
100
+ "contextWindow": 262144,
101
+ "maxOutputTokens": 65536,
102
+ "pricingPerMTok": {
103
+ "input": 0.3,
104
+ "output": 1.0,
105
+ "cachedInput": 0.06
106
+ },
107
+ "vision": false,
108
+ "status": "production",
109
+ "description": "NVIDIA Nemotron-3-Super-120B (NVFP4 quant on the roster id; the vendor's own hugging_face_id field reports the FP8 build), described by the vendor as \"a fast, 120b-parameter model with good support for coding agents. Consumes rate limits more slowly.\" Text-only input on the live roster. 256K context, 64K max output. supported_features = tools, json_mode, structured_outputs, reasoning (live roster GET, 2026-09-28). Pricing: $0.30 / $1.00 per MTok input/output, $0.06 per MTok cached input. Roster+docs verified only; no live key probe."
110
+ },
111
+ "hf:deepseek-ai/DeepSeek-V4.1-Flash": {
112
+ "contextWindow": 524288,
113
+ "maxOutputTokens": 65536,
114
+ "pricingPerMTok": {
115
+ "input": 0.6,
116
+ "output": 1.2,
117
+ "cachedInput": 0.03
118
+ },
119
+ "vision": true,
120
+ "status": "production",
121
+ "description": "Underlying weights id for the model also reachable via the syn:large:text convenience alias — same hugging_face_id, same pricing, same specs. Kept as a distinct catalog/fallback entry because both id forms are valid values for `model` on the live roster. See syn:large:text for the fuller description."
122
+ },
123
+ "hf:moonshotai/Kimi-K3": {
124
+ "contextWindow": 524288,
125
+ "maxOutputTokens": 65536,
126
+ "pricingPerMTok": {
127
+ "input": 3.0,
128
+ "output": 15.0,
129
+ "cachedInput": 0.45
130
+ },
131
+ "vision": true,
132
+ "status": "production",
133
+ "description": "Underlying weights id for the model also reachable via the syn:large:vision convenience alias — same hugging_face_id, same pricing, same specs. Kept as a distinct catalog/fallback entry because both id forms are valid values for `model` on the live roster. See syn:large:vision for the fuller description."
134
+ },
135
+ "hf:Qwen/Qwen3.8-27B": {
136
+ "contextWindow": 262144,
137
+ "maxOutputTokens": 65536,
138
+ "pricingPerMTok": {
139
+ "input": 0.45,
140
+ "output": 2.2,
141
+ "cachedInput": 0.09
142
+ },
143
+ "vision": true,
144
+ "status": "production",
145
+ "description": "Underlying weights id for the model also reachable via the syn:small:vision convenience alias — same hugging_face_id (Qwen/Qwen3.8-27B-FP8), same pricing, same specs. Kept as a distinct catalog/fallback entry because both id forms are valid values for `model` on the live roster. See syn:small:vision for the fuller description."
146
+ },
147
+ "hf:zai-org/GLM-4.7-Flash": {
148
+ "contextWindow": 196608,
149
+ "maxOutputTokens": 65536,
150
+ "pricingPerMTok": {
151
+ "input": 0.1,
152
+ "output": 0.5,
153
+ "cachedInput": 0.02
154
+ },
155
+ "vision": false,
156
+ "status": "production",
157
+ "description": "Underlying weights id for the model also reachable via the syn:small:text convenience alias — same hugging_face_id, same pricing, same specs. Kept as a distinct catalog/fallback entry because both id forms are valid values for `model` on the live roster. See syn:small:text for the fuller description."
158
+ }
159
+ },
160
+ "topModels": [
161
+ "syn:large:text",
162
+ "syn:small:text",
163
+ "syn:large:vision",
164
+ "syn:small:vision",
165
+ "hf:zai-org/GLM-5.3-Flash"
166
+ ]
167
+ },
168
+ "capabilities": {
169
+ "text": true,
170
+ "streaming": true,
171
+ "tools": true,
172
+ "toolsWithStreaming": true,
173
+ "structuredOutput": true,
174
+ "structuredOutputWithTools": false,
175
+ "embeddings": false,
176
+ "thinking": true
177
+ },
178
+ "errorRules": [],
179
+ "setup": {
180
+ "url": "https://synthetic.new",
181
+ "apiKeyFormat": null,
182
+ "billingPolicy": "no-free-tier",
183
+ "instructions": [
184
+ "1. Visit: https://synthetic.new and choose Sign up (or Log in if you already have an account)",
185
+ "2. Subscribe to a Pack ($1/day or $30/month, 500 requests/5hr per the pricing page) or set up enterprise usage-based billing — Synthetic has no free tier or keyless trial",
186
+ "3. Generate an API key from your account dashboard",
187
+ "4. Set {apiKeyEnvVar} in your .env file"
188
+ ],
189
+ "description": "OpenAI-compatible endpoint at https://api.synthetic.new/openai/v1 (confirmed by both the vendor's own docs and LiteLLM's third-party provider page, which lists /chat/completions as the only supported operation), serving 11 model ids covering 7 unique always-on open-source models (DeepSeek V4.1 Flash, Kimi K3, Qwen 3.8 27B, GLM 5.3 Flash, GLM 4.7 Flash, GPT-OSS-120B, Nemotron-3-Super-120B) under one flat-fee or usage-based subscription. No free tier or keyless trial; billing is a $1/day or $30/month pack (500 req/5hr) or enterprise pay-per-token. The pricing page also lists a separate embeddings model (hf:nomic-ai/nomic-embed-text-v1.5) included in the subscription, but NeuroLink's embeddings capability is not currently wired for Tier-2 catalog providers (only OpenAI, Google AI Studio, Google Vertex and Bedrock embed natively), so capabilities.embeddings is false here regardless of vendor support."
190
+ },
191
+ "evidence": {
192
+ "rosterVerified": {
193
+ "date": "2026-09-28",
194
+ "method": "unauthenticated GET https://api.synthetic.new/openai/v1/models — 11 models; credential-free, no key used",
195
+ "status": 200
196
+ },
197
+ "billingProbe": {
198
+ "date": "2026-09-28",
199
+ "method": "unauthenticated GET https://synthetic.new/pricing — no free tier; $1/day or $30/month subscription pack (500 req/5hr), or enterprise usage-based pricing; credential-free, no key used",
200
+ "status": 200
201
+ },
202
+ "liveMatrix": null,
203
+ "addedInPR": "https://github.com/juspay/neurolink/pull/1848"
204
+ }
205
+ }
@@ -203,6 +203,7 @@ export class OpenRouterProvider extends OpenAIChatCompletionsProvider {
203
203
  "mistralai/devstral",
204
204
  "meta-llama/llama-3.3",
205
205
  "meta-llama/llama-3.2",
206
+ "meta-llama/llama-3.1",
206
207
  "qwen/qwen3",
207
208
  "nvidia/nemotron",
208
209
  ];
@@ -1648,6 +1648,12 @@ export class OpenAIChatCompletionsProvider extends BaseProvider {
1648
1648
  // middleware short-circuits the request — the case where there is no
1649
1649
  // turn to build on at all.
1650
1650
  let loopConversation;
1651
+ // Cell-3 identity fix: the last model id the SERVER actually echoed on
1652
+ // the wire (via `onModelObserved`, see `runStreamLoop`), distinct from
1653
+ // the pre-call resolved/requested `modelId` below. Stays undefined for
1654
+ // backends that never echo `model` on a chunk, in which case the
1655
+ // `result.model` getter falls back to `modelId` — unchanged behavior.
1656
+ let observedServerModel;
1651
1657
  const providerNameForLoop = this.providerName;
1652
1658
  const streamBaseModel = {
1653
1659
  specificationVersion: "v3",
@@ -1700,6 +1706,9 @@ export class OpenAIChatCompletionsProvider extends BaseProvider {
1700
1706
  resolveUsage,
1701
1707
  resolveFinish,
1702
1708
  responseFormat,
1709
+ onModelObserved: (model) => {
1710
+ observedServerModel = model;
1711
+ },
1703
1712
  });
1704
1713
  const completion = loopPromise.then(() => Promise.all([usagePromise, finishPromise]).then(([usage, reason]) => ({
1705
1714
  type: "finish",
@@ -1930,6 +1939,24 @@ export class OpenAIChatCompletionsProvider extends BaseProvider {
1930
1939
  toolsUsed,
1931
1940
  metadata: streamMetadata,
1932
1941
  };
1942
+ // Cell-3 identity fix: `model` starts as a plain `modelId` data property
1943
+ // above (satisfying StreamResult's type and giving every reader a value
1944
+ // even before the loop starts), then gets redefined as a live getter.
1945
+ // A plain reassignment (`result.model = observedServerModel`) would not
1946
+ // survive `preserveLiveStreamAccessors`' re-wrapping at the
1947
+ // BaseProvider/NeuroLink boundaries — those boundaries spread `result`
1948
+ // into a new object BEFORE the background loop has produced a single
1949
+ // chunk, which freezes a plain field at its construction-time value.
1950
+ // Re-defining as a getter (the same mechanism already used for
1951
+ // `toolExecutions` below) means every boundary's spread re-applies the
1952
+ // getter itself, so a caller reading `.model` after draining `.stream`
1953
+ // sees whatever the server actually echoed, falling back to the
1954
+ // pre-call resolved `modelId` when the backend never echoed one.
1955
+ Object.defineProperty(result, "model", {
1956
+ enumerable: true,
1957
+ configurable: true,
1958
+ get: () => observedServerModel ?? modelId,
1959
+ });
1933
1960
  // Lazy getter: every read transforms the live `toolExecutionSummaries`
1934
1961
  // through the canonical `transformToolExecutions()` so consumers see
1935
1962
  // `{name, input, output, duration}[]` (codebase convention), while still
@@ -1952,7 +1979,7 @@ export class OpenAIChatCompletionsProvider extends BaseProvider {
1952
1979
  return result;
1953
1980
  }
1954
1981
  async runStreamLoop(args) {
1955
- const { maxSteps, modelId, url, fetchImpl, abortSignal, options, conversation, openAITools, openAIToolChoice, toolsRecord, toolNameFromWire, emitter, toolsUsed, toolExecutionSummaries, pushChunk, closeChannel, resolveUsage, resolveFinish, responseFormat, } = args;
1982
+ const { maxSteps, modelId, url, fetchImpl, abortSignal, options, conversation, openAITools, openAIToolChoice, toolsRecord, toolNameFromWire, emitter, toolsUsed, toolExecutionSummaries, pushChunk, closeChannel, resolveUsage, resolveFinish, responseFormat, onModelObserved, } = args;
1956
1983
  // Hoisted above the try so the catch can resolve the usage accumulated
1957
1984
  // by steps that completed BEFORE the failure — those steps were billed.
1958
1985
  let stepFinish = null;
@@ -2060,6 +2087,15 @@ export class OpenAIChatCompletionsProvider extends BaseProvider {
2060
2087
  if (stepResult.usage) {
2061
2088
  stepUsage = mergeUsage(stepUsage, stepResult.usage);
2062
2089
  }
2090
+ // Cell-3 identity fix: `stepResult.model` is what the SERVER echoed
2091
+ // on the wire (parseSSEStream captures `chunk.model`), which can
2092
+ // differ from the pre-call resolved `modelId` a gateway/router was
2093
+ // asked for. Surfaced via callback rather than the method's return
2094
+ // value so `executeStream` can update the already-returned
2095
+ // `StreamResult` in place (see `onModelObserved` wiring there).
2096
+ if (stepResult.model) {
2097
+ onModelObserved?.(stepResult.model);
2098
+ }
2063
2099
  if (stepResult.toolCalls.size === 0) {
2064
2100
  break;
2065
2101
  }
@@ -255,6 +255,16 @@ export type StreamLoopArgs = {
255
255
  * schema was requested, or when tools suppress it.
256
256
  */
257
257
  responseFormat?: OpenAICompatResponseFormat;
258
+ /**
259
+ * Fired once per step that echoes a `model` field on the wire (SSE
260
+ * `chunk.model`, captured by `parseSSEStream` into `OpenAICompatSSEResult.model`).
261
+ * Lets the caller learn what the SERVER actually served, distinct from the
262
+ * pre-call resolved/requested `modelId` — a gateway or router can rewrite
263
+ * an alias to a concrete model id. Not called when a step's response omits
264
+ * `model` (some backends don't echo it), so the caller must keep its own
265
+ * fallback.
266
+ */
267
+ onModelObserved?: (model: string) => void;
258
268
  };
259
269
  export type OpenAICompatBuildBodyArgs = {
260
270
  modelId: string;
@@ -1,2 +1,2 @@
1
- export type CatalogProviderName = "api-route" | "baseten" | "cerebras" | "cloudflare" | "deepseek" | "fireworks" | "friendli" | "gmicloud" | "groq" | "huggingface" | "inception-labs" | "io-intelligence" | "mancer" | "mistral" | "morph" | "novita" | "perplexity" | "sambanova" | "together-ai" | "upstage" | "xai";
2
- export type CatalogCredentialKey = "apiRoute" | "baseten" | "cerebras" | "cloudflare" | "deepseek" | "fireworks" | "friendli" | "gmicloud" | "groq" | "huggingFace" | "inceptionLabs" | "ioIntelligence" | "mancer" | "mistral" | "morph" | "novita" | "perplexity" | "sambanova" | "together" | "upstage" | "xai";
1
+ export type CatalogProviderName = "above-dev" | "aiand" | "ambient" | "api-route" | "baseten" | "bee-heossi" | "cerebras" | "charm-hyper" | "chutes" | "cloudflare" | "deepinfra" | "deepseek" | "empiriolabs" | "featherless-ai" | "fireworks" | "friendli" | "gmicloud" | "groq" | "huggingface" | "inception-labs" | "inco" | "inference-net" | "io-intelligence" | "koscompute" | "lilac" | "llmtech" | "mancer" | "mistral" | "moark" | "morph" | "neuralwatt" | "novita" | "ovhcloud" | "pareto-inference" | "perplexity" | "sambanova" | "sarvam" | "synthetic" | "together-ai" | "upstage" | "xai";
2
+ export type CatalogCredentialKey = "aboveDev" | "aiand" | "ambient" | "apiRoute" | "baseten" | "beeHeossi" | "cerebras" | "charmHyper" | "chutes" | "cloudflare" | "deepinfra" | "deepseek" | "empiriolabs" | "featherlessAi" | "fireworks" | "friendli" | "gmicloud" | "groq" | "huggingFace" | "inceptionLabs" | "inco" | "inferenceNet" | "ioIntelligence" | "koscompute" | "lilac" | "llmtech" | "mancer" | "mistral" | "moark" | "morph" | "neuralwatt" | "novita" | "ovhcloud" | "paretoInference" | "perplexity" | "sambanova" | "sarvam" | "synthetic" | "together" | "upstage" | "xai";
@@ -172,6 +172,18 @@ export type NeurolinkCredentials = {
172
172
  apiKey?: string;
173
173
  baseURL?: string;
174
174
  };
175
+ aboveDev?: {
176
+ apiKey?: string;
177
+ baseURL?: string;
178
+ };
179
+ aiand?: {
180
+ apiKey?: string;
181
+ baseURL?: string;
182
+ };
183
+ ambient?: {
184
+ apiKey?: string;
185
+ baseURL?: string;
186
+ };
175
187
  apiRoute?: {
176
188
  apiKey?: string;
177
189
  baseURL?: string;
@@ -180,19 +192,43 @@ export type NeurolinkCredentials = {
180
192
  apiKey?: string;
181
193
  baseURL?: string;
182
194
  };
195
+ beeHeossi?: {
196
+ apiKey?: string;
197
+ baseURL?: string;
198
+ };
183
199
  cerebras?: {
184
200
  apiKey?: string;
185
201
  baseURL?: string;
186
202
  };
203
+ charmHyper?: {
204
+ apiKey?: string;
205
+ baseURL?: string;
206
+ };
207
+ chutes?: {
208
+ apiKey?: string;
209
+ baseURL?: string;
210
+ };
187
211
  cloudflare?: {
188
212
  apiKey?: string;
189
213
  baseURL?: string;
190
214
  accountId?: string;
191
215
  };
216
+ deepinfra?: {
217
+ apiKey?: string;
218
+ baseURL?: string;
219
+ };
192
220
  deepseek?: {
193
221
  apiKey?: string;
194
222
  baseURL?: string;
195
223
  };
224
+ empiriolabs?: {
225
+ apiKey?: string;
226
+ baseURL?: string;
227
+ };
228
+ featherlessAi?: {
229
+ apiKey?: string;
230
+ baseURL?: string;
231
+ };
196
232
  fireworks?: {
197
233
  apiKey?: string;
198
234
  baseURL?: string;
@@ -217,10 +253,30 @@ export type NeurolinkCredentials = {
217
253
  apiKey?: string;
218
254
  baseURL?: string;
219
255
  };
256
+ inco?: {
257
+ apiKey?: string;
258
+ baseURL?: string;
259
+ };
260
+ inferenceNet?: {
261
+ apiKey?: string;
262
+ baseURL?: string;
263
+ };
220
264
  ioIntelligence?: {
221
265
  apiKey?: string;
222
266
  baseURL?: string;
223
267
  };
268
+ koscompute?: {
269
+ apiKey?: string;
270
+ baseURL?: string;
271
+ };
272
+ lilac?: {
273
+ apiKey?: string;
274
+ baseURL?: string;
275
+ };
276
+ llmtech?: {
277
+ apiKey?: string;
278
+ baseURL?: string;
279
+ };
224
280
  mancer?: {
225
281
  apiKey?: string;
226
282
  baseURL?: string;
@@ -229,14 +285,30 @@ export type NeurolinkCredentials = {
229
285
  apiKey?: string;
230
286
  baseURL?: string;
231
287
  };
288
+ moark?: {
289
+ apiKey?: string;
290
+ baseURL?: string;
291
+ };
232
292
  morph?: {
233
293
  apiKey?: string;
234
294
  baseURL?: string;
235
295
  };
296
+ neuralwatt?: {
297
+ apiKey?: string;
298
+ baseURL?: string;
299
+ };
236
300
  novita?: {
237
301
  apiKey?: string;
238
302
  baseURL?: string;
239
303
  };
304
+ ovhcloud?: {
305
+ apiKey?: string;
306
+ baseURL?: string;
307
+ };
308
+ paretoInference?: {
309
+ apiKey?: string;
310
+ baseURL?: string;
311
+ };
240
312
  perplexity?: {
241
313
  apiKey?: string;
242
314
  baseURL?: string;
@@ -245,6 +317,14 @@ export type NeurolinkCredentials = {
245
317
  apiKey?: string;
246
318
  baseURL?: string;
247
319
  };
320
+ sarvam?: {
321
+ apiKey?: string;
322
+ baseURL?: string;
323
+ };
324
+ synthetic?: {
325
+ apiKey?: string;
326
+ baseURL?: string;
327
+ };
248
328
  together?: {
249
329
  apiKey?: string;
250
330
  baseURL?: string;