@juspay/neurolink 13.4.4 → 13.4.5
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/README.md +34 -16
- package/dist/browser/neurolink.min.js +1 -1
- package/dist/cli/commands/decide.js +1 -1
- package/dist/constants/enums.d.ts +2 -0
- package/dist/constants/enums.js +2 -0
- package/dist/hitl/hitlManager.js +1 -1
- package/dist/neurolink.d.ts +2 -2
- package/dist/neurolink.js +17 -4
- package/dist/providers/catalog/xor.json +23 -9
- package/dist/types/hitl.d.ts +3 -3
- package/docs-site/static/search-index.json +45 -45
- package/package.json +2 -1
|
@@ -60,7 +60,7 @@ Suggestions:
|
|
|
60
60
|
Notes:
|
|
61
61
|
1. Ensure you're using a tool-capable model, e.g. meta-llama/Llama-3.3-70B-Instruct, zai-org/GLM-5 or Qwen/Qwen3.5-397B-A17B
|
|
62
62
|
2. Check that your model supports function calling
|
|
63
|
-
3. Verify tool schema format is correct`}],timeouts:{generateMs:12e4,streamMs:12e4},autoSelectPriority:10,setup:{url:"https://huggingface.co/settings/tokens",apiKeyFormat:"^hf_[A-Za-z0-9]{34,}$",billingPolicy:"free-tier",instructions:["1. Visit: https://huggingface.co/settings/tokens","2. Create or sign in to your HuggingFace account","3. Generate a new access token","4. Set {apiKeyEnvVar} in your .env file (HF_TOKEN also accepted)"]},evidence:{rosterVerified:{date:"2026-09-24",method:"Live against router.huggingface.co on 2026-09-24. GET /v1/models returned 138 models; each of the 53 catalog ids was also sent a real chat call. 39 ids are absent from the roster AND rejected with 400 ('does not exist' / 'not supported by any provider'), so they are marked retired and keep their enumMember; the other 14 are on the roster and answered 402 (the test account's monthly credits are spent), which is a billing block, not a rejection, so they stay production. No id had the two signals disagree. topModels swaps the retired Mistral-Large-3 for zai-org/GLM-5, which is on the roster. billingPolicy is free-tier per https://huggingface.co/docs/inference-providers/pricing (free users get monthly credits, no card). apiKeyFormat accepts the hf_ + 34 characters a real token has; the previous hf_ + 37 pattern rejected it. structuredOutput, toolsWithStreaming and per-model vision are left unchanged: /v1/models reports them per serving provider, and the 402 prevented a live round trip that would prove them."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1781"}}}}),_Ae,eNr=E({"src/lib/providers/catalog/inception-labs.json"(){_Ae={$schema:"./provider-catalog.schema.json",id:"inception-labs",displayName:"Inception Labs",aliases:["inception","mercury"],tier:2,wire:{baseURL:"https://api.inceptionlabs.ai/v1"},models:{default:"mercury-2",fallbacks:["mercury-2"],defaultContextWindow:128e3,defaultMaxOutputTokens:5e4,catalog:{"mercury-2":{contextWindow:128e3,maxOutputTokens:5e4,pricingPerMTok:{input:.25,output:.75,cachedInput:.025},vision:!1,status:"production",description:"Recommended - Mercury 2, Inception's enterprise diffusion LLM (dLLM); reasoning, tool use, structured output; 128K context, 1000+ tok/s"}}},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{pattern:"Model must be one of the following",class:"invalid-model",message:"Inception Labs model '{model}' is not valid. Pick a current model \u2014 see https://docs.inceptionlabs.ai/get-started/models."}],setup:{url:"https://platform.inceptionlabs.ai/dashboard/api-keys",apiKeyFormat:"^sk_[A-Za-z0-9_-]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://platform.inceptionlabs.ai and sign in (Google OAuth works)","2. New accounts get 100M free tokens with no card required","3. Create an API key under Dashboard -> API Keys","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-03",status:401,code:"invalid_api_key"},liveMatrix:{date:"2026-09-03",result:`Full capability sweep on mercury-2: chat, stream, system_role, content_text_parts, sampling_params, tools, tools_stream, tools_roundtrip_null, tool_choice_without_tools, json_object, json_schema and tools_plus_schema all 200. The smoke-test json_schema probe (max_tokens:60) came back truncated (finish_reason=length, null content) because this diffusion model spends part of the budget on reasoning tokens before content; re-probed live with max_tokens:300 and got a clean schema-conformant reply ({"name":"Lila Whitaker","age":34}, finish_reason=stop), confirming structuredOutput:true is correct. vision is 400 (text-only; rejects image_url on mercury-2, matching the vendor docs' 'Supported Formats: Text'). bad_key is 401 'Incorrect API key provided'. bad_model is 400 with an array-shaped pydantic error.message; the shared OpenAI-compat wire-error builder coerces a non-string Error message via toString, so that array becomes the literal string "[object Object]" and no regex pattern can match the real text \u2014 errorRules is intentionally left empty rather than shipping a rule that can never fire (see notes).`},addedInPR:"https://github.com/juspay/neurolink/pull/1625"}}}}),EAe,tNr=E({"src/lib/providers/catalog/inceptron.json"(){EAe={$schema:"./provider-catalog.schema.json",id:"inceptron",displayName:"Inceptron",aliases:[],tier:2,wire:{baseURL:"https://api.inceptron.io/v1"},models:{default:"zai-org/GLM-5.3",fallbacks:["moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4-Flash-0731","zai-org/GLM-5.2"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"zai-org/GLM-5.3":{contextWindow:1048576,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`NeuroLink default. The model named in the code examples on the vendor's docs Get Started page (https://docs.inceptron.io), Introduction (https://docs.inceptron.io/introduction), Chat Completions API Reference (https://docs.inceptron.io/API%20Reference/chat-completions), Error Handling and Handling Streaming Responses pages, and in the Kilo Code and OpenCode config ("model": "inceptron/zai-org/GLM-5.3") on https://docs.inceptron.io/Guides/kilo-code, which states: "GLM-5.3 supports a 1M-token context window (1,048,576 tokens)". The config block on that page has "limit" set to context 1048576 and output 1048576. Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; 1M context; quantization fp4; size 754B; input $1.40, output $4.40 and cache read $0.26 per 1M tokens. The docs Models API Reference (https://docs.inceptron.io/API%20Reference/models) lists it with Deployment Mode Serverless. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576, max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].`},"moonshotai/Kimi-K2.6":{contextWindow:262144,pricingPerMTok:{input:.73,output:3.5,cachedInput:.25},vision:!0,status:"production",description:'NeuroLink fallback. The model named in the tool-calling examples on https://docs.inceptron.io/Guides/tool-calling and https://docs.inceptron.io/API%20Reference/chat-completions (request, response and streamed tool-call response examples). Models page https://www.inceptron.io/models (2026-09-29): tags multimodal, tool-calling, reasoning; 262K context; quantization Int4; size 1T; input $0.73, output $3.50 and cache read $0.25 per 1M tokens. The docs Models API Reference (https://docs.inceptron.io/API%20Reference/models) lists it with Deployment Mode Serverless. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 262144, max_output_length 262144, input_modalities ["text","image"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is true from the models page tag multimodal and the roster input_modalities; an image request was not exercised live.'},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:1048576,pricingPerMTok:{input:.13,output:.28,cachedInput:.03},vision:!1,status:"production",description:'NeuroLink fallback. Listed among the currently supported Inceptron model IDs on https://docs.inceptron.io/Guides/kilo-code and with Deployment Mode Serverless on the docs Models API Reference (https://docs.inceptron.io/API%20Reference/models). Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; 1M context; quantization fp4; size 284B; input $0.13, output $0.28 and cache read $0.03 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576, max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].'},"zai-org/GLM-5.2":{contextWindow:1048576,pricingPerMTok:{input:1.2,output:4.2,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink fallback. Listed among the currently supported Inceptron model IDs on https://docs.inceptron.io/Guides/kilo-code and with Deployment Mode Serverless on the docs Models API Reference (https://docs.inceptron.io/API%20Reference/models). Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; 1M context; quantization fp4; size 754B; input $1.20, output $4.20 and cache read $0.26 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576, max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].'},"moonshotai/Kimi-K2.7-Code":{contextWindow:262144,pricingPerMTok:{input:.75,output:3.5,cachedInput:.2},vision:!0,status:"production",description:'Listed among the currently supported Inceptron model IDs on https://docs.inceptron.io/Guides/kilo-code and with Deployment Mode Serverless on the docs Models API Reference (https://docs.inceptron.io/API%20Reference/models). Models page https://www.inceptron.io/models (2026-09-29): tags multimodal, tool-calling, reasoning; 262K context; quantization Int4; size 1T; input $0.75, output $3.50 and cache read $0.20 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 262144, max_output_length 262144, input_modalities ["text","image"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is true from the models page tag multimodal and the roster input_modalities; an image request was not exercised live.'},"zai-org/GLM-5.3-Flash":{contextWindow:1048576,pricingPerMTok:{input:.15,output:.5,cachedInput:.07},vision:!1,status:"production",description:'The vendor homepage (https://www.inceptron.io) shows the text "Try GLM 5.3 Flash". Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; "1.3M context"; quantization fp8; size 753B; input $0.15, output $0.50 and cache read $0.07 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576 (contextWindow uses this figure), max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].'}},topModels:["zai-org/GLM-5.3","moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4-Flash-0731","zai-org/GLM-5.2","moonshotai/Kimi-K2.7-Code","zai-org/GLM-5.3-Flash"],visionModel:"moonshotai/Kimi-K2.6"},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Inceptron returned HTTP 401 unauthorized. The vendor's Error Handling page (https://docs.inceptron.io/Guides/error-handling) describes 401 as: Your API key is missing, invalid, or disabled. NeuroLink reads {apiKeyEnvVar}; keys come from {setupUrl}"},{status:429,class:"rate-limit",message:"Inceptron returned HTTP 429. The vendor's Error Handling page (https://docs.inceptron.io/Guides/error-handling) describes 429 as: You have exceeded your rate limit."}],setup:{url:"https://console.inceptron.io",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://console.inceptron.io and sign in or sign up \u2014 the sign-in page shows Continue with Google, Continue with GitHub and Sign in with email, and links to https://console.inceptron.io/auth/signup",'2. Create an API key \u2014 the Introduction page says: "After signing up, navigate to the account section of the dashboard to create an API key." (https://docs.inceptron.io/introduction)',"3. Set {apiKeyEnvVar} in your .env file (the docs' examples read INCEPTRON_API_KEY)"],description:`OpenAI-compatible endpoint at https://api.inceptron.io/v1 (https://docs.inceptron.io/API%20Reference/chat-completions: "Our API is compliant with OpenAI's Chat Completions API"), with the 6 models the unauthenticated GET /models roster listed on 2026-09-29 in models.catalog. An unauthenticated GET of https://api.inceptron.io/v1/chat/completions returned HTTP 401 with error.type invalid_request_error and error.code unauthorized (2026-09-29), so errorRules match status 401; the 429 rule uses the status the vendor's Error Handling page lists. pricingPerMTok is taken from the models page https://www.inceptron.io/models (2026-09-29); the pricing field in the roster response carries different values. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are NeuroLink placeholders for model ids outside models.catalog, not vendor figures; the roster max_output_length values are quoted in the models.catalog descriptions and no per-model maxOutputTokens is set. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. Verification level: docs- and roster-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.inceptron.io/v1/models \u2014 6 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,code:"unauthorized",method:"unauthenticated GET https://api.inceptron.io/v1/chat/completions \u2014 error.type invalid_request_error; credential-free, no key used"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),SAe,rNr=E({"src/lib/providers/catalog/inco.json"(){SAe={$schema:"./provider-catalog.schema.json",id:"inco",displayName:"Inco",aliases:[],tier:2,wire:{baseURL:"https://api.inco.ai/v1"},models:{default:"glm-5.3",fallbacks:["deepseek-v4.1-flash","kimi-k3","glm-5.3-flash","minimax-m3","glm-5.3:fast","kimi-k3:fast","deepseek-v4.1-flash:fast","glm-5.3-flash:fast","minimax-m3:fast"],defaultContextWindow:1048576,defaultMaxOutputTokens:4096,catalog:{"glm-5.3":{contextWindow:1048576,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:"GLM 5.3 \u2014 standard tier, 744B parameters, exposes `reasoning_effort: true` on the live catalog. Text-only (no `modalities` field in the API response). GLM-5.3-licensed; model card https://huggingface.co/zai-org/GLM-5.3. No vendor-documented recommended/default model exists (per https://platform.inco.ai/docs), so this id was chosen editorially as the catalog default for its reasoning capability and mid-range pricing among the roster. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $1.40 / $4.40 per MTok input/output, $0.26 cached input."},"deepseek-v4.1-flash":{contextWindow:1048576,pricingPerMTok:{input:.3,output:1.2,cachedInput:.006},vision:!1,status:"production",description:"DeepSeek V4.1 Flash \u2014 standard tier, 552B parameters, `reasoning_effort: true`. Text-only (no `modalities` field); compare the `:fast` variant of this id below, which does carry a vision-capable `modalities` field. MIT-licensed; model card https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.30 / $1.20 per MTok input/output, $0.006 cached input. Fallback."},"kimi-k3":{contextWindow:1048576,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!1,status:"production",description:"Kimi K3 \u2014 standard tier, 2.8T parameters (MoE), `reasoning_effort: true`. Text-only (no `modalities` field). Licensed under the Kimi K3 License; model card https://huggingface.co/moonshotai/Kimi-K3. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $3.00 / $15.00 per MTok input/output, $0.30 cached input. Fallback."},"glm-5.3-flash":{contextWindow:1048576,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!1,status:"production",description:"GLM 5.3 Flash \u2014 standard tier, 320B parameters. `reasoning_effort: false` and no `modalities` field on this id (contrast the `:fast` variant, which is vision-capable per its `modalities` field). Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.15 / $0.50 per MTok input/output, $0.03 cached input. Fallback."},"minimax-m3":{contextWindow:1048576,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!0,status:"production",description:"MiniMax M3 \u2014 standard tier, 428B parameters, `reasoning_effort: true`. The live catalog's `modalities` field lists `input: [text, image]`, `output: [text]` for this id, so it is marked vision-capable \u2014 not independently probed for a working image reply (no key was used; see evidence.liveMatrix). MiniMax Community License; model card https://huggingface.co/MiniMaxAI/MiniMax-M3. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.30 / $1.20 per MTok input/output, $0.06 cached input. Fallback."},"glm-5.3:fast":{contextWindow:1048576,pricingPerMTok:{input:2.8,output:8.8,cachedInput:.52},vision:!1,status:"production",description:'GLM 5.3 (Fast) \u2014 fast-tier sibling of the default `glm-5.3`; same context and parameter count, `reasoning_effort: false`, no `modalities` field. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $2.80 / $8.80 per MTok input/output, $0.52 cached input \u2014 2x the standard tier\'s price for the lower-latency "fast" variant. Fallback.'},"kimi-k3:fast":{contextWindow:1048576,pricingPerMTok:{input:6,output:30,cachedInput:.6},vision:!1,status:"production",description:"Kimi K3 (Fast) \u2014 fast-tier sibling of `kimi-k3`; same 2.8T parameters, `reasoning_effort: false`, no `modalities` field. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $6.00 / $30.00 per MTok input/output, $0.60 cached input. Fallback."},"deepseek-v4.1-flash:fast":{contextWindow:1048576,pricingPerMTok:{input:.6,output:2.4,cachedInput:.012},vision:!0,status:"production",description:"DeepSeek V4.1 Flash (Fast) \u2014 fast-tier sibling of `deepseek-v4.1-flash`. The live catalog's `modalities` field lists `input: [text, image]`, `output: [text]` for this id specifically (the standard, non-fast id carries no `modalities` field), so only this entry is marked vision-capable \u2014 not independently probed for a working image reply (no key was used; see evidence.liveMatrix). Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.60 / $2.40 per MTok input/output, $0.012 cached input. Fallback."},"glm-5.3-flash:fast":{contextWindow:1048576,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:"GLM 5.3 Flash (Fast) \u2014 fast-tier sibling of `glm-5.3-flash`. The live catalog's `modalities` field lists `input: [text, image]`, `output: [text]` for this id specifically (the standard, non-fast id carries no `modalities` field), so only this entry is marked vision-capable \u2014 not independently probed for a working image reply (no key was used; see evidence.liveMatrix). MIT-licensed; model card https://huggingface.co/zai-org/GLM-5.3-Flash. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.15 / $0.50 per MTok input/output, $0.03 cached input \u2014 same price as the non-fast `glm-5.3-flash`. Fallback."},"minimax-m3:fast":{contextWindow:1048576,pricingPerMTok:{input:.6,output:2.4,cachedInput:.12},vision:!0,status:"production",description:"MiniMax M3 (Fast) \u2014 fast-tier sibling of `minimax-m3`; same 428B parameters and vision-capable `modalities` field, `reasoning_effort: false`. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.60 / $2.40 per MTok input/output, $0.12 cached input. Fallback."}},topModels:["glm-5.3","kimi-k3","deepseek-v4.1-flash","glm-5.3-flash","minimax-m3"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key|key_expired",class:"authentication",message:"Invalid Inco API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:404,pattern:"model_not_found",class:"invalid-model",message:"Inco model '{model}' not found. Pick a current model from the public /v1/models roster or {setupUrl}"},{status:429,pattern:"rate_limit_exceeded|spend_limit_exceeded",class:"rate-limit",message:"Inco rate limit exceeded (per-minute cap or monthly spend cap). Wait and retry, or check your plan at {setupUrl}"}],setup:{url:"https://platform.inco.ai/waitlist",apiKeyFormat:"^sk-inco-",billingPolicy:"no-free-tier",instructions:["1. Visit: https://platform.inco.ai/waitlist and request access \u2014 Inco is currently waitlist-gated, not open signup; existing users sign in at https://platform.inco.ai/sign-in","2. Once approved, create an API key on the dashboard's Keys page (https://platform.inco.ai/keys) \u2014 it is shown in full only once and starts with sk-inco-","3. Add prepaid credit before use: billing is strictly pay-per-token with no free tier, and a zero balance returns HTTP 402 (`credit_balance_exhausted`) until you top up","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible Chat Completions endpoint at https://api.inco.ai/v1 (per vendor docs, also reachable via an Anthropic-SDK-shaped API at the host root https://api.inco.ai). The public model catalog (GET /v1/models) is fetchable without a key \u2014 confirmed live 2026-09-28, HTTP 200 with 10 models. Access to a working key is currently gated by a waitlist (https://platform.inco.ai/waitlist), and billing is strictly prepaid pay-per-token with no stated free tier (https://platform.inco.ai/docs#limits)."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.inco.ai/v1/models \u2014 10 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),kAe,nNr=E({"src/lib/providers/catalog/inference-net.json"(){kAe={$schema:"./provider-catalog.schema.json",id:"inference-net",displayName:"Inference.net",aliases:[],tier:2,wire:{baseURL:"https://api.inference.net/v1",envOverrides:{apiKey:"INFERENCE_API_KEY"}},models:{default:"glm-5.2",fallbacks:["glm-5.3","glm-5.3-flash","llama-3.3-70b-instruct","deepseek-v3.2","gpt-4.1-mini","gemini-2.5-flash","claude-haiku-4-5"],defaultContextWindow:1e6,defaultMaxOutputTokens:128e3,catalog:{"glm-5.2":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:1.3,output:4.4,cachedInput:.2},vision:!1,status:"production",description:'Zhipu GLM-5.2, served natively on Inference.net\'s own infrastructure. This is the exact model used in the request-body example on the vendor\'s own API quickstart (https://docs.inference.net/api/api-quickstart, retrieved 2026-09-28: `baseURL: "https://api.inference.net/v1"`, `model: "glm-5.2"`, streaming chat via the OpenAI SDK), so it is picked as the catalog default over an arbitrary roster pick. context_length/max_completion_tokens/pricing read from the live, unauthenticated GET https://api.inference.net/v1/models on 2026-09-28 (200, 63 models). input_modalities is ["text"] only for this model \u2014 no image/video support documented. Not live capability-probed (credential-free onboarding, no key used).'},"glm-5.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.9,output:3,cachedInput:.15},vision:!1,status:"production",description:"Zhipu GLM-5.3 \u2014 newer GLM generation on the same live roster; one of only a handful of models whose supported_endpoints spans chat, responses and messages together (per the live /v1/models payload, 2026-09-28). input_modalities text-only. Roster-listed and priced from the vendor's own /v1/models response; not itself capability-probed."},"glm-5.3-flash":{contextWindow:1048576,maxOutputTokens:128e3,pricingPerMTok:{input:.09,output:.28,cachedInput:.02},vision:!0,status:"production",description:'Zhipu GLM-5.3 Flash \u2014 cheapest model on the roster and the only one of the eight cataloged here whose live /v1/models entry lists input_modalities ["text","image","video"] (2026-09-28 GET), so it is the one model in this entry marked vision: true; not itself capability-probed end to end (no key used).'},"llama-3.3-70b-instruct":{contextWindow:131072,maxOutputTokens:128e3,pricingPerMTok:{input:.13,output:.4},vision:!1,status:"production",description:"Meta Llama 3.3 70B Instruct, open-weight \u2014 widely-recognized baseline fallback. Roster-listed with no cached-input price on the live /v1/models payload (2026-09-28); input_modalities text-only."},"deepseek-v3.2":{contextWindow:163840,maxOutputTokens:65536,pricingPerMTok:{input:.7,output:2,cachedInput:.35},vision:!1,status:"production",description:"DeepSeek V3.2, open-weight \u2014 roster-listed fallback from the live /v1/models GET (2026-09-28); input_modalities text-only."},"gpt-4.1-mini":{contextWindow:1047576,maxOutputTokens:32768,pricingPerMTok:{input:.4,output:1.6,cachedInput:.1},vision:!0,status:"production",description:`OpenAI GPT-4.1 mini, reachable through Inference.net's hosted gateway under the same Bearer-key API (the vendor's quickstart separately documents a 'proxy mode' with extra x-inference-provider* headers for BYO provider keys \u2014 not used here; this catalog entry only relies on the plain gateway call). Live /v1/models (2026-09-28) lists input_modalities ["text","image"], so marked vision: true; not capability-probed end to end.`},"gemini-2.5-flash":{contextWindow:1048576,maxOutputTokens:65536,pricingPerMTok:{input:.3,output:2.5,cachedInput:.03},vision:!0,status:"production",description:'Google Gemini 2.5 Flash, reachable through the same gateway. Live /v1/models (2026-09-28) lists input_modalities ["text","image"], so marked vision: true; not capability-probed end to end.'},"claude-haiku-4-5":{contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:5,cachedInput:.1},vision:!0,status:"production",description:'Anthropic Claude Haiku 4.5, reachable through the same gateway; the live /v1/models payload notes Claude-family entries list only the "messages" supported_endpoint (2026-09-28). input_modalities ["text","image"], so marked vision: true; not capability-probed end to end.'}},topModels:["glm-5.2","glm-5.3","glm-5.3-flash","llama-3.3-70b-instruct","deepseek-v3.2","gpt-4.1-mini","gemini-2.5-flash","claude-haiku-4-5"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Invalid Inference.net API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://inference.net/register/",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://inference.net/register/ and sign up","2. Create an Inference.net project API key from the dashboard (this is the gateway key that goes in {apiKeyEnvVar} \u2014 do not confuse it with a third-party provider key used only for the separate 'proxy mode')","3. New accounts start on a pay-as-you-go, $0-usage tier (1M included gateway requests/month, 30 req/min) per https://inference.net/pricing; confirm current terms before heavy use","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.inference.net/v1 (`Authorization: Bearer <key>`), serving 63 models on the live roster across many upstream families \u2014 Claude, GPT, Gemini, DeepSeek, GLM, Kimi, Llama, Qwen, Gemma, Nemotron, plus Inference.net's own Schematron structured-extraction models \u2014 behind one API. A separate 'proxy mode' can forward to your own provider key via x-inference-provider* headers; not used by this catalog entry."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.inference.net/v1/models \u2014 63 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),xAe,oNr=E({"src/lib/providers/catalog/io-intelligence.json"(){xAe={$schema:"./provider-catalog.schema.json",id:"io-intelligence",displayName:"io.net Intelligence",aliases:["io-net"],tier:2,wire:{baseURL:"https://api.intelligence.io.solutions/api/v1"},models:{default:"meta-llama/Llama-3.3-70B-Instruct",fallbacks:["meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","zai-org/GLM-4.5-Air"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{"zai-org/GLM-5.3-Flash":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:.147997,output:.49399,cachedInput:.073999},vision:!0,status:"production",description:"Z.ai: GLM 5.3 Flash"},"zai-org/GLM-5.3":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:1.39,output:4.4,cachedInput:.695},vision:!1,status:"production",description:"Z.ai: GLM 5.3"},"Qwen/Qwen3.8-27B":{contextWindow:65536,maxOutputTokens:65536,pricingPerMTok:{input:.39,output:2.99,cachedInput:.195},vision:!0,status:"production",description:"Qwen: Qwen3.8 27B"},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:262100,maxOutputTokens:65536,pricingPerMTok:{input:.196,output:.534,cachedInput:.098},vision:!1,status:"production",description:"DeepSeek: DeepSeek V4 Flash 0731"},"moonshotai/Kimi-K3":{contextWindow:1048576,pricingPerMTok:{input:3.18,output:15.9,cachedInput:1.59},vision:!0,status:"production",description:"MoonshotAI: Kimi K3"},"XiaomiMiMo/MiMo-V2.5":{contextWindow:1048576,pricingPerMTok:{input:.1934,output:.6268,cachedInput:.0967},vision:!1,status:"production",description:"Xiaomi: MiMo-V2.5"},"zai-org/GLM-5.2":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:1.552,output:4.884,cachedInput:.776},vision:!1,status:"production",description:"Z.ai: GLM 5.2"},"moonshotai/Kimi-K2.7-Code":{contextWindow:262144,pricingPerMTok:{input:1.026,output:4.53,cachedInput:.513},vision:!0,status:"production",description:"MoonshotAI: Kimi K2.7 Code"},"Qwen/Qwen3.6-35B-A3B":{contextWindow:262144,pricingPerMTok:{input:.1872,output:1.24675,cachedInput:.0936},vision:!0,status:"production",description:"Qwen: Qwen3.6 35B A3B"},"Qwen/Qwen3.6-27B":{contextWindow:32768,pricingPerMTok:{input:.399,output:3.19,cachedInput:.1995},vision:!0,status:"production",description:"Qwen: Qwen3.6 27B"},"MiniMaxAI/MiniMax-M2.7":{contextWindow:262100,maxOutputTokens:65536,pricingPerMTok:{input:.426,output:1.62,cachedInput:.213},vision:!1,status:"production",description:"MiniMaxAI: MiniMax M2.7"},"deepseek-ai/DeepSeek-V4-Flash":{contextWindow:32768,maxOutputTokens:32768,pricingPerMTok:{input:.199,output:.512,cachedInput:.0995},vision:!1,status:"production",description:"DeepSeek: DeepSeek V4 Flash"},"deepseek-ai/DeepSeek-V4-Pro":{contextWindow:1048576,maxOutputTokens:6e5,pricingPerMTok:{input:1.618,output:3.288,cachedInput:.809},vision:!1,status:"production",description:"DeepSeek: DeepSeek V4 Pro"},"moonshotai/Kimi-K2.6":{contextWindow:262142,pricingPerMTok:{input:.76744,output:3.43436,cachedInput:.38372},vision:!0,status:"production",description:"MoonshotAI: Kimi K2.6"},"zai-org/GLM-5.1":{contextWindow:202750,maxOutputTokens:32768,pricingPerMTok:{input:1.29,output:4.22,cachedInput:.645},vision:!1,status:"production",description:"Z.ai: GLM 5.1"},"MiniMaxAI/MiniMax-M2.5":{contextWindow:196600,pricingPerMTok:{input:.294,output:1.176,cachedInput:.147},vision:!1,status:"production",description:"MiniMaxAI/MiniMax-M2.5"},"moonshotai/Kimi-K2.5":{contextWindow:262144,pricingPerMTok:{input:.5284,output:2.785,cachedInput:.2642},vision:!0,status:"production",description:"MoonshotAI: Kimi K2.5"},"zai-org/GLM-5":{contextWindow:202752,pricingPerMTok:{input:.85,output:2.774,cachedInput:.425},vision:!1,status:"production",description:"Z.ai: GLM 5"},"deepseek-ai/DeepSeek-V3.2":{contextWindow:163840,pricingPerMTok:{input:1.4301,output:2.4063,cachedInput:.71505},vision:!1,status:"production",description:"DeepSeek: DeepSeek V3.2"},"moonshotai/Kimi-K2-Thinking":{contextWindow:262144,pricingPerMTok:{input:.6,output:2.5,cachedInput:.3},vision:!1,status:"production",description:"MoonshotAI: Kimi K2 Thinking"},"zai-org/GLM-4.5-Air":{contextWindow:131070,pricingPerMTok:{input:.165,output:.975,cachedInput:.0825},vision:!1,status:"production",description:"Z.ai: GLM-4.5-Air"},"google/gemma-4-26b-a4b-it":{contextWindow:262142,pricingPerMTok:{input:.116,output:.38,cachedInput:.058},vision:!1,status:"production",description:"Google: Gemma 4 26B A4B"},"zai-org/GLM-4.7-Flash":{contextWindow:2e5,pricingPerMTok:{input:.062625,output:.4,cachedInput:.031313},vision:!1,status:"production",description:"Z.ai: GLM 4.7 Flash"},"zai-org/GLM-4.7":{contextWindow:202752,pricingPerMTok:{input:.88,output:2.37,cachedInput:.44},vision:!1,status:"production",description:"Z.ai: GLM 4.7"},"moonshotai/Kimi-K2-Instruct-0905":{contextWindow:262144,pricingPerMTok:{input:.57,output:2.3,cachedInput:.285},vision:!1,status:"production",description:"MoonshotAI: Kimi K2 Instruct 0905"},"openai/gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.188,output:.7,cachedInput:.094},vision:!1,status:"production",description:"OpenAI: gpt-oss-120b"},"deepseek-ai/DeepSeek-R1-0528":{contextWindow:128e3,pricingPerMTok:{input:.56775,output:2.279,cachedInput:.283875},vision:!1,status:"production",description:"DeepSeek: R1 0528"},"zai-org/GLM-4.6":{contextWindow:131072,pricingPerMTok:{input:.536,output:2.07,cachedInput:.268},vision:!1,status:"production",description:"Z.ai: GLM 4.6"},"Qwen/Qwen3-Next-80B-A3B-Instruct":{contextWindow:262144,pricingPerMTok:{input:.1175,output:1.136,cachedInput:.05875},vision:!1,status:"production",description:"Qwen: Qwen3 Next 80B A3B Instruct"},"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar":{contextWindow:106e3,pricingPerMTok:{input:.445,output:2.145,cachedInput:.2225},vision:!1,status:"production",description:"Intel: Qwen3 Coder 480B A35B Instruct INT4 Mixed AR"},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{contextWindow:43e4,pricingPerMTok:{input:.274,output:.8992,cachedInput:.137},vision:!0,status:"production",description:"Meta-Llama: Llama 4 Maverick 17B 128E Instruct FP8"},"mistralai/Mistral-Nemo-Instruct-2407":{contextWindow:128e3,pricingPerMTok:{input:.0635,output:.09875,cachedInput:.03175},vision:!1,status:"production",description:"Mistral: Mistral Nemo Instruct 2407"},"openai/gpt-oss-20b":{contextWindow:64e3,pricingPerMTok:{input:.067,output:.24,cachedInput:.0335},vision:!1,status:"production",description:"OpenAI: gpt-oss-20b"},"meta-llama/Llama-3.3-70B-Instruct":{contextWindow:128e3,pricingPerMTok:{input:.6066,output:1.0386,cachedInput:.3033},vision:!1,status:"production",description:"Recommended - Meta: Llama 3.3 70B Instruct"}},topModels:["meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","zai-org/GLM-4.5-Air","google/gemma-4-26b-a4b-it","zai-org/GLM-5.3-Flash","Qwen/Qwen3.8-27B","deepseek-ai/DeepSeek-V4-Pro"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{pattern:"requested model is not available for Chat Completions API",class:"invalid-model",message:"io.net Intelligence model '{model}' is not available for the Chat Completions API. Choose a current model from https://ai.io.net/."}],setup:{url:"https://ai.io.net/",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://ai.io.net/","2. Sign in or create an io.net account","3. Create an API key for your project in the console","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-03",status:401},liveMatrix:{date:"2026-09-03",result:"SDK end-to-end via dist: generate, stream, tool call (nonce round-trip) and json_schema structured output all pass. Tools + schema: after a tool result the vendor answers finish_reason=tool_calls with no tool_calls and null content when JSON is requested (4/4 raw replays); the SDK now re-asks that step once with tool_choice none and recovers the JSON \u2014 passed 1/1 in the final live proof through dist/index.js, tool nonce present in structuredData. structuredOutputWithTools is declared true on that basis."},addedInPR:"https://github.com/juspay/neurolink/pull/1625",billingProbe:{date:"2026-09-03",status:200,method:"official io.net Intelligence web app plan configuration: Standard default with daily_limit fallback of 2; Professional and Developer are paid upgrade plans"}}}}}),AAe,iNr=E({"src/lib/providers/catalog/koscompute.json"(){AAe={$schema:"./provider-catalog.schema.json",id:"koscompute",displayName:"Kosmik Compute",aliases:[],tier:2,wire:{baseURL:"https://api.koscompute.com/v1"},models:{default:"qwen/qwen3.8-27b",fallbacks:["qwen/qwen3.8-27b"],defaultContextWindow:262144,defaultMaxOutputTokens:32768,catalog:{"qwen/qwen3.8-27b":{contextWindow:262144,maxOutputTokens:32768,pricingPerMTok:{input:.35,output:2.2,cachedInput:.09},vision:!0,status:"production",description:"Qwen 3.8 27B (fp8) \u2014 the only chat-capable model in KosCompute's roster; the other 6 ids returned by /v1/models are Whisper transcription and TTS models (endpoint_kind audio/tts), not chat. Confirmed via unauthenticated GET https://api.koscompute.com/v1/models (2026-09-28, HTTP 200): context_length 262144 (modality_context_lengths.text), 131072 for image input; max_output_length/max_output 32768; pricing input $0.35 / output $2.20 per MTok, cached input $0.09 (the response's own precomputed input/output/cache_read fields, matching prompt/completion/input_cache_read per-token rates); supported_features [tool_calling, json_mode, structured_outputs, reasoning]; supported_endpoints [/v1/chat/completions, /v1/responses, /v1/messages]; input_modalities [text, image] with vision.max_pixels 1048576. model_info reports reasoning:true, extended_thinking:true, thinking_default:true, max_thinking_tokens:8192, supported_reasoning_efforts [none, low, medium, xhigh]. Docs corroborate generically for the chat-completions surface: api.koscompute.com/docs/guides/tool-calling/ (tools array, tool_choice auto|none|required|named, results read from choices[0].message.tool_calls), /docs/guides/structured-output/ (response_format json_object and json_schema, 'Unsupported models return a 400 capability error' for models lacking json_mode/structured_outputs \u2014 this model advertises both), and /docs/guides/streaming/ (stream:true, text/event-stream, data: [DONE]). No live capability probe was run (credential-free onboarding, no API key) \u2014 see evidence.liveMatrix: null."}},topModels:["qwen/qwen3.8-27b"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Invalid KosCompute API key. Check {apiKeyEnvVar}. See {setupUrl} for what KosCompute's docs publish on authentication \u2014 the vendor documents 401 as 'missing, invalid, expired, inactive, or conflicting credentials' but gives no example error body or code string."},{status:404,pattern:"model_not_found",class:"invalid-model",message:"KosCompute model '{model}' not found. Pick a current id from an unauthenticated GET https://api.koscompute.com/v1/models."},{status:429,pattern:"concurrent_limit_exceeded",class:"rate-limit",message:"KosCompute per-key concurrency limit exceeded for '{model}'. Wait for an in-flight request to finish, or reduce parallel requests, before retrying."}],setup:{url:"https://api.koscompute.com/docs/overview/quickstart/",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. KosCompute publishes no public signup, dashboard, or key-management page as of 2026-09-28 \u2014 the docs' quickstart (this URL) assumes you already hold a key and only shows how to use one, via `export KOSCOMPUTE_API_KEY=\"your-api-key\"`; the site's only 'Start building' call-to-action also points here, not to a signup form","2. The docs reference an account 'balance' (/docs/overview/authentication/: 'Authentication success does not guarantee model access, remaining account balance, or available capacity') but publish no pricing, free-tier, or top-up page, so billing policy could not be confirmed from public sources \u2014 treat this entry's `no-free-tier` as the conservative default in the absence of any documented free allocation, not a confirmed vendor policy","3. Once you have a key (provisioned out of band), set {apiKeyEnvVar} in your .env file","4. Sanity-check connectivity first with an unauthenticated GET https://api.koscompute.com/v1/models (no key needed) before spending a real chat request"],description:"OpenAI-compatible endpoint at https://api.koscompute.com/v1, described by the vendor as EU-hosted inference (docs: 'EU-hosted, OpenAI-compatible inference for chat, reasoning, vision, speech recognition, and speech synthesis'); also exposes Responses-API and Anthropic-Messages-compatible surfaces for the same chat model. No public signup or key-management page is published, and billing policy is unconfirmed."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.koscompute.com/v1/models \u2014 7 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),CAe,sNr=E({"src/lib/providers/catalog/laya.json"(){CAe={$schema:"./provider-catalog.schema.json",id:"laya",displayName:"Laya",aliases:[],inferenceKinds:["decide"],wire:{},models:{default:"typed-decisions",topModels:["typed-decisions","multilingual","english","auto"],catalog:{"typed-decisions":{contextWindow:1024,maxOutputTokens:256,vision:!1,status:"production",description:"Recommended - Laya fine-tuned for typed decisions"},english:{contextWindow:512,maxOutputTokens:256,vision:!1,status:"production",description:"Laya, English base checkpoint (512-token window)"},multilingual:{contextWindow:1024,maxOutputTokens:256,vision:!1,status:"production",description:"Laya, 100+ languages"},auto:{contextWindow:512,maxOutputTokens:256,vision:!1,status:"production",description:"Let Laya pick a checkpoint by language"}}},timeouts:{decideMs:5e3},decisionLimits:{maxStateTokens:320,maxQuestions:64,nonAsciiTokensPerChar:1.5,models:{"typed-decisions":{maxStateTokens:768},multilingual:{maxStateTokens:768,nonAsciiTokensPerChar:.6},english:{maxStateTokens:320},auto:{maxStateTokens:320}}},decide:{dialect:"system-one",order:2,baseURLRequired:!0,baseURLNormalize:["strip-trailing-slash"],endpoint:"{baseURL}/predict",model:{placement:"body-unless-alias",alias:"auto"},requestIdHeaders:["x-litellm-call-id"],response:{modelPaths:["routing.model","model"]},errors:{rules:[{status:[401,403],kind:"authentication"},{status:413,kind:"max_tokens_exceeded"},{status:429,kind:"rate_limit"},{status:503,kind:"overloaded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"error.message"},{path:"detail",isArray:!0,formatter:"fastapi-validation",kind:"invalid_request",retryable:!1},{path:"detail"}]}},setup:{url:"https://github.com/NandhaKishorM/laya",apiKeyFormat:null,billingPolicy:"free-tier",description:"API key for your Laya endpoint",instructions:["1. Run a Laya server, or use a LiteLLM proxy with a pass-through route to one","2. Set LAYA_BASE_URL to its base URL (NeuroLink calls <LAYA_BASE_URL>/predict)","3. Set {apiKeyEnvVar} to the key it accepts (on LiteLLM, a virtual key with that route in its Allowed Routes)"]},evidence:{rosterVerified:{date:"2026-09-24",method:"Checkpoint ids typed-decisions, multilingual and english as listed in docs/getting-started/providers/laya.md and answered by a live Laya 0.3.5 server (routing.model); auto sends no model and lets Laya's router choose"},liveMatrix:{date:"2026-09-24",result:"A 60,000-character state was answered 200 on a 1,024-token window, so Laya truncates silently and decisionLimits refuses over-window input (768 state tokens on typed-decisions and multilingual, 320 on english and auto). Chinese measured about 1.4 tokens per character on the English tokenizer and 0.56 on multilingual."},addedInPR:"https://github.com/juspay/neurolink/pull/1978"}}}}),IAe,aNr=E({"src/lib/providers/catalog/lemonfox-ai.json"(){IAe={$schema:"./provider-catalog.schema.json",id:"lemonfox-ai",displayName:"Lemonfox AI",aliases:["lemonfox"],tier:2,wire:{baseURL:"https://api.lemonfox.ai/v1"},models:{default:"deepseek-v4-flash",fallbacks:["mimo-v2.5-pro"],defaultContextWindow:32768,defaultMaxOutputTokens:4096,catalog:{"deepseek-v4-flash":{contextWindow:1e6,vision:!1,status:"production",description:`NeuroLink default. On https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29) the model parameter reads "Specify the model ID to be used. Default: deepseek-v4-flash. Also supported: mimo-v2.5-pro.", the introduction says "We support state-of-the-art open-source AI models, including DeepSeek V4 Flash (default) and MiMo V2.5 Pro.", and the model table row reads "DeepSeek V4 Flash is our default model \u2014 fast, cost-effective, and suitable for most tasks. Supports a 1M token context window." with "Price / 1M tokens" $0.50. contextWindow 1000000 is NeuroLink's decimal reading of "1M". The page's JavaScript, Python and Curl examples name this id.`},"mimo-v2.5-pro":{vision:!1,status:"production",description:'NeuroLink fallback. On https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29) the model parameter reads "Specify the model ID to be used. Default: deepseek-v4-flash. Also supported: mimo-v2.5-pro.", the introduction names "MiMo V2.5 Pro", and the model table row reads "MiMo V2.5 Pro is a powerful model from Xiaomi, recommended for complex reasoning and coding tasks." with "Price / 1M tokens" $1.25. No contextWindow is set.'}},topModels:["deepseek-v4-flash","mimo-v2.5-pro"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Lemonfox AI answered HTTP 401 (a request with no key gets: "You didn't provide an API key."). Check {apiKeyEnvVar}. Keys: https://lemonfox.ai/apis/keys`}],setup:{url:"https://lemonfox.ai/signup",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://lemonfox.ai/signup (the "Get started" and "Start Your Free Trial" links on https://www.lemonfox.ai/apis/chat both point to /signup); sign-up was not attempted while building this entry',`2. Create an API key at https://lemonfox.ai/apis/keys \u2014 https://www.lemonfox.ai/apis/chat links "create an API key" to that page, and the API's 401 reply says "You can obtain an API key from https://lemonfox.ai/apis/keys."`,'3. Billing as the vendor states it: https://www.lemonfox.ai/ shows "Try our APIs for 1 month for free."; https://www.lemonfox.ai/apis/chat shows "First month for free!" and lists "Price / 1M tokens" of $0.50 for deepseek-v4-flash and $1.25 for mimo-v2.5-pro; https://www.lemonfox.ai/terms says Lemon Fox GmbH uses Paddle as its Merchant of Record and offers "subscription-based pricing and usage-based pricing"',"4. Set {apiKeyEnvVar} in your .env file"],description:`Docs-verified only: the vendor's GET https://api.lemonfox.ai/v1/models needs a key (it answers HTTP 401 without one), so the two model ids come from https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.lemonfox.ai/v1: the page says "Our OpenAI-compatible API takes a list of messages as input and provides an AI-generated (assistant) message as output.", its JavaScript and Python examples pass baseURL/base_url "https://api.lemonfox.ai/v1" to the OpenAI client, its API Parameters section shows POST https://api.lemonfox.ai/v1/chat/completions, and its Curl example sends the header Authorization: Bearer YOUR_API_KEY. Unauthenticated GETs made 2026-09-29: /models, /chat/completions and the base URL /v1 each answered HTTP 401 with the JSON body {"status":401,"error":{"message":"You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY). You can obtain an API key from https://lemonfox.ai/apis/keys.","type":"invalid_request_error","param":null,"code":null}}. No POST request was sent. errorRules holds one rule, for status 401. The page's model table lists deepseek-v4-flash and mimo-v2.5-pro; a second table under the heading "Deprecated models" lists llama-8b-chat and llama-70b-chat, each description starting "Deprecated.", and those two ids are not in this catalog. models.defaultContextWindow (32768) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish, for model ids outside models.catalog; the page's max_tokens parameter reads "integer, optional, default: infinity". deepseek-v4-flash's contextWindow (1000000) is NeuroLink's decimal reading of "Supports a 1M token context window."; mimo-v2.5-pro has no contextWindow set. pricingPerMTok is unset on both models: the model table has one column, "Price / 1M tokens" ($0.50 and $1.25), and the catalog field takes separate input and output figures. Each model's vision field holds false, a placeholder for a boolean the catalog schema requires; it is not a vendor statement. Each model's status field holds production, a value the catalog schema requires; the page lists these two models in its main table. capabilities.text is true because the page's examples send a messages array and read choices[0].message.content. capabilities.streaming is true because the page's stream parameter reads "incremental message updates are transmitted as server-sent events with data-only messages." capabilities.tools, toolsWithStreaming, structuredOutput, structuredOutputWithTools, embeddings and thinking are false, meaning not declared by this entry: the page's API Parameters section lists messages, model, max_tokens, stop, stream, frequency_penalty, presence_penalty, temperature and top_p, and no request exercising any capability was sent. billingPolicy holds free-with-card, the growth queue's classification, because the catalog schema has no unknown value and takes one of free-tier, free-with-card and no-free-tier; it is not a vendor statement of signup terms, and the vendor's own wording is in setup.instructions step 3 and evidence.billingProbe. apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.lemonfox.ai/v1/models answers 401 without a key, so model ids are taken from https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_request_error",method:`unauthenticated GET https://api.lemonfox.ai/v1/models with no credentials \u2014 HTTP 401, content-type application/json; charset=utf-8, JSON body {"status":401,"error":{"message":"You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY). You can obtain an API key from https://lemonfox.ai/apis/keys.","type":"invalid_request_error","param":null,"code":null}}; code records the body's error.type because error.code is null; the same day unauthenticated GETs of https://api.lemonfox.ai/v1/chat/completions and https://api.lemonfox.ai/v1 answered HTTP 401 with a byte-identical body; credential-free, no key used, no POST request sent`},billingProbe:{date:"2026-09-29",method:'public pages https://www.lemonfox.ai/ ("Try our APIs for 1 month for free."), https://www.lemonfox.ai/apis/chat ("First month for free!", "Start Your Free Trial") and https://www.lemonfox.ai/terms (Paddle as Merchant of Record; "subscription-based pricing and usage-based pricing"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),RAe,lNr=E({"src/lib/providers/catalog/lilac.json"(){RAe={$schema:"./provider-catalog.schema.json",id:"lilac",displayName:"Lilac",aliases:[],tier:2,wire:{baseURL:"https://api.getlilac.com/v1"},models:{default:"moonshotai/kimi-k2.6",fallbacks:["minimaxai/minimax-m3","zai-org/glm-5.2","google/gemma-4-31b-it"],defaultContextWindow:262144,defaultMaxOutputTokens:262144,catalog:{"moonshotai/kimi-k2.6":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.7,output:3.5,cachedInput:.16},vision:!0,status:"production",description:"Moonshot AI Kimi K2.6 \u2014 the model used in every code sample on Lilac's own quickstart and chat-completions docs (including its vision example), so it is chosen as `default` on that basis; no capability probe was possible without a key. Vendor description: 'Moonshot AI's multimodal agentic model for long-horizon coding, tool use, and design workflows.' Live roster (unauthenticated GET /v1/models, 2026-09-28): context_length 262144, top_provider.max_completion_tokens 262144 (not documented separately as a distinct output ceiling \u2014 the roster reports it equal to the context window, so treat it as an upper bound rather than a proven lower cap), INT4 quantization, input_modalities text+image (no video). supported_parameters includes response_format, structured_outputs, tools and tool_choice; supported_features is [tools, reasoning]. Pricing per https://docs.getlilac.com/inference/models (retrieved 2026-09-28, matches the live roster exactly): $0.70 / $3.50 per MTok input/output, $0.16 per MTok cached input. docs.getlilac.com/inference/openai-compatibility.md lists vision, tool/function calling and structured output (JSON mode) as generally-supported features of the API; this model's own architecture also reports image input, so vision is true here."},"minimaxai/minimax-m3":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.28,output:1.1,cachedInput:.05},vision:!0,status:"production",description:"MiniMax M3 \u2014 the largest-context model on the roster. Vendor description: 'MiniMax's native multimodal 428B MoE reasoning model with a 1M-token context window and agentic tool-use support.' Live roster (2026-09-28): context_length 1048576, max_completion_tokens 1048576, FP8, input_modalities text+image+video (vision true). supported_parameters includes response_format, structured_outputs, tools, tool_choice and chat_template_kwargs (MiniMax's per-model reasoning toggle is `thinking_mode`). Pricing per docs.getlilac.com/inference/models (2026-09-28, matches roster): $0.28 / $1.10 per MTok input/output, $0.05 per MTok cached input. Roster-verified only, not capability-probed without a key; first fallback."},"zai-org/glm-5.2":{contextWindow:524288,maxOutputTokens:524288,pricingPerMTok:{input:.9,output:3,cachedInput:.17},vision:!1,status:"production",description:"Zhipu GLM 5.2. Vendor description: '743B MoE model for long-context reasoning, coding, and agentic tool-use workflows.' Live roster (2026-09-28): context_length 524288, max_completion_tokens 524288, FP8/NVFP4, input_modalities text-only (no image/video \u2014 vision false, the only non-vision model in this roster). supported_parameters includes response_format, structured_outputs, tools, tool_choice and reasoning_effort \u2014 this is the one model whose docs say `reasoning_effort` also works as a plain top-level field (OpenAI-style), not only inside `chat_template_kwargs`. Pricing per docs.getlilac.com/inference/models (2026-09-28, matches roster): $0.90 / $3.00 per MTok input/output, $0.17 per MTok cached input. Roster-verified only, not capability-probed without a key; fallback."},"google/gemma-4-31b-it":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.11,output:.35},vision:!0,status:"production",description:"Google Gemma 4 31B instruct-tuned. Vendor description: 'Google's open 31B instruction-tuned model.' Live roster (2026-09-28): context_length 262144, max_completion_tokens 262144, FP8, input_modalities text+image+video (vision true). supported_parameters includes response_format and tools but, unlike the other three models on this roster, does NOT list structured_outputs \u2014 and docs.getlilac.com/inference/models carries an explicit caveat for this model: combining its reasoning parser with `enable_thinking: false` 'can silently disable xgrammar-backed structured output.' Pricing per docs (2026-09-28, matches roster): $0.11 / $0.35 per MTok input/output; no cached-input rate is published for this model (the live roster returns no `input_cache_read` field for it either). Roster-verified only, not capability-probed without a key; fallback."}},topModels:["moonshotai/kimi-k2.6","minimaxai/minimax-m3","zai-org/glm-5.2","google/gemma-4-31b-it"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[],setup:{url:"https://console.getlilac.com",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://console.getlilac.com and sign up with your email or a Google account","2. Create an organization, then go to API Keys in the dashboard and create a new key \u2014 it is shown only once, so copy it immediately","3. Go to Billing, click Add Credits and complete the Stripe checkout (as little as $5.00) \u2014 a positive credit balance is required before you can make any API request; there is no free tier or free credits","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.getlilac.com/v1 \u2014 docs.getlilac.com/inference/openai-compatibility.md states it 'provides an OpenAI-compatible API' and that pointing the official OpenAI SDK at it with a new base_url/api_key is sufficient. GET /v1/models is public and unauthenticated (confirmed live, 200, 4 models, 2026-09-28). Embeddings, audio, fine-tuning, the Assistants API, Batch API and file uploads are explicitly documented as not yet available. Billing is prepaid credit via Stripe with no minimum spend or contract once funded, but a positive balance is required before any request succeeds \u2014 no free tier. Rate limit: 200 requests/minute per organization; excess requests may get HTTP 429 with a Retry-After header. No self-service signup URL was found in the initial lead for this vendor, but docs.getlilac.com/inference/quickstart.md (fetched 2026-09-28) documents a normal self-serve console at console.getlilac.com \u2014 new-model requests still go through contact@getlilac.com, and enterprises wanting monthly invoicing instead of prepaid credits can also email that address."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.getlilac.com/v1/models \u2014 4 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),MAe,cNr=E({"src/lib/providers/catalog/llmtech.json"(){MAe={$schema:"./provider-catalog.schema.json",id:"llmtech",displayName:"LLM Tech",aliases:[],tier:2,wire:{baseURL:"https://api.llmtech.eu/v1"},models:{default:"nvidia/Qwen3.8-27B-NVFP4",fallbacks:["nvidia/Qwen3.8-27B-NVFP4"],defaultContextWindow:262144,defaultMaxOutputTokens:32768,catalog:{"nvidia/Qwen3.8-27B-NVFP4":{contextWindow:262144,maxOutputTokens:32768,pricingPerMTok:{input:.25,output:2.09,cachedInput:.04},vision:!0,status:"production",description:"LLM Tech's sole hosted chat model (NVFP4-quantized Qwen3.8-27B on Blackwell), self-hosted on EU hardware (GPU node in Italy, edge in Nuremberg). Re-verified live via unauthenticated GET https://api.llmtech.eu/v1/models on 2026-09-28 (HTTP 200, exactly 1 model): context_length 262144, max_output/max_output_tokens 32768, pricing_per_m input $0.25 / output $2.09 / cache_read $0.04 per MTok, and a features array of [tools, json_mode, structured_outputs, logprobs, reasoning, vision] on the model object itself. All of this matches the vendor's own model page (https://llmtech.eu/models/qwen3.8-27b, retrieved 2026-09-28), which documents: an OpenAI-compatible client.chat.completions.create(...) quickstart against this baseURL; SSE streaming ('SSE, OpenAI format', stream=True in the sample); tool calling ('yes, with structured outputs'); real vision support ('yes, the vision tower is kept in BF16 and works' \u2014 image tokens count toward prompt_tokens and bill at the input rate, e.g. a 64x64 PNG costs 64 image tokens; images must go in a user message, not a system message; the page notes third-party listings calling this model text-only are wrong); reasoning control via enable_thinking/reasoning_effort request parameters; automatic prompt caching billed at the cache rate; and zero data retention (prompts/completions 'never used for training'). No response_format wire example or combined tools+response_format request is shown or was probed (see capabilities.structuredOutputWithTools). Not itself capability-probed end to end \u2014 credential-free onboarding, no API key used."}},topModels:["nvidia/Qwen3.8-27B-NVFP4"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[],setup:{url:"https://llmtech.eu/models/qwen3.8-27b",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. LLM Tech publishes no public signup or self-service key page as of 2026-09-28 (self-service is described on the vendor's site as 'planned'); email artem@llmtech.eu to request a key \u2014 the account dashboard (https://llmtech.eu/cabinet/) confirms keys are issued by the company rather than self-created ('we hold no passwords and no accounts'; 'paste the API key we issued you')","2. Once you receive a key, https://llmtech.eu/cabinet/ shows current-month billing (totals, a daily usage chart, invoice line items) by pasting the key in \u2014 there is no separate account or login","3. Billing is pay-per-token USD with 'no subscription, no minimums' (input $0.25/M, output $2.09/M, cached input $0.04/M per https://llmtech.eu/models/qwen3.8-27b); no free tier is documented, so budget for paid usage from the first call","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.llmtech.eu/v1, self-hosted on EU hardware (GPU node in Italy, edge in Nuremberg), serving a single model \u2014 nvidia/Qwen3.8-27B-NVFP4 \u2014 confirmed live by an unauthenticated GET /v1/models. No public signup exists; keys are issued manually by the vendor via email. The vendor states zero data retention: prompts and completions are never used for training."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.llmtech.eu/v1/models \u2014 1 model; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),PAe,uNr=E({"src/lib/providers/catalog/longcat.json"(){PAe={$schema:"./provider-catalog.schema.json",id:"longcat",displayName:"LongCat",enumTypeName:"LongCatModels",aliases:[],tier:2,wire:{baseURL:"https://api.longcat.chat/openai/v1"},models:{default:"LongCat-2.5-Preview",fallbacks:["LongCat-2.5-Preview"],defaultContextWindow:1048576,defaultMaxOutputTokens:131072,catalog:{"LongCat-2.5-Preview":{contextWindow:1048576,maxOutputTokens:131072,vision:!1,status:"preview",description:"Meituan LongCat 2.5 Preview, the only model this pilot lists. The 1M-token context rests on the vendor's Retrieve Model sample for this model id, not on a normative sentence. This pilot declares text generate/stream only; tools, vision, structured output and thinking await separate evidence. Account access is unverified."}}},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Invalid or expired LongCat API key. Check {apiKeyEnvVar} and the key in the LongCat platform console at {setupUrl}."}],setup:{url:"https://longcat.chat/platform",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Sign in to the LongCat API platform and create an API key.","2. LongCat-2.5-Preview is usage-priced pay-as-you-go. Promotional credits, if your account has any, are consumed first, but no free allowance is stated: do not assume free usage. The vendor's Pay-As-You-Go page says account verification is required before topping up, and its FAQ scopes that requirement to users in Mainland China (not tried on an account).","3. LongCat-2.0 is served on the same route but is outside this pilot's catalog scope, so it is not a default or a fallback here.","4. Set {apiKeyEnvVar} for this provider. The base URL is https://api.longcat.chat/openai/v1 and the chat route is POST /chat/completions with Authorization: Bearer authentication."],description:"LongCat (Meituan) text/stream pilot with a usage-priced LongCat-2.5-Preview default. No free allowance is stated; no account entitlement, roster, live inference or delivery is verified."},evidence:{rosterVerified:{date:"2026-10-12",code:"VENDOR_DOCS_ONLY_NOT_ROSTER_VERIFIED",method:"Vendor API documentation facts supplied to this change: default model id, 1048576 context from the vendor's Retrieve Model sample plus the 1M prose, 131072 maximum output, base URL https://api.longcat.chat/openai/v1 and route POST /chat/completions with Bearer auth. No GET /models, credentials, account or inference ran; this legacy field does not assert roster verification."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1980"}}}}),OAe,dNr=E({"src/lib/providers/catalog/mancer.json"(){OAe={$schema:"./provider-catalog.schema.json",id:"mancer",displayName:"Mancer",aliases:["mancer-tech"],tier:2,wire:{baseURL:"https://neuro.mancer.tech/oai/v1"},models:{default:"deepseek-v4-flash",fallbacks:["deepseek-v4-flash","gpt-oss-120b"],defaultContextWindow:1048576,defaultMaxOutputTokens:1048576,catalog:{mythomax:{contextWindow:8192,maxOutputTokens:8192,pricingPerMTok:{input:.14,output:.24},vision:!1,status:"production",description:"MythoMax (LLaMA 2, Simplified Alpaca format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"deepseek-v4-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.07,output:.2},vision:!1,status:"production",description:"DeepSeek V4 Flash \u2014 Mancer's flagship general model; paid credits required \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"deepseek-v4-flash-0731":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.07,output:.2},vision:!1,status:"production",description:"DeepSeek V4 Flash, 2026-07-31 snapshot; paid credits required \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},mytholite:{contextWindow:2560,maxOutputTokens:150,pricingPerMTok:{input:0,output:0},vision:!1,status:"production",description:"MythoLite \u2014 Mancer's free demo model (2,560-token context, 150-token completions, Simplified Alpaca format); the only model usable with a zero balance \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"remm-slerp":{contextWindow:6144,maxOutputTokens:6144,pricingPerMTok:{input:.14,output:.26},vision:!1,status:"production",description:"ReMM-SLERP (Simplified Alpaca format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"magnum-72b-v4":{contextWindow:32768,maxOutputTokens:4096,pricingPerMTok:{input:1,output:2},vision:!1,status:"production",description:"Magnum 72B v4 (ChatML format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"glm-4.7":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.28,output:1},vision:!1,status:"production",description:"GLM-4.7 \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"gpt-oss-120b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.022,output:.2},vision:!1,status:"production",description:"GPT-OSS 120B \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"weaver-alpha":{contextWindow:8e3,maxOutputTokens:6e3,pricingPerMTok:{input:.16,output:.3},vision:!1,status:"production",description:"Weaver Alpha (Simplified Alpaca format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"dans-pe-1.3-24b":{contextWindow:32768,maxOutputTokens:8192,pricingPerMTok:{input:.2,output:.8},vision:!1,status:"production",description:"Dan's PersonalityEngine 1.3 24B \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"}},topModels:["deepseek-v4-flash","gpt-oss-120b","glm-4.7","mytholite"],testModel:"mytholite"},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Bad API key",class:"authentication",message:"Invalid Mancer API key. Check {apiKeyEnvVar}. Get one at https://mancer.tech/dashboard"},{pattern:"Unknown Model",class:"invalid-model",message:"Mancer model '{model}' is unknown. Pick a current model from the /oai/v1/models roster or https://mancer.tech/pricing."},{status:402,pattern:"requires paid credits",class:"provider",message:"Mancer model '{model}' requires paid credits; with a zero balance only the free model 'mytholite' works. Add credits at https://mancer.tech/dashboard or see https://mancer.tech/pricing."}],setup:{url:"https://mancer.tech/dashboard",apiKeyFormat:"^mcr_[A-Za-z0-9]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://mancer.tech/dashboard and sign in","2. Create an API key (prefix mcr_)","3. Without credits only the free model 'mytholite' answers; every other model returns 402 until you add credits at https://mancer.tech/pricing","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://neuro.mancer.tech/oai/v1. One free demo model; paid credits unlock the rest of the roster."},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /oai/v1/models; full response retained as evidence/mancer-roster-authenticated.json in the campaign scratchpad and every catalog price/limit machine-checked against it (Mancer re-prices \u2014 gpt-oss-120b input moved 0.024 \u2192 0.022 within the day)",status:200},authProbe:{date:"2026-09-03",status:401},billingProbe:{date:"2026-09-03",status:402,method:'POST /oai/v1/chat/completions on deepseek-v4-flash with a zero balance: {"error":{"type":"CANT_AFFORD","message":"This model requires paid credits to use!"}}'},liveMatrix:{date:"2026-09-03",result:`18-probe harness on the free model mytholite: roster, chat, max_completion_tokens, system role, content parts, sampling params, SSE stream (usage chunk + [DONE]), json_schema (valid JSON matching schema) and json_object all 200; tools and tools+schema 400 BAD_PARAMETERS ('"auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser') so tools are declared false; vision 200 but text-only (image ignored); bad key 401 'Bad API key'; unknown model 400 'Unknown Model'. Paid models could not be capability-probed without credits \u2014 tools may work there and can be re-declared once probed. Nightly matrix pins testModel mytholite.`},addedInPR:"https://github.com/juspay/neurolink/pull/1631"}}}}),DAe,pNr=E({"src/lib/providers/catalog/meta-model-api.json"(){DAe={$schema:"./provider-catalog.schema.json",id:"meta-model-api",displayName:"Meta Model API",aliases:[],tier:2,wire:{baseURL:"https://api.meta.ai/v1"},models:{default:"muse-spark-1.3",fallbacks:["muse-spark-1.2","muse-spark-1.1"],defaultContextWindow:1048576,defaultMaxOutputTokens:16384,catalog:{"muse-spark-1.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.25,output:4.25,cachedInput:.15},vision:!0,status:"production",description:'NeuroLink default. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): "muse-spark-1.3 is the default model in the code examples throughout these docs." The page describes it as "the latest version, tuned for agentic workflows (multi-step tool, browser, and long-horizon tasks) with improved coding over 1.2." and says "Recommended for new work." Standard tier; context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. maxOutputTokens 131072 is the output figure in the Coding agents guide (https://dev.meta.ai/docs/coding-agents) entry for this model id: "Limits: context = 1048576, output = 131072". vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities, and the Image understanding page (https://dev.meta.ai/docs/image-understanding) says "image understanding is fully supported" on Chat Completions.'},"muse-spark-1.2":{contextWindow:1048576,pricingPerMTok:{input:1.25,output:4.25,cachedInput:.15},vision:!0,status:"production",description:'NeuroLink fallback. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): "the previous version." The home page (https://dev.meta.ai/) card for Muse Spark 1.2 says "A coding-optimized model purpose-built for agentic workflows." Standard tier; context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities.'},"muse-spark-1.1":{contextWindow:1048576,pricingPerMTok:{input:1.25,output:4.25,cachedInput:.15},vision:!0,status:"production",description:'NeuroLink fallback. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): "the original version." The home page (https://dev.meta.ai/) card for Muse Spark 1.1 says "Built for agentic workflows, coding, computer use & multimodal perception." Standard tier; context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities.'},"muse-spark-1.3-contributor":{contextWindow:1048576,pricingPerMTok:{input:.1,output:.2,cachedInput:.002},vision:!0,status:"production",description:'Contributor tier. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): the Contributor variant "trades a lower price for permission to train on your prompts and completions". The Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says "Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models." Context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on the Pricing page: input $0.10, output $0.20, cached input $0.002. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities. Not in models.fallbacks.'},"muse-spark-1.2-contributor":{contextWindow:1048576,pricingPerMTok:{input:.1,output:.2,cachedInput:.002},vision:!0,status:"production",description:'Contributor tier. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): the Contributor variant "trades a lower price for permission to train on your prompts and completions". The Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says "Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models." Context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on the Pricing page: input $0.10, output $0.20, cached input $0.002. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities. Not in models.fallbacks.'}},topModels:["muse-spark-1.3","muse-spark-1.3-contributor","muse-spark-1.2","muse-spark-1.2-contributor","muse-spark-1.1"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Meta Model API rejected the request's authentication (HTTP 401; an unauthenticated GET of /models returned error.code "invalid_api_key" and error.type "authentication_error" on 2026-09-29, and the Error handling page lists 401 Unauthorized: "The API key was missing, invalid, or revoked."). Check {apiKeyEnvVar}. Create a key: {setupUrl}`},{status:402,class:"provider",message:'Meta Model API returned HTTP 402 (the Error handling page lists 402 Payment Required: "The request cannot be completed due to a billing issue.", with an example body whose error.code is "billing_not_configured").'},{status:403,class:"authentication",message:'Meta Model API returned HTTP 403 (the Error handling page lists 403 Forbidden: "The API key does not have permission to access the requested resource.").'},{status:429,class:"rate-limit",message:'Meta Model API returned HTTP 429 (the Error handling page lists 429 Too Many Requests: "Your team has exceeded the rate limit.").'},{pattern:"model_not_found",class:"invalid-model",message:'Meta Model API reported model {model} as not found (the Error handling page says "an unknown model returns model_not_found").'}],setup:{url:"https://dev.meta.ai/",apiKeyFormat:"^LLM\\|.+\\|.+$",billingPolicy:"no-free-tier",instructions:['1. Visit: https://dev.meta.ai/ \u2014 the page carries a "Start building" button whose link target is /api/auth/login','2. Create an API key: the Authentication page (https://dev.meta.ai/docs/authentication) lists the steps "Log in and open the API keys tab.", "Click Create API key, give it a descriptive name, and click Create." and "Copy the key right away. You only see it once."','3. Authentication is a Bearer token: the Authentication page says "Pass the key as a Bearer token in the Authorization header:", and the Error handling page (https://dev.meta.ai/docs/error-handling) lists "Malformed API key (not in LLM|{id}|{secret} format)" as a cause of HTTP 401',`4. Billing as the vendor states it: the Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says "You pay only for what you use." and the Authentication and billing page (https://dev.meta.ai/docs/muse-code/auth) says "Meta Model API billing is usage-based: you're billed for the tokens your requests consume."`,"5. Set {apiKeyEnvVar} in your .env file (the vendor's examples read MODEL_API_KEY, which NeuroLink does not)"],description:`Docs-verified only: the vendor's GET https://api.meta.ai/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401), so the five model ids come from the Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.meta.ai/v1: the Chat Completions page (https://dev.meta.ai/docs/protocols/chat-completions) says "The endpoint is OpenAI-compatible" and "The response matches the OpenAI chat completions shape.", and the Overview (https://dev.meta.ai/docs/overview) says "Model API is drop-in compatible with the OpenAI SDK, the Anthropic SDK, and OpenAI-compatible agent CLIs." The catalog holds the five model ids of the "Available Muse Spark models" table on the Models page (Standard tier: muse-spark-1.3, muse-spark-1.2, muse-spark-1.1; Contributor tier: muse-spark-1.3-contributor, muse-spark-1.2-contributor); the Chat Completions page says "Chat Completions serves the Muse Spark text models." The Models page lists muse-image-1.0, muse-voice-transcribe-1.0 and sam-3.1 in separate per-family tables; they are not in the catalog. models.fallbacks lists the Standard-tier ids; the Contributor-tier ids are in models.catalog and models.topModels. apiKeyFormat follows the Error handling page's "LLM|{id}|{secret} format". models.defaultContextWindow (1048576) is the context window the Overview and Models pages state for the Muse Spark models; models.defaultMaxOutputTokens (16384) is a NeuroLink placeholder the vendor does not publish. The status field of the five models holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. Verification level: docs-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.meta.ai/v1/models answers 401 without a key, so model ids are taken from https://dev.meta.ai/docs/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_api_key",method:'unauthenticated GET https://api.meta.ai/v1/models \u2014 HTTP 401, content-type application/json, JSON body {"error":{"code":"invalid_api_key","message":"Unauthorized","param":null,"type":"authentication_error"}}; the same day an unauthenticated GET https://api.meta.ai/v1/chat/completions answered HTTP 401 with the same body and the header allow: POST; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:`public pages https://dev.meta.ai/docs/pricing-rate-limits ("You pay only for what you use."; in its Muse Voice Transcribe paragraph: "ZDR is priced at parity with Standard, and platform free-tier credits apply.") and https://dev.meta.ai/docs/muse-code/auth ("Meta Model API billing is usage-based: you're billed for the tokens your requests consume."); credential-free, no signup performed`},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),NAe,mNr=E({"src/lib/providers/catalog/minimax.json"(){NAe={$schema:"./provider-catalog.schema.json",id:"minimax",displayName:"MiniMax",aliases:[],tier:2,wire:{baseURL:"https://api.minimax.io/v1"},models:{default:"MiniMax-M3",fallbacks:["MiniMax-M2.7","MiniMax-M2.7-highspeed","MiniMax-M2.5","MiniMax-M2.5-highspeed","MiniMax-M2.1","MiniMax-M2.1-highspeed","MiniMax-M2"],fallbackModelName:"MiniMax-M2.7",defaultContextWindow:204800,defaultMaxOutputTokens:65536,catalog:{"MiniMax-M3":{contextWindow:1e6,maxOutputTokens:524288,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!0,status:"production",description:'NeuroLink default. OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Frontier multimodal coding model with 1M context window", context window 1,000,000; the same page says "Image and video inputs are supported by MiniMax-M3.1-Flash-Preview and MiniMax-M3 through OpenAI-compatible message content parts", hence vision true. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): max_completion_tokens maximum 524288 for MiniMax-M3.1-Flash-Preview and MiniMax-M3. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo), Standard tab: "\u2264 512k input tokens", $0.30 input, $1.20 output and $0.06 prompt caching read per M tokens (the page shows $0.60, $2.40 and $0.12 struck through beside them); "> 512k input tokens" $0.60 input, $2.40 output and $0.12 prompt caching read per M tokens (the page shows $1.20, $4.80 and $0.24 struck through beside them); both Standard rows carry the label "Permanent 50% off". The Priority tab says "Pricing is 1.5x standard." The pricingPerMTok figures are the Standard tab, "\u2264 512k input tokens" row. Chat Completions reference thinking parameter: "adaptive thinking is on by default" for MiniMax-M3. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 200, TPM 10,000,000. The Integrate via SDK page (https://platform.minimax.io/docs/guides/quickstart-sdk) calls model="MiniMax-M3".'},"MiniMax-M3.1-Flash-Preview":{contextWindow:1e6,maxOutputTokens:524288,vision:!0,status:"preview",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Frontier multimodal coding model with 1M context window and tunable thinking depth", context window 1,000,000; the page notes "MiniMax-M3.1-Flash-Preview is available only through Token Plan and MiniMax Code for now." and says image and video inputs are supported for this model, hence vision true. Token Plan overview (https://platform.minimax.io/docs/token-plan/intro): "The Subscription Key is not interchangeable with pay-as-you-go API Keys." Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): max_completion_tokens maximum 524288, and the model "always thinks".'},"MiniMax-M2.7":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Beginning the journey of recursive self-improvement (output speed approximately 60 tps)", context window 204,800. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo): $0.3 input, $1.2 output, $0.06 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.7-highspeed":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.6,output:2.4,cachedInput:.06},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "M2.7 Highspeed: Same performance, faster and more agile (output speed approximately 100 tps)", context window 204,800. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo): $0.6 input, $2.4 output, $0.06 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.5":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Peak Performance. Ultimate Value. Master the Complex (output speed approximately 60 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.3 input, $1.2 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.5-highspeed":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.6,output:2.4,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "M2.5 highspeed: Same performance, faster and more agile (output speed approximately 100 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.6 input, $2.4 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.1":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Powerful Multi-Language Programming Capabilities with Comprehensively Enhanced Programming Experience (output speed approximately 60 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.3 input, $1.2 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.1-highspeed":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.6,output:2.4,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Faster and More Agile (output speed approximately 100 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.6 input, $2.4 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2":{contextWindow:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Agentic capabilities, Advanced reasoning", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.3 input, $1.2 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false. Max output: the Models page (https://platform.minimax.io/docs/guides/models-intro), Legacy Models, lists "Maximum Output: 128k tokens (including CoT)" for MiniMax-M2; the Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai) says for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3 "the maximum is 204800 (200K)". The two pages give different figures, so maxOutputTokens is not set for this id.'}},topModels:["MiniMax-M3","MiniMax-M3.1-Flash-Preview","MiniMax-M2.7","MiniMax-M2.7-highspeed","MiniMax-M2.5","MiniMax-M2.5-highspeed","MiniMax-M2.1","MiniMax-M2.1-highspeed","MiniMax-M2"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid api key|not authorized",class:"authentication",message:"MiniMax rejected the API key (HTTP 401, authorized_error). Check {apiKeyEnvVar}. Get one at {setupUrl}"},{pattern:"insufficient balance",class:"provider",message:`MiniMax reports an insufficient balance (error 1008). The vendor's error-code table says: "Please check your account balance." (https://platform.minimax.io/docs/api-reference/errorcode)`},{pattern:"rate limit",class:"rate-limit",message:`MiniMax reports a rate limit (error 1002). The vendor's error-code table says: "Please retry your requests later." (https://platform.minimax.io/docs/api-reference/errorcode)`}],setup:{url:"https://platform.minimax.io/user-center/basic-information/interface-key",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://platform.minimax.io/login?source=platform_docs and register or log in (https://platform.minimax.io/docs/guides/quickstart-preparation)","2. Pay-as-you-go: open API Keys > Create new secret key at https://platform.minimax.io/user-center/basic-information/interface-key and copy the API Key (https://platform.minimax.io/docs/guides/quickstart-preparation)","3. Token Plan: view your Subscription Key at https://platform.minimax.io/user-center/payment/token-plan. MiniMax-M3.1-Flash-Preview is stated as available only through Token Plan and MiniMax Code for now, and the Subscription Key is stated as not interchangeable with pay-as-you-go API Keys (https://platform.minimax.io/docs/api-reference/text-openai-api, https://platform.minimax.io/docs/token-plan/intro)",'4. Billing as the vendor words it: "Pay-as-you-go uses standard Open Platform API Keys and consumes your account balance by actual usage." (https://platform.minimax.io/docs/guides/pricing-paygo) and "New users without subscription can try the free quota from Pay-as-you-go" (https://platform.minimax.io/docs/solutions/eigent, a tutorial dated January 23, 2026)',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.minimax.io/v1 (https://platform.minimax.io/docs/api-reference/text-openai-api sets OPENAI_BASE_URL=https://api.minimax.io/v1 and calls client.chat.completions.create), with the nine model ids in that page's Supported Models table in models.catalog. This entry is docs-verified only: an unauthenticated GET of https://api.minimax.io/v1/models answered HTTP 401 without a key, so the model ids come from the vendor's public docs and the roster has not been checked; it is not yet live-verified. That GET returned error.type authorized_error with the message "login fail: Please carry the API secret key in the 'Authorization' field of the request header (1004)" (2026-09-29), so errorRules match status 401 and the messages in the vendor's error-code table (https://platform.minimax.io/docs/api-reference/errorcode). models.defaultContextWindow (204800) and models.defaultMaxOutputTokens (65536) apply to ids outside the catalog: 204,800 is the context window the OpenAI SDK page lists for the MiniMax-M2.x models and 65536 is the recommended max_completion_tokens the Chat Completions reference gives for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3. capabilities.thinking is false and the entry sets none of the thinking, reasoning_effort or reasoning_split request parameters; the Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai) says of MiniMax-M3 "adaptive thinking is on by default" and of MiniMax-M3.1-Flash-Preview "always thinks". billingPolicy free-tier is the schema's closest value (the schema has no unknown value) and is not a MiniMax statement of terms; each model's status is likewise a value the schema requires (production, or preview for the id the vendor names Preview).`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.minimax.io/v1/models answers 401 without a key, so model ids are taken from https://platform.minimax.io/docs/api-reference/text-openai-api (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"authorized_error",method:'unauthenticated GET https://api.minimax.io/v1/models \u2014 error.type authorized_error, error.http_code "401", message ending (1004); credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public pages https://platform.minimax.io/docs/guides/pricing-paygo ("Pay-as-you-go uses standard Open Platform API Keys and consumes your account balance by actual usage.") and https://platform.minimax.io/docs/solutions/eigent ("New users without subscription can try the free quota from Pay-as-you-go"); credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),LAe,hNr=E({"src/lib/providers/catalog/mistral.json"(){LAe={$schema:"./provider-catalog.schema.json",id:"mistral",displayName:"Mistral",aliases:[],tier:2,wire:{baseURL:"https://api.mistral.ai/v1"},models:{default:"mistral-small-2506",registryDefaultModel:"mistral-large-latest",fallbacks:["mistral-small-2506","mistral-medium-latest"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"mistral-large-latest":{contextWindow:256e3,vision:!0,status:"production",description:"Mistral Large (Latest)"},"mistral-large-2512":{contextWindow:256e3,vision:!0,status:"production",description:"Mistral Large 2512"},"mistral-medium-latest":{contextWindow:128e3,vision:!0,status:"production",description:"Mistral Medium (Latest)"},"mistral-medium-2508":{vision:!0,status:"production",description:"Mistral Medium 2508"},"mistral-small-latest":{contextWindow:128e3,vision:!0,status:"production",description:"Mistral Small (Latest)"},"mistral-small-2506":{vision:!0,status:"production",description:"Recommended - Mistral Small 2506"},"magistral-medium-latest":{contextWindow:128e3,vision:!0,status:"production",description:"Magistral Medium (Reasoning)"},"magistral-small-latest":{vision:!0,status:"production",description:"Magistral Small (Reasoning)"},"ministral-14b-2512":{enumMember:"MINISTRAL_14B_2512",vision:!1,status:"production",description:"Ministral 14B (Edge)"},"ministral-8b-2512":{enumMember:"MINISTRAL_8B_2512",vision:!1,status:"production",description:"Ministral 8B (Edge)"},"ministral-3b-2512":{enumMember:"MINISTRAL_3B_2512",vision:!1,status:"production",description:"Ministral 3B (Edge)"},"codestral-latest":{contextWindow:256e3,vision:!1,status:"production",description:"Codestral (Code Generation)"},"codestral-2508":{contextWindow:256e3,vision:!1,status:"production",description:"Codestral 2508 (Code Generation)"},"codestral-embed":{vision:!1,status:"production",description:"Codestral Embed"},"devstral-medium-latest":{vision:!1,status:"production",description:"Devstral Medium (Software Development)"},"devstral-small-latest":{vision:!1,status:"production",description:"Devstral Small (Software Development)"},"pixtral-large":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"pixtral-12b":{vision:!0,status:"production",description:"Pixtral 12B \u2014 vision-capable; re-verified live 2026-08-30"},"voxtral-small-latest":{vision:!1,status:"production",description:"Voxtral Small (Audio)"},"voxtral-mini-latest":{vision:!1,status:"production",description:"Voxtral Mini (Audio)"},"devstral-2512":{enumMember:"DEVSTRAL_2",contextWindow:256e3,vision:!1,status:"production",description:"Devstral 2 (December 2025)"},"devstral-small-2512":{enumMember:"DEVSTRAL_SMALL_2",contextWindow:256e3,vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"magistral-medium-2509":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"magistral-small-2509":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"voxtral-mini-2602":{enumMember:"VOXTRAL_MINI_TRANSCRIBE_2",vision:!1,status:"production",description:"Voxtral Mini Transcribe 2 (February 2026)"},"mistral-ocr-2512":{enumMember:"MISTRAL_OCR_3",vision:!1,status:"production",description:"Mistral OCR 3 (December 2025)"},"mistral-ocr-latest":{vision:!1,status:"production",description:"Mistral OCR (Latest)"},"mistral-nemo":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"mistral-embed":{vision:!1,status:"production",description:"Mistral Embed"},"mistral-moderation-latest":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"mistral-small-2603":{enumMember:"MISTRAL_SMALL_4",contextWindow:256e3,vision:!0,status:"production",description:"Mistral Small 4 (June 2026)"},"mistral-small-creative":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"}},visionModel:"mistral-medium-latest",topModels:["mistral-large-latest","mistral-small-latest","codestral-latest","magistral-medium-latest","pixtral-12b"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"API_KEY_INVALID|Invalid API key|Unauthorized",class:"authentication",message:"Invalid Mistral API key. Please check your {apiKeyEnvVar} environment variable."}],quirks:{registryDefaultIgnoresModelEnvVar:!0},timeouts:{generateMs:45e3,streamMs:12e4},autoSelectPriority:9,setup:{url:"https://console.mistral.ai/api-keys",apiKeyFormat:"^[A-Za-z0-9]{32}$",billingPolicy:"free-with-card",instructions:["1. Visit: https://console.mistral.ai/api-keys","2. Create or sign in to your account","3. Generate a new API key"]},evidence:{rosterVerified:{date:"2026-08-30",method:"GET /models against the live account, cross-checked with a real chat call per id"},liveMatrix:{date:"2026-08-30",result:"17 ids answer normally. A chat probe alone was not enough to judge the rest, because Mistral rejects every non-chat model with the same generic 'Invalid model' text: cross-referencing the roster shows mistral-embed, codestral-embed, mistral-ocr-latest, mistral-ocr-2512, voxtral-mini-latest and voxtral-mini-2602 are all still listed and alive \u2014 they are embedding, OCR and audio models that a chat endpoint is right to refuse \u2014 so they keep production status. An id is marked retired only when BOTH signals agree: absent from the roster AND rejected by a live chat call. pixtral-12b is the one id where they disagree \u2014 the roster omits it but a real call returns 200, so it was moved back to production, on the rule that a live 200 outranks a roster omission. mistral-large-latest and mistral-large-2512 answer 403 'not available in your subscription tier': a plan limit on this account, not a retirement, so they stay production. visionModel is pinned to mistral-medium-latest because the otherwise-first vision id, mistral-large-latest, is behind that plan gate. Combined tools plus response_format probes returned 429 twice, which is not successful capability evidence, so structuredOutputWithTools remains false pending a successful combined-request probe."},addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),FAe,fNr=E({"src/lib/providers/catalog/moark.json"(){FAe={$schema:"./provider-catalog.schema.json",id:"moark",displayName:"Moark",aliases:[],tier:2,wire:{baseURL:"https://api.moark.com/v1"},models:{default:"Qwen3-8B",fallbacks:["Qwen3-4B","ERNIE-4.5-Turbo","GLM-5.3","kimi-k3","DeepSeek-V4-Pro-0813"],defaultContextWindow:32e3,defaultMaxOutputTokens:4096,catalog:{"Qwen3-8B":{vision:!1,status:"production",description:"Recommended \u2014 roster-verified via unauthenticated GET https://moark.com/v1/models (2026-09-28, HTTP 200, 222 models). Chosen as `default` because Moark's own text-generation guide (https://moark.com/docs/products/apis/texts/text-generation, retrieved 2026-09-28) names Qwen3-8B and Qwen3-4B specifically as its suggested free-testing/validation models ('\u514D\u8D39\u5728\u7EBF\u4F53\u9A8C', quick-validation picks) \u2014 the only concrete, documented model recommendation on that page that also matches a currently-live roster id; the page's other named examples (Qwen2.5-72B-Instruct used in every code sample, kimi-k2-instruct and DeepSeek-R1 for long-text/reasoning, ERNIE-4.5-Turbo for multilingual) are not presented as free and, except ERNIE-4.5-Turbo, are no longer on the live roster. No credential-free capability probe was possible (chat/completions is POST-only, and this onboarding used unauthenticated GETs only): tool calling, structured output (guided_json/guided_choice) and SSE streaming are documented generically for the API but not confirmed against this specific model. contextWindow/maxOutputTokens are left unset on every model in this catalog \u2014 Moark's docs give only a generic '32K\u3001128K \u7B49' illustration (not tied to any model) and GET /v1/models returns only {id, object, created, owned_by}, no context_length or pricing fields."},"Qwen3-4B":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Named alongside Qwen3-8B as a free testing/validation model on Moark's text-generation guide (https://moark.com/docs/products/apis/texts/text-generation, retrieved 2026-09-28) \u2014 smaller sibling of the default. Not itself capability-probed; fallback."},"ERNIE-4.5-Turbo":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Baidu ERNIE 4.5 Turbo \u2014 named by Moark's text-generation guide (retrieved 2026-09-28) as its suggested model for multilingual use cases. Not itself capability-probed; fallback."},"GLM-5.3":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Zhipu GLM-5.3 \u2014 present on the live roster; Moark's text-generation guide does not name it specifically (its worked examples use Qwen2.5-72B-Instruct instead, which is not on the current roster). Included as a general-purpose fallback on roster presence alone; not capability-probed."},"kimi-k3":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Moonshot AI Kimi K3 \u2014 the closest live-roster match to Moark's docs-suggested 'long text' pick (the exact doc-named id, kimi-k2-instruct, is no longer on the roster; Kimi-K2.7-Code and Kimi-K2.6 are also present but code-branded/older). Not capability-probed; fallback."},"DeepSeek-V4-Pro-0813":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). DeepSeek V4 Pro \u2014 the closest live-roster match to Moark's docs-suggested 'specialized reasoning' pick (the exact doc-named id, DeepSeek-R1, is no longer on the roster). Not capability-probed; fallback."}},topModels:["Qwen3-8B","Qwen3-4B","ERNIE-4.5-Turbo","GLM-5.3","kimi-k3","DeepSeek-V4-Pro-0813"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[],setup:{url:"https://moark.com/dashboard/tokens",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://moark.com and sign in \u2014 no separate signup page is documented, only workbench login","2. Go to \u5DE5\u4F5C\u53F0 \u2192 \u8BBE\u7F6E \u2192 \u8BBF\u95EE\u4EE4\u724C (Workbench \u2192 Settings \u2192 Access Tokens) at https://moark.com/dashboard/tokens and create a token","3. Fund a prepaid resource package before making live calls (e.g. the all-model package, https://moark.com/serverless-api/order?package=1910) \u2014 billing is prepaid, charged per-call or per-token (https://moark.com/docs/products/apis, retrieved 2026-09-28); models can be tried free in the web console, but no formal free-tier API policy is documented, and package usage is non-refundable (https://moark.com/docs/billing/purchase, retrieved 2026-09-28)","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.moark.com/v1 \u2014 Moark's own docs state '\u6A21\u529B\u65B9\u821F\u7684 Serverless API \u517C\u5BB9\u5F00\u53D1\u8005\u559C\u7231\u4E14\u793E\u533A\u6D41\u884C\u7684 OpenAI \u98CE\u683C API' (https://moark.com/docs/products/apis/texts/text-generation, retrieved 2026-09-28), serving 222 models (unauthenticated GET /v1/models, 2026-09-28) spanning text, vision, image, video, audio, embedding and reranking \u2014 this entry covers only the OpenAI-compatible chat/completions surface. The vendor also documents vLLM-style guided_json/guided_choice structured-decoding parameters, distinct from the OpenAI response_format field NeuroLink's generic client sends, so structuredOutput is not claimed here without a live probe."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://moark.com/v1/models \u2014 222 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),$Ae,gNr=E({"src/lib/providers/catalog/modelscope.json"(){$Ae={$schema:"./provider-catalog.schema.json",id:"modelscope",displayName:"ModelScope",aliases:[],tier:2,wire:{baseURL:"https://api-inference.modelscope.cn/v1"},models:{default:"Qwen/Qwen3.5-35B-A3B",fallbacks:["Qwen/Qwen3.5-27B","deepseek-ai/DeepSeek-V4-Pro-0813","ZhipuAI/GLM-5.2"],fallbackModelName:"Qwen/Qwen3.5-27B",defaultContextWindow:32768,defaultMaxOutputTokens:4096,catalog:{"Qwen/Qwen3.5-35B-A3B":{vision:!0,status:"production",description:"NeuroLink default. The model id used in the intro page's OpenAI-compatible chat example (client.chat.completions.create with stream=True), in its Anthropic-compatible streaming and non-streaming examples, and in its Vision Models example, which sends a content part of type image_url (https://modelscope.cn/docs/model-service/API-Inference/intro); vision is true because that example calls this id with an image_url. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.5-27B":{vision:!0,status:"production",description:`Fallback. Named in the Responses API example of the Chinese-language intro page (client.responses.create with model="Qwen/Qwen3.5-27B", read from https://resouces.modelscope.cn/document/docdata/2026-9-28_15-49-CN/dist/model-service/API-Inference/intro/intro_CN.md) and in the examples of the LangChain integration page (https://modelscope.cn/docs/ecosystem-integrations/api-usage/langchain, Chinese text read from the docs site's document file). The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says "integrated models like Qwen3.5 that support vision". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-27B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster.`},"deepseek-ai/DeepSeek-V4-Pro-0813":{vision:!1,status:"production",description:"Fallback. ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/deepseek-ai/DeepSeek-V4-Pro-0813, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"ZhipuAI/GLM-5.2":{vision:!1,status:"production",description:"Fallback. ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/ZhipuAI/GLM-5.2, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.5-397B-A17B":{vision:!0,status:"production",description:`The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says "integrated models like Qwen3.5 that support vision". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-397B-A17B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster.`},"Qwen/Qwen3.5-122B-A10B":{vision:!0,status:"production",description:`The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says "integrated models like Qwen3.5 that support vision". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-122B-A10B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster.`},"deepseek-ai/DeepSeek-V4-Flash-0731":{vision:!1,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/deepseek-ai/DeepSeek-V4-Flash-0731, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"MiniMax/MiniMax-M3":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/MiniMax/MiniMax-M3, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"stepfun-ai/Step-3.7-Flash":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/stepfun-ai/Step-3.7-Flash, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.8-27B":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.8-27B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"mistralai/Mistral-Large-Instruct-2407":{vision:!1,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/mistralai/Mistral-Large-Instruct-2407, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.8-Flash-Next":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.8-Flash-Next, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."}},topModels:["Qwen/Qwen3.5-35B-A3B","Qwen/Qwen3.5-27B","deepseek-ai/DeepSeek-V4-Pro-0813","ZhipuAI/GLM-5.2","Qwen/Qwen3.5-397B-A17B","Qwen/Qwen3.5-122B-A10B","deepseek-ai/DeepSeek-V4-Flash-0731","MiniMax/MiniMax-M3","stepfun-ai/Step-3.7-Flash","Qwen/Qwen3.8-27B","mistralai/Mistral-Large-Instruct-2407","Qwen/Qwen3.8-Flash-Next"],visionModel:"Qwen/Qwen3.5-35B-A3B"},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Invalid or missing ModelScope access token (HTTP 401). Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://modelscope.cn/my/myaccesstoken",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://modelscope.cn/home and register or log in with the "Log in/Register" button in the top right corner (https://modelscope.cn/docs/accounts/registration)','2. Bind an Alibaba Cloud account and complete real-name verification: "After account registration, you must bind your Alibaba Cloud account and complete real-name verification before using API-Inference." (https://modelscope.cn/docs/model-service/API-Inference/intro; binding steps: https://modelscope.cn/docs/accounts/aliyun-binding-and-authorization)','3. Create an access token at https://modelscope.cn/my/myaccesstoken; the token guide (https://modelscope.cn/docs/accounts/token) has you specify a validity period, "Long-term use" or "Short-term use"','4. Free for registered users: "API-Inference is provided free of charge to registered ModelScope users." (intro page); the limits page (https://modelscope.cn/docs/model-service/API-Inference/limits) states that API Inference "implements certain limits on usage quotas and concurrency"',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api-inference.modelscope.cn/v1. The intro page (https://modelscope.cn/docs/model-service/API-Inference/intro) says "ModelScope's API-Inference currently provides OpenAI API-compatible interfaces for large language models." and its example sets base_url="https://api-inference.modelscope.cn/v1/". The docs text was read on 2026-09-29 from the raw document files the docs site loads (English build 2026-9-28_15-50-EN, for example https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md; Chinese build 2026-9-28_15-49-CN where noted), because the rendered pages at modelscope.cn are a JavaScript shell. This entry is docs- and roster-verified, not yet live-verified: the model ids come from an unauthenticated GET of https://api-inference.modelscope.cn/v1/models (HTTP 200, 35 models, 2026-09-29) and no API key was used. Each model's task was read on 2026-09-29 from an unauthenticated GET of https://www.modelscope.cn/api/v1/models/<model id> (the Data.Tasks field). capabilities.thinking is true: ModelScope's Codewhale integration page (https://modelscope.cn/docs/ecosystem-integrations/api-usage/codewhale, English build file ecosystem-integrations/api-usage/codewhale/codewhale_EN.md) says "Qwen and GLM series models support \`reasoning_content\` streaming output". models.defaultContextWindow (32,768) and models.defaultMaxOutputTokens (4,096) are placeholders. errorRules holds one 401 rule taken from an unauthenticated GET of https://api-inference.modelscope.cn/v1/tasks/abc, which answered HTTP 401 with the JSON body {"errors":{"message":"Authentication failed, please make sure that a valid ModelScope token is supplied."},"request_id":"..."}.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api-inference.modelscope.cn/v1/models \u2014 35 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,method:`unauthenticated GET https://api-inference.modelscope.cn/v1/tasks/abc (the AIGC task-polling route used in the intro page's example, not chat/completions) \u2014 JSON body {"errors":{"message":"Authentication failed, please make sure that a valid ModelScope token is supplied."},"request_id":"..."}; an unauthenticated GET of https://api-inference.modelscope.cn/v1/chat/completions answered HTTP 404 with the plain-text body "404 page not found"; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:`public docs pages https://modelscope.cn/docs/model-service/API-Inference/intro ("API-Inference is provided free of charge to registered ModelScope users.") and https://modelscope.cn/docs/model-service/API-Inference/limits ("free of charge"), English text read from the docs site's document files; credential-free`},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),UAe,yNr=E({"src/lib/providers/catalog/moonshot-ai.json"(){UAe={$schema:"./provider-catalog.schema.json",id:"moonshot-ai",displayName:"Moonshot AI (Kimi)",aliases:["moonshot","kimi"],tier:2,wire:{baseURL:"https://api.moonshot.ai/v1",apiKeyFallbackEnvVars:["MOONSHOT_API_KEY"]},models:{default:"kimi-k3",fallbacks:["kimi-k2.7-code","kimi-k2.6","kimi-k2.7-code-highspeed"],defaultContextWindow:262144,defaultMaxOutputTokens:131072,catalog:{"kimi-k3":{contextWindow:1048576,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!0,status:"production",description:`NeuroLink default. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "Kimi's most capable model to date, with 2.8 trillion parameters, native visual understanding, and a 1M-token context window, designed for frontier intelligence scenarios such as software engineering, knowledge work, and deep reasoning." The Kimi K3 page https://platform.kimi.ai/docs/guide/kimi-k3-quickstart calls it "Kimi's most capable flagship model to date", states "K3 always has thinking mode enabled" with the top-level reasoning_effort field (low, high, max; default max), and states max_completion_tokens "defaults to 131072 and can be set up to 1048576". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 1,048,576 tokens; per 1M tokens input $3.00, cached input $0.30, output $15.00, cache write $3.00 (TTL 5min) or $6.00 (TTL 1h). The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k3 in its description of the Kimi Vision Model, hence vision true.`},"kimi-k2.7-code":{contextWindow:262144,pricingPerMTok:{input:.95,output:4,cachedInput:.19},vision:!0,status:"production",description:`Fallback in NeuroLink's catalog order. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "Kimi's dedicated coding model." with "Context 256k". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 262,144 tokens; per 1M tokens cache-hit input $0.19, cache-miss input $0.95, output $4.00. The Kimi K2.7 Code page https://platform.kimi.ai/docs/guide/kimi-k2-7-code-quickstart states "Kimi K2.7 Code does not support non-thinking mode." The parameter reference https://platform.kimi.ai/docs/api/models-overview states that kimi-k2.6 and kimi-k2.7-code do not support tool_choice required and "return an error if it is passed". The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k2.7-code in its description of the Kimi Vision Model, hence vision true.`},"kimi-k2.7-code-highspeed":{contextWindow:262144,pricingPerMTok:{input:1.9,output:8,cachedInput:.38},vision:!0,status:"production",description:`Fallback in NeuroLink's catalog order. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "High-Speed version of Kimi K2.7 Code model, with output speed of approximately 180 Tokens/s and up to 260 Tokens/s in short context scenarios". The Kimi K2.7 Code page https://platform.kimi.ai/docs/guide/kimi-k2-7-code-quickstart states it is "the same model as Kimi K2.7 Code" and ends that paragraph with "(Currently, the resource is limited, and the experience of the high-speed model may be slightly fluctuate\uFF0Cwe are gradually increasing the resource.)". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 262,144 tokens; per 1M tokens cache-hit input $0.38, cache-miss input $1.90, output $8.00. The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k2.7-code-highspeed in its description of the Kimi Vision Model, hence vision true.`},"kimi-k2.6":{contextWindow:262144,pricingPerMTok:{input:.95,output:4,cachedInput:.16},vision:!0,status:"production",description:`Fallback in NeuroLink's catalog order. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "Supports both visual and text input, thinking and non-thinking modes, and dialogue and Agent tasks." with "Context 256k". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 262,144 tokens; per 1M tokens cache-hit input $0.16, cache-miss input $0.95, output $4.00. The Thinking Models page https://platform.kimi.ai/docs/guide/use-thinking-models states "thinking is on by default, can be disabled" for kimi-k2.6. The response_format guide https://platform.kimi.ai/docs/guide/response_format states "kimi-k2.6 occasionally behaves unstably with complex schemas; for example, $ref may return a Markdown code block, oneOf may be ignored, and partial=true may output fields outside the schema." The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k2.6 in its description of the Kimi Vision Model, hence vision true.`}},topModels:["kimi-k3","kimi-k2.7-code","kimi-k2.7-code-highspeed","kimi-k2.6"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{pattern:"Account balance is insufficient|Token quota is insufficient|exceeded_current_quota_error",class:"provider",message:'Moonshot AI reports an insufficient account balance or token quota (HTTP 429, exceeded_current_quota_error). Its error list gives the messages "Account balance is insufficient or the account has been disabled" and "Token quota is insufficient" (https://platform.kimi.ai/docs/api/errors)'},{status:401,class:"authentication",message:'Invalid or missing Moonshot AI API key (HTTP 401, incorrect_api_key_error: "The API key was not provided, or the key is incorrect"). Check {apiKeyEnvVar}. Get one at {setupUrl}. Keys issued on platform.kimi.ai are independent from keys issued on other regional Kimi platforms (https://platform.kimi.ai/docs/api/errors)'},{status:404,class:"invalid-model",message:'Model {model} was not found, or this account does not have permission to access it (HTTP 404, resource_not_found_error: "Model not found, or this account does not have permission to access the model"; https://platform.kimi.ai/docs/api/errors)'},{status:429,class:"rate-limit",message:"Moonshot AI returned HTTP 429. Its error list gives engine_overloaded_error, exceeded_current_quota_error and rate_limit_reached_error for this status (https://platform.kimi.ai/docs/api/errors)"}],quirks:{replayReasoningContent:!0},setup:{url:"https://platform.kimi.ai/console/api-keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://platform.kimi.ai/console/api-keys and sign in, then create and copy an API key (https://platform.kimi.ai/docs/overview describes signing in to the Kimi API Platform and creating a key under API Keys)",'2. Create the key on platform.kimi.ai: the errors page states that keys issued on platform.kimi.ai are independent from keys issued on other regional Kimi platforms, and that "Mixing keys across platforms returns 401." (https://platform.kimi.ai/docs/api/errors)','3. Top up before use: "To prevent abuse, you need to recharge at least $1 to start using, and when your cumulative recharge reaches $5, you will receive a $5 voucher." (https://platform.kimi.ai/docs/pricing/limits); the Kimi K3 page states "Kimi K3 is a flagship model: it is unlocked after a successful top-up (minimum $1)." (https://platform.kimi.ai/docs/guide/kimi-k3-quickstart)',"4. Set {apiKeyEnvVar} in your .env file (MOONSHOT_API_KEY, the variable Kimi's own docs use, is also read)"],description:`OpenAI-compatible endpoint at https://api.moonshot.ai/v1 (https://platform.kimi.ai/docs/overview: "Kimi API lets you interact with Kimi models and is compatible with both the OpenAI and Anthropic API formats."). The docs and console live on platform.kimi.ai and call the product the Kimi API; the API host is api.moonshot.ai. This entry is docs-verified only: the vendor's GET /v1/models needs a key, so the four model ids come from its public docs and the roster has not been checked; it is not yet live-verified. models.defaultContextWindow (262144, the context window the pricing page lists for kimi-k2.7-code, kimi-k2.7-code-highspeed and kimi-k2.6) and models.defaultMaxOutputTokens (131072, the max_completion_tokens default the vendor states for kimi-k3) apply to model ids outside the catalog and are placeholders, since the vendor publishes no figure for such ids. errorRules follow the statuses and messages on https://platform.kimi.ai/docs/api/errors; the 401 status and incorrect_api_key_error type were also seen on an unauthenticated GET of /v1/models.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.moonshot.ai/v1/models answers 401 without a key, so model ids are taken from https://platform.kimi.ai/docs/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"incorrect_api_key_error",method:`unauthenticated GET https://api.moonshot.ai/v1/models with no credentials \u2014 HTTP 401, JSON body {"error":{"message":"Incorrect API key provided","type":"incorrect_api_key_error"}}; the code recorded here is the body's error.type value (the body has no error.code field); credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public page https://platform.kimi.ai/docs/pricing/limits \u2014 "To prevent abuse, you need to recharge at least $1 to start using, and when your cumulative recharge reaches $5, you will receive a $5 voucher."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),BAe,vNr=E({"src/lib/providers/catalog/morph.json"(){BAe={$schema:"./provider-catalog.schema.json",id:"morph",displayName:"Morph",aliases:["morphllm"],tier:2,wire:{baseURL:"https://api.morphllm.com/v1"},models:{default:"morph-v3-large",fallbacks:["morph-v3-large","morph-v3-fast"],defaultContextWindow:262144,defaultMaxOutputTokens:131072,catalog:{"morph-v3-large":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:.9,output:1.9},vision:!1,status:"production",description:"Recommended - Morph's high-accuracy Fast Apply model for complex code edits (2500+ tok/sec, 98% accuracy); the general-purpose choice of Morph's two chat-usable models. Does not honour the OpenAI tool-calling contract: with tools attached it emits the call as literal <tool_call> text in message.content instead of a tool_calls array"},"morph-v3-fast":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:.8,output:1.2},vision:!1,status:"production",description:"Morph's fastest Fast Apply model, purpose-built for applying code edits (10,500+ tok/sec, 96% accuracy) rather than general chat. Ignores the tools parameter outright and returns unrelated generated text instead of a tool call"}},topModels:["morph-v3-large","morph-v3-fast"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"API key required",class:"authentication",message:"Invalid or missing Morph API key. Check {apiKeyEnvVar}. Get one at https://morphllm.com/dashboard"},{status:400,pattern:"is not served by this endpoint",class:"invalid-model",message:"Morph model '{model}' is not served by this endpoint. Pick a current model from the authenticated GET /v1/models roster or https://morphllm.com/dashboard."}],setup:{url:"https://morphllm.com/dashboard",apiKeyFormat:null,billingPolicy:"free-with-card",description:"API key",instructions:["1. Visit: https://morphllm.com/dashboard and sign in","2. A card on file is required; the account is rate-limited (5 req/min) until one is added","3. Create an API key on the dashboard","4. Set {apiKeyEnvVar} in your .env file"]},quirks:{messageContentFormat:"string"},evidence:{rosterVerified:{date:"2026-09-05",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-05",status:401,code:"invalid_api_key"},liveMatrix:{date:"2026-09-05",result:"Full wire probe on morph-v3-fast plus a focused tool-calling re-probe on both chat models. Non-tool basics all 200: chat, max_completion_tokens, system role, sampling params, SSE streaming (content deltas, usage chunk, [DONE]), json_schema (valid JSON matching schema) and json_object. Array-shaped message content is REJECTED with HTTP 500 'Request processing failed: text.charCodeAt is not a function' \u2014 same class of quirk as Cloudflare (PR #1587); messageContentFormat is set to 'string' and vision is false because the vision probe sends array parts and hits the identical 500. Tool calling does NOT work despite HTTP 200: morph-v3-large echoes the call as literal '<tool_call>{...}</tool_call>' text in message.content, and morph-v3-fast ignores the tools parameter and returns unrelated generated text (Python source) with finish_reason=length. tools and toolsWithStreaming are declared false on that basis; tools_plus_schema returning 200 is not evidence of structuredOutputWithTools since tools do not actually work. structuredOutput is true and strong (schema-conformant JSON, json_object accepted). The GET /v1/models roster lists 22 ids (morph-v3-fast, morph-v3-large, auto, morph-compactor, morph-warp-grep-v2.1, and passthrough ids for GLM/DeepSeek/Kimi/Qwen/MiniMax/Gemma/computer-use), but a deliberately invalid model name on /chat/completions came back 'is not served by this endpoint; accepted models: morph-v0, morph-v2, morph-v3-fast, morph-v3-large' \u2014 none of those other 18 roster ids were live-verified against chat/completions, so only the two confirmed working chat models are catalogued; context window (262144) and max output tokens (131072) for both come from Morph's public model metadata (https://www.morphllm.com/api/models/json), which also supplied pricing. Morph is a code-application (Fast Apply) specialist, not a general chat vendor: morph-v3-large is catalogued as the default because it is the general-purpose one of the pair, while morph-v3-fast is purpose-built for edit application rather than open-ended conversation."},addedInPR:"https://github.com/juspay/neurolink/pull/1647"}}}}),zAe,wNr=E({"src/lib/providers/catalog/naver-clova-studio.json"(){zAe={$schema:"./provider-catalog.schema.json",id:"naver-clova-studio",displayName:"NAVER CLOVA Studio",aliases:[],tier:2,wire:{baseURL:"https://clovastudio.stream.ntruss.com/v1/openai"},models:{default:"HCX-005",fallbacks:["HCX-005"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"HCX-005":{contextWindow:128e3,maxOutputTokens:4096,vision:!1,tools:!0,status:"production",description:"Own Chat Completions v3 documentation names HCX-005 and states a combined input/output limit of 128,000 tokens and a maximum of 4,096 output tokens. The OpenAI-compatible guide uses the same model ID. This initial entry declares text and tool paths, not endpoint-specific image or native strict-schema acceptance. Account availability is unverified."}},topModels:["HCX-005"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[],quirks:{rejectRequiredToolChoice:!0},setup:{url:"https://console.ncloud.com",apiKeyFormat:null,billingPolicy:"promotional-credit",instructions:["Use an eligible NAVER Cloud account and subscribe to CLOVA Studio in the Korea region on Classic or VPC, following https://guide.ncloud-docs.com/docs/en/clovastudio-start.","The official new-signup program at https://www.ncloud.com/main/creditEvent, retrieved 2026-10-09, offers 100,000 KRW discount credit after payment-method registration and a credit application. Eligibility follows the policy at application time; prior recipients of other discounts cannot apply.","Issued credit is usable for three months against NAVER Cloud service charges. Free/trial products, Marketplace purchases and NAVER WORKS are excluded. This is a conditional promotional program, not a no-card free tier or proof of your current entitlement or balance.","Create a CLOVA Studio test or service API key under the CLOVA Studio API-key menu. Its OpenAI-compatible API accepts those keys with Authorization: Bearer; a general NAVER Cloud access key is not a substitute. Set {apiKeyEnvVar}.","The chat base is https://clovastudio.stream.ntruss.com/v1/openai and default model is HCX-005. Auto, none and named tool choices retain their documented meanings. Required tool choice is unsupported and explicitly rejected, never silently downgraded to auto."],description:"Documentation-based source pilot. CLOVA Studio is usage-priced; conditional NAVER Cloud promotional credit requires payment-method registration/application and eligibility. Actual account subscription, models, credit balance and live API execution remain unverified. JSON-schema name/strict controls are ignored by the shim, so native strict-schema and tools-plus-schema support are not declared."},evidence:{rosterVerified:{date:"2026-10-09",code:"DOCS_ONLY_ROSTER_NOT_OBSERVED",method:"Public first-party HCX-005 Chat v3 limits, OpenAI compatibility and function-calling documents only. No authenticated model roster, account/key lookup or inference performed. Limits 128,000 / 4,096 are explicit per-model source constraints, not K/M expansion."},billingProbe:{date:"2026-10-09",code:"PUBLIC_PROMOTIONAL_POLICY_ONLY",method:"Public https://guide.ncloud-docs.com/docs/en/clovastudio-spec confirms usage fees; https://www.ncloud.com/main/creditEvent publishes conditional 100,000 KRW credit, valid three months, after payment-method registration and application. No card-only requirement or current account entitlement is claimed."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1966"}}}}),GAe,bNr=E({"src/lib/providers/catalog/nebius.json"(){GAe={$schema:"./provider-catalog.schema.json",id:"nebius",displayName:"Nebius Token Factory",aliases:[],tier:2,wire:{baseURL:"https://api.tokenfactory.nebius.com/v1"},models:{default:"Qwen/Qwen3-235B-A22B-Instruct-2507",fallbacks:["deepseek-ai/DeepSeek-V4-Flash-0731","openai/gpt-oss-120b","Qwen/Qwen3-30B-A3B-Instruct-2507","NousResearch/Hermes-4-405B"],defaultContextWindow:32e3,defaultMaxOutputTokens:8192,catalog:{"Qwen/Qwen3-235B-A22B-Instruct-2507":{contextWindow:262144,pricingPerMTok:{input:.2,output:.6},vision:!1,status:"production",description:'NeuroLink default. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Qwen3-235B-A22B-Instruct-2507"; type text2text; status active; description "Balanced Qwen3 flagship tuned for strong general reasoning, chat quality, and tool use."; tags "262K context", "code", "math", "JSON mode"; use_cases text, code, function_calling, context_and_rag, fine_tune, responses_api; context_window_k 262; max_model_len 262144; input_price_per_million_tokens 0.2; output_price_per_million_tokens 0.6. vision false: catalog type text2text.'},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:1024e3,pricingPerMTok:{input:.14,output:.28},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "DeepSeek-V4-Flash-0731"; type text2text; status active; description "DeepSeek V4 Flash 0731 is a 1M-context reasoning model designed for coding and agentic workloads."; tags "1M context", "reasoning", "JSON mode", "code", "math"; use_cases text, reasoning, function_calling, code, context_and_rag, responses_api, fine_tune; context_window_k 1024; max_model_len 1024000; input_price_per_million_tokens 0.14; output_price_per_million_tokens 0.28. vision false: catalog type text2text. The August 2026 deprecation notice (https://docs.tokenfactory.nebius.com/august-2026-deprecation-notice) lists this id in its "Recommended Replacement" column.'},"openai/gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.15,output:.6},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "gpt-oss-120b"; type text2text; status active; description "Open-weight agentic model with configurable reasoning, full CoT visibility, strong tool use, and fine-tuning support."; tags "131K context", "code", "JSON mode", "math", "reasoning"; use_cases text, code, fine_tune, function_calling, reasoning; context_window_k 131; max_model_len 131072; input_price_per_million_tokens 0.15; output_price_per_million_tokens 0.6. vision false: catalog type text2text. The Structured output & JSON page (https://docs.tokenfactory.nebius.com/ai-models-inference/json) uses this id in its JavaScript example.'},"Qwen/Qwen3-30B-A3B-Instruct-2507":{contextWindow:262144,pricingPerMTok:{input:.1,output:.3},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Qwen3-30B-A3B-Instruct-2507"; type text2text; status active; description "Versatile 30B instruct model optimized for high-quality chat, reasoning, and coding."; tags "262K context", "code", "math", "JSON mode"; use_cases text, code, function_calling, context_and_rag, fine_tune, responses_api; context_window_k 262; max_model_len 262144; input_price_per_million_tokens 0.1; output_price_per_million_tokens 0.3. vision false: catalog type text2text.'},"NousResearch/Hermes-4-405B":{contextWindow:131072,pricingPerMTok:{input:1,output:3},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Hermes-4-405B"; type text2text; status active; description "Hybrid-reasoning model trained on verified CoT traces for strong math, coding, and step-by-step reliability."; tags "128K context", "JSON mode"; use_cases text, code, complex_writing, context_and_rag, function_calling, reasoning, summarization, responses_api; context_window_k 128; max_model_len 131072; input_price_per_million_tokens 1; output_price_per_million_tokens 3. vision false: catalog type text2text.'},"nvidia/Nemotron-3_5-Lightning":{contextWindow:1048576,pricingPerMTok:{input:.06,output:.24},vision:!1,status:"production",description:`Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Nemotron-3.5-Lightning"; type text2text; status active; description "NVIDIA's 30B-parameter hybrid MoE model with 3B active parameters per token, designed for efficient agentic reasoning, tool use, coding, and long-context workflows."; tags "1M context", "reasoning", "code", "function calling", "MTP"; use_cases text, reasoning, function_calling, code, context_and_rag, responses_api; context_window_k 1024; max_model_len 1048576; input_price_per_million_tokens 0.06; output_price_per_million_tokens 0.24. vision false: catalog type text2text. The August 2026 deprecation notice (https://docs.tokenfactory.nebius.com/august-2026-deprecation-notice) lists this id in its "Recommended Replacement" column.`},"openbmb/MiniCPM-V-4_5":{contextWindow:32e3,pricingPerMTok:{input:.658,output:1.11},vision:!0,status:"production",description:'Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "openbmb/MiniCPM-V-4_5"; type image2text; status active; description "MiniCPM-V-4.5 \u2013 Compact multimodal model for image, multi-image, high-FPS/long-video, OCR/PDF understanding, with switchable fast/deep thinking."; tags "JSON mode"; use_cases text, image, summarization, context_and_rag; context_window_k 32; max_model_len 32000; input_price_per_million_tokens 0.658; output_price_per_million_tokens 1.11. vision true: catalog type image2text with image in use_cases.'}},topModels:["Qwen/Qwen3-235B-A22B-Instruct-2507","deepseek-ai/DeepSeek-V4-Flash-0731","openai/gpt-oss-120b","Qwen/Qwen3-30B-A3B-Instruct-2507","NousResearch/Hermes-4-405B","nvidia/Nemotron-3_5-Lightning","openbmb/MiniCPM-V-4_5"],visionModel:"openbmb/MiniCPM-V-4_5"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Nebius Token Factory returned HTTP 401. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:402,class:"provider",message:"Nebius Token Factory returned HTTP 402 (Payment Required): the account budget is exhausted. Billing details: https://docs.tokenfactory.nebius.com/other-capabilities/billing-new"},{status:404,class:"invalid-model",message:"Nebius Token Factory returned HTTP 404: the model '{model}' does not exist. Model ids are listed at https://tokenfactory.nebius.com/model-catalog.md"},{status:429,class:"rate-limit",message:"Nebius Token Factory returned HTTP 429 (rate limit exceeded). The Retry-After response header gives the time in seconds to wait before making another request (https://docs.tokenfactory.nebius.com/ai-models-inference/rate-limits)"}],setup:{url:"https://tokenfactory.nebius.com/",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://tokenfactory.nebius.com/ and create an account; the quickstart (https://docs.tokenfactory.nebius.com/quickstart) says: "Log in using your Google or GitHub account"','2. Create an API key (https://docs.tokenfactory.nebius.com/api-reference/introduction#authentication): go to the API keys section, click Create API key, enter the key name, click Create, and save the displayed key \u2014 "Save the displayed API key. You cannot open it later in Nebius Token Factory."','3. Billing (https://docs.tokenfactory.nebius.com/other-capabilities/billing-new): "Billing setup is mandatory\u2014you cannot complete onboarding without it." "Setting up a billing account requires a bank card." "Upon first sign-up, you receive $1 in trial credit, valid for 30 days."',"4. Set {apiKeyEnvVar} in your .env file (the vendor's docs read NEBIUS_API_KEY)"],description:`OpenAI-compatible endpoint at https://api.tokenfactory.nebius.com/v1 (https://docs.tokenfactory.nebius.com/api-reference/introduction: "Nebius Token Factory offers an OpenAI-compatible API for inference and fine-tuning."). Docs-verified, not live-verified: an unauthenticated GET of https://api.tokenfactory.nebius.com/v1/models answers HTTP 401 without a key, so the model ids come from the vendor's public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29) and the roster has not been checked against the API. errorRules follow the statuses and example bodies in https://docs.tokenfactory.nebius.com/api-reference/inference/create-chat-completion (401, 402, 404, 429). models.defaultMaxOutputTokens (8192) is the value that reference gives for an omitted max_tokens ("If omitted or set to null, defaults to 8192 tokens."); models.defaultContextWindow (32000) is a placeholder the vendor does not publish.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.tokenfactory.nebius.com/v1/models answers 401 without a key, so model ids are taken from https://tokenfactory.nebius.com/api/public/models_info (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:`unauthenticated GET https://api.tokenfactory.nebius.com/v1/models \u2014 body {"detail":"Couldn't authenticate. Reason: token is not present"}; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public page https://docs.tokenfactory.nebius.com/other-capabilities/billing-new \u2014 "Setting up a billing account requires a bank card." and "Upon first sign-up, you receive $1 in trial credit, valid for 30 days."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),qAe,TNr=E({"src/lib/providers/catalog/neuralwatt.json"(){qAe={$schema:"./provider-catalog.schema.json",id:"neuralwatt",displayName:"Neuralwatt",aliases:[],tier:2,wire:{baseURL:"https://api.neuralwatt.com/v1"},models:{default:"glm-5.3",fallbacks:["glm-5.3-flash","qwen-3.8-27b","qwen3.6-35b","kimi-k2.7-code","kimi-k3","deepseek-v4.1-flash","gemma-4-31b"],defaultContextWindow:1048560,defaultMaxOutputTokens:4096,visionModel:"qwen-3.8-27b",catalog:{"glm-5.3":{contextWindow:1048560,pricingPerMTok:{input:1.45,output:4.5,cachedInput:.145},vision:!1,status:"production",description:'ZhipuAI GLM 5.3 (fp8-native, zai-org/GLM-5.3) \u2014 the model used in every quickstart code sample on https://docs.neuralwatt.com/quickstart (curl, Python and Node.js all default to "glm-5.3"), so it is treated as Neuralwatt\'s own recommended default here. Roster metadata (GET /v1/models, 2026-09-28) marks reasoning mandatory (default effort "max") and declares tools:true and json_mode:true, but neither claim was independently probed \u2014 this onboarding is fully credential-free, no POST request was made. json_mode is not backed by a documented `response_format` parameter anywhere in the chat-completions API reference (https://docs.neuralwatt.com/api-reference/inference/create-a-chat-completion, retrieved 2026-09-28), so capabilities.structuredOutput is left false rather than trusting the flag alone. limits.max_output_tokens is null for this model in the live roster \u2014 omitted here rather than invented; models.defaultMaxOutputTokens (4096) is a generic placeholder, not a Neuralwatt-stated ceiling for this model. Pricing per the same roster response: $1.45 / $4.50 per MTok input/output, $0.145 cached input.'},"glm-5.3-flash":{contextWindow:1048560,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:"ZhipuAI GLM 5.3 Flash \u2014 lighter/cheaper sibling of the default. Roster-listed only (GET /v1/models, 2026-09-28); not itself exercised in any code sample; fallback. vision:true and max_output_tokens are as declared by the roster response \u2014 the latter is null there, so it is omitted rather than invented."},"qwen-3.8-27b":{contextWindow:262128,maxOutputTokens:131072,pricingPerMTok:{input:.45,output:3.2,cachedInput:.25},vision:!0,status:"production",description:"Qwen 3.8 27B (Qwen/Qwen3.8-27B-FP8) \u2014 dense 27B VL model with native 262K context; the first entry in Neuralwatt's own /v1/models roster (GET, 2026-09-28) and one of the few catalog entries with a documented max_output_tokens ceiling (131,072) and image limits (max_images:20, max_images_total:200), so it is used as models.visionModel. Roster-listed and roster-priced only; fallback, not capability-probed (credential-free onboarding, no POST made)."},"qwen3.6-35b":{contextWindow:262128,pricingPerMTok:{input:.29,output:1.15,cachedInput:.029},vision:!0,status:"production",description:"Qwen 3.6 35B \u2014 roster-listed only (GET /v1/models, 2026-09-28); not capability-probed; fallback. max_output_tokens is null in the roster response, so it is omitted here."},"kimi-k2.7-code":{contextWindow:262128,pricingPerMTok:{input:.95,output:4,cachedInput:.095},vision:!0,status:"production",description:`MoonshotAI Kimi K2.7 Code (moonshotai/Kimi-K2.7-Code) \u2014 "quant-agnostic canonical name for the Kimi K2.7 Code family" per the roster's own description field (GET /v1/models, 2026-09-28). Roster-listed and roster-priced only; not capability-probed; fallback. max_output_tokens is null in the roster response, so it is omitted here.`},"kimi-k3":{contextWindow:1048560,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!0,status:"production",description:"MoonshotAI Kimi K3 \u2014 general-purpose sibling of the Code line, 1M context per the roster (GET /v1/models, 2026-09-28). Roster-listed only; not capability-probed; fallback. max_output_tokens is null in the roster response, so it is omitted here."},"deepseek-v4.1-flash":{contextWindow:1048560,maxOutputTokens:393216,pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!0,status:"production",description:"DeepSeek V4.1 Flash \u2014 roster-listed with a documented max_output_tokens ceiling (393,216) and vision:true (GET /v1/models, 2026-09-28). Not capability-probed; fallback."},"gemma-4-31b":{contextWindow:262128,maxOutputTokens:16384,pricingPerMTok:{input:.144,output:.42,cachedInput:.0144},vision:!0,status:"production",description:`NVIDIA's Gemma 4 31B build (owned_by/provider "nvidia" per the roster, GET /v1/models, 2026-09-28) \u2014 the only catalog entry from that provider label. Roster-listed with a documented max_output_tokens ceiling (16,384); not capability-probed; fallback.`}},topModels:["glm-5.3","glm-5.3-flash","qwen-3.8-27b","qwen3.6-35b","kimi-k2.7-code","kimi-k3","deepseek-v4.1-flash","gemma-4-31b"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,pattern:"Invalid API key|invalid_api_key|authentication_error",class:"authentication",message:"Invalid Neuralwatt API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:404,pattern:"model_not_found|not\\s+found",class:"invalid-model",message:"Neuralwatt model '{model}' not found. Pick a current model from the unauthenticated GET https://api.neuralwatt.com/v1/models roster or {setupUrl}"},{status:429,pattern:"rate_limit_exceeded|concurrent_budget_exceeded|tpm_uncached_exceeded",class:"rate-limit",message:"Neuralwatt rate limit hit for {model}. The error body includes retry_after and a retry_strategy \u2014 back off and retry rather than failing immediately."}],setup:{url:"https://portal.neuralwatt.com",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:["1. Visit: https://portal.neuralwatt.com and sign up","2. Add a payment method in Dashboard > Billing \u2014 new accounts start with a $0 balance, and adding a card grants $1.00 in free trial credit (no charge is made; the credit is valid for 30 days)","3. Navigate to Dashboard > API Keys and create a new key \u2014 copy it immediately, it is shown in full only once and starts with sk-","4. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.neuralwatt.com/v1 ("Neuralwatt Cloud"), serving 21 hosted open-weight models across Qwen, MoonshotAI Kimi, ZhipuAI GLM, DeepSeek and an NVIDIA Gemma build, with per-request energy and cost reporting (SSE comment lines / X-Request-Cost-USD headers). New accounts start at a $0 balance; adding a payment method grants a $1.00 trial credit valid 30 days, then usage is pay-per-token. Not all models support tool calling per Neuralwatt's own tool-calling guide \u2014 check a given model's capabilities on the /v1/models roster before relying on it.`},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.neuralwatt.com/v1/models \u2014 21 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),jAe,_Nr=E({"src/lib/providers/catalog/novita.json"(){jAe={$schema:"./provider-catalog.schema.json",id:"novita",displayName:"Novita AI",aliases:[],tier:2,wire:{baseURL:"https://api.novita.ai/openai/v1"},models:{default:"zai-org/glm-5.3-flash",testModel:"zai-org/glm-5.3-flash",fallbacks:["meta-llama/llama-3.3-70b-instruct","deepseek/deepseek-v3-0324","qwen/qwen-2.5-72b-instruct","google/gemma-3-27b-it"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"meta-llama/llama-3.3-70b-instruct":{vision:!1,status:"production",description:"Meta Llama 3.3 70B Instruct; a plain non-reasoning chat model. Kept as a fallback for plain chat because it does not support structured output; the runtime/default model is zai-org/glm-5.3-flash (see evidence.liveMatrix)"},"zai-org/glm-5.3-flash":{pricingPerMTok:{input:.075,output:.25,cachedInput:.015},vision:!1,status:"production",description:"Zhipu GLM-5.3 Flash \u2014 Novita's own served default and the model exercised end-to-end by NeuroLink's live capability probe (chat, streaming, tool calling, tools+streaming, tools+schema together). Reasons internally via `reasoning_content` before answering, so it needs a generous max_tokens budget or replies get cut mid-thought \u2014 pin `testModel` here for the capability matrix. Pricing from the authenticated roster, 2026-09-05"},"deepseek/deepseek-v3-0324":{vision:!1,status:"production",description:"DeepSeek V3 (0324 snapshot) \u2014 the non-reasoning DeepSeek chat line (the reasoning variant is deepseek/deepseek-r1); fallback"},"qwen/qwen-2.5-72b-instruct":{vision:!1,status:"production",description:"Qwen 2.5 72B Instruct \u2014 plain (non-thinking) Alibaba Qwen chat model; fallback"},"google/gemma-3-27b-it":{vision:!1,status:"production",description:"Google Gemma 3 27B IT \u2014 non-reasoning instruct chat model; fallback"}},topModels:["meta-llama/llama-3.3-70b-instruct","zai-org/glm-5.3-flash","deepseek/deepseek-v3-0324","qwen/qwen-2.5-72b-instruct","google/gemma-3-27b-it"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"failed to authenticate API key|FAILED_TO_AUTH",class:"authentication",message:"Invalid Novita API key. Check {apiKeyEnvVar}. Get one at https://novita.ai/settings/key-management"},{status:404,pattern:"model not found|MODEL_NOT_FOUND",class:"invalid-model",message:"Novita model '{model}' not found. Pick a current model from the authenticated /openai/v1/models roster or https://novita.ai/models"}],setup:{url:"https://novita.ai/settings/key-management",apiKeyFormat:"^sk_[A-Za-z0-9_-]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://novita.ai/settings/key-management and sign in (Google, GitHub, Hugging Face, or email)","2. Choose Create API Key, name it, and copy it immediately \u2014 it is shown in full only once and starts with sk_","3. New accounts start on a small trial voucher (a few dollars of Model API credit); manual top-ups go through Stripe with a $10 minimum, so keep early test calls small","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.novita.ai/openai/v1. New accounts start on a small trial voucher; the roster spans 150+ open-weight chat, reasoning and vision-named models."},evidence:{rosterVerified:{date:"2026-09-05",method:"authenticated GET /openai/v1/models \u2014 156 ids, e.g. zai-org/glm-5.3-flash, zai-org/glm-5.3, deepseek/deepseek-v4-pro-0813, moonshotai/kimi-k3",status:200},authProbe:{date:"2026-09-05",status:401,code:"FAILED_TO_AUTH"},liveMatrix:{date:"2026-09-05",result:`18-probe harness against zai-org/glm-5.3-flash (Novita's own served default) via https://api.novita.ai/openai/v1. Wire mechanics: chat, system role, array content parts, sampling params and max_completion_tokens all 200; SSE streaming 200 with a usage chunk and a terminal [DONE]. Reasoning is genuinely heavy on this model \u2014 several 200 responses show finish_reason=length with only 8 completion tokens, entirely spent on an unfinished reasoning_content and an empty visible content \u2014 but \`default\` and \`testModel\` are both pinned to the probed model itself (zai-org/glm-5.3-flash, Novita's own served default), which is exactly what the capability matrix below exercises \u2014 see the structured-output findings further down for why the reasoning-heavy default is still the right choice over the plain meta-llama/llama-3.3-70b-instruct fallback. Tool calling: a real tool_call (get_time, parsed tz argument) on the first turn, a null-content assistant tool_calls turn accepted on replay, and a tool_call surfacing mid-SSE-stream \u2014 tools and toolsWithStreaming true; tool_choice is tolerated even with no tools declared. response_format json_object returns 200 cleanly \u2014 structuredOutput true. response_format json_schema also returns 200, but at this token budget the content is unfinished reasoning text rather than schema-conformant JSON, same reasoning-budget effect as above \u2014 NeuroLink's coerceJsonToSchema repair layer is the safety net here, as for other reasoning-heavy vendors. Sending tools and a JSON schema together in one request succeeds (200, real tool_call returned) at the wire level. That single-shot result alone does not demonstrate the combined capability \u2014 the follow-up turn where the model must answer the original JSON-schema question from a tool result was untested at raw-probe time. It was proved separately through the SDK's public surface: \`generate({ provider: 'novita', schema, ...})\` with a registered getTime tool called end-to-end via dist/index.js \u2014 the model invoked getTime(tz='Asia/Tokyo') (toolsUsed=['getTime'], stepsUsed=2), then answered \`{"city":"Tokyo","time":"09:00"}\`, which parsed against the request schema with no repair needed (jsonRepaired/jsonTruncated both unset) \u2014 passed 1/1 in the final live proof. structuredOutputWithTools is declared true on that basis. Vision: a 64x64 PNG sent to glm-5.3-flash (not a vision-tagged model; Novita has no live-verified vision model) returns 200 with reasoning_content correctly describing 'a solid blue rectangle' but an EMPTY final content \u2014 not a working, schema-usable vision reply, so no catalog entry is marked vision:true and models.visionModel is left unset. bad key -> 401 {"code":401,"reason":"FAILED_TO_AUTH","message":"failed to authenticate API key"}; bad model -> 404 {"code":404,"reason":"MODEL_NOT_FOUND","message":"model not found"}. Novita funds this account with a $1 Model API voucher, so only this one model was live-probed end-to-end; the other four catalog entries are roster-verified by id only, not capability-probed. Structured output on Novita is per-model, and the catalog schema can only express it per provider. Verified 2026-09-05 at the wire: meta-llama/llama-3.3-70b-instruct returns HTTP 400 for response_format json_schema ("does not support 'json_schema' response format. Supported formats: json_object") and also 400 for json_object, while zai-org/glm-5.3-flash returns 200 for json_object, json_schema and tools+json_schema together. The default is therefore zai-org/glm-5.3-flash, which is also Novita's own served default, so the provider-level structuredOutput and structuredOutputWithTools flags are true for the model a default-configuration caller actually gets. meta-llama/llama-3.3-70b-instruct remains a fallback for plain chat. Tool calling was verified separately on both models (finish_reason=tool_calls with a structured call). Note that glm-5.3-flash is a reasoning model: at very small max_tokens (observed at 40) the budget is consumed by reasoning and content comes back empty; the entry's defaultMaxOutputTokens of 4096 is well clear of that.`},addedInPR:"https://github.com/juspay/neurolink/pull/1647"}}}}),VAe,ENr=E({"src/lib/providers/catalog/openai-decisions.json"(){VAe={$schema:"./provider-catalog.schema.json",id:"openai-decisions",displayName:"OpenAI Decisions",enumTypeName:"OpenAIDecisionsModels",aliases:[],inferenceKinds:["decide"],wire:{baseURL:"https://api.openai.com",envOverrides:{apiKey:"OPENAI_API_KEY"}},models:{default:"gpt-6-luna",topModels:["gpt-6-luna"],catalog:{"gpt-6-luna":{contextWindow:105e4,maxOutputTokens:256,vision:!0,status:"preview",description:"GPT-6 Luna on OpenAI's Decisions API (public beta): text and images"}}},timeouts:{decideMs:1e4},decisionLimits:{maxStateTokens:922e3,maxQuestions:200,advisory:!0,media:{maxImages:8,video:!1,maxRequestBytes:33554432}},decide:{dialect:"openai-decisions",order:7,baseURLNormalize:["strip-trailing-slash","strip-v1-suffix"],baseURLShape:"origin",ambientKeyGuard:{baseURLEnvVars:["OPENAI_BASE_URL","OPENAI_API_BASE"],trustedOrigins:["https://api.openai.com"],credentialBaseURLs:[{key:"openai",field:"baseURL"}]},endpoint:"{baseURL}/v1/decisions",model:{placement:"body"},requestIdHeaders:["x-request-id"],errors:{rules:[{status:401,kind:"authentication"},{status:429,kind:"rate_limit",retryable:!1},{status:503,kind:"overloaded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"error.message"}]}},setup:{url:"https://platform.openai.com/api-keys",apiKeyFormat:null,billingPolicy:"no-free-tier",description:"OpenAI API key (the same OPENAI_API_KEY the openai chat provider reads)",instructions:["1. Create an API key at https://platform.openai.com/api-keys","2. Set {apiKeyEnvVar}; it is shared with the openai chat provider",`3. With no other decision provider configured, {apiKeyEnvVar} alone makes openai-decisions the default decision provider (a last resort, after every other one except ScaleDown, as PERPLEXITY_API_KEY does for perplexity-decider), unless OPENAI_BASE_URL, OPENAI_API_BASE or credentials.openai.baseURL names a host other than https://api.openai.com: the key is then taken to be a gateway's and is not used by default. To use it while another provider is configured, name it in a call (provider: "openai-decisions" or --provider openai-decisions), but only if the key is OpenAI's, because a named call sends the environment key to api.openai.com. Behind a gateway, route it on purpose with OPENAI_DECISIONS_BASE_URL or credentials.openaiDecisions, or do not use it`,"4. Optional: OPENAI_DECISIONS_BASE_URL (an origin) and OPENAI_DECISIONS_MODEL (default gpt-6-luna)"]},evidence:{rosterVerified:{date:"2026-10-07",method:"OpenAI's Decisions guide and gpt-6-luna model page saved 2026-10-07: gpt-6-luna is the only model the endpoint supports. The 200-question cap was read on 2026-10-17 from the questions docstring (Ask 1\u2013200 questions about the input) in OpenAI's Python SDK, src/openai/types/decision_create_params.py in github.com/openai/openai-python, which is generated from OpenAI's API definition; the Decisions guide itself states no figure. Read from documentation; no live call, and a request over 200 questions was not tried"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1996"}}}}),HAe,SNr=E({"src/lib/providers/catalog/ovhcloud.json"(){HAe={$schema:"./provider-catalog.schema.json",id:"ovhcloud",displayName:"OVHcloud AI Endpoints",aliases:[],tier:2,wire:{baseURL:"https://oai.endpoints.kepler.ai.cloud.ovh.net/v1",envOverrides:{apiKey:"OVH_AI_ENDPOINTS_ACCESS_TOKEN"}},models:{default:"gpt-oss-120b",fallbacks:["gpt-oss-20b","Meta-Llama-3_3-70B-Instruct","Qwen3.6-27B","Mistral-Small-3.2-24B-Instruct-2506","Qwen3.5-9B"],defaultContextWindow:131072,defaultMaxOutputTokens:131072,catalog:{"gpt-oss-120b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.09,output:.47},vision:!1,status:"production",description:"Recommended default \u2014 OpenAI's open-weight gpt-oss-120b, the exact model OVHcloud's own getting-started guide uses for every code sample (docs.ovhcloud.com/en/guides/public-cloud/ai-machine-learning/ai-endpoints-getting-started, retrieved 2026-09-28), and the most fully documented model on the public catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/gpt-oss-120b/, retrieved 2026-09-28). That card's own \"Supported Features\" list names exactly Function calling, Reasoning and Streaming; its \"Output Formats\" list names raw_text, json_object and json_schema. The card's Python example builds the request with `Authorization: f\"Bearer {os.getenv('OVH_AI_ENDPOINTS_ACCESS_TOKEN')}\"` against https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/chat/completions, and reads a `reasoning_effort` generation parameter (low/medium/high) plus a `reasoning_content` response field \u2014 the basis for capabilities.thinking. No sign-in or API key was used to read any of this; it is all public documentation plus the unauthenticated GET on /v1/models. contextWindow and maxOutputTokens are the live, unauthenticated /v1/models response's own context_length/max_completion_tokens fields for this id (GET run 2026-09-28, HTTP 200). Pricing is that same response's per-token USD pricing (prompt/completion fields) converted to $/MTok; the EUR-denominated marketing catalog card quotes the same model at \u20AC0.08 in / \u20AC0.4 out per Mtoken, consistent with the API's USD figures at roughly current EUR/USD. No live request of any kind (chat, streaming, tool call) was made against this model \u2014 the entry is docs- and roster-verified only; see evidence.liveMatrix (null)."},"gpt-oss-20b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.05,output:.18},vision:!1,status:"production",description:`OpenAI's smaller open-weight gpt-oss-20b. Listed on the public catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) as a "Reasoning LLM" with Function calling: Yes, priced \u20AC0.04 in / \u20AC0.15 out per Mtoken \u2014 consistent with this id's per-token USD pricing on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200), which also supplies contextWindow/maxOutputTokens. Not individually probed; roster-verified fallback.`},"Qwen3.6-27B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.47,output:3.19},vision:!0,status:"production",description:`Qwen3.6-27B, listed on the public catalog card as "Visual LLM (New)" with Vision: Yes and Function calling: Yes (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28), priced \u20AC0.4 in / \u20AC2.7 out per Mtoken there \u2014 consistent with this id's per-token USD pricing on the live, unauthenticated GET /v1/models (2026-09-28, HTTP 200), which also supplies contextWindow/maxOutputTokens. Not individually probed; roster-verified fallback. No image-input wire format is documented, so it is not set as models.visionModel.`},"Qwen3.8-27B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.47,output:3.19},vision:!0,status:"production",description:`Qwen3.8-27B, a newer sibling of Qwen3.6-27B on the same catalog card, same "Visual LLM (New)" row: Vision: Yes, Function calling: Yes, \u20AC0.4 in / \u20AC2.7 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Qwen3.5-397B-A17B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.71,output:4.25},vision:!0,status:"production",description:`Qwen3.5-397B-A17B, the largest model in this roster (397B-parameter MoE, ~17B active). Catalog card: "Visual LLM (New)", Vision: Yes, Function calling: Yes, \u20AC0.6 in / \u20AC3.6 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Qwen3.5-9B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.12,output:.18},vision:!0,status:"production",description:`Qwen3.5-9B, the smallest of the Qwen3.x "Visual LLM (New)" row: Vision: Yes, Function calling: Yes, \u20AC0.1 in / \u20AC0.15 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Meta-Llama-3_3-70B-Instruct":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.74,output:.74},vision:!1,status:"production",description:`Meta Llama 3.3 70B Instruct, a plain non-reasoning chat model. Catalog card: "LLM" category, Vision: No, Function calling: Yes, \u20AC0.67 in / \u20AC0.67 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Qwen2.5-VL-72B-Instruct":{contextWindow:32768,maxOutputTokens:32768,pricingPerMTok:{input:1.01,output:1.01},vision:!0,status:"production",description:`Qwen2.5-VL-72B-Instruct \u2014 a dedicated vision-language model ("VL"). Catalog card: "Visual LLM" category, Vision: Yes, Function calling: No, \u20AC0.91 in / \u20AC0.91 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 the only model in this roster the vendor's own catalog explicitly marks Vision: Yes together with a specific, non-reasoning-family name, so it is set as models.visionModel. No image wire format (base64 vs. URL, content-parts shape) is documented, and no image request was sent (credential-free). Pricing/context/output-cap consistent with the live GET /v1/models (2026-09-28). Not individually probed; roster-verified.`},"Qwen3-Coder-30B-A3B-Instruct":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.07,output:.26},vision:!1,status:"production",description:`Qwen3-Coder-30B-A3B-Instruct \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200: id, context_length=262144, max_completion_tokens=262144, USD pricing) but not yet on the public marketing catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, checked 2026-09-28 \u2014 that page lists 20 of the API's 24 live ids; this is one of the 4 not yet listed there). vision:false follows the model family naming (a code-instruct Qwen3 build, no "VL"/visual designation) rather than an explicit per-model vision flag; tools support is likewise not individually confirmed for this id \u2014 roster-verified only, not capability-probed.`},"Mistral-Small-3.2-24B-Instruct-2506":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.1,output:.31},vision:!1,status:"production",description:`Mistral Small 3.2 24B Instruct (2506 snapshot) \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not yet on the public marketing catalog card (checked 2026-09-28, one of the 4 live ids not yet listed there). Mistral's own upstream Small 3.2 release is text-only in its OVH deployment name (no "VL"/visual designation); vision:false and tools support are not individually confirmed for this id \u2014 roster-verified only.`},"Mistral-7B-Instruct-v0.3":{contextWindow:65536,maxOutputTokens:65536,pricingPerMTok:{input:.11,output:.11},vision:!1,status:"production",description:"Mistral 7B Instruct v0.3 \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not on the public marketing catalog card (checked 2026-09-28). Small, plain instruct model; vision:false and tools support are not individually confirmed for this id \u2014 roster-verified fallback only."},"Mistral-Nemo-Instruct-2407":{contextWindow:65536,maxOutputTokens:65536,pricingPerMTok:{input:.14,output:.14},vision:!1,status:"production",description:"Mistral Nemo Instruct (2407 snapshot) \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not on the public marketing catalog card (checked 2026-09-28). Plain instruct model; vision:false and tools support are not individually confirmed for this id \u2014 roster-verified fallback only."},"Qwen3Guard-Gen-8B":{contextWindow:32768,maxOutputTokens:16384,pricingPerMTok:{input:0,output:0},vision:!1,status:"preview",description:'Qwen3Guard-Gen-8B \u2014 a moderation/safety classifier, not a general-purpose chat model. Catalog card: "LLM Guard (Beta)" category, priced Free (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 the live GET /v1/models response (2026-09-28) shows prompt/completion pricing of 0 for this id, confirming it. status is "preview" because the vendor explicitly labels it Beta. Kept out of models.fallbacks/topModels since it answers moderation prompts, not open-ended generation.'},"Qwen3Guard-Gen-0.6B":{contextWindow:32768,maxOutputTokens:16384,pricingPerMTok:{input:0,output:0},vision:!1,status:"preview",description:`Qwen3Guard-Gen-0.6B \u2014 smaller sibling of Qwen3Guard-Gen-8B, same moderation/safety-classifier role. Catalog card: "LLM Guard (Beta)" category, priced Free (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28); the live GET /v1/models response (2026-09-28) confirms 0 pricing for this id. status "preview" per the vendor's own Beta label. Kept out of models.fallbacks/topModels for the same reason as the 8B variant.`}},topModels:["gpt-oss-120b","gpt-oss-20b","Qwen3.6-27B","Qwen3.8-27B","Qwen3.5-397B-A17B","Qwen3.5-9B","Meta-Llama-3_3-70B-Instruct","Qwen2.5-VL-72B-Instruct","Mistral-Small-3.2-24B-Instruct-2506"],visionModel:"Qwen2.5-VL-72B-Instruct"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:403,pattern:"Authentication Failed",class:"authentication",message:"Invalid or revoked OVHcloud AI Endpoints access token. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://www.ovhcloud.com/en/public-cloud/ai-endpoints/",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:["1. Visit: https://www.ovhcloud.com/en/public-cloud/ai-endpoints/ and click Start now, which signs you in to (or creates) an OVHcloud Public Cloud manager account","2. In the manager, open Public Cloud > your project > AI & Machine Learning > AI Endpoints, and add a payment method to the project \u2014 OVHcloud states that projects in Discovery mode (no payment method) cannot use the service","3. Create an AI Endpoints API access token in that section; it is shown only once, so store it yourself, and note it can be given an expiration date and revoked","4. Set {apiKeyEnvVar} in your .env file (the vendor's own docs name this exact variable)"],description:`OpenAI-compatible endpoint at https://oai.endpoints.kepler.ai.cloud.ovh.net/v1, documented as "compatible with the OpenAI specifications" (docs.ovhcloud.com/en/guides/public-cloud/ai-machine-learning/ai-endpoints-getting-started). Several models (both Qwen3Guard classifiers, stable-diffusion-xl, the four NVIDIA Riva TTS voices) are billed at \u20AC0/free, but the account itself requires a payment method on the Public Cloud project before any API key can be used \u2014 OVHcloud's own docs: "projects in Discovery mode (without a payment method) cannot use the service." A very limited anonymous tier also exists (2 requests/minute per IP per model, undocumented auth shape) but is not what {apiKeyEnvVar} configures. Authenticated rate limit is documented as 400 requests/minute per project per model; over that returns HTTP 429. This catalog entry covers only the chat-completions models; OVHcloud AI Endpoints also serves speech-to-text (Whisper), text-to-speech (NVIDIA Riva), image generation (Stable Diffusion XL) and embeddings (bge-m3, bge-multilingual-gemma2, Qwen3-Embedding-8B) models on the same platform, which are out of scope for this Tier-2 chat-completions integration.`},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/models \u2014 24 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),WAe,kNr=E({"src/lib/providers/catalog/parasail.json"(){WAe={$schema:"./provider-catalog.schema.json",id:"parasail",displayName:"Parasail",aliases:[],tier:2,wire:{baseURL:"https://api.parasail.io/v1"},models:{default:"parasail-llama-33-70b-fp8",fallbacks:["parasail-llama-4-maverick-instruct-fp8","parasail-gpt-oss-120b","parasail-gpt-oss-20b","parasail-deepseek-v4-flash","parasail-deepseek-v4-pro","parasail-kimi-k3","parasail-glm-52","parasail-qwen3p5-35b-a3b","parasail-qwen25-vl-72b-instruct","parasail-gemma3-27b-it","parasail-minimax-m3"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"parasail-llama-33-70b-fp8":{contextWindow:131072,maxOutputTokens:16384,pricingPerMTok:{input:.22,output:.5,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink default. Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Llama 3.3 70B (FP8)": context window 131,072, max output 16,384, quantization FP8, $0.22 input / $0.50 output / $0.11 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice. The Chat Completions guide (https://docs.parasail.io/parasail-docs/guides/chat-completions.md) uses model="parasail-llama-33-70b-fp8" in its example.'},"parasail-llama-4-maverick-instruct-fp8":{contextWindow:524288,maxOutputTokens:32768,pricingPerMTok:{input:.35,output:1,cachedInput:.17},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Llama 4 Maverick (FP8)": context window 524,288, max output 32,768, quantization FP8, $0.35 input / $1.00 output / $0.17 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice.'},"parasail-gpt-oss-120b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.1,output:.75,cachedInput:.055},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "gpt-oss-120b": context window 131,072, max output 131,072, quantization FP4, $0.10 input / $0.75 output / $0.055 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. The Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) has sections headed "GPT-OSS reasoning control" and "Structured outputs with GPT-OSS".'},"parasail-gpt-oss-20b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.03,output:.15,cachedInput:.02},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "gpt-oss-20b": context window 131,072, max output 131,072, quantization FP4, $0.03 input / $0.15 output / $0.02 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. The Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) has sections headed "GPT-OSS reasoning control" and "Structured outputs with GPT-OSS".'},"parasail-deepseek-v4-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.14,output:.28,cachedInput:.07},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "DeepSeek V4 Flash": context window 1,048,576, max output 1,048,576, quantization FP8, $0.14 input / $0.28 output / $0.07 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-deepseek-v4-pro":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:1.74,output:3.48,cachedInput:.1},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "DeepSeek V4 Pro": context window 1,048,576, max output 1,048,576, quantization FP8, $1.74 input / $3.48 output / $0.10 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-kimi-k3":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Kimi K3": context window 1,048,576, max output 1,048,576, quantization FP4, $3.00 input / $15.00 output / $0.30 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-glm-52":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "GLM-5.2": context window 262,144, max output 262,144, quantization FP4, $1.40 input / $4.40 output / $0.26 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-qwen3p5-35b-a3b":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.15,output:1,cachedInput:.05},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Qwen3.5 35B-A3B": context window 262,144, max output 262,144, quantization FP8, $0.15 input / $1.00 output / $0.05 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. The Chat Completions example in the Tool/Function Calling guide uses model="parasail-qwen3p5-35b-a3b".'},"parasail-qwen25-vl-72b-instruct":{contextWindow:128e3,maxOutputTokens:128e3,pricingPerMTok:{input:.8,output:1,cachedInput:.4},vision:!0,status:"production",description:`Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Qwen2.5-VL 72B": context window 128,000, max output 128,000, quantization FP8, $0.80 input / $1.00 output / $0.40 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). The Multi-Modal guide (https://docs.parasail.io/parasail-docs/guides/multi-modal.md) says "Below is an example using Qwen2.5-VL 72 B model with Parasail's serverless API." and sends an image_url content part with model="parasail-qwen25-vl-72b-instruct", hence vision is true. The Tool/Function Calling guide says it "also emits tool calls, but only reliably with" tool_choice="required".`},"parasail-gemma3-27b-it":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.08,output:.45,cachedInput:.04},vision:!1,status:"production",description:`Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Gemma 3 27B": context window 131,072, max output 131,072, quantization FP8, $0.08 input / $0.45 output / $0.04 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice. The Tool/Function Calling guide names it among models that "don't support the tools parameter today".`},"parasail-minimax-m3":{contextWindow:1048576,maxOutputTokens:524288,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "MiniMax M3": context window 1,048,576, max output 524,288, quantization FP8, $0.30 input / $1.20 output / $0.06 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'}},topModels:["parasail-llama-33-70b-fp8","parasail-llama-4-maverick-instruct-fp8","parasail-gpt-oss-120b","parasail-gpt-oss-20b","parasail-deepseek-v4-flash","parasail-deepseek-v4-pro","parasail-kimi-k3","parasail-glm-52","parasail-qwen3p5-35b-a3b","parasail-qwen25-vl-72b-instruct","parasail-gemma3-27b-it","parasail-minimax-m3"],visionModel:"parasail-qwen25-vl-72b-instruct"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:'Parasail answered HTTP 401. Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 401 as "Missing or invalid API key". Check {apiKeyEnvVar}. Create a key: {setupUrl}'},{status:403,class:"authentication",message:'Parasail answered HTTP 403 for model "{model}". Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 403 as "API key lacks access to the requested model or resource".'},{status:404,class:"invalid-model",message:'Parasail answered HTTP 404 for model "{model}". Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 404 as "Model or endpoint not found".'},{status:429,class:"rate-limit",message:'Parasail answered HTTP 429. Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 429 as "Rate limit or quota exceeded\u2014back off and retry".'}],setup:{url:"https://www.saas.parasail.io/keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://www.saas.parasail.io/keys \u2014 the link the Authentication page (https://docs.parasail.io/parasail-docs/api-reference/authentication.md) gives for getting an API key; sign-in was not attempted while building this entry",`2. Create an API key and copy it when it is shown \u2014 the Authentication page steps read "Click Create API Key." and "Copy the key immediately\u2014it's displayed only once."`,`3. Billing as the vendor states it: the Pricing page (https://docs.parasail.io/parasail-docs/billing/pricing.md) says "To use models, create API keys, and access paid platform services, add a credit card. Without a card, you can still view the platform but can't use models or API keys."`,"4. Set {apiKeyEnvVar} in your .env file (the docs' examples use the environment variable PARASAIL_API_KEY)"],description:`Docs-verified only: the vendor's GET https://api.parasail.io/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401), so the 12 model ids come from https://docs.parasail.io/parasail-docs/products/overview/models.md (retrieved 2026-09-29), which lists 33 rows and says "This catalog is generated daily from the live models endpoint.", and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.parasail.io/v1: the Authentication page (https://docs.parasail.io/parasail-docs/api-reference/authentication.md) says "All Parasail API requests use bearer token authentication. The API is fully OpenAI-compatible." and the Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) documents POST https://api.parasail.io/v1/chat/completions with a messages array in and choices[].message.content out. Unauthenticated GETs made 2026-09-29: /models, /chat/completions and the base URL /v1 each answered HTTP 401 with content-type application/json;charset=ISO-8859-1 and the body text "Unauthorized. No bearer token provided.". No POST request was sent. errorRules carry the four statuses 401, 403, 404 and 429 from the Error responses table of the Chat Completions reference. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are placeholders the vendor does not publish as general values; they apply to model ids outside models.catalog and equal the Context window cell of the Qwen2.5-VL 72B row and the Max output cell of the Llama 3.3 70B (FP8) row on the Models page. Each model's status field holds production, a value the catalog schema requires; it is not a vendor statement. Each model's vision field holds false except for parasail-qwen25-vl-72b-instruct, whose true comes from the Multi-Modal guide; the false values are placeholders for a boolean the schema requires, not vendor statements. capabilities.text is true because the Chat Completions reference documents POST /v1/chat/completions. capabilities.streaming is true because that reference has a Streaming section describing stream: true with server-sent events. capabilities.tools is model-dependent because the Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md) lists serverless models that return structured tool calls in a table and names other models that "don't support the tools parameter today". capabilities.structuredOutput is true because the Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md) documents response_format with type json_schema and guided_json, and lists models in a table with a "Guided JSON / JSON Schema" column. These capabilities were not exercised: no key was available. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.embeddings is false because NeuroLink's generic catalog provider does not implement embed(); the Chat Completions reference's endpoint table lists POST /v1/embeddings. capabilities.thinking is false because the entry sets no reasoning request parameter, although the Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) documents model-specific thinking and reasoning controls. billingPolicy holds the schema value no-free-tier because the catalog schema has no unknown value; it is not a vendor statement of signup terms. The Pricing page (https://docs.parasail.io/parasail-docs/billing/pricing.md) states a card requirement, quoted in instruction 3, and the rate-limit table on https://docs.parasail.io/parasail-docs/operate-in-production/limits-and-quotas.md has a product class "Serverless - Free" (RPM column "5"). apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.parasail.io/v1/models answers 401 without a key, so model ids are taken from https://docs.parasail.io/parasail-docs/products/overview/models.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://api.parasail.io/v1/models with no credentials \u2014 HTTP 401, content-type application/json;charset=ISO-8859-1, body text "Unauthorized. No bearer token provided." (plain text, no error code field); the same day unauthenticated GETs of https://api.parasail.io/v1/chat/completions and https://api.parasail.io/v1 answered HTTP 401 with the same body text; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:`public pages https://docs.parasail.io/parasail-docs/billing/pricing.md ("To use models, create API keys, and access paid platform services, add a credit card. Without a card, you can still view the platform but can't use models or API keys.") and https://docs.parasail.io/parasail-docs/operate-in-production/limits-and-quotas.md (rate-limit table product class "Serverless - Free", RPM column "5"); credential-free, no signup performed`},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),KAe,xNr=E({"src/lib/providers/catalog/pareto-inference.json"(){KAe={$schema:"./provider-catalog.schema.json",id:"pareto-inference",displayName:"Pareto Inference",aliases:[],tier:2,wire:{baseURL:"https://api.paretoinference.com/v1"},models:{default:"z-ai/glm-5.3-flash",fallbacks:["z-ai/glm-5.3-flash"],defaultContextWindow:131072,defaultMaxOutputTokens:131072,catalog:{"z-ai/glm-5.3-flash":{maxOutputTokens:131072,pricingPerMTok:{input:.09,output:.3,cachedInput:.018},vision:!1,status:"production",description:"Recommended - the only model Pareto serves; GLM 5.3 Flash (Zhipu/Z.ai), run on Pareto's own GPUs. Confirmed live via an unauthenticated GET https://api.paretoinference.com/v1/models on 2026-09-28 (HTTP 200, exactly one id: z-ai/glm-5.3-flash, owned_by z-ai) - no key used, matching the docs' note that GET /models needs no API key. The docs also document a bare alias, glm-5.3-flash, for the same model (https://docs.paretoinference.com/api-reference, retrieved 2026-09-28). Wire is OpenAI Chat Completions: POST /chat/completions with required model + messages ('Use the OpenAI message format'), the answer read from choices[0].message.content, SSE streaming with text in choices[0].delta.content and tool calls in choices[0].delta.tool_calls, a final usage event when stream_options.include_usage is true, and a terminal 'data: [DONE]' (https://docs.paretoinference.com/api-reference, retrieved 2026-09-28). Output tokens (max_tokens / max_completion_tokens - send only one) range 1-131,072, defaulting to 131,072 when both are omitted - that figure is this entry's defaultMaxOutputTokens and maxOutputTokens. Pareto documents no separate context-length figure anywhere: 'We do not disclose the technical details of our GLM 5.3 Flash serving system' (https://docs.paretoinference.com/how-pareto-works, retrieved 2026-09-28), and no context-window number appears on the quickstart, API reference, how-it-works, errors, or pricing pages, so models.defaultContextWindow above (131,072) reuses the documented output ceiling as a conservative floor rather than a vendor-stated context length - correct it once Pareto publishes one or an authenticated probe reveals one; contextWindow is deliberately left unset on this model entry rather than restating that same undocumented floor as a per-model fact. Pricing from https://docs.paretoinference.com/pricing, retrieved 2026-10-02: $0.09 per 1M input tokens, $0.30 per 1M output tokens, $0.018 per 1M cached-input tokens ('a cache hit is not guaranteed'); GET https://api.paretoinference.com/v1/models reports the same three figures. The 2026-09-28 onboarding recorded $0.03 / $0.10 / $0.006. The vendor prices this model as a discount to OpenRouter's listing, so it can move; recheck before relying on it. tools ('Sends OpenAI function tools') and response_format ('Requests a structured response') are both documented request parameters, but the same request-parameters table hedges both of them - plus tool_choice and logprobs - with 'Model support can differ'; there is no model-specific confirmation for z-ai/glm-5.3-flash and no live probe was possible credential-free, so capabilities.tools is 'model-dependent' here and toolsWithStreaming/structuredOutput/structuredOutputWithTools are left false rather than asserted from a hedged parameter table. reasoning_effort ('Sets the reasoning level') is documented as a plain, unhedged request parameter - unlike tools/response_format/tool_choice/logprobs it carries no 'Model support can differ' caveat - which is the basis for capabilities.thinking: true. Vision/image input and an embeddings endpoint are not documented anywhere on docs.paretoinference.com, so vision stays false and models.visionModel is left unset. No live capability probe was run: this is credential-free onboarding, no Pareto API key was ever created, and no POST request was ever sent to the vendor - see evidence.liveMatrix: null."}},topModels:["z-ai/glm-5.3-flash"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:'Invalid Pareto Inference API key. Check {apiKeyEnvVar}. Pareto documents 401 as "the chat API key is missing, invalid, or no longer active" (unauthenticated GET /models needs no key, so this only affects POST /chat/completions) but publishes no example error body - get or replace a key at {setupUrl}'},{status:429,pattern:"credit_exhausted|credit_insufficient|model_capacity",class:"rate-limit",message:"Pareto rate/credit limit hit for {model}. Documented causes: credit_exhausted (no credits left - buy more), credit_insufficient (held credits below what max_tokens could use - lower max_tokens or buy credits), or model_capacity (the model is at capacity, not an account limit - honor Retry-After). See {setupUrl}"}],setup:{url:"https://paretoinference.com/dashboard",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://paretoinference.com/dashboard and sign in","2. Add a payment card - Pareto has no free tier; a card and prepaid credits are required before a key is issued (https://docs.paretoinference.com/pricing)","3. Buy prepaid credits, then create your API key from the dashboard","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible Chat Completions endpoint at https://api.paretoinference.com/v1, serving exactly one hosted model - z-ai/glm-5.3-flash (GLM 5.3 Flash), also reachable via the documented alias glm-5.3-flash - on Pareto's own GPUs. No free tier: a payment card and prepaid credits are required before a key is issued. Pareto offers zero data retention (ZDR) and does not keep request content after a request finishes."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.paretoinference.com/v1/models - 1 model; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),JAe,ANr=E({"src/lib/providers/catalog/perplexity.json"(){JAe={$schema:"./provider-catalog.schema.json",id:"perplexity",displayName:"Perplexity",aliases:["pplx"],tier:2,wire:{baseURL:"https://api.perplexity.ai"},models:{default:"sonar",fallbacks:["sonar","sonar-pro","sonar-reasoning","sonar-reasoning-pro","sonar-deep-research"],defaultContextWindow:127e3,defaultMaxOutputTokens:4096,catalog:{sonar:{contextWindow:127e3,pricingPerMTok:{input:1,output:1},vision:!1,status:"production",description:"Recommended - Sonar with web grounding"},"sonar-pro":{contextWindow:2e5,pricingPerMTok:{input:3,output:15},vision:!1,status:"production",description:"Better reasoning"},"sonar-reasoning":{contextWindow:127e3,pricingPerMTok:{input:1,output:5},vision:!1,status:"production",description:"Explicit reasoning traces"},"sonar-reasoning-pro":{contextWindow:127e3,pricingPerMTok:{input:2,output:8},vision:!1,status:"production",description:"Flagship reasoning + web"},"sonar-deep-research":{contextWindow:2e5,pricingPerMTok:{input:2,output:8},vision:!1,status:"production",description:"Long-form research with citations"}},topModels:["sonar","sonar-pro","sonar-reasoning","sonar-reasoning-pro","sonar-deep-research"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Invalid API key|Authentication",class:"authentication",message:"Invalid Perplexity API key. Get one at https://www.perplexity.ai/settings/api"}],setup:{url:"https://www.perplexity.ai/settings/api",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://www.perplexity.ai/settings/api","2. Sign in to your Perplexity account","3. Create a new API key (Sonar tier)","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-28",method:"transcribed from pre-migration TS catalog"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),XAe,CNr=E({"src/lib/providers/catalog/poolside.json"(){XAe={$schema:"./provider-catalog.schema.json",id:"poolside",displayName:"Poolside",aliases:[],tier:2,wire:{baseURL:"https://inference.poolside.ai/v1"},models:{default:"poolside/laguna-s-2.1",fallbacks:["poolside/laguna-s-2.1"],defaultContextWindow:128e3,defaultMaxOutputTokens:32768,catalog:{"poolside/laguna-s-2.1":{vision:!1,status:"production",description:'NeuroLink default. Vendor statements about Laguna S 2.1 on https://docs.poolside.ai/get-started/supported-models.md (retrieved 2026-09-29): Parameters "118B total, 8B active per token"; Context window "1M tokens"; Model type "Mixture of Experts"; Modality "Text-to-text"; Reasoning "Native reasoning with thinking on or off per request". The same page says "Model availability, provider-specific variants, and model IDs can vary by access method." https://docs.poolside.ai/release-notes/models.md (retrieved 2026-09-29) says Laguna S 2.1 is "built for agentic coding and long-horizon work" and "is text-to-text and does not support vision inputs", so vision is false. The id poolside/laguna-s-2.1 is the model id in the quickstart on https://docs.poolside.ai/api/overview.md and in the examples on https://docs.poolside.ai/api/openai-api-examples.md, which use base URL https://inference.poolside.ai/v1.'}},topModels:["poolside/laguna-s-2.1"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Poolside rejected the request's authentication (HTTP 401; an unauthenticated GET of /models answered the plain-text body "No Authorization header provided", and https://docs.poolside.ai/api/overview.md says "Send it as a Bearer token in the Authorization header"). Check {apiKeyEnvVar}. Create a key: {setupUrl}`},{status:403,class:"authentication",message:'Poolside returned HTTP 403 (https://docs.poolside.ai/cli/troubleshooting.md lists "403 Forbidden: please check the api-key you provided" under "Fix API key or token errors"). Check {apiKeyEnvVar}. Create a key: {setupUrl}'}],quirks:{replayReasoningContent:!0},setup:{url:"https://platform.poolside.ai/",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://platform.poolside.ai/ \u2014 https://docs.poolside.ai/get-started/log-in.md says of the Poolside Platform option: "sign in to Poolside Platform or create an account"','2. Create an API key: https://docs.poolside.ai/api/overview.md says "Sign in to Poolside Platform, open the API Keys tab, and click New key."','3. Billing as the vendor states it: https://docs.poolside.ai/get-started/log-in.md describes the Poolside Platform option as "free developer access" and says "The API key created through Poolside Platform is for Poolside-hosted inference."','4. Authentication is HTTP Bearer: https://docs.poolside.ai/api/overview.md shows the header "Authorization: Bearer <api-key>" and exports the key as POOLSIDE_API_KEY, the name NeuroLink reads. Set {apiKeyEnvVar} in your .env file'],description:`Docs-verified only: the vendor's GET https://inference.poolside.ai/v1/models needs a key (it answers HTTP 401 without one), so the model id comes from the Poolside API page (https://docs.poolside.ai/api/overview.md, retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://inference.poolside.ai/v1: the overview page opens with "Call Poolside models through an OpenAI-compatible API.", its Access methods table lists "Poolside-hosted inference" with base URL https://inference.poolside.ai/v1, its Available endpoints table lists GET /v1/models and POST /v1/chat/completions, and its quickstart shows the OpenAI Python SDK and the OpenAI TypeScript SDK with base URL "https://inference.poolside.ai/v1". Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 with content-type text/plain and the body "No Authorization header provided"; /chat/completions answered HTTP 405 with an empty body. No POST request was sent. errorRules: the 401 rule is built from the observed /models response (a plain-text body, so the rule matches the status code); the 403 rule is built from https://docs.poolside.ai/cli/troubleshooting.md, which lists "403 Forbidden: please check the api-key you provided" under "Fix API key or token errors". capabilities.streaming is true because https://docs.poolside.ai/api/openai-api-examples.md documents setting stream to true to receive "a series of chunks returned as server-sent events". capabilities.tools is true because that page's "Extend models with tools" section says "You can extend a model's capabilities by providing tools that it can call during a conversation." and shows a tools array and a returned tool_calls array on poolside/laguna-s-2.1 against https://inference.poolside.ai/v1/chat/completions. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.structuredOutput is false because no request using response_format was sent. capabilities.embeddings is false; the overview page's Available endpoints table lists two endpoints, GET /v1/models and POST /v1/chat/completions. capabilities.thinking is false because this entry sends no thinking request parameter; https://docs.poolside.ai/api/openai-api-examples.md documents setting chat_template_kwargs.enable_thinking to false to turn thinking off for a request. quirks.replayReasoningContent is set because https://docs.poolside.ai/api/openai-api-examples.md says "For agentic workflows with Poolside models, preserve reasoning_content from assistant responses when you include those responses in follow-up requests." and "Dropping previous reasoning content can prevent the model from reasoning in later steps."; no multi-turn request was sent. models.defaultContextWindow (128000) is a placeholder, not a vendor figure; it applies to poolside/laguna-s-2.1 because the catalog entry sets no contextWindow for it. models.defaultMaxOutputTokens (32768) equals the max_tokens default in the Control generation table on https://docs.poolside.ai/api/openai-api-examples.md; it is not a per-model limit. The model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy holds free-tier, one of the three values the catalog schema allows (free-tier, free-with-card, no-free-tier). Vendor wording, from https://docs.poolside.ai/get-started/log-in.md: the Poolside Platform option is for "free developer access", and "The API key created through Poolside Platform is for Poolside-hosted inference." apiKeyFormat is null, so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://inference.poolside.ai/v1/models answers 401 without a key, so model ids are taken from https://docs.poolside.ai/api/overview.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://inference.poolside.ai/v1/models with no credentials \u2014 HTTP 401, content-type text/plain; charset=utf-8, plain-text body "No Authorization header provided"; the body is not JSON and has no code field, so no code is recorded; the same day an unauthenticated GET https://inference.poolside.ai/v1/chat/completions answered HTTP 405 with an empty body; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:'public page https://docs.poolside.ai/get-started/log-in.md (the Poolside Platform login option described as "free developer access"; "The API key created through Poolside Platform is for Poolside-hosted inference."); https://platform.poolside.ai/ opened and shows the title Poolside Platform; credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),YAe,INr=E({"src/lib/providers/catalog/prime-intellect.json"(){YAe={$schema:"./provider-catalog.schema.json",id:"prime-intellect",displayName:"Prime Intellect",aliases:[],tier:2,wire:{baseURL:"https://api.pinference.ai/api/v1",apiKeyFallbackEnvVars:["PRIME_API_KEY"]},models:{default:"openai/gpt-4.1-mini",fallbacks:["openai/gpt-4.1","anthropic/claude-sonnet-4.5","meta-llama/llama-3.3-70b-instruct"],defaultContextWindow:131072,defaultMaxOutputTokens:16384,catalog:{"openai/gpt-4.1-mini":{contextWindow:1047576,maxOutputTokens:32768,pricingPerMTok:{input:.4,output:1.6},vision:!0,status:"production",description:`Recommended default. Prime Intellect's own Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) lists this model as "Fast, cost-effective (default)" and uses it as the default model of its inference-backed evaluation command. No Prime-trained model appears on this roster (119 of 125 entries are gateway-routed and the other 6 are third-party models served on Prime infrastructure), so this is the model its docs designate as the default, not a Prime-trained flagship. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,047,576, max_output_tokens 32,768, $0.4/$1.6 per MTok input/output; input modalities image/text/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"openai/gpt-4.1":{contextWindow:1047576,maxOutputTokens:32768,pricingPerMTok:{input:2,output:8},vision:!0,status:"production",description:`Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Higher quality" than the default. Fallback. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,047,576, max_output_tokens 32,768, $2/$8 per MTok input/output; input modalities image/text/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"anthropic/claude-sonnet-4.5":{contextWindow:1e6,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15},vision:!0,status:"production",description:`Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Strong reasoning". Fallback. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,000,000, max_output_tokens 64,000, $3/$15 per MTok input/output; input modalities text/image/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"meta-llama/llama-3.3-70b-instruct":{contextWindow:131072,maxOutputTokens:16384,pricingPerMTok:{input:1.04,output:2.253},vision:!1,status:"production",description:'Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Open-weight, balanced". Fallback. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 131,072, max_output_tokens 16,384, $1.04/$2.253 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false.'},"google/gemini-2.5-flash":{contextWindow:1048576,maxOutputTokens:65535,pricingPerMTok:{input:.3,output:2.5},vision:!0,status:"production",description:`Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Fast multimodal". Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,048,576, max_output_tokens 65,535, $0.3/$2.5 per MTok input/output; input modalities file/image/text/audio/video; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"Qwen/Qwen3-235B-A22B-Instruct-2507":{contextWindow:262144,maxOutputTokens:235929,pricingPerMTok:{input:.25,output:1},vision:!1,status:"production",description:`The Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) lists a lowercase id, qwen/qwen3-235b-a22b-instruct-2507, as "Large MoE model"; that lowercase id is not on today's roster, so the id here is copied character for character from the roster's differently cased entry. The roster's max_output_tokens figure is reported as served. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 262,144, max_output_tokens 235,929, $0.25/$1 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false.`},"z-ai/glm-5.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`Serving "hosted" on today's roster \u2014 the vendor's OpenAPI spec (https://api.pinference.ai/openapi.json) defines that value as models served on Prime infrastructure. Roster display_name "GLM 5.3"; reasoning is marked mandatory with default effort "max". Its supported_parameters list tools and tool_choice but not response_format or structured_outputs. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,048,576, max_output_tokens 131,072, $1.4/$4.4 per MTok input/output ($0.26 cached-input read); input modalities text; supported_parameters include tools, tool_choice; serving hosted. No image input modality on the roster, so vision is false.`},"openai/gpt-5.4-mini":{contextWindow:4e5,maxOutputTokens:128e3,pricingPerMTok:{input:.75,output:4.5},vision:!0,status:"production",description:"Named in the Troubleshooting page's direct-API examples (docs.primeintellect.ai/inference/troubleshooting). Roster reasoning efforts: xhigh/high/medium/low/none, not mandatory. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 400,000, max_output_tokens 128,000, $0.75/$4.5 per MTok input/output; input modalities file/image/text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent)."},"openai/gpt-oss-120b":{contextWindow:131072,maxOutputTokens:65536,pricingPerMTok:{input:.35,output:.75},vision:!1,status:"production",description:'Roster-listed only. Reasoning is marked mandatory (default effort "medium"). Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 131,072, max_output_tokens 65,536, $0.35/$0.75 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false.'},"deepseek/deepseek-v4-flash":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.44,output:1.32},vision:!1,status:"production",description:"Roster-listed only. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,048,576, max_output_tokens 131,072, $0.44/$1.32 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false."},"anthropic/claude-haiku-4.5":{contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:5},vision:!0,status:"production",description:"Roster-listed only. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 200,000, max_output_tokens 64,000, $1/$5 per MTok input/output; input modalities text/image/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent)."},"Qwen/Qwen3.5-122B-A10B":{pricingPerMTok:{input:.3,output:.9,cachedInput:.27},vision:!1,status:"production",description:`Serving "hosted" (Prime infrastructure) on today's roster. The roster gives it no context_window, max_output_tokens, modalities or supported_parameters, so none are declared here; vision false is the schema's required default, not a vendor statement about image input. Roster-listed only. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): $0.3/$0.9 per MTok input/output ($0.27 cached-input read); serving hosted.`}},topModels:["openai/gpt-4.1-mini","openai/gpt-4.1","anthropic/claude-sonnet-4.5","meta-llama/llama-3.3-70b-instruct","google/gemini-2.5-flash","Qwen/Qwen3-235B-A22B-Instruct-2507","z-ai/glm-5.3","openai/gpt-5.4-mini","openai/gpt-oss-120b","deepseek/deepseek-v4-flash","anthropic/claude-haiku-4.5","Qwen/Qwen3.5-122B-A10B"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Authorization header or x-api-key missing|invalid_api_key|Invalid API key",class:"authentication",message:"Invalid or missing Prime Intellect API key. Check {apiKeyEnvVar}. Create a key with the Inference permission enabled at {setupUrl}"}],setup:{url:"https://app.primeintellect.ai/dashboard/tokens",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://app.primeintellect.ai/dashboard/tokens (Settings -> API Keys) and sign in","2. Click Generate New Key and enable the Inference permission \u2014 without it requests fail with authentication errors (https://docs.primeintellect.ai/inference/overview); the key is shown only once, so copy it straight away (https://docs.primeintellect.ai/api-reference/api-keys)","3. Billing is automatic deduction from your Prime Intellect account balance (https://docs.primeintellect.ai/inference/overview); no free tier or trial credit is documented on the pages read, so add funds at https://app.primeintellect.ai/dashboard/billing and confirm current terms before the first call","4. Set {apiKeyEnvVar} in your .env file (PRIME_API_KEY, the variable Prime's own docs use, is also read)"],description:"OpenAI-compatible endpoint at https://api.pinference.ai/api/v1 (docs.primeintellect.ai/inference/overview), a gateway that routes to upstream model providers plus a few models served on Prime infrastructure. The inference host (pinference.ai) differs from the docs and dashboard host (primeintellect.ai); both are confirmed on the vendor's own pages. The catalog schema has no 'unknown' billing value, so no-free-tier here means no free tier is documented, not that the vendor confirmed there is none."},evidence:{rosterVerified:{date:"2026-09-29",method:"unauthenticated GET https://api.pinference.ai/api/v1/models \u2014 125 models; credential-free, no key used",status:200},authProbe:{date:"2026-09-29",method:'unauthenticated GET https://api.pinference.ai/api/v1/models/openai/gpt-4.1-mini with no credentials \u2014 401 {"detail":"Authorization header or x-api-key missing", ...}; only the missing-credential shape was observed, the invalid-key shape (error.code invalid_api_key) is from docs.primeintellect.ai/api-reference/inference-models and was not probed; credential-free, no key used',status:401},billingProbe:{date:"2026-09-29",method:'public page https://docs.primeintellect.ai/inference/overview \u2014 "Automatic deduction from your Prime Intellect account balance"; https://docs.primeintellect.ai/inference/troubleshooting documents an insufficient_funds error; no free tier stated; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),ZAe,RNr=E({"src/lib/providers/catalog/reka.json"(){ZAe={$schema:"./provider-catalog.schema.json",id:"reka",displayName:"Reka AI",aliases:[],tier:2,wire:{baseURL:"https://api.reka.ai/v1"},models:{default:"reka-flash",fallbacks:["reka-edge"],defaultContextWindow:16384,defaultMaxOutputTokens:4096,catalog:{"reka-flash":{pricingPerMTok:{input:.8,output:2},vision:!0,tools:!0,status:"production",description:`NeuroLink default. Listed as reka-flash in the baseline model table on https://docs.reka.ai/chat/models.md (intro: "Our baseline models always available for public access are:") and named as the model in the code examples on https://docs.reka.ai/chat/overview.md, https://docs.reka.ai/chat/function-calling.md and https://docs.reka.ai/chat/api-reference/create.md (retrieved 2026-09-29). https://docs.reka.ai/pricing.md has a row named "Reka Flash" described as "Fast and cost-efficient model for most tasks" with $0.80 under "Input Tokens (per 1M)" and $2.00 under "Output Tokens (per 1M)"; https://docs.reka.ai/chat/models.md ends with "For full listing of models and pricing, see the Reka API Pricing page". tools is true because https://docs.reka.ai/chat/function-calling.md said "Currently, only Reka Flash supports function calling." on 2026-09-29. That sentence is gone: on 2026-10-17 https://docs.reka.ai/chat/function-calling.md redirects to https://docs.reka.ai/chat/overview.md, and neither it nor the Models table at https://docs.reka.ai/chat/models.md uses the id reka-flash (they name reka-flash-3), so this flag and this entry are not confirmed against the current docs and are kept as they were pending a check with a key. Vision is true: the first curl example on https://docs.reka.ai/overview.md sends an image_url content part to model "reka-flash", and the Quickstart's "First request" example (https://docs.reka.ai/quickstart.md) carries the comment '# or "reka-flash"' beside an image_url request. No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply.`},"reka-edge":{pricingPerMTok:{input:.1,output:.1},vision:!0,tools:!0,status:"production",description:`Listed as "reka-edge (or reka-edge-2603)" in the baseline model table on https://docs.reka.ai/chat/models.md and on https://docs.reka.ai/quickstart.md (retrieved 2026-09-29). The Quickstart's "First request" example sends an image_url content part to model "reka-edge", and the example response on https://docs.reka.ai/chat/api-reference/get.md lists the id "reka-edge". https://docs.reka.ai/pricing.md has a row named "Reka Edge" described as "Compact model ideal for on-device execution" with $0.10 under "Input Tokens (per 1M)" and $0.10 under "Output Tokens (per 1M)". tools is true because reka-edge is the alias of reka-edge-2603, which the current docs mark as tool-capable (see the reka-edge-2603 entry); it was false while https://docs.reka.ai/chat/function-calling.md said "Currently, only Reka Flash supports function calling." (retrieved 2026-09-29), a sentence that no longer appears. The Models table at https://docs.reka.ai/chat/models.md (retrieved 2026-10-17) has no row named reka-edge, only reka-edge-2603, so whether the API still serves the bare alias is not confirmed. No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply.`},"reka-edge-2603":{pricingPerMTok:{input:.1,output:.1},vision:!0,tools:!0,status:"production",description:'Tools are supported per Reka\'s current docs (retrieved 2026-10-17). The Models table at https://docs.reka.ai/chat/models.md has the header | Model ID | Context | Input | Tools | Structured outputs | Reasoning | and the row | `reka-edge-2603` | 16k | Text, image, video | Yes | Yes | No |, so the Tools column is Yes. The GET /v1/models example on the same page shows "supported_features": ["tools", "structured_outputs", "streaming"] for reka-edge-2603, and the page says "`GET /v1/models` is the authoritative list". The Tools section of https://docs.reka.ai/chat/overview.md (https://docs.reka.ai/chat/function-calling.md redirects there) says "Models that list `tools` in their `supported_features` accept OpenAI-format `tools` and `tool_choice`." and its example request calls model="reka-edge-2603" with a tools list. This replaces tools: false, which rested on the sentence "Currently, only Reka Flash supports function calling." on https://docs.reka.ai/chat/function-calling.md (retrieved 2026-09-29); that sentence no longer appears. Not wire-verified: no API key was used. Vision is true because the Models table lists "Text, image, video" as the input. Prices are those of the "Reka Edge" row of https://docs.reka.ai/pricing.md (retrieved 2026-09-29) and match the GET /v1/models example\'s "prompt": "0.0000001" and "completion": "0.0000001" US dollars per token. Earlier evidence (retrieved 2026-09-29): named in the same table row as reka-edge, "reka-edge (or reka-edge-2603)", on https://docs.reka.ai/chat/models.md and https://docs.reka.ai/quickstart.md. No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply.'},"reka-flash-3":{pricingPerMTok:{input:.1,output:.2},vision:!1,tools:!1,status:"production",description:'Listed in the Models table at https://docs.reka.ai/chat/models.md (retrieved 2026-10-17) with the row | `reka-flash-3` | 64k | Text | No | Yes | Yes |, so input is text only (vision is false) and the Tools column is No (tools is false), the entry that keeps the per-model withhold path covered. Prices are the "$0.10/M input tokens" and "$0.20/M output tokens" shown on its card at https://developer.reka.ai/models (retrieved 2026-10-17), which the Models page names as the source of current prices. The Models page says 64k for the context, a rounded figure, so no context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply. This is a different model from the reka-flash entry above, whose id no longer appears in the current Models table.'}},topModels:["reka-flash","reka-edge","reka-edge-2603"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Reka rejected the API key (HTTP 401; https://docs.reka.ai/errors.md lists 401 as authentication_error with the client action "Ensure that you're using a valid Reka API key"). Check {apiKeyEnvVar}. Get one at {setupUrl}`},{status:429,class:"rate-limit",message:'Reka rate limit (HTTP 429; https://docs.reka.ai/errors.md lists 429 as rate_limit_error with the client action "Wait until your rate limit is restored and retry, or upgrade your API tier for higher limits").'},{pattern:"P001|Insufficient Balance",class:"provider",message:`Reka reported an insufficient balance (https://docs.reka.ai/resources/faqs.md: "If your balance hits $0, you'll see P001: Insufficient Balance."). The same page says "Add credits to your account before making requests."`},{status:500,class:"provider",message:'Reka returned HTTP 500 (https://docs.reka.ai/errors.md lists 500 as server_error with the client action "Retry with backoff. If this persists, contact Reka at contact@reka.ai").'}],quirks:{authHeaderStyle:"x-api-key"},setup:{url:"https://platform.reka.ai/sign-up",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://platform.reka.ai/sign-up (the "Start for free" and "Get started" links on https://platform.reka.ai/pricing point to /sign-up). The Quickstart (https://docs.reka.ai/quickstart.md) says "Create a free account on the Reka Platform to access your API key." and the FAQ (https://docs.reka.ai/resources/faqs.md) answers "How do I get an API key?" with "Go to Platform, > API Keys to generate or copy your key."','2. Billing as the vendor states it: https://docs.reka.ai/pricing.md says "Get started with no upfront costs."; the FAQ (https://docs.reka.ai/resources/faqs.md) answers "Do I need to pre-pay?" with "Yes. Add credits to your account before making requests." and says the balance error reads "P001: Insufficient Balance" when the balance hits $0',`3. Authentication: the vendor's REST examples send the header X-Api-Key (https://docs.reka.ai/chat/overview.md) and the OpenAPI file https://docs.reka.ai/openapi/api-reference.yaml declares one security scheme, an apiKey in the header X-Api-Key; the OpenAI Python SDK examples pass api_key="YOUR_API_KEY" to the client (https://docs.reka.ai/quickstart.md)`,"4. Set {apiKeyEnvVar} in your .env file"],description:'Docs-verified only: the vendor\'s GET https://api.reka.ai/v1/models needs a key (it answers HTTP 401 without one), so the four model ids come from https://docs.reka.ai/chat/models.md (retrieved 2026-09-29 for the first three and 2026-10-17 for reka-flash-3) and the roster has not been checked; the entry is not yet live-verified. Endpoint https://api.reka.ai/v1: the Quickstart (https://docs.reka.ai/quickstart.md) says "our API is fully OpenAI-compatible" and shows the OpenAI Python SDK with base_url "https://api.reka.ai/v1"; https://docs.reka.ai/chat/overview.md shows POST https://api.reka.ai/v1/chat/completions with a messages array and reads the reply from response.choices[0].message.content. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 with the JSON body {"error":{"message":"Unauthorized","type":"authentication_error","code":null,"param":null}}; /chat/completions answered HTTP 405 with header allow: POST and the body {"detail":"Method Not Allowed"}. No POST request was sent. errorRules carry the statuses https://docs.reka.ai/errors.md lists (401 authentication_error, 429 rate_limit_error, 500 server_error) plus a pattern rule on the FAQ\'s "P001: Insufficient Balance" text. capabilities.streaming is true because https://docs.reka.ai/chat/overview.md says "The Chat API supports streaming". capabilities.tools is model-dependent because tool support differs per model: the Models table at https://docs.reka.ai/chat/models.md (retrieved 2026-10-17) has a "Tools" column that is Yes for reka-edge-2603 and No for reka-flash-3, and the Tools section of https://docs.reka.ai/chat/overview.md says "Models that list `tools` in their `supported_features` accept OpenAI-format `tools` and `tool_choice`." So the models.catalog entries set tools: true for reka-edge-2603 and its alias reka-edge, and tools: false for reka-flash-3 (see CatalogModelSpec.tools), instead of leaving every model to the provider-level model-dependent default. reka-flash keeps tools: true from the sentence "Currently, only Reka Flash supports function calling." (retrieved 2026-09-29), which the current pages no longer carry; that entry is unconfirmed. capabilities.structuredOutput is false: the ChatRequest on https://docs.reka.ai/chat/api-reference/create.md lists messages, model, frequency_penalty, max_tokens, presence_penalty, seed, stop, stream, temperature, tool_choice, tools, top_k and top_p. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.embeddings and capabilities.thinking are false. models.defaultContextWindow (16384) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish; the Chat API reference describes max_tokens as "limited by the model\'s context length. Defaults to 1024." Each model\'s status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy holds free-tier, one of the three values the catalog schema allows (free-tier, free-with-card, no-free-tier). The vendor wording behind it: on https://platform.reka.ai/pricing the Pay as you go tile has a "Start for free" link to /sign-up and the page carries the text "Free credits used"; https://docs.reka.ai/pricing.md says "Get started with no upfront costs."; https://docs.reka.ai/resources/faqs.md answers "Do I need to pre-pay?" with "Yes. Add credits to your account before making requests." apiKeyFormat is null, so NeuroLink\'s key-format check is not applied.'},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.reka.ai/v1/models answers 401 without a key, so model ids are taken from https://docs.reka.ai/chat/models.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"authentication_error",method:`unauthenticated GET https://api.reka.ai/v1/models with no credentials \u2014 HTTP 401, JSON body {"error":{"message":"Unauthorized","type":"authentication_error","code":null,"param":null}}; code records the body's error.type because error.code is null; the same day an unauthenticated GET https://api.reka.ai/v1/chat/completions answered HTTP 405 with header allow: POST and JSON body {"detail":"Method Not Allowed"}; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://docs.reka.ai/resources/faqs.md ("Do I need to pre-pay?" answered "Yes. Add credits to your account before making requests."), https://docs.reka.ai/quickstart.md ("Create a free account on the Reka Platform to access your API key."), https://docs.reka.ai/pricing.md ("Get started with no upfront costs.") and https://platform.reka.ai/pricing (a "Start for free" link and the text "Free credits used"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),QAe,MNr=E({"src/lib/providers/catalog/runinfra.json"(){QAe={$schema:"./provider-catalog.schema.json",id:"runinfra",displayName:"RunInfra",enumTypeName:"RunInfraModels",aliases:[],tier:2,wire:{baseURL:"https://api.runinfra.ai/v1",envOverrides:{apiKey:"RUNINFRA_GATEWAY_KEY"},apiKeyFallbackEnvVars:["RUNINFRA_API_KEY"]},models:{default:"nemotron-3-5-lightning-30b",fallbacks:["nemotron-3-5-lightning-30b"],defaultContextWindow:262144,defaultMaxOutputTokens:262144,catalog:{"nemotron-3-5-lightning-30b":{contextWindow:262144,maxOutputTokens:262144,vision:!1,status:"production",description:"Nemotron 3.5 Lightning 30B on RunInfra Model APIs, the only model this pilot lists. The vendor's copyable examples send exactly nemotron-3-5-lightning-30b as the model; the model page also shows the upstream served name nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16, which is not the id sent. The model page states a 262,144-token context window and 262,144 maximum generated output tokens. The chat-completions reference caps one request's output at the model's remaining context (its window minus your prompt) and clamps oversized values, so 262,144 output is a ceiling, not capacity beside a full prompt. This pilot declares text generate/stream only; tools, structured output, thinking and vision are not declared, which bounds this pilot and is not a claim the vendor lacks them. Availability is a runtime field and is unverified."}}},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"RunInfra answered 401. The vendor's authentication page lists 401 Invalid API key and 401 API key has expired. Check {apiKeyEnvVar} and the workspace API key at {setupUrl}."}],setup:{url:"https://runinfra.ai/settings/api-keys",apiKeyFormat:null,billingPolicy:"promotional-credit",instructions:["1. Sign in to RunInfra and create a workspace API key under Settings > API keys at https://runinfra.ai/settings/api-keys. The vendor's authentication page says to send a workspace API key in an Authorization: Bearer header.","2. nemotron-3-5-lightning-30b is usage-priced per token in USD (the model page lists input, cached input and output rates per 1M tokens; rates may change). The vendor's plans page lists prepaid credits worth $1 each with a $5 minimum top-up, and a $1 signup credit, once per account, that it says never expires. Whether your account holds that credit is unverified, and this is not a free tier.","3. Set {apiKeyEnvVar}. The vendor's curl and SDK examples name RUNINFRA_GATEWAY_KEY, and its export block also sets RUNINFRA_API_KEY to the same value, which is read as a fallback. The key is sent as Authorization: Bearer to https://api.runinfra.ai/v1/chat/completions.","4. The vendor's chat-completions reference says a hosted model can be temporarily paused and then answers 503 with code hosted_model_paused. Availability of nemotron-3-5-lightning-30b to your account is unverified. The declared scope is text generate and stream with nemotron-3-5-lightning-30b."],description:"RunInfra text/stream pilot with a usage-priced nemotron-3-5-lightning-30b default. The vendor's plans page lists a one-time signup credit; no account entitlement, roster, live inference, availability or delivery is verified."},evidence:{rosterVerified:{date:"2026-10-12",code:"VENDOR_DOCS_ONLY_NOT_ROSTER_VERIFIED",method:"Public vendor page GETs only: runinfra.ai/inference-api/nemotron-3-5-lightning-30b, docs/tools-sdks/openai-compatibility, docs/api-reference/chat-completions.md and authentication.md, docs/introduction/plans.md and docs/changelog.md. No GET /v1/models, credentials, account or inference ran; this legacy field does not assert roster verification."},billingProbe:{date:"2026-10-12",code:"PUBLIC_DOCS_ONLY_ACCOUNT_NOT_TESTED",method:"Public documentation only: the model page lists USD pay-per-token rates and the plans page lists $1 credits, a $5 minimum top-up and a $1 signup credit once per account that never expires. No account was created, no credit was checked and no top-up was tried."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1983"}}}}),e1e,PNr=E({"src/lib/providers/catalog/sakana-ai.json"(){e1e={$schema:"./provider-catalog.schema.json",id:"sakana-ai",displayName:"Sakana AI",aliases:["sakana"],tier:2,wire:{baseURL:"https://api.sakana.ai/v1",apiKeyFallbackEnvVars:["SAKANA_API_KEY"]},models:{default:"fugu",fallbacks:["fugu-ultra","fugu-max","sakana-namazu"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{fugu:{contextWindow:1e6,vision:!0,status:"production",description:`NeuroLink default. Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "The default Fugu model." Fugu overview: "Fugu balances strong performance with low latency, making it the ideal default for everyday work." The Get Started page (https://console.sakana.ai/get-started) uses this id in its Chat Completions curl example ("model":"fugu"). Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu with display_name "Fugu", context_window 1000000 and input_modalities ["text", "image"], hence contextWindow 1000000 and vision true. Pricing page (https://console.sakana.ai/pricing), Fugu table, 1 agent: "You pay only the standard rate for the specific underlying model." Multiple agents: "We never stack model fees. You are charged a single rate based on the top tier model involved." pricingPerMTok is left out.`},"fugu-ultra":{contextWindow:1e6,pricingPerMTok:{input:5,output:30,cachedInput:.5},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "The Fugu Ultra model, defaults to fugu-ultra-v2.0." Fugu Ultra overview: "Fugu Ultra coordinates a deeper pool of expert agents to maximize answer quality on hard, high-stakes problems." Get Started page (https://console.sakana.ai/get-started): "For complex tasks, especially when using fugu-ultra and fugu-cyber, you may need to increase client-side timeouts." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra with display_name "Fugu Ultra v2.0", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-ultra "defaults to fugu-ultra-v2.0", so the same contextWindow 1000000 and vision true are recorded here. pricingPerMTok is the fugu-ultra-v2.0 rate. Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-ultra-v2.0 per 1M tokens." Standard price column: Input $5, Output $30, Cached input $0.50; Context > 272K column: Input $10, Output $45, Cached input $1.00; pricingPerMTok records the Standard price column. The same page says the orchestration tokens "will be counted in the final price of the request."`},"fugu-ultra-v2.0":{contextWindow:1e6,pricingPerMTok:{input:5,output:30,cachedInput:.5},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V2.0 of Fugu Ultra." Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-ultra-v2.0 per 1M tokens." Standard price column: Input $5, Output $30, Cached input $0.50; Context > 272K column: Input $10, Output $45, Cached input $1.00; pricingPerMTok records the Standard price column. The same page says the orchestration tokens "will be counted in the final price of the request." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra with display_name "Fugu Ultra v2.0", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-ultra "defaults to fugu-ultra-v2.0", so the same contextWindow 1000000 and vision true are recorded here.`},"fugu-ultra-v1.1":{contextWindow:1e6,vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.1 of Fugu Ultra." The Get Started page (https://console.sakana.ai/get-started) lists the reasoning effort levels high, xhigh and max for model="fugu-ultra-v1.1". Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra-v1.1 with display_name "Fugu Ultra v1.1", context_window 1000000 and input_modalities ["text", "image"], hence contextWindow 1000000 and vision true.`},"fugu-ultra-v1.0":{contextWindow:1e6,vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.0 of Fugu Ultra, also known as fugu-ultra-20260615." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra-v1.0 with display_name "Fugu Ultra v1.0", context_window 1000000 and input_modalities ["text", "image"], hence contextWindow 1000000 and vision true.`},"fugu-max":{contextWindow:1e6,pricingPerMTok:{input:2,output:6,cachedInput:.25},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "The Fugu Max model, defaults to fugu-max-v1.0." Fugu Max overview: "Fugu Max orchestrates our largest pool of models to push the cost\u2013performance Pareto frontier." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-max with display_name "Fugu Max", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-max "defaults to fugu-max-v1.0", so the same contextWindow 1000000 and vision true are recorded here. pricingPerMTok is the fugu-max-v1.0 rate. Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-max-v1.0 per 1M tokens, regardless of context length." Input $2, Output $6, Cached input $0.25; "web_search and web_fetch are billed at $0.007 per call."`},"fugu-max-v1.0":{contextWindow:1e6,pricingPerMTok:{input:2,output:6,cachedInput:.25},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.0 of Fugu Max, optimized for cost-performance." Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-max-v1.0 per 1M tokens, regardless of context length." Input $2, Output $6, Cached input $0.25; "web_search and web_fetch are billed at $0.007 per call." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-max with display_name "Fugu Max", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-max "defaults to fugu-max-v1.0", so the same contextWindow 1000000 and vision true are recorded here.`},"sakana-namazu":{contextWindow:256e3,pricingPerMTok:{input:.95,output:4,cachedInput:.15},vision:!0,status:"production",description:'Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "Alias that points to the latest version (currently sakana-namazu-v1.0)." Models page, Sakana Namazu tab (https://console.sakana.ai/models?model=sakana-namazu, retrieved 2026-09-29), property table: Model ID sakana-namazu-v1.0, Alias sakana-namazu, Context window "256K tokens" (stored as 256000), Streaming "Supported", Image input "Supported (URL and base64)", Structured output "json_schema and json_object"; the same tab says "Thinking is enabled by default." The Get Started page (https://console.sakana.ai/get-started) says "Sakana Namazu is not included in subscription plans" and that it is "billed purely on a pay-as-you-go (per-token) basis." pricingPerMTok is the sakana-namazu-v1.0 rate. Pricing page (https://console.sakana.ai/pricing): "Token pricing for sakana-namazu-v1.0 per 1M tokens." Input $0.95, Output $4.00, Cached input $0.15; "Thinking tokens are billed at the same rate as output tokens."'},"sakana-namazu-v1.0":{contextWindow:256e3,pricingPerMTok:{input:.95,output:4,cachedInput:.15},vision:!0,status:"production",description:'Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.0 of the Sakana Namazu model. A Japanese-specialized LLM." Models page, Sakana Namazu tab (https://console.sakana.ai/models?model=sakana-namazu, retrieved 2026-09-29), property table: Model ID sakana-namazu-v1.0, Alias sakana-namazu, Context window "256K tokens" (stored as 256000), Streaming "Supported", Image input "Supported (URL and base64)", Structured output "json_schema and json_object"; the same tab says "Thinking is enabled by default." The Get Started page (https://console.sakana.ai/get-started) says "Sakana Namazu is not included in subscription plans" and that it is "billed purely on a pay-as-you-go (per-token) basis." Pricing page (https://console.sakana.ai/pricing): "Token pricing for sakana-namazu-v1.0 per 1M tokens." Input $0.95, Output $4.00, Cached input $0.15; "Thinking tokens are billed at the same rate as output tokens."'}},topModels:["fugu","fugu-ultra","fugu-ultra-v2.0","fugu-ultra-v1.1","fugu-ultra-v1.0","fugu-max","fugu-max-v1.0","sakana-namazu","sakana-namazu-v1.0"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Sakana AI answered HTTP 401 (authentication_error). Check {apiKeyEnvVar}. Get a key at {setupUrl}"}],setup:{url:"https://console.sakana.ai/overview",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://console.sakana.ai/overview and sign in - the page shows "Login with Google" and "Send login link"','2. Create an API key - the Get Started page (https://console.sakana.ai/get-started) says: "Before using Fugu or Sakana Namazu, create an API key and copy the generated key. The key is shown only once, so store it somewhere secure before closing the dialog."','3. Billing as the vendor states it: the Pricing page (https://console.sakana.ai/pricing) lists Pay as you go rates per model and Subscription Plans (Standard $20/month, Pro $100/month, Max $200/month); the Get Started page says Sakana Namazu "is billed purely on a pay-as-you-go (per-token) basis."',"4. Set {apiKeyEnvVar} in your .env file (SAKANA_API_KEY, which the Get Started page's curl example reads, is accepted as a fallback; the Models page's Python example reads FUGU_API_KEY and FUGU_BASE_URL, which NeuroLink does not)"],description:`Docs-verified only: the vendor's GET https://api.sakana.ai/v1/models needs a key (it answers HTTP 401 without one), so the nine model ids come from the Supported models table on https://console.sakana.ai/models and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.sakana.ai/v1: the Get Started page (https://console.sakana.ai/get-started) shows the OpenAI Python SDK with base_url "https://api.sakana.ai/v1" and a curl POST to https://api.sakana.ai/v1/chat/completions with the header Authorization: Bearer $SAKANA_API_KEY, and the Models page (https://console.sakana.ai/models) says: "Fugu currently supports the OpenAI-compatible Chat Completions, Responses, and Models APIs, as well as the Anthropic-compatible Messages API." An unauthenticated GET of https://api.sakana.ai/v1/models returned HTTP 401 with error.type authentication_error and error.message "Missing API key" (2026-09-29), so errorRules holds one rule, for status 401. models.defaultContextWindow (128,000) and models.defaultMaxOutputTokens (8,192) are conservative placeholders the vendor does not publish.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.sakana.ai/v1/models answers 401 without a key, so model ids are taken from https://console.sakana.ai/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"authentication_error",method:`unauthenticated GET https://api.sakana.ai/v1/models with no credentials \u2014 HTTP 401, JSON body {"error":{"message":"Missing API key","type":"authentication_error","param":null,"code":null}}; code records the body's error.type because error.code is null; the same day an unauthenticated GET https://api.sakana.ai/v1/chat/completions answered HTTP 405 with JSON body {"error":{"message":"Method Not Allowed","type":"invalid_request_error","param":null,"code":null}}; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://console.sakana.ai/pricing (Pay as you go rates; Subscription Plans Standard $20/month, Pro $100/month, Max $200/month) and https://console.sakana.ai/get-started (Sakana Namazu "is billed purely on a pay-as-you-go (per-token) basis"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),t1e,ONr=E({"src/lib/providers/catalog/sambanova.json"(){t1e={$schema:"./provider-catalog.schema.json",id:"sambanova",displayName:"SambaNova",aliases:[],tier:2,wire:{baseURL:"https://api.sambanova.ai/v1"},models:{default:"Meta-Llama-3.3-70B-Instruct",visionModel:"Meta-Llama-3.3-70B-Instruct",fallbacks:["Meta-Llama-3.3-70B-Instruct","gpt-oss-120b"],defaultContextWindow:131072,defaultMaxOutputTokens:8192,catalog:{"Meta-Llama-3.3-70B-Instruct":{contextWindow:131072,pricingPerMTok:{input:.6,output:1.2},vision:!0,status:"production",description:"Recommended - Meta Llama 3.3 70B; production, 128K context; vision-capable"},"gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.22,output:.59},vision:!1,status:"production",description:"OpenAI GPT-OSS 120B (open-weight)"},"DeepSeek-V3.1":{contextWindow:131072,pricingPerMTok:{input:3,output:4.5},vision:!1,status:"production",description:"DeepSeek V3.1 (reasoning)"},"DeepSeek-V3.2":{contextWindow:32768,pricingPerMTok:{input:3,output:4.5},vision:!1,status:"preview",description:"DeepSeek V3.2 (reasoning; vendor preview, 32K context)"},"MiniMax-M2.7":{contextWindow:196608,pricingPerMTok:{input:.6,output:2.4,cachedInput:.06},vision:!1,status:"production",description:"MiniMax M2.7, 192K context"},"MiniMax-M3":{pricingPerMTok:{input:.6,output:2.4},vision:!0,status:"production",description:"MiniMax M3 (vision)"},"gemma-4-31B-it":{contextWindow:131072,pricingPerMTok:{input:.38,output:1.15},vision:!0,status:"preview",description:"Google Gemma 4 31B IT (vision; vendor preview)"}},topModels:["Meta-Llama-3.3-70B-Instruct","gpt-oss-120b","DeepSeek-V3.1","DeepSeek-V3.2","MiniMax-M2.7","MiniMax-M3","gemma-4-31B-it"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key|Incorrect API key|authentication_error",class:"authentication",message:"Invalid SambaNova API key. Check {apiKeyEnvVar}. Get one at https://cloud.sambanova.ai/apis"},{status:402,pattern:"PAYMENT_METHOD_REQUIRED|balance_units",class:"provider",message:"SambaNova account has no credits (new accounts have no free allowance). Add a payment method and purchase credits at https://cloud.sambanova.ai/plans/billing"}],setup:{url:"https://cloud.sambanova.ai/apis",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://cloud.sambanova.ai (Google/Microsoft OAuth works)","2. Complete the profile step; note new accounts have NO free allowance \u2014 a payment method and purchased credits are required before calls succeed","3. Create an API key under API Keys","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-27",method:"authenticated GET /v1/models"},authProbe:{date:"2026-08-27",status:401,code:"invalid_api_key"},billingProbe:{date:"2026-08-27",status:402,code:"PAYMENT_METHOD_REQUIRED"},liveMatrix:{date:"2026-08-30",result:"Six of seven ids answer. Vision re-tested with a valid 64x64 PNG: gemma-4-31B-it and Meta-Llama-3.3-70B-Instruct both describe it correctly, so Meta-Llama's vision flag is now true. MiniMax-M3 returned 429 'currently experiencing high demand' \u2014 the model is served and simply busy, so it stays production rather than being retired; its declared vision support is therefore still unverified."},addedInPR:"https://github.com/juspay/neurolink/pull/1586"}}}}),r1e,DNr=E({"src/lib/providers/catalog/sarvam.json"(){r1e={$schema:"./provider-catalog.schema.json",id:"sarvam",displayName:"Sarvam AI",aliases:[],tier:2,wire:{baseURL:"https://api.sarvam.ai/v1"},models:{default:"sarvam-105b",fallbacks:["sarvam-105b-conversations"],defaultContextWindow:128e3,defaultMaxOutputTokens:2048,catalog:{"sarvam-105b":{contextWindow:128e3,vision:!1,status:"production",description:`Recommended - Sarvam's flagship chat model, documented as "(128K context) for complex reasoning and agentic tasks" (https://docs.sarvam.ai/api-reference-docs/chat/chat-completions, retrieved 2026-09-28). The /v1/chat/completions endpoint serves only sarvam-105b and sarvam-105b-conversations per the vendor's own reference \u2014 confirmed live by an unauthenticated GET https://api.sarvam.ai/v1/models on 2026-09-28 (HTTP 200, exactly these 2 ids, no key used). Request/response wire shape is OpenAI-compatible: messages[] with system/developer/user/assistant/tool roles, choices[].message/finish_reason (stop, length, tool_calls, content_filter, deprecated function_call), object: "chat.completion". tools + tool_choice (function calling) and response_format json_schema/json_object (Structured Outputs) are both documented generically for this endpoint, not per model \u2014 none of this was live-probed, since onboarding was credential-free (no API key, no POST request made to the vendor's API). Sarvam-specific reasoning_effort (low/high/max, default medium, disable by sending null) plus a reasoning_content field on the response message are documented \u2014 the basis for capabilities.thinking here. max_tokens defaults to 2048 if the caller omits it and the docs state no maximum output ceiling, so defaultMaxOutputTokens below reflects that documented default rather than a hard cap; maxOutputTokens is left unset on this entry rather than inventing one. Pricing is documented only in Indian Rupees \u2014 \u20B929.28 input / \u20B973.2 output / \u20B910.98 cached-input per 1M tokens (https://docs.sarvam.ai/api/getting-started/pricing.md, retrieved 2026-09-28); pricingPerMTok is left unset here rather than placing an INR figure in a field every other catalog entry uses for USD, since the vendor states no INR/USD rate to convert by without inventing a number. The message content-part schema also declares an image_url part (standard OpenAI-compatible shape), but the vendor documents no vision/multimodal capability for either model, so vision stays false and models.visionModel is left unset.`,enumMember:"SARVAM_105B"},"sarvam-105b-conversations":{contextWindow:32e3,vision:!1,status:"production",description:`Sarvam's conversational variant, documented as "(32K context) for real-time conversational and voice-agent workloads" (https://docs.sarvam.ai/api-reference-docs/chat/chat-completions, retrieved 2026-09-28) \u2014 kept as the fallback behind the larger-context sarvam-105b. Same endpoint, same OpenAI-compatible wire shape, tools/response_format documentation and reasoning_effort/reasoning_content fields as sarvam-105b (see that entry); confirmed live alongside it by the same unauthenticated GET https://api.sarvam.ai/v1/models on 2026-09-28 (HTTP 200). Pricing per the vendor's pricing page is identical to sarvam-105b \u2014 \u20B929.28 input / \u20B973.2 output / \u20B910.98 cached-input per 1M tokens, stated only in INR \u2014 so pricingPerMTok is left unset for the same reason.`,enumMember:"SARVAM_105B_CONVERSATIONS"}},topModels:["sarvam-105b","sarvam-105b-conversations"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:403,pattern:"invalid_api_key_error|Invalid API key",class:"authentication",message:"Invalid Sarvam AI API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://dashboard.sarvam.ai",apiKeyFormat:"^sk_[A-Za-z0-9_-]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://dashboard.sarvam.ai and sign in or create an account","2. Create an API subscription key from the dashboard (documented format: sk_xxx)","3. Every new account receives \u20B9100 in starter credits, then usage-based billing applies (https://docs.sarvam.ai/api/getting-started/pricing.md) \u2014 no ongoing free tier beyond that starter credit is documented","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.sarvam.ai/v1, serving only sarvam-105b and sarvam-105b-conversations via POST /v1/chat/completions. The vendor's own API reference authenticates its raw HTTP examples with a standard Authorization: Bearer <token> header \u2014 what NeuroLink's generic OpenAI-compatible provider sends. Sarvam's stated preference is instead an api-subscription-key header, which its Python/TypeScript SDKs use; both are documented as accepted on every endpoint, so no custom auth-header quirk is needed here."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.sarvam.ai/v1/models \u2014 2 models (sarvam-105b, sarvam-105b-conversations); credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),n1e,NNr=E({"src/lib/providers/catalog/scaledown.json"(){n1e={$schema:"./provider-catalog.schema.json",id:"scaledown",displayName:"ScaleDown",enumTypeName:"ScaleDownModels",aliases:["scaledown-classify"],inferenceKinds:["decide"],wire:{baseURL:"https://api.scaledown.xyz"},models:{default:"classify-1",topModels:["classify-1","classify"],catalog:{"classify-1":{contextWindow:128e3,maxOutputTokens:1,vision:!1,status:"preview",description:"Recommended - ScaleDown Classify 1, decision model for boolean, choice and score questions; context window and output limit not established"},classify:{vision:!1,status:"preview",description:"ScaleDown's name for its latest Classify model; whether it moves to a newer model is not established"}}},decide:{dialect:"system-one",order:8,baseURLNormalize:["strip-trailing-slash"],endpoint:"{baseURL}/v1/scaledown",model:{placement:"body"},authHeader:"x-api-key",stateEncoding:"text",errors:{rules:[{status:401,kind:"authentication"},{status:[402,422],kind:"invalid_request"},{status:429,kind:"rate_limit"},{status:502,kind:"server"},{status:504,kind:"timeout"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"detail.message"},{path:"detail"}]}},setup:{url:"https://docs.scaledown.ai",apiKeyFormat:null,billingPolicy:"promotional-credit",description:"API key from ScaleDown (see its documentation). Sign-up gives a free allowance; whether it expires is not established",instructions:["1. Create an account and an API key, following https://docs.scaledown.ai","2. Set {apiKeyEnvVar} in your .env file","3. ScaleDown's documentation says the key goes in an x-api-key header rather than Authorization: Bearer, and NeuroLink sends it that way","4. ScaleDown's documentation says a request made with no credit left returns HTTP 402"]},evidence:{rosterVerified:{date:"2026-10-15",method:"Checked by the marketing session, not in this change: ScaleDown's docs at docs.scaledown.ai were read and probes were made against api.scaledown.xyz. No request was made to ScaleDown in this change"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/2005"}}}}),o1e,LNr=E({"src/lib/providers/catalog/scaleway.json"(){o1e={$schema:"./provider-catalog.schema.json",id:"scaleway",displayName:"Scaleway",aliases:[],tier:2,wire:{baseURL:"https://api.scaleway.ai/v1"},models:{default:"mistral-small-3.2-24b-instruct-2506",fallbacks:["llama-3.3-70b-instruct","qwen3-235b-a22b-instruct-2507","gemma-4-26b-a4b-it","qwen3.6-35b-a3b"],defaultContextWindow:1e5,defaultMaxOutputTokens:16e3,catalog:{"mistral-small-3.2-24b-instruct-2506":{contextWindow:128e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'NeuroLink default. The id appears in the Model field description of the Chat Completions API reference (https://www.scaleway.com/en/developers/api/generative-apis/chat-completions/: "Unique identifier of the model, such as llama-3.3-70b-instruct or mistral-small-3.2-24b-instruct-2506.") and in the /chat/completions curl example on the rate-limits page (https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/). From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Vision, maximum context window is 128k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported image formats are PNG, JPEG, WEBP, and non-animated GIFs. The pricing page lists it as Chat and Vision at 0.15 EUR per million input tokens and 0.35 EUR per million output tokens; pricingPerMTok is left out because the pricing page states euro prices and the schema has no currency field. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"llama-3.3-70b-instruct":{contextWindow:1e5,maxOutputTokens:16e3,vision:!1,status:"production",description:'Fallback. The id appears in the Model field description and the example request of the Chat Completions API reference (https://www.scaleway.com/en/developers/api/generative-apis/chat-completions/). From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modality is Text, context window is 100k (Serverless), maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes. Vendor text: "Released in December 2024, Llama 3.3 70b by Meta is a fine-tune of the Llama 3.1 70b model." and "This model is text-only (text in/text out)." The pricing page lists it as Chat at 0.90 EUR per million input tokens and 0.90 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"qwen3-235b-a22b-instruct-2507":{contextWindow:25e4,maxOutputTokens:16e3,vision:!1,status:"production",description:'Fallback. From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modality is Text, maximum context window is 250k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes. Vendor text: "Released in July 2025, Qwen 3 235B A22B is an open-weight model". The pricing page lists it as Chat at 0.75 EUR per million input tokens and 2.25 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"gemma-4-26b-a4b-it":{contextWindow:256e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'Fallback. From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Vision, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, high; supported image formats are PNG, JPEG, WEBP, and non-animated GIFs. Vendor text: "Released in April 2026, Gemma-4-26b-a4b-it is a frontier small-sized model to perform agentic and reasoning tasks on many languages." The pricing page lists it as Chat, code, and Vision at 0.25 EUR per million input tokens and 0.50 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"qwen3.6-35b-a3b":{contextWindow:256e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text, Code and Vision, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, high; supported image formats are PNG, JPEG, GIF. Vendor text: "Released in April 2026, Qwen3.6-35b-a3b is a state-of-the-art small-sized model optimized for agentic tasks and logical reasoning." The pricing page lists it as Chat, code, and Vision at 0.25 EUR per million input tokens and 1.50 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"qwen3.8-27b":{contextWindow:256e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text, Code and Vision, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, xhigh; supported image formats are PNG, JPEG, GIF. Vendor text: "A state-of-the-art small-sized dense model as of August 2026, optimized for agentic tasks and logical reasoning." The pricing page lists it as Chat, code, and Vision at 0.60 EUR per million input tokens (0.12 EUR per million cached) and 3.30 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"qwen3.5-397b-a17b":{contextWindow:25e4,maxOutputTokens:16e3,vision:!0,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text, Code and Vision, maximum context window is 250k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, high; supported image formats are PNG, JPEG, WEBP, and non-animated GIFs. Vendor text: "Qwen3.5-397b-a17b is a model developed by Qwen to perform text processing, agentic coding, image, and video analysis in several languages." The pricing page lists it as Chat, code, and Vision at 0.60 EUR per million input tokens and 3.60 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"deepseek-v4-flash-0731":{contextWindow:256e3,maxOutputTokens:32e3,vision:!1,status:"preview",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Code, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, high, max. The context footnote on that page reads: "GLM 5.2 and DeepSeek-V4-Flash support 1 million context. During the preview stage, the context is limited to 256k to ensure consistent token generation speed." Vendor text: "Released in July 2026, DeepSeek-V4-Flash is the best cost-efficient model for long-horizon and coding tasks at the time of release." The pricing page lists it as Chat and code at 0.40 EUR per million input tokens (0.08 EUR per million cached) and 0.80 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"glm-5.2":{contextWindow:256e3,maxOutputTokens:16e3,vision:!1,status:"preview",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Code, maximum context window is 256k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, high, max. The context footnote on that page reads: "GLM 5.2 and DeepSeek-V4-Flash support 1 million context. During the preview stage, the context is limited to 256k to ensure consistent token generation speed." Vendor text: "Released in June 2026, GLM 5.2 is the best open-weight model for long-horizon and coding tasks at the time of release." The pricing page lists it as Chat and code at 1.80 EUR per million input tokens and 5.50 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"mistral-medium-3.5-128b":{contextWindow:18e4,maxOutputTokens:16e3,vision:!0,status:"preview",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Vision, maximum context window is 180k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, high; supported image formats are PNG, JPEG, WEBP, GIF. The context footnote on that page reads: "Mistral Medium 3.5 supports 1 million context. During the preview stage, the context is limited to 180k to ensure consistent token generation speed." Vendor text: "Mistral-medium-3.5 is a unified model from Mistral with strong performance for instruct, reasoning, and coding tasks." The pricing page lists it as Chat, code, and Vision at 1.50 EUR per million input tokens and 7.50 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"gpt-oss-120b":{contextWindow:128e3,maxOutputTokens:32e3,vision:!1,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modality is Text, maximum context window is 128k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are low, medium, high. Vendor text: "Released in August 2025, GPT OSS 120B is an open-weight model providing significant throughput performance and reasoning capabilities." and "Currently, this model should be used through the Responses API, because the Chat Completions API does not yet support tool-calling for this model." The pricing page lists it as Chat at 0.15 EUR per million input tokens and 0.60 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'}},topModels:["mistral-small-3.2-24b-instruct-2506","llama-3.3-70b-instruct","qwen3-235b-a22b-instruct-2507","gemma-4-26b-a4b-it","qwen3.6-35b-a3b","qwen3.8-27b","qwen3.5-397b-a17b","deepseek-v4-flash-0731","glm-5.2","mistral-medium-3.5-128b","gpt-oss-120b"],visionModel:"mistral-small-3.2-24b-instruct-2506"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:'Scaleway rejected the request with HTTP 401 (the Understanding common errors page lists 401 as "Unauthorized: The authorization header is missing."). Check {apiKeyEnvVar}. Create a key: {setupUrl}'},{status:403,class:"authentication",message:'Scaleway returned HTTP 403 (the Understanding common errors page lists 403 as "Forbidden: Your API key does not exist or does not have the necessary permissions to access the requested resource."). The Using Generative APIs page lists the permission sets GenerativeApisModelAccess, GenerativeApisFullAccess and AllProductsFullAccess for querying models. Check {apiKeyEnvVar}.'},{status:422,class:"invalid-model",message:`Scaleway returned HTTP 422 for model '{model}' (the Understanding common errors page lists 422 as "Model Not Found: The model key is present in the request payload, but the corresponding model is not found." and "Missing Model: The model key is missing from the request payload."). Supported models: https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/`},{status:429,class:"rate-limit",message:'Scaleway returned HTTP 429 (the Understanding common errors page lists 429 as "Too Many Requests: You are exceeding your current quota for the requested model, calculated in requests per minute." and "Too Many Tokens: You are exceeding your current quota for the requested model, calculated in tokens per minute."). Rate limits: https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/'}],setup:{url:"https://account.scaleway.com/register?service=console",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://account.scaleway.com/register?service=console and create a Scaleway account; the quickstart (https://www.scaleway.com/en/docs/generative-apis/quickstart/) lists "A Scaleway account logged into the console" and "A valid API key" as requirements',`2. Create an API key (https://www.scaleway.com/en/docs/iam/credentials/create-api-keys/): click IAM & API keys on the top-right drop-down menu of the Scaleway console, open the API keys tab and click + Generate API key. The page says: "A screen displays showing the access key and secret key for your new API key and reminding you that this is your only chance to securely save the secret key." The quickstart passes the secret key as the OpenAI client's api_key. Querying models requires one of the permission sets GenerativeApisModelAccess, GenerativeApisFullAccess or AllProductsFullAccess (https://www.scaleway.com/en/docs/generative-apis/api-cli/using-generative-apis/)`,'3. Billing as the vendor states it: the pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/) says "Try out new models with our free tier: 1 million tokens and 60 minutes of audio transcription."; the FAQ (https://www.scaleway.com/en/docs/generative-apis/faq/) says "After reaching this limit, you will be charged per million tokens processed and per minutes of audio processed."; the create-account page (https://www.scaleway.com/en/docs/account/how-to/create-an-account/) says "Ordering Scaleway resources requires a valid credit card."; the payment-method page (https://www.scaleway.com/en/docs/billing/how-to/add-payment-method/) says "Before you can order Scaleway resources, you must add a payment method to your account."; the rate-limits page (https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/) says "Base limits apply if you registered a valid payment method, and they are increased automatically if you also verify your identity."',"4. Set {apiKeyEnvVar} in your .env file (the vendor's examples read SCW_SECRET_KEY, which NeuroLink does not)"],description:`Docs-verified only: the vendor's GET https://api.scaleway.ai/v1/models needs a key (it answers HTTP 401 without one), so the eleven model ids come from the supported-models page https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/ (names checked against the pricing page https://www.scaleway.com/en/pricing/model-as-a-service/) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.scaleway.ai/v1: the compatibility page (https://www.scaleway.com/en/docs/generative-apis/reference-content/openai-compatibility/) says "You can use any of the OpenAI official libraries, for example, the OpenAI Python client library to interact with Generative APIs.", the quickstart (https://www.scaleway.com/en/docs/generative-apis/quickstart/) sets base_url to https://api.scaleway.ai/v1, and the Chat Completions reference (https://www.scaleway.com/en/developers/api/generative-apis/chat-completions/) documents POST /{project_id}/v1/chat/completions with a required model and messages. Unauthenticated GETs made 2026-09-29: /models and /chat/completions both answered HTTP 401 with the body {"status":401,"error":"UNAUTHORIZED","message":"missing 'Authorization' header"}; errorRules carry that 401 and the 403, 422 and 429 statuses listed on the Understanding common errors page (https://www.scaleway.com/en/docs/generative-apis/api-cli/understanding-errors/). models.defaultContextWindow (100000) and models.defaultMaxOutputTokens (16000) are placeholders for model ids outside the catalog that the vendor does not publish; they equal the smallest Serverless context and maximum-output figures among the catalog models. Per-model contextWindow and maxOutputTokens values are the decimal forms of the labels the vendor prints (256k, 250k, 180k, 128k, 100k; 32k, 16k). The pricing page states euro prices, so pricingPerMTok is omitted rather than converted and the prices appear in the model descriptions. billingPolicy holds the schema value free-with-card: the pricing page and FAQ describe a Free Tier, and the create-account, payment-method and rate-limits pages carry the payment-method sentences quoted in setup.instructions step 3; the value is NeuroLink's classification, not a Scaleway statement. The status value production is a value the schema requires and is not a Scaleway statement; preview marks the three models whose context the supported-models page ties to the preview stage. No POST request was sent, so the request fields NeuroLink's chat-completions client can add (stream_options on streaming calls, tool_choice on calls with tools, and a json_schema response_format for schema output) have not been exercised against Scaleway.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.scaleway.ai/v1/models answers 401 without a key, so model ids are taken from https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"UNAUTHORIZED",method:`unauthenticated GET https://api.scaleway.ai/v1/models and GET https://api.scaleway.ai/v1/chat/completions, no Authorization header \u2014 both HTTP 401, JSON body {"status":401,"error":"UNAUTHORIZED","message":"missing 'Authorization' header"}; the code recorded here is the body's error value; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://www.scaleway.com/en/pricing/model-as-a-service/ ("Try out new models with our free tier: 1 million tokens and 60 minutes of audio transcription."), https://www.scaleway.com/en/docs/generative-apis/faq/ ("There is a Free Tier available for Serverless."), https://www.scaleway.com/en/docs/account/how-to/create-an-account/ ("Ordering Scaleway resources requires a valid credit card."), https://www.scaleway.com/en/docs/billing/how-to/add-payment-method/ ("Before you can order Scaleway resources, you must add a payment method to your account.") and https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/ ("Base limits apply if you registered a valid payment method, and they are increased automatically if you also verify your identity."); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),i1e,FNr=E({"src/lib/providers/catalog/siliconflow.json"(){i1e={$schema:"./provider-catalog.schema.json",id:"siliconflow",displayName:"SiliconFlow",aliases:[],tier:2,wire:{baseURL:"https://api.siliconflow.com/v1"},models:{default:"deepseek-ai/DeepSeek-V4-Pro",fallbacks:["deepseek-ai/DeepSeek-V4-Flash","deepseek-ai/DeepSeek-V3.2","zai-org/GLM-5.1","moonshotai/Kimi-K2.6","Qwen/Qwen3-32B"],defaultContextWindow:32768,defaultMaxOutputTokens:4096,catalog:{"deepseek-ai/DeepSeek-V4-Pro":{contextWindow:1049e3,maxOutputTokens:393e3,pricingPerMTok:{input:1.50162,output:3.135,cachedInput:.135},vision:!1,status:"production",description:`NeuroLink default. The model page About text begins "DeepSeek-V4-Pro is DeepSeek's flagship open-source MoE model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/deepseek-v4-pro (retrieved 2026-09-29) shows the id deepseek-ai/DeepSeek-V4-Pro, context length "1049K", max tokens "393K", input price 1.50162, cache read 0.135, output price 3.135 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name DeepSeek-V4-Pro.`},"deepseek-ai/DeepSeek-V4-Flash":{contextWindow:1049e3,maxOutputTokens:393e3,pricingPerMTok:{input:.13,output:.28,cachedInput:.028},vision:!1,status:"production",description:`The model page About text begins "DeepSeek-V4-Flash is DeepSeek's latest open-source MoE model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/deepseek-v4-flash (retrieved 2026-09-29) shows the id deepseek-ai/DeepSeek-V4-Flash, context length "1049K", max tokens "393K", input price 0.13, cache read 0.028, output price 0.28 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported".`},"deepseek-ai/DeepSeek-V3.2":{contextWindow:164e3,maxOutputTokens:164e3,pricingPerMTok:{input:.27,output:.42,cachedInput:.135},vision:!1,status:"production",description:'The model page About text begins "DeepSeek-V3.2 is a model that harmonizes high computational efficiency with superior reasoning and agent performance". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/deepseek-v3-2 (retrieved 2026-09-29) shows the id deepseek-ai/DeepSeek-V3.2, context length "164K", max tokens "164K", input price 0.27, cache read 0.135, output price 0.42 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported".'},"zai-org/GLM-5.1":{contextWindow:205e3,maxOutputTokens:131e3,pricingPerMTok:{input:1.19,output:3.74,cachedInput:.6},vision:!1,status:"production",description:`The model page About text begins "GLM-5.1 is Z.ai's next-generation flagship model built for agentic engineering". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/glm-5-1 (retrieved 2026-09-29) shows the id zai-org/GLM-5.1, context length "205K", max tokens "131K", input price 1.19, cache read 0.6, output price 3.74 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Not supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name GLM-5.1.`},"zai-org/GLM-5":{contextWindow:205e3,maxOutputTokens:131e3,pricingPerMTok:{input:.95,output:2.55,cachedInput:.2},vision:!1,status:"production",description:'The model page About text begins "GLM-5 is a next-generation open-source model for complex systems engineering and long-horizon agentic tasks". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/glm-5 (retrieved 2026-09-29) shows the id zai-org/GLM-5, context length "205K", max tokens "131K", input price 0.95, cache read 0.2, output price 2.55 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Not supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name GLM-5.'},"moonshotai/Kimi-K2.6":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.77,output:3.4,cachedInput:.14},vision:!0,status:"production",description:'The model page About text begins "Kimi K2.6 is an open-source, native multimodal agentic model by Moonshot AI". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/kimi-k2-6 (retrieved 2026-09-29) shows the id moonshotai/Kimi-K2.6, context length "262K", max tokens "262K", input price 0.77, cache read 0.14, output price 3.4 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Kimi-K2.6.'},"moonshotai/Kimi-K2.5":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.45,output:2.25,cachedInput:.07},vision:!0,status:"production",description:'The model page About text begins "Kimi K2.5 is an open-source, native multimodal agentic model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/kimi-k2-5 (retrieved 2026-09-29) shows the id moonshotai/Kimi-K2.5, context length "262K", max tokens "262K", input price 0.45, cache read 0.07, output price 2.25 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Kimi-K2.5.'},"Qwen/Qwen3.6-27B":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.3,output:3.2},vision:!0,status:"production",description:'The model page About text begins "Qwen3.6-27B is the first open-weight small-to-mid-sized dense model in the Qwen3.6 series". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-6-27b (retrieved 2026-09-29) shows the id Qwen/Qwen3.6-27B, context length "262K", max tokens "262K", input price 0.3, output price 3.2 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Qwen3.6-27B.'},"Qwen/Qwen3.6-35B-A3B":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.24,output:1.8,cachedInput:.15},vision:!0,status:"production",description:`The model page About text begins "Qwen3.6-35B-A3B is a large language model from Alibaba's Qwen3.6 series". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-6-35b-a3b (retrieved 2026-09-29) shows the id Qwen/Qwen3.6-35B-A3B, context length "262K", max tokens "262K", input price 0.24, cache read 0.15, output price 1.8 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Qwen3.6-35B-A3B.`},"Qwen/Qwen3-32B":{contextWindow:131e3,pricingPerMTok:{input:.14,output:.57},vision:!1,status:"production",description:'The model page About text begins "Qwen3-32B is the latest large language model in the Qwen series with 32.8B parameters". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-32b (retrieved 2026-09-29) shows the id Qwen/Qwen3-32B, context length "131K", max tokens "131K", input price 0.14, output price 0.57 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The Reasoning page (https://docs.siliconflow.com/en/userguide/capabilities/reasoning, retrieved 2026-09-29) lists the Qwen3 Series with Maximum Response Length 8192, Maximum Reasoning Chain Length 32768 and Maximum Context Length 131072. The two pages give different output figures, so maxOutputTokens is not set for this model.'},"Qwen/Qwen3-VL-32B-Instruct":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.2,output:.6},vision:!0,status:"production",description:'The model page About text begins "Qwen3-VL is the vision-language model in the Qwen3 series". Listed in the model enum of the VLM request schema in the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-vl-32b-instruct (retrieved 2026-09-29) shows the id Qwen/Qwen3-VL-32B-Instruct, context length "262K", max tokens "262K", input price 0.2, output price 0.6 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported".'},"google/gemma-4-31B-it":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.75,output:1,cachedInput:.25},vision:!0,status:"production",description:`The model page About text begins "Gemma 4 31B is Google DeepMind's latest open-source model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/gemma-4-31b-it (retrieved 2026-09-29) shows the id google/gemma-4-31B-it, context length "262K", max tokens "262K", input price 0.75, cache read 0.25, output price 1.0 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name gemma-4-31B-it.`}},topModels:["deepseek-ai/DeepSeek-V4-Pro","deepseek-ai/DeepSeek-V4-Flash","deepseek-ai/DeepSeek-V3.2","zai-org/GLM-5.1","zai-org/GLM-5","moonshotai/Kimi-K2.6","moonshotai/Kimi-K2.5","Qwen/Qwen3.6-27B","Qwen/Qwen3.6-35B-A3B","Qwen/Qwen3-32B","Qwen/Qwen3-VL-32B-Instruct","google/gemma-4-31B-it"],visionModel:"Qwen/Qwen3-VL-32B-Instruct"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:'SiliconFlow rejected the request as unauthorized (HTTP 401; an unauthenticated GET https://api.siliconflow.com/v1/models returned code 30014 with the message "Token is invalid."). Check {apiKeyEnvVar}. Get one at {setupUrl}'},{status:403,class:"authentication",message:'SiliconFlow reports insufficient permissions (HTTP 403). Its error-handling page (https://docs.siliconflow.com/en/faqs/error-code) says: "The most common reason is that the model requires real-name authentication."'},{status:429,class:"rate-limit",message:"SiliconFlow rate limit reached (HTTP 429). Its error-handling page (https://docs.siliconflow.com/en/faqs/error-code) says to refer to the error message to determine whether the limit is RPM / RPD / TPM / TPD / IPM / IPD."},{pattern:"Model does not exist",class:"invalid-model",message:`SiliconFlow model '{model}' was not found. Its error-handling page (https://docs.siliconflow.com/en/faqs/error-code) shows the HTTP 400 message "Model does not exist. Please check it carefully." with code 20012.`}],setup:{url:"https://cloud.siliconflow.com/account/ak",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://cloud.siliconflow.com/ and create a SiliconFlow account (https://docs.siliconflow.com/en/userguide/quickstart)","2. Open the API Keys page at https://cloud.siliconflow.com/account/ak, click Create API Key and copy the key (https://docs.siliconflow.com/en/userguide/quickstart)",'3. Billing as the vendor words it on https://www.siliconflow.com/pricing: "Flexible token pricing, high usage limits, and postpaid billing\u2014plus $1 in free credits to get you started!"',"4. Set {apiKeyEnvVar} in your .env file"],description:`Endpoint https://api.siliconflow.com/v1 (the chat-completions API reference lists the server https://api.siliconflow.com/v1 and POST /chat/completions with bearer auth; the Text Generation page says "You can make end-to-end API requests using the OpenAI SDK" and the Quick Start says "The platform currently supports most OpenAI-related parameters."). This entry is docs-verified only: an unauthenticated GET of https://api.siliconflow.com/v1/models answered HTTP 401 without a key, so the model ids come from the vendor's public docs and the roster has not been checked; it is not yet live-verified. That GET returned code 30014 with the message "Token is invalid." (2026-09-29), so errorRules match status 401 and the statuses and messages on the vendor's error-handling page (https://docs.siliconflow.com/en/faqs/error-code). capabilities.structuredOutput is false because the model pages show Structured Outputs "Not supported" on the 12 catalog models; the JSON Mode page documents response_format={"type": "json_object"} and this entry sets no responseFormatDowngrade quirk. vision is true for moonshotai/Kimi-K2.6, moonshotai/Kimi-K2.5, Qwen/Qwen3.6-27B, Qwen/Qwen3.6-35B-A3B and google/gemma-4-31B-it from the model page value Support image input "Supported"; image input was not exercised. models.defaultContextWindow (32768) and models.defaultMaxOutputTokens (4096) are placeholders for ids outside the catalog that the vendor does not publish; the status values are ones the schema requires (production), not vendor statements. billingPolicy free-tier follows the pricing page's "$1 in free credits" statement.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.siliconflow.com/v1/models answers 401 without a key, so model ids are taken from https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions (retrieved 2026-09-29) and cross-checked against the ids shown on the model pages under https://www.siliconflow.com/models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"30014",method:'unauthenticated GET https://api.siliconflow.com/v1/models \u2014 body {"code":30014,"data":null,"message":"Token is invalid."} with header www-authenticate: Bearer realm="siliconflow", error="invalid_token", error_description="Token is invalid."; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public page https://www.siliconflow.com/pricing \u2014 "Flexible token pricing, high usage limits, and postpaid billing\u2014plus $1 in free credits to get you started!" and the FAQ answer "No, there are no minimum commitments. You only pay for what you use, and you can start with $1 in free credits."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),s1e,$Nr=E({"src/lib/providers/catalog/stackit.json"(){s1e={$schema:"./provider-catalog.schema.json",id:"stackit",displayName:"STACKIT",aliases:[],tier:2,wire:{baseURL:"https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1"},models:{default:"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8",fallbacks:["cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic","openai/gpt-oss-120b","Qwen/Qwen3.8-27B","google/gemma-4-31B-it","openai/gpt-oss-20b"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":{contextWindow:2e5,maxOutputTokens:16384,vision:!0,status:"production",description:`NeuroLink default. Row "Qwen3-VL 235B" (heading "Full Name: Qwen/Qwen3-VL-235B-A22B-Instruct-FP8") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Premium", Modalities "Input are text and image and Output is text.", Features "Tool calling enabled", Maximum images per request "10", Context length "200K Token", Maximum Generation "16384 Token", Specification "OpenAI-compatible", Status "Supported". The row's text reads "Meet Qwen3-VL \u2013 the most powerful vision-language model in the Qwen series to date." Vision is true from the Modalities cell; context is recorded as 200000, reading K as thousands.`},"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic":{contextWindow:128e3,maxOutputTokens:4096,vision:!1,status:"production",description:'Fallback. Row "Llama 3.3 70B" (heading "Full Name: cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input and output are text.", Features "Tool calling enabled", Context length "128K Token", Maximum Generation "4096 Token", Specification "OpenAI-compatible", Status "Supported". This id is the "model" value in the curl example of https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/, which says "In this guide we use Llama 3.3 70B." The FAQ (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/faq/) lists this id under "This behavior currently affects the following tool-calling enabled models:" and says "To avoid hallucinated tool calls, do not send the tools parameter with an empty list." Vision is false from the Modalities cell; context is recorded as 128000, reading K as thousands.'},"openai/gpt-oss-120b":{contextWindow:131e3,maxOutputTokens:8192,vision:!1,status:"production",description:`Fallback. Row "GPT-OSS 120B" (heading "Full Name: openai/gpt-oss-120b") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input and output are text.", Features "Tool calling & Reasoning enabled", Context length "131K Token", Maximum Generation "8192 Token", Specification "OpenAI-compatible", Status "Supported". The vendor's release note of Dec 10, 2025 (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/) says "The model provides full chain-of-thought (CoT) and support Structured Outputs." Vision is false from the Modalities cell; context is recorded as 131000, reading K as thousands.`},"Qwen/Qwen3.8-27B":{contextWindow:262e3,maxOutputTokens:16384,vision:!0,status:"production",description:'Fallback. Row "Qwen3.8 27B" (heading "Full Name: Qwen/Qwen3.8-27B") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input are text and image and Output is text.", Features "Tool calling & Reasoning enabled", Maximum images per request "10", Context length "262K Token", Maximum Generation "16384 Token", Thinking budget "8192 Token", Specification "OpenAI-compatible", Status "Supported". The id also appears in the Sep 8, 2026 release note (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/). Vision is true from the Modalities cell; context is recorded as 262000, reading K as thousands.'},"google/gemma-4-31B-it":{contextWindow:256e3,maxOutputTokens:4096,vision:!0,status:"production",description:'Fallback. Row "Gemma 4 31B" (heading "Full Name: google/gemma-4-31B-it") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input are text and image and Output is text.", Maximum images per request "10", Features "Tool calling & Reasoning enabled", Context length "256K Token", Maximum Generation "4096 Token", Specification "OpenAI-compatible", Status "Supported". The id also appears in the Jul 14, 2026 release note (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/). Vision is true from the Modalities cell; context is recorded as 256000, reading K as thousands.'},"openai/gpt-oss-20b":{contextWindow:131e3,maxOutputTokens:8192,vision:!1,status:"production",description:`Fallback. Row "GPT-OSS 20B" (heading "Full Name: openai/gpt-oss-20b") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Standard", Modalities "Input and output are text.", Features "Tool calling & Reasoning enabled", Context length "131K Token", Maximum Generation "8192 Token", Specification "OpenAI-compatible", Status "Supported". The row's note reads "We recommend configuring retries for tool calling to improve reliability. Alternatively, consider switching to one of our bigger models, that support this feature." Vision is false from the Modalities cell; context is recorded as 131000, reading K as thousands.`}},topModels:["Qwen/Qwen3-VL-235B-A22B-Instruct-FP8","cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic","openai/gpt-oss-120b","Qwen/Qwen3.8-27B","google/gemma-4-31B-it","openai/gpt-oss-20b"]},capabilities:{text:!0,streaming:!1,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:404,class:"invalid-model",message:'STACKIT answered HTTP 404 for model "{model}". Its FAQ (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/faq/) says of a 404: "Most likely this is due to an incorrect \u201Cmodel\u201D parameter in the request body."'},{status:429,class:"rate-limit",message:'STACKIT answered HTTP 429. Its rate-limits page (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/how-tos/rate-limits-on-shared-models-_stackit-ai-model-serving/) says "Once you hit a rate limit (RPM or TPM)" the API responds with 429 Too Many Requests, and that "Every response contains rate-limit specific headers", including x-ratelimit-remaining-requests and x-ratelimit-remaining-tokens.'}],setup:{url:"https://portal.stackit.cloud",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://portal.stackit.cloud and log in to the customer portal \u2014 the Getting started page says "To enable AI Model Serving login to the Customer portal and click at the sidebar on the left on AI Model Serving." and lists a STACKIT customer account, a STACKIT user account and a STACKIT project as prerequisites (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/)','2. Enable AI Model Serving, click Create token, enter a token name and optionally a lifetime in days, and confirm with "Order fee-based" ("To confirm click on Order fee-based."); the same page says "You can not retrieve the token again after closing the pane", so copy it when it is shown','3. Billing as the vendor states it: the May 6, 2025 release note says "STACKIT AI Model Serving offers you easy pay-as-you-go access to proven GenAI models" (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/); the product page (https://stackit.com/en/products/data-ai/stackit-ai-model-serving) offers "Register for a free trial access" \u2014 "All registrations are manually checked by us. If you qualify, you will receive your personal token to use STACKIT AI Model Serving within 24 hours. The trial period ends automatically after 30 days." \u2014 and shows a price table in euro (\u20AC)',"4. Set {apiKeyEnvVar} in your .env file (the docs' examples read STACKIT_MODEL_SERVING_AUTH_TOKEN and STACKIT_MODEL_SERVING_API_KEY, which NeuroLink does not read)"],description:`Docs-verified only: the vendor's GET https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 403 with content-length 0 and no body), so the six chat model ids come from the "Full Name:" headings of https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29), and the roster has not been checked; the entry is not yet live-verified. No account was created and no API key was used to build this entry. OpenAI-compatible endpoint at https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1: the six chat model rows in this catalog show Specification "OpenAI-compatible" and Available Endpoints "POST /chat/completions", "POST /completions" and "GET /models", and https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/how-tos/use-the-models/ says "STACKIT AI Model Serving provides an OpenAI-compatible API, making it easy to integrate with existing tools and libraries." Its curl example sends "Authorization: Bearer [auth-token]" and a JSON body with "model" and "messages" to https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/chat/completions. The sample reply shown under the POST /v1/chat/completions curl request on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/ reads "object":"text_completion" and "choices":[{"index":0,"text":. Unauthenticated GETs made 2026-09-29: /models, /chat/completions and the base URL /v1 each answered HTTP 403 with content-length 0 and no body. No POST request was sent. The Available Shared Models page also lists Status "Deprecated" for the rows "Qwen3.6 27B" and "Gemma 3 27B"; neither is in this catalog. errorRules carry only the two statuses the vendor's pages state, 404 (FAQ) and 429 (rate-limits page). models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish as general values; they apply to model ids outside the catalog and equal the Context length "128K Token" and Maximum Generation "4096 Token" cells of the Llama 3.3 70B row. Each model's context window is the page's "K Token" figure read as thousands. The status field of the six catalogued models holds production: the catalog schema requires a status (production, preview or retired) and the vendor's rows show Status "Supported". capabilities.text is true because the Getting started page documents a chat completions curl request; capabilities.tools is model-dependent: the Features cell reads "Tool calling enabled" on the Qwen3-VL 235B and Llama 3.3 70B rows and "Tool calling & Reasoning enabled" on the other four catalogued rows, and the LangChain example on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/how-tos/integration-of-tool-calling/ prints tool_call_response.tool_calls; the other capability flags are false, meaning not declared by this entry, and no request exercising them was sent. billingPolicy holds no-free-tier because the schema takes one of three values and the token-creation step says "To confirm click on Order fee-based."; the free trial the product page describes is in step 3. apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:403,method:"docs-only \u2014 unauthenticated GET https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/models answers 403 without a key, so model ids are taken from https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:403,method:"unauthenticated GET https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/models \u2014 HTTP 403, content-length 0, no response body, so no error code was observable; the same day unauthenticated GETs of .../v1/chat/completions and .../v1 answered HTTP 403 with content-length 0; credential-free, no key used, no POST sent"},billingProbe:{date:"2026-09-29",method:'public pages https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/ (token step "To confirm click on Order fee-based."), https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/ (May 6, 2025: "easy pay-as-you-go access") and https://stackit.com/en/products/data-ai/stackit-ai-model-serving ("Register for a free trial access", "The trial period ends automatically after 30 days.", and a STACKIT AI Model Serving price table in euro); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),a1e,UNr=E({"src/lib/providers/catalog/stepfun.json"(){a1e={$schema:"./provider-catalog.schema.json",id:"stepfun",displayName:"StepFun",aliases:[],tier:2,wire:{baseURL:"https://api.stepfun.ai/v1"},models:{default:"step-5-preview",fallbacks:["step-3.7-flash","step-3.5-flash","step-3.5-flash-2603","step-1o-turbo-vision"],fallbackModelName:"step-3.7-flash",defaultContextWindow:32e3,defaultMaxOutputTokens:16384,catalog:{"step-5-preview":{contextWindow:1e6,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:2.7,cachedInput:.05},vision:!0,status:"preview",description:`NeuroLink default. Model page https://platform.stepfun.ai/docs/en/guides/models/step-5-preview (retrieved 2026-09-29): "Step 5 Preview is StepFun's flagship model for agentic work." The page's specification table gives Model ID step-5-preview, Context window "1M tokens", Input types "Text, images, and video", Output type "Text" and Maximum output "64k tokens"; its features table lists Streaming output, Tool calling, Structured output ("JSON Mode and JSON Schema supported"), Reasoning effort (low, medium, high) and Prompt caching. The Chat Completions page https://platform.stepfun.ai/docs/en/api-reference/chat/chat-completion-create.md states "The examples below use step-5-preview by default." Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md: $1.00 input (cache miss), $0.05 input (cache hit), $2.70 output per 1M tokens. contextWindow 1000000 and maxOutputTokens 64000 are the decimal forms of "1M tokens" and "64k tokens"; vision is true because the model page lists images and video as input types; status is preview because the vendor names the model "Step 5 Preview".`},"step-3.7-flash":{contextWindow:256e3,pricingPerMTok:{input:.2,output:1.15,cachedInput:.04},vision:!0,status:"production",description:`Fallback. Model page https://platform.stepfun.ai/docs/en/guides/models/step-3.7-flash (retrieved 2026-09-29): "StepFun's flagship multimodal reasoning model. Powered by a 198B-parameter / 11B-activation sparse MoE architecture, with native support for image and video understanding." Its Key facts section states a context length of 256K tokens, and the page lists three reasoning effort levels (low, medium, high) set with reasoning_effort on the Chat Completions API. The Quickstart table (https://platform.stepfun.ai/docs/en/quickstart/overview.md) lists Input capabilities "Text, images, and video" for it; the Tool Call page (https://platform.stepfun.ai/docs/en/api-reference/tool-call.md) lists it among the models that support Toolcall requests, and the JSON Mode page (https://platform.stepfun.ai/docs/en/guides/developer/json-mode.md) says the json_schema approach applies to it. Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md (the model page shows the same figures): $0.20 input (cache miss), $0.04 input (cache hit), $1.15 output per 1M tokens. contextWindow 256000 is the decimal form of "256K tokens"; vision is true because the Quickstart table lists images and video as input capabilities.`},"step-3.5-flash":{contextWindow:256e3,pricingPerMTok:{input:.1,output:.3,cachedInput:.02},vision:!1,status:"production",description:`Fallback. Model page https://platform.stepfun.ai/docs/en/guides/models/step-3.5-flash (retrieved 2026-09-29): the model is "StepFun's flagship language reasoning model", "Built on a 196B-parameter / 11B-activation sparse MoE architecture." Its Key facts section states a context length of 256K tokens. The Quickstart table (https://platform.stepfun.ai/docs/en/quickstart/overview.md) lists Input capabilities "Text only" for it and says "Step 3.5 Flash does not support image input". The Tool Call page (https://platform.stepfun.ai/docs/en/api-reference/tool-call.md) lists it among the models that support Toolcall requests, and the JSON Mode page (https://platform.stepfun.ai/docs/en/guides/developer/json-mode.md) says the json_schema approach applies to it. Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md (the model page shows the same figures): $0.10 input (cache miss), $0.02 input (cache hit), $0.30 output per 1M tokens. contextWindow 256000 is the decimal form of "256K tokens".`},"step-3.5-flash-2603":{contextWindow:256e3,pricingPerMTok:{input:.1,output:.3,cachedInput:.02},vision:!1,status:"production",description:'Fallback. The Model variants section of https://platform.stepfun.ai/docs/en/guides/models/step-3.5-flash (retrieved 2026-09-29) describes step-3.5-flash-2603 as "Agent-optimized version: tuned from step-3.5-flash for high-frequency agent scenarios." and says it "Supports the reasoning_effort field (low / high)." The Chat Completions page (https://platform.stepfun.ai/docs/en/api-reference/chat/chat-completion-create.md) says step-3.5-flash-2603 accepts low and high for reasoning_effort. The welcome page model overview (https://platform.stepfun.ai/docs/en/welcome.md) has a card titled "Step 3.5 Flash 2603" with the category "Reasoning / text", the subtitle "Optimized for agents" and the metric "Max context" (value 256K). The Tool Call page (https://platform.stepfun.ai/docs/en/api-reference/tool-call.md) lists step-3.5-flash-2603 among the models that support Toolcall requests, and the JSON Mode page (https://platform.stepfun.ai/docs/en/guides/developer/json-mode.md) says the json_schema approach applies to it. Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md: $0.10 input (cache miss), $0.02 input (cache hit), $0.30 output per 1M tokens. contextWindow 256000 is the decimal form of 256K; vision is false (the welcome card category is "Reasoning / text").'},"step-1o-turbo-vision":{contextWindow:32e3,pricingPerMTok:{input:.36,output:1.15,cachedInput:.07},vision:!0,status:"production",description:'Fallback. Listed as step-1o-turbo-vision under "Pricing for Vision Models" on https://platform.stepfun.ai/docs/en/guides/pricing/details.md (retrieved 2026-09-29): $0.36 input (cache miss), $0.07 input (cache hit), $1.15 output per 1M tokens; the page adds "Image input is counted and billed as tokens, just like text input." The Model Retirement and Migration page (https://platform.stepfun.ai/docs/en/guides/model-migration.md) lists it in the "Recommended replacement" column for step-1-8k, step-1-32k, step-1v-8k, step-1v-32k, step-2-mini, step-1o-vision-32k and step-2-16k. The welcome page model overview (https://platform.stepfun.ai/docs/en/welcome.md) has a card titled "Step-1o Turbo Vision" with the metric "Max context" (value 32K) and the text "Designed for social content creation, AI assistants, and image and video understanding." contextWindow 32000 is the decimal form of 32K; vision is true because the pricing page groups the model under vision models and the card describes image and video understanding.'}},topModels:["step-5-preview","step-3.7-flash","step-3.5-flash","step-3.5-flash-2603","step-1o-turbo-vision"],visionModel:"step-5-preview"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:'StepFun rejected the API key (HTTP 401 invalid_api_key; the Error Codes page lists 401 as "Invalid authentication" with the resolution "Make sure you are using the correct API key."). Check {apiKeyEnvVar}. Create a key: {setupUrl}'},{status:402,class:"provider",message:'StepFun returned HTTP 402 (the Error Codes page lists 402 as "Insufficient balance" with the resolution "Add funds to your account.").'},{status:429,class:"rate-limit",message:'StepFun returned HTTP 429 (the Error Codes page lists 429 as "Resource or rate limit exceeded, usually because requests are too frequent" with the resolution "Retry after a short delay.").'},{status:451,class:"provider",message:'StepFun returned HTTP 451 (the Error Codes page lists 451 as "The request or response content failed review" with the resolution "Modify the request and try again.").'},{status:503,class:"provider",message:'StepFun returned HTTP 503 (the Error Codes page lists 503 as "Server is currently overloaded" with the resolution "Retry after a short delay.").'}],setup:{url:"https://platform.stepfun.ai/interface-key",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://platform.stepfun.ai/interface-key and sign in - the Quickstart (https://platform.stepfun.ai/docs/en/quickstart/overview.md) says "Sign in to the StepFun Open Platform and create and copy an API key on the Interface Keys page."','2. Billing as the vendor states it: the pricing overview (https://platform.stepfun.ai/docs/en/guides/pricing/intro.md) says fees are deducted "drawing from free credit first, then paid balance", and the Error Codes page (https://platform.stepfun.ai/docs/en/api-reference/error-codes.md) lists HTTP 402 as "Insufficient balance" with the resolution "Add funds to your account."',"3. Set {apiKeyEnvVar} in your .env file"],description:`Docs-verified only: the vendor's GET https://api.stepfun.ai/v1/models needs a key (it answers HTTP 401 without one), so the five model ids come from the pricing page https://platform.stepfun.ai/docs/en/guides/pricing/details.md and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.stepfun.ai/v1: the Chat Completions page (https://platform.stepfun.ai/docs/en/api-reference/chat/chat-completion-create.md) documents POST https://api.stepfun.ai/v1/chat/completions with a required model and messages, and streaming as data: chunks ending in data: [DONE]; the migration page (https://platform.stepfun.ai/docs/en/guides/developer/openai.md) says "Stepfun models are compatible with the OpenAI API spec." Unauthenticated GETs made 2026-09-29: /models and /chat/completions each answered HTTP 401 with the body {"error":{"message":"Incorrect API key provided","type":"invalid_api_key"}}; errorRules carry that 401 and the 402, 429, 451 and 503 statuses listed on the Error Codes page. models.defaultContextWindow (32000) and models.defaultMaxOutputTokens (16384) are conservative placeholders for model ids outside the catalog; the vendor does not publish a general default. Per-model contextWindow and maxOutputTokens values are the decimal forms of the labels the vendor prints ("1M tokens", "256K tokens", 32K, "64k tokens"). billingPolicy holds the schema value no-free-tier because the catalog schema has no unknown value; it is not a vendor statement. The base URL is the standard Open Platform endpoint; the Step Plan overview (https://platform.stepfun.ai/docs/en/step-plan/overview.md) lists a separate OpenAI SDK base URL, https://api.stepfun.ai/step_plan/v1. No POST request was sent, so the request fields NeuroLink's chat-completions client can add (stream_options on streaming calls, tool_choice on calls with tools, and a json_schema response_format for schema output) have not been exercised against StepFun.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.stepfun.ai/v1/models answers 401 without a key, so model ids are taken from https://platform.stepfun.ai/docs/en/guides/pricing/details.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_api_key",method:`unauthenticated GET https://api.stepfun.ai/v1/models and GET https://api.stepfun.ai/v1/chat/completions, no Authorization header \u2014 each HTTP 401, JSON body {"error":{"message":"Incorrect API key provided","type":"invalid_api_key"}}; the code recorded here is the body's error.type value (the body has no error.code field); credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://platform.stepfun.ai/docs/en/guides/pricing/intro.md ("drawing from free credit first, then paid balance"), https://platform.stepfun.ai/docs/en/guides/pricing/details.md (per-token prices and rate-limit tiers by cumulative top-up amount) and https://platform.stepfun.ai/docs/en/api-reference/error-codes.md (402 "Insufficient balance"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),l1e,BNr=E({"src/lib/providers/catalog/subconscious.json"(){l1e={$schema:"./provider-catalog.schema.json",id:"subconscious",displayName:"Subconscious",aliases:[],tier:2,wire:{baseURL:"https://api.subconscious.dev/v1"},models:{default:"subconscious/glm-5.3-marathon",fallbacks:["subconscious/deepseek-v4.1-flash-marathon","subconscious/tim-qwen3.6-27b"],defaultContextWindow:2e5,defaultMaxOutputTokens:4096,catalog:{"subconscious/glm-5.3-marathon":{pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:"NeuroLink default. The pricing page (https://www.subconscious.dev/pricing, retrieved 2026-09-29) lists the id subconscious/glm-5.3-marathon under the name 'GLM-5.3 Marathon', with the description 'Open-source frontier coding model', at $0.26 cached, $1.40 input and $4.40 output per 1M tokens. The API reference (https://docs.subconscious.dev/api-reference/openapi.json) lists this id as the model enum value. Present on the unauthenticated GET /v1/models roster (2026-09-29). vision is false as a schema-required placeholder the vendor does not publish for this id."},"subconscious/deepseek-v4.1-flash-marathon":{vision:!1,status:"production",description:"NeuroLink fallback. Present on the unauthenticated GET /v1/models roster (2026-09-29). The vendor homepage FAQ (https://www.subconscious.dev, retrieved 2026-09-29) says 'On our managed inference service, we serve GLM 5.3 Marathon and DeepSeek V4.1 Flash Marathon.' No pricing is attached: the pricing page (https://www.subconscious.dev/pricing, retrieved 2026-09-29) lists the id subconscious/deepseek-v4-flash-marathon, which differs from this roster id, with the description 'Multimodal & high-throughput DeepSeek V4'. vision is false as a schema-required placeholder the vendor does not publish for this roster id. Not probed with a key."},"subconscious/tim-qwen3.6-27b":{vision:!1,status:"production",description:"NeuroLink fallback. Present on the unauthenticated GET /v1/models roster (2026-09-29). The vendor blog post 'Introducing TIM-Qwen3.6-27B' (https://www.subconscious.dev/blog/introducing-tim-qwen3-6-27b, May 21, 2026) says the model is 'available via the OpenAI chat completions and Anthropic messages API formats'. vision is false as a schema-required placeholder the vendor does not publish for this id. Not probed with a key."}},topModels:["subconscious/glm-5.3-marathon","subconscious/deepseek-v4.1-flash-marathon","subconscious/tim-qwen3.6-27b"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Invalid or missing Subconscious API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:429,class:"rate-limit",message:"Subconscious returned HTTP 429: rate limited due to too many requests or tokens per minute."}],setup:{url:"https://subconscious.dev/platform/api-keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit https://subconscious.dev/platform and sign up or sign in (the quickstart, https://docs.subconscious.dev/quickstart, describes signing up on the platform and generating an API key from the dashboard)","2. Create an API key at https://subconscious.dev/platform/api-keys and copy it (https://docs.subconscious.dev/ways-to-use/cloud-api says API keys are created and managed from the dashboard)","3. Pricing is at https://www.subconscious.dev/pricing (monthly token plans and usage-based per-token pricing); the cloud-API page says 'Usage is billed per token.' and 'Credits are added from your dashboard'","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible Chat Completions endpoint at https://api.subconscious.dev/v1. The vendor overview (https://docs.subconscious.dev/overview) says 'Our API is compatible with both the OpenAI Completions and Anthropic Messages APIs'; this entry uses the OpenAI-format /chat/completions route. Verification level: docs- and roster-verified, not live-verified (evidence.liveMatrix is null). Checks made on 2026-09-29 were unauthenticated GET requests to /v1/models (HTTP 200, 4 models) and /v1/chat/completions (HTTP 405, allow: POST); no key was used and no POST was sent. The OpenAPI spec (https://docs.subconscious.dev/api-reference/openapi.json) lists statuses 400, 401 ('Unauthorized because of a missing or invalid API key'), 429 ('Rate limited due to too many requests or tokens per minute') and 500, so errorRules match on status. The spec says of response_format: 'Currently unsupported. The request may accept this field, but it is ignored and does not constrain the model output to JSON or a schema.' tools, toolsWithStreaming, structuredOutput, structuredOutputWithTools and thinking are declared false and were not probed with a key. models.defaultContextWindow (200000), models.defaultMaxOutputTokens (4096) and the vision value (false) of the three catalog models are placeholders the vendor does not publish per model. billingPolicy no-free-tier is the schema's required field value, not a vendor statement."},evidence:{rosterVerified:{date:"2026-09-29",method:"unauthenticated GET https://api.subconscious.dev/v1/models \u2014 4 models; credential-free, no key used",status:200},billingProbe:{date:"2026-09-29",method:"public pages https://docs.subconscious.dev/ways-to-use/cloud-api and https://www.subconscious.dev/pricing read without an account. The vendor blog post https://www.subconscious.dev/blog/subconscious-glm-5-2-makes-compact-obsolete (June 22, 2026, about GLM-5.2) says 'You also get $50 credits to test the model performance'; no account was created, so that offer was not tried; credential-free"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),c1e,zNr=E({"src/lib/providers/catalog/subq.json"(){c1e={$schema:"./provider-catalog.schema.json",id:"subq",displayName:"SubQ",aliases:["subquadratic","subq-snap"],inferenceKinds:["decide"],wire:{baseURL:"https://api.subq.ai"},models:{default:"subq-snap-preview",topModels:["subq-snap-preview"],catalog:{"subq-snap-preview":{contextWindow:393216,maxOutputTokens:1,vision:!1,status:"preview",description:"Recommended - SubQ Snap Preview, decision model for boolean, choice and score questions"}}},decisionLimits:{maxStateTokens:376e3,advisory:!0},decide:{dialect:"system-one",order:4,baseURLNormalize:["strip-trailing-slash"],endpoint:"{baseURL}/v1/systemone",model:{placement:"body"},errors:{rules:[{status:401,kind:"authentication"},{status:[402,403,422],kind:"invalid_request"},{status:429,kind:"rate_limit"},{status:503,kind:"overloaded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"detail.message"},{path:"detail"}]}},setup:{url:"https://console.subq.ai",apiKeyFormat:null,billingPolicy:"no-free-tier",description:"API key from the SubQ console",instructions:["1. Sign up at https://console.subq.ai and create an API key (the console shows it once)","2. Set {apiKeyEnvVar} in your .env file","3. A request made with no credits left returns HTTP 402"]},evidence:{rosterVerified:{date:"2026-10-13",method:"Checked by the marketing session, not in this change: GET https://api.subq.ai/v1/models without a key listed subq-snap-preview, and docs.subq.ai/using-the-api/models was read the same day. No request was made to SubQ in this change"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1986"}}}}),u1e,GNr=E({"src/lib/providers/catalog/synthetic.json"(){u1e={$schema:"./provider-catalog.schema.json",id:"synthetic",displayName:"Synthetic",aliases:[],tier:2,wire:{baseURL:"https://api.synthetic.new/openai/v1"},models:{default:"syn:large:text",fallbacks:["syn:small:text","syn:large:vision","syn:small:vision","hf:zai-org/GLM-5.3-Flash","hf:openai/gpt-oss-120b","hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","hf:deepseek-ai/DeepSeek-V4.1-Flash","hf:moonshotai/Kimi-K3","hf:Qwen/Qwen3.8-27B","hf:zai-org/GLM-4.7-Flash"],defaultContextWindow:524288,defaultMaxOutputTokens:65536,catalog:{"syn:large:text":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:.6,output:1.2,cachedInput:.03},vision:!0,status:"production",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) \u2014 see that catalog entry. Not itself capability-probed with a live key; this is a roster+docs verified entry (see evidence.liveMatrix: null).'},"syn:small:text":{contextWindow:196608,maxOutputTokens:65536,pricingPerMTok:{input:.1,output:.5,cachedInput:.02},vision:!1,status:"production",description:`Synthetic's "small:text" convenience alias for zai-org/GLM-4.7-Flash \u2014 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.`},"syn:large:vision":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:3,output:15,cachedInput:.45},vision:!0,status:"production",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 \u2014 the most expensive model in this roster. Also reachable via hf:moonshotai/Kimi-K3 (same model). Roster+docs verified only; no live key probe.`},"syn:small:vision":{contextWindow:262144,maxOutputTokens:65536,pricingPerMTok:{input:.45,output:2.2,cachedInput:.09},vision:!0,status:"production",description:`Synthetic's "small:vision" convenience alias for Qwen/Qwen3.8-27B \u2014 "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.`},"hf:zai-org/GLM-5.3-Flash":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:.15,output:.5,cachedInput:.04},vision:!0,status:"production",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 \u2014 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.'},"hf:openai/gpt-oss-120b":{contextWindow:131072,maxOutputTokens:65536,pricingPerMTok:{input:.1,output:.1,cachedInput:.02},vision:!1,status:"production",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.`},"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{contextWindow:262144,maxOutputTokens:65536,pricingPerMTok:{input:.3,output:1,cachedInput:.06},vision:!1,status:"production",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.`},"hf:deepseek-ai/DeepSeek-V4.1-Flash":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:.6,output:1.2,cachedInput:.03},vision:!0,status:"production",description:"Underlying weights id for the model also reachable via the syn:large:text convenience alias \u2014 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."},"hf:moonshotai/Kimi-K3":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:3,output:15,cachedInput:.45},vision:!0,status:"production",description:"Underlying weights id for the model also reachable via the syn:large:vision convenience alias \u2014 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."},"hf:Qwen/Qwen3.8-27B":{contextWindow:262144,maxOutputTokens:65536,pricingPerMTok:{input:.45,output:2.2,cachedInput:.09},vision:!0,status:"production",description:"Underlying weights id for the model also reachable via the syn:small:vision convenience alias \u2014 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."},"hf:zai-org/GLM-4.7-Flash":{contextWindow:196608,maxOutputTokens:65536,pricingPerMTok:{input:.1,output:.5,cachedInput:.02},vision:!1,status:"production",description:"Underlying weights id for the model also reachable via the syn:small:text convenience alias \u2014 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."}},topModels:["syn:large:text","syn:small:text","syn:large:vision","syn:small:vision","hf:zai-org/GLM-5.3-Flash"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[],setup:{url:"https://synthetic.new",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://synthetic.new and choose Sign up (or Log in if you already have an account)","2. Subscribe to a Pack ($1/day or $30/month, 500 requests/5hr per the pricing page) or set up enterprise usage-based billing \u2014 Synthetic has no free tier or keyless trial","3. Generate an API key from your account dashboard","4. Set {apiKeyEnvVar} in your .env file"],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."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.synthetic.new/openai/v1/models \u2014 11 models; credential-free, no key used",status:200},billingProbe:{date:"2026-09-28",method:"unauthenticated GET https://synthetic.new/pricing \u2014 no free tier; $1/day or $30/month subscription pack (500 req/5hr), or enterprise usage-based pricing; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),d1e,qNr=E({"src/lib/providers/catalog/telnyx.json"(){d1e={$schema:"./provider-catalog.schema.json",id:"telnyx",displayName:"Telnyx",aliases:[],tier:2,wire:{baseURL:"https://api.telnyx.com/v2/ai/openai"},models:{default:"zai-org/GLM-5.3-Flash",fallbacks:["zai-org/GLM-5.3","deepseek-ai/DeepSeek-V4.1-Flash","moonshotai/Kimi-K3","moonshotai/Kimi-K2.6","zai-org/GLM-5.2","MiniMaxAI/MiniMax-M3-MXFP8","deepseek-ai/DeepSeek-V4-Flash-0731","Qwen/Qwen3.8-27B"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{"zai-org/GLM-5.3-Flash":{contextWindow:1e6,pricingPerMTok:{input:.135,output:.45,cachedInput:.027},vision:!1,status:"production",description:`NeuroLink default. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 320B, Context Length 1M and Best For "Efficient multimodal coding and agentic workflows", tagged "(Recommended)". The Inference API Quickstart (https://developers.telnyx.com/docs/inference/getting-started) uses it in its first chat-completions example with base_url https://api.telnyx.com/v2/ai/openai; the OpenAI Migration, Function Calling, Streaming and Parallel Calls and JSON Mode pages use it in their examples, and the Function Calling page (https://developers.telnyx.com/docs/inference/functions) says it "is especially good at calling functions". The Quickstart's note says reasoning models such as this one return their chain-of-thought in a separate reasoning_content field. contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "GLM-5.3 Flash \u2014 Fast, efficient inference" on https://telnyx.com/pricing/inference-api: $0.135 input, $0.027 cached input, $0.45 output per 1M tokens. vision is a placeholder (see setup.description).`},"zai-org/GLM-5.3":{contextWindow:1e6,pricingPerMTok:{input:1.25,output:4,cachedInput:.24},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 753.9B, Context Length 1M and Best For "Complex coding and long-horizon agent tasks". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "GLM-5.3 \u2014 Flagship frontier intelligence" on https://telnyx.com/pricing/inference-api: $1.25 input, $0.24 cached input, $4 output per 1M tokens. vision is a placeholder (see setup.description).`},"deepseek-ai/DeepSeek-V4.1-Flash":{contextWindow:1e6,pricingPerMTok:{input:.3,output:1.2,cachedInput:.006},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 552B backbone, Context Length 1M and Best For "Low-latency multimodal inference". The Service tiers page (https://developers.telnyx.com/docs/inference/service-tiers) uses this id in its Flex request example. contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "DeepSeek V4.1 Flash \u2014 Low-latency multimodal inference" on https://telnyx.com/pricing/inference-api: $0.30 input, $0.006 cached input, $1.20 output per 1M tokens. vision is a placeholder (see setup.description).`},"moonshotai/Kimi-K3":{contextWindow:1e6,pricingPerMTok:{input:2.7,output:13.5,cachedInput:.27},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 2.8T, Context Length 1M and Best For "State-of-the-art open-weight intelligence for coding, reasoning, and multimodal work". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "Kimi K3 \u2014 Multimodal intelligence, 1M context" on https://telnyx.com/pricing/inference-api: $2.70 input, $0.27 cached input, $13.50 output per 1M tokens. vision is a placeholder (see setup.description).`},"moonshotai/Kimi-K2.6":{contextWindow:256e3,pricingPerMTok:{input:.665,output:4,cachedInput:.08},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 1.0T, Context Length 256K, Best For "Voice AI" and, in its Voice AI column, "Verified \u2014 default". The Get available models reference (https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) uses this id as its example. contextWindow 256,000 is NeuroLink's decimal reading of the label 256K. Pricing row "Kimi K2.6 \u2014 Highest intelligence, voice AI" on https://telnyx.com/pricing/inference-api: $0.665 input, $0.08 cached input, $4 output per 1M tokens. vision is a placeholder (see setup.description).`},"zai-org/GLM-5.2":{contextWindow:1e6,pricingPerMTok:{input:1,output:4,cachedInput:.2},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 753.9B, Context Length 1M, Best For "Coding, reasoning, 1M context window" and, in its Voice AI column, "Verified". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "GLM-5.2 \u2014 Next-gen efficient reasoning" on https://telnyx.com/pricing/inference-api: $1 input, $0.20 cached input, $4 output per 1M tokens. vision is a placeholder (see setup.description).`},"MiniMaxAI/MiniMax-M3-MXFP8":{contextWindow:1e6,pricingPerMTok:{input:.27,output:1.1,cachedInput:.08},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 428B, Context Length 1M and Best For "Cheapest while maintaining high intelligence". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "MiniMax-M3 \u2014 Cheapest while maintaining high intelligence" on https://telnyx.com/pricing/inference-api (named without the -MXFP8 suffix; its text is the same as this id's Best For cell): $0.27 input, $0.08 cached input, $1.10 output per 1M tokens. vision is a placeholder (see setup.description).`},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:1e6,vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 304B, Context Length 1M and Best For "Advanced coding, tool use, and long-horizon agentic workflows". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. pricingPerMTok is not set. vision is a placeholder (see setup.description).`},"Qwen/Qwen3.8-27B":{contextWindow:256e3,pricingPerMTok:{input:.4,output:3,cachedInput:.05},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 27B, Context Length 256K, Best For "Multimodal coding and visual understanding across documents, diagrams, and video" and, in its Voice AI column, "Not supported". contextWindow 256,000 is NeuroLink's decimal reading of the label 256K. Pricing row "Qwen 3.8 27B \u2014 Lightweight open-weight reasoning" on https://telnyx.com/pricing/inference-api: $0.40 input, $0.05 cached input, $3 output per 1M tokens. vision is a placeholder (see setup.description).`}},topModels:["zai-org/GLM-5.3-Flash","zai-org/GLM-5.3","deepseek-ai/DeepSeek-V4.1-Flash","moonshotai/Kimi-K3","moonshotai/Kimi-K2.6","zai-org/GLM-5.2","MiniMaxAI/MiniMax-M3-MXFP8","deepseek-ai/DeepSeek-V4-Flash-0731","Qwen/Qwen3.8-27B"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Telnyx returned HTTP 401. Check {apiKeyEnvVar}. Create a key: {setupUrl}"}],setup:{url:"https://portal.telnyx.com/#/app/auth/v2",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://telnyx.com/sign-up and create a Telnyx account \u2014 the Inference API Quickstart (https://developers.telnyx.com/docs/inference/getting-started) lists a "Telnyx account" and an "API Key" under Prerequisites',"2. Create an API key at https://portal.telnyx.com/#/app/auth/v2, the link the Quickstart gives for the API Key","3. Authentication is HTTP Bearer: the Service tiers page (https://developers.telnyx.com/docs/inference/service-tiers) shows a curl request to https://api.telnyx.com/v2/ai/openai/models with the header Authorization: Bearer $TELNYX_API_KEY",'4. Billing as the vendor states it: the Inference pricing page (https://telnyx.com/pricing/inference-api) shows a plan named PAY AS YOU GO described as "Standard rates. Card on file. Automatic tier discounts as usage crosses thresholds, no contract needed.", and the docs pricing page (https://developers.telnyx.com/docs/inference/models/pricing) says "Pay-per-token. No minimums, no commitments."',"5. Set {apiKeyEnvVar} in your .env file (the docs' examples read TELNYX_API_KEY)"],description:`Docs-verified only: the vendor's GET https://api.telnyx.com/v2/ai/openai/models needs a key (it answers HTTP 401 without one), so the nine model ids come from the models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.telnyx.com/v2/ai/openai: the Quickstart (https://developers.telnyx.com/docs/inference/getting-started) says "The Inference API is OpenAI-compatible." and shows the OpenAI Python SDK with base_url "https://api.telnyx.com/v2/ai/openai"; the Chat Completions reference (https://developers.telnyx.com/api-reference/openai-chat/create-a-chat-completion-openai-compatible) documents POST /ai/openai/chat/completions under the server https://api.telnyx.com/v2. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 with header www-authenticate: Bearer resource_metadata="https://api.telnyx.com/.well-known/oauth-protected-resource" and a JSON body whose first errors entry has code "10009", title "Authentication failed" and detail "Could not find any usable credentials in the request."; /chat/completions answered HTTP 404 with code "10005" and title "Resource not found". No POST request was sent. errorRules holds one rule, for status 401. pricingPerMTok is read from the second of the three chat-completions tables on https://telnyx.com/pricing/inference-api (the page's selector lists Flex, Default and Priority in that order; the docs pricing page, https://developers.telnyx.com/docs/inference/models/pricing, says omitting service_tier uses default). The pricing rows are named by display name, and NeuroLink matched each row to a models-page id; the row "DeepSeek V4 Flash \u2014 Ultra-fast, cost-efficient inference" is not matched to a models-page id, so deepseek-ai/DeepSeek-V4-Flash-0731 has no pricingPerMTok. Each model's contextWindow is NeuroLink's decimal reading of the models page's Context Length label (1M or 256K). models.defaultContextWindow (128000) is a placeholder the vendor does not publish, for model ids outside models.catalog. models.defaultMaxOutputTokens (8192) equals the max_tokens default the Chat Completions reference states; it is a placeholder, not a per-model limit. Each model's vision field holds false, a placeholder for a boolean the catalog schema requires; it is not a vendor statement. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. capabilities.tools is true because the Function Calling page (https://developers.telnyx.com/docs/inference/functions) says "While we recommend you start with this model, every model in our API supports the tools interface." capabilities.toolsWithStreaming is true because the Streaming and Parallel Calls page (https://developers.telnyx.com/docs/inference/streaming-functions) shows a chat completion with tools and stream=True on zai-org/GLM-5.3-Flash. capabilities.structuredOutput is true because the JSON Mode page (https://developers.telnyx.com/docs/inference/json-mode) documents response_format with type json_schema and type json_object and the Chat Completions reference lists json_object and json_schema. These capabilities were not exercised: no key was available. capabilities.structuredOutputWithTools is false because no request combining tools and a schema was sent. capabilities.embeddings is false because NeuroLink's generic catalog provider does not implement embed(); the models page lists three embedding models on POST /v2/ai/openai/embeddings. capabilities.thinking is false because the entry sets no reasoning request parameter, although the Chat Completions reference documents reasoning_effort. billingPolicy holds the schema value no-free-tier because the catalog schema has no unknown value; it is not a vendor statement of signup terms. apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.telnyx.com/v2/ai/openai/models answers 401 without a key, so model ids are taken from https://developers.telnyx.com/docs/inference/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"10009",method:'unauthenticated GET https://api.telnyx.com/v2/ai/openai/models with no credentials \u2014 HTTP 401, header www-authenticate: Bearer resource_metadata="https://api.telnyx.com/.well-known/oauth-protected-resource", JSON body errors[0] code "10009", title "Authentication failed", detail "Could not find any usable credentials in the request."; the same day an unauthenticated GET https://api.telnyx.com/v2/ai/openai/chat/completions answered HTTP 404 with JSON body errors[0] code "10005", title "Resource not found"; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:'public pages https://telnyx.com/pricing/inference-api (PAY AS YOU GO plan: "Standard rates. Card on file. Automatic tier discounts as usage crosses thresholds, no contract needed.") and https://developers.telnyx.com/docs/inference/models/pricing ("Pay-per-token. No minimums, no commitments."); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),p1e,jNr=E({"src/lib/providers/catalog/thinking-machines.json"(){p1e={$schema:"./provider-catalog.schema.json",id:"thinking-machines",displayName:"Thinking Machines",aliases:["tinker"],tier:2,wire:{baseURL:"https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1",apiKeyFallbackEnvVars:["TINKER_API_KEY"]},models:{default:"moonshotai/Kimi-K2.6",fallbacks:["Qwen/Qwen3.8-27B","openai/gpt-oss-120b","Qwen/Qwen3-8B"],defaultContextWindow:32768,defaultMaxOutputTokens:8192,catalog:{"moonshotai/Kimi-K2.6":{contextWindow:32768,pricingPerMTok:{input:2.205,output:5.49,cachedInput:.441},vision:!1,status:"preview",description:`NeuroLink default. The OpenCode tutorial (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/, retrieved 2026-09-29), section "Using a base model (no fine-tuning)", says "You can also point at a base model on Tinker's sampler:" and shows a models entry keyed by this id with "name": "Kimi K2.6" and "limit": { "context": 32768, "output": 8192 }. The tutorial's Step 2 provider config sets options.baseURL to https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Kimi-K2.6: Context 32K, Size 1T, Active 32B, Arch MoE, Type "Hybrid + Vision", Tinker ID moonshotai/Kimi-K2.6, Prefill $2.205 ($0.441 cached), Sample $5.49 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Kimi-K2.5 and Kimi-K2-Thinking. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.8-27B":{contextWindow:65536,pricingPerMTok:{input:1.86,output:5.595,cachedInput:.372},vision:!1,status:"preview",description:`Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.8-27B: Context 64K, Size 27B, Active 27B, Arch Dense, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.8-27B, Prefill $1.86 ($0.372 cached), Sample $5.595 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3.6-27B. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.6-35B-A3B":{contextWindow:65536,pricingPerMTok:{input:.54,output:1.335,cachedInput:.108},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.6-35B-A3B: Context 64K, Size 35B, Active 3B, Arch MoE, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.6-35B-A3B, Prefill $0.54 ($0.108 cached), Sample $1.335 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3.5-35B-A3B and Qwen3-30B-A3B. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.5-397B-A17B":{contextWindow:65536,pricingPerMTok:{input:3,output:7.5,cachedInput:.6},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-397B-A17B: Context 64K, Size 397B, Active 17B, Arch MoE, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.5-397B-A17B, Prefill $3.00 ($0.60 cached), Sample $7.50 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3-235B-A22B-Instruct-2507 and Qwen3-VL-235B-A22B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.5-9B":{contextWindow:65536,pricingPerMTok:{input:.66,output:1.995,cachedInput:.132},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-9B: Context 64K, Size 9B, Active 9B, Arch Dense, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.5-9B, Prefill $0.66 ($0.132 cached), Sample $1.995 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Llama-3.1-8B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.5-4B":{contextWindow:65536,pricingPerMTok:{input:.33,output:1.005,cachedInput:.066},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-4B: Context 64K, Size 4B, Active 4B, Arch Dense, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.5-4B, Prefill $0.33 ($0.066 cached), Sample $1.005 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3-4B-Instruct-2507. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3-8B":{contextWindow:32768,pricingPerMTok:{input:.195,output:.6,cachedInput:.039},vision:!1,status:"preview",description:`Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3-8B: Context 32K, Size 8B, Active 8B, Arch Dense, Type "Hybrid", Tinker ID Qwen/Qwen3-8B, Prefill $0.195 ($0.039 cached), Sample $0.60 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." The Anthropic-Compatible API page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/anthropic/), which documents a separate endpoint, says "another base model name (for example Qwen/Qwen3-8B)". contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"openai/gpt-oss-120b":{contextWindow:32768,pricingPerMTok:{input:.33,output:.84,cachedInput:.066},vision:!1,status:"preview",description:`Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GPT-OSS-120B: Context 32K, Size 117B, Active 5B, Arch MoE, Type "Reasoning", Tinker ID openai/gpt-oss-120b, Prefill $0.33 ($0.066 cached), Sample $0.84 per million tokens. The page's Model Types section says Reasoning models "Always produce chain-of-thought before their answer." contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"openai/gpt-oss-20b":{contextWindow:32768,pricingPerMTok:{input:.18,output:.45,cachedInput:.036},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GPT-OSS-20B: Context 32K, Size 21B, Active 3.6B, Arch MoE, Type "Reasoning", Tinker ID openai/gpt-oss-20b, Prefill $0.18 ($0.036 cached), Sample $0.45 per million tokens. The page's Model Types section says Reasoning models "Always produce chain-of-thought before their answer." contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"deepseek-ai/DeepSeek-V3.1":{contextWindow:32768,pricingPerMTok:{input:1.695,output:4.215,cachedInput:.339},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row DeepSeek-V3.1: Context 32K, Size 671B, Active 37B, Arch MoE, Type "Hybrid", Tinker ID deepseek-ai/DeepSeek-V3.1, Prefill $1.695 ($0.339 cached), Sample $4.215 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"zai-org/GLM-5.3:peft:262144":{contextWindow:262144,pricingPerMTok:{input:4.86,output:12.15,cachedInput:.972},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GLM-5.3 (256K): Context 256K, Size 753B, Active 40B, Arch MoE, Type "Reasoning", Tinker ID zai-org/GLM-5.3:peft:262144, Prefill $4.86 ($0.972 cached), Sample $12.15 per million tokens. The page's Model Types section says Reasoning models "Always produce chain-of-thought before their answer." contextWindow 262144 matches the 256K label and the :peft:262144 suffix in the id. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16":{contextWindow:65536,pricingPerMTok:{input:.57,output:1.44,cachedInput:.114},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Nemotron-3-Super-120B-A12B: Context 64K, Size 120B, Active 12B, Arch MoE, Type "Hybrid", Tinker ID nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16, Prefill $0.57 ($0.114 cached), Sample $1.44 per million tokens. The row carries the note "Limited-time 50% discount"; the page shows Prefill $1.14 and Sample $2.88 struck through, and pricingPerMTok holds the current figures. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists Nemotron-3-Super-120B-A12B among the "Recommended replacement" entries for Llama-3.3-70B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`}},topModels:["moonshotai/Kimi-K2.6","Qwen/Qwen3.8-27B","Qwen/Qwen3.6-35B-A3B","Qwen/Qwen3.5-397B-A17B","Qwen/Qwen3.5-9B","Qwen/Qwen3.5-4B","Qwen/Qwen3-8B","openai/gpt-oss-120b","openai/gpt-oss-20b","deepseek-ai/DeepSeek-V3.1","zai-org/GLM-5.3:peft:262144","nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Thinking Machines answered HTTP 401. Check {apiKeyEnvVar}. Get a key at {setupUrl}"}],setup:{url:"https://tinker.thinkingmachines.ai/keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://tinker.thinkingmachines.ai/keys \u2014 the Quickstart (https://tinker-docs.thinkingmachines.ai/tinker/quickstart/) says "Or create an API key in the Tinker Console and set it as the TINKER_API_KEY environment variable."; an unauthenticated GET of that URL redirects to a page titled "Sign in" (sign-in was not attempted while building this entry)','2. Authentication as the vendor states it: the OpenAI-compatible page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/openai/) says "Authenticate with your Tinker API key, by passing the same key used for Tinker as the API key to the OpenAI client."; its code example reads the key from TINKER_API_KEY','3. Billing as the vendor states it: the Quickstart (https://tinker-docs.thinkingmachines.ai/tinker/quickstart/) says "Set up payment info in Billing, and see Models & Pricing for current training and sampling rates." (the Billing link goes to https://tinker.thinkingmachines.ai/billing/), and the Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/) says "All prices are per million tokens."',"4. Set {apiKeyEnvVar} in your .env file (the vendor's examples read TINKER_API_KEY, which NeuroLink accepts as a fallback)"],description:`Docs-verified only: the vendor's GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401 with the JSON body {"detail":"X-Api-Key token is empty"}), so the twelve model ids come from the Training table on https://tinker-docs.thinkingmachines.ai/tinker/models/ (retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1: the OpenAI-compatible page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/openai/, titled "OpenAI API Compatible Inference (in beta)") says "The new interface exposes an OpenAI-compatible HTTP API.", gives that base URL, says "We support both /completions and /chat/completions endpoints." and says "Currently, OpenAI-compatible inference is meant for testing and internal use with low internal traffic, rather than large, high-throughput, user-facing deployments." The same page says "Use a Tinker sampler weight path as the model name." and shows a sampler weight path that begins with tinker://. moonshotai/Kimi-K2.6 is the catalog id that the OpenCode tutorial (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/) shows as a models entry under the "Using a base model (no fine-tuning)" heading; the other eleven catalog ids are Tinker IDs from the Models & Pricing Training table. A tinker:// path passed as the model is an id outside the catalog. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 (content-type application/json) with the body {"detail":"X-Api-Key token is empty"}; /chat/completions answered HTTP 405 with header allow: POST and the body {"detail":"Method Not Allowed"}; the base URL itself answered HTTP 404 with the body {"detail":"Not Found"}. No POST request was sent. errorRules holds one rule, for the 401 status observed on /models. pricingPerMTok input is the Prefill figure, output is the Sample figure and cachedInput is the cached Prefill figure of each Training-table row; the page's Pricing Terms define Prefill as "Processing input/prompt tokens when sampling" and Sample as "Generating output tokens". models.defaultContextWindow (32768) is the figure in the OpenCode tutorial's Config fields table (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/): "Max input tokens (32768 for most Tinker models)"; models.defaultMaxOutputTokens (8192) is the "output" figure in both example configs of that tutorial, whose Config fields table describes limit.output as "Max output tokens"; the catalog rows do not set maxOutputTokens, so the default applies to them. capabilities.text is true because the page documents /chat/completions; capabilities.streaming is true because the page describes streaming on /chat/completions ("In streaming mode, reasoning_content and content arrive on separate SSE events"); capabilities.thinking is true because the page documents the separate_reasoning flag and the reasoning_effort parameter on /chat/completions ("Not all models support this parameter."). capabilities.tools, toolsWithStreaming, structuredOutput and structuredOutputWithTools are false, meaning not declared by this entry: with tools false the provider's supportsTools() answers false and no tools array is sent, and no POST request exercising these was sent. capabilities.embeddings is false, not declared. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. apiKeyFormat is null so NeuroLink's key-format check is not applied. Verification level: docs-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models answers 401 without a key, so model ids are taken from https://tinker-docs.thinkingmachines.ai/tinker/models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models with no credentials \u2014 HTTP 401, content-type application/json, JSON body {"detail":"X-Api-Key token is empty"}; the body has no code field, so no code is recorded; the same day an unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/chat/completions answered HTTP 405 with header allow: POST and JSON body {"detail":"Method Not Allowed"}; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:'public page https://tinker-docs.thinkingmachines.ai/tinker/quickstart/ \u2014 Billing section: "Set up payment info in Billing, and see Models & Pricing for current training and sampling rates."; credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),m1e,VNr=E({"src/lib/providers/catalog/tinfoil.json"(){m1e={$schema:"./provider-catalog.schema.json",id:"tinfoil",displayName:"Tinfoil",aliases:[],tier:2,wire:{baseURL:"https://inference.tinfoil.sh/v1"},models:{default:"kimi-k3",fallbacks:["gpt-oss-120b","gemma4-31b","llama3-3-70b"],defaultContextWindow:131072,defaultMaxOutputTokens:4096,catalog:{"kimi-k3":{contextWindow:262144,pricingPerMTok:{input:4,output:20,cachedInput:.8},vision:!0,status:"production",description:'NeuroLink default. Roster description: "Moonshot\'s flagship multimodal MoE model with hybrid attention for long-context reasoning, coding, and agentic workflows". https://docs.tinfoil.sh/guides/tool-calling (Best Practices): "Among the models offered on Tinfoil API, Kimi K3 is recommended for function calling and agentic workflows"; https://docs.tinfoil.sh/tutorials/coding-agents uses the model ID kimi-k3 in its setup examples. Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 262144 (https://docs.tinfoil.sh/models/chat gives the Context value as "256K tokens"), inputTokenPricePer1M 4, outputTokenPricePer1M 20, cachedInputTokenPricePer1M 0.8, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name Kimi K3 among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, high and max for it. Status is production: this roster entry does not set `experimental`.'},"gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.15,output:.6},vision:!1,status:"production",description:'Fallback. Roster description: "Open-weight model designed for powerful reasoning, agentic tasks, and versatile developer use cases". The first inference example on https://docs.tinfoil.sh/quickstart uses this model ID; https://docs.tinfoil.sh/models/chat gives the Best for value as "Production use cases requiring configurable reasoning and tool use". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 131072 (docs Context value "131K tokens"), inputTokenPricePer1M 0.15, outputTokenPricePer1M 0.6, multimodal false, tool_calling true, reasoning true. https://docs.tinfoil.sh/guides/image-processing: "Other models (Llama, GPT-OSS) are text-only and cannot process images.", so vision is false. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, medium and high for it. Status is production: this roster entry does not set `experimental`.'},"gemma4-31b":{contextWindow:262144,pricingPerMTok:{input:.4,output:1},vision:!0,status:"production",description:'Fallback. https://docs.tinfoil.sh/models/chat gives the Strengths value as "Built-in thinking mode, image understanding, native function calling, multilingual support for 35+ languages". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 262144 (docs Context value "256K tokens"), inputTokenPricePer1M 0.4, outputTokenPricePer1M 1, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name Gemma 4 31B among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values none, minimal, low, medium, high, xhigh and max for it. Status is production: this roster entry does not set `experimental`.'},"llama3-3-70b":{contextWindow:131072,pricingPerMTok:{input:1.75,output:2.75},vision:!1,status:"production",description:'Fallback. Roster description: "High-performance multilingual language model optimized for dialogue". https://docs.tinfoil.sh/models/chat gives the Strengths value as "Multilingual, dialogue-optimized, function calling". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions"], context_window 131072 (docs Context value "128K tokens"), inputTokenPricePer1M 1.75, outputTokenPricePer1M 2.75, multimodal false, tool_calling true, reasoning false. https://docs.tinfoil.sh/guides/image-processing: "Other models (Llama, GPT-OSS) are text-only and cannot process images.", so vision is false. https://docs.tinfoil.sh/guides/reasoning states that llama3-3-70b is not a reasoning model. Status is production: this roster entry does not set `experimental`.'},"glm-5-3":{contextWindow:1048576,pricingPerMTok:{input:1.8,output:5.75,cachedInput:.45},vision:!1,status:"production",description:'Catalog entry (not a NeuroLink default or fallback). Roster description: "Z.ai\'s latest flagship for agentic coding and long-horizon tasks, with a 1M-token context window". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 1048576 (https://docs.tinfoil.sh/models/chat gives the Context value as "1M tokens"), inputTokenPricePer1M 1.8, outputTokenPricePer1M 5.75, cachedInputTokenPricePer1M 0.45, multimodal false, tool_calling true, reasoning true, so vision is false. https://docs.tinfoil.sh/models/chat states that reasoning tokens count toward max_tokens for this model and that structured outputs and strict tool calls at the default effort need a generous max_tokens (around 20K) or a lower effort. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, high and max for it. Status is production: this roster entry does not set `experimental`.'},"glm-5-3-flash":{contextWindow:1048576,pricingPerMTok:{input:.4,output:1.25,cachedInput:.1},vision:!0,status:"preview",description:`Catalog entry (not a NeuroLink default or fallback). Roster description: "Z.AI's fast multimodal MoE model with a 1M-token context window, image input, reasoning, and tool calling". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], experimental true (status is therefore preview), context_window 1048576 (https://docs.tinfoil.sh/models/chat gives the Context value as "1M tokens"), inputTokenPricePer1M 0.4, outputTokenPricePer1M 1.25, cachedInputTokenPricePer1M 0.1, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name GLM-5.3 Flash among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/models/chat states that reasoning tokens count toward max_tokens for this model and that structured outputs and strict tool calls at the default effort need a generous max_tokens (around 20K) or a lower effort. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, high and max for it.`},"deepseek-v4-1-flash":{contextWindow:1048576,pricingPerMTok:{input:.65,output:1.45,cachedInput:.13},vision:!0,status:"preview",description:`Catalog entry (not a NeuroLink default or fallback). Roster description: "DeepSeek's efficient MoE model with a 1M-token context window, image input, Engram memory, built-in speculative decoding, and tool calling". https://docs.tinfoil.sh/models/chat shows a warning on this model: "this model is not yet fully productionized. Capacity and performance may change while we finish rolling it out." (the roster field experimental is true), so status is preview. Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 1048576 (docs Context value "1M tokens"), inputTokenPricePer1M 0.65, outputTokenPricePer1M 1.45, cachedInputTokenPricePer1M 0.13, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name DeepSeek V4.1 Flash among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values none, low, high, xhigh and max for it.`}},topModels:["kimi-k3","gpt-oss-120b","gemma4-31b","llama3-3-70b","glm-5-3","glm-5-3-flash","deepseek-v4-1-flash"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{pattern:"invalid_api_key",class:"authentication",message:"Invalid Tinfoil API key (code invalid_api_key). Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:402,pattern:"You exceeded your current quota",class:"provider",message:"Tinfoil reported HTTP 402 (insufficient_quota). https://docs.tinfoil.sh/sdk/error-handling lists 402 as the account or organization having no remaining balance or an inactive subscription; billing is managed under Billing in the Tinfoil dashboard (https://docs.tinfoil.sh/get-api-key)"},{pattern:"insufficient_quota|Spend limit reached for this API key|Input token limit reached for this API key|Output token limit reached for this API key",class:"provider",message:"Tinfoil reported a limit on this API key (insufficient_quota). https://docs.tinfoil.sh/sdk/error-handling describes a 429 from a per-key cap as not transient, so retrying will not help"}],setup:{url:"https://dash.tinfoil.sh?tab=api-keys",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://dash.tinfoil.sh?tab=api-keys and sign in or sign up \u2014 https://docs.tinfoil.sh/get-api-key says "Create an account with your email or one of the social connections."','2. On the dashboard Products page, click Activate on the Private Inference card. Per https://docs.tinfoil.sh/get-api-key, if no payment method is on file you are redirected to a checkout page to enter your card details, and "You\u2019re only charged based on usage."','3. The activation dialog creates a "Default API key" and, per the same page, "adds $1 in API credits to your account"; additional keys are created from API Keys in the sidebar',"4. Set {apiKeyEnvVar} in your .env file (the examples on https://docs.tinfoil.sh/quickstart read TINFOIL_API_KEY)",'5. NeuroLink sends requests straight to https://inference.tinfoil.sh/v1. https://docs.tinfoil.sh/sdk/direct-api-access says "but this is not recommended in production" and "Direct access skips the automatic attestation verification our SDKs perform". https://docs.tinfoil.sh/local-proxy/cli documents a local proxy that verifies enclave attestations and serves http://127.0.0.1:3301/v1 for OpenAI-compatible clients (not exercised with NeuroLink)'],description:`OpenAI-compatible endpoint at https://inference.tinfoil.sh/v1 (https://tinfoil.sh: "Our API is OpenAI-compatible, open-source, and fully verifiable."; https://docs.tinfoil.sh/models/chat: "Chat models use the OpenAI chat completions API."), serving seven chat models. The unauthenticated GET https://inference.tinfoil.sh/v1/models on 2026-09-29 returned HTTP 200 with 17 entries; the ten entries whose roster type is not chat (safety, embedding, document, audio, tts, tool) are not in this catalog. An unauthenticated GET https://inference.tinfoil.sh/v1/chat/completions on 2026-09-29 returned HTTP 400 with {"error":{"message":"Invalid request body: EOF.","type":"invalid_request_error","param":null,"code":"invalid_json"}}, so no authentication-failure body was observed and errorRules use the codes and messages documented at https://docs.tinfoil.sh/sdk/error-handling (invalid_api_key, insufficient_quota). models.defaultContextWindow (131072) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish; per-model contextWindow values are the roster's context_window fields.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://inference.tinfoil.sh/v1/models \u2014 17 models; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public page https://docs.tinfoil.sh/get-api-key \u2014 card details are entered at checkout when no payment method is on file, "You\u2019re only charged based on usage.", and the activation dialog "adds $1 in API credits to your account"; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),h1e,HNr=E({"src/lib/providers/catalog/together-ai.json"(){h1e={$schema:"./provider-catalog.schema.json",id:"together-ai",displayName:"Together AI",enumTypeName:"TogetherAIModels",credentialsKey:"together",aliases:["together"],tier:2,wire:{baseURL:"https://api.together.xyz/v1",envOverrides:{apiKey:"TOGETHER_API_KEY",baseURL:"TOGETHER_BASE_URL",model:"TOGETHER_MODEL"}},models:{default:"meta-llama/Llama-3.3-70B-Instruct-Turbo",fallbackModelName:"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",fallbacks:["meta-llama/Llama-3.3-70B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo","mistralai/Mixtral-8x22B-Instruct-v0.1","Qwen/Qwen2.5-72B-Instruct-Turbo","deepseek-ai/DeepSeek-R1","deepseek-ai/DeepSeek-V3"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"meta-llama/Llama-3.3-70B-Instruct-Turbo":{enumMember:"LLAMA_3_3_70B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:.88,output:.88},vision:!1,status:"production",description:"Recommended - Llama 3.3 70B Turbo"},"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{enumMember:"LLAMA_3_1_405B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:3.5,output:3.5},vision:!1,status:"production",description:"Flagship 405B"},"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":{enumMember:"LLAMA_3_1_70B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:.88,output:.88},vision:!1,status:"production",description:"Llama 3.1 70B Instruct Turbo"},"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":{enumMember:"LLAMA_3_1_8B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:.18,output:.18},vision:!1,status:"production",description:"Llama 3.1 8B Instruct Turbo \u2014 fastest"},"mistralai/Mixtral-8x22B-Instruct-v0.1":{enumMember:"MIXTRAL_8X22B_INSTRUCT",contextWindow:65536,pricingPerMTok:{input:1.2,output:1.2},vision:!1,status:"production",description:"Mistral 8x22B MoE"},"mistralai/Mixtral-8x7B-Instruct-v0.1":{enumMember:"MIXTRAL_8X7B_INSTRUCT",contextWindow:32768,pricingPerMTok:{input:.6,output:.6},vision:!1,status:"production",description:"Mixtral 8x7B Instruct"},"Qwen/Qwen2.5-72B-Instruct-Turbo":{enumMember:"QWEN_2_5_72B_INSTRUCT_TURBO",contextWindow:32768,pricingPerMTok:{input:1.2,output:1.2},vision:!1,status:"production",description:"Qwen 2.5 72B Turbo"},"Qwen/Qwen2.5-Coder-32B-Instruct":{enumMember:"QWEN_2_5_CODER_32B",contextWindow:32768,vision:!1,status:"production",description:"Qwen 2.5 Coder 32B Instruct"},"deepseek-ai/DeepSeek-R1":{enumMember:"DEEPSEEK_R1",contextWindow:64e3,pricingPerMTok:{input:7,output:7},vision:!1,status:"production",description:"DeepSeek R1 reasoning"},"deepseek-ai/DeepSeek-V3":{enumMember:"DEEPSEEK_V3",contextWindow:64e3,pricingPerMTok:{input:1.25,output:1.25},vision:!1,status:"production",description:"DeepSeek V3"},"google/gemma-2-27b-it":{enumMember:"GEMMA_2_27B_IT",contextWindow:8192,vision:!1,status:"production",description:"Google Gemma 2 27B IT"},"microsoft/WizardLM-2-8x22B":{enumMember:"WIZARDLM_2_8X22B",contextWindow:65536,vision:!1,status:"production",description:"WizardLM 2 8x22B"}},topModels:["meta-llama/Llama-3.3-70B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo","Qwen/Qwen2.5-72B-Instruct-Turbo","deepseek-ai/DeepSeek-R1","mistralai/Mixtral-8x22B-Instruct-v0.1"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Invalid API key|Authentication",class:"authentication",message:"Invalid Together AI API key. Get one at https://api.together.xyz/settings/api-keys"}],setup:{url:"https://api.together.xyz/settings/api-keys",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:["1. Visit: https://api.together.xyz/settings/api-keys","2. Sign in to your Together AI account","3. Create a new API key","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-28",method:"transcribed from pre-migration TS catalog"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),f1e,WNr=E({"src/lib/providers/catalog/umans-ai.json"(){f1e={$schema:"./provider-catalog.schema.json",id:"umans-ai",displayName:"Umans AI",aliases:["umans"],tier:2,wire:{baseURL:"https://api.code.umans.ai/v1"},models:{default:"umans-coder",fallbacks:["umans-glm-5.3","umans-deepseek-v4-flash-0731","umans-kimi-k3"],defaultContextWindow:262144,defaultMaxOutputTokens:131072,catalog:{"umans-coder":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:`Default - the vendor's own default model: every curl example on https://app.umans.ai/offers/code/docs names it, the docs' Models table lists it as "Default: we choose the best for you", and the docs' CLI launches it by default. It is a routing alias, not a fixed model: the docs say it "routes to our current pick, which changes as we evaluate models" (GLM-5.3-Flash since September 9, 2026), and https://app.umans.ai/pricing says "Umans Coder is an alias for this model today: same rates, routed automatically" under GLM 5.3 Flash. Read on 2026-09-29: unauthenticated GET https://api.code.umans.ai/v1/models - context_length 1,048,576, pricing 0.15 input / 0.5 output; unauthenticated GET https://api.code.umans.ai/v1/models/info - base_model GLM-5.3-Flash, max_completion_tokens 131,072, supports_vision true, supports_tools true. The $0.03 cache-read rate is the GLM 5.3 Flash rate on the pricing page. Context, price and vision follow whatever model it routes to and can change without a new id.`},"umans-glm-5.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`Fallback - Z.ai's GLM 5.3. https://app.umans.ai/offers/code/docs lists it as the GLM 5.2 successor on a 1M context at $1.40 / $4.40 per 1M tokens (input / output; $0.26 cached). It always thinks, at max effort by default; reasoning_effort low or high dials it and thinking cannot be turned off. Text-only: /v1/models/info says supports_vision false, and the docs' Cursor setup says "the DeepSeek and GLM ids are text-only on this route". Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 1.4 / 4.4; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 131,072, supports_tools true.`},"umans-deepseek-v4-flash-0731":{contextWindow:1048576,maxOutputTokens:393216,pricingPerMTok:{input:.14,output:.28,cachedInput:.028},vision:!1,status:"production",description:'Fallback - DeepSeek V4 Flash, the 0731 release. https://app.umans.ai/offers/code/docs calls it "The cheapest production model in the lineup ($0.14 / $0.28 per 1M tokens)" and the default for new chats on app.umans.ai; it thinks at low effort by default and the docs say to select high or max on hard tasks. /v1/models/info describes 284B total and 13B active parameters and four reasoning modes: none, low (default), high, max. Text-only: /v1/models/info says supports_vision false. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 0.14 / 0.28; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 393,216, supports_tools true. The $0.028 cache-read rate is stated on the docs and pricing pages.'},"umans-kimi-k3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!0,status:"production",description:"Fallback - Moonshot's Kimi K3. https://app.umans.ai/offers/code/docs lists it with a 1M context, native vision and max-effort reasoning by default, and says it honors reasoning_effort none, low, high or max; its sampling fields (temperature, top_p) are fixed server-side and the gateway removes them rather than failing the request. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 3.0 / 15.0; GET https://api.code.umans.ai/v1/models/info: base_model Kimi-K3, max_completion_tokens 131,072, supports_vision true, supports_tools true. The $0.30 cache-read rate is stated on https://app.umans.ai/pricing."},"umans-glm-5.3-flash":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:`Vision model for tests - Z.ai's GLM-5.3-Flash. https://app.umans.ai/offers/code/docs describes "a 320B mixture-of-experts (18B active per token) with native image and video understanding" at $0.15 / $0.50 per 1M tokens; it always thinks at max effort by default, reasoning_effort low or high dials it and thinking cannot be turned off. The pricing page says umans-coder is an alias for it today. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 0.15 / 0.5; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 131,072, supports_vision true, supports_tools true. The $0.03 cache-read rate is stated on https://app.umans.ai/pricing. It is models.visionModel so vision tests use a fixed id rather than the routed alias.`},"umans-deepseek-v4.1-flash":{contextWindow:1048576,maxOutputTokens:393216,pricingPerMTok:{input:.15,output:.6,cachedInput:.028},vision:!0,status:"production",description:'DeepSeek V4.1 Flash, listed in the Models table of https://app.umans.ai/offers/code/docs, which describes "a 552B MoE (8B active on prefill, 16B on decode) with native image understanding ($0.15 / $0.60 per 1M tokens)", names it the DeepSeek V4 Pro successor, and lists four reasoning modes - non-think, think low, think high (the default), think max - with a numeric 1-100 budget also accepted. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 0.15 / 0.6; GET https://api.code.umans.ai/v1/models/info: production_start_date 2026-09-18, max_completion_tokens 393,216, supports_vision true, supports_tools true. The $0.028 cache-read rate is stated on https://app.umans.ai/pricing.'},"umans-flash":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.15,output:1,cachedInput:.05},vision:!0,status:"production",description:`Qwen3.6-35B-A3B-FP8, a light model rather than a coder. https://app.umans.ai/offers/code/docs lists it in its Models table as "High-interactivity light model; complement to umans-coder" with a 256K context, says to use it for the roles around umans-coder "not as a standalone coder", targets 200+ tokens per second, and its Claude Code table lists Text, Vision, WebSearch. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 262,144, pricing 0.15 / 1.0; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 262,144, supports_vision true, supports_tools true. The $0.05 cache-read rate is stated on https://app.umans.ai/offers/code/docs/orgs and the pricing page. The docs' Limits section counts it as half a request against the wallet tier's request window. The roster's umans-qwen3.6-35b-a3b id is described by /v1/models/info as a technical alias for this model and is not listed separately.`}},topModels:["umans-coder","umans-glm-5.3","umans-deepseek-v4-flash-0731","umans-kimi-k3","umans-glm-5.3-flash","umans-deepseek-v4.1-flash","umans-flash"],visionModel:"umans-glm-5.3-flash"},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Umans AI rejected the request with HTTP 401. Check {apiKeyEnvVar}; the docs say a 401 means the key may be expired or revoked. Create a new key at {setupUrl}"},{status:429,class:"rate-limit",message:"Umans AI rate limit (HTTP 429): the wallet tier's burst limit was exceeded. The docs describe 429s as retryable - wait for the rolling five-hour window to free capacity, or top up to grow the tier (https://app.umans.ai/offers/code/docs)"},{pattern:"unknown model",class:"invalid-model",message:"Umans AI model '{model}' is not a valid id (HTTP 400 Unknown model). Ids start with umans-; the error body lists the valid ids, or pick one from https://api.code.umans.ai/v1/models"}],setup:{url:"https://app.umans.ai/billing",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://app.umans.ai/register and create an account with Google or an email and password (already have one? sign in at https://app.umans.ai/login). Organizations are provisioned by Umans: email contact@umans.ai (https://app.umans.ai/offers/code/docs/orgs)","2. Open https://app.umans.ai/billing, go to Dashboard -> API Keys and generate a key; the docs say it is shown only once, so copy it immediately",'3. Prepaid wallet, no free tier stated: top up before calling the API - the docs say a wallet with no credit (no paid top-up and no active promo grant) "does not serve until it has some", and promo credit serves only while it lasts (https://app.umans.ai/offers/code/docs)',"4. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.code.umans.ai/v1 (https://app.umans.ai/offers/code/docs: "Umans Code also implements the OpenAI Chat Completions API"), pay-per-token from a prepaid wallet, serving open-weight coding models from Z.ai, DeepSeek, Moonshot and Qwen. The gateway's 401 body was observed only on GET /v1/usage ({"error":{"type":"authentication_error","message":"Missing API key"}}); GET /v1/chat/completions answers 405 and was never POSTed, so errorRules match the documented status codes (401, 429) and the documented "Unknown model" text rather than a probed chat-completions body. models.defaultContextWindow (262144) and models.defaultMaxOutputTokens (131072) are schema-required placeholders, not vendor-stated caps: they are the smallest context and max-output values among the seven catalog models, used only for an id outside the catalog, and no Umans page states a general cap. apiKeyFormat is null because the docs conflict: the Any BYOK Tool section says the key "starts with sk-" and the examples write sk-your-umans-api-key, while the wallet-summary example shows a key prefix of umans_7fKq and the homepage .env example shows umans_.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.code.umans.ai/v1/models \u2014 10 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,code:"authentication_error",method:'unauthenticated GET https://api.code.umans.ai/v1/usage (a documented bearer-key route) \u2014 body {"error":{"type":"authentication_error","message":"Missing API key"}}; the OpenAI route GET /v1/chat/completions returned 405 Method Not Allowed and no POST was sent; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public pages https://app.umans.ai/offers/code/docs ("A wallet with no credit at all \u2014 no paid top-up, no active promo grant \u2014 does not serve until it has some") and https://app.umans.ai/pricing ("Pay per token. Top up, create a key, and go."); no free tier stated; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),g1e,KNr=E({"src/lib/providers/catalog/upstage.json"(){g1e={$schema:"./provider-catalog.schema.json",id:"upstage",displayName:"Upstage",aliases:["solar"],tier:2,wire:{baseURL:"https://api.upstage.ai/v1"},models:{default:"solar-pro4",fallbacks:["solar-pro3","solar-mini"],defaultContextWindow:524288,defaultMaxOutputTokens:131072,catalog:{"solar-pro4":{contextWindow:524288,maxOutputTokens:131072,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:"Recommended - Solar Pro 4; 512K context, up to 128K output tokens; agentic flagship for tool calling, terminal tasks and long-document reasoning"},"solar-pro4-260806":{contextWindow:524288,maxOutputTokens:131072,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Pro 4 (2026-08-06 build) \u2014 the id the solar-pro4 alias currently resolves to"},"solar-pro3":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Solar Pro 3; drop-in replacement for Solar Pro 2 with the same API interface, throughput and latency"},"solar-pro3-260323":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Pro 3 (2026-03-23 build)"},"solar-pro2":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Solar Pro 2; 31B-parameter model with an optional Reasoning Mode"},"solar-pro2-251215":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Pro 2 (2025-12-15 build)"},"solar-mini":{pricingPerMTok:{input:.15,output:.15},vision:!1,status:"production",description:"Solar Mini; small, fast model for lightweight reasoning and cost-efficient tasks"},"solar-mini-250422":{pricingPerMTok:{input:.15,output:.15},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Mini (2025-04-22 build)"},"syn-pro":{vision:!1,status:"production",description:"Syn Pro; Upstage's Japan-focused LLM"},"syn-pro-251021":{vision:!1,status:"production",description:"Pinned dated snapshot of Syn Pro (2025-10-21 build)"}},topModels:["solar-pro4","solar-pro3","solar-pro2","solar-mini","syn-pro"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key|API key is invalid",class:"authentication",message:"Invalid Upstage API key. Check {apiKeyEnvVar}. Get one at https://console.upstage.ai/api-keys"},{pattern:"requested model is invalid or no longer supported",class:"invalid-model",message:"Upstage model '{model}' is invalid or no longer supported. Pick a current model from https://console.upstage.ai/docs/models."}],setup:{url:"https://console.upstage.ai/api-keys",apiKeyFormat:"^up_[A-Za-z0-9]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://console.upstage.ai (Google OAuth works)","2. New accounts get a $10 sign-up credit \u2014 no payment method required","3. Create an API key under API Keys","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-03",status:401,code:"invalid_api_key"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1625"}}}}),y1e,JNr=E({"src/lib/providers/catalog/venice-ai.json"(){y1e={$schema:"./provider-catalog.schema.json",id:"venice-ai",displayName:"Venice AI",aliases:["venice"],tier:2,wire:{baseURL:"https://api.venice.ai/api/v1",apiKeyFallbackEnvVars:["VENICE_API_KEY"]},models:{default:"zai-org-glm-5-2",fallbacks:["zai-org-glm-5","zai-org-glm-5-1","deepseek-v4-pro-0813"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"zai-org-glm-5-2":{contextWindow:1e6,maxOutputTokens:131072,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink default. The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the traits "default" and "function_calling_default" on this model, and an unauthenticated GET https://api.venice.ai/api/v1/models/traits returned "default":"zai-org-glm-5-2" on the same day; https://docs.venice.ai/overview/deprecations lists the default trait as currently routing to this id. Roster description: "GLM-5.2 is the next-generation large language model developed by Zhiyuan AI". Roster figures: context_length 1,000,000, maxCompletionTokens 131,072, $1.4/$4.4 per MTok input/output, $0.26 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Code".'},"zai-org-glm-5":{contextWindow:198e3,maxOutputTokens:32e3,pricingPerMTok:{input:1,output:3.2,cachedInput:.2},vision:!1,status:"production",description:'Fallback. The model in the request examples of https://docs.venice.ai/getting-started/quick-start, which lists it with the text "Default model for most use cases", and of https://docs.venice.ai/guides/features/function-calling. Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "GLM-5 is the next-generation large language model developed by Zhiyuan AI". Roster figures: context_length 198,000, maxCompletionTokens 32,000, $1/$3.2 per MTok input/output, $0.2 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Code".'},"zai-org-glm-5-1":{contextWindow:2e5,maxOutputTokens:8e4,pricingPerMTok:{input:1.54,output:4.84,cachedInput:.286},vision:!1,status:"production",description:'Fallback. The model in the request examples of https://docs.venice.ai/guides/features/reasoning-models. Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "GLM-5.1 is the next-generation large language model developed by Zhiyuan AI". Roster figures: context_length 200,000, maxCompletionTokens 80,000, $1.54/$4.84 per MTok input/output, $0.286 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning". The pricing page shows the cache-read price rounded to two decimals.'},"deepseek-v4-pro-0813":{contextWindow:1e6,maxOutputTokens:32768,pricingPerMTok:{input:1.65,output:4.95,cachedInput:.165},vision:!1,status:"production",description:'Fallback. The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "default_code" on this model, and https://docs.venice.ai/overview/deprecations lists the default_code trait as currently routing to this id. Roster description: "DeepSeek V4 Pro is a 1.6T-parameter Mixture-of-Experts model with 49B active parameters and a 1M-token context window." Roster figures: context_length 1,000,000, maxCompletionTokens 32,768, $1.65/$4.95 per MTok input/output, $0.165 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Code". The pricing page shows the cache-read price rounded to two decimals.'},"kimi-k3":{contextWindow:1e6,maxOutputTokens:131072,pricingPerMTok:{input:3.75,output:18.75,cachedInput:.375},vision:!0,status:"production",description:'The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "default_reasoning" on this model, and https://docs.venice.ai/overview/deprecations lists the default_reasoning trait as currently routing to this id. Roster description: "Kimi K3 is an ultra-large-scale, open-weight multimodal reasoning model from Moonshot AI." Roster figures: context_length 1,000,000, maxCompletionTokens 131,072, $3.75/$18.75 per MTok input/output, $0.375 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Vision, Code". The pricing page shows the cache-read price rounded to two decimals.'},"kimi-k2-6":{contextWindow:256e3,maxOutputTokens:65536,pricingPerMTok:{input:.75,output:3.5,cachedInput:.16},vision:!0,status:"production",description:'https://docs.venice.ai/getting-started/quick-start lists this id with the text "Strong reasoning for more complex tasks". Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "Kimi K2.6 is an open-source, native multimodal agentic model from Moonshot AI with 1T total parameters and 32B active parameters." Roster figures: context_length 256,000, maxCompletionTokens 65,536, $0.75/$3.5 per MTok input/output, $0.16 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Vision, Code".'},"qwen3-vl-235b-a22b":{contextWindow:128e3,maxOutputTokens:16384,pricingPerMTok:{input:.21,output:1.9,cachedInput:.1},vision:!0,status:"production",description:'NeuroLink models.visionModel. The model in the request examples of https://docs.venice.ai/guides/features/vision. Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "Qwen3-VL 235B vision-language model with MoE architecture." Roster figures: context_length 128,000, maxCompletionTokens 16,384, $0.21/$1.9 per MTok input/output, $0.1 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning false. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Vision".'},"venice-uncensored-1-2":{contextWindow:128e3,maxOutputTokens:8192,pricingPerMTok:{input:.2,output:.9},vision:!0,status:"production",description:`The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "most_uncensored" on this model, and https://docs.venice.ai/getting-started/quick-start lists this id with the text "Venice's uncensored model". Roster description: "Venice Uncensored 1.2 is designed for maximum creative freedom and authentic interaction." Roster figures: context_length 128,000, maxCompletionTokens 8,192, $0.2/$0.9 per MTok input/output, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning false. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Vision, Uncensored".`},"grok-4-7":{contextWindow:5e5,maxOutputTokens:2e5,pricingPerMTok:{input:2.27,output:6.8,cachedInput:.57},vision:!0,status:"production",description:`The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "most_intelligent" on this model, and https://docs.venice.ai/overview/deprecations lists the most_intelligent trait as currently routing to this id. Roster description: "Grok 4.7 is xAI's multimodal chat and reasoning model with function calling, structured outputs, adjustable reasoning effort (low/medium/high/xhigh), and a 500K-token context window." Roster figures: context_length 500,000, maxCompletionTokens 200,000, $2.27/$6.8 per MTok input/output, $0.57 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the pricing page has a further row labelled "\u21B3 >200K Context" at $4.53 input and $13.60 output, which the flat prices here do not carry. https://docs.venice.ai/models/text lists the Capabilities "Function calling, Reasoning, Vision, Code".`},"claude-opus-4-8":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:6,output:30,cachedInput:.6},vision:!0,status:"production",description:'https://docs.venice.ai/getting-started/quick-start lists this id with the text "High-intelligence model for complex tasks". Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "It features a 1M token context window, 128K max output tokens, adaptive thinking, and strong multimodal capabilities." Roster figures: context_length 1,000,000, maxCompletionTokens 128,000, $6/$30 per MTok input/output, $0.6 cache read, privacy "anonymized", supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Vision, Code".'}},topModels:["zai-org-glm-5-2","zai-org-glm-5","zai-org-glm-5-1","deepseek-v4-pro-0813","kimi-k3","kimi-k2-6","qwen3-vl-235b-a22b","venice-uncensored-1-2","grok-4-7","claude-opus-4-8"],visionModel:"qwen3-vl-235b-a22b"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:'Venice AI authentication failed (HTTP 401). https://docs.venice.ai/api-reference/error-codes lists AUTHENTICATION_FAILED ("Authentication failed"), AUTHENTICATION_FAILED_INACTIVE_KEY, X402_INVALID_SIGN_IN and PRO_ONLY_MODEL under 401. NeuroLink reads the key from {apiKeyEnvVar}; keys are created at {setupUrl}'},{status:402,class:"provider",message:'Venice AI reports a balance problem (HTTP 402). https://docs.venice.ai/api-reference/error-codes lists INSUFFICIENT_BALANCE ("Insufficient USD or Diem balance to complete request.", pointing to https://venice.ai/settings/api to add credits), API_KEY_USD_SPEND_LIMIT_EXCEEDED and API_KEY_DIEM_SPEND_LIMIT_EXCEEDED under 402'},{pattern:"Specified model not found|Invalid model specified",class:"invalid-model",message:`Venice AI did not accept model '{model}'. https://docs.venice.ai/api-reference/error-codes lists MODEL_NOT_FOUND (404, "Specified model not found") and INVALID_MODEL (400, "Invalid model specified"). Model ids are served by an unauthenticated GET https://api.venice.ai/api/v1/models`},{status:429,class:"rate-limit",message:'Venice AI returned HTTP 429. https://docs.venice.ai/api-reference/error-codes lists RATE_LIMIT_EXCEEDED ("Rate limit exceeded") and MODEL_OVERLOADED ("The model is currently overloaded. Please try again later.") under 429, and https://docs.venice.ai/api-reference/rate-limiting says "Failed requests (500, 503, 429) should be retried with exponential backoff."'}],setup:{url:"https://venice.ai/settings/api",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://venice.ai/settings/api and select Generate New API Key; the API key guide lists "Sign in to your Venice account." under Before you start (https://docs.venice.ai/guides/getting-started/generating-api-key)','2. Copy the key when it is shown \u2014 the API key guide states "Venice will show the full API key one time." (https://docs.venice.ai/guides/getting-started/generating-api-key) \u2014 and paste it without a Bearer prefix or quotes (https://docs.venice.ai/getting-started/quick-start)','3. Fund the account before calling models: the docs state "model requests will not succeed until the account can consume DIEM, bundled credits, or USD" (https://docs.venice.ai/guides/getting-started/generating-api-key); payment options are listed at https://docs.venice.ai/overview/pricing',"4. Set {apiKeyEnvVar} in your .env file (VENICE_API_KEY, the variable Venice's own docs use, is also read)"],description:`Docs- and roster-verified, not yet live-verified. OpenAI-compatible endpoint at https://api.venice.ai/api/v1 (https://docs.venice.ai/api-reference/endpoint/chat/completions: "This endpoint is OpenAI-compatible"), serving 126 text models on the 2026-09-29 roster, 10 of which are catalogued here (the roster's e2ee- ids are not). models.defaultContextWindow (128,000) and models.defaultMaxOutputTokens (4,096) are placeholders the vendor does not publish: Venice publishes context and max-output figures per model on the roster, not as a general default. The error-codes page (https://docs.venice.ai/api-reference/error-codes) shows the error body format {"error": "..."}, so errorRules match its documented statuses and model-not-found messages.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.venice.ai/api/v1/models \u2014 126 models; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public pages \u2014 https://docs.venice.ai/guides/getting-started/generating-api-key: "model requests will not succeed until the account can consume DIEM, bundled credits, or USD"; https://docs.venice.ai/overview/pricing: "Buy Venice credits with credit card. Credits never expire."; https://venice.ai/pricing: the Free plan lists "API Access (pay with credits)"; https://venice.ai/venice-api shows the tag "Free tier, no card"; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),v1e,XNr=E({"src/lib/providers/catalog/vispark.json"(){v1e={$schema:"./provider-catalog.schema.json",id:"vispark",displayName:"Vispark",aliases:[],tier:2,wire:{baseURL:"https://api.lab.vispark.in/v1"},models:{default:"vispark/vision-large",fallbacks:["vispark/vision-medium","vispark/vision-small"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"vispark/vision-large":{contextWindow:1e6,maxOutputTokens:65536,pricingPerMTok:{input:7.37,output:22.11},vision:!0,status:"production",description:`NeuroLink default. Vendor text for this model: the roster description reads "Vision Large: India's most advanced foundational intelligence. Delivers state-of-the-art reasoning, SOTA media processing, and complex tool usage. With 1M token context, it handles deep analysis and structured data with unmatched accuracy and cultural depth." and the site's size entry "large" reads "Slowest processing but highest intelligence and accuracy" with the price text "\u20B970 input/\u20B9210 output per 100k tokens. Minimum 600 input tokens charged." Unauthenticated GET https://api.lab.vispark.in/v1/models (2026-09-29, 3 models): context_length 1000000, max_output_length 65536, pricing.prompt "0.00000737" and pricing.completion "0.00002211" (pricingPerMTok is these two values times 1,000,000), input_modalities text, image, audio, video, file, output_modalities text, supported_features tools, json_mode, structured_outputs, reasoning. vision is true from the input_modalities entry image and the site text "Supports images, audio, video, and PDFs (max 25MB each)". The site's Limitations text for the Vision model reads "Combined content: 980,000 tokens maximum". The site text comes from https://lab.vispark.in/assets/index-WmfFPhvJ.js, the script https://lab.vispark.in/ loads (retrieved 2026-09-29).`},"vispark/vision-medium":{contextWindow:1e6,maxOutputTokens:65536,pricingPerMTok:{input:4.21,output:12.63},vision:!0,status:"production",description:`Fallback. Vendor text for this model: the roster description reads "Vision Medium: A versatile foundational model built for the world on Indian infrastructure. Balances speed with robust reasoning and 1M token context. Excels at content creation, nuanced cultural interactions, and evolving personal assistance." and the site's size entry "medium" reads "Balanced processing speed with good intelligence" with the price text "\u20B940 input/\u20B9120 output per 100k tokens. Minimum 600 input tokens charged." Unauthenticated GET https://api.lab.vispark.in/v1/models (2026-09-29, 3 models): context_length 1000000, max_output_length 65536, pricing.prompt "0.00000421" and pricing.completion "0.00001263" (pricingPerMTok is these two values times 1,000,000), input_modalities text, image, audio, video, file, output_modalities text, supported_features tools, json_mode, structured_outputs, reasoning. vision is true from the input_modalities entry image and the site text "Supports images, audio, video, and PDFs (max 25MB each)". The site text comes from https://lab.vispark.in/assets/index-WmfFPhvJ.js, the script https://lab.vispark.in/ loads (retrieved 2026-09-29).`},"vispark/vision-small":{contextWindow:1e6,maxOutputTokens:65536,pricingPerMTok:{input:1.05,output:3.16},vision:!0,status:"production",description:`Fallback. Vendor text for this model: the roster description reads "Vision Small: India's fast and efficient foundational AI. Trained from scratch with native multimodal understanding (text, audio, video) and deep cultural awareness. Features 1M token context for high-throughput, real-time interactions across 250+ languages." and the site's size entry "small" reads "Fastest processing speed with basic intelligence" with the price text "\u20B910 input/\u20B930 output per 100k tokens. Minimum 600 input tokens charged." Unauthenticated GET https://api.lab.vispark.in/v1/models (2026-09-29, 3 models): context_length 1000000, max_output_length 65536, pricing.prompt "0.00000105" and pricing.completion "0.00000316" (pricingPerMTok is these two values times 1,000,000), input_modalities text, image, audio, video, file, output_modalities text, supported_features tools, json_mode, structured_outputs, reasoning. vision is true from the input_modalities entry image and the site text "Supports images, audio, video, and PDFs (max 25MB each)". The site text comes from https://lab.vispark.in/assets/index-WmfFPhvJ.js, the script https://lab.vispark.in/ loads (retrieved 2026-09-29).`}},topModels:["vispark/vision-large","vispark/vision-medium","vispark/vision-small"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Vispark returned HTTP 401. The site's Limitations text lists 401 in "Check HTTP status codes (200, 400, 401, 402, 429)" and says "Validate API keys and sufficient units"; the OpenAI Compatibility panel says "Use your standard API Key as a Bearer Token." NeuroLink reads {apiKeyEnvVar}; create a key at {setupUrl}`},{status:402,class:"provider",message:`Vispark returned HTTP 402. The site's Limitations text lists 402 in "Check HTTP status codes (200, 400, 401, 402, 429)" and says "Validate API keys and sufficient units"; the site's script uses "Insufficient units for this operation" as the fallback message for this status.`},{status:429,class:"rate-limit",message:`Vispark returned HTTP 429. The site's Limitations text says "API rate limit: 240 requests/minute" and "Handle rate limiting with exponential backoff".`}],setup:{url:"https://lab.vispark.in/profile",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://lab.vispark.in/profile and sign in \u2014 the playground text reads "Sign in to run this model.", and the site links the Vispark account system at https://account.vispark.in','2. Open API Keys in the profile sidebar (the panel is titled "API Keys" with the subtitle "Manage your API keys"), choose "Add Key" and complete the "Create New API Key" dialog',`3. Authentication is HTTP Bearer: the OpenAI Compatibility panel says "Use your standard API Key as a Bearer Token." and shows Authorization: Bearer <your_api_key>. The site's developer-guide text for the Vision model also lists "Endpoint: /model/text/vision" and "Authentication: X-API-Key: your_api_key_here", and the ephemeral-key panel "Using on Model Endpoints" shows an X-API-Key header and lists "POST /chat/completions" under "Supported endpoints:". Neither header scheme was exercised: no POST request was sent`,'4. Billing as the site shows it: the Account tab of the profile page has a "Buy More Units" panel with the strings "\u20B91 (INR) = 1 unit" and "$1 (USD) = ~95 units"',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.lab.vispark.in/v1. The Vision documentation's OpenAI Compatibility panel says "This model is compatible with OpenAI-compatible clients." and gives the Base URL https://api.lab.vispark.in, Authorization: Bearer <your_api_key> and the model ids vispark/vision-small, vispark/vision-medium and vispark/vision-large; the ephemeral-key panel's Supported endpoints list includes "POST /chat/completions". Unauthenticated GETs made 2026-09-29: https://api.lab.vispark.in/v1/models and https://api.lab.vispark.in/models answered HTTP 200 with the same 3-model body; https://api.lab.vispark.in/v1/chat/completions and https://api.lab.vispark.in/chat/completions answered HTTP 405 with an HTML body titled 405 Method Not Allowed. No POST request was sent. The site text is read from the script https://lab.vispark.in/assets/index-WmfFPhvJ.js that https://lab.vispark.in/ loads (retrieved 2026-09-29). errorRules carry the status codes and sentences of the site's Limitations text. pricingPerMTok is the roster's pricing strings times 1,000,000; for vispark/vision-small the site's price text "\u20B910 input/\u20B930 output per 100k tokens" is \u20B9100 per 1M input tokens, which at "$1 (USD) = ~95 units" is about $1.05, the roster's figure. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are NeuroLink placeholders for model ids outside models.catalog, not vendor figures; the roster figures are quoted in the models.catalog descriptions. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. Verification level: docs- and roster-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.lab.vispark.in/v1/models \u2014 3 models; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public script https://lab.vispark.in/assets/index-WmfFPhvJ.js (retrieved 2026-09-29), Buy More Units panel strings "\u20B91 (INR) = 1 unit" and "$1 (USD) = ~95 units"; credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),w1e,YNr=E({"src/lib/providers/catalog/vultr-inference.json"(){w1e={$schema:"./provider-catalog.schema.json",id:"vultr-inference",displayName:"Vultr Inference",aliases:[],tier:2,wire:{baseURL:"https://api.vultrinference.com/v1"},models:{default:"glm-5.2",fallbacks:["deepseek-v4.1-flash","qwen3.8-flash-next","mimo-v2.6-flash-rl"],defaultContextWindow:131072,defaultMaxOutputTokens:32768,catalog:{"glm-5.2":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.75,output:3},vision:!0,status:"production",description:`NeuroLink default. Roster entry named "GLM 5.2" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "GLM-5.2 is Z.ai's flagship model for long-horizon tasks, sustaining agentic work across a solid 1M-token context." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.75 and completion price $3 per MTok (cost_usd 0.00000075 and 0.000003 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"deepseek-v4.1-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.15,output:.6},vision:!0,status:"production",description:'Fallback. Roster entry named "DeepSeek V4.1 Flash" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "DeepSeek V4.1 Flash is a mixture-of-experts model with 552B backbone parameters, a one-million-token context window, and support for reasoning and tool calling." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.15 and completion price $0.6 per MTok (cost_usd 0.00000015 and 0.0000006 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"qwen3.8-flash-next":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.1,output:.2},vision:!0,status:"production",description:'Fallback. Roster entry named "Qwen 3.8 Flash Next" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Qwen3.8 Flash Next with NVFP4 weights, a 262,144-token context window, reasoning, and tool calling." Roster fields: text input max_context_length 262,144 tokens; output max_length 262,144 tokens; prompt price $0.1 and completion price $0.2 per MTok (cost_usd 0.0000001 and 0.0000002 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"mimo-v2.6-flash-rl":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.1,output:.25},vision:!0,status:"production",description:`Fallback. Roster entry named "MiMo V2.6 Flash RL" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "MiMo V2.6 Flash RL is Xiaomi's efficiency-balanced mixture-of-experts model with 309B total and 15B active parameters, hybrid sliding-window attention, and a 1M-token context." "Supports reasoning and tool calling, served at FP8." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.1 and completion price $0.25 per MTok (cost_usd 0.0000001 and 0.00000025 per token); streaming true; tools listed among the supported parameters; input modalities text, image, audio, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"deepseek-v4-flash-0731":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.1,output:.25},vision:!0,status:"production",description:`Roster-listed. Roster entry named "DeepSeek V4 Flash 0731" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "DeepSeek's official V4 Flash release with substantially enhanced agentic capabilities and a built-in speculative decoding module." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.1 and completion price $0.25 per MTok (cost_usd 0.0000001 and 0.00000025 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"glm-5.3":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.75,output:3},vision:!0,status:"production",description:'Roster-listed. Roster entry named "GLM 5.3" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Served at NVFP4 across a 1M-token context." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.75 and completion price $3 per MTok (cost_usd 0.00000075 and 0.000003 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"glm-5.3-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.1,output:.35},vision:!0,status:"production",description:`Roster-listed. Roster entry named "GLM 5.3 Flash" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Z.ai's first natively multimodal GLM-5 model: a 320B-parameter MoE with ~18B active per token, combining sparse and linear attention for cheap long-context serving across a 1M-token window." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.1 and completion price $0.35 per MTok (cost_usd 0.0000001 and 0.00000035 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"glm-5.x-menthol":{contextWindow:202752,maxOutputTokens:202752,pricingPerMTok:{input:.4,output:1.75},vision:!0,status:"production",description:`Roster-listed. Roster entry named "GLM 5" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Z.ai's GLM-5, a 744B-parameter MoE flagship for agentic reasoning and coding, served in FP8." Roster fields: text input max_context_length 202,752 tokens; output max_length 202,752 tokens; prompt price $0.4 and completion price $1.75 per MTok (cost_usd 0.0000004 and 0.00000175 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"laguna-s-2.1":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.09,output:.18},vision:!0,status:"production",description:'Roster-listed. Roster entry named "Laguna S 2.1" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Laguna S 2.1 is a 118B total parameter Mixture-of-Experts model with 8B activated parameters per token, designed for agentic coding and long-horizon work." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.09 and completion price $0.18 per MTok (cost_usd 0.00000009 and 0.00000018 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"mimo-v2.6-pro-rl":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.4,output:.8},vision:!0,status:"production",description:`Roster-listed. Roster entry named "MiMo V2.6 Pro RL" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "MiMo V2.6 Pro RL is Xiaomi's mixture-of-experts model with 1.02T total and 42B active parameters, hybrid sliding-window attention, and a 1M-token context." "Supports reasoning and tool calling, served at FP8." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.4 and completion price $0.8 per MTok (cost_usd 0.0000004 and 0.0000008 per token); streaming true; tools listed among the supported parameters; input modalities text, image, audio, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"minimax-m3":{contextWindow:524288,maxOutputTokens:524288,pricingPerMTok:{input:.2,output:.9},vision:!0,status:"production",description:'Roster-listed. Roster entry named "MiniMax M3" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "MiniMax M3 is a natively multimodal MoE model (~428B parameters, ~23B active) with a 1M-token context." Roster fields: text input max_context_length 524,288 tokens; output max_length 524,288 tokens; prompt price $0.2 and completion price $0.9 per MTok (cost_usd 0.0000002 and 0.0000009 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent. The roster description text says a 1M-token context while the max_context_length field says 524,288; contextWindow uses the field.'},"muse-glimmer-30b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.25,output:1},vision:!0,status:"production",description:'Roster-listed. Roster entry named "Muse Glimmer 30B" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Muse Glimmer 30B is a dense multimodal model for reasoning, coding, and tool use, with a 131072-token context." Roster fields: text input max_context_length 131,072 tokens; output max_length 131,072 tokens; prompt price $0.25 and completion price $1 per MTok (cost_usd 0.00000025 and 0.000001 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'}},topModels:["glm-5.2","deepseek-v4.1-flash","qwen3.8-flash-next","mimo-v2.6-flash-rl","deepseek-v4-flash-0731","glm-5.3","glm-5.3-flash","glm-5.x-menthol","laguna-s-2.1","mimo-v2.6-pro-rl","minimax-m3","muse-glimmer-30b"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Vultr Inference rejected the request with HTTP 401 (Unauthorized). Check {apiKeyEnvVar}; the steps to retrieve a key are at {setupUrl}"},{status:429,class:"rate-limit",message:"Vultr Inference reports HTTP 429 (Rate limit exceeded)."}],setup:{url:"https://docs.vultr.com/products/compute/serverless-inference/provisioning",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://docs.vultr.com/products/compute/serverless-inference/provisioning and follow the Vultr Console steps: Products, Serverless, Inference, Add Serverless Inference, then provide a Label, "acknowledge the list of supported models and the charges note", and click Add Serverless Inference',`2. Open the new subscription's management page and copy the API key from its overview page (https://docs.vultr.com/products/compute/serverless-inference/management/connection: "API key is necessary to send any request to the inference endpoints")`,`3. Charges: the provisioning page above lists the charges note among the items to acknowledge, and the FAQ (https://docs.vultr.com/products/compute/serverless-inference/faq) says the subscription's Usage tab shows "details on your current token usage, overage, and any associated costs"`,"4. Set {apiKeyEnvVar} in your .env file (the authentication example on https://api.vultrinference.com/ writes ${VULTR_API_KEY}, which NeuroLink does not read)"],description:'Chat completions endpoint at https://api.vultrinference.com/v1 (https://api.vultrinference.com/ documents POST /chat/completions with bearer-token authentication and says "Responses follow OpenRouter\'s chat completion shape whichever engine serves the model"; the FAQ at https://docs.vultr.com/products/compute/serverless-inference/faq says to "replace your current inference API URL (such as OpenAI\'s base API URL) with Vultr\u2019s API URL"). The chat-completions request message schema at https://api.vultrinference.com/ lists role (system, assistant, user, tool, developer) and content (type string, "The contents of the message."); the tool call id description says "Send it back unchanged as the `tool_call_id` of the tool result." The roster route is public ("Most API routes require a bearer token. The public `/v1/models` route does not.") and lists 24 entries, 15 with a text output; the catalog holds 12 chat models. billingPolicy no-free-tier is the schema\'s closest value (the schema has no unknown value) and is not a Vultr statement. Each model\'s status production is a value the schema requires and is not a Vultr statement. models.defaultContextWindow (131,072) and models.defaultMaxOutputTokens (32,768) are placeholders for ids outside the catalog that the vendor does not publish: 131,072 is the context the roster lists for muse-glimmer-30b and 32,768 is the default the chat-completions page shows for max_completion_tokens. errorRules match the documented statuses 401 and 429; the 401 body was observed on unauthenticated GETs of /v1/models/all, /v1/usage and /v1/models/glm-5.2 ({"message":"No API key provided"}); no POST to /chat/completions was sent.'},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.vultrinference.com/v1/models \u2014 24 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://api.vultrinference.com/v1/models/all with no credentials \u2014 401 {"message":"No API key provided"} (the same body on GET /v1/usage and GET /v1/models/glm-5.2); the body carries no error code; GET https://api.vultrinference.com/v1/chat/completions answered 404 (the documented method is POST and none was sent); credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public pages https://docs.vultr.com/products/compute/serverless-inference/provisioning (Console steps: "acknowledge the list of supported models and the charges note") and https://docs.vultr.com/products/compute/serverless-inference/faq (Usage tab: "details on your current token usage, overage, and any associated costs"); no free-tier statement read; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),b1e,ZNr=E({"src/lib/providers/catalog/wafer.json"(){b1e={$schema:"./provider-catalog.schema.json",id:"wafer",displayName:"Wafer",aliases:[],tier:2,wire:{baseURL:"https://pass.wafer.ai/v1"},models:{default:"GLM-5.3",fallbacks:["DeepSeek-V4-Pro","Kimi-K3","GLM-5.2"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"GLM-5.3":{contextWindow:1048576,pricingPerMTok:{input:.29,output:4.4,cachedInput:.2359},vision:!1,status:"production",description:`NeuroLink default. The model named in the curl request example on https://docs.wafer.ai/serverless and on https://docs.wafer.ai/serverless/zero-data-retention. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "GLM-5.3 \u2014 Z.ai's flagship GLM-5.3 MoE (391B, NVFP4), self-hosted on the Wafer fleet with a 1M-token context window and frontier coding/agentic performance. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 29, output_cents_per_million 440 ($0.29 / $4.40 per MTok input/output); cache_read_microcents_per_million 23,590,000 ($0.2359 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.`},"DeepSeek-V4-Pro":{contextWindow:1048576,pricingPerMTok:{input:.4,output:4.2,cachedInput:.32},vision:!1,status:"production",description:`Fallback. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "DeepSeek-V4-Pro -- DeepSeek's V4 Pro MoE, self-hosted on the Wafer fleet with a 1M-token context window, reasoning-effort control and tool calling. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 40, output_cents_per_million 420 ($0.40 / $4.20 per MTok input/output); cache_read_microcents_per_million 32,000,000 ($0.32 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.`},"Kimi-K3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.44,output:9,cachedInput:.3},vision:!0,status:"production",description:'Fallback. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "Kimi K3 sparse MoE model, self-hosted on the Wafer fleet. Available serverless with a 1M-token context window and strong coding/agentic performance." Roster values: context_length 1,048,576; max_output_tokens 131,072; input_cents_per_million 144, output_cents_per_million 900 ($1.44 / $9.00 per MTok input/output); cache_read_microcents_per_million 30,000,000 ($0.3 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.'},"GLM-5.2":{contextWindow:1048576,pricingPerMTok:{input:.32,output:4.4,cachedInput:.2599},vision:!1,status:"production",description:`Fallback. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "GLM-5.2 \u2014 Z.ai's GLM-5.2 MoE (NVFP4), self-hosted on the Wafer fleet with a 1M-token context window, strong coding and reasoning, and tool calling. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 32, output_cents_per_million 440 ($0.32 / $4.40 per MTok input/output); cache_read_microcents_per_million 25,990,000 ($0.2599 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.`},"Qwen3.8-27B":{contextWindow:262144,pricingPerMTok:{input:.04,output:4.4,cachedInput:.0342},vision:!0,status:"production",description:`Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "Qwen3.8-27B -- Alibaba's dense 27B vision-language model, self-hosted on the Wafer fleet with a 262K-token context window, image and video input, reasoning-effort control and tool calling. Available serverless." Roster values: context_length 262,144; input_cents_per_million 4, output_cents_per_million 440 ($0.04 / $4.40 per MTok input/output); cache_read_microcents_per_million 3,420,000 ($0.0342 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.`},"GLM-5.3-Flash":{contextWindow:1048576,pricingPerMTok:{input:.75,output:.5,cachedInput:.03},vision:!0,status:"production",description:`Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "GLM-5.3-Flash \u2014 Z.ai's fast GLM-5.3 MoE variant, self-hosted on the Wafer fleet with a 1M-token context window and strong coding/agentic performance. Available serverless to gateway partners." Roster values: context_length 1,048,576; input_cents_per_million 75, output_cents_per_million 50 ($0.75 / $0.50 per MTok input/output); cache_read_microcents_per_million 3,000,000 ($0.03 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.`},"DeepSeek-V4.1-Flash":{contextWindow:1048576,pricingPerMTok:{input:.02,output:.7,cachedInput:.016},vision:!0,status:"production",description:`Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "DeepSeek-V4.1-Flash \u2014 DeepSeek's V4.1 Flash MoE (552B total, 8B active for prefill / 16B for decode, 1M-token context), self-hosted on the Wafer fleet with reasoning-effort control and tool calling. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 2, output_cents_per_million 70 ($0.02 / $0.70 per MTok input/output); cache_read_microcents_per_million 1,600,000 ($0.016 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.`},"DeepSeek-V4-Flash-0731-Fast":{contextWindow:1048576,pricingPerMTok:{input:.07,output:.35,cachedInput:.0531},vision:!1,status:"production",description:'Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "The same model served for high TPS." Roster values: context_length 1,048,576; input_cents_per_million 7, output_cents_per_million 35 ($0.07 / $0.35 per MTok input/output); cache_read_microcents_per_million 5,310,000 ($0.0531 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.'}},topModels:["GLM-5.3","DeepSeek-V4-Pro","Kimi-K3","GLM-5.2","Qwen3.8-27B","GLM-5.3-Flash","DeepSeek-V4.1-Flash","DeepSeek-V4-Flash-0731-Fast"],visionModel:"Qwen3.8-27B"},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Wafer returned HTTP 401 authentication_error. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://app.wafer.ai",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://app.wafer.ai and sign in \u2014 the docs say "Sign in at app.wafer.ai to add credits and create an API key. Store your key securely." (https://docs.wafer.ai/serverless)','2. Add credits and create an API key \u2014 the docs say "Add credits, create an API key, and pay per token." (https://docs.wafer.ai/serverless)',"3. Set {apiKeyEnvVar} in your .env file (the docs' Authentication row shows the Authorization: Bearer header)"],description:`OpenAI-compatible endpoint at https://pass.wafer.ai/v1 (https://docs.wafer.ai/serverless: "Access Wafer models through an OpenAI-compatible API."), with the 8 models the unauthenticated GET /models roster listed on 2026-09-29 in models.catalog. An unauthenticated GET of https://pass.wafer.ai/v1/chat/completions returned HTTP 401 with error.type authentication_error and error.code missing_api_key (2026-09-29), so errorRules match status 401. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are placeholders the vendor does not publish. billingPolicy is recorded as no-free-tier because the schema has no unknown value; the vendor's stated flow is "Add credits, create an API key, and pay per token."`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://pass.wafer.ai/v1/models \u2014 8 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,code:"missing_api_key",method:"unauthenticated GET https://pass.wafer.ai/v1/chat/completions \u2014 error.type authentication_error; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public page https://docs.wafer.ai/serverless \u2014 "Add credits, create an API key, and pay per token."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),T1e,QNr=E({"src/lib/providers/catalog/wandb-inference.json"(){T1e={$schema:"./provider-catalog.schema.json",id:"wandb-inference",displayName:"W&B Inference",aliases:["wandb"],tier:2,wire:{baseURL:"https://api.inference.wandb.ai/v1"},models:{default:"openai/gpt-oss-120b",fallbacks:["deepseek-ai/DeepSeek-V4-Flash-0731","meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","meta-llama/Llama-3.1-8B-Instruct","zai-org/GLM-5.2","deepseek-ai/DeepSeek-V4-Pro-0813","google/gemma-4-26B-A4B-it","Qwen/Qwen3.8-27B","moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4.1-Flash","ibm-granite/granite-4.2-8b"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{"openai/gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.03,output:.17},vision:!1,status:"production",description:`NeuroLink default. Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": OpenAI GPT OSS 120B, Type "Text", context window "131k", described as "Efficient Mixture-of-Experts model designed for high-reasoning, agentic and general-purpose use cases." Pricing page (wandb.ai/site/pricing/tokens/): $0.03 input, $0.17 output, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). The streaming page (docs.wandb.ai/inference/response-settings/streaming) uses this id in its example, and the reasoning page (docs.wandb.ai/inference/response-settings/reasoning) lists it as "Always on".`},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:262144,pricingPerMTok:{input:.13,output:.28,cachedInput:.07},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": DeepSeek V4-Flash-0731, Type "Text", context window "262k", described as "DeepSeek V4-Flash-0731 is an MoE model great for coding, reasoning, and agentic workloads." Pricing page (wandb.ai/site/pricing/tokens/): $0.13 input, $0.28 output, cache hit $0.07, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"meta-llama/Llama-3.3-70B-Instruct":{contextWindow:128e3,pricingPerMTok:{input:.71,output:.71},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Meta Llama 3.3 70B, Type "Text", context window "128k", described as "Multilingual model excelling in conversational tasks, detailed instruction-following, and coding." Pricing page (wandb.ai/site/pricing/tokens/): $0.71 input, $0.71 output, prices shown per 1 million tokens. contextWindow 128000 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"openai/gpt-oss-20b":{contextWindow:131072,pricingPerMTok:{input:.03,output:.13},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": OpenAI GPT OSS 20B, Type "Text", context window "131k", described as "Lower latency Mixture-of-Experts model trained on OpenAI's Harmony response format with reasoning capabilities." Pricing page (wandb.ai/site/pricing/tokens/): $0.03 input, $0.13 output, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). The tool-calling, structured-output and JSON-mode pages (docs.wandb.ai/inference/response-settings/) use this id in their examples.`},"meta-llama/Llama-3.1-8B-Instruct":{contextWindow:131072,pricingPerMTok:{input:.22,output:.22},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Meta Llama 3.1 8B, Type "Text", context window "131k", described as "Efficient conversational model optimized for responsive multilingual chatbot interactions." Pricing page (wandb.ai/site/pricing/tokens/): $0.22 input, $0.22 output, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). The quick-start example on docs.wandb.ai/inference uses this id.`},"zai-org/GLM-5.2":{contextWindow:1048576,pricingPerMTok:{input:.76,output:2.42,cachedInput:.14},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Z.AI GLM 5.2, Type "Text", context window "1049k", described as "GLM-5.2 is a Mixture-of-Experts language model featuring 40 billion activated parameters and a total of 744 billion parameters." Pricing page (wandb.ai/site/pricing/tokens/): $0.76 input, $2.42 output, cache hit $0.14, prices shown per 1 million tokens. contextWindow 1048576 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"deepseek-ai/DeepSeek-V4-Pro-0813":{contextWindow:1048576,pricingPerMTok:{input:1.31,output:3.96,cachedInput:.044},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": DeepSeek V4-Pro-0813, Type "Text", context window "1049k", described as "DeepSeek V4-Pro-0813 is a 1.6T-parameter MoE model excelling at advanced reasoning, coding, and complex agentic workloads." Pricing page (wandb.ai/site/pricing/tokens/): $1.31 input, $3.96 output, cache hit $0.044, prices shown per 1 million tokens. contextWindow 1048576 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"google/gemma-4-26B-A4B-it":{contextWindow:262144,pricingPerMTok:{input:.1,output:.3,cachedInput:.05},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Google Gemma 4 26B A4B Instruct, Type "Text, Vision", context window "262k", described as "Gemma 4 26B A4B is a multimodal MoE model with LoRA support and function calling for agentic workflows." Pricing page (wandb.ai/site/pricing/tokens/): $0.10 input, $0.30 output, cache hit $0.05, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). NeuroLink models.visionModel.`},"Qwen/Qwen3.8-27B":{contextWindow:262144,pricingPerMTok:{input:.4,output:3,cachedInput:.15},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Qwen3.8 27B, Type "Text, Vision", context window "262k", described as "Qwen3.8-27B is a dense multimodal model suited for coding, research, vision, and long-running agent tasks." Pricing page (wandb.ai/site/pricing/tokens/): $0.40 input, $3.00 output, cache hit $0.15, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"moonshotai/Kimi-K2.6":{contextWindow:262144,pricingPerMTok:{input:.65,output:3.41,cachedInput:.15},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Moonshot AI Kimi K2.6, Type "Text, Vision", context window "262k", described as "Kimi K2.6 is a multimodal Mixture-of-Experts language model featuring 32 billion activated parameters and a total of 1 trillion parameters." Pricing page (wandb.ai/site/pricing/tokens/): $0.65 input, $3.41 output, cache hit $0.15, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"deepseek-ai/DeepSeek-V4.1-Flash":{contextWindow:1048576,pricingPerMTok:{input:.2,output:.65,cachedInput:.03},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": DeepSeek V4.1-Flash, Type "Text, Vision", context window "1049k", described as "DeepSeek V4.1 Flash is a multimodal MoE model for coding, reasoning, and agentic workloads with long contexts." Pricing page (wandb.ai/site/pricing/tokens/): $0.20 input, $0.65 output, cache hit $0.03, prices shown per 1 million tokens. contextWindow 1048576 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"ibm-granite/granite-4.2-8b":{contextWindow:131072,pricingPerMTok:{input:.1,output:.15,cachedInput:.05},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": IBM Granite 4.2 8B, Type "Text", context window "131k", described as "Granite 4.2 8B is an instruct model capable of enhanced tool calling, instruction following, and chat capabilities." Pricing page (wandb.ai/site/pricing/tokens/): $0.10 input, $0.15 output, cache hit $0.05, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`}},topModels:["openai/gpt-oss-120b","deepseek-ai/DeepSeek-V4-Flash-0731","meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","meta-llama/Llama-3.1-8B-Instruct","zai-org/GLM-5.2","deepseek-ai/DeepSeek-V4-Pro-0813","google/gemma-4-26B-A4B-it","Qwen/Qwen3.8-27B","moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4.1-Flash","ibm-granite/granite-4.2-8b"],visionModel:"google/gemma-4-26B-A4B-it"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key",class:"authentication",message:"W&B Inference rejected the credentials (HTTP 401). Check {apiKeyEnvVar}. Create a key at {setupUrl}. The vendor's 401 article (https://docs.wandb.ai/support/inference/articles/api-error-code-401-authentication-failed) lists an invalid, expired or revoked API key and an incorrect W&B project entity or name as causes."},{status:402,class:"provider",message:"W&B Inference reports the quota is exceeded (HTTP 402). The vendor's 402 article (https://docs.wandb.ai/support/inference/articles/api-error-code-402-you-exceeded-your-cur) says this means no remaining credits or a reached monthly spending cap; see https://docs.wandb.ai/inference/usage-limits"},{pattern:"Country, region, or territory not supported",class:"provider",message:`W&B Inference returned "Country, region, or territory not supported" (HTTP 403). The vendor's article (https://docs.wandb.ai/support/inference/articles/api-error-code-403-country-region-or-ter) says the service determines location from the IP address of the request; see https://docs.wandb.ai/inference/usage-limits#geographic-restrictions`},{pattern:"inference gateway is not enabled for your organization",class:"authentication",message:`W&B Inference returned "The inference gateway is not enabled for your organization" (HTTP 403). The vendor's article (https://docs.wandb.ai/support/inference/articles/api-error-code-403-the-inference-gateway) says to ask your organization's W&B administrator to enable the inference gateway.`},{status:404,class:"invalid-model",message:"W&B Inference returned HTTP 404 for model '{model}'. The vendor's 404 article (https://docs.wandb.ai/support/inference/articles/api-error-code-404-model-not-found) says model IDs are case-sensitive; the ids are listed at https://docs.wandb.ai/inference/models"},{status:429,pattern:"Concurrency limit reached for requests",class:"rate-limit",message:`W&B Inference rate-limit error. The vendor's 429 article (https://docs.wandb.ai/support/inference/articles/api-error-code-429-concurrency-limit-rea) covers a 429 with the message "Concurrency limit reached for requests" and lists reducing concurrent requests as one approach; limits are described at https://docs.wandb.ai/inference/usage-limits`}],setup:{url:"https://wandb.ai/settings",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://app.wandb.ai/login?signup=true and sign up for a W&B account (https://docs.wandb.ai/inference/prerequisites)","2. Create an API key: click your user profile icon, then User Settings, then Create new API key, and copy it immediately because W&B shows the full key once (https://docs.wandb.ai/inference/prerequisites); the API reference also names https://wandb.ai/settings (https://docs.wandb.ai/inference/api-reference)",'3. Project: the prerequisites page (https://docs.wandb.ai/inference/prerequisites) lists a W&B project among the items you must have: "Create a project in your W&B account to track usage." The chat completions reference (https://docs.wandb.ai/inference/api-reference/chat-completions) lists "Your W&B team and project: [YOUR-TEAM]/[YOUR-PROJECT] (optional)."','4. Credits: "Serverless Inference credits come with Free, Pro, and Academic plans for a limited time." Free accounts must activate pay-as-you-go inference on the Billing tab or upgrade to a paid plan when credits run out; the default cap for a Free account is $100/month (https://docs.wandb.ai/inference/usage-limits)',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.inference.wandb.ai/v1 (https://docs.wandb.ai/inference: "Serverless Inference gives you access to leading open-source foundation models through W&B Weave and an OpenAI-compatible API."). Docs-verified only: GET https://api.inference.wandb.ai/v1/models answers HTTP 401 without a key, so the 12 model ids (from the 20 in the models page's "Generally available models" table) come from https://docs.wandb.ai/inference/models, retrieved 2026-09-29, and the roster has not been checked; the entry is not yet live-verified. Context windows are the contextWindow values returned by the vendor's public catalog API (GET https://trace.wandb.ai/inference/catalog/models, documented at https://docs.wandb.ai/weave/reference/service-api/inference/inference-catalog-models as "This API is available without authentication."); prices come from https://wandb.ai/site/pricing/tokens/. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (8192) are placeholders: the vendor does not publish a general default or a maximum output figure. errorRules follow the statuses and messages on https://docs.wandb.ai/support/inference and the 401 body observed on 2026-09-29.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.inference.wandb.ai/v1/models answers 401 without a key, so model ids are taken from https://docs.wandb.ai/inference/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_api_key",method:'unauthenticated GET https://api.inference.wandb.ai/v1/models and unauthenticated GET https://api.inference.wandb.ai/v1/chat/completions, both HTTP 401 with body {"error":{"code":"invalid_api_key","message":"Missing bearer authentication in header","type":"invalid_request_error"}}; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public page https://docs.wandb.ai/inference/usage-limits \u2014 "Serverless Inference credits come with Free, Pro, and Academic plans for a limited time."; Free default cap "$100/month"; "W&B requires prepayment for paid Inference access."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),_1e,eLr=E({"src/lib/providers/catalog/xai.json"(){_1e={$schema:"./provider-catalog.schema.json",id:"xai",displayName:"xAI",aliases:["grok"],tier:2,wire:{baseURL:"https://api.x.ai/v1"},models:{default:"grok-4.6",fallbacks:["grok-4.6","grok-4.5","grok-4.3","grok-3","grok-3-mini","grok-4.7"],defaultContextWindow:131072,defaultMaxOutputTokens:4096,catalog:{"grok-4.7":{enumMember:"GROK_4_7",contextWindow:5e5,vision:!0,status:"production",description:"Grok 4.7 \u2014 xAI's newest flagship as of 2026-09-27 (text + image input); not yet the SDK default, see docs.x.ai/developers/grok-4-7"},"grok-4.6":{enumMember:"GROK_4_6",contextWindow:131072,vision:!0,status:"production",description:"Recommended - Grok 4.6, current flagship; vision-capable"},"grok-4.5":{enumMember:"GROK_4_5",contextWindow:131072,vision:!0,status:"production",description:"Grok 4.5 \u2014 vision-capable"},"grok-4.3":{enumMember:"GROK_4_3",contextWindow:131072,vision:!0,status:"production",description:"Grok 4.3 \u2014 vision-capable"},"grok-3":{contextWindow:131072,pricingPerMTok:{input:3,output:15},vision:!1,status:"production",description:"Grok 3 \u2014 still served, though absent from the /models roster"},"grok-3-mini":{contextWindow:131072,pricingPerMTok:{input:.3,output:.5},vision:!1,status:"production",description:"Faster + cheaper Grok 3"},"grok-2-latest":{contextWindow:131072,pricingPerMTok:{input:2,output:10},vision:!1,status:"retired",description:"Retired 2026-08 \u2014 xAI rejects it as an invalid model"},"grok-2-vision-latest":{contextWindow:32768,pricingPerMTok:{input:2,output:10},vision:!1,status:"retired",description:"Retired 2026-08 \u2014 xAI rejects it as an invalid model; vision moved to the grok-4.x line"},"grok-beta":{contextWindow:131072,pricingPerMTok:{input:5,output:15},vision:!1,status:"retired",description:"Retired 2026-08 \u2014 xAI rejects it as an invalid model"}},visionModel:"grok-4.6",topModels:["grok-4.6","grok-4.5","grok-4.3","grok-3","grok-4.7"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Invalid API key|Authentication|invalid_api_key",class:"authentication",message:"Invalid xAI API key. Please check your {apiKeyEnvVar} environment variable. Get one at https://console.x.ai/"},{pattern:"insufficient_quota|quota exceeded",class:"provider",message:"xAI account has insufficient quota. Top up at https://console.x.ai/"}],setup:{url:"https://console.x.ai/",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://console.x.ai/","2. Sign in with your xAI account","3. Create an API key","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-30",method:"GET /models against the live account, cross-checked with a real chat call per id"},liveMatrix:{date:"2026-08-30",result:"grok-2-latest, grok-2-vision-latest and grok-beta are rejected as invalid models. The grok-4.x line replaces them: 4.3/4.5/4.6 all answer, and all three read a 64x64 PNG correctly, so vision moved there from the retired grok-2-vision-latest. An earlier probe with an 8x8 PNG reported no vision \u2014 that was xAI answering 'Invalid PNG image', a complaint about the file rather than the capability. grok-3 and grok-3-mini are kept because they still serve, even though xAI's /models roster omits them: roster absence is not evidence of death here. grok-4.7 added 2026-09-27 from docs.x.ai/developers/grok-4-7 and docs.x.ai/developers/pricing (official docs review only \u2014 no xAI API key was available in this environment, so unlike the rest of this file it has not been roster/chat-probed live; context 500,000 tokens and text+image input are as published, and it is deliberately left with no pricingPerMTok, matching grok-4.6/4.5/4.3, because its real rate is tiered by prompt length ($2/$0.50/$6 per 1M below 200k tokens, $4/$1/$12 at or above) and the schema's pricingPerMTok field can only hold one flat rate)."},addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),E1e,tLr=E({"src/lib/providers/catalog/xiaomi-mimo.json"(){E1e={$schema:"./provider-catalog.schema.json",id:"xiaomi-mimo",displayName:"Xiaomi MiMo",aliases:[],tier:2,wire:{baseURL:"https://api.xiaomimimo.com/v1",apiKeyFallbackEnvVars:["MIMO_API_KEY"]},models:{default:"mimo-v2.6-flash",fallbacks:["mimo-v2.6-flash"],defaultContextWindow:1048576,defaultMaxOutputTokens:131072,catalog:{"mimo-v2.6-flash":{contextWindow:1048576,maxOutputTokens:131072,vision:!1,status:"production",description:"Xiaomi MiMo's usage-priced mimo-v2.6-flash, the vendor's named replacement for the retiring mimo-v2.5. The vendor's OpenClaw and OpenCode integration guides bind the integers 1048576 (context) and 131072 (output) to this exact id, and its API reference gives [1, 131072] as the required range for max_completion_tokens (visible plus reasoning tokens). The model table shows only the rounded labels 1M and 128K, so nothing was expanded from it. This pilot declares text generate/stream; tools, vision, structured output and thinking controls await separate evidence. Account/model access is unverified."}}},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},quirks:{maxTokensField:"max_completion_tokens",omitStreamOptions:!0},errorRules:[],setup:{url:"https://platform.xiaomimimo.com/#/console/api-keys",apiKeyFormat:null,billingPolicy:"promotional-credit",instructions:["1. Sign in to the Xiaomi MiMo platform console with a Xiaomi account and create a pay-as-you-go API key at https://platform.xiaomimimo.com/#/console/api-keys.","2. mimo-v2.6-flash is usage-priced against your account balance. The vendor's promotions page describes bonus credit, from Refer & Earn or new-user registration, that offsets pay-as-you-go API usage and is currently valid for 40 days. Eligibility and amounts vary by campaign; your own entitlement and balance are unverified, and this is not a free tier.","3. Set {apiKeyEnvVar}. The vendor's own examples name the variable MIMO_API_KEY, which is read as a fallback. The key is sent as Authorization: Bearer to https://api.xiaomimimo.com/v1/chat/completions (the vendor also accepts an api-key header, which this entry does not use).","4. Token Plan keys are a separate subscription product and are not covered by this entry. The declared scope is text generate and stream with mimo-v2.6-flash."],description:"Xiaomi MiMo text/stream pilot with a usage-priced mimo-v2.6-flash default. Bonus credit is a campaign-dependent promotion that offsets API usage; no account entitlement, roster, live inference or delivery is verified."},evidence:{rosterVerified:{date:"2026-10-10",code:"PUBLIC_DOCS_ONLY_NOT_ROSTER_VERIFIED",method:"Public documentation GETs only: mimo.mi.com model.md, api/chat/openai-api.md, tokenplan/integration/openclaw.md and opencode.md, quick-start/faq/promotions.md, price/pay-as-you-go.md and updates/deprecate.md. No vendor roster, auth, billing or inference probe ran; this legacy field does not assert roster verification."},billingProbe:{date:"2026-10-10",code:"PUBLIC_DOCS_ONLY_ACCOUNT_NOT_TESTED",method:"Public documentation only: the pay-as-you-go page states the API consumes the account balance by actual token usage, and the promotions page states bonus credit offsets API usage and is currently valid for 40 days with campaign-dependent amounts. No account was created and no credit amount or eligibility was checked."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1977"}}}}),S1e,rLr=E({"src/lib/providers/catalog/xor.json"(){S1e={$schema:"./provider-catalog.schema.json",id:"xor",displayName:"XOR",aliases:[],inferenceKinds:["decide"],wire:{},models:{default:"xor-1.1",topModels:["xor-1.1"],catalog:{"xor-1.1":{contextWindow:25e4,maxOutputTokens:256,vision:!1,status:"production",description:"Recommended - XOR 1.1, decision model that also reads images and video"}}},timeouts:{decideMs:5e3},decisionLimits:{maxStateTokens:2e5,nonAsciiTokensPerChar:1,media:{maxImages:8,video:!0,maxRequestBytes:8388608}},decide:{dialect:"system-one",order:3,baseURLRequired:!0,baseURLNormalize:["strip-trailing-slash","strip-v1-suffix"],baseURLShape:"origin",endpoint:"{baseURL}/v1/systemone",model:{placement:"body"},media:{imagesKey:"images",videoKey:"video"},requestIdHeaders:["x-request-id","x-typesafe-request-id","x-litellm-call-id"],errors:{rules:[{status:401,kind:"authentication"},{status:413,kind:"max_tokens_exceeded"},{status:429,kind:"rate_limit"},{status:503,kind:"overloaded"},{statusMin:500,messagePattern:"(context|prefill|prompt).{0,40}(length|limit|too long|exceed)|(too long|exceeds?).{0,40}(context|tokens)",kind:"max_tokens_exceeded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"error.message"},{path:"error"},{path:"detail",isArray:!0,formatter:"fastapi-validation"},{path:"detail"}]}},setup:{url:"https://huggingface.co/juspay/xor",apiKeyFormat:null,billingPolicy:"free-tier",description:"API key for your XOR endpoint",instructions:["1. Reach an XOR deployment, or use a LiteLLM proxy with a pass-through route to one","2. Set XOR_BASE_URL to its origin (NeuroLink calls <XOR_BASE_URL>/v1/systemone)","3. Set {apiKeyEnvVar} to the key it accepts (on LiteLLM, a virtual key whose team allows xor-1.1)"]},evidence:{rosterVerified:{date:"2026-09-29",method:"The single model id xor-1.1 is the roster the hand-written XOR descriptor shipped; 2026-09-29 is the date it was added, not a date it was checked. The roster was never verified against a live XOR endpoint, and no live probe was run in this change"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1984"}}}}),k1e,nLr=E({"src/lib/providers/catalog/z-ai.json"(){k1e={$schema:"./provider-catalog.schema.json",id:"z-ai",displayName:"Z.AI",aliases:["zai"],tier:2,wire:{baseURL:"https://api.z.ai/api/paas/v4"},models:{default:"glm-5.3",fallbacks:["glm-5.2","glm-5.1","glm-5","glm-4.7","glm-4.6","glm-4.5","glm-4.5-air","glm-4.7-flashx","glm-4.7-flash","glm-5.3-flash","glm-5.3-flashx"],defaultContextWindow:128e3,defaultMaxOutputTokens:16e3,catalog:{"glm-5.3":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`NeuroLink default. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md, retrieved 2026-09-29) gives glm-5.3 as the default of its model parameter and uses it in its request examples, and says "GLM-5.3, GLM-5.2, GLM-5.1 are the latest flagship model series, foundational models specifically designed for agent applications". The GLM-5.3 page (https://docs.z.ai/guides/llm/glm-5.3.md) says "Z.ai's latest flagship model" and "GLM-5.3 currently supports text-only inputs, with a 1M-token context window and a maximum output length of 128K tokens", so vision is false; it also says "GLM-5.3 always operates with reasoning enabled". Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.3, per 1M tokens: Input $1.4, Cached Input $0.26, Output $4.4.`},"glm-5.3-flash":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:'NeuroLink fallback and vision model. The GLM-5.3-Flash/FlashX page (https://docs.z.ai/guides/vlm/glm-5.3-flash.md) shows Input Modality "Video / Image / Text / File", Output Modality "Text", Context Length "1M" and Maximum Output Tokens "128K", lists the model code glm-5.3-flash, and documents image input as image_url content blocks in messages[].content[], so vision is true. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.3-flash in its vision-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.3-Flash, per 1M tokens: Input $0.15, Cached Input $0.03, Output $0.50.'},"glm-5.3-flashx":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:.37,output:1.25,cachedInput:.075},vision:!0,status:"production",description:'NeuroLink fallback. The GLM-5.3-Flash/FlashX page (https://docs.z.ai/guides/vlm/glm-5.3-flash.md) shows Input Modality "Video / Image / Text / File", Output Modality "Text", Context Length "1M" and Maximum Output Tokens "128K", lists the model code glm-5.3-flashx, and states an inference speed of 200 tokens/s for GLM-5.3-FlashX, so vision is true. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.3-flashx in its vision-model enum and uses it in its Image Visual and Video Visual examples. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.3-FlashX, per 1M tokens: Input $0.37, Cached Input $0.075, Output $1.25.'},"glm-5.2":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-5.2 page (https://docs.z.ai/guides/llm/glm-5.2.md) shows Positioning "Flagship Foundation Model", Input Modalities "Text", Context Length "1M" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.2 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.2, per 1M tokens: Input $1.4, Cached Input $0.26, Output $4.4.'},"glm-5.1":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-5.1 page (https://docs.z.ai/guides/llm/glm-5.1.md) shows Positioning "Flagship Foundation Model", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.1 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.1, per 1M tokens: Input $1.4, Cached Input $0.26, Output $4.4.'},"glm-5":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:1,output:3.2,cachedInput:.2},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-5 page (https://docs.z.ai/guides/llm/glm-5.md) shows Positioning "Foundation Model", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5 in its text-model enum, and the Structured Output page (https://docs.z.ai/guides/capabilities/struct-output.md) uses glm-5 in its examples. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5, per 1M tokens: Input $1, Cached Input $0.2, Output $3.2.'},"glm-4.7":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:.6,output:2.2,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.7 page (https://docs.z.ai/guides/llm/glm-4.7.md), tab GLM-4.7, shows Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.7 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.7, per 1M tokens: Input $0.6, Cached Input $0.11, Output $2.2.'},"glm-4.6":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:.6,output:2.2,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.6 page (https://docs.z.ai/guides/llm/glm-4.6.md) shows Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.6 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.6, per 1M tokens: Input $0.6, Cached Input $0.11, Output $2.2.'},"glm-4.5":{contextWindow:128e3,maxOutputTokens:96e3,pricingPerMTok:{input:.6,output:2.2,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.5 page (https://docs.z.ai/guides/llm/glm-4.5.md), which covers GLM-4.5 and GLM-4.5-Air, shows Input Modalities "Text", Context Length "128K" and Maximum Output Tokens "96K", so vision is false, and says "GLM-4.5 has a total parameter count of 355B with 32B active parameters per forward pass". The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.5 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.5, per 1M tokens: Input $0.6, Cached Input $0.11, Output $2.2.'},"glm-4.5-air":{contextWindow:128e3,maxOutputTokens:96e3,pricingPerMTok:{input:.2,output:1.1,cachedInput:.03},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.5 page (https://docs.z.ai/guides/llm/glm-4.5.md), which covers GLM-4.5 and GLM-4.5-Air, shows Input Modalities "Text", Context Length "128K" and Maximum Output Tokens "96K", so vision is false, and describes GLM-4.5-Air as having "106B total parameters and 12B active parameters". The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.5-air in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.5-Air, per 1M tokens: Input $0.2, Cached Input $0.03, Output $1.1.'},"glm-4.7-flashx":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:.07,output:.4,cachedInput:.01},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.7 page (https://docs.z.ai/guides/llm/glm-4.7.md), tab GLM-4.7-FlashX, shows Positioning "Lightweight, High-Speed,and Affordable", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.7-flashx in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.7-FlashX, per 1M tokens: Input $0.07, Cached Input $0.01, Output $0.4.'},"glm-4.7-flash":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:0,output:0,cachedInput:0},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.7 page (https://docs.z.ai/guides/llm/glm-4.7.md), tab GLM-4.7-Flash, shows Positioning "Lightweight, Completely Free", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.7-flash in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.7-Flash: the Input, Cached Input, Cached Input Storage and Output cells each read "Free", recorded here as 0.'}},topModels:["glm-5.3","glm-5.3-flash","glm-5.3-flashx","glm-5.2","glm-5.1","glm-5","glm-4.7","glm-4.6","glm-4.5","glm-4.5-air","glm-4.7-flashx","glm-4.7-flash"],visionModel:"glm-5.3-flash"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{pattern:"insufficient balance or no resource package",class:"provider",message:'Z.AI reports an insufficient balance or no resource package (error.code 1113, HTTP 429). The Errors page says: "Insufficient balance or no resource package. Please recharge." (https://docs.z.ai/api-reference/api-code.md)'},{status:401,class:"authentication",message:`Z.AI rejected the request's authentication (HTTP 401; an unauthenticated GET returned error.code 1001, "Authentication parameter not received in Header, unable to authenticate"). The Errors page (https://docs.z.ai/api-reference/api-code.md) lists error codes 1000, 1001, 1003 and 1005 for HTTP 401. Check {apiKeyEnvVar}. The Introduction page says an API key can be created or managed at {setupUrl}`},{pattern:"unknown model",class:"invalid-model",message:'Z.AI reports an unknown model for {model} (error.code 1211, HTTP 400). The Errors page says: "Unknown Model, please check the model code." (https://docs.z.ai/api-reference/api-code.md)'},{status:429,class:"rate-limit",message:'Z.AI returned HTTP 429. The Errors page (https://docs.z.ai/api-reference/api-code.md) lists "Rate limit reached for requests" (error.code 1302) and "The service may be temporarily overloaded, please try again later" (error.code 1305) for this status.'}],quirks:{responseFormatDowngrade:"json-schema-to-json-object"},setup:{url:"https://z.ai/manage-apikey/apikey-list",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://z.ai/manage-apikey/apikey-list \u2014 the Quick Start (https://docs.z.ai/guides/overview/quick-start.md) says to access the Z.AI Open Platform (https://z.ai/model-api) and "Register or Login.", then to "Create an API Key" in the API Keys management page and "Copy your API Key for use."',"2. Authentication is HTTP Bearer: the Introduction page (https://docs.z.ai/api-reference/introduction.md) shows the header Authorization: Bearer ZAI_API_KEY",'3. Billing as the vendor states it: the Quick Start says to open the Billing Page (https://z.ai/manage-apikey/billing) "to top up if needed"; the pricing page (https://docs.z.ai/guides/overview/pricing.md) lists per-1M-token prices and reads "Free" for GLM-4.7-Flash, GLM-4.5-Flash and GLM-4.6V-Flash; the Errors page (https://docs.z.ai/api-reference/api-code.md) lists error 1113 as "Insufficient balance or no resource package. Please recharge."',"4. Set {apiKeyEnvVar} in your .env file"],description:`Docs-verified only: the vendor's GET https://api.z.ai/api/paas/v4/models needs a key (it answers HTTP 401 without one), so the twelve model ids come from the Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.z.ai/api/paas/v4 (the Introduction page, https://docs.z.ai/api-reference/introduction.md, calls it "Z.ai Platform's general API endpoint" and shows POST https://api.z.ai/api/paas/v4/chat/completions with a messages array); the OpenAI Python SDK page (https://docs.z.ai/guides/develop/openai/python.md) says "Z.AI provides interfaces compatible with OpenAI API, which means you can use existing OpenAI SDK code and seamlessly switch to Z.AI's model services by simply modifying the API key and base URL" and adds "In some scenarios, there are still differences between Z.AI and OpenAI interfaces, but this does not affect overall compatibility." The Introduction page's warning says GLM Coding Plan users follow the Coding Plan tutorial to configure a dedicated endpoint, and the Coding Plan Endpoint Guide (https://docs.z.ai/devpack/quick-start.md) lists https://api.z.ai/api/coding/paas/v4 for OpenAI Chat Completions; this entry uses the general endpoint. Unauthenticated GETs made 2026-09-29: /models and /chat/completions each answered HTTP 401 with the body {"error":{"code":"1001","message":"Authentication parameter not received in Header, unable to authenticate"}}, matching the error shape on the Errors page (https://docs.z.ai/api-reference/api-code.md); errorRules carry the 401 status and the messages the Errors page gives for error codes 1113, 1211 and the 429 status. No POST request was sent. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16000) apply to model ids outside the catalog and are placeholders the vendor does not publish: 128000 equals the Context Length label on the GLM-4.5 page and 16000 equals the maximum-output figure the Chat Completion reference gives for GLM-4-32B-0414-128K. Per-model contextWindow and maxOutputTokens values are the decimal forms of the labels the vendor prints (1M, 200K, 128K, 96K). The pricing page prints display names such as GLM-5.3; each price row is matched to the model id of the same name, and a cell that reads "Free" is recorded as 0. capabilities.tools is model-dependent because the Chat Completion reference states that for vision models tools are "Only supported by \`GLM-5.3-Flash\` series, the GLM-4.6V series, and autoglm-phone-multilingual". capabilities.toolsWithStreaming is true because the Thinking Mode page (https://docs.z.ai/guides/capabilities/thinking-mode.md) gives an Interleaved Thinking + Tool Calling example that sends tools with stream=True and reads tool_calls from the streamed deltas; the Tool Streaming Output page (https://docs.z.ai/guides/capabilities/stream-tool.md) documents a separate tool_stream parameter that this entry does not set. The Thinking Mode page also says "thinking blocks should be explicitly preserved and returned together with the tool results.", and its example appends an assistant message carrying reasoning_content and tool_calls before the tool message; this entry does not set quirks.replayReasoningContent. capabilities.structuredOutput is true because the Structured Output page (https://docs.z.ai/guides/capabilities/struct-output.md) documents response_format {"type": "json_object"}; the Chat Completion reference lists text and json_object as the response_format type values, so quirks.responseFormatDowngrade is set to send json_object for schema requests, and no request with json_schema was sent. The Chat Completion reference says of response_format "Only text models support this field.", and the GLM-5.3-Flash/FlashX page (https://docs.z.ai/guides/vlm/glm-5.3-flash.md) lists Structured Output among its Capabilities ("Supports structured output formats such as JSON for seamless system integration."). capabilities.thinking is false and the entry sets none of the thinking or reasoning_effort request parameters; the Chat Completion reference documents both, and the GLM-5.3 page says "GLM-5.3 always operates with reasoning enabled". billingPolicy holds the schema value free-tier because the catalog schema has no unknown value; it is not a vendor statement of signup terms. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.z.ai/api/paas/v4/models answers 401 without a key, so model ids are taken from https://docs.z.ai/api-reference/llm/chat-completion.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"1001",method:`unauthenticated GET https://api.z.ai/api/paas/v4/models and GET https://api.z.ai/api/paas/v4/chat/completions, no Authorization header \u2014 each HTTP 401, JSON body {"error":{"code":"1001","message":"Authentication parameter not received in Header, unable to authenticate"}}; the code recorded here is the body's error.code string; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://docs.z.ai/guides/overview/quick-start.md (Billing Page "to top up if needed"), https://docs.z.ai/guides/overview/pricing.md (per-1M-token prices; "Free" for GLM-4.7-Flash, GLM-4.5-Flash and GLM-4.6V-Flash) and https://docs.z.ai/api-reference/api-code.md (error 1113 "Insufficient balance or no resource package. Please recharge."); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}});function x1e(e){return P.strictObject({baseURL:P.string().optional(),baseURLTemplate:P.string().optional(),extraCredentials:P.array(P.string()).optional(),missingCredentialMessage:P.string().optional(),apiKeyFallbackEnvVars:P.array(P.string()).optional(),envOverrides:P.strictObject({apiKey:P.string().optional(),baseURL:P.string().optional(),model:P.string().optional()}).optional()}).superRefine((t,r)=>{const n=t.baseURL!==void 0,o=t.baseURLTemplate!==void 0;if(e&&n===o&&r.addIssue({code:"custom",path:["baseURL"],message:"wire requires exactly one of baseURL or baseURLTemplate"}),t.extraCredentials!==void 0&&(t.extraCredentials.length!==1?r.addIssue({code:"custom",path:["extraCredentials"],message:"wire.extraCredentials must have exactly one entry"}):tS.test(t.extraCredentials[0])||r.addIssue({code:"custom",path:["extraCredentials",0],message:"wire.extraCredentials entry must be a valid identifier"}),o||r.addIssue({code:"custom",path:["extraCredentials"],message:"wire.extraCredentials is only valid with baseURLTemplate"})),t.missingCredentialMessage!==void 0&&!o&&r.addIssue({code:"custom",path:["missingCredentialMessage"],message:"wire.missingCredentialMessage is only valid with baseURLTemplate"}),o&&t.extraCredentials!==void 0&&t.extraCredentials.length===1){const i=`{${t.extraCredentials[0]}}`;t.baseURLTemplate?.includes(i)||r.addIssue({code:"custom",path:["baseURLTemplate"],message:"wire.baseURLTemplate must contain the extraCredentials[0] placeholder"})}})}function oLr(e){const t=/\{(\d+)(?:,(\d*))?\}/y;let r=!1,n=!1,o=1;for(let i=0;i<e.length;i+=1){const s=e[i],a=n;if(n=!1,s==="\\")i+=1;else if(r)r=s!=="]";else if(s==="[")r=!0;else if(s===")")n=!0;else{if(s==="*"||s==="+"||s==="?"&&a)return!0;if(s==="?")e[i-1]!=="("&&(o*=2);else if(s==="{"){t.lastIndex=i;const l=t.exec(e);if(l&&(a||l[2]===""||Math.max(Number(l[1]),Number(l[2]??0))>G1e))return!0;l&&l[2]!==void 0&&(o*=Number(l[2])-Number(l[1])+1)}}if(o>q1e)return!0}return!1}function iLr(e){try{return new RegExp(e,"i"),!0}catch{return!1}}function sLr(e){try{return new URL(e),!0}catch{return!1}}function aLr(e){return e.issues.map(t=>`${t.path.join(".")}: ${t.message}`).join("; ")}function A1e(e){return typeof e=="object"&&e!==null&&e.inferenceKinds!==void 0}function lLr(e,t="<in-memory entry>"){if(!A1e(e))return uLr(e,t);const r=lCe.safeParse(e);if(!r.success)throw new Error(`Invalid decide catalog file ${t}: ${aLr(r.error)}`);return r.data}function cLr(e){return"inferenceKinds"in e}function uLr(e,t){if(A1e(e))throw new Error(`Invalid provider catalog file ${t}: inferenceKinds is set, so this is a decide entry; parse it with parseCatalogEntry`);const r=z1e.safeParse(e);if(!r.success)throw new Error(`Invalid provider catalog file ${t}: ${r.error.issues.map(n=>`${n.path.join(".")}: ${n.message}`).join("; ")}`);return r.data}var tS,C1e,R9,I1e,R1e,M9,M1e,P1e,O1e,D1e,N1e,L1e,F1e,$1e,P9,J4,O9,U1e,B1e,D9,z1e,X4,Wu,_v,Y4,G1e,q1e,j1e,V1e,H1e,W1e,N9,K1e,J1e,X1e,Y1e,L9,Z1e,Z4,Q1e,eCe,tCe,rCe,nCe,oCe,iCe,sCe,aCe,lCe,dLr=E({"src/lib/providers/catalog/schema.ts"(){"use strict";pn(),tS=/^[A-Za-z_$][A-Za-z0-9_$]*$/,C1e=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,R9=/^\d{4}-\d{2}-\d{2}$/,I1e=P.strictObject({input:P.number(),output:P.number(),cachedInput:P.number().optional()}),R1e=P.enum(["production","preview","retired"]),M9=P.strictObject({contextWindow:P.number().optional(),maxOutputTokens:P.number().optional(),pricingPerMTok:I1e.optional(),vision:P.boolean(),tools:P.boolean().optional(),status:R1e,description:P.string(),enumMember:P.string().regex(tS,"enumMember must be a valid identifier").optional()}),M1e=x1e(!0),P1e=x1e(!1),O1e=["baseURLTemplate","extraCredentials","missingCredentialMessage","apiKeyFallbackEnvVars"],D1e=P.enum(["authentication","rate-limit","invalid-model","network","provider"]),N1e=P.strictObject({status:P.number().optional(),pattern:P.string().optional(),patternStatuses:P.array(P.number().int()).min(1).optional(),class:D1e,message:P.string()}).superRefine((e,t)=>{if(e.status===void 0&&e.pattern===void 0&&t.addIssue({code:"custom",path:[],message:"errorRules entry requires status or pattern"}),e.patternStatuses!==void 0&&e.pattern===void 0&&t.addIssue({code:"custom",path:["patternStatuses"],message:"errorRules patternStatuses requires pattern"}),e.pattern!==void 0)try{new RegExp(e.pattern,"i")}catch{t.addIssue({code:"custom",path:["pattern"],message:"errorRules pattern must compile as a regular expression"})}}),L1e=P.strictObject({maxTokensField:P.literal("max_completion_tokens").optional(),omitStreamOptions:P.boolean().optional(),timeoutErrorClass:P.literal("provider").optional(),messageContentFormat:P.literal("string").optional(),registryDefaultIgnoresModelEnvVar:P.boolean().optional(),responseFormatDowngrade:P.literal("json-schema-to-json-object").optional(),replayReasoningContent:P.boolean().optional(),rejectRequiredToolChoice:P.boolean().optional(),authHeaderStyle:P.literal("x-api-key").optional()}),F1e=P.strictObject({generateMs:P.number().optional(),streamMs:P.number().optional()}),$1e=P.enum(["free-tier","free-with-card","no-free-tier","promotional-credit"]),P9=P.strictObject({url:P.string(),apiKeyFormat:P.string().nullable(),billingPolicy:$1e,instructions:P.array(P.string()),description:P.string().optional()}),J4=P.strictObject({date:P.string().regex(R9,"date must match YYYY-MM-DD"),status:P.number().optional(),code:P.string().optional(),method:P.string().optional()}),O9=P.strictObject({rosterVerified:J4,authProbe:J4.optional(),billingProbe:J4.optional(),liveMatrix:P.strictObject({date:P.string().regex(R9,"date must match YYYY-MM-DD"),result:P.string()}).nullable(),addedInPR:P.string()}),U1e=P.strictObject({text:P.boolean(),streaming:P.boolean(),tools:P.union([P.boolean(),P.literal("model-dependent")]),toolsWithStreaming:P.boolean(),structuredOutput:P.boolean(),structuredOutputWithTools:P.boolean(),embeddings:P.boolean(),thinking:P.boolean()}),B1e=P.strictObject({default:P.string(),fallbacks:P.array(P.string()),fallbackModelName:P.string().optional(),registryDefaultModel:P.string().optional(),defaultContextWindow:P.number().int().positive().max(Number.MAX_SAFE_INTEGER),defaultMaxOutputTokens:P.number().int().positive().max(Number.MAX_SAFE_INTEGER),catalog:P.record(P.string(),M9),topModels:P.array(P.string()).min(1).optional(),visionModel:P.string().optional(),testModel:P.string().min(1).optional()}).superRefine((e,t)=>{const r=new Set(Object.keys(e.catalog));e.fallbacks.length===0&&t.addIssue({code:"custom",path:["fallbacks"],message:"models.fallbacks must have at least one entry"}),r.has(e.default)||t.addIssue({code:"custom",path:["default"],message:"models.default must be a key of models.catalog"}),e.fallbacks.forEach((i,s)=>{r.has(i)||t.addIssue({code:"custom",path:["fallbacks",s],message:"models.fallbacks entry must be a key of models.catalog"})}),e.fallbackModelName!==void 0&&!r.has(e.fallbackModelName)&&t.addIssue({code:"custom",path:["fallbackModelName"],message:"models.fallbackModelName must be a key of models.catalog"});const n=e.fallbackModelName??e.fallbacks[1]??e.fallbacks[0],o=Object.values(e.catalog).filter(i=>i.status!=="retired").length;if(n!==void 0&&n===e.default&&o>1&&t.addIssue({code:"custom",path:e.fallbackModelName!==void 0?["fallbackModelName"]:["fallbacks"],message:`the fallback model resolves to "${n}", which is also models.default \u2014 a fallback identical to the primary cannot fall back. This catalog declares ${o} selectable models, so name a different one (or drop fallbackModelName to let fallbacks[1] apply). Single-model catalogs are exempt.`}),e.registryDefaultModel!==void 0&&!r.has(e.registryDefaultModel)&&t.addIssue({code:"custom",path:["registryDefaultModel"],message:"models.registryDefaultModel must be a key of models.catalog"}),e.topModels!==void 0){e.topModels.forEach((s,a)=>{r.has(s)||t.addIssue({code:"custom",path:["topModels",a],message:"models.topModels entry must be a key of models.catalog"})});const i=new Set;e.topModels.forEach((s,a)=>{i.has(s)&&t.addIssue({code:"custom",path:["topModels",a],message:"models.topModels must not contain duplicate entries"}),i.add(s)})}if(e.visionModel!==void 0){const i=e.catalog[e.visionModel];i?i.vision||t.addIssue({code:"custom",path:["visionModel"],message:"models.visionModel entry must have vision: true"}):t.addIssue({code:"custom",path:["visionModel"],message:"models.visionModel must be a key of models.catalog"})}}),D9={$schema:P.string().optional(),id:P.string().regex(C1e,"id must be kebab-case"),displayName:P.string(),enumTypeName:P.string().regex(tS,"enumTypeName must be a valid identifier").optional(),credentialsKey:P.string().regex(tS,"credentialsKey must be a valid identifier").optional(),aliases:P.array(P.string())},z1e=P.strictObject({...D9,tier:P.literal(2).optional(),wire:M1e,models:B1e,capabilities:U1e,errorRules:P.array(N1e),quirks:L1e.optional(),timeouts:F1e.optional(),autoSelectPriority:P.number().optional(),setup:P9,evidence:O9}),X4=P.number().int().min(100).max(599),Wu=P.number().int().positive(),_v=P.number().positive(),Y4=P.enum(["authentication","invalid_request","max_tokens_exceeded","rate_limit","overloaded","server","timeout","network"]),G1e=255,q1e=4096,j1e=P.string().min(1).max(200).refine(iLr,{message:"messagePattern is not a valid regular expression"}).refine(e=>!oLr(e),{message:"messagePattern must be bounded: an unescaped * or +, an open-ended {n,}, a {n,m} count above 255, or any quantifier on a group, outside a character class, can backtrack catastrophically on an error message. Put ?, or {n,m} up to 255, only on a plain character, a character class or an escape, and keep the counts side by side to 4096 ways in all (each ? is 2, each {n,m} is m-n+1)"}),V1e=P.strictObject({status:P.union([X4,P.array(X4).min(1)]).optional(),statusMin:X4.optional(),messagePattern:j1e.optional(),kind:Y4,retryable:P.boolean().optional()}),H1e=new Set(["__proto__","constructor","prototype"]),W1e=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,N9=P.string().refine(e=>/^[^.\s]+(?:\.[^.\s]+)*$/.test(e)&&e.split(".").every(t=>!H1e.has(t)),{message:"path must be dot-separated segments without whitespace, and must not use __proto__, constructor or prototype"}),K1e=P.string().regex(W1e,"header name must be an HTTP token"),J1e=P.string().refine(e=>e.trim().length>0&&!/[{}]/.test(e.split("{baseURL}").join("")),{message:"endpoint must not be blank and may only use the {baseURL} placeholder"}),X1e=P.strictObject({path:N9,isArray:P.boolean().optional(),formatter:P.enum(["fastapi-validation"]).optional(),kind:Y4.optional(),retryable:P.boolean().optional()}).refine(e=>e.formatter!==void 0==(e.isArray===!0),{path:["formatter"],message:"a body shape sets isArray: true together with a formatter, or neither: an array without a formatter never matches, and a formatter on a body that is not an array reads the text as an empty list"}),Y1e=new Set(["model","state","questions","__proto__","constructor","prototype"]),L9=P.string().regex(/^[A-Za-z][A-Za-z0-9_]*$/,"a media key must start with a letter and use only letters, digits and underscores").refine(e=>!Y1e.has(e),{message:"a media key must not be model, state, questions, __proto__, constructor or prototype"}),Z1e=P.strictObject({imagesKey:L9,videoKey:L9.optional()}).refine(e=>e.imagesKey!==e.videoKey,{path:["videoKey"],message:"decide.media.videoKey must differ from imagesKey: one body key cannot carry both"}),Z4=8,Q1e=P.string().max(64).regex(/^[A-Z][A-Z0-9_]*$/,"an environment variable name must be upper-case letters, digits and underscores, and start with a letter"),eCe=/^https?:\/\/[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*(?::[0-9]{1,5})?$/,tCe=P.string().max(100).regex(eCe,"a trusted origin must be an http(s) origin: a lower-case scheme, host and optional port, with no path, query, fragment or userinfo").refine(sLr,{message:"a trusted origin must parse as a URL (a valid host, port 0 to 65535)"}),rCe=P.string().max(64).regex(/^[a-zA-Z][a-zA-Z0-9]*$/,"a credentials key must be letters and digits, and start with a letter"),nCe=P.strictObject({baseURLEnvVars:P.array(Q1e).min(1).max(Z4),trustedOrigins:P.array(tCe).min(1).max(Z4),credentialBaseURLs:P.array(P.strictObject({key:rCe,field:P.literal("baseURL")})).min(1).max(Z4).optional()}),oCe=P.strictObject({dialect:P.enum(["system-one","openai-decisions"]),order:Wu,baseURLRequired:P.boolean().optional(),baseURLNormalize:P.array(P.enum(["strip-trailing-slash","strip-v1-suffix"])).optional(),baseURLShape:P.enum(["origin"]).optional(),endpoint:J1e,model:P.strictObject({placement:P.enum(["body","body-unless-alias"]),alias:P.string().min(1).optional()}),authHeader:P.enum(["bearer","x-api-key"]).optional(),stateEncoding:P.enum(["text"]).optional(),media:Z1e.optional(),ambientKeyGuard:nCe.optional(),requestIdHeaders:P.array(K1e).optional(),response:P.strictObject({modelPaths:P.array(N9).optional()}).optional(),errors:P.strictObject({rules:P.array(V1e),default:Y4,bodyShapes:P.array(X1e)})}),iCe=M9.extend({contextWindow:Wu.optional(),maxOutputTokens:Wu.optional()}),sCe=P.strictObject({default:P.string(),catalog:P.record(P.string(),iCe),topModels:P.array(P.string()).min(1).optional(),testModel:P.string().min(1).optional()}).superRefine((e,t)=>{if(!Object.hasOwn(e.catalog,e.default))return;const r=e.catalog[e.default];for(const n of["contextWindow","maxOutputTokens"])r[n]===void 0&&t.addIssue({code:"custom",path:["catalog",e.default,n],message:`${n} is required on the default model; the derived model manifest reads it`})}),aCe=P.strictObject({maxStateTokens:Wu,maxQuestions:Wu.optional(),nonAsciiTokensPerChar:_v.optional(),digitTokensPerChar:_v.optional(),symbolTokensPerChar:_v.optional(),astralTokensPerChar:_v.optional(),models:P.record(P.string(),P.strictObject({maxStateTokens:Wu,nonAsciiTokensPerChar:_v.optional()})).optional(),media:P.strictObject({maxImages:Wu,video:P.boolean(),maxRequestBytes:Wu}).optional(),advisory:P.boolean().optional()}),lCe=P.strictObject({...D9,inferenceKinds:P.tuple([P.literal("decide")]),tier:P.literal(2).optional(),wire:P1e,models:sCe,timeouts:P.strictObject({decideMs:Wu.optional()}).optional(),decisionLimits:aCe.optional(),decide:oCe,setup:P9,evidence:O9}).superRefine((e,t)=>{const{wire:r,decide:n}=e,o=(w,T)=>{t.addIssue({code:"custom",path:w,message:T})},i=new Set,s=new Set;n.errors.rules.forEach((w,T)=>{const S=["decide","errors","rules",T];w.status===void 0==(w.statusMin===void 0)&&o(S,"errors.rules entry needs exactly one of status or statusMin");const k=typeof w.status=="number"?[w.status]:w.status??[],A=w.messagePattern===void 0?"":" with the same messagePattern",x=R=>JSON.stringify([R,w.messagePattern??null]);for(const R of k)i.has(x(R))&&o([...S,"status"],`errors.rules lists status ${R} more than once${A}`),i.add(x(R));w.statusMin!==void 0&&(s.has(x(w.statusMin))&&o([...S,"statusMin"],`errors.rules lists statusMin ${w.statusMin} more than once${A}`),s.add(x(w.statusMin)))});const a=new Set(Object.keys(e.models.catalog));a.has(e.models.default)||o(["models","default"],"models.default must be a key of models.catalog");const l=new Set;(e.models.topModels??[]).forEach((w,T)=>{a.has(w)||o(["models","topModels",T],"models.topModels entry must be a key of models.catalog"),l.has(w)&&o(["models","topModels",T],"models.topModels must not contain duplicate entries"),l.add(w)});const{alias:c,placement:u}=n.model;u==="body-unless-alias"&&c===void 0&&o(["decide","model","alias"],"decide.model.alias is required when placement is body-unless-alias"),u==="body"&&c!==void 0&&o(["decide","model","alias"],"decide.model.alias is only valid with placement body-unless-alias"),c!==void 0&&!a.has(c)&&o(["decide","model","alias"],"decide.model.alias must be a key of models.catalog");for(const w of Object.keys(e.decisionLimits?.models??{}))a.has(w)||o(["decisionLimits","models",w],"decisionLimits.models key must be a key of models.catalog");const d=n.media,p=e.decisionLimits?.media;n.dialect==="openai-decisions"?(d!==void 0&&o(["decide","media"],"decide.media is not valid with dialect openai-decisions: that dialect places images in the request input itself and has no body keys for them"),p?.video===!0&&o(["decisionLimits","media","video"],"decisionLimits.media.video must be false with dialect openai-decisions: its request input has no video part"),u!=="body"&&o(["decide","model","placement"],"decide.model.placement must be body with dialect openai-decisions: the model is always a field of the request")):(d!==void 0&&p===void 0&&o(["decide","media"],"decide.media needs decisionLimits.media: without an allowance the base class refuses every image and video, so these keys would never be written"),d===void 0&&p!==void 0&&o(["decisionLimits","media"],"decisionLimits.media needs decide.media: without body keys the engine would prepare a request's media and then leave it out of the body"),d!==void 0&&p!==void 0&&(p.video&&d.videoKey===void 0&&o(["decide","media","videoKey"],"decide.media.videoKey is required when decisionLimits.media.video is true"),!p.video&&d.videoKey!==void 0&&o(["decide","media","videoKey"],"decide.media.videoKey must be omitted when decisionLimits.media.video is false"))),n.baseURLRequired===!0&&!n.endpoint.includes("{baseURL}")&&o(["decide","endpoint"],"decide.endpoint must contain {baseURL} when decide.baseURLRequired is true");const m=new Set;n.errors.bodyShapes.forEach((w,T)=>{const S=`${w.path}|${w.isArray===!0}`;m.has(S)&&o(["decide","errors","bodyShapes",T],"errors.bodyShapes lists the same path and isArray twice"),m.add(S)});const f=new Set;(n.requestIdHeaders??[]).forEach((w,T)=>{f.has(w.toLowerCase())&&o(["decide","requestIdHeaders",T],"requestIdHeaders lists the same header twice; header names are case-insensitive"),f.add(w.toLowerCase())});const g=n.ambientKeyGuard;if(g!==void 0){const w=r.envOverrides?.baseURL??`${e.id.toUpperCase().replace(/-/g,"_")}_BASE_URL`,T=[["baseURLEnvVars",g.baseURLEnvVars,"variable"],["trustedOrigins",g.trustedOrigins,"origin"]];for(const[k,A,x]of T)new Set(A).size!==A.length&&o(["decide","ambientKeyGuard",k],`lists the same ${x} twice`);const S=g.credentialBaseURLs??[];new Set(S.map(k=>`${k.key}.${k.field}`)).size!==S.length&&o(["decide","ambientKeyGuard","credentialBaseURLs"],"lists the same credentials field twice"),g.baseURLEnvVars.includes(w)&&o(["decide","ambientKeyGuard","baseURLEnvVars"],`must not list the provider's own base-URL variable ${w}: setting it already exempts the key`)}for(const w of O1e)r[w]!==void 0&&o(["wire",w],`wire.${w} is not supported on decide entries yet; ConfiguredDecisionProvider does not read it`);const y=r.baseURL!==void 0,v=r.baseURLTemplate!==void 0;n.baseURLRequired===!0?(y||v)&&t.addIssue({code:"custom",path:["wire",y?"baseURL":"baseURLTemplate"],message:"wire must not set baseURL or baseURLTemplate when decide.baseURLRequired is true; the caller supplies the base URL"}):y===v&&t.addIssue({code:"custom",path:["wire","baseURL"],message:"wire requires exactly one of baseURL or baseURLTemplate unless decide.baseURLRequired is true"})})}}),cCe,F9,uCe,pLr=E({"src/lib/providers/catalog/index.generated.ts"(){"use strict";bDr(),TDr(),_Dr(),EDr(),SDr(),kDr(),xDr(),ADr(),CDr(),IDr(),RDr(),MDr(),PDr(),ODr(),DDr(),NDr(),LDr(),FDr(),$Dr(),UDr(),BDr(),zDr(),GDr(),qDr(),jDr(),VDr(),HDr(),WDr(),KDr(),JDr(),XDr(),YDr(),ZDr(),QDr(),eNr(),tNr(),rNr(),nNr(),oNr(),iNr(),sNr(),aNr(),lNr(),cNr(),uNr(),dNr(),pNr(),mNr(),hNr(),fNr(),gNr(),yNr(),vNr(),wNr(),bNr(),TNr(),_Nr(),ENr(),SNr(),kNr(),xNr(),ANr(),CNr(),INr(),RNr(),MNr(),PNr(),ONr(),DNr(),NNr(),LNr(),FNr(),$Nr(),UNr(),BNr(),zNr(),GNr(),qNr(),jNr(),VNr(),HNr(),WNr(),KNr(),JNr(),XNr(),YNr(),ZNr(),QNr(),eLr(),tLr(),rLr(),nLr(),dLr(),cCe=e=>{const t=lLr(e);if(!cLr(t))throw new Error("a catalog file listed as a decide entry parsed as a chat entry");return t},F9=[Gxe,qxe,jxe,Vxe,Hxe,Wxe,Kxe,Jxe,Xxe,Yxe,Zxe,Qxe,eAe,tAe,rAe,nAe,oAe,iAe,sAe,aAe,lAe,cAe,uAe,dAe,pAe,mAe,hAe,fAe,gAe,yAe,vAe,wAe,bAe,TAe,_Ae,EAe,SAe,kAe,xAe,AAe,IAe,RAe,MAe,PAe,OAe,DAe,NAe,LAe,FAe,$Ae,UAe,BAe,zAe,GAe,qAe,jAe,HAe,WAe,KAe,JAe,XAe,YAe,ZAe,QAe,e1e,t1e,r1e,o1e,i1e,s1e,a1e,l1e,u1e,d1e,p1e,m1e,h1e,f1e,g1e,y1e,v1e,w1e,b1e,T1e,_1e,E1e,k1e],uCe=[CAe,VAe,n1e,c1e,S1e].map(cCe)}});async function St(e,t,r){let n;const o=new Promise((i,s)=>{n=setTimeout(()=>{s(new Kl(r||`Operation timed out after ${t}ms`,t))},t)});try{return await Promise.race([e,o])}finally{n!==void 0&&clearTimeout(n)}}async function Ku(e,t){if(!t||typeof t.addEventListener!="function")return e;const r=()=>{const n=new Error("Operation aborted");return n.name="AbortError",n};return t.aborted?(e.catch(()=>{}),Promise.reject(r())):new Promise((n,o)=>{const i=()=>{e.catch(()=>{}),o(r())};t.addEventListener("abort",i,{once:!0}),e.then(s=>{t.removeEventListener("abort",i),n(s)},s=>{t.removeEventListener("abort",i),o(s)})})}async function $9(e,t,r){return St(e(),t,r)}var Kl,jr=E({"src/lib/utils/async/withTimeout.ts"(){"use strict";Kl=class z1r extends Error{constructor(t,r){super(t),this.timeoutMs=r,this.name="TimeoutError",Error.captureStackTrace&&Error.captureStackTrace(this,z1r)}timeoutMs}}});function Gc(e){if(e!==void 0){if(typeof e=="number"){if(e<=0)throw new Error(`Timeout must be positive, got: ${e}`);return e}if(typeof e=="string"){const t=e.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(!t)throw new Error(`Invalid timeout format: ${e}. Use formats like '30s', '2m', '500ms', or '1.5h'`);const r=parseFloat(t[1]);if(r<=0)throw new Error(`Timeout must be positive, got: ${r}`);switch(t[2]||"ms"){case"ms":return r;case"s":return r*1e3;case"m":return r*60*1e3;case"h":return r*60*60*1e3;default:return r}}throw new Error(`Invalid timeout type: ${typeof e}`)}}function mLr(e,t="generate"){if(t==="stream")return eP.streaming;const r=e.toLowerCase().replace("_","-");return eP.providers[r]||eP.global}async function hLr(e,t,r,n){const o=Gc(t);if(!o)return e;let i;const s=new Promise((a,l)=>{const c=setTimeout(()=>{l(new Ma(`${r} ${n} operation timed out after ${o}ms`,o,r,n))},o);i=c,typeof c=="object"&&c&&"unref"in c&&typeof c.unref=="function"&&c.unref()});try{return await Promise.race([e,s])}finally{i!==void 0&&clearTimeout(i)}}function Ra(e,t,r){const n=Gc(e);if(!n)return null;const o=new AbortController,i=()=>{o.abort(new Ma(`${t} ${r} operation timed out after ${e}`,n,t,r))};let s=setTimeout(i,n);return{controller:o,cleanup:()=>{clearTimeout(s)},reset:()=>{o.signal.aborted||(clearTimeout(s),s=setTimeout(i,n))},timeoutMs:n}}function Ev(e,t){return e&&t?AbortSignal.any([e,t]):e??t}function Q4(e,t){if(!e||!t)return{signal:e??t,dispose:()=>{}};const r=new AbortController,n=[e,t],o=[],i=()=>{for(const{source:a,listener:l}of o)a.removeEventListener("abort",l);o.length=0},s=a=>{r.signal.aborted||r.abort(a.reason),i()};for(const a of n){const l=()=>s(a);a.addEventListener("abort",l,{once:!0}),o.push({source:a,listener:l})}for(const a of n)if(a.aborted){s(a);break}return{signal:r.signal,dispose:i}}function dCe(e){const t=new AbortController,r=e.filter(i=>i!==void 0),n=r.find(i=>i.aborted);if(n)return t.abort(n.reason),t;if(r.length===0)return t;const o=AbortSignal.any(r);return o.addEventListener("abort",()=>{t.signal.aborted||t.abort(o.reason)},{once:!0}),t.__nlMergedSignal=o,t}var Ma,eP,oa=E({"src/lib/utils/timeout.ts"(){"use strict";jr(),Ma=class G1r extends Kl{constructor(t,r,n,o){super(t,r),this.timeout=r,this.provider=n,this.operation=o,this.name="TimeoutError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,G1r)}timeout;provider;operation},eP={global:"30s",streaming:"2m",providers:{openai:"30s",bedrock:"45s",vertex:"60s",anthropic:"60s",azure:"30s","google-ai":"30s",huggingface:"2m",ollama:"5m",mistral:"45s",litellm:"5m"},tools:{default:"10s",filesystem:"5s",network:"30s",computation:"2m"}}}}),tP,rS,nS,Sv,rP=E({"src/lib/hitl/hitlErrors.ts"(){"use strict";tP=class extends Error{constructor(e,t){super(e),this.confirmationId=t,this.name="HITLError"}confirmationId},rS=class extends tP{constructor(e,t,r,n){super(e,n),this.toolName=t,this.reason=r,this.name="HITLUserRejectedError"}toolName;reason},nS=class extends tP{constructor(e,t,r){super(e,t),this.timeout=r,this.name="HITLTimeoutError"}timeout},Sv=class extends tP{constructor(e){super(e),this.name="HITLConfigurationError"}}}}),oS={};ie(oS,{CircuitBreaker:()=>oP,ERROR_CODES:()=>qe,ErrorFactory:()=>pe,NeuroLinkError:()=>Me,isAbortError:()=>or,isRecoverableError:()=>nP,isRetriableError:()=>U9,logStructuredError:()=>mCe,withRetry:()=>pCe,withTimeout:()=>Be});async function Be(e,t,r){let n;const o=t>rE?rE:t,i=new Promise((s,a)=>{n=setTimeout(()=>{a(r||new Error(`Operation timed out after ${t}ms`))},o)});try{return await Promise.race([e,i])}finally{clearTimeout(n)}}async function pCe(e,t){const{maxAttempts:r,delayMs:n,isRetriable:o=()=>!0,onRetry:i}=t;let s;for(let a=1;a<=r;a++)try{return await e()}catch(l){if(s=l instanceof Error?l:new Error(String(l)),a===r||!o(s))throw s;i&&i(a,s),await new Promise(c=>setTimeout(c,n))}throw s||new Error("Retry operation failed with no error information")}function or(e){return!!(e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"||e instanceof Me&&e.category==="abort"||e instanceof Error&&(e.message?.includes("This operation was aborted")||e.message?.includes("The operation was aborted")||e.message?.includes("The user aborted a request")||e.message?.includes("Request was aborted")))}function U9(e){return e instanceof Me?e.retriable:e instanceof nS?!1:[/timeout/i,/network/i,/connection/i,/temporary/i,/rate limit/i,/quota/i,/503/i,/502/i,/504/i].some(r=>r.test(e.message))}function nP(e){const t=e;if("retriable"in e&&typeof t.retriable=="boolean")return t.retriable;const r=e.message?.toLowerCase()||"";return!!(r.includes("rate limit")||r.includes("too many requests")||/\b429\b/.test(r)||r.includes("timeout")||r.includes("etimedout")||r.includes("timed out")||r.includes("econnreset")||r.includes("econnrefused")||r.includes("network")||r.includes("socket")||/\b50[0234]\b/.test(r))}function mCe(e,t){const r={...e.toJSON(),...t};switch(e.severity){case"critical":h.error(`[CRITICAL] ${e.message}`,r);break;case"high":h.error(`[HIGH] ${e.message}`,r);break;case"medium":h.warn(`[MEDIUM] ${e.message}`,r);break;case"low":h.info(`[LOW] ${e.message}`,r);break}}var qe,Me,pe,oP,Qe=E({"src/lib/utils/errorHandling.ts"(){"use strict";wf(),z(),ct(),rP(),qe={TOOL_NOT_FOUND:"TOOL_NOT_FOUND",TOOL_EXECUTION_FAILED:"TOOL_EXECUTION_FAILED",TOOL_TIMEOUT:"TOOL_TIMEOUT",TOOL_VALIDATION_FAILED:"TOOL_VALIDATION_FAILED",INVALID_PARAMETERS:"INVALID_PARAMETERS",MISSING_REQUIRED_PARAM:"MISSING_REQUIRED_PARAM",MEMORY_EXHAUSTED:"MEMORY_EXHAUSTED",NETWORK_ERROR:"NETWORK_ERROR",PERMISSION_DENIED:"PERMISSION_DENIED",PROXY_WORKER_LIFECYCLE_FAILED:"PROXY_WORKER_LIFECYCLE_FAILED",PROVIDER_NOT_AVAILABLE:"PROVIDER_NOT_AVAILABLE",PROVIDER_AUTH_FAILED:"PROVIDER_AUTH_FAILED",PROVIDER_QUOTA_EXCEEDED:"PROVIDER_QUOTA_EXCEEDED",OPERATION_ABORTED:"OPERATION_ABORTED",INVALID_CONFIGURATION:"INVALID_CONFIGURATION",MISSING_CONFIGURATION:"MISSING_CONFIGURATION",INVALID_VIDEO_RESOLUTION:"INVALID_VIDEO_RESOLUTION",INVALID_VIDEO_LENGTH:"INVALID_VIDEO_LENGTH",INVALID_VIDEO_ASPECT_RATIO:"INVALID_VIDEO_ASPECT_RATIO",INVALID_VIDEO_AUDIO:"INVALID_VIDEO_AUDIO",INVALID_VIDEO_MODE:"INVALID_VIDEO_MODE",MISSING_VIDEO_IMAGE:"MISSING_VIDEO_IMAGE",EMPTY_VIDEO_PROMPT:"EMPTY_VIDEO_PROMPT",VIDEO_PROMPT_TOO_LONG:"VIDEO_PROMPT_TOO_LONG",EMPTY_IMAGE_PATH:"EMPTY_IMAGE_PATH",INVALID_IMAGE_TYPE:"INVALID_IMAGE_TYPE",IMAGE_TOO_LARGE:"IMAGE_TOO_LARGE",IMAGE_TOO_SMALL:"IMAGE_TOO_SMALL",INVALID_IMAGE_FORMAT:"INVALID_IMAGE_FORMAT",INVALID_IMAGE_SIZE:"INVALID_IMAGE_SIZE",IMAGE_BUFFER_INVALID:"IMAGE_BUFFER_INVALID",FILE_PROCESSING_FAILED:"FILE_PROCESSING_FAILED",CSV_PROCESSING_FAILED:"CSV_PROCESSING_FAILED",PDF_PAGE_LIMIT_EXCEEDED:"PDF_PAGE_LIMIT_EXCEEDED",PDF_AGGREGATE_PAGE_LIMIT_EXCEEDED:"PDF_AGGREGATE_PAGE_LIMIT_EXCEEDED",PDF_AGGREGATE_SIZE_LIMIT_EXCEEDED:"PDF_AGGREGATE_SIZE_LIMIT_EXCEEDED",PDF_PAGE_COUNT_UNVERIFIABLE:"PDF_PAGE_COUNT_UNVERIFIABLE",PDF_PASSWORD_REQUIRED:"PDF_PASSWORD_REQUIRED",PDF_INCORRECT_PASSWORD:"PDF_INCORRECT_PASSWORD",RATE_LIMITER_QUEUE_FULL:"RATE_LIMITER_QUEUE_FULL",RATE_LIMITER_QUEUE_TIMEOUT:"RATE_LIMITER_QUEUE_TIMEOUT",RATE_LIMITER_RESET:"RATE_LIMITER_RESET",SCORER_NOT_FOUND:"SCORER_NOT_FOUND",EVALUATION_VALIDATION_FAILED:"EVALUATION_VALIDATION_FAILED",EVALUATION_TIMEOUT:"EVALUATION_TIMEOUT",EVALUATION_EXECUTION_FAILED:"EVALUATION_EXECUTION_FAILED",MISSING_PPT_PROPERTIES:"MISSING_PPT_PROPERTIES",INVALID_PPT_PAGES:"INVALID_PPT_PAGES",INVALID_PPT_FORMAT:"INVALID_PPT_FORMAT",INVALID_PPT_PROVIDER:"INVALID_PPT_PROVIDER",INVALID_PPT_OUTPUT_OPTIONS:"INVALID_PPT_OUTPUT_OPTIONS",INVALID_PPT_OUTPUT_PATH:"INVALID_PPT_OUTPUT_PATH",INVALID_PPT_LOGO_PATH:"INVALID_PPT_LOGO_PATH",INVALID_PPT_MODE:"INVALID_PPT_MODE",INVALID_PPT_PROMPT:"INVALID_PPT_PROMPT",CSV_INVALID_INPUT:"CSV_INVALID_INPUT",CSV_ROW_INVALID:"CSV_ROW_INVALID",CSV_FILE_ACCESS_FAILED:"CSV_FILE_ACCESS_FAILED",CSV_PARSE_FAILED:"CSV_PARSE_FAILED"},Me=class extends Error{code;category;severity;retriable;retryAfterMs;context;timestamp;toolName;serverId;constructor(e){super(e.message),this.name="NeuroLinkError",this.code=e.code,this.category=e.category,this.severity=e.severity,this.retriable=e.retriable,this.retryAfterMs=e.retryAfterMs,this.context=e.context||{},this.timestamp=new Date,this.toolName=e.toolName,this.serverId=e.serverId,e.originalError&&(this.stack=e.originalError.stack,this.context.originalMessage=e.originalError.message)}toJSON(){return{code:this.code,message:this.message,category:this.category,severity:this.severity,retriable:this.retriable,context:this.context,timestamp:this.timestamp,toolName:this.toolName,serverId:this.serverId}}},pe=class{static toolNotFound(e,t){return new Me({code:qe.TOOL_NOT_FOUND,message:`Tool '${e}' not found`,category:"validation",severity:"medium",retriable:!1,context:{toolName:e,availableTools:t},toolName:e})}static toolExecutionFailed(e,t,r){return new Me({code:qe.TOOL_EXECUTION_FAILED,message:`Tool '${e}' execution failed: ${t.message}`,category:"execution",severity:"high",retriable:!0,originalError:t,toolName:e,serverId:r})}static toolTimeout(e,t,r,n){const o=n?.exhausted?`exhausted its ${n.totalTimeoutMs}ms total budget`:n?.maxAttempts&&n.maxAttempts>1?`timed out after ${t}ms on attempt ${n.attempt??1} of ${n.maxAttempts}`:`timed out after ${t}ms`;return new Me({code:qe.TOOL_TIMEOUT,message:`Tool '${e}' ${o}`,category:"timeout",severity:"high",retriable:n?.exhausted!==!0,context:{timeoutMs:t,...n??{}},toolName:e,serverId:r})}static invalidParameters(e,t,r){return new Me({code:qe.INVALID_PARAMETERS,message:`Invalid parameters for tool '${e}': ${t.message}`,category:"validation",severity:"medium",retriable:!1,context:{providedParams:r},originalError:t,toolName:e})}static networkError(e,t,r){return new Me({code:qe.NETWORK_ERROR,message:`Network error in tool '${e}': ${t.message}`,category:"network",severity:"high",retriable:!0,originalError:t,toolName:e,serverId:r})}static memoryExhausted(e,t){return new Me({code:qe.MEMORY_EXHAUSTED,message:`Memory exhausted during tool '${e}' execution (${t}MB used)`,category:"resource",severity:"critical",retriable:!1,context:{memoryUsageMB:t},toolName:e})}static aborted(e){const t=new Me({code:qe.OPERATION_ABORTED,message:e?.message||"The operation was aborted",category:"abort",severity:"low",retriable:!1,context:{},originalError:e});return t.name="AbortError",t}static missingConfiguration(e,t){return new Me({code:qe.MISSING_CONFIGURATION,message:`Missing required configuration: ${e}`,category:"validation",severity:"high",retriable:!1,context:t||{}})}static invalidConfiguration(e,t,r){return new Me({code:qe.INVALID_CONFIGURATION,message:`Invalid configuration for '${e}': ${t}`,category:"validation",severity:"high",retriable:!1,context:r||{}})}static csvInvalidInput(e){return new Me({code:qe.CSV_INVALID_INPUT,message:e,category:"validation",severity:"medium",retriable:!1,context:{}})}static csvRowInvalid(e,t){return new Me({code:qe.CSV_ROW_INVALID,message:e,category:"validation",severity:"medium",retriable:!1,context:{rowNumber:t}})}static csvFileAccessFailed(e,t,r){return new Me({code:qe.CSV_FILE_ACCESS_FAILED,message:e,category:"resource",severity:"high",retriable:!1,context:{filePath:t},originalError:r})}static csvParseFailed(e,t,r){return new Me({code:qe.CSV_PARSE_FAILED,message:e,category:"execution",severity:"medium",retriable:!1,context:t,originalError:r})}static invalidVideoResolution(e){return new Me({code:qe.INVALID_VIDEO_RESOLUTION,message:`Invalid resolution '${e}'. Use '720p' or '1080p'`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.resolution",providedValue:e,suggestions:["Use '720p' for standard HD","Use '1080p' for full HD"]}})}static invalidVideoLength(e){return new Me({code:qe.INVALID_VIDEO_LENGTH,message:`Invalid length '${e}'. Use 4, 6, or 8 seconds`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.length",providedValue:e,suggestions:["Use 4 for short clips","Use 6 for balanced duration (recommended)","Use 8 for longer videos"]}})}static invalidVideoAspectRatio(e){return new Me({code:qe.INVALID_VIDEO_ASPECT_RATIO,message:`Invalid aspect ratio '${e}'. Use '9:16' or '16:9'`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.aspectRatio",providedValue:e,suggestions:["Use '9:16' for portrait/vertical video","Use '16:9' for landscape"]}})}static invalidVideoAudio(e){return new Me({code:qe.INVALID_VIDEO_AUDIO,message:`Invalid audio option '${e}'. Must be true or false`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.audio",providedValue:e,suggestions:["Set audio: true to enable audio generation","Set audio: false to disable"]}})}static invalidVideoMode(){return new Me({code:qe.INVALID_VIDEO_MODE,message:"Video generation requires output.mode to be 'video'",category:"validation",severity:"medium",retriable:!1,context:{field:"output.mode",suggestions:["Set output: { mode: 'video' } for video generation"]}})}static missingVideoImage(){return new Me({code:qe.MISSING_VIDEO_IMAGE,message:"Video generation requires an input image",category:"validation",severity:"medium",retriable:!1,context:{field:"input.images",suggestions:["Provide an image via input.images array","Example: input: { text: 'prompt', images: [imageBuffer] }"]}})}static emptyVideoPrompt(){return new Me({code:qe.EMPTY_VIDEO_PROMPT,message:"Video prompt cannot be empty",category:"validation",severity:"medium",retriable:!1,context:{field:"input.text",suggestions:["Provide a text prompt describing the desired video motion/content","Example: 'Smooth camera pan with dramatic lighting'"]}})}static videoPromptTooLong(e,t){return new Me({code:qe.VIDEO_PROMPT_TOO_LONG,message:`Video prompt must be ${t} characters or less (got ${e})`,category:"validation",severity:"medium",retriable:!1,context:{field:"input.text",providedLength:e,maxLength:t,suggestions:[`Shorten your prompt to ${t} characters or less`,"Focus on key visual elements and camera motion"]}})}static emptyImagePath(){return new Me({code:qe.EMPTY_IMAGE_PATH,message:"Image path or URL cannot be empty",category:"validation",severity:"medium",retriable:!1,context:{field:"input.images",suggestions:["Provide a valid file path or URL"]}})}static invalidImageType(){return new Me({code:qe.INVALID_IMAGE_TYPE,message:"Image must be a Buffer, file path string, or URL",category:"validation",severity:"medium",retriable:!1,context:{field:"input.images",suggestions:["Provide image as Buffer: fs.readFileSync('image.jpg')","Or as file path string: './image.jpg'","Or as URL: 'https://example.com/image.jpg'"]}})}static pdfPageLimitExceeded(e,t,r){const n=[`Split the PDF into smaller files (max ${t} pages each)`,"Extract only the pages you need using a PDF editor","For large files, consider Google AI Studio which supports up to 2000MB file size (though page limits still apply)","Convert specific pages to images manually before processing","Bypass this limit with { enforceLimits: false } (not recommended - may cause API errors or unexpected costs)"];return new Me({code:qe.PDF_PAGE_LIMIT_EXCEEDED,message:`PDF page limit exceeded: ${e} pages detected, but ${r} supports maximum ${t} pages.
|
|
63
|
+
3. Verify tool schema format is correct`}],timeouts:{generateMs:12e4,streamMs:12e4},autoSelectPriority:10,setup:{url:"https://huggingface.co/settings/tokens",apiKeyFormat:"^hf_[A-Za-z0-9]{34,}$",billingPolicy:"free-tier",instructions:["1. Visit: https://huggingface.co/settings/tokens","2. Create or sign in to your HuggingFace account","3. Generate a new access token","4. Set {apiKeyEnvVar} in your .env file (HF_TOKEN also accepted)"]},evidence:{rosterVerified:{date:"2026-09-24",method:"Live against router.huggingface.co on 2026-09-24. GET /v1/models returned 138 models; each of the 53 catalog ids was also sent a real chat call. 39 ids are absent from the roster AND rejected with 400 ('does not exist' / 'not supported by any provider'), so they are marked retired and keep their enumMember; the other 14 are on the roster and answered 402 (the test account's monthly credits are spent), which is a billing block, not a rejection, so they stay production. No id had the two signals disagree. topModels swaps the retired Mistral-Large-3 for zai-org/GLM-5, which is on the roster. billingPolicy is free-tier per https://huggingface.co/docs/inference-providers/pricing (free users get monthly credits, no card). apiKeyFormat accepts the hf_ + 34 characters a real token has; the previous hf_ + 37 pattern rejected it. structuredOutput, toolsWithStreaming and per-model vision are left unchanged: /v1/models reports them per serving provider, and the 402 prevented a live round trip that would prove them."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1781"}}}}),_Ae,eNr=E({"src/lib/providers/catalog/inception-labs.json"(){_Ae={$schema:"./provider-catalog.schema.json",id:"inception-labs",displayName:"Inception Labs",aliases:["inception","mercury"],tier:2,wire:{baseURL:"https://api.inceptionlabs.ai/v1"},models:{default:"mercury-2",fallbacks:["mercury-2"],defaultContextWindow:128e3,defaultMaxOutputTokens:5e4,catalog:{"mercury-2":{contextWindow:128e3,maxOutputTokens:5e4,pricingPerMTok:{input:.25,output:.75,cachedInput:.025},vision:!1,status:"production",description:"Recommended - Mercury 2, Inception's enterprise diffusion LLM (dLLM); reasoning, tool use, structured output; 128K context, 1000+ tok/s"}}},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{pattern:"Model must be one of the following",class:"invalid-model",message:"Inception Labs model '{model}' is not valid. Pick a current model \u2014 see https://docs.inceptionlabs.ai/get-started/models."}],setup:{url:"https://platform.inceptionlabs.ai/dashboard/api-keys",apiKeyFormat:"^sk_[A-Za-z0-9_-]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://platform.inceptionlabs.ai and sign in (Google OAuth works)","2. New accounts get 100M free tokens with no card required","3. Create an API key under Dashboard -> API Keys","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-03",status:401,code:"invalid_api_key"},liveMatrix:{date:"2026-09-03",result:`Full capability sweep on mercury-2: chat, stream, system_role, content_text_parts, sampling_params, tools, tools_stream, tools_roundtrip_null, tool_choice_without_tools, json_object, json_schema and tools_plus_schema all 200. The smoke-test json_schema probe (max_tokens:60) came back truncated (finish_reason=length, null content) because this diffusion model spends part of the budget on reasoning tokens before content; re-probed live with max_tokens:300 and got a clean schema-conformant reply ({"name":"Lila Whitaker","age":34}, finish_reason=stop), confirming structuredOutput:true is correct. vision is 400 (text-only; rejects image_url on mercury-2, matching the vendor docs' 'Supported Formats: Text'). bad_key is 401 'Incorrect API key provided'. bad_model is 400 with an array-shaped pydantic error.message; the shared OpenAI-compat wire-error builder coerces a non-string Error message via toString, so that array becomes the literal string "[object Object]" and no regex pattern can match the real text \u2014 errorRules is intentionally left empty rather than shipping a rule that can never fire (see notes).`},addedInPR:"https://github.com/juspay/neurolink/pull/1625"}}}}),EAe,tNr=E({"src/lib/providers/catalog/inceptron.json"(){EAe={$schema:"./provider-catalog.schema.json",id:"inceptron",displayName:"Inceptron",aliases:[],tier:2,wire:{baseURL:"https://api.inceptron.io/v1"},models:{default:"zai-org/GLM-5.3",fallbacks:["moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4-Flash-0731","zai-org/GLM-5.2"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"zai-org/GLM-5.3":{contextWindow:1048576,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`NeuroLink default. The model named in the code examples on the vendor's docs Get Started page (https://docs.inceptron.io), Introduction (https://docs.inceptron.io/introduction), Chat Completions API Reference (https://docs.inceptron.io/API%20Reference/chat-completions), Error Handling and Handling Streaming Responses pages, and in the Kilo Code and OpenCode config ("model": "inceptron/zai-org/GLM-5.3") on https://docs.inceptron.io/Guides/kilo-code, which states: "GLM-5.3 supports a 1M-token context window (1,048,576 tokens)". The config block on that page has "limit" set to context 1048576 and output 1048576. Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; 1M context; quantization fp4; size 754B; input $1.40, output $4.40 and cache read $0.26 per 1M tokens. The docs Models API Reference (https://docs.inceptron.io/API%20Reference/models) lists it with Deployment Mode Serverless. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576, max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].`},"moonshotai/Kimi-K2.6":{contextWindow:262144,pricingPerMTok:{input:.73,output:3.5,cachedInput:.25},vision:!0,status:"production",description:'NeuroLink fallback. The model named in the tool-calling examples on https://docs.inceptron.io/Guides/tool-calling and https://docs.inceptron.io/API%20Reference/chat-completions (request, response and streamed tool-call response examples). Models page https://www.inceptron.io/models (2026-09-29): tags multimodal, tool-calling, reasoning; 262K context; quantization Int4; size 1T; input $0.73, output $3.50 and cache read $0.25 per 1M tokens. The docs Models API Reference (https://docs.inceptron.io/API%20Reference/models) lists it with Deployment Mode Serverless. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 262144, max_output_length 262144, input_modalities ["text","image"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is true from the models page tag multimodal and the roster input_modalities; an image request was not exercised live.'},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:1048576,pricingPerMTok:{input:.13,output:.28,cachedInput:.03},vision:!1,status:"production",description:'NeuroLink fallback. Listed among the currently supported Inceptron model IDs on https://docs.inceptron.io/Guides/kilo-code and with Deployment Mode Serverless on the docs Models API Reference (https://docs.inceptron.io/API%20Reference/models). Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; 1M context; quantization fp4; size 284B; input $0.13, output $0.28 and cache read $0.03 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576, max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].'},"zai-org/GLM-5.2":{contextWindow:1048576,pricingPerMTok:{input:1.2,output:4.2,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink fallback. Listed among the currently supported Inceptron model IDs on https://docs.inceptron.io/Guides/kilo-code and with Deployment Mode Serverless on the docs Models API Reference (https://docs.inceptron.io/API%20Reference/models). Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; 1M context; quantization fp4; size 754B; input $1.20, output $4.20 and cache read $0.26 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576, max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].'},"moonshotai/Kimi-K2.7-Code":{contextWindow:262144,pricingPerMTok:{input:.75,output:3.5,cachedInput:.2},vision:!0,status:"production",description:'Listed among the currently supported Inceptron model IDs on https://docs.inceptron.io/Guides/kilo-code and with Deployment Mode Serverless on the docs Models API Reference (https://docs.inceptron.io/API%20Reference/models). Models page https://www.inceptron.io/models (2026-09-29): tags multimodal, tool-calling, reasoning; 262K context; quantization Int4; size 1T; input $0.75, output $3.50 and cache read $0.20 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 262144, max_output_length 262144, input_modalities ["text","image"], supported_features chat, completion, tools, reasoning, logprobs, json_mode, structured_outputs. vision is true from the models page tag multimodal and the roster input_modalities; an image request was not exercised live.'},"zai-org/GLM-5.3-Flash":{contextWindow:1048576,pricingPerMTok:{input:.15,output:.5,cachedInput:.07},vision:!1,status:"production",description:'The vendor homepage (https://www.inceptron.io) shows the text "Try GLM 5.3 Flash". Models page https://www.inceptron.io/models (2026-09-29): tags text, code, tool-calling, reasoning; "1.3M context"; quantization fp8; size 753B; input $0.15, output $0.50 and cache read $0.07 per 1M tokens. Roster (unauthenticated GET https://api.inceptron.io/v1/models, 2026-09-29): context_length 1048576 (contextWindow uses this figure), max_output_length 1048576, input_modalities ["text"], supported_features chat, completion, tools, reasoning, json_mode, structured_outputs. vision is false because the roster input_modalities is ["text"].'}},topModels:["zai-org/GLM-5.3","moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4-Flash-0731","zai-org/GLM-5.2","moonshotai/Kimi-K2.7-Code","zai-org/GLM-5.3-Flash"],visionModel:"moonshotai/Kimi-K2.6"},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Inceptron returned HTTP 401 unauthorized. The vendor's Error Handling page (https://docs.inceptron.io/Guides/error-handling) describes 401 as: Your API key is missing, invalid, or disabled. NeuroLink reads {apiKeyEnvVar}; keys come from {setupUrl}"},{status:429,class:"rate-limit",message:"Inceptron returned HTTP 429. The vendor's Error Handling page (https://docs.inceptron.io/Guides/error-handling) describes 429 as: You have exceeded your rate limit."}],setup:{url:"https://console.inceptron.io",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://console.inceptron.io and sign in or sign up \u2014 the sign-in page shows Continue with Google, Continue with GitHub and Sign in with email, and links to https://console.inceptron.io/auth/signup",'2. Create an API key \u2014 the Introduction page says: "After signing up, navigate to the account section of the dashboard to create an API key." (https://docs.inceptron.io/introduction)',"3. Set {apiKeyEnvVar} in your .env file (the docs' examples read INCEPTRON_API_KEY)"],description:`OpenAI-compatible endpoint at https://api.inceptron.io/v1 (https://docs.inceptron.io/API%20Reference/chat-completions: "Our API is compliant with OpenAI's Chat Completions API"), with the 6 models the unauthenticated GET /models roster listed on 2026-09-29 in models.catalog. An unauthenticated GET of https://api.inceptron.io/v1/chat/completions returned HTTP 401 with error.type invalid_request_error and error.code unauthorized (2026-09-29), so errorRules match status 401; the 429 rule uses the status the vendor's Error Handling page lists. pricingPerMTok is taken from the models page https://www.inceptron.io/models (2026-09-29); the pricing field in the roster response carries different values. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are NeuroLink placeholders for model ids outside models.catalog, not vendor figures; the roster max_output_length values are quoted in the models.catalog descriptions and no per-model maxOutputTokens is set. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. Verification level: docs- and roster-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.inceptron.io/v1/models \u2014 6 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,code:"unauthorized",method:"unauthenticated GET https://api.inceptron.io/v1/chat/completions \u2014 error.type invalid_request_error; credential-free, no key used"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),SAe,rNr=E({"src/lib/providers/catalog/inco.json"(){SAe={$schema:"./provider-catalog.schema.json",id:"inco",displayName:"Inco",aliases:[],tier:2,wire:{baseURL:"https://api.inco.ai/v1"},models:{default:"glm-5.3",fallbacks:["deepseek-v4.1-flash","kimi-k3","glm-5.3-flash","minimax-m3","glm-5.3:fast","kimi-k3:fast","deepseek-v4.1-flash:fast","glm-5.3-flash:fast","minimax-m3:fast"],defaultContextWindow:1048576,defaultMaxOutputTokens:4096,catalog:{"glm-5.3":{contextWindow:1048576,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:"GLM 5.3 \u2014 standard tier, 744B parameters, exposes `reasoning_effort: true` on the live catalog. Text-only (no `modalities` field in the API response). GLM-5.3-licensed; model card https://huggingface.co/zai-org/GLM-5.3. No vendor-documented recommended/default model exists (per https://platform.inco.ai/docs), so this id was chosen editorially as the catalog default for its reasoning capability and mid-range pricing among the roster. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $1.40 / $4.40 per MTok input/output, $0.26 cached input."},"deepseek-v4.1-flash":{contextWindow:1048576,pricingPerMTok:{input:.3,output:1.2,cachedInput:.006},vision:!1,status:"production",description:"DeepSeek V4.1 Flash \u2014 standard tier, 552B parameters, `reasoning_effort: true`. Text-only (no `modalities` field); compare the `:fast` variant of this id below, which does carry a vision-capable `modalities` field. MIT-licensed; model card https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.30 / $1.20 per MTok input/output, $0.006 cached input. Fallback."},"kimi-k3":{contextWindow:1048576,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!1,status:"production",description:"Kimi K3 \u2014 standard tier, 2.8T parameters (MoE), `reasoning_effort: true`. Text-only (no `modalities` field). Licensed under the Kimi K3 License; model card https://huggingface.co/moonshotai/Kimi-K3. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $3.00 / $15.00 per MTok input/output, $0.30 cached input. Fallback."},"glm-5.3-flash":{contextWindow:1048576,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!1,status:"production",description:"GLM 5.3 Flash \u2014 standard tier, 320B parameters. `reasoning_effort: false` and no `modalities` field on this id (contrast the `:fast` variant, which is vision-capable per its `modalities` field). Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.15 / $0.50 per MTok input/output, $0.03 cached input. Fallback."},"minimax-m3":{contextWindow:1048576,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!0,status:"production",description:"MiniMax M3 \u2014 standard tier, 428B parameters, `reasoning_effort: true`. The live catalog's `modalities` field lists `input: [text, image]`, `output: [text]` for this id, so it is marked vision-capable \u2014 not independently probed for a working image reply (no key was used; see evidence.liveMatrix). MiniMax Community License; model card https://huggingface.co/MiniMaxAI/MiniMax-M3. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.30 / $1.20 per MTok input/output, $0.06 cached input. Fallback."},"glm-5.3:fast":{contextWindow:1048576,pricingPerMTok:{input:2.8,output:8.8,cachedInput:.52},vision:!1,status:"production",description:'GLM 5.3 (Fast) \u2014 fast-tier sibling of the default `glm-5.3`; same context and parameter count, `reasoning_effort: false`, no `modalities` field. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $2.80 / $8.80 per MTok input/output, $0.52 cached input \u2014 2x the standard tier\'s price for the lower-latency "fast" variant. Fallback.'},"kimi-k3:fast":{contextWindow:1048576,pricingPerMTok:{input:6,output:30,cachedInput:.6},vision:!1,status:"production",description:"Kimi K3 (Fast) \u2014 fast-tier sibling of `kimi-k3`; same 2.8T parameters, `reasoning_effort: false`, no `modalities` field. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $6.00 / $30.00 per MTok input/output, $0.60 cached input. Fallback."},"deepseek-v4.1-flash:fast":{contextWindow:1048576,pricingPerMTok:{input:.6,output:2.4,cachedInput:.012},vision:!0,status:"production",description:"DeepSeek V4.1 Flash (Fast) \u2014 fast-tier sibling of `deepseek-v4.1-flash`. The live catalog's `modalities` field lists `input: [text, image]`, `output: [text]` for this id specifically (the standard, non-fast id carries no `modalities` field), so only this entry is marked vision-capable \u2014 not independently probed for a working image reply (no key was used; see evidence.liveMatrix). Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.60 / $2.40 per MTok input/output, $0.012 cached input. Fallback."},"glm-5.3-flash:fast":{contextWindow:1048576,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:"GLM 5.3 Flash (Fast) \u2014 fast-tier sibling of `glm-5.3-flash`. The live catalog's `modalities` field lists `input: [text, image]`, `output: [text]` for this id specifically (the standard, non-fast id carries no `modalities` field), so only this entry is marked vision-capable \u2014 not independently probed for a working image reply (no key was used; see evidence.liveMatrix). MIT-licensed; model card https://huggingface.co/zai-org/GLM-5.3-Flash. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.15 / $0.50 per MTok input/output, $0.03 cached input \u2014 same price as the non-fast `glm-5.3-flash`. Fallback."},"minimax-m3:fast":{contextWindow:1048576,pricingPerMTok:{input:.6,output:2.4,cachedInput:.12},vision:!0,status:"production",description:"MiniMax M3 (Fast) \u2014 fast-tier sibling of `minimax-m3`; same 428B parameters and vision-capable `modalities` field, `reasoning_effort: false`. Pricing per unauthenticated GET https://api.inco.ai/v1/models (2026-09-28, HTTP 200): $0.60 / $2.40 per MTok input/output, $0.12 cached input. Fallback."}},topModels:["glm-5.3","kimi-k3","deepseek-v4.1-flash","glm-5.3-flash","minimax-m3"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key|key_expired",class:"authentication",message:"Invalid Inco API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:404,pattern:"model_not_found",class:"invalid-model",message:"Inco model '{model}' not found. Pick a current model from the public /v1/models roster or {setupUrl}"},{status:429,pattern:"rate_limit_exceeded|spend_limit_exceeded",class:"rate-limit",message:"Inco rate limit exceeded (per-minute cap or monthly spend cap). Wait and retry, or check your plan at {setupUrl}"}],setup:{url:"https://platform.inco.ai/waitlist",apiKeyFormat:"^sk-inco-",billingPolicy:"no-free-tier",instructions:["1. Visit: https://platform.inco.ai/waitlist and request access \u2014 Inco is currently waitlist-gated, not open signup; existing users sign in at https://platform.inco.ai/sign-in","2. Once approved, create an API key on the dashboard's Keys page (https://platform.inco.ai/keys) \u2014 it is shown in full only once and starts with sk-inco-","3. Add prepaid credit before use: billing is strictly pay-per-token with no free tier, and a zero balance returns HTTP 402 (`credit_balance_exhausted`) until you top up","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible Chat Completions endpoint at https://api.inco.ai/v1 (per vendor docs, also reachable via an Anthropic-SDK-shaped API at the host root https://api.inco.ai). The public model catalog (GET /v1/models) is fetchable without a key \u2014 confirmed live 2026-09-28, HTTP 200 with 10 models. Access to a working key is currently gated by a waitlist (https://platform.inco.ai/waitlist), and billing is strictly prepaid pay-per-token with no stated free tier (https://platform.inco.ai/docs#limits)."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.inco.ai/v1/models \u2014 10 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),kAe,nNr=E({"src/lib/providers/catalog/inference-net.json"(){kAe={$schema:"./provider-catalog.schema.json",id:"inference-net",displayName:"Inference.net",aliases:[],tier:2,wire:{baseURL:"https://api.inference.net/v1",envOverrides:{apiKey:"INFERENCE_API_KEY"}},models:{default:"glm-5.2",fallbacks:["glm-5.3","glm-5.3-flash","llama-3.3-70b-instruct","deepseek-v3.2","gpt-4.1-mini","gemini-2.5-flash","claude-haiku-4-5"],defaultContextWindow:1e6,defaultMaxOutputTokens:128e3,catalog:{"glm-5.2":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:1.3,output:4.4,cachedInput:.2},vision:!1,status:"production",description:'Zhipu GLM-5.2, served natively on Inference.net\'s own infrastructure. This is the exact model used in the request-body example on the vendor\'s own API quickstart (https://docs.inference.net/api/api-quickstart, retrieved 2026-09-28: `baseURL: "https://api.inference.net/v1"`, `model: "glm-5.2"`, streaming chat via the OpenAI SDK), so it is picked as the catalog default over an arbitrary roster pick. context_length/max_completion_tokens/pricing read from the live, unauthenticated GET https://api.inference.net/v1/models on 2026-09-28 (200, 63 models). input_modalities is ["text"] only for this model \u2014 no image/video support documented. Not live capability-probed (credential-free onboarding, no key used).'},"glm-5.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.9,output:3,cachedInput:.15},vision:!1,status:"production",description:"Zhipu GLM-5.3 \u2014 newer GLM generation on the same live roster; one of only a handful of models whose supported_endpoints spans chat, responses and messages together (per the live /v1/models payload, 2026-09-28). input_modalities text-only. Roster-listed and priced from the vendor's own /v1/models response; not itself capability-probed."},"glm-5.3-flash":{contextWindow:1048576,maxOutputTokens:128e3,pricingPerMTok:{input:.09,output:.28,cachedInput:.02},vision:!0,status:"production",description:'Zhipu GLM-5.3 Flash \u2014 cheapest model on the roster and the only one of the eight cataloged here whose live /v1/models entry lists input_modalities ["text","image","video"] (2026-09-28 GET), so it is the one model in this entry marked vision: true; not itself capability-probed end to end (no key used).'},"llama-3.3-70b-instruct":{contextWindow:131072,maxOutputTokens:128e3,pricingPerMTok:{input:.13,output:.4},vision:!1,status:"production",description:"Meta Llama 3.3 70B Instruct, open-weight \u2014 widely-recognized baseline fallback. Roster-listed with no cached-input price on the live /v1/models payload (2026-09-28); input_modalities text-only."},"deepseek-v3.2":{contextWindow:163840,maxOutputTokens:65536,pricingPerMTok:{input:.7,output:2,cachedInput:.35},vision:!1,status:"production",description:"DeepSeek V3.2, open-weight \u2014 roster-listed fallback from the live /v1/models GET (2026-09-28); input_modalities text-only."},"gpt-4.1-mini":{contextWindow:1047576,maxOutputTokens:32768,pricingPerMTok:{input:.4,output:1.6,cachedInput:.1},vision:!0,status:"production",description:`OpenAI GPT-4.1 mini, reachable through Inference.net's hosted gateway under the same Bearer-key API (the vendor's quickstart separately documents a 'proxy mode' with extra x-inference-provider* headers for BYO provider keys \u2014 not used here; this catalog entry only relies on the plain gateway call). Live /v1/models (2026-09-28) lists input_modalities ["text","image"], so marked vision: true; not capability-probed end to end.`},"gemini-2.5-flash":{contextWindow:1048576,maxOutputTokens:65536,pricingPerMTok:{input:.3,output:2.5,cachedInput:.03},vision:!0,status:"production",description:'Google Gemini 2.5 Flash, reachable through the same gateway. Live /v1/models (2026-09-28) lists input_modalities ["text","image"], so marked vision: true; not capability-probed end to end.'},"claude-haiku-4-5":{contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:5,cachedInput:.1},vision:!0,status:"production",description:'Anthropic Claude Haiku 4.5, reachable through the same gateway; the live /v1/models payload notes Claude-family entries list only the "messages" supported_endpoint (2026-09-28). input_modalities ["text","image"], so marked vision: true; not capability-probed end to end.'}},topModels:["glm-5.2","glm-5.3","glm-5.3-flash","llama-3.3-70b-instruct","deepseek-v3.2","gpt-4.1-mini","gemini-2.5-flash","claude-haiku-4-5"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Invalid Inference.net API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://inference.net/register/",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://inference.net/register/ and sign up","2. Create an Inference.net project API key from the dashboard (this is the gateway key that goes in {apiKeyEnvVar} \u2014 do not confuse it with a third-party provider key used only for the separate 'proxy mode')","3. New accounts start on a pay-as-you-go, $0-usage tier (1M included gateway requests/month, 30 req/min) per https://inference.net/pricing; confirm current terms before heavy use","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.inference.net/v1 (`Authorization: Bearer <key>`), serving 63 models on the live roster across many upstream families \u2014 Claude, GPT, Gemini, DeepSeek, GLM, Kimi, Llama, Qwen, Gemma, Nemotron, plus Inference.net's own Schematron structured-extraction models \u2014 behind one API. A separate 'proxy mode' can forward to your own provider key via x-inference-provider* headers; not used by this catalog entry."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.inference.net/v1/models \u2014 63 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),xAe,oNr=E({"src/lib/providers/catalog/io-intelligence.json"(){xAe={$schema:"./provider-catalog.schema.json",id:"io-intelligence",displayName:"io.net Intelligence",aliases:["io-net"],tier:2,wire:{baseURL:"https://api.intelligence.io.solutions/api/v1"},models:{default:"meta-llama/Llama-3.3-70B-Instruct",fallbacks:["meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","zai-org/GLM-4.5-Air"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{"zai-org/GLM-5.3-Flash":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:.147997,output:.49399,cachedInput:.073999},vision:!0,status:"production",description:"Z.ai: GLM 5.3 Flash"},"zai-org/GLM-5.3":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:1.39,output:4.4,cachedInput:.695},vision:!1,status:"production",description:"Z.ai: GLM 5.3"},"Qwen/Qwen3.8-27B":{contextWindow:65536,maxOutputTokens:65536,pricingPerMTok:{input:.39,output:2.99,cachedInput:.195},vision:!0,status:"production",description:"Qwen: Qwen3.8 27B"},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:262100,maxOutputTokens:65536,pricingPerMTok:{input:.196,output:.534,cachedInput:.098},vision:!1,status:"production",description:"DeepSeek: DeepSeek V4 Flash 0731"},"moonshotai/Kimi-K3":{contextWindow:1048576,pricingPerMTok:{input:3.18,output:15.9,cachedInput:1.59},vision:!0,status:"production",description:"MoonshotAI: Kimi K3"},"XiaomiMiMo/MiMo-V2.5":{contextWindow:1048576,pricingPerMTok:{input:.1934,output:.6268,cachedInput:.0967},vision:!1,status:"production",description:"Xiaomi: MiMo-V2.5"},"zai-org/GLM-5.2":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:1.552,output:4.884,cachedInput:.776},vision:!1,status:"production",description:"Z.ai: GLM 5.2"},"moonshotai/Kimi-K2.7-Code":{contextWindow:262144,pricingPerMTok:{input:1.026,output:4.53,cachedInput:.513},vision:!0,status:"production",description:"MoonshotAI: Kimi K2.7 Code"},"Qwen/Qwen3.6-35B-A3B":{contextWindow:262144,pricingPerMTok:{input:.1872,output:1.24675,cachedInput:.0936},vision:!0,status:"production",description:"Qwen: Qwen3.6 35B A3B"},"Qwen/Qwen3.6-27B":{contextWindow:32768,pricingPerMTok:{input:.399,output:3.19,cachedInput:.1995},vision:!0,status:"production",description:"Qwen: Qwen3.6 27B"},"MiniMaxAI/MiniMax-M2.7":{contextWindow:262100,maxOutputTokens:65536,pricingPerMTok:{input:.426,output:1.62,cachedInput:.213},vision:!1,status:"production",description:"MiniMaxAI: MiniMax M2.7"},"deepseek-ai/DeepSeek-V4-Flash":{contextWindow:32768,maxOutputTokens:32768,pricingPerMTok:{input:.199,output:.512,cachedInput:.0995},vision:!1,status:"production",description:"DeepSeek: DeepSeek V4 Flash"},"deepseek-ai/DeepSeek-V4-Pro":{contextWindow:1048576,maxOutputTokens:6e5,pricingPerMTok:{input:1.618,output:3.288,cachedInput:.809},vision:!1,status:"production",description:"DeepSeek: DeepSeek V4 Pro"},"moonshotai/Kimi-K2.6":{contextWindow:262142,pricingPerMTok:{input:.76744,output:3.43436,cachedInput:.38372},vision:!0,status:"production",description:"MoonshotAI: Kimi K2.6"},"zai-org/GLM-5.1":{contextWindow:202750,maxOutputTokens:32768,pricingPerMTok:{input:1.29,output:4.22,cachedInput:.645},vision:!1,status:"production",description:"Z.ai: GLM 5.1"},"MiniMaxAI/MiniMax-M2.5":{contextWindow:196600,pricingPerMTok:{input:.294,output:1.176,cachedInput:.147},vision:!1,status:"production",description:"MiniMaxAI/MiniMax-M2.5"},"moonshotai/Kimi-K2.5":{contextWindow:262144,pricingPerMTok:{input:.5284,output:2.785,cachedInput:.2642},vision:!0,status:"production",description:"MoonshotAI: Kimi K2.5"},"zai-org/GLM-5":{contextWindow:202752,pricingPerMTok:{input:.85,output:2.774,cachedInput:.425},vision:!1,status:"production",description:"Z.ai: GLM 5"},"deepseek-ai/DeepSeek-V3.2":{contextWindow:163840,pricingPerMTok:{input:1.4301,output:2.4063,cachedInput:.71505},vision:!1,status:"production",description:"DeepSeek: DeepSeek V3.2"},"moonshotai/Kimi-K2-Thinking":{contextWindow:262144,pricingPerMTok:{input:.6,output:2.5,cachedInput:.3},vision:!1,status:"production",description:"MoonshotAI: Kimi K2 Thinking"},"zai-org/GLM-4.5-Air":{contextWindow:131070,pricingPerMTok:{input:.165,output:.975,cachedInput:.0825},vision:!1,status:"production",description:"Z.ai: GLM-4.5-Air"},"google/gemma-4-26b-a4b-it":{contextWindow:262142,pricingPerMTok:{input:.116,output:.38,cachedInput:.058},vision:!1,status:"production",description:"Google: Gemma 4 26B A4B"},"zai-org/GLM-4.7-Flash":{contextWindow:2e5,pricingPerMTok:{input:.062625,output:.4,cachedInput:.031313},vision:!1,status:"production",description:"Z.ai: GLM 4.7 Flash"},"zai-org/GLM-4.7":{contextWindow:202752,pricingPerMTok:{input:.88,output:2.37,cachedInput:.44},vision:!1,status:"production",description:"Z.ai: GLM 4.7"},"moonshotai/Kimi-K2-Instruct-0905":{contextWindow:262144,pricingPerMTok:{input:.57,output:2.3,cachedInput:.285},vision:!1,status:"production",description:"MoonshotAI: Kimi K2 Instruct 0905"},"openai/gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.188,output:.7,cachedInput:.094},vision:!1,status:"production",description:"OpenAI: gpt-oss-120b"},"deepseek-ai/DeepSeek-R1-0528":{contextWindow:128e3,pricingPerMTok:{input:.56775,output:2.279,cachedInput:.283875},vision:!1,status:"production",description:"DeepSeek: R1 0528"},"zai-org/GLM-4.6":{contextWindow:131072,pricingPerMTok:{input:.536,output:2.07,cachedInput:.268},vision:!1,status:"production",description:"Z.ai: GLM 4.6"},"Qwen/Qwen3-Next-80B-A3B-Instruct":{contextWindow:262144,pricingPerMTok:{input:.1175,output:1.136,cachedInput:.05875},vision:!1,status:"production",description:"Qwen: Qwen3 Next 80B A3B Instruct"},"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar":{contextWindow:106e3,pricingPerMTok:{input:.445,output:2.145,cachedInput:.2225},vision:!1,status:"production",description:"Intel: Qwen3 Coder 480B A35B Instruct INT4 Mixed AR"},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{contextWindow:43e4,pricingPerMTok:{input:.274,output:.8992,cachedInput:.137},vision:!0,status:"production",description:"Meta-Llama: Llama 4 Maverick 17B 128E Instruct FP8"},"mistralai/Mistral-Nemo-Instruct-2407":{contextWindow:128e3,pricingPerMTok:{input:.0635,output:.09875,cachedInput:.03175},vision:!1,status:"production",description:"Mistral: Mistral Nemo Instruct 2407"},"openai/gpt-oss-20b":{contextWindow:64e3,pricingPerMTok:{input:.067,output:.24,cachedInput:.0335},vision:!1,status:"production",description:"OpenAI: gpt-oss-20b"},"meta-llama/Llama-3.3-70B-Instruct":{contextWindow:128e3,pricingPerMTok:{input:.6066,output:1.0386,cachedInput:.3033},vision:!1,status:"production",description:"Recommended - Meta: Llama 3.3 70B Instruct"}},topModels:["meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","zai-org/GLM-4.5-Air","google/gemma-4-26b-a4b-it","zai-org/GLM-5.3-Flash","Qwen/Qwen3.8-27B","deepseek-ai/DeepSeek-V4-Pro"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{pattern:"requested model is not available for Chat Completions API",class:"invalid-model",message:"io.net Intelligence model '{model}' is not available for the Chat Completions API. Choose a current model from https://ai.io.net/."}],setup:{url:"https://ai.io.net/",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://ai.io.net/","2. Sign in or create an io.net account","3. Create an API key for your project in the console","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-03",status:401},liveMatrix:{date:"2026-09-03",result:"SDK end-to-end via dist: generate, stream, tool call (nonce round-trip) and json_schema structured output all pass. Tools + schema: after a tool result the vendor answers finish_reason=tool_calls with no tool_calls and null content when JSON is requested (4/4 raw replays); the SDK now re-asks that step once with tool_choice none and recovers the JSON \u2014 passed 1/1 in the final live proof through dist/index.js, tool nonce present in structuredData. structuredOutputWithTools is declared true on that basis."},addedInPR:"https://github.com/juspay/neurolink/pull/1625",billingProbe:{date:"2026-09-03",status:200,method:"official io.net Intelligence web app plan configuration: Standard default with daily_limit fallback of 2; Professional and Developer are paid upgrade plans"}}}}}),AAe,iNr=E({"src/lib/providers/catalog/koscompute.json"(){AAe={$schema:"./provider-catalog.schema.json",id:"koscompute",displayName:"Kosmik Compute",aliases:[],tier:2,wire:{baseURL:"https://api.koscompute.com/v1"},models:{default:"qwen/qwen3.8-27b",fallbacks:["qwen/qwen3.8-27b"],defaultContextWindow:262144,defaultMaxOutputTokens:32768,catalog:{"qwen/qwen3.8-27b":{contextWindow:262144,maxOutputTokens:32768,pricingPerMTok:{input:.35,output:2.2,cachedInput:.09},vision:!0,status:"production",description:"Qwen 3.8 27B (fp8) \u2014 the only chat-capable model in KosCompute's roster; the other 6 ids returned by /v1/models are Whisper transcription and TTS models (endpoint_kind audio/tts), not chat. Confirmed via unauthenticated GET https://api.koscompute.com/v1/models (2026-09-28, HTTP 200): context_length 262144 (modality_context_lengths.text), 131072 for image input; max_output_length/max_output 32768; pricing input $0.35 / output $2.20 per MTok, cached input $0.09 (the response's own precomputed input/output/cache_read fields, matching prompt/completion/input_cache_read per-token rates); supported_features [tool_calling, json_mode, structured_outputs, reasoning]; supported_endpoints [/v1/chat/completions, /v1/responses, /v1/messages]; input_modalities [text, image] with vision.max_pixels 1048576. model_info reports reasoning:true, extended_thinking:true, thinking_default:true, max_thinking_tokens:8192, supported_reasoning_efforts [none, low, medium, xhigh]. Docs corroborate generically for the chat-completions surface: api.koscompute.com/docs/guides/tool-calling/ (tools array, tool_choice auto|none|required|named, results read from choices[0].message.tool_calls), /docs/guides/structured-output/ (response_format json_object and json_schema, 'Unsupported models return a 400 capability error' for models lacking json_mode/structured_outputs \u2014 this model advertises both), and /docs/guides/streaming/ (stream:true, text/event-stream, data: [DONE]). No live capability probe was run (credential-free onboarding, no API key) \u2014 see evidence.liveMatrix: null."}},topModels:["qwen/qwen3.8-27b"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Invalid KosCompute API key. Check {apiKeyEnvVar}. See {setupUrl} for what KosCompute's docs publish on authentication \u2014 the vendor documents 401 as 'missing, invalid, expired, inactive, or conflicting credentials' but gives no example error body or code string."},{status:404,pattern:"model_not_found",class:"invalid-model",message:"KosCompute model '{model}' not found. Pick a current id from an unauthenticated GET https://api.koscompute.com/v1/models."},{status:429,pattern:"concurrent_limit_exceeded",class:"rate-limit",message:"KosCompute per-key concurrency limit exceeded for '{model}'. Wait for an in-flight request to finish, or reduce parallel requests, before retrying."}],setup:{url:"https://api.koscompute.com/docs/overview/quickstart/",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. KosCompute publishes no public signup, dashboard, or key-management page as of 2026-09-28 \u2014 the docs' quickstart (this URL) assumes you already hold a key and only shows how to use one, via `export KOSCOMPUTE_API_KEY=\"your-api-key\"`; the site's only 'Start building' call-to-action also points here, not to a signup form","2. The docs reference an account 'balance' (/docs/overview/authentication/: 'Authentication success does not guarantee model access, remaining account balance, or available capacity') but publish no pricing, free-tier, or top-up page, so billing policy could not be confirmed from public sources \u2014 treat this entry's `no-free-tier` as the conservative default in the absence of any documented free allocation, not a confirmed vendor policy","3. Once you have a key (provisioned out of band), set {apiKeyEnvVar} in your .env file","4. Sanity-check connectivity first with an unauthenticated GET https://api.koscompute.com/v1/models (no key needed) before spending a real chat request"],description:"OpenAI-compatible endpoint at https://api.koscompute.com/v1, described by the vendor as EU-hosted inference (docs: 'EU-hosted, OpenAI-compatible inference for chat, reasoning, vision, speech recognition, and speech synthesis'); also exposes Responses-API and Anthropic-Messages-compatible surfaces for the same chat model. No public signup or key-management page is published, and billing policy is unconfirmed."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.koscompute.com/v1/models \u2014 7 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),CAe,sNr=E({"src/lib/providers/catalog/laya.json"(){CAe={$schema:"./provider-catalog.schema.json",id:"laya",displayName:"Laya",aliases:[],inferenceKinds:["decide"],wire:{},models:{default:"typed-decisions",topModels:["typed-decisions","multilingual","english","auto"],catalog:{"typed-decisions":{contextWindow:1024,maxOutputTokens:256,vision:!1,status:"production",description:"Recommended - Laya fine-tuned for typed decisions"},english:{contextWindow:512,maxOutputTokens:256,vision:!1,status:"production",description:"Laya, English base checkpoint (512-token window)"},multilingual:{contextWindow:1024,maxOutputTokens:256,vision:!1,status:"production",description:"Laya, 100+ languages"},auto:{contextWindow:512,maxOutputTokens:256,vision:!1,status:"production",description:"Let Laya pick a checkpoint by language"}}},timeouts:{decideMs:5e3},decisionLimits:{maxStateTokens:320,maxQuestions:64,nonAsciiTokensPerChar:1.5,models:{"typed-decisions":{maxStateTokens:768},multilingual:{maxStateTokens:768,nonAsciiTokensPerChar:.6},english:{maxStateTokens:320},auto:{maxStateTokens:320}}},decide:{dialect:"system-one",order:2,baseURLRequired:!0,baseURLNormalize:["strip-trailing-slash"],endpoint:"{baseURL}/predict",model:{placement:"body-unless-alias",alias:"auto"},requestIdHeaders:["x-litellm-call-id"],response:{modelPaths:["routing.model","model"]},errors:{rules:[{status:[401,403],kind:"authentication"},{status:413,kind:"max_tokens_exceeded"},{status:429,kind:"rate_limit"},{status:503,kind:"overloaded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"error.message"},{path:"detail",isArray:!0,formatter:"fastapi-validation",kind:"invalid_request",retryable:!1},{path:"detail"}]}},setup:{url:"https://github.com/NandhaKishorM/laya",apiKeyFormat:null,billingPolicy:"free-tier",description:"API key for your Laya endpoint",instructions:["1. Run a Laya server, or use a LiteLLM proxy with a pass-through route to one","2. Set LAYA_BASE_URL to its base URL (NeuroLink calls <LAYA_BASE_URL>/predict)","3. Set {apiKeyEnvVar} to the key it accepts (on LiteLLM, a virtual key with that route in its Allowed Routes)"]},evidence:{rosterVerified:{date:"2026-09-24",method:"Checkpoint ids typed-decisions, multilingual and english as listed in docs/getting-started/providers/laya.md and answered by a live Laya 0.3.5 server (routing.model); auto sends no model and lets Laya's router choose"},liveMatrix:{date:"2026-09-24",result:"A 60,000-character state was answered 200 on a 1,024-token window, so Laya truncates silently and decisionLimits refuses over-window input (768 state tokens on typed-decisions and multilingual, 320 on english and auto). Chinese measured about 1.4 tokens per character on the English tokenizer and 0.56 on multilingual."},addedInPR:"https://github.com/juspay/neurolink/pull/1978"}}}}),IAe,aNr=E({"src/lib/providers/catalog/lemonfox-ai.json"(){IAe={$schema:"./provider-catalog.schema.json",id:"lemonfox-ai",displayName:"Lemonfox AI",aliases:["lemonfox"],tier:2,wire:{baseURL:"https://api.lemonfox.ai/v1"},models:{default:"deepseek-v4-flash",fallbacks:["mimo-v2.5-pro"],defaultContextWindow:32768,defaultMaxOutputTokens:4096,catalog:{"deepseek-v4-flash":{contextWindow:1e6,vision:!1,status:"production",description:`NeuroLink default. On https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29) the model parameter reads "Specify the model ID to be used. Default: deepseek-v4-flash. Also supported: mimo-v2.5-pro.", the introduction says "We support state-of-the-art open-source AI models, including DeepSeek V4 Flash (default) and MiMo V2.5 Pro.", and the model table row reads "DeepSeek V4 Flash is our default model \u2014 fast, cost-effective, and suitable for most tasks. Supports a 1M token context window." with "Price / 1M tokens" $0.50. contextWindow 1000000 is NeuroLink's decimal reading of "1M". The page's JavaScript, Python and Curl examples name this id.`},"mimo-v2.5-pro":{vision:!1,status:"production",description:'NeuroLink fallback. On https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29) the model parameter reads "Specify the model ID to be used. Default: deepseek-v4-flash. Also supported: mimo-v2.5-pro.", the introduction names "MiMo V2.5 Pro", and the model table row reads "MiMo V2.5 Pro is a powerful model from Xiaomi, recommended for complex reasoning and coding tasks." with "Price / 1M tokens" $1.25. No contextWindow is set.'}},topModels:["deepseek-v4-flash","mimo-v2.5-pro"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Lemonfox AI answered HTTP 401 (a request with no key gets: "You didn't provide an API key."). Check {apiKeyEnvVar}. Keys: https://lemonfox.ai/apis/keys`}],setup:{url:"https://lemonfox.ai/signup",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://lemonfox.ai/signup (the "Get started" and "Start Your Free Trial" links on https://www.lemonfox.ai/apis/chat both point to /signup); sign-up was not attempted while building this entry',`2. Create an API key at https://lemonfox.ai/apis/keys \u2014 https://www.lemonfox.ai/apis/chat links "create an API key" to that page, and the API's 401 reply says "You can obtain an API key from https://lemonfox.ai/apis/keys."`,'3. Billing as the vendor states it: https://www.lemonfox.ai/ shows "Try our APIs for 1 month for free."; https://www.lemonfox.ai/apis/chat shows "First month for free!" and lists "Price / 1M tokens" of $0.50 for deepseek-v4-flash and $1.25 for mimo-v2.5-pro; https://www.lemonfox.ai/terms says Lemon Fox GmbH uses Paddle as its Merchant of Record and offers "subscription-based pricing and usage-based pricing"',"4. Set {apiKeyEnvVar} in your .env file"],description:`Docs-verified only: the vendor's GET https://api.lemonfox.ai/v1/models needs a key (it answers HTTP 401 without one), so the two model ids come from https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.lemonfox.ai/v1: the page says "Our OpenAI-compatible API takes a list of messages as input and provides an AI-generated (assistant) message as output.", its JavaScript and Python examples pass baseURL/base_url "https://api.lemonfox.ai/v1" to the OpenAI client, its API Parameters section shows POST https://api.lemonfox.ai/v1/chat/completions, and its Curl example sends the header Authorization: Bearer YOUR_API_KEY. Unauthenticated GETs made 2026-09-29: /models, /chat/completions and the base URL /v1 each answered HTTP 401 with the JSON body {"status":401,"error":{"message":"You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY). You can obtain an API key from https://lemonfox.ai/apis/keys.","type":"invalid_request_error","param":null,"code":null}}. No POST request was sent. errorRules holds one rule, for status 401. The page's model table lists deepseek-v4-flash and mimo-v2.5-pro; a second table under the heading "Deprecated models" lists llama-8b-chat and llama-70b-chat, each description starting "Deprecated.", and those two ids are not in this catalog. models.defaultContextWindow (32768) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish, for model ids outside models.catalog; the page's max_tokens parameter reads "integer, optional, default: infinity". deepseek-v4-flash's contextWindow (1000000) is NeuroLink's decimal reading of "Supports a 1M token context window."; mimo-v2.5-pro has no contextWindow set. pricingPerMTok is unset on both models: the model table has one column, "Price / 1M tokens" ($0.50 and $1.25), and the catalog field takes separate input and output figures. Each model's vision field holds false, a placeholder for a boolean the catalog schema requires; it is not a vendor statement. Each model's status field holds production, a value the catalog schema requires; the page lists these two models in its main table. capabilities.text is true because the page's examples send a messages array and read choices[0].message.content. capabilities.streaming is true because the page's stream parameter reads "incremental message updates are transmitted as server-sent events with data-only messages." capabilities.tools, toolsWithStreaming, structuredOutput, structuredOutputWithTools, embeddings and thinking are false, meaning not declared by this entry: the page's API Parameters section lists messages, model, max_tokens, stop, stream, frequency_penalty, presence_penalty, temperature and top_p, and no request exercising any capability was sent. billingPolicy holds free-with-card, the growth queue's classification, because the catalog schema has no unknown value and takes one of free-tier, free-with-card and no-free-tier; it is not a vendor statement of signup terms, and the vendor's own wording is in setup.instructions step 3 and evidence.billingProbe. apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.lemonfox.ai/v1/models answers 401 without a key, so model ids are taken from https://www.lemonfox.ai/apis/chat (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_request_error",method:`unauthenticated GET https://api.lemonfox.ai/v1/models with no credentials \u2014 HTTP 401, content-type application/json; charset=utf-8, JSON body {"status":401,"error":{"message":"You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY). You can obtain an API key from https://lemonfox.ai/apis/keys.","type":"invalid_request_error","param":null,"code":null}}; code records the body's error.type because error.code is null; the same day unauthenticated GETs of https://api.lemonfox.ai/v1/chat/completions and https://api.lemonfox.ai/v1 answered HTTP 401 with a byte-identical body; credential-free, no key used, no POST request sent`},billingProbe:{date:"2026-09-29",method:'public pages https://www.lemonfox.ai/ ("Try our APIs for 1 month for free."), https://www.lemonfox.ai/apis/chat ("First month for free!", "Start Your Free Trial") and https://www.lemonfox.ai/terms (Paddle as Merchant of Record; "subscription-based pricing and usage-based pricing"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),RAe,lNr=E({"src/lib/providers/catalog/lilac.json"(){RAe={$schema:"./provider-catalog.schema.json",id:"lilac",displayName:"Lilac",aliases:[],tier:2,wire:{baseURL:"https://api.getlilac.com/v1"},models:{default:"moonshotai/kimi-k2.6",fallbacks:["minimaxai/minimax-m3","zai-org/glm-5.2","google/gemma-4-31b-it"],defaultContextWindow:262144,defaultMaxOutputTokens:262144,catalog:{"moonshotai/kimi-k2.6":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.7,output:3.5,cachedInput:.16},vision:!0,status:"production",description:"Moonshot AI Kimi K2.6 \u2014 the model used in every code sample on Lilac's own quickstart and chat-completions docs (including its vision example), so it is chosen as `default` on that basis; no capability probe was possible without a key. Vendor description: 'Moonshot AI's multimodal agentic model for long-horizon coding, tool use, and design workflows.' Live roster (unauthenticated GET /v1/models, 2026-09-28): context_length 262144, top_provider.max_completion_tokens 262144 (not documented separately as a distinct output ceiling \u2014 the roster reports it equal to the context window, so treat it as an upper bound rather than a proven lower cap), INT4 quantization, input_modalities text+image (no video). supported_parameters includes response_format, structured_outputs, tools and tool_choice; supported_features is [tools, reasoning]. Pricing per https://docs.getlilac.com/inference/models (retrieved 2026-09-28, matches the live roster exactly): $0.70 / $3.50 per MTok input/output, $0.16 per MTok cached input. docs.getlilac.com/inference/openai-compatibility.md lists vision, tool/function calling and structured output (JSON mode) as generally-supported features of the API; this model's own architecture also reports image input, so vision is true here."},"minimaxai/minimax-m3":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.28,output:1.1,cachedInput:.05},vision:!0,status:"production",description:"MiniMax M3 \u2014 the largest-context model on the roster. Vendor description: 'MiniMax's native multimodal 428B MoE reasoning model with a 1M-token context window and agentic tool-use support.' Live roster (2026-09-28): context_length 1048576, max_completion_tokens 1048576, FP8, input_modalities text+image+video (vision true). supported_parameters includes response_format, structured_outputs, tools, tool_choice and chat_template_kwargs (MiniMax's per-model reasoning toggle is `thinking_mode`). Pricing per docs.getlilac.com/inference/models (2026-09-28, matches roster): $0.28 / $1.10 per MTok input/output, $0.05 per MTok cached input. Roster-verified only, not capability-probed without a key; first fallback."},"zai-org/glm-5.2":{contextWindow:524288,maxOutputTokens:524288,pricingPerMTok:{input:.9,output:3,cachedInput:.17},vision:!1,status:"production",description:"Zhipu GLM 5.2. Vendor description: '743B MoE model for long-context reasoning, coding, and agentic tool-use workflows.' Live roster (2026-09-28): context_length 524288, max_completion_tokens 524288, FP8/NVFP4, input_modalities text-only (no image/video \u2014 vision false, the only non-vision model in this roster). supported_parameters includes response_format, structured_outputs, tools, tool_choice and reasoning_effort \u2014 this is the one model whose docs say `reasoning_effort` also works as a plain top-level field (OpenAI-style), not only inside `chat_template_kwargs`. Pricing per docs.getlilac.com/inference/models (2026-09-28, matches roster): $0.90 / $3.00 per MTok input/output, $0.17 per MTok cached input. Roster-verified only, not capability-probed without a key; fallback."},"google/gemma-4-31b-it":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.11,output:.35},vision:!0,status:"production",description:"Google Gemma 4 31B instruct-tuned. Vendor description: 'Google's open 31B instruction-tuned model.' Live roster (2026-09-28): context_length 262144, max_completion_tokens 262144, FP8, input_modalities text+image+video (vision true). supported_parameters includes response_format and tools but, unlike the other three models on this roster, does NOT list structured_outputs \u2014 and docs.getlilac.com/inference/models carries an explicit caveat for this model: combining its reasoning parser with `enable_thinking: false` 'can silently disable xgrammar-backed structured output.' Pricing per docs (2026-09-28, matches roster): $0.11 / $0.35 per MTok input/output; no cached-input rate is published for this model (the live roster returns no `input_cache_read` field for it either). Roster-verified only, not capability-probed without a key; fallback."}},topModels:["moonshotai/kimi-k2.6","minimaxai/minimax-m3","zai-org/glm-5.2","google/gemma-4-31b-it"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[],setup:{url:"https://console.getlilac.com",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://console.getlilac.com and sign up with your email or a Google account","2. Create an organization, then go to API Keys in the dashboard and create a new key \u2014 it is shown only once, so copy it immediately","3. Go to Billing, click Add Credits and complete the Stripe checkout (as little as $5.00) \u2014 a positive credit balance is required before you can make any API request; there is no free tier or free credits","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.getlilac.com/v1 \u2014 docs.getlilac.com/inference/openai-compatibility.md states it 'provides an OpenAI-compatible API' and that pointing the official OpenAI SDK at it with a new base_url/api_key is sufficient. GET /v1/models is public and unauthenticated (confirmed live, 200, 4 models, 2026-09-28). Embeddings, audio, fine-tuning, the Assistants API, Batch API and file uploads are explicitly documented as not yet available. Billing is prepaid credit via Stripe with no minimum spend or contract once funded, but a positive balance is required before any request succeeds \u2014 no free tier. Rate limit: 200 requests/minute per organization; excess requests may get HTTP 429 with a Retry-After header. No self-service signup URL was found in the initial lead for this vendor, but docs.getlilac.com/inference/quickstart.md (fetched 2026-09-28) documents a normal self-serve console at console.getlilac.com \u2014 new-model requests still go through contact@getlilac.com, and enterprises wanting monthly invoicing instead of prepaid credits can also email that address."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.getlilac.com/v1/models \u2014 4 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),MAe,cNr=E({"src/lib/providers/catalog/llmtech.json"(){MAe={$schema:"./provider-catalog.schema.json",id:"llmtech",displayName:"LLM Tech",aliases:[],tier:2,wire:{baseURL:"https://api.llmtech.eu/v1"},models:{default:"nvidia/Qwen3.8-27B-NVFP4",fallbacks:["nvidia/Qwen3.8-27B-NVFP4"],defaultContextWindow:262144,defaultMaxOutputTokens:32768,catalog:{"nvidia/Qwen3.8-27B-NVFP4":{contextWindow:262144,maxOutputTokens:32768,pricingPerMTok:{input:.25,output:2.09,cachedInput:.04},vision:!0,status:"production",description:"LLM Tech's sole hosted chat model (NVFP4-quantized Qwen3.8-27B on Blackwell), self-hosted on EU hardware (GPU node in Italy, edge in Nuremberg). Re-verified live via unauthenticated GET https://api.llmtech.eu/v1/models on 2026-09-28 (HTTP 200, exactly 1 model): context_length 262144, max_output/max_output_tokens 32768, pricing_per_m input $0.25 / output $2.09 / cache_read $0.04 per MTok, and a features array of [tools, json_mode, structured_outputs, logprobs, reasoning, vision] on the model object itself. All of this matches the vendor's own model page (https://llmtech.eu/models/qwen3.8-27b, retrieved 2026-09-28), which documents: an OpenAI-compatible client.chat.completions.create(...) quickstart against this baseURL; SSE streaming ('SSE, OpenAI format', stream=True in the sample); tool calling ('yes, with structured outputs'); real vision support ('yes, the vision tower is kept in BF16 and works' \u2014 image tokens count toward prompt_tokens and bill at the input rate, e.g. a 64x64 PNG costs 64 image tokens; images must go in a user message, not a system message; the page notes third-party listings calling this model text-only are wrong); reasoning control via enable_thinking/reasoning_effort request parameters; automatic prompt caching billed at the cache rate; and zero data retention (prompts/completions 'never used for training'). No response_format wire example or combined tools+response_format request is shown or was probed (see capabilities.structuredOutputWithTools). Not itself capability-probed end to end \u2014 credential-free onboarding, no API key used."}},topModels:["nvidia/Qwen3.8-27B-NVFP4"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[],setup:{url:"https://llmtech.eu/models/qwen3.8-27b",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. LLM Tech publishes no public signup or self-service key page as of 2026-09-28 (self-service is described on the vendor's site as 'planned'); email artem@llmtech.eu to request a key \u2014 the account dashboard (https://llmtech.eu/cabinet/) confirms keys are issued by the company rather than self-created ('we hold no passwords and no accounts'; 'paste the API key we issued you')","2. Once you receive a key, https://llmtech.eu/cabinet/ shows current-month billing (totals, a daily usage chart, invoice line items) by pasting the key in \u2014 there is no separate account or login","3. Billing is pay-per-token USD with 'no subscription, no minimums' (input $0.25/M, output $2.09/M, cached input $0.04/M per https://llmtech.eu/models/qwen3.8-27b); no free tier is documented, so budget for paid usage from the first call","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.llmtech.eu/v1, self-hosted on EU hardware (GPU node in Italy, edge in Nuremberg), serving a single model \u2014 nvidia/Qwen3.8-27B-NVFP4 \u2014 confirmed live by an unauthenticated GET /v1/models. No public signup exists; keys are issued manually by the vendor via email. The vendor states zero data retention: prompts and completions are never used for training."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.llmtech.eu/v1/models \u2014 1 model; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),PAe,uNr=E({"src/lib/providers/catalog/longcat.json"(){PAe={$schema:"./provider-catalog.schema.json",id:"longcat",displayName:"LongCat",enumTypeName:"LongCatModels",aliases:[],tier:2,wire:{baseURL:"https://api.longcat.chat/openai/v1"},models:{default:"LongCat-2.5-Preview",fallbacks:["LongCat-2.5-Preview"],defaultContextWindow:1048576,defaultMaxOutputTokens:131072,catalog:{"LongCat-2.5-Preview":{contextWindow:1048576,maxOutputTokens:131072,vision:!1,status:"preview",description:"Meituan LongCat 2.5 Preview, the only model this pilot lists. The 1M-token context rests on the vendor's Retrieve Model sample for this model id, not on a normative sentence. This pilot declares text generate/stream only; tools, vision, structured output and thinking await separate evidence. Account access is unverified."}}},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Invalid or expired LongCat API key. Check {apiKeyEnvVar} and the key in the LongCat platform console at {setupUrl}."}],setup:{url:"https://longcat.chat/platform",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Sign in to the LongCat API platform and create an API key.","2. LongCat-2.5-Preview is usage-priced pay-as-you-go. Promotional credits, if your account has any, are consumed first, but no free allowance is stated: do not assume free usage. The vendor's Pay-As-You-Go page says account verification is required before topping up, and its FAQ scopes that requirement to users in Mainland China (not tried on an account).","3. LongCat-2.0 is served on the same route but is outside this pilot's catalog scope, so it is not a default or a fallback here.","4. Set {apiKeyEnvVar} for this provider. The base URL is https://api.longcat.chat/openai/v1 and the chat route is POST /chat/completions with Authorization: Bearer authentication."],description:"LongCat (Meituan) text/stream pilot with a usage-priced LongCat-2.5-Preview default. No free allowance is stated; no account entitlement, roster, live inference or delivery is verified."},evidence:{rosterVerified:{date:"2026-10-12",code:"VENDOR_DOCS_ONLY_NOT_ROSTER_VERIFIED",method:"Vendor API documentation facts supplied to this change: default model id, 1048576 context from the vendor's Retrieve Model sample plus the 1M prose, 131072 maximum output, base URL https://api.longcat.chat/openai/v1 and route POST /chat/completions with Bearer auth. No GET /models, credentials, account or inference ran; this legacy field does not assert roster verification."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1980"}}}}),OAe,dNr=E({"src/lib/providers/catalog/mancer.json"(){OAe={$schema:"./provider-catalog.schema.json",id:"mancer",displayName:"Mancer",aliases:["mancer-tech"],tier:2,wire:{baseURL:"https://neuro.mancer.tech/oai/v1"},models:{default:"deepseek-v4-flash",fallbacks:["deepseek-v4-flash","gpt-oss-120b"],defaultContextWindow:1048576,defaultMaxOutputTokens:1048576,catalog:{mythomax:{contextWindow:8192,maxOutputTokens:8192,pricingPerMTok:{input:.14,output:.24},vision:!1,status:"production",description:"MythoMax (LLaMA 2, Simplified Alpaca format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"deepseek-v4-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.07,output:.2},vision:!1,status:"production",description:"DeepSeek V4 Flash \u2014 Mancer's flagship general model; paid credits required \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"deepseek-v4-flash-0731":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.07,output:.2},vision:!1,status:"production",description:"DeepSeek V4 Flash, 2026-07-31 snapshot; paid credits required \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},mytholite:{contextWindow:2560,maxOutputTokens:150,pricingPerMTok:{input:0,output:0},vision:!1,status:"production",description:"MythoLite \u2014 Mancer's free demo model (2,560-token context, 150-token completions, Simplified Alpaca format); the only model usable with a zero balance \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"remm-slerp":{contextWindow:6144,maxOutputTokens:6144,pricingPerMTok:{input:.14,output:.26},vision:!1,status:"production",description:"ReMM-SLERP (Simplified Alpaca format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"magnum-72b-v4":{contextWindow:32768,maxOutputTokens:4096,pricingPerMTok:{input:1,output:2},vision:!1,status:"production",description:"Magnum 72B v4 (ChatML format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"glm-4.7":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.28,output:1},vision:!1,status:"production",description:"GLM-4.7 \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"gpt-oss-120b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.022,output:.2},vision:!1,status:"production",description:"GPT-OSS 120B \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"weaver-alpha":{contextWindow:8e3,maxOutputTokens:6e3,pricingPerMTok:{input:.16,output:.3},vision:!1,status:"production",description:"Weaver Alpha (Simplified Alpaca format) \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"},"dans-pe-1.3-24b":{contextWindow:32768,maxOutputTokens:8192,pricingPerMTok:{input:.2,output:.8},vision:!1,status:"production",description:"Dan's PersonalityEngine 1.3 24B \u2014 pricing and limits from the authenticated /oai/v1/models roster, 2026-09-03"}},topModels:["deepseek-v4-flash","gpt-oss-120b","glm-4.7","mytholite"],testModel:"mytholite"},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Bad API key",class:"authentication",message:"Invalid Mancer API key. Check {apiKeyEnvVar}. Get one at https://mancer.tech/dashboard"},{pattern:"Unknown Model",class:"invalid-model",message:"Mancer model '{model}' is unknown. Pick a current model from the /oai/v1/models roster or https://mancer.tech/pricing."},{status:402,pattern:"requires paid credits",class:"provider",message:"Mancer model '{model}' requires paid credits; with a zero balance only the free model 'mytholite' works. Add credits at https://mancer.tech/dashboard or see https://mancer.tech/pricing."}],setup:{url:"https://mancer.tech/dashboard",apiKeyFormat:"^mcr_[A-Za-z0-9]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://mancer.tech/dashboard and sign in","2. Create an API key (prefix mcr_)","3. Without credits only the free model 'mytholite' answers; every other model returns 402 until you add credits at https://mancer.tech/pricing","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://neuro.mancer.tech/oai/v1. One free demo model; paid credits unlock the rest of the roster."},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /oai/v1/models; full response retained as evidence/mancer-roster-authenticated.json in the campaign scratchpad and every catalog price/limit machine-checked against it (Mancer re-prices \u2014 gpt-oss-120b input moved 0.024 \u2192 0.022 within the day)",status:200},authProbe:{date:"2026-09-03",status:401},billingProbe:{date:"2026-09-03",status:402,method:'POST /oai/v1/chat/completions on deepseek-v4-flash with a zero balance: {"error":{"type":"CANT_AFFORD","message":"This model requires paid credits to use!"}}'},liveMatrix:{date:"2026-09-03",result:`18-probe harness on the free model mytholite: roster, chat, max_completion_tokens, system role, content parts, sampling params, SSE stream (usage chunk + [DONE]), json_schema (valid JSON matching schema) and json_object all 200; tools and tools+schema 400 BAD_PARAMETERS ('"auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser') so tools are declared false; vision 200 but text-only (image ignored); bad key 401 'Bad API key'; unknown model 400 'Unknown Model'. Paid models could not be capability-probed without credits \u2014 tools may work there and can be re-declared once probed. Nightly matrix pins testModel mytholite.`},addedInPR:"https://github.com/juspay/neurolink/pull/1631"}}}}),DAe,pNr=E({"src/lib/providers/catalog/meta-model-api.json"(){DAe={$schema:"./provider-catalog.schema.json",id:"meta-model-api",displayName:"Meta Model API",aliases:[],tier:2,wire:{baseURL:"https://api.meta.ai/v1"},models:{default:"muse-spark-1.3",fallbacks:["muse-spark-1.2","muse-spark-1.1"],defaultContextWindow:1048576,defaultMaxOutputTokens:16384,catalog:{"muse-spark-1.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.25,output:4.25,cachedInput:.15},vision:!0,status:"production",description:'NeuroLink default. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): "muse-spark-1.3 is the default model in the code examples throughout these docs." The page describes it as "the latest version, tuned for agentic workflows (multi-step tool, browser, and long-horizon tasks) with improved coding over 1.2." and says "Recommended for new work." Standard tier; context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. maxOutputTokens 131072 is the output figure in the Coding agents guide (https://dev.meta.ai/docs/coding-agents) entry for this model id: "Limits: context = 1048576, output = 131072". vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities, and the Image understanding page (https://dev.meta.ai/docs/image-understanding) says "image understanding is fully supported" on Chat Completions.'},"muse-spark-1.2":{contextWindow:1048576,pricingPerMTok:{input:1.25,output:4.25,cachedInput:.15},vision:!0,status:"production",description:'NeuroLink fallback. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): "the previous version." The home page (https://dev.meta.ai/) card for Muse Spark 1.2 says "A coding-optimized model purpose-built for agentic workflows." Standard tier; context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities.'},"muse-spark-1.1":{contextWindow:1048576,pricingPerMTok:{input:1.25,output:4.25,cachedInput:.15},vision:!0,status:"production",description:'NeuroLink fallback. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): "the original version." The home page (https://dev.meta.ai/) card for Muse Spark 1.1 says "Built for agentic workflows, coding, computer use & multimodal perception." Standard tier; context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities.'},"muse-spark-1.3-contributor":{contextWindow:1048576,pricingPerMTok:{input:.1,output:.2,cachedInput:.002},vision:!0,status:"production",description:'Contributor tier. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): the Contributor variant "trades a lower price for permission to train on your prompts and completions". The Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says "Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models." Context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on the Pricing page: input $0.10, output $0.20, cached input $0.002. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities. Not in models.fallbacks.'},"muse-spark-1.2-contributor":{contextWindow:1048576,pricingPerMTok:{input:.1,output:.2,cachedInput:.002},vision:!0,status:"production",description:'Contributor tier. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): the Contributor variant "trades a lower price for permission to train on your prompts and completions". The Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says "Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models." Context window 1,048,576 tokens ("Available Muse Spark models" table on the Models page). Price per 1M tokens on the Pricing page: input $0.10, output $0.20, cached input $0.002. vision is true: the "Available Muse Spark models" table on the Models page lists image among its input modalities. Not in models.fallbacks.'}},topModels:["muse-spark-1.3","muse-spark-1.3-contributor","muse-spark-1.2","muse-spark-1.2-contributor","muse-spark-1.1"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Meta Model API rejected the request's authentication (HTTP 401; an unauthenticated GET of /models returned error.code "invalid_api_key" and error.type "authentication_error" on 2026-09-29, and the Error handling page lists 401 Unauthorized: "The API key was missing, invalid, or revoked."). Check {apiKeyEnvVar}. Create a key: {setupUrl}`},{status:402,class:"provider",message:'Meta Model API returned HTTP 402 (the Error handling page lists 402 Payment Required: "The request cannot be completed due to a billing issue.", with an example body whose error.code is "billing_not_configured").'},{status:403,class:"authentication",message:'Meta Model API returned HTTP 403 (the Error handling page lists 403 Forbidden: "The API key does not have permission to access the requested resource.").'},{status:429,class:"rate-limit",message:'Meta Model API returned HTTP 429 (the Error handling page lists 429 Too Many Requests: "Your team has exceeded the rate limit.").'},{pattern:"model_not_found",class:"invalid-model",message:'Meta Model API reported model {model} as not found (the Error handling page says "an unknown model returns model_not_found").'}],setup:{url:"https://dev.meta.ai/",apiKeyFormat:"^LLM\\|.+\\|.+$",billingPolicy:"no-free-tier",instructions:['1. Visit: https://dev.meta.ai/ \u2014 the page carries a "Start building" button whose link target is /api/auth/login','2. Create an API key: the Authentication page (https://dev.meta.ai/docs/authentication) lists the steps "Log in and open the API keys tab.", "Click Create API key, give it a descriptive name, and click Create." and "Copy the key right away. You only see it once."','3. Authentication is a Bearer token: the Authentication page says "Pass the key as a Bearer token in the Authorization header:", and the Error handling page (https://dev.meta.ai/docs/error-handling) lists "Malformed API key (not in LLM|{id}|{secret} format)" as a cause of HTTP 401',`4. Billing as the vendor states it: the Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says "You pay only for what you use." and the Authentication and billing page (https://dev.meta.ai/docs/muse-code/auth) says "Meta Model API billing is usage-based: you're billed for the tokens your requests consume."`,"5. Set {apiKeyEnvVar} in your .env file (the vendor's examples read MODEL_API_KEY, which NeuroLink does not)"],description:`Docs-verified only: the vendor's GET https://api.meta.ai/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401), so the five model ids come from the Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.meta.ai/v1: the Chat Completions page (https://dev.meta.ai/docs/protocols/chat-completions) says "The endpoint is OpenAI-compatible" and "The response matches the OpenAI chat completions shape.", and the Overview (https://dev.meta.ai/docs/overview) says "Model API is drop-in compatible with the OpenAI SDK, the Anthropic SDK, and OpenAI-compatible agent CLIs." The catalog holds the five model ids of the "Available Muse Spark models" table on the Models page (Standard tier: muse-spark-1.3, muse-spark-1.2, muse-spark-1.1; Contributor tier: muse-spark-1.3-contributor, muse-spark-1.2-contributor); the Chat Completions page says "Chat Completions serves the Muse Spark text models." The Models page lists muse-image-1.0, muse-voice-transcribe-1.0 and sam-3.1 in separate per-family tables; they are not in the catalog. models.fallbacks lists the Standard-tier ids; the Contributor-tier ids are in models.catalog and models.topModels. apiKeyFormat follows the Error handling page's "LLM|{id}|{secret} format". models.defaultContextWindow (1048576) is the context window the Overview and Models pages state for the Muse Spark models; models.defaultMaxOutputTokens (16384) is a NeuroLink placeholder the vendor does not publish. The status field of the five models holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. Verification level: docs-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.meta.ai/v1/models answers 401 without a key, so model ids are taken from https://dev.meta.ai/docs/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_api_key",method:'unauthenticated GET https://api.meta.ai/v1/models \u2014 HTTP 401, content-type application/json, JSON body {"error":{"code":"invalid_api_key","message":"Unauthorized","param":null,"type":"authentication_error"}}; the same day an unauthenticated GET https://api.meta.ai/v1/chat/completions answered HTTP 401 with the same body and the header allow: POST; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:`public pages https://dev.meta.ai/docs/pricing-rate-limits ("You pay only for what you use."; in its Muse Voice Transcribe paragraph: "ZDR is priced at parity with Standard, and platform free-tier credits apply.") and https://dev.meta.ai/docs/muse-code/auth ("Meta Model API billing is usage-based: you're billed for the tokens your requests consume."); credential-free, no signup performed`},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),NAe,mNr=E({"src/lib/providers/catalog/minimax.json"(){NAe={$schema:"./provider-catalog.schema.json",id:"minimax",displayName:"MiniMax",aliases:[],tier:2,wire:{baseURL:"https://api.minimax.io/v1"},models:{default:"MiniMax-M3",fallbacks:["MiniMax-M2.7","MiniMax-M2.7-highspeed","MiniMax-M2.5","MiniMax-M2.5-highspeed","MiniMax-M2.1","MiniMax-M2.1-highspeed","MiniMax-M2"],fallbackModelName:"MiniMax-M2.7",defaultContextWindow:204800,defaultMaxOutputTokens:65536,catalog:{"MiniMax-M3":{contextWindow:1e6,maxOutputTokens:524288,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!0,status:"production",description:'NeuroLink default. OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Frontier multimodal coding model with 1M context window", context window 1,000,000; the same page says "Image and video inputs are supported by MiniMax-M3.1-Flash-Preview and MiniMax-M3 through OpenAI-compatible message content parts", hence vision true. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): max_completion_tokens maximum 524288 for MiniMax-M3.1-Flash-Preview and MiniMax-M3. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo), Standard tab: "\u2264 512k input tokens", $0.30 input, $1.20 output and $0.06 prompt caching read per M tokens (the page shows $0.60, $2.40 and $0.12 struck through beside them); "> 512k input tokens" $0.60 input, $2.40 output and $0.12 prompt caching read per M tokens (the page shows $1.20, $4.80 and $0.24 struck through beside them); both Standard rows carry the label "Permanent 50% off". The Priority tab says "Pricing is 1.5x standard." The pricingPerMTok figures are the Standard tab, "\u2264 512k input tokens" row. Chat Completions reference thinking parameter: "adaptive thinking is on by default" for MiniMax-M3. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 200, TPM 10,000,000. The Integrate via SDK page (https://platform.minimax.io/docs/guides/quickstart-sdk) calls model="MiniMax-M3".'},"MiniMax-M3.1-Flash-Preview":{contextWindow:1e6,maxOutputTokens:524288,vision:!0,status:"preview",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Frontier multimodal coding model with 1M context window and tunable thinking depth", context window 1,000,000; the page notes "MiniMax-M3.1-Flash-Preview is available only through Token Plan and MiniMax Code for now." and says image and video inputs are supported for this model, hence vision true. Token Plan overview (https://platform.minimax.io/docs/token-plan/intro): "The Subscription Key is not interchangeable with pay-as-you-go API Keys." Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): max_completion_tokens maximum 524288, and the model "always thinks".'},"MiniMax-M2.7":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Beginning the journey of recursive self-improvement (output speed approximately 60 tps)", context window 204,800. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo): $0.3 input, $1.2 output, $0.06 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.7-highspeed":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.6,output:2.4,cachedInput:.06},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "M2.7 Highspeed: Same performance, faster and more agile (output speed approximately 100 tps)", context window 204,800. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo): $0.6 input, $2.4 output, $0.06 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.5":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Peak Performance. Ultimate Value. Master the Complex (output speed approximately 60 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.3 input, $1.2 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.5-highspeed":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.6,output:2.4,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "M2.5 highspeed: Same performance, faster and more agile (output speed approximately 100 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.6 input, $2.4 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.1":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Powerful Multi-Language Programming Capabilities with Comprehensively Enhanced Programming Experience (output speed approximately 60 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.3 input, $1.2 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2.1-highspeed":{contextWindow:204800,maxOutputTokens:204800,pricingPerMTok:{input:.6,output:2.4,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Faster and More Agile (output speed approximately 100 tps)", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai): for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3, max_completion_tokens maximum 204800. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.6 input, $2.4 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false.'},"MiniMax-M2":{contextWindow:204800,pricingPerMTok:{input:.3,output:1.2,cachedInput:.03},vision:!1,status:"production",description:'OpenAI SDK page (https://platform.minimax.io/docs/api-reference/text-openai-api, retrieved 2026-09-29): "Agentic capabilities, Advanced reasoning", context window 204,800; listed under "Legacy Models" on https://platform.minimax.io/docs/guides/models-intro. Pay-as-you-go pricing page (https://platform.minimax.io/docs/guides/pricing-paygo, Legacy Models): $0.3 input, $1.2 output, $0.03 prompt caching read and $0.375 prompt caching write per M tokens. Rate limits page (https://platform.minimax.io/docs/guides/rate-limits): RPM 500, TPM 20,000,000. Vision: the Anthropic API page (https://platform.minimax.io/docs/api-reference/text-anthropic-api, retrieved 2026-09-29), messages row, says "The M2.7, M2.5, M2.1, and M2 series support text and tool-call content blocks only; they do not support image or video input"; vision false. Max output: the Models page (https://platform.minimax.io/docs/guides/models-intro), Legacy Models, lists "Maximum Output: 128k tokens (including CoT)" for MiniMax-M2; the Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai) says for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3 "the maximum is 204800 (200K)". The two pages give different figures, so maxOutputTokens is not set for this id.'}},topModels:["MiniMax-M3","MiniMax-M3.1-Flash-Preview","MiniMax-M2.7","MiniMax-M2.7-highspeed","MiniMax-M2.5","MiniMax-M2.5-highspeed","MiniMax-M2.1","MiniMax-M2.1-highspeed","MiniMax-M2"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid api key|not authorized",class:"authentication",message:"MiniMax rejected the API key (HTTP 401, authorized_error). Check {apiKeyEnvVar}. Get one at {setupUrl}"},{pattern:"insufficient balance",class:"provider",message:`MiniMax reports an insufficient balance (error 1008). The vendor's error-code table says: "Please check your account balance." (https://platform.minimax.io/docs/api-reference/errorcode)`},{pattern:"rate limit",class:"rate-limit",message:`MiniMax reports a rate limit (error 1002). The vendor's error-code table says: "Please retry your requests later." (https://platform.minimax.io/docs/api-reference/errorcode)`}],setup:{url:"https://platform.minimax.io/user-center/basic-information/interface-key",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://platform.minimax.io/login?source=platform_docs and register or log in (https://platform.minimax.io/docs/guides/quickstart-preparation)","2. Pay-as-you-go: open API Keys > Create new secret key at https://platform.minimax.io/user-center/basic-information/interface-key and copy the API Key (https://platform.minimax.io/docs/guides/quickstart-preparation)","3. Token Plan: view your Subscription Key at https://platform.minimax.io/user-center/payment/token-plan. MiniMax-M3.1-Flash-Preview is stated as available only through Token Plan and MiniMax Code for now, and the Subscription Key is stated as not interchangeable with pay-as-you-go API Keys (https://platform.minimax.io/docs/api-reference/text-openai-api, https://platform.minimax.io/docs/token-plan/intro)",'4. Billing as the vendor words it: "Pay-as-you-go uses standard Open Platform API Keys and consumes your account balance by actual usage." (https://platform.minimax.io/docs/guides/pricing-paygo) and "New users without subscription can try the free quota from Pay-as-you-go" (https://platform.minimax.io/docs/solutions/eigent, a tutorial dated January 23, 2026)',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.minimax.io/v1 (https://platform.minimax.io/docs/api-reference/text-openai-api sets OPENAI_BASE_URL=https://api.minimax.io/v1 and calls client.chat.completions.create), with the nine model ids in that page's Supported Models table in models.catalog. This entry is docs-verified only: an unauthenticated GET of https://api.minimax.io/v1/models answered HTTP 401 without a key, so the model ids come from the vendor's public docs and the roster has not been checked; it is not yet live-verified. That GET returned error.type authorized_error with the message "login fail: Please carry the API secret key in the 'Authorization' field of the request header (1004)" (2026-09-29), so errorRules match status 401 and the messages in the vendor's error-code table (https://platform.minimax.io/docs/api-reference/errorcode). models.defaultContextWindow (204800) and models.defaultMaxOutputTokens (65536) apply to ids outside the catalog: 204,800 is the context window the OpenAI SDK page lists for the MiniMax-M2.x models and 65536 is the recommended max_completion_tokens the Chat Completions reference gives for models other than MiniMax-M3.1-Flash-Preview and MiniMax-M3. capabilities.thinking is false and the entry sets none of the thinking, reasoning_effort or reasoning_split request parameters; the Chat Completions reference (https://platform.minimax.io/docs/api-reference/text-chat-openai) says of MiniMax-M3 "adaptive thinking is on by default" and of MiniMax-M3.1-Flash-Preview "always thinks". billingPolicy free-tier is the schema's closest value (the schema has no unknown value) and is not a MiniMax statement of terms; each model's status is likewise a value the schema requires (production, or preview for the id the vendor names Preview).`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.minimax.io/v1/models answers 401 without a key, so model ids are taken from https://platform.minimax.io/docs/api-reference/text-openai-api (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"authorized_error",method:'unauthenticated GET https://api.minimax.io/v1/models \u2014 error.type authorized_error, error.http_code "401", message ending (1004); credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public pages https://platform.minimax.io/docs/guides/pricing-paygo ("Pay-as-you-go uses standard Open Platform API Keys and consumes your account balance by actual usage.") and https://platform.minimax.io/docs/solutions/eigent ("New users without subscription can try the free quota from Pay-as-you-go"); credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),LAe,hNr=E({"src/lib/providers/catalog/mistral.json"(){LAe={$schema:"./provider-catalog.schema.json",id:"mistral",displayName:"Mistral",aliases:[],tier:2,wire:{baseURL:"https://api.mistral.ai/v1"},models:{default:"mistral-small-2506",registryDefaultModel:"mistral-large-latest",fallbacks:["mistral-small-2506","mistral-medium-latest"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"mistral-large-latest":{contextWindow:256e3,vision:!0,status:"production",description:"Mistral Large (Latest)"},"mistral-large-2512":{contextWindow:256e3,vision:!0,status:"production",description:"Mistral Large 2512"},"mistral-medium-latest":{contextWindow:128e3,vision:!0,status:"production",description:"Mistral Medium (Latest)"},"mistral-medium-2508":{vision:!0,status:"production",description:"Mistral Medium 2508"},"mistral-small-latest":{contextWindow:128e3,vision:!0,status:"production",description:"Mistral Small (Latest)"},"mistral-small-2506":{vision:!0,status:"production",description:"Recommended - Mistral Small 2506"},"magistral-medium-latest":{contextWindow:128e3,vision:!0,status:"production",description:"Magistral Medium (Reasoning)"},"magistral-small-latest":{vision:!0,status:"production",description:"Magistral Small (Reasoning)"},"ministral-14b-2512":{enumMember:"MINISTRAL_14B_2512",vision:!1,status:"production",description:"Ministral 14B (Edge)"},"ministral-8b-2512":{enumMember:"MINISTRAL_8B_2512",vision:!1,status:"production",description:"Ministral 8B (Edge)"},"ministral-3b-2512":{enumMember:"MINISTRAL_3B_2512",vision:!1,status:"production",description:"Ministral 3B (Edge)"},"codestral-latest":{contextWindow:256e3,vision:!1,status:"production",description:"Codestral (Code Generation)"},"codestral-2508":{contextWindow:256e3,vision:!1,status:"production",description:"Codestral 2508 (Code Generation)"},"codestral-embed":{vision:!1,status:"production",description:"Codestral Embed"},"devstral-medium-latest":{vision:!1,status:"production",description:"Devstral Medium (Software Development)"},"devstral-small-latest":{vision:!1,status:"production",description:"Devstral Small (Software Development)"},"pixtral-large":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"pixtral-12b":{vision:!0,status:"production",description:"Pixtral 12B \u2014 vision-capable; re-verified live 2026-08-30"},"voxtral-small-latest":{vision:!1,status:"production",description:"Voxtral Small (Audio)"},"voxtral-mini-latest":{vision:!1,status:"production",description:"Voxtral Mini (Audio)"},"devstral-2512":{enumMember:"DEVSTRAL_2",contextWindow:256e3,vision:!1,status:"production",description:"Devstral 2 (December 2025)"},"devstral-small-2512":{enumMember:"DEVSTRAL_SMALL_2",contextWindow:256e3,vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"magistral-medium-2509":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"magistral-small-2509":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"voxtral-mini-2602":{enumMember:"VOXTRAL_MINI_TRANSCRIBE_2",vision:!1,status:"production",description:"Voxtral Mini Transcribe 2 (February 2026)"},"mistral-ocr-2512":{enumMember:"MISTRAL_OCR_3",vision:!1,status:"production",description:"Mistral OCR 3 (December 2025)"},"mistral-ocr-latest":{vision:!1,status:"production",description:"Mistral OCR (Latest)"},"mistral-nemo":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"mistral-embed":{vision:!1,status:"production",description:"Mistral Embed"},"mistral-moderation-latest":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"},"mistral-small-2603":{enumMember:"MISTRAL_SMALL_4",contextWindow:256e3,vision:!0,status:"production",description:"Mistral Small 4 (June 2026)"},"mistral-small-creative":{vision:!1,status:"retired",description:"Retired 2026-08 \u2014 absent from Mistral's roster and rejected as an invalid model"}},visionModel:"mistral-medium-latest",topModels:["mistral-large-latest","mistral-small-latest","codestral-latest","magistral-medium-latest","pixtral-12b"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"API_KEY_INVALID|Invalid API key|Unauthorized",class:"authentication",message:"Invalid Mistral API key. Please check your {apiKeyEnvVar} environment variable."}],quirks:{registryDefaultIgnoresModelEnvVar:!0},timeouts:{generateMs:45e3,streamMs:12e4},autoSelectPriority:9,setup:{url:"https://console.mistral.ai/api-keys",apiKeyFormat:"^[A-Za-z0-9]{32}$",billingPolicy:"free-with-card",instructions:["1. Visit: https://console.mistral.ai/api-keys","2. Create or sign in to your account","3. Generate a new API key"]},evidence:{rosterVerified:{date:"2026-08-30",method:"GET /models against the live account, cross-checked with a real chat call per id"},liveMatrix:{date:"2026-08-30",result:"17 ids answer normally. A chat probe alone was not enough to judge the rest, because Mistral rejects every non-chat model with the same generic 'Invalid model' text: cross-referencing the roster shows mistral-embed, codestral-embed, mistral-ocr-latest, mistral-ocr-2512, voxtral-mini-latest and voxtral-mini-2602 are all still listed and alive \u2014 they are embedding, OCR and audio models that a chat endpoint is right to refuse \u2014 so they keep production status. An id is marked retired only when BOTH signals agree: absent from the roster AND rejected by a live chat call. pixtral-12b is the one id where they disagree \u2014 the roster omits it but a real call returns 200, so it was moved back to production, on the rule that a live 200 outranks a roster omission. mistral-large-latest and mistral-large-2512 answer 403 'not available in your subscription tier': a plan limit on this account, not a retirement, so they stay production. visionModel is pinned to mistral-medium-latest because the otherwise-first vision id, mistral-large-latest, is behind that plan gate. Combined tools plus response_format probes returned 429 twice, which is not successful capability evidence, so structuredOutputWithTools remains false pending a successful combined-request probe."},addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),FAe,fNr=E({"src/lib/providers/catalog/moark.json"(){FAe={$schema:"./provider-catalog.schema.json",id:"moark",displayName:"Moark",aliases:[],tier:2,wire:{baseURL:"https://api.moark.com/v1"},models:{default:"Qwen3-8B",fallbacks:["Qwen3-4B","ERNIE-4.5-Turbo","GLM-5.3","kimi-k3","DeepSeek-V4-Pro-0813"],defaultContextWindow:32e3,defaultMaxOutputTokens:4096,catalog:{"Qwen3-8B":{vision:!1,status:"production",description:"Recommended \u2014 roster-verified via unauthenticated GET https://moark.com/v1/models (2026-09-28, HTTP 200, 222 models). Chosen as `default` because Moark's own text-generation guide (https://moark.com/docs/products/apis/texts/text-generation, retrieved 2026-09-28) names Qwen3-8B and Qwen3-4B specifically as its suggested free-testing/validation models ('\u514D\u8D39\u5728\u7EBF\u4F53\u9A8C', quick-validation picks) \u2014 the only concrete, documented model recommendation on that page that also matches a currently-live roster id; the page's other named examples (Qwen2.5-72B-Instruct used in every code sample, kimi-k2-instruct and DeepSeek-R1 for long-text/reasoning, ERNIE-4.5-Turbo for multilingual) are not presented as free and, except ERNIE-4.5-Turbo, are no longer on the live roster. No credential-free capability probe was possible (chat/completions is POST-only, and this onboarding used unauthenticated GETs only): tool calling, structured output (guided_json/guided_choice) and SSE streaming are documented generically for the API but not confirmed against this specific model. contextWindow/maxOutputTokens are left unset on every model in this catalog \u2014 Moark's docs give only a generic '32K\u3001128K \u7B49' illustration (not tied to any model) and GET /v1/models returns only {id, object, created, owned_by}, no context_length or pricing fields."},"Qwen3-4B":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Named alongside Qwen3-8B as a free testing/validation model on Moark's text-generation guide (https://moark.com/docs/products/apis/texts/text-generation, retrieved 2026-09-28) \u2014 smaller sibling of the default. Not itself capability-probed; fallback."},"ERNIE-4.5-Turbo":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Baidu ERNIE 4.5 Turbo \u2014 named by Moark's text-generation guide (retrieved 2026-09-28) as its suggested model for multilingual use cases. Not itself capability-probed; fallback."},"GLM-5.3":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Zhipu GLM-5.3 \u2014 present on the live roster; Moark's text-generation guide does not name it specifically (its worked examples use Qwen2.5-72B-Instruct instead, which is not on the current roster). Included as a general-purpose fallback on roster presence alone; not capability-probed."},"kimi-k3":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). Moonshot AI Kimi K3 \u2014 the closest live-roster match to Moark's docs-suggested 'long text' pick (the exact doc-named id, kimi-k2-instruct, is no longer on the roster; Kimi-K2.7-Code and Kimi-K2.6 are also present but code-branded/older). Not capability-probed; fallback."},"DeepSeek-V4-Pro-0813":{vision:!1,status:"production",description:"Roster-verified only (unauthenticated GET https://moark.com/v1/models, 2026-09-28). DeepSeek V4 Pro \u2014 the closest live-roster match to Moark's docs-suggested 'specialized reasoning' pick (the exact doc-named id, DeepSeek-R1, is no longer on the roster). Not capability-probed; fallback."}},topModels:["Qwen3-8B","Qwen3-4B","ERNIE-4.5-Turbo","GLM-5.3","kimi-k3","DeepSeek-V4-Pro-0813"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[],setup:{url:"https://moark.com/dashboard/tokens",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://moark.com and sign in \u2014 no separate signup page is documented, only workbench login","2. Go to \u5DE5\u4F5C\u53F0 \u2192 \u8BBE\u7F6E \u2192 \u8BBF\u95EE\u4EE4\u724C (Workbench \u2192 Settings \u2192 Access Tokens) at https://moark.com/dashboard/tokens and create a token","3. Fund a prepaid resource package before making live calls (e.g. the all-model package, https://moark.com/serverless-api/order?package=1910) \u2014 billing is prepaid, charged per-call or per-token (https://moark.com/docs/products/apis, retrieved 2026-09-28); models can be tried free in the web console, but no formal free-tier API policy is documented, and package usage is non-refundable (https://moark.com/docs/billing/purchase, retrieved 2026-09-28)","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.moark.com/v1 \u2014 Moark's own docs state '\u6A21\u529B\u65B9\u821F\u7684 Serverless API \u517C\u5BB9\u5F00\u53D1\u8005\u559C\u7231\u4E14\u793E\u533A\u6D41\u884C\u7684 OpenAI \u98CE\u683C API' (https://moark.com/docs/products/apis/texts/text-generation, retrieved 2026-09-28), serving 222 models (unauthenticated GET /v1/models, 2026-09-28) spanning text, vision, image, video, audio, embedding and reranking \u2014 this entry covers only the OpenAI-compatible chat/completions surface. The vendor also documents vLLM-style guided_json/guided_choice structured-decoding parameters, distinct from the OpenAI response_format field NeuroLink's generic client sends, so structuredOutput is not claimed here without a live probe."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://moark.com/v1/models \u2014 222 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),$Ae,gNr=E({"src/lib/providers/catalog/modelscope.json"(){$Ae={$schema:"./provider-catalog.schema.json",id:"modelscope",displayName:"ModelScope",aliases:[],tier:2,wire:{baseURL:"https://api-inference.modelscope.cn/v1"},models:{default:"Qwen/Qwen3.5-35B-A3B",fallbacks:["Qwen/Qwen3.5-27B","deepseek-ai/DeepSeek-V4-Pro-0813","ZhipuAI/GLM-5.2"],fallbackModelName:"Qwen/Qwen3.5-27B",defaultContextWindow:32768,defaultMaxOutputTokens:4096,catalog:{"Qwen/Qwen3.5-35B-A3B":{vision:!0,status:"production",description:"NeuroLink default. The model id used in the intro page's OpenAI-compatible chat example (client.chat.completions.create with stream=True), in its Anthropic-compatible streaming and non-streaming examples, and in its Vision Models example, which sends a content part of type image_url (https://modelscope.cn/docs/model-service/API-Inference/intro); vision is true because that example calls this id with an image_url. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.5-27B":{vision:!0,status:"production",description:`Fallback. Named in the Responses API example of the Chinese-language intro page (client.responses.create with model="Qwen/Qwen3.5-27B", read from https://resouces.modelscope.cn/document/docdata/2026-9-28_15-49-CN/dist/model-service/API-Inference/intro/intro_CN.md) and in the examples of the LangChain integration page (https://modelscope.cn/docs/ecosystem-integrations/api-usage/langchain, Chinese text read from the docs site's document file). The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says "integrated models like Qwen3.5 that support vision". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-27B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster.`},"deepseek-ai/DeepSeek-V4-Pro-0813":{vision:!1,status:"production",description:"Fallback. ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/deepseek-ai/DeepSeek-V4-Pro-0813, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"ZhipuAI/GLM-5.2":{vision:!1,status:"production",description:"Fallback. ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/ZhipuAI/GLM-5.2, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.5-397B-A17B":{vision:!0,status:"production",description:`The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says "integrated models like Qwen3.5 that support vision". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-397B-A17B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster.`},"Qwen/Qwen3.5-122B-A10B":{vision:!0,status:"production",description:`The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says "integrated models like Qwen3.5 that support vision". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-122B-A10B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster.`},"deepseek-ai/DeepSeek-V4-Flash-0731":{vision:!1,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/deepseek-ai/DeepSeek-V4-Flash-0731, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"MiniMax/MiniMax-M3":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/MiniMax/MiniMax-M3, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"stepfun-ai/Step-3.7-Flash":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/stepfun-ai/Step-3.7-Flash, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.8-27B":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.8-27B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"mistralai/Mistral-Large-Instruct-2407":{vision:!1,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/mistralai/Mistral-Large-Instruct-2407, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."},"Qwen/Qwen3.8-Flash-Next":{vision:!0,status:"production",description:"ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.8-Flash-Next, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."}},topModels:["Qwen/Qwen3.5-35B-A3B","Qwen/Qwen3.5-27B","deepseek-ai/DeepSeek-V4-Pro-0813","ZhipuAI/GLM-5.2","Qwen/Qwen3.5-397B-A17B","Qwen/Qwen3.5-122B-A10B","deepseek-ai/DeepSeek-V4-Flash-0731","MiniMax/MiniMax-M3","stepfun-ai/Step-3.7-Flash","Qwen/Qwen3.8-27B","mistralai/Mistral-Large-Instruct-2407","Qwen/Qwen3.8-Flash-Next"],visionModel:"Qwen/Qwen3.5-35B-A3B"},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Invalid or missing ModelScope access token (HTTP 401). Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://modelscope.cn/my/myaccesstoken",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://modelscope.cn/home and register or log in with the "Log in/Register" button in the top right corner (https://modelscope.cn/docs/accounts/registration)','2. Bind an Alibaba Cloud account and complete real-name verification: "After account registration, you must bind your Alibaba Cloud account and complete real-name verification before using API-Inference." (https://modelscope.cn/docs/model-service/API-Inference/intro; binding steps: https://modelscope.cn/docs/accounts/aliyun-binding-and-authorization)','3. Create an access token at https://modelscope.cn/my/myaccesstoken; the token guide (https://modelscope.cn/docs/accounts/token) has you specify a validity period, "Long-term use" or "Short-term use"','4. Free for registered users: "API-Inference is provided free of charge to registered ModelScope users." (intro page); the limits page (https://modelscope.cn/docs/model-service/API-Inference/limits) states that API Inference "implements certain limits on usage quotas and concurrency"',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api-inference.modelscope.cn/v1. The intro page (https://modelscope.cn/docs/model-service/API-Inference/intro) says "ModelScope's API-Inference currently provides OpenAI API-compatible interfaces for large language models." and its example sets base_url="https://api-inference.modelscope.cn/v1/". The docs text was read on 2026-09-29 from the raw document files the docs site loads (English build 2026-9-28_15-50-EN, for example https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md; Chinese build 2026-9-28_15-49-CN where noted), because the rendered pages at modelscope.cn are a JavaScript shell. This entry is docs- and roster-verified, not yet live-verified: the model ids come from an unauthenticated GET of https://api-inference.modelscope.cn/v1/models (HTTP 200, 35 models, 2026-09-29) and no API key was used. Each model's task was read on 2026-09-29 from an unauthenticated GET of https://www.modelscope.cn/api/v1/models/<model id> (the Data.Tasks field). capabilities.thinking is true: ModelScope's Codewhale integration page (https://modelscope.cn/docs/ecosystem-integrations/api-usage/codewhale, English build file ecosystem-integrations/api-usage/codewhale/codewhale_EN.md) says "Qwen and GLM series models support \`reasoning_content\` streaming output". models.defaultContextWindow (32,768) and models.defaultMaxOutputTokens (4,096) are placeholders. errorRules holds one 401 rule taken from an unauthenticated GET of https://api-inference.modelscope.cn/v1/tasks/abc, which answered HTTP 401 with the JSON body {"errors":{"message":"Authentication failed, please make sure that a valid ModelScope token is supplied."},"request_id":"..."}.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api-inference.modelscope.cn/v1/models \u2014 35 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,method:`unauthenticated GET https://api-inference.modelscope.cn/v1/tasks/abc (the AIGC task-polling route used in the intro page's example, not chat/completions) \u2014 JSON body {"errors":{"message":"Authentication failed, please make sure that a valid ModelScope token is supplied."},"request_id":"..."}; an unauthenticated GET of https://api-inference.modelscope.cn/v1/chat/completions answered HTTP 404 with the plain-text body "404 page not found"; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:`public docs pages https://modelscope.cn/docs/model-service/API-Inference/intro ("API-Inference is provided free of charge to registered ModelScope users.") and https://modelscope.cn/docs/model-service/API-Inference/limits ("free of charge"), English text read from the docs site's document files; credential-free`},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),UAe,yNr=E({"src/lib/providers/catalog/moonshot-ai.json"(){UAe={$schema:"./provider-catalog.schema.json",id:"moonshot-ai",displayName:"Moonshot AI (Kimi)",aliases:["moonshot","kimi"],tier:2,wire:{baseURL:"https://api.moonshot.ai/v1",apiKeyFallbackEnvVars:["MOONSHOT_API_KEY"]},models:{default:"kimi-k3",fallbacks:["kimi-k2.7-code","kimi-k2.6","kimi-k2.7-code-highspeed"],defaultContextWindow:262144,defaultMaxOutputTokens:131072,catalog:{"kimi-k3":{contextWindow:1048576,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!0,status:"production",description:`NeuroLink default. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "Kimi's most capable model to date, with 2.8 trillion parameters, native visual understanding, and a 1M-token context window, designed for frontier intelligence scenarios such as software engineering, knowledge work, and deep reasoning." The Kimi K3 page https://platform.kimi.ai/docs/guide/kimi-k3-quickstart calls it "Kimi's most capable flagship model to date", states "K3 always has thinking mode enabled" with the top-level reasoning_effort field (low, high, max; default max), and states max_completion_tokens "defaults to 131072 and can be set up to 1048576". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 1,048,576 tokens; per 1M tokens input $3.00, cached input $0.30, output $15.00, cache write $3.00 (TTL 5min) or $6.00 (TTL 1h). The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k3 in its description of the Kimi Vision Model, hence vision true.`},"kimi-k2.7-code":{contextWindow:262144,pricingPerMTok:{input:.95,output:4,cachedInput:.19},vision:!0,status:"production",description:`Fallback in NeuroLink's catalog order. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "Kimi's dedicated coding model." with "Context 256k". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 262,144 tokens; per 1M tokens cache-hit input $0.19, cache-miss input $0.95, output $4.00. The Kimi K2.7 Code page https://platform.kimi.ai/docs/guide/kimi-k2-7-code-quickstart states "Kimi K2.7 Code does not support non-thinking mode." The parameter reference https://platform.kimi.ai/docs/api/models-overview states that kimi-k2.6 and kimi-k2.7-code do not support tool_choice required and "return an error if it is passed". The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k2.7-code in its description of the Kimi Vision Model, hence vision true.`},"kimi-k2.7-code-highspeed":{contextWindow:262144,pricingPerMTok:{input:1.9,output:8,cachedInput:.38},vision:!0,status:"production",description:`Fallback in NeuroLink's catalog order. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "High-Speed version of Kimi K2.7 Code model, with output speed of approximately 180 Tokens/s and up to 260 Tokens/s in short context scenarios". The Kimi K2.7 Code page https://platform.kimi.ai/docs/guide/kimi-k2-7-code-quickstart states it is "the same model as Kimi K2.7 Code" and ends that paragraph with "(Currently, the resource is limited, and the experience of the high-speed model may be slightly fluctuate\uFF0Cwe are gradually increasing the resource.)". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 262,144 tokens; per 1M tokens cache-hit input $0.38, cache-miss input $1.90, output $8.00. The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k2.7-code-highspeed in its description of the Kimi Vision Model, hence vision true.`},"kimi-k2.6":{contextWindow:262144,pricingPerMTok:{input:.95,output:4,cachedInput:.16},vision:!0,status:"production",description:`Fallback in NeuroLink's catalog order. Model list https://platform.kimi.ai/docs/models (retrieved 2026-09-29): "Supports both visual and text input, thinking and non-thinking modes, and dialogue and Agent tasks." with "Context 256k". Pricing page https://platform.kimi.ai/docs/pricing/chat (2026-09-29): context window 262,144 tokens; per 1M tokens cache-hit input $0.16, cache-miss input $0.95, output $4.00. The Thinking Models page https://platform.kimi.ai/docs/guide/use-thinking-models states "thinking is on by default, can be disabled" for kimi-k2.6. The response_format guide https://platform.kimi.ai/docs/guide/response_format states "kimi-k2.6 occasionally behaves unstably with complex schemas; for example, $ref may return a Markdown code block, oneOf may be ignored, and partial=true may output fields outside the schema." The vision guide https://platform.kimi.ai/docs/guide/use-kimi-vision-model names kimi-k2.6 in its description of the Kimi Vision Model, hence vision true.`}},topModels:["kimi-k3","kimi-k2.7-code","kimi-k2.7-code-highspeed","kimi-k2.6"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{pattern:"Account balance is insufficient|Token quota is insufficient|exceeded_current_quota_error",class:"provider",message:'Moonshot AI reports an insufficient account balance or token quota (HTTP 429, exceeded_current_quota_error). Its error list gives the messages "Account balance is insufficient or the account has been disabled" and "Token quota is insufficient" (https://platform.kimi.ai/docs/api/errors)'},{status:401,class:"authentication",message:'Invalid or missing Moonshot AI API key (HTTP 401, incorrect_api_key_error: "The API key was not provided, or the key is incorrect"). Check {apiKeyEnvVar}. Get one at {setupUrl}. Keys issued on platform.kimi.ai are independent from keys issued on other regional Kimi platforms (https://platform.kimi.ai/docs/api/errors)'},{status:404,class:"invalid-model",message:'Model {model} was not found, or this account does not have permission to access it (HTTP 404, resource_not_found_error: "Model not found, or this account does not have permission to access the model"; https://platform.kimi.ai/docs/api/errors)'},{status:429,class:"rate-limit",message:"Moonshot AI returned HTTP 429. Its error list gives engine_overloaded_error, exceeded_current_quota_error and rate_limit_reached_error for this status (https://platform.kimi.ai/docs/api/errors)"}],quirks:{replayReasoningContent:!0},setup:{url:"https://platform.kimi.ai/console/api-keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://platform.kimi.ai/console/api-keys and sign in, then create and copy an API key (https://platform.kimi.ai/docs/overview describes signing in to the Kimi API Platform and creating a key under API Keys)",'2. Create the key on platform.kimi.ai: the errors page states that keys issued on platform.kimi.ai are independent from keys issued on other regional Kimi platforms, and that "Mixing keys across platforms returns 401." (https://platform.kimi.ai/docs/api/errors)','3. Top up before use: "To prevent abuse, you need to recharge at least $1 to start using, and when your cumulative recharge reaches $5, you will receive a $5 voucher." (https://platform.kimi.ai/docs/pricing/limits); the Kimi K3 page states "Kimi K3 is a flagship model: it is unlocked after a successful top-up (minimum $1)." (https://platform.kimi.ai/docs/guide/kimi-k3-quickstart)',"4. Set {apiKeyEnvVar} in your .env file (MOONSHOT_API_KEY, the variable Kimi's own docs use, is also read)"],description:`OpenAI-compatible endpoint at https://api.moonshot.ai/v1 (https://platform.kimi.ai/docs/overview: "Kimi API lets you interact with Kimi models and is compatible with both the OpenAI and Anthropic API formats."). The docs and console live on platform.kimi.ai and call the product the Kimi API; the API host is api.moonshot.ai. This entry is docs-verified only: the vendor's GET /v1/models needs a key, so the four model ids come from its public docs and the roster has not been checked; it is not yet live-verified. models.defaultContextWindow (262144, the context window the pricing page lists for kimi-k2.7-code, kimi-k2.7-code-highspeed and kimi-k2.6) and models.defaultMaxOutputTokens (131072, the max_completion_tokens default the vendor states for kimi-k3) apply to model ids outside the catalog and are placeholders, since the vendor publishes no figure for such ids. errorRules follow the statuses and messages on https://platform.kimi.ai/docs/api/errors; the 401 status and incorrect_api_key_error type were also seen on an unauthenticated GET of /v1/models.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.moonshot.ai/v1/models answers 401 without a key, so model ids are taken from https://platform.kimi.ai/docs/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"incorrect_api_key_error",method:`unauthenticated GET https://api.moonshot.ai/v1/models with no credentials \u2014 HTTP 401, JSON body {"error":{"message":"Incorrect API key provided","type":"incorrect_api_key_error"}}; the code recorded here is the body's error.type value (the body has no error.code field); credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public page https://platform.kimi.ai/docs/pricing/limits \u2014 "To prevent abuse, you need to recharge at least $1 to start using, and when your cumulative recharge reaches $5, you will receive a $5 voucher."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),BAe,vNr=E({"src/lib/providers/catalog/morph.json"(){BAe={$schema:"./provider-catalog.schema.json",id:"morph",displayName:"Morph",aliases:["morphllm"],tier:2,wire:{baseURL:"https://api.morphllm.com/v1"},models:{default:"morph-v3-large",fallbacks:["morph-v3-large","morph-v3-fast"],defaultContextWindow:262144,defaultMaxOutputTokens:131072,catalog:{"morph-v3-large":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:.9,output:1.9},vision:!1,status:"production",description:"Recommended - Morph's high-accuracy Fast Apply model for complex code edits (2500+ tok/sec, 98% accuracy); the general-purpose choice of Morph's two chat-usable models. Does not honour the OpenAI tool-calling contract: with tools attached it emits the call as literal <tool_call> text in message.content instead of a tool_calls array"},"morph-v3-fast":{contextWindow:262144,maxOutputTokens:131072,pricingPerMTok:{input:.8,output:1.2},vision:!1,status:"production",description:"Morph's fastest Fast Apply model, purpose-built for applying code edits (10,500+ tok/sec, 96% accuracy) rather than general chat. Ignores the tools parameter outright and returns unrelated generated text instead of a tool call"}},topModels:["morph-v3-large","morph-v3-fast"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"API key required",class:"authentication",message:"Invalid or missing Morph API key. Check {apiKeyEnvVar}. Get one at https://morphllm.com/dashboard"},{status:400,pattern:"is not served by this endpoint",class:"invalid-model",message:"Morph model '{model}' is not served by this endpoint. Pick a current model from the authenticated GET /v1/models roster or https://morphllm.com/dashboard."}],setup:{url:"https://morphllm.com/dashboard",apiKeyFormat:null,billingPolicy:"free-with-card",description:"API key",instructions:["1. Visit: https://morphllm.com/dashboard and sign in","2. A card on file is required; the account is rate-limited (5 req/min) until one is added","3. Create an API key on the dashboard","4. Set {apiKeyEnvVar} in your .env file"]},quirks:{messageContentFormat:"string"},evidence:{rosterVerified:{date:"2026-09-05",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-05",status:401,code:"invalid_api_key"},liveMatrix:{date:"2026-09-05",result:"Full wire probe on morph-v3-fast plus a focused tool-calling re-probe on both chat models. Non-tool basics all 200: chat, max_completion_tokens, system role, sampling params, SSE streaming (content deltas, usage chunk, [DONE]), json_schema (valid JSON matching schema) and json_object. Array-shaped message content is REJECTED with HTTP 500 'Request processing failed: text.charCodeAt is not a function' \u2014 same class of quirk as Cloudflare (PR #1587); messageContentFormat is set to 'string' and vision is false because the vision probe sends array parts and hits the identical 500. Tool calling does NOT work despite HTTP 200: morph-v3-large echoes the call as literal '<tool_call>{...}</tool_call>' text in message.content, and morph-v3-fast ignores the tools parameter and returns unrelated generated text (Python source) with finish_reason=length. tools and toolsWithStreaming are declared false on that basis; tools_plus_schema returning 200 is not evidence of structuredOutputWithTools since tools do not actually work. structuredOutput is true and strong (schema-conformant JSON, json_object accepted). The GET /v1/models roster lists 22 ids (morph-v3-fast, morph-v3-large, auto, morph-compactor, morph-warp-grep-v2.1, and passthrough ids for GLM/DeepSeek/Kimi/Qwen/MiniMax/Gemma/computer-use), but a deliberately invalid model name on /chat/completions came back 'is not served by this endpoint; accepted models: morph-v0, morph-v2, morph-v3-fast, morph-v3-large' \u2014 none of those other 18 roster ids were live-verified against chat/completions, so only the two confirmed working chat models are catalogued; context window (262144) and max output tokens (131072) for both come from Morph's public model metadata (https://www.morphllm.com/api/models/json), which also supplied pricing. Morph is a code-application (Fast Apply) specialist, not a general chat vendor: morph-v3-large is catalogued as the default because it is the general-purpose one of the pair, while morph-v3-fast is purpose-built for edit application rather than open-ended conversation."},addedInPR:"https://github.com/juspay/neurolink/pull/1647"}}}}),zAe,wNr=E({"src/lib/providers/catalog/naver-clova-studio.json"(){zAe={$schema:"./provider-catalog.schema.json",id:"naver-clova-studio",displayName:"NAVER CLOVA Studio",aliases:[],tier:2,wire:{baseURL:"https://clovastudio.stream.ntruss.com/v1/openai"},models:{default:"HCX-005",fallbacks:["HCX-005"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"HCX-005":{contextWindow:128e3,maxOutputTokens:4096,vision:!1,tools:!0,status:"production",description:"Own Chat Completions v3 documentation names HCX-005 and states a combined input/output limit of 128,000 tokens and a maximum of 4,096 output tokens. The OpenAI-compatible guide uses the same model ID. This initial entry declares text and tool paths, not endpoint-specific image or native strict-schema acceptance. Account availability is unverified."}},topModels:["HCX-005"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[],quirks:{rejectRequiredToolChoice:!0},setup:{url:"https://console.ncloud.com",apiKeyFormat:null,billingPolicy:"promotional-credit",instructions:["Use an eligible NAVER Cloud account and subscribe to CLOVA Studio in the Korea region on Classic or VPC, following https://guide.ncloud-docs.com/docs/en/clovastudio-start.","The official new-signup program at https://www.ncloud.com/main/creditEvent, retrieved 2026-10-09, offers 100,000 KRW discount credit after payment-method registration and a credit application. Eligibility follows the policy at application time; prior recipients of other discounts cannot apply.","Issued credit is usable for three months against NAVER Cloud service charges. Free/trial products, Marketplace purchases and NAVER WORKS are excluded. This is a conditional promotional program, not a no-card free tier or proof of your current entitlement or balance.","Create a CLOVA Studio test or service API key under the CLOVA Studio API-key menu. Its OpenAI-compatible API accepts those keys with Authorization: Bearer; a general NAVER Cloud access key is not a substitute. Set {apiKeyEnvVar}.","The chat base is https://clovastudio.stream.ntruss.com/v1/openai and default model is HCX-005. Auto, none and named tool choices retain their documented meanings. Required tool choice is unsupported and explicitly rejected, never silently downgraded to auto."],description:"Documentation-based source pilot. CLOVA Studio is usage-priced; conditional NAVER Cloud promotional credit requires payment-method registration/application and eligibility. Actual account subscription, models, credit balance and live API execution remain unverified. JSON-schema name/strict controls are ignored by the shim, so native strict-schema and tools-plus-schema support are not declared."},evidence:{rosterVerified:{date:"2026-10-09",code:"DOCS_ONLY_ROSTER_NOT_OBSERVED",method:"Public first-party HCX-005 Chat v3 limits, OpenAI compatibility and function-calling documents only. No authenticated model roster, account/key lookup or inference performed. Limits 128,000 / 4,096 are explicit per-model source constraints, not K/M expansion."},billingProbe:{date:"2026-10-09",code:"PUBLIC_PROMOTIONAL_POLICY_ONLY",method:"Public https://guide.ncloud-docs.com/docs/en/clovastudio-spec confirms usage fees; https://www.ncloud.com/main/creditEvent publishes conditional 100,000 KRW credit, valid three months, after payment-method registration and application. No card-only requirement or current account entitlement is claimed."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1966"}}}}),GAe,bNr=E({"src/lib/providers/catalog/nebius.json"(){GAe={$schema:"./provider-catalog.schema.json",id:"nebius",displayName:"Nebius Token Factory",aliases:[],tier:2,wire:{baseURL:"https://api.tokenfactory.nebius.com/v1"},models:{default:"Qwen/Qwen3-235B-A22B-Instruct-2507",fallbacks:["deepseek-ai/DeepSeek-V4-Flash-0731","openai/gpt-oss-120b","Qwen/Qwen3-30B-A3B-Instruct-2507","NousResearch/Hermes-4-405B"],defaultContextWindow:32e3,defaultMaxOutputTokens:8192,catalog:{"Qwen/Qwen3-235B-A22B-Instruct-2507":{contextWindow:262144,pricingPerMTok:{input:.2,output:.6},vision:!1,status:"production",description:'NeuroLink default. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Qwen3-235B-A22B-Instruct-2507"; type text2text; status active; description "Balanced Qwen3 flagship tuned for strong general reasoning, chat quality, and tool use."; tags "262K context", "code", "math", "JSON mode"; use_cases text, code, function_calling, context_and_rag, fine_tune, responses_api; context_window_k 262; max_model_len 262144; input_price_per_million_tokens 0.2; output_price_per_million_tokens 0.6. vision false: catalog type text2text.'},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:1024e3,pricingPerMTok:{input:.14,output:.28},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "DeepSeek-V4-Flash-0731"; type text2text; status active; description "DeepSeek V4 Flash 0731 is a 1M-context reasoning model designed for coding and agentic workloads."; tags "1M context", "reasoning", "JSON mode", "code", "math"; use_cases text, reasoning, function_calling, code, context_and_rag, responses_api, fine_tune; context_window_k 1024; max_model_len 1024000; input_price_per_million_tokens 0.14; output_price_per_million_tokens 0.28. vision false: catalog type text2text. The August 2026 deprecation notice (https://docs.tokenfactory.nebius.com/august-2026-deprecation-notice) lists this id in its "Recommended Replacement" column.'},"openai/gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.15,output:.6},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "gpt-oss-120b"; type text2text; status active; description "Open-weight agentic model with configurable reasoning, full CoT visibility, strong tool use, and fine-tuning support."; tags "131K context", "code", "JSON mode", "math", "reasoning"; use_cases text, code, fine_tune, function_calling, reasoning; context_window_k 131; max_model_len 131072; input_price_per_million_tokens 0.15; output_price_per_million_tokens 0.6. vision false: catalog type text2text. The Structured output & JSON page (https://docs.tokenfactory.nebius.com/ai-models-inference/json) uses this id in its JavaScript example.'},"Qwen/Qwen3-30B-A3B-Instruct-2507":{contextWindow:262144,pricingPerMTok:{input:.1,output:.3},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Qwen3-30B-A3B-Instruct-2507"; type text2text; status active; description "Versatile 30B instruct model optimized for high-quality chat, reasoning, and coding."; tags "262K context", "code", "math", "JSON mode"; use_cases text, code, function_calling, context_and_rag, fine_tune, responses_api; context_window_k 262; max_model_len 262144; input_price_per_million_tokens 0.1; output_price_per_million_tokens 0.3. vision false: catalog type text2text.'},"NousResearch/Hermes-4-405B":{contextWindow:131072,pricingPerMTok:{input:1,output:3},vision:!1,status:"production",description:'Fallback. Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Hermes-4-405B"; type text2text; status active; description "Hybrid-reasoning model trained on verified CoT traces for strong math, coding, and step-by-step reliability."; tags "128K context", "JSON mode"; use_cases text, code, complex_writing, context_and_rag, function_calling, reasoning, summarization, responses_api; context_window_k 128; max_model_len 131072; input_price_per_million_tokens 1; output_price_per_million_tokens 3. vision false: catalog type text2text.'},"nvidia/Nemotron-3_5-Lightning":{contextWindow:1048576,pricingPerMTok:{input:.06,output:.24},vision:!1,status:"production",description:`Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "Nemotron-3.5-Lightning"; type text2text; status active; description "NVIDIA's 30B-parameter hybrid MoE model with 3B active parameters per token, designed for efficient agentic reasoning, tool use, coding, and long-context workflows."; tags "1M context", "reasoning", "code", "function calling", "MTP"; use_cases text, reasoning, function_calling, code, context_and_rag, responses_api; context_window_k 1024; max_model_len 1048576; input_price_per_million_tokens 0.06; output_price_per_million_tokens 0.24. vision false: catalog type text2text. The August 2026 deprecation notice (https://docs.tokenfactory.nebius.com/august-2026-deprecation-notice) lists this id in its "Recommended Replacement" column.`},"openbmb/MiniCPM-V-4_5":{contextWindow:32e3,pricingPerMTok:{input:.658,output:1.11},vision:!0,status:"production",description:'Public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29): name "openbmb/MiniCPM-V-4_5"; type image2text; status active; description "MiniCPM-V-4.5 \u2013 Compact multimodal model for image, multi-image, high-FPS/long-video, OCR/PDF understanding, with switchable fast/deep thinking."; tags "JSON mode"; use_cases text, image, summarization, context_and_rag; context_window_k 32; max_model_len 32000; input_price_per_million_tokens 0.658; output_price_per_million_tokens 1.11. vision true: catalog type image2text with image in use_cases.'}},topModels:["Qwen/Qwen3-235B-A22B-Instruct-2507","deepseek-ai/DeepSeek-V4-Flash-0731","openai/gpt-oss-120b","Qwen/Qwen3-30B-A3B-Instruct-2507","NousResearch/Hermes-4-405B","nvidia/Nemotron-3_5-Lightning","openbmb/MiniCPM-V-4_5"],visionModel:"openbmb/MiniCPM-V-4_5"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Nebius Token Factory returned HTTP 401. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:402,class:"provider",message:"Nebius Token Factory returned HTTP 402 (Payment Required): the account budget is exhausted. Billing details: https://docs.tokenfactory.nebius.com/other-capabilities/billing-new"},{status:404,class:"invalid-model",message:"Nebius Token Factory returned HTTP 404: the model '{model}' does not exist. Model ids are listed at https://tokenfactory.nebius.com/model-catalog.md"},{status:429,class:"rate-limit",message:"Nebius Token Factory returned HTTP 429 (rate limit exceeded). The Retry-After response header gives the time in seconds to wait before making another request (https://docs.tokenfactory.nebius.com/ai-models-inference/rate-limits)"}],setup:{url:"https://tokenfactory.nebius.com/",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://tokenfactory.nebius.com/ and create an account; the quickstart (https://docs.tokenfactory.nebius.com/quickstart) says: "Log in using your Google or GitHub account"','2. Create an API key (https://docs.tokenfactory.nebius.com/api-reference/introduction#authentication): go to the API keys section, click Create API key, enter the key name, click Create, and save the displayed key \u2014 "Save the displayed API key. You cannot open it later in Nebius Token Factory."','3. Billing (https://docs.tokenfactory.nebius.com/other-capabilities/billing-new): "Billing setup is mandatory\u2014you cannot complete onboarding without it." "Setting up a billing account requires a bank card." "Upon first sign-up, you receive $1 in trial credit, valid for 30 days."',"4. Set {apiKeyEnvVar} in your .env file (the vendor's docs read NEBIUS_API_KEY)"],description:`OpenAI-compatible endpoint at https://api.tokenfactory.nebius.com/v1 (https://docs.tokenfactory.nebius.com/api-reference/introduction: "Nebius Token Factory offers an OpenAI-compatible API for inference and fine-tuning."). Docs-verified, not live-verified: an unauthenticated GET of https://api.tokenfactory.nebius.com/v1/models answers HTTP 401 without a key, so the model ids come from the vendor's public model catalog (https://tokenfactory.nebius.com/api/public/models_info, retrieved 2026-09-29) and the roster has not been checked against the API. errorRules follow the statuses and example bodies in https://docs.tokenfactory.nebius.com/api-reference/inference/create-chat-completion (401, 402, 404, 429). models.defaultMaxOutputTokens (8192) is the value that reference gives for an omitted max_tokens ("If omitted or set to null, defaults to 8192 tokens."); models.defaultContextWindow (32000) is a placeholder the vendor does not publish.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.tokenfactory.nebius.com/v1/models answers 401 without a key, so model ids are taken from https://tokenfactory.nebius.com/api/public/models_info (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:`unauthenticated GET https://api.tokenfactory.nebius.com/v1/models \u2014 body {"detail":"Couldn't authenticate. Reason: token is not present"}; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public page https://docs.tokenfactory.nebius.com/other-capabilities/billing-new \u2014 "Setting up a billing account requires a bank card." and "Upon first sign-up, you receive $1 in trial credit, valid for 30 days."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),qAe,TNr=E({"src/lib/providers/catalog/neuralwatt.json"(){qAe={$schema:"./provider-catalog.schema.json",id:"neuralwatt",displayName:"Neuralwatt",aliases:[],tier:2,wire:{baseURL:"https://api.neuralwatt.com/v1"},models:{default:"glm-5.3",fallbacks:["glm-5.3-flash","qwen-3.8-27b","qwen3.6-35b","kimi-k2.7-code","kimi-k3","deepseek-v4.1-flash","gemma-4-31b"],defaultContextWindow:1048560,defaultMaxOutputTokens:4096,visionModel:"qwen-3.8-27b",catalog:{"glm-5.3":{contextWindow:1048560,pricingPerMTok:{input:1.45,output:4.5,cachedInput:.145},vision:!1,status:"production",description:'ZhipuAI GLM 5.3 (fp8-native, zai-org/GLM-5.3) \u2014 the model used in every quickstart code sample on https://docs.neuralwatt.com/quickstart (curl, Python and Node.js all default to "glm-5.3"), so it is treated as Neuralwatt\'s own recommended default here. Roster metadata (GET /v1/models, 2026-09-28) marks reasoning mandatory (default effort "max") and declares tools:true and json_mode:true, but neither claim was independently probed \u2014 this onboarding is fully credential-free, no POST request was made. json_mode is not backed by a documented `response_format` parameter anywhere in the chat-completions API reference (https://docs.neuralwatt.com/api-reference/inference/create-a-chat-completion, retrieved 2026-09-28), so capabilities.structuredOutput is left false rather than trusting the flag alone. limits.max_output_tokens is null for this model in the live roster \u2014 omitted here rather than invented; models.defaultMaxOutputTokens (4096) is a generic placeholder, not a Neuralwatt-stated ceiling for this model. Pricing per the same roster response: $1.45 / $4.50 per MTok input/output, $0.145 cached input.'},"glm-5.3-flash":{contextWindow:1048560,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:"ZhipuAI GLM 5.3 Flash \u2014 lighter/cheaper sibling of the default. Roster-listed only (GET /v1/models, 2026-09-28); not itself exercised in any code sample; fallback. vision:true and max_output_tokens are as declared by the roster response \u2014 the latter is null there, so it is omitted rather than invented."},"qwen-3.8-27b":{contextWindow:262128,maxOutputTokens:131072,pricingPerMTok:{input:.45,output:3.2,cachedInput:.25},vision:!0,status:"production",description:"Qwen 3.8 27B (Qwen/Qwen3.8-27B-FP8) \u2014 dense 27B VL model with native 262K context; the first entry in Neuralwatt's own /v1/models roster (GET, 2026-09-28) and one of the few catalog entries with a documented max_output_tokens ceiling (131,072) and image limits (max_images:20, max_images_total:200), so it is used as models.visionModel. Roster-listed and roster-priced only; fallback, not capability-probed (credential-free onboarding, no POST made)."},"qwen3.6-35b":{contextWindow:262128,pricingPerMTok:{input:.29,output:1.15,cachedInput:.029},vision:!0,status:"production",description:"Qwen 3.6 35B \u2014 roster-listed only (GET /v1/models, 2026-09-28); not capability-probed; fallback. max_output_tokens is null in the roster response, so it is omitted here."},"kimi-k2.7-code":{contextWindow:262128,pricingPerMTok:{input:.95,output:4,cachedInput:.095},vision:!0,status:"production",description:`MoonshotAI Kimi K2.7 Code (moonshotai/Kimi-K2.7-Code) \u2014 "quant-agnostic canonical name for the Kimi K2.7 Code family" per the roster's own description field (GET /v1/models, 2026-09-28). Roster-listed and roster-priced only; not capability-probed; fallback. max_output_tokens is null in the roster response, so it is omitted here.`},"kimi-k3":{contextWindow:1048560,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!0,status:"production",description:"MoonshotAI Kimi K3 \u2014 general-purpose sibling of the Code line, 1M context per the roster (GET /v1/models, 2026-09-28). Roster-listed only; not capability-probed; fallback. max_output_tokens is null in the roster response, so it is omitted here."},"deepseek-v4.1-flash":{contextWindow:1048560,maxOutputTokens:393216,pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!0,status:"production",description:"DeepSeek V4.1 Flash \u2014 roster-listed with a documented max_output_tokens ceiling (393,216) and vision:true (GET /v1/models, 2026-09-28). Not capability-probed; fallback."},"gemma-4-31b":{contextWindow:262128,maxOutputTokens:16384,pricingPerMTok:{input:.144,output:.42,cachedInput:.0144},vision:!0,status:"production",description:`NVIDIA's Gemma 4 31B build (owned_by/provider "nvidia" per the roster, GET /v1/models, 2026-09-28) \u2014 the only catalog entry from that provider label. Roster-listed with a documented max_output_tokens ceiling (16,384); not capability-probed; fallback.`}},topModels:["glm-5.3","glm-5.3-flash","qwen-3.8-27b","qwen3.6-35b","kimi-k2.7-code","kimi-k3","deepseek-v4.1-flash","gemma-4-31b"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,pattern:"Invalid API key|invalid_api_key|authentication_error",class:"authentication",message:"Invalid Neuralwatt API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:404,pattern:"model_not_found|not\\s+found",class:"invalid-model",message:"Neuralwatt model '{model}' not found. Pick a current model from the unauthenticated GET https://api.neuralwatt.com/v1/models roster or {setupUrl}"},{status:429,pattern:"rate_limit_exceeded|concurrent_budget_exceeded|tpm_uncached_exceeded",class:"rate-limit",message:"Neuralwatt rate limit hit for {model}. The error body includes retry_after and a retry_strategy \u2014 back off and retry rather than failing immediately."}],setup:{url:"https://portal.neuralwatt.com",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:["1. Visit: https://portal.neuralwatt.com and sign up","2. Add a payment method in Dashboard > Billing \u2014 new accounts start with a $0 balance, and adding a card grants $1.00 in free trial credit (no charge is made; the credit is valid for 30 days)","3. Navigate to Dashboard > API Keys and create a new key \u2014 copy it immediately, it is shown in full only once and starts with sk-","4. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.neuralwatt.com/v1 ("Neuralwatt Cloud"), serving 21 hosted open-weight models across Qwen, MoonshotAI Kimi, ZhipuAI GLM, DeepSeek and an NVIDIA Gemma build, with per-request energy and cost reporting (SSE comment lines / X-Request-Cost-USD headers). New accounts start at a $0 balance; adding a payment method grants a $1.00 trial credit valid 30 days, then usage is pay-per-token. Not all models support tool calling per Neuralwatt's own tool-calling guide \u2014 check a given model's capabilities on the /v1/models roster before relying on it.`},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.neuralwatt.com/v1/models \u2014 21 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),jAe,_Nr=E({"src/lib/providers/catalog/novita.json"(){jAe={$schema:"./provider-catalog.schema.json",id:"novita",displayName:"Novita AI",aliases:[],tier:2,wire:{baseURL:"https://api.novita.ai/openai/v1"},models:{default:"zai-org/glm-5.3-flash",testModel:"zai-org/glm-5.3-flash",fallbacks:["meta-llama/llama-3.3-70b-instruct","deepseek/deepseek-v3-0324","qwen/qwen-2.5-72b-instruct","google/gemma-3-27b-it"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"meta-llama/llama-3.3-70b-instruct":{vision:!1,status:"production",description:"Meta Llama 3.3 70B Instruct; a plain non-reasoning chat model. Kept as a fallback for plain chat because it does not support structured output; the runtime/default model is zai-org/glm-5.3-flash (see evidence.liveMatrix)"},"zai-org/glm-5.3-flash":{pricingPerMTok:{input:.075,output:.25,cachedInput:.015},vision:!1,status:"production",description:"Zhipu GLM-5.3 Flash \u2014 Novita's own served default and the model exercised end-to-end by NeuroLink's live capability probe (chat, streaming, tool calling, tools+streaming, tools+schema together). Reasons internally via `reasoning_content` before answering, so it needs a generous max_tokens budget or replies get cut mid-thought \u2014 pin `testModel` here for the capability matrix. Pricing from the authenticated roster, 2026-09-05"},"deepseek/deepseek-v3-0324":{vision:!1,status:"production",description:"DeepSeek V3 (0324 snapshot) \u2014 the non-reasoning DeepSeek chat line (the reasoning variant is deepseek/deepseek-r1); fallback"},"qwen/qwen-2.5-72b-instruct":{vision:!1,status:"production",description:"Qwen 2.5 72B Instruct \u2014 plain (non-thinking) Alibaba Qwen chat model; fallback"},"google/gemma-3-27b-it":{vision:!1,status:"production",description:"Google Gemma 3 27B IT \u2014 non-reasoning instruct chat model; fallback"}},topModels:["meta-llama/llama-3.3-70b-instruct","zai-org/glm-5.3-flash","deepseek/deepseek-v3-0324","qwen/qwen-2.5-72b-instruct","google/gemma-3-27b-it"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"failed to authenticate API key|FAILED_TO_AUTH",class:"authentication",message:"Invalid Novita API key. Check {apiKeyEnvVar}. Get one at https://novita.ai/settings/key-management"},{status:404,pattern:"model not found|MODEL_NOT_FOUND",class:"invalid-model",message:"Novita model '{model}' not found. Pick a current model from the authenticated /openai/v1/models roster or https://novita.ai/models"}],setup:{url:"https://novita.ai/settings/key-management",apiKeyFormat:"^sk_[A-Za-z0-9_-]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://novita.ai/settings/key-management and sign in (Google, GitHub, Hugging Face, or email)","2. Choose Create API Key, name it, and copy it immediately \u2014 it is shown in full only once and starts with sk_","3. New accounts start on a small trial voucher (a few dollars of Model API credit); manual top-ups go through Stripe with a $10 minimum, so keep early test calls small","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.novita.ai/openai/v1. New accounts start on a small trial voucher; the roster spans 150+ open-weight chat, reasoning and vision-named models."},evidence:{rosterVerified:{date:"2026-09-05",method:"authenticated GET /openai/v1/models \u2014 156 ids, e.g. zai-org/glm-5.3-flash, zai-org/glm-5.3, deepseek/deepseek-v4-pro-0813, moonshotai/kimi-k3",status:200},authProbe:{date:"2026-09-05",status:401,code:"FAILED_TO_AUTH"},liveMatrix:{date:"2026-09-05",result:`18-probe harness against zai-org/glm-5.3-flash (Novita's own served default) via https://api.novita.ai/openai/v1. Wire mechanics: chat, system role, array content parts, sampling params and max_completion_tokens all 200; SSE streaming 200 with a usage chunk and a terminal [DONE]. Reasoning is genuinely heavy on this model \u2014 several 200 responses show finish_reason=length with only 8 completion tokens, entirely spent on an unfinished reasoning_content and an empty visible content \u2014 but \`default\` and \`testModel\` are both pinned to the probed model itself (zai-org/glm-5.3-flash, Novita's own served default), which is exactly what the capability matrix below exercises \u2014 see the structured-output findings further down for why the reasoning-heavy default is still the right choice over the plain meta-llama/llama-3.3-70b-instruct fallback. Tool calling: a real tool_call (get_time, parsed tz argument) on the first turn, a null-content assistant tool_calls turn accepted on replay, and a tool_call surfacing mid-SSE-stream \u2014 tools and toolsWithStreaming true; tool_choice is tolerated even with no tools declared. response_format json_object returns 200 cleanly \u2014 structuredOutput true. response_format json_schema also returns 200, but at this token budget the content is unfinished reasoning text rather than schema-conformant JSON, same reasoning-budget effect as above \u2014 NeuroLink's coerceJsonToSchema repair layer is the safety net here, as for other reasoning-heavy vendors. Sending tools and a JSON schema together in one request succeeds (200, real tool_call returned) at the wire level. That single-shot result alone does not demonstrate the combined capability \u2014 the follow-up turn where the model must answer the original JSON-schema question from a tool result was untested at raw-probe time. It was proved separately through the SDK's public surface: \`generate({ provider: 'novita', schema, ...})\` with a registered getTime tool called end-to-end via dist/index.js \u2014 the model invoked getTime(tz='Asia/Tokyo') (toolsUsed=['getTime'], stepsUsed=2), then answered \`{"city":"Tokyo","time":"09:00"}\`, which parsed against the request schema with no repair needed (jsonRepaired/jsonTruncated both unset) \u2014 passed 1/1 in the final live proof. structuredOutputWithTools is declared true on that basis. Vision: a 64x64 PNG sent to glm-5.3-flash (not a vision-tagged model; Novita has no live-verified vision model) returns 200 with reasoning_content correctly describing 'a solid blue rectangle' but an EMPTY final content \u2014 not a working, schema-usable vision reply, so no catalog entry is marked vision:true and models.visionModel is left unset. bad key -> 401 {"code":401,"reason":"FAILED_TO_AUTH","message":"failed to authenticate API key"}; bad model -> 404 {"code":404,"reason":"MODEL_NOT_FOUND","message":"model not found"}. Novita funds this account with a $1 Model API voucher, so only this one model was live-probed end-to-end; the other four catalog entries are roster-verified by id only, not capability-probed. Structured output on Novita is per-model, and the catalog schema can only express it per provider. Verified 2026-09-05 at the wire: meta-llama/llama-3.3-70b-instruct returns HTTP 400 for response_format json_schema ("does not support 'json_schema' response format. Supported formats: json_object") and also 400 for json_object, while zai-org/glm-5.3-flash returns 200 for json_object, json_schema and tools+json_schema together. The default is therefore zai-org/glm-5.3-flash, which is also Novita's own served default, so the provider-level structuredOutput and structuredOutputWithTools flags are true for the model a default-configuration caller actually gets. meta-llama/llama-3.3-70b-instruct remains a fallback for plain chat. Tool calling was verified separately on both models (finish_reason=tool_calls with a structured call). Note that glm-5.3-flash is a reasoning model: at very small max_tokens (observed at 40) the budget is consumed by reasoning and content comes back empty; the entry's defaultMaxOutputTokens of 4096 is well clear of that.`},addedInPR:"https://github.com/juspay/neurolink/pull/1647"}}}}),VAe,ENr=E({"src/lib/providers/catalog/openai-decisions.json"(){VAe={$schema:"./provider-catalog.schema.json",id:"openai-decisions",displayName:"OpenAI Decisions",enumTypeName:"OpenAIDecisionsModels",aliases:[],inferenceKinds:["decide"],wire:{baseURL:"https://api.openai.com",envOverrides:{apiKey:"OPENAI_API_KEY"}},models:{default:"gpt-6-luna",topModels:["gpt-6-luna"],catalog:{"gpt-6-luna":{contextWindow:105e4,maxOutputTokens:256,vision:!0,status:"preview",description:"GPT-6 Luna on OpenAI's Decisions API (public beta): text and images"}}},timeouts:{decideMs:1e4},decisionLimits:{maxStateTokens:922e3,maxQuestions:200,advisory:!0,media:{maxImages:8,video:!1,maxRequestBytes:33554432}},decide:{dialect:"openai-decisions",order:7,baseURLNormalize:["strip-trailing-slash","strip-v1-suffix"],baseURLShape:"origin",ambientKeyGuard:{baseURLEnvVars:["OPENAI_BASE_URL","OPENAI_API_BASE"],trustedOrigins:["https://api.openai.com"],credentialBaseURLs:[{key:"openai",field:"baseURL"}]},endpoint:"{baseURL}/v1/decisions",model:{placement:"body"},requestIdHeaders:["x-request-id"],errors:{rules:[{status:401,kind:"authentication"},{status:429,kind:"rate_limit",retryable:!1},{status:503,kind:"overloaded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"error.message"}]}},setup:{url:"https://platform.openai.com/api-keys",apiKeyFormat:null,billingPolicy:"no-free-tier",description:"OpenAI API key (the same OPENAI_API_KEY the openai chat provider reads)",instructions:["1. Create an API key at https://platform.openai.com/api-keys","2. Set {apiKeyEnvVar}; it is shared with the openai chat provider",`3. With no other decision provider configured, {apiKeyEnvVar} alone makes openai-decisions the default decision provider (a last resort, after every other one except ScaleDown, as PERPLEXITY_API_KEY does for perplexity-decider), unless OPENAI_BASE_URL, OPENAI_API_BASE or credentials.openai.baseURL names a host other than https://api.openai.com: the key is then taken to be a gateway's and is not used by default. To use it while another provider is configured, name it in a call (provider: "openai-decisions" or --provider openai-decisions), but only if the key is OpenAI's, because a named call sends the environment key to api.openai.com. Behind a gateway, route it on purpose with OPENAI_DECISIONS_BASE_URL or credentials.openaiDecisions, or do not use it`,"4. Optional: OPENAI_DECISIONS_BASE_URL (an origin) and OPENAI_DECISIONS_MODEL (default gpt-6-luna)"]},evidence:{rosterVerified:{date:"2026-10-07",method:"OpenAI's Decisions guide and gpt-6-luna model page saved 2026-10-07: gpt-6-luna is the only model the endpoint supports. The 200-question cap was read on 2026-10-17 from the questions docstring (Ask 1\u2013200 questions about the input) in OpenAI's Python SDK, src/openai/types/decision_create_params.py in github.com/openai/openai-python, which is generated from OpenAI's API definition; the Decisions guide itself states no figure. Read from documentation; no live call, and a request over 200 questions was not tried"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1996"}}}}),HAe,SNr=E({"src/lib/providers/catalog/ovhcloud.json"(){HAe={$schema:"./provider-catalog.schema.json",id:"ovhcloud",displayName:"OVHcloud AI Endpoints",aliases:[],tier:2,wire:{baseURL:"https://oai.endpoints.kepler.ai.cloud.ovh.net/v1",envOverrides:{apiKey:"OVH_AI_ENDPOINTS_ACCESS_TOKEN"}},models:{default:"gpt-oss-120b",fallbacks:["gpt-oss-20b","Meta-Llama-3_3-70B-Instruct","Qwen3.6-27B","Mistral-Small-3.2-24B-Instruct-2506","Qwen3.5-9B"],defaultContextWindow:131072,defaultMaxOutputTokens:131072,catalog:{"gpt-oss-120b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.09,output:.47},vision:!1,status:"production",description:"Recommended default \u2014 OpenAI's open-weight gpt-oss-120b, the exact model OVHcloud's own getting-started guide uses for every code sample (docs.ovhcloud.com/en/guides/public-cloud/ai-machine-learning/ai-endpoints-getting-started, retrieved 2026-09-28), and the most fully documented model on the public catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/gpt-oss-120b/, retrieved 2026-09-28). That card's own \"Supported Features\" list names exactly Function calling, Reasoning and Streaming; its \"Output Formats\" list names raw_text, json_object and json_schema. The card's Python example builds the request with `Authorization: f\"Bearer {os.getenv('OVH_AI_ENDPOINTS_ACCESS_TOKEN')}\"` against https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/chat/completions, and reads a `reasoning_effort` generation parameter (low/medium/high) plus a `reasoning_content` response field \u2014 the basis for capabilities.thinking. No sign-in or API key was used to read any of this; it is all public documentation plus the unauthenticated GET on /v1/models. contextWindow and maxOutputTokens are the live, unauthenticated /v1/models response's own context_length/max_completion_tokens fields for this id (GET run 2026-09-28, HTTP 200). Pricing is that same response's per-token USD pricing (prompt/completion fields) converted to $/MTok; the EUR-denominated marketing catalog card quotes the same model at \u20AC0.08 in / \u20AC0.4 out per Mtoken, consistent with the API's USD figures at roughly current EUR/USD. No live request of any kind (chat, streaming, tool call) was made against this model \u2014 the entry is docs- and roster-verified only; see evidence.liveMatrix (null)."},"gpt-oss-20b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.05,output:.18},vision:!1,status:"production",description:`OpenAI's smaller open-weight gpt-oss-20b. Listed on the public catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) as a "Reasoning LLM" with Function calling: Yes, priced \u20AC0.04 in / \u20AC0.15 out per Mtoken \u2014 consistent with this id's per-token USD pricing on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200), which also supplies contextWindow/maxOutputTokens. Not individually probed; roster-verified fallback.`},"Qwen3.6-27B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.47,output:3.19},vision:!0,status:"production",description:`Qwen3.6-27B, listed on the public catalog card as "Visual LLM (New)" with Vision: Yes and Function calling: Yes (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28), priced \u20AC0.4 in / \u20AC2.7 out per Mtoken there \u2014 consistent with this id's per-token USD pricing on the live, unauthenticated GET /v1/models (2026-09-28, HTTP 200), which also supplies contextWindow/maxOutputTokens. Not individually probed; roster-verified fallback. No image-input wire format is documented, so it is not set as models.visionModel.`},"Qwen3.8-27B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.47,output:3.19},vision:!0,status:"production",description:`Qwen3.8-27B, a newer sibling of Qwen3.6-27B on the same catalog card, same "Visual LLM (New)" row: Vision: Yes, Function calling: Yes, \u20AC0.4 in / \u20AC2.7 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Qwen3.5-397B-A17B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.71,output:4.25},vision:!0,status:"production",description:`Qwen3.5-397B-A17B, the largest model in this roster (397B-parameter MoE, ~17B active). Catalog card: "Visual LLM (New)", Vision: Yes, Function calling: Yes, \u20AC0.6 in / \u20AC3.6 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Qwen3.5-9B":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.12,output:.18},vision:!0,status:"production",description:`Qwen3.5-9B, the smallest of the Qwen3.x "Visual LLM (New)" row: Vision: Yes, Function calling: Yes, \u20AC0.1 in / \u20AC0.15 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Meta-Llama-3_3-70B-Instruct":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.74,output:.74},vision:!1,status:"production",description:`Meta Llama 3.3 70B Instruct, a plain non-reasoning chat model. Catalog card: "LLM" category, Vision: No, Function calling: Yes, \u20AC0.67 in / \u20AC0.67 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback.`},"Qwen2.5-VL-72B-Instruct":{contextWindow:32768,maxOutputTokens:32768,pricingPerMTok:{input:1.01,output:1.01},vision:!0,status:"production",description:`Qwen2.5-VL-72B-Instruct \u2014 a dedicated vision-language model ("VL"). Catalog card: "Visual LLM" category, Vision: Yes, Function calling: No, \u20AC0.91 in / \u20AC0.91 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 the only model in this roster the vendor's own catalog explicitly marks Vision: Yes together with a specific, non-reasoning-family name, so it is set as models.visionModel. No image wire format (base64 vs. URL, content-parts shape) is documented, and no image request was sent (credential-free). Pricing/context/output-cap consistent with the live GET /v1/models (2026-09-28). Not individually probed; roster-verified.`},"Qwen3-Coder-30B-A3B-Instruct":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.07,output:.26},vision:!1,status:"production",description:`Qwen3-Coder-30B-A3B-Instruct \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200: id, context_length=262144, max_completion_tokens=262144, USD pricing) but not yet on the public marketing catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, checked 2026-09-28 \u2014 that page lists 20 of the API's 24 live ids; this is one of the 4 not yet listed there). vision:false follows the model family naming (a code-instruct Qwen3 build, no "VL"/visual designation) rather than an explicit per-model vision flag; tools support is likewise not individually confirmed for this id \u2014 roster-verified only, not capability-probed.`},"Mistral-Small-3.2-24B-Instruct-2506":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.1,output:.31},vision:!1,status:"production",description:`Mistral Small 3.2 24B Instruct (2506 snapshot) \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not yet on the public marketing catalog card (checked 2026-09-28, one of the 4 live ids not yet listed there). Mistral's own upstream Small 3.2 release is text-only in its OVH deployment name (no "VL"/visual designation); vision:false and tools support are not individually confirmed for this id \u2014 roster-verified only.`},"Mistral-7B-Instruct-v0.3":{contextWindow:65536,maxOutputTokens:65536,pricingPerMTok:{input:.11,output:.11},vision:!1,status:"production",description:"Mistral 7B Instruct v0.3 \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not on the public marketing catalog card (checked 2026-09-28). Small, plain instruct model; vision:false and tools support are not individually confirmed for this id \u2014 roster-verified fallback only."},"Mistral-Nemo-Instruct-2407":{contextWindow:65536,maxOutputTokens:65536,pricingPerMTok:{input:.14,output:.14},vision:!1,status:"production",description:"Mistral Nemo Instruct (2407 snapshot) \u2014 present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not on the public marketing catalog card (checked 2026-09-28). Plain instruct model; vision:false and tools support are not individually confirmed for this id \u2014 roster-verified fallback only."},"Qwen3Guard-Gen-8B":{contextWindow:32768,maxOutputTokens:16384,pricingPerMTok:{input:0,output:0},vision:!1,status:"preview",description:'Qwen3Guard-Gen-8B \u2014 a moderation/safety classifier, not a general-purpose chat model. Catalog card: "LLM Guard (Beta)" category, priced Free (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) \u2014 the live GET /v1/models response (2026-09-28) shows prompt/completion pricing of 0 for this id, confirming it. status is "preview" because the vendor explicitly labels it Beta. Kept out of models.fallbacks/topModels since it answers moderation prompts, not open-ended generation.'},"Qwen3Guard-Gen-0.6B":{contextWindow:32768,maxOutputTokens:16384,pricingPerMTok:{input:0,output:0},vision:!1,status:"preview",description:`Qwen3Guard-Gen-0.6B \u2014 smaller sibling of Qwen3Guard-Gen-8B, same moderation/safety-classifier role. Catalog card: "LLM Guard (Beta)" category, priced Free (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28); the live GET /v1/models response (2026-09-28) confirms 0 pricing for this id. status "preview" per the vendor's own Beta label. Kept out of models.fallbacks/topModels for the same reason as the 8B variant.`}},topModels:["gpt-oss-120b","gpt-oss-20b","Qwen3.6-27B","Qwen3.8-27B","Qwen3.5-397B-A17B","Qwen3.5-9B","Meta-Llama-3_3-70B-Instruct","Qwen2.5-VL-72B-Instruct","Mistral-Small-3.2-24B-Instruct-2506"],visionModel:"Qwen2.5-VL-72B-Instruct"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:403,pattern:"Authentication Failed",class:"authentication",message:"Invalid or revoked OVHcloud AI Endpoints access token. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://www.ovhcloud.com/en/public-cloud/ai-endpoints/",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:["1. Visit: https://www.ovhcloud.com/en/public-cloud/ai-endpoints/ and click Start now, which signs you in to (or creates) an OVHcloud Public Cloud manager account","2. In the manager, open Public Cloud > your project > AI & Machine Learning > AI Endpoints, and add a payment method to the project \u2014 OVHcloud states that projects in Discovery mode (no payment method) cannot use the service","3. Create an AI Endpoints API access token in that section; it is shown only once, so store it yourself, and note it can be given an expiration date and revoked","4. Set {apiKeyEnvVar} in your .env file (the vendor's own docs name this exact variable)"],description:`OpenAI-compatible endpoint at https://oai.endpoints.kepler.ai.cloud.ovh.net/v1, documented as "compatible with the OpenAI specifications" (docs.ovhcloud.com/en/guides/public-cloud/ai-machine-learning/ai-endpoints-getting-started). Several models (both Qwen3Guard classifiers, stable-diffusion-xl, the four NVIDIA Riva TTS voices) are billed at \u20AC0/free, but the account itself requires a payment method on the Public Cloud project before any API key can be used \u2014 OVHcloud's own docs: "projects in Discovery mode (without a payment method) cannot use the service." A very limited anonymous tier also exists (2 requests/minute per IP per model, undocumented auth shape) but is not what {apiKeyEnvVar} configures. Authenticated rate limit is documented as 400 requests/minute per project per model; over that returns HTTP 429. This catalog entry covers only the chat-completions models; OVHcloud AI Endpoints also serves speech-to-text (Whisper), text-to-speech (NVIDIA Riva), image generation (Stable Diffusion XL) and embeddings (bge-m3, bge-multilingual-gemma2, Qwen3-Embedding-8B) models on the same platform, which are out of scope for this Tier-2 chat-completions integration.`},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/models \u2014 24 models; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),WAe,kNr=E({"src/lib/providers/catalog/parasail.json"(){WAe={$schema:"./provider-catalog.schema.json",id:"parasail",displayName:"Parasail",aliases:[],tier:2,wire:{baseURL:"https://api.parasail.io/v1"},models:{default:"parasail-llama-33-70b-fp8",fallbacks:["parasail-llama-4-maverick-instruct-fp8","parasail-gpt-oss-120b","parasail-gpt-oss-20b","parasail-deepseek-v4-flash","parasail-deepseek-v4-pro","parasail-kimi-k3","parasail-glm-52","parasail-qwen3p5-35b-a3b","parasail-qwen25-vl-72b-instruct","parasail-gemma3-27b-it","parasail-minimax-m3"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"parasail-llama-33-70b-fp8":{contextWindow:131072,maxOutputTokens:16384,pricingPerMTok:{input:.22,output:.5,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink default. Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Llama 3.3 70B (FP8)": context window 131,072, max output 16,384, quantization FP8, $0.22 input / $0.50 output / $0.11 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice. The Chat Completions guide (https://docs.parasail.io/parasail-docs/guides/chat-completions.md) uses model="parasail-llama-33-70b-fp8" in its example.'},"parasail-llama-4-maverick-instruct-fp8":{contextWindow:524288,maxOutputTokens:32768,pricingPerMTok:{input:.35,output:1,cachedInput:.17},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Llama 4 Maverick (FP8)": context window 524,288, max output 32,768, quantization FP8, $0.35 input / $1.00 output / $0.17 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice.'},"parasail-gpt-oss-120b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.1,output:.75,cachedInput:.055},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "gpt-oss-120b": context window 131,072, max output 131,072, quantization FP4, $0.10 input / $0.75 output / $0.055 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. The Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) has sections headed "GPT-OSS reasoning control" and "Structured outputs with GPT-OSS".'},"parasail-gpt-oss-20b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.03,output:.15,cachedInput:.02},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "gpt-oss-20b": context window 131,072, max output 131,072, quantization FP4, $0.03 input / $0.15 output / $0.02 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. The Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) has sections headed "GPT-OSS reasoning control" and "Structured outputs with GPT-OSS".'},"parasail-deepseek-v4-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.14,output:.28,cachedInput:.07},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "DeepSeek V4 Flash": context window 1,048,576, max output 1,048,576, quantization FP8, $0.14 input / $0.28 output / $0.07 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-deepseek-v4-pro":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:1.74,output:3.48,cachedInput:.1},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "DeepSeek V4 Pro": context window 1,048,576, max output 1,048,576, quantization FP8, $1.74 input / $3.48 output / $0.10 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-kimi-k3":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Kimi K3": context window 1,048,576, max output 1,048,576, quantization FP4, $3.00 input / $15.00 output / $0.30 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-glm-52":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "GLM-5.2": context window 262,144, max output 262,144, quantization FP4, $1.40 input / $4.40 output / $0.26 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'},"parasail-qwen3p5-35b-a3b":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.15,output:1,cachedInput:.05},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Qwen3.5 35B-A3B": context window 262,144, max output 262,144, quantization FP8, $0.15 input / $1.00 output / $0.05 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice. The Chat Completions example in the Tool/Function Calling guide uses model="parasail-qwen3p5-35b-a3b".'},"parasail-qwen25-vl-72b-instruct":{contextWindow:128e3,maxOutputTokens:128e3,pricingPerMTok:{input:.8,output:1,cachedInput:.4},vision:!0,status:"production",description:`Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Qwen2.5-VL 72B": context window 128,000, max output 128,000, quantization FP8, $0.80 input / $1.00 output / $0.40 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). The Multi-Modal guide (https://docs.parasail.io/parasail-docs/guides/multi-modal.md) says "Below is an example using Qwen2.5-VL 72 B model with Parasail's serverless API." and sends an image_url content part with model="parasail-qwen25-vl-72b-instruct", hence vision is true. The Tool/Function Calling guide says it "also emits tool calls, but only reliably with" tool_choice="required".`},"parasail-gemma3-27b-it":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.08,output:.45,cachedInput:.04},vision:!1,status:"production",description:`Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "Gemma 3 27B": context window 131,072, max output 131,072, quantization FP8, $0.08 input / $0.45 output / $0.04 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice. The Tool/Function Calling guide names it among models that "don't support the tools parameter today".`},"parasail-minimax-m3":{contextWindow:1048576,maxOutputTokens:524288,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:'Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row "MiniMax M3": context window 1,048,576, max output 524,288, quantization FP8, $0.30 input / $1.20 output / $0.06 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with \u2705 under Tools and \u2705 under Tool Choice.'}},topModels:["parasail-llama-33-70b-fp8","parasail-llama-4-maverick-instruct-fp8","parasail-gpt-oss-120b","parasail-gpt-oss-20b","parasail-deepseek-v4-flash","parasail-deepseek-v4-pro","parasail-kimi-k3","parasail-glm-52","parasail-qwen3p5-35b-a3b","parasail-qwen25-vl-72b-instruct","parasail-gemma3-27b-it","parasail-minimax-m3"],visionModel:"parasail-qwen25-vl-72b-instruct"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:'Parasail answered HTTP 401. Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 401 as "Missing or invalid API key". Check {apiKeyEnvVar}. Create a key: {setupUrl}'},{status:403,class:"authentication",message:'Parasail answered HTTP 403 for model "{model}". Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 403 as "API key lacks access to the requested model or resource".'},{status:404,class:"invalid-model",message:'Parasail answered HTTP 404 for model "{model}". Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 404 as "Model or endpoint not found".'},{status:429,class:"rate-limit",message:'Parasail answered HTTP 429. Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 429 as "Rate limit or quota exceeded\u2014back off and retry".'}],setup:{url:"https://www.saas.parasail.io/keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://www.saas.parasail.io/keys \u2014 the link the Authentication page (https://docs.parasail.io/parasail-docs/api-reference/authentication.md) gives for getting an API key; sign-in was not attempted while building this entry",`2. Create an API key and copy it when it is shown \u2014 the Authentication page steps read "Click Create API Key." and "Copy the key immediately\u2014it's displayed only once."`,`3. Billing as the vendor states it: the Pricing page (https://docs.parasail.io/parasail-docs/billing/pricing.md) says "To use models, create API keys, and access paid platform services, add a credit card. Without a card, you can still view the platform but can't use models or API keys."`,"4. Set {apiKeyEnvVar} in your .env file (the docs' examples use the environment variable PARASAIL_API_KEY)"],description:`Docs-verified only: the vendor's GET https://api.parasail.io/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401), so the 12 model ids come from https://docs.parasail.io/parasail-docs/products/overview/models.md (retrieved 2026-09-29), which lists 33 rows and says "This catalog is generated daily from the live models endpoint.", and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.parasail.io/v1: the Authentication page (https://docs.parasail.io/parasail-docs/api-reference/authentication.md) says "All Parasail API requests use bearer token authentication. The API is fully OpenAI-compatible." and the Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) documents POST https://api.parasail.io/v1/chat/completions with a messages array in and choices[].message.content out. Unauthenticated GETs made 2026-09-29: /models, /chat/completions and the base URL /v1 each answered HTTP 401 with content-type application/json;charset=ISO-8859-1 and the body text "Unauthorized. No bearer token provided.". No POST request was sent. errorRules carry the four statuses 401, 403, 404 and 429 from the Error responses table of the Chat Completions reference. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are placeholders the vendor does not publish as general values; they apply to model ids outside models.catalog and equal the Context window cell of the Qwen2.5-VL 72B row and the Max output cell of the Llama 3.3 70B (FP8) row on the Models page. Each model's status field holds production, a value the catalog schema requires; it is not a vendor statement. Each model's vision field holds false except for parasail-qwen25-vl-72b-instruct, whose true comes from the Multi-Modal guide; the false values are placeholders for a boolean the schema requires, not vendor statements. capabilities.text is true because the Chat Completions reference documents POST /v1/chat/completions. capabilities.streaming is true because that reference has a Streaming section describing stream: true with server-sent events. capabilities.tools is model-dependent because the Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md) lists serverless models that return structured tool calls in a table and names other models that "don't support the tools parameter today". capabilities.structuredOutput is true because the Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md) documents response_format with type json_schema and guided_json, and lists models in a table with a "Guided JSON / JSON Schema" column. These capabilities were not exercised: no key was available. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.embeddings is false because NeuroLink's generic catalog provider does not implement embed(); the Chat Completions reference's endpoint table lists POST /v1/embeddings. capabilities.thinking is false because the entry sets no reasoning request parameter, although the Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) documents model-specific thinking and reasoning controls. billingPolicy holds the schema value no-free-tier because the catalog schema has no unknown value; it is not a vendor statement of signup terms. The Pricing page (https://docs.parasail.io/parasail-docs/billing/pricing.md) states a card requirement, quoted in instruction 3, and the rate-limit table on https://docs.parasail.io/parasail-docs/operate-in-production/limits-and-quotas.md has a product class "Serverless - Free" (RPM column "5"). apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.parasail.io/v1/models answers 401 without a key, so model ids are taken from https://docs.parasail.io/parasail-docs/products/overview/models.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://api.parasail.io/v1/models with no credentials \u2014 HTTP 401, content-type application/json;charset=ISO-8859-1, body text "Unauthorized. No bearer token provided." (plain text, no error code field); the same day unauthenticated GETs of https://api.parasail.io/v1/chat/completions and https://api.parasail.io/v1 answered HTTP 401 with the same body text; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:`public pages https://docs.parasail.io/parasail-docs/billing/pricing.md ("To use models, create API keys, and access paid platform services, add a credit card. Without a card, you can still view the platform but can't use models or API keys.") and https://docs.parasail.io/parasail-docs/operate-in-production/limits-and-quotas.md (rate-limit table product class "Serverless - Free", RPM column "5"); credential-free, no signup performed`},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),KAe,xNr=E({"src/lib/providers/catalog/pareto-inference.json"(){KAe={$schema:"./provider-catalog.schema.json",id:"pareto-inference",displayName:"Pareto Inference",aliases:[],tier:2,wire:{baseURL:"https://api.paretoinference.com/v1"},models:{default:"z-ai/glm-5.3-flash",fallbacks:["z-ai/glm-5.3-flash"],defaultContextWindow:131072,defaultMaxOutputTokens:131072,catalog:{"z-ai/glm-5.3-flash":{maxOutputTokens:131072,pricingPerMTok:{input:.09,output:.3,cachedInput:.018},vision:!1,status:"production",description:"Recommended - the only model Pareto serves; GLM 5.3 Flash (Zhipu/Z.ai), run on Pareto's own GPUs. Confirmed live via an unauthenticated GET https://api.paretoinference.com/v1/models on 2026-09-28 (HTTP 200, exactly one id: z-ai/glm-5.3-flash, owned_by z-ai) - no key used, matching the docs' note that GET /models needs no API key. The docs also document a bare alias, glm-5.3-flash, for the same model (https://docs.paretoinference.com/api-reference, retrieved 2026-09-28). Wire is OpenAI Chat Completions: POST /chat/completions with required model + messages ('Use the OpenAI message format'), the answer read from choices[0].message.content, SSE streaming with text in choices[0].delta.content and tool calls in choices[0].delta.tool_calls, a final usage event when stream_options.include_usage is true, and a terminal 'data: [DONE]' (https://docs.paretoinference.com/api-reference, retrieved 2026-09-28). Output tokens (max_tokens / max_completion_tokens - send only one) range 1-131,072, defaulting to 131,072 when both are omitted - that figure is this entry's defaultMaxOutputTokens and maxOutputTokens. Pareto documents no separate context-length figure anywhere: 'We do not disclose the technical details of our GLM 5.3 Flash serving system' (https://docs.paretoinference.com/how-pareto-works, retrieved 2026-09-28), and no context-window number appears on the quickstart, API reference, how-it-works, errors, or pricing pages, so models.defaultContextWindow above (131,072) reuses the documented output ceiling as a conservative floor rather than a vendor-stated context length - correct it once Pareto publishes one or an authenticated probe reveals one; contextWindow is deliberately left unset on this model entry rather than restating that same undocumented floor as a per-model fact. Pricing from https://docs.paretoinference.com/pricing, retrieved 2026-10-02: $0.09 per 1M input tokens, $0.30 per 1M output tokens, $0.018 per 1M cached-input tokens ('a cache hit is not guaranteed'); GET https://api.paretoinference.com/v1/models reports the same three figures. The 2026-09-28 onboarding recorded $0.03 / $0.10 / $0.006. The vendor prices this model as a discount to OpenRouter's listing, so it can move; recheck before relying on it. tools ('Sends OpenAI function tools') and response_format ('Requests a structured response') are both documented request parameters, but the same request-parameters table hedges both of them - plus tool_choice and logprobs - with 'Model support can differ'; there is no model-specific confirmation for z-ai/glm-5.3-flash and no live probe was possible credential-free, so capabilities.tools is 'model-dependent' here and toolsWithStreaming/structuredOutput/structuredOutputWithTools are left false rather than asserted from a hedged parameter table. reasoning_effort ('Sets the reasoning level') is documented as a plain, unhedged request parameter - unlike tools/response_format/tool_choice/logprobs it carries no 'Model support can differ' caveat - which is the basis for capabilities.thinking: true. Vision/image input and an embeddings endpoint are not documented anywhere on docs.paretoinference.com, so vision stays false and models.visionModel is left unset. No live capability probe was run: this is credential-free onboarding, no Pareto API key was ever created, and no POST request was ever sent to the vendor - see evidence.liveMatrix: null."}},topModels:["z-ai/glm-5.3-flash"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:'Invalid Pareto Inference API key. Check {apiKeyEnvVar}. Pareto documents 401 as "the chat API key is missing, invalid, or no longer active" (unauthenticated GET /models needs no key, so this only affects POST /chat/completions) but publishes no example error body - get or replace a key at {setupUrl}'},{status:429,pattern:"credit_exhausted|credit_insufficient|model_capacity",class:"rate-limit",message:"Pareto rate/credit limit hit for {model}. Documented causes: credit_exhausted (no credits left - buy more), credit_insufficient (held credits below what max_tokens could use - lower max_tokens or buy credits), or model_capacity (the model is at capacity, not an account limit - honor Retry-After). See {setupUrl}"}],setup:{url:"https://paretoinference.com/dashboard",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://paretoinference.com/dashboard and sign in","2. Add a payment card - Pareto has no free tier; a card and prepaid credits are required before a key is issued (https://docs.paretoinference.com/pricing)","3. Buy prepaid credits, then create your API key from the dashboard","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible Chat Completions endpoint at https://api.paretoinference.com/v1, serving exactly one hosted model - z-ai/glm-5.3-flash (GLM 5.3 Flash), also reachable via the documented alias glm-5.3-flash - on Pareto's own GPUs. No free tier: a payment card and prepaid credits are required before a key is issued. Pareto offers zero data retention (ZDR) and does not keep request content after a request finishes."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.paretoinference.com/v1/models - 1 model; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),JAe,ANr=E({"src/lib/providers/catalog/perplexity.json"(){JAe={$schema:"./provider-catalog.schema.json",id:"perplexity",displayName:"Perplexity",aliases:["pplx"],tier:2,wire:{baseURL:"https://api.perplexity.ai"},models:{default:"sonar",fallbacks:["sonar","sonar-pro","sonar-reasoning","sonar-reasoning-pro","sonar-deep-research"],defaultContextWindow:127e3,defaultMaxOutputTokens:4096,catalog:{sonar:{contextWindow:127e3,pricingPerMTok:{input:1,output:1},vision:!1,status:"production",description:"Recommended - Sonar with web grounding"},"sonar-pro":{contextWindow:2e5,pricingPerMTok:{input:3,output:15},vision:!1,status:"production",description:"Better reasoning"},"sonar-reasoning":{contextWindow:127e3,pricingPerMTok:{input:1,output:5},vision:!1,status:"production",description:"Explicit reasoning traces"},"sonar-reasoning-pro":{contextWindow:127e3,pricingPerMTok:{input:2,output:8},vision:!1,status:"production",description:"Flagship reasoning + web"},"sonar-deep-research":{contextWindow:2e5,pricingPerMTok:{input:2,output:8},vision:!1,status:"production",description:"Long-form research with citations"}},topModels:["sonar","sonar-pro","sonar-reasoning","sonar-reasoning-pro","sonar-deep-research"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Invalid API key|Authentication",class:"authentication",message:"Invalid Perplexity API key. Get one at https://www.perplexity.ai/settings/api"}],setup:{url:"https://www.perplexity.ai/settings/api",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://www.perplexity.ai/settings/api","2. Sign in to your Perplexity account","3. Create a new API key (Sonar tier)","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-28",method:"transcribed from pre-migration TS catalog"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),XAe,CNr=E({"src/lib/providers/catalog/poolside.json"(){XAe={$schema:"./provider-catalog.schema.json",id:"poolside",displayName:"Poolside",aliases:[],tier:2,wire:{baseURL:"https://inference.poolside.ai/v1"},models:{default:"poolside/laguna-s-2.1",fallbacks:["poolside/laguna-s-2.1"],defaultContextWindow:128e3,defaultMaxOutputTokens:32768,catalog:{"poolside/laguna-s-2.1":{vision:!1,status:"production",description:'NeuroLink default. Vendor statements about Laguna S 2.1 on https://docs.poolside.ai/get-started/supported-models.md (retrieved 2026-09-29): Parameters "118B total, 8B active per token"; Context window "1M tokens"; Model type "Mixture of Experts"; Modality "Text-to-text"; Reasoning "Native reasoning with thinking on or off per request". The same page says "Model availability, provider-specific variants, and model IDs can vary by access method." https://docs.poolside.ai/release-notes/models.md (retrieved 2026-09-29) says Laguna S 2.1 is "built for agentic coding and long-horizon work" and "is text-to-text and does not support vision inputs", so vision is false. The id poolside/laguna-s-2.1 is the model id in the quickstart on https://docs.poolside.ai/api/overview.md and in the examples on https://docs.poolside.ai/api/openai-api-examples.md, which use base URL https://inference.poolside.ai/v1.'}},topModels:["poolside/laguna-s-2.1"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Poolside rejected the request's authentication (HTTP 401; an unauthenticated GET of /models answered the plain-text body "No Authorization header provided", and https://docs.poolside.ai/api/overview.md says "Send it as a Bearer token in the Authorization header"). Check {apiKeyEnvVar}. Create a key: {setupUrl}`},{status:403,class:"authentication",message:'Poolside returned HTTP 403 (https://docs.poolside.ai/cli/troubleshooting.md lists "403 Forbidden: please check the api-key you provided" under "Fix API key or token errors"). Check {apiKeyEnvVar}. Create a key: {setupUrl}'}],quirks:{replayReasoningContent:!0},setup:{url:"https://platform.poolside.ai/",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://platform.poolside.ai/ \u2014 https://docs.poolside.ai/get-started/log-in.md says of the Poolside Platform option: "sign in to Poolside Platform or create an account"','2. Create an API key: https://docs.poolside.ai/api/overview.md says "Sign in to Poolside Platform, open the API Keys tab, and click New key."','3. Billing as the vendor states it: https://docs.poolside.ai/get-started/log-in.md describes the Poolside Platform option as "free developer access" and says "The API key created through Poolside Platform is for Poolside-hosted inference."','4. Authentication is HTTP Bearer: https://docs.poolside.ai/api/overview.md shows the header "Authorization: Bearer <api-key>" and exports the key as POOLSIDE_API_KEY, the name NeuroLink reads. Set {apiKeyEnvVar} in your .env file'],description:`Docs-verified only: the vendor's GET https://inference.poolside.ai/v1/models needs a key (it answers HTTP 401 without one), so the model id comes from the Poolside API page (https://docs.poolside.ai/api/overview.md, retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://inference.poolside.ai/v1: the overview page opens with "Call Poolside models through an OpenAI-compatible API.", its Access methods table lists "Poolside-hosted inference" with base URL https://inference.poolside.ai/v1, its Available endpoints table lists GET /v1/models and POST /v1/chat/completions, and its quickstart shows the OpenAI Python SDK and the OpenAI TypeScript SDK with base URL "https://inference.poolside.ai/v1". Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 with content-type text/plain and the body "No Authorization header provided"; /chat/completions answered HTTP 405 with an empty body. No POST request was sent. errorRules: the 401 rule is built from the observed /models response (a plain-text body, so the rule matches the status code); the 403 rule is built from https://docs.poolside.ai/cli/troubleshooting.md, which lists "403 Forbidden: please check the api-key you provided" under "Fix API key or token errors". capabilities.streaming is true because https://docs.poolside.ai/api/openai-api-examples.md documents setting stream to true to receive "a series of chunks returned as server-sent events". capabilities.tools is true because that page's "Extend models with tools" section says "You can extend a model's capabilities by providing tools that it can call during a conversation." and shows a tools array and a returned tool_calls array on poolside/laguna-s-2.1 against https://inference.poolside.ai/v1/chat/completions. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.structuredOutput is false because no request using response_format was sent. capabilities.embeddings is false; the overview page's Available endpoints table lists two endpoints, GET /v1/models and POST /v1/chat/completions. capabilities.thinking is false because this entry sends no thinking request parameter; https://docs.poolside.ai/api/openai-api-examples.md documents setting chat_template_kwargs.enable_thinking to false to turn thinking off for a request. quirks.replayReasoningContent is set because https://docs.poolside.ai/api/openai-api-examples.md says "For agentic workflows with Poolside models, preserve reasoning_content from assistant responses when you include those responses in follow-up requests." and "Dropping previous reasoning content can prevent the model from reasoning in later steps."; no multi-turn request was sent. models.defaultContextWindow (128000) is a placeholder, not a vendor figure; it applies to poolside/laguna-s-2.1 because the catalog entry sets no contextWindow for it. models.defaultMaxOutputTokens (32768) equals the max_tokens default in the Control generation table on https://docs.poolside.ai/api/openai-api-examples.md; it is not a per-model limit. The model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy holds free-tier, one of the three values the catalog schema allows (free-tier, free-with-card, no-free-tier). Vendor wording, from https://docs.poolside.ai/get-started/log-in.md: the Poolside Platform option is for "free developer access", and "The API key created through Poolside Platform is for Poolside-hosted inference." apiKeyFormat is null, so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://inference.poolside.ai/v1/models answers 401 without a key, so model ids are taken from https://docs.poolside.ai/api/overview.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://inference.poolside.ai/v1/models with no credentials \u2014 HTTP 401, content-type text/plain; charset=utf-8, plain-text body "No Authorization header provided"; the body is not JSON and has no code field, so no code is recorded; the same day an unauthenticated GET https://inference.poolside.ai/v1/chat/completions answered HTTP 405 with an empty body; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:'public page https://docs.poolside.ai/get-started/log-in.md (the Poolside Platform login option described as "free developer access"; "The API key created through Poolside Platform is for Poolside-hosted inference."); https://platform.poolside.ai/ opened and shows the title Poolside Platform; credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),YAe,INr=E({"src/lib/providers/catalog/prime-intellect.json"(){YAe={$schema:"./provider-catalog.schema.json",id:"prime-intellect",displayName:"Prime Intellect",aliases:[],tier:2,wire:{baseURL:"https://api.pinference.ai/api/v1",apiKeyFallbackEnvVars:["PRIME_API_KEY"]},models:{default:"openai/gpt-4.1-mini",fallbacks:["openai/gpt-4.1","anthropic/claude-sonnet-4.5","meta-llama/llama-3.3-70b-instruct"],defaultContextWindow:131072,defaultMaxOutputTokens:16384,catalog:{"openai/gpt-4.1-mini":{contextWindow:1047576,maxOutputTokens:32768,pricingPerMTok:{input:.4,output:1.6},vision:!0,status:"production",description:`Recommended default. Prime Intellect's own Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) lists this model as "Fast, cost-effective (default)" and uses it as the default model of its inference-backed evaluation command. No Prime-trained model appears on this roster (119 of 125 entries are gateway-routed and the other 6 are third-party models served on Prime infrastructure), so this is the model its docs designate as the default, not a Prime-trained flagship. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,047,576, max_output_tokens 32,768, $0.4/$1.6 per MTok input/output; input modalities image/text/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"openai/gpt-4.1":{contextWindow:1047576,maxOutputTokens:32768,pricingPerMTok:{input:2,output:8},vision:!0,status:"production",description:`Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Higher quality" than the default. Fallback. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,047,576, max_output_tokens 32,768, $2/$8 per MTok input/output; input modalities image/text/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"anthropic/claude-sonnet-4.5":{contextWindow:1e6,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15},vision:!0,status:"production",description:`Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Strong reasoning". Fallback. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,000,000, max_output_tokens 64,000, $3/$15 per MTok input/output; input modalities text/image/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"meta-llama/llama-3.3-70b-instruct":{contextWindow:131072,maxOutputTokens:16384,pricingPerMTok:{input:1.04,output:2.253},vision:!1,status:"production",description:'Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Open-weight, balanced". Fallback. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 131,072, max_output_tokens 16,384, $1.04/$2.253 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false.'},"google/gemini-2.5-flash":{contextWindow:1048576,maxOutputTokens:65535,pricingPerMTok:{input:.3,output:2.5},vision:!0,status:"production",description:`Listed in the Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) as "Fast multimodal". Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,048,576, max_output_tokens 65,535, $0.3/$2.5 per MTok input/output; input modalities file/image/text/audio/video; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent).`},"Qwen/Qwen3-235B-A22B-Instruct-2507":{contextWindow:262144,maxOutputTokens:235929,pricingPerMTok:{input:.25,output:1},vision:!1,status:"production",description:`The Evaluating Environments guide (docs.primeintellect.ai/tutorials-environments/evaluating) lists a lowercase id, qwen/qwen3-235b-a22b-instruct-2507, as "Large MoE model"; that lowercase id is not on today's roster, so the id here is copied character for character from the roster's differently cased entry. The roster's max_output_tokens figure is reported as served. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 262,144, max_output_tokens 235,929, $0.25/$1 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false.`},"z-ai/glm-5.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`Serving "hosted" on today's roster \u2014 the vendor's OpenAPI spec (https://api.pinference.ai/openapi.json) defines that value as models served on Prime infrastructure. Roster display_name "GLM 5.3"; reasoning is marked mandatory with default effort "max". Its supported_parameters list tools and tool_choice but not response_format or structured_outputs. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,048,576, max_output_tokens 131,072, $1.4/$4.4 per MTok input/output ($0.26 cached-input read); input modalities text; supported_parameters include tools, tool_choice; serving hosted. No image input modality on the roster, so vision is false.`},"openai/gpt-5.4-mini":{contextWindow:4e5,maxOutputTokens:128e3,pricingPerMTok:{input:.75,output:4.5},vision:!0,status:"production",description:"Named in the Troubleshooting page's direct-API examples (docs.primeintellect.ai/inference/troubleshooting). Roster reasoning efforts: xhigh/high/medium/low/none, not mandatory. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 400,000, max_output_tokens 128,000, $0.75/$4.5 per MTok input/output; input modalities file/image/text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent)."},"openai/gpt-oss-120b":{contextWindow:131072,maxOutputTokens:65536,pricingPerMTok:{input:.35,output:.75},vision:!1,status:"production",description:'Roster-listed only. Reasoning is marked mandatory (default effort "medium"). Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 131,072, max_output_tokens 65,536, $0.35/$0.75 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false.'},"deepseek/deepseek-v4-flash":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.44,output:1.32},vision:!1,status:"production",description:"Roster-listed only. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 1,048,576, max_output_tokens 131,072, $0.44/$1.32 per MTok input/output; input modalities text; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. No image input modality on the roster, so vision is false."},"anthropic/claude-haiku-4.5":{contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:5},vision:!0,status:"production",description:"Roster-listed only. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): context_window 200,000, max_output_tokens 64,000, $1/$5 per MTok input/output; input modalities text/image/file; supported_parameters include response_format, structured_outputs, tool_choice, tools; serving gateway. vision: true follows the roster's image input modality (no image request was sent)."},"Qwen/Qwen3.5-122B-A10B":{pricingPerMTok:{input:.3,output:.9,cachedInput:.27},vision:!1,status:"production",description:`Serving "hosted" (Prime infrastructure) on today's roster. The roster gives it no context_window, max_output_tokens, modalities or supported_parameters, so none are declared here; vision false is the schema's required default, not a vendor statement about image input. Roster-listed only. Figures from the unauthenticated GET https://api.pinference.ai/api/v1/models roster (2026-09-29): $0.3/$0.9 per MTok input/output ($0.27 cached-input read); serving hosted.`}},topModels:["openai/gpt-4.1-mini","openai/gpt-4.1","anthropic/claude-sonnet-4.5","meta-llama/llama-3.3-70b-instruct","google/gemini-2.5-flash","Qwen/Qwen3-235B-A22B-Instruct-2507","z-ai/glm-5.3","openai/gpt-5.4-mini","openai/gpt-oss-120b","deepseek/deepseek-v4-flash","anthropic/claude-haiku-4.5","Qwen/Qwen3.5-122B-A10B"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Authorization header or x-api-key missing|invalid_api_key|Invalid API key",class:"authentication",message:"Invalid or missing Prime Intellect API key. Check {apiKeyEnvVar}. Create a key with the Inference permission enabled at {setupUrl}"}],setup:{url:"https://app.primeintellect.ai/dashboard/tokens",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://app.primeintellect.ai/dashboard/tokens (Settings -> API Keys) and sign in","2. Click Generate New Key and enable the Inference permission \u2014 without it requests fail with authentication errors (https://docs.primeintellect.ai/inference/overview); the key is shown only once, so copy it straight away (https://docs.primeintellect.ai/api-reference/api-keys)","3. Billing is automatic deduction from your Prime Intellect account balance (https://docs.primeintellect.ai/inference/overview); no free tier or trial credit is documented on the pages read, so add funds at https://app.primeintellect.ai/dashboard/billing and confirm current terms before the first call","4. Set {apiKeyEnvVar} in your .env file (PRIME_API_KEY, the variable Prime's own docs use, is also read)"],description:"OpenAI-compatible endpoint at https://api.pinference.ai/api/v1 (docs.primeintellect.ai/inference/overview), a gateway that routes to upstream model providers plus a few models served on Prime infrastructure. The inference host (pinference.ai) differs from the docs and dashboard host (primeintellect.ai); both are confirmed on the vendor's own pages. The catalog schema has no 'unknown' billing value, so no-free-tier here means no free tier is documented, not that the vendor confirmed there is none."},evidence:{rosterVerified:{date:"2026-09-29",method:"unauthenticated GET https://api.pinference.ai/api/v1/models \u2014 125 models; credential-free, no key used",status:200},authProbe:{date:"2026-09-29",method:'unauthenticated GET https://api.pinference.ai/api/v1/models/openai/gpt-4.1-mini with no credentials \u2014 401 {"detail":"Authorization header or x-api-key missing", ...}; only the missing-credential shape was observed, the invalid-key shape (error.code invalid_api_key) is from docs.primeintellect.ai/api-reference/inference-models and was not probed; credential-free, no key used',status:401},billingProbe:{date:"2026-09-29",method:'public page https://docs.primeintellect.ai/inference/overview \u2014 "Automatic deduction from your Prime Intellect account balance"; https://docs.primeintellect.ai/inference/troubleshooting documents an insufficient_funds error; no free tier stated; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),ZAe,RNr=E({"src/lib/providers/catalog/reka.json"(){ZAe={$schema:"./provider-catalog.schema.json",id:"reka",displayName:"Reka AI",aliases:[],tier:2,wire:{baseURL:"https://api.reka.ai/v1"},models:{default:"reka-flash",fallbacks:["reka-edge"],defaultContextWindow:16384,defaultMaxOutputTokens:4096,catalog:{"reka-flash":{pricingPerMTok:{input:.8,output:2},vision:!0,tools:!0,status:"production",description:`NeuroLink default. Listed as reka-flash in the baseline model table on https://docs.reka.ai/chat/models.md (intro: "Our baseline models always available for public access are:") and named as the model in the code examples on https://docs.reka.ai/chat/overview.md, https://docs.reka.ai/chat/function-calling.md and https://docs.reka.ai/chat/api-reference/create.md (retrieved 2026-09-29). https://docs.reka.ai/pricing.md has a row named "Reka Flash" described as "Fast and cost-efficient model for most tasks" with $0.80 under "Input Tokens (per 1M)" and $2.00 under "Output Tokens (per 1M)"; https://docs.reka.ai/chat/models.md ends with "For full listing of models and pricing, see the Reka API Pricing page". tools is true because https://docs.reka.ai/chat/function-calling.md said "Currently, only Reka Flash supports function calling." on 2026-09-29. That sentence is gone: on 2026-10-17 https://docs.reka.ai/chat/function-calling.md redirects to https://docs.reka.ai/chat/overview.md, and neither it nor the Models table at https://docs.reka.ai/chat/models.md uses the id reka-flash (they name reka-flash-3), so this flag and this entry are not confirmed against the current docs and are kept as they were pending a check with a key. Vision is true: the first curl example on https://docs.reka.ai/overview.md sends an image_url content part to model "reka-flash", and the Quickstart's "First request" example (https://docs.reka.ai/quickstart.md) carries the comment '# or "reka-flash"' beside an image_url request. No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply.`},"reka-edge":{pricingPerMTok:{input:.1,output:.1},vision:!0,tools:!0,status:"production",description:`Listed as "reka-edge (or reka-edge-2603)" in the baseline model table on https://docs.reka.ai/chat/models.md and on https://docs.reka.ai/quickstart.md (retrieved 2026-09-29). The Quickstart's "First request" example sends an image_url content part to model "reka-edge", and the example response on https://docs.reka.ai/chat/api-reference/get.md lists the id "reka-edge". https://docs.reka.ai/pricing.md has a row named "Reka Edge" described as "Compact model ideal for on-device execution" with $0.10 under "Input Tokens (per 1M)" and $0.10 under "Output Tokens (per 1M)". tools is true because reka-edge is the alias of reka-edge-2603, which the current docs mark as tool-capable (see the reka-edge-2603 entry); it was false while https://docs.reka.ai/chat/function-calling.md said "Currently, only Reka Flash supports function calling." (retrieved 2026-09-29), a sentence that no longer appears. The Models table at https://docs.reka.ai/chat/models.md (retrieved 2026-10-17) has no row named reka-edge, only reka-edge-2603, so whether the API still serves the bare alias is not confirmed. No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply.`},"reka-edge-2603":{pricingPerMTok:{input:.1,output:.1},vision:!0,tools:!0,status:"production",description:'Tools are supported per Reka\'s current docs (retrieved 2026-10-17). The Models table at https://docs.reka.ai/chat/models.md has the header | Model ID | Context | Input | Tools | Structured outputs | Reasoning | and the row | `reka-edge-2603` | 16k | Text, image, video | Yes | Yes | No |, so the Tools column is Yes. The GET /v1/models example on the same page shows "supported_features": ["tools", "structured_outputs", "streaming"] for reka-edge-2603, and the page says "`GET /v1/models` is the authoritative list". The Tools section of https://docs.reka.ai/chat/overview.md (https://docs.reka.ai/chat/function-calling.md redirects there) says "Models that list `tools` in their `supported_features` accept OpenAI-format `tools` and `tool_choice`." and its example request calls model="reka-edge-2603" with a tools list. This replaces tools: false, which rested on the sentence "Currently, only Reka Flash supports function calling." on https://docs.reka.ai/chat/function-calling.md (retrieved 2026-09-29); that sentence no longer appears. Not wire-verified: no API key was used. Vision is true because the Models table lists "Text, image, video" as the input. Prices are those of the "Reka Edge" row of https://docs.reka.ai/pricing.md (retrieved 2026-09-29) and match the GET /v1/models example\'s "prompt": "0.0000001" and "completion": "0.0000001" US dollars per token. Earlier evidence (retrieved 2026-09-29): named in the same table row as reka-edge, "reka-edge (or reka-edge-2603)", on https://docs.reka.ai/chat/models.md and https://docs.reka.ai/quickstart.md. No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply.'},"reka-flash-3":{pricingPerMTok:{input:.1,output:.2},vision:!1,tools:!1,status:"production",description:'Listed in the Models table at https://docs.reka.ai/chat/models.md (retrieved 2026-10-17) with the row | `reka-flash-3` | 64k | Text | No | Yes | Yes |, so input is text only (vision is false) and the Tools column is No (tools is false), the entry that keeps the per-model withhold path covered. Prices are the "$0.10/M input tokens" and "$0.20/M output tokens" shown on its card at https://developer.reka.ai/models (retrieved 2026-10-17), which the Models page names as the source of current prices. The Models page says 64k for the context, a rounded figure, so no context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply. This is a different model from the reka-flash entry above, whose id no longer appears in the current Models table.'}},topModels:["reka-flash","reka-edge","reka-edge-2603"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Reka rejected the API key (HTTP 401; https://docs.reka.ai/errors.md lists 401 as authentication_error with the client action "Ensure that you're using a valid Reka API key"). Check {apiKeyEnvVar}. Get one at {setupUrl}`},{status:429,class:"rate-limit",message:'Reka rate limit (HTTP 429; https://docs.reka.ai/errors.md lists 429 as rate_limit_error with the client action "Wait until your rate limit is restored and retry, or upgrade your API tier for higher limits").'},{pattern:"P001|Insufficient Balance",class:"provider",message:`Reka reported an insufficient balance (https://docs.reka.ai/resources/faqs.md: "If your balance hits $0, you'll see P001: Insufficient Balance."). The same page says "Add credits to your account before making requests."`},{status:500,class:"provider",message:'Reka returned HTTP 500 (https://docs.reka.ai/errors.md lists 500 as server_error with the client action "Retry with backoff. If this persists, contact Reka at contact@reka.ai").'}],quirks:{authHeaderStyle:"x-api-key"},setup:{url:"https://platform.reka.ai/sign-up",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://platform.reka.ai/sign-up (the "Start for free" and "Get started" links on https://platform.reka.ai/pricing point to /sign-up). The Quickstart (https://docs.reka.ai/quickstart.md) says "Create a free account on the Reka Platform to access your API key." and the FAQ (https://docs.reka.ai/resources/faqs.md) answers "How do I get an API key?" with "Go to Platform, > API Keys to generate or copy your key."','2. Billing as the vendor states it: https://docs.reka.ai/pricing.md says "Get started with no upfront costs."; the FAQ (https://docs.reka.ai/resources/faqs.md) answers "Do I need to pre-pay?" with "Yes. Add credits to your account before making requests." and says the balance error reads "P001: Insufficient Balance" when the balance hits $0',`3. Authentication: the vendor's REST examples send the header X-Api-Key (https://docs.reka.ai/chat/overview.md) and the OpenAPI file https://docs.reka.ai/openapi/api-reference.yaml declares one security scheme, an apiKey in the header X-Api-Key; the OpenAI Python SDK examples pass api_key="YOUR_API_KEY" to the client (https://docs.reka.ai/quickstart.md)`,"4. Set {apiKeyEnvVar} in your .env file"],description:'Docs-verified only: the vendor\'s GET https://api.reka.ai/v1/models needs a key (it answers HTTP 401 without one), so the four model ids come from https://docs.reka.ai/chat/models.md (retrieved 2026-09-29 for the first three and 2026-10-17 for reka-flash-3) and the roster has not been checked; the entry is not yet live-verified. Endpoint https://api.reka.ai/v1: the Quickstart (https://docs.reka.ai/quickstart.md) says "our API is fully OpenAI-compatible" and shows the OpenAI Python SDK with base_url "https://api.reka.ai/v1"; https://docs.reka.ai/chat/overview.md shows POST https://api.reka.ai/v1/chat/completions with a messages array and reads the reply from response.choices[0].message.content. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 with the JSON body {"error":{"message":"Unauthorized","type":"authentication_error","code":null,"param":null}}; /chat/completions answered HTTP 405 with header allow: POST and the body {"detail":"Method Not Allowed"}. No POST request was sent. errorRules carry the statuses https://docs.reka.ai/errors.md lists (401 authentication_error, 429 rate_limit_error, 500 server_error) plus a pattern rule on the FAQ\'s "P001: Insufficient Balance" text. capabilities.streaming is true because https://docs.reka.ai/chat/overview.md says "The Chat API supports streaming". capabilities.tools is model-dependent because tool support differs per model: the Models table at https://docs.reka.ai/chat/models.md (retrieved 2026-10-17) has a "Tools" column that is Yes for reka-edge-2603 and No for reka-flash-3, and the Tools section of https://docs.reka.ai/chat/overview.md says "Models that list `tools` in their `supported_features` accept OpenAI-format `tools` and `tool_choice`." So the models.catalog entries set tools: true for reka-edge-2603 and its alias reka-edge, and tools: false for reka-flash-3 (see CatalogModelSpec.tools), instead of leaving every model to the provider-level model-dependent default. reka-flash keeps tools: true from the sentence "Currently, only Reka Flash supports function calling." (retrieved 2026-09-29), which the current pages no longer carry; that entry is unconfirmed. capabilities.structuredOutput is false: the ChatRequest on https://docs.reka.ai/chat/api-reference/create.md lists messages, model, frequency_penalty, max_tokens, presence_penalty, seed, stop, stream, temperature, tool_choice, tools, top_k and top_p. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.embeddings and capabilities.thinking are false. models.defaultContextWindow (16384) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish; the Chat API reference describes max_tokens as "limited by the model\'s context length. Defaults to 1024." Each model\'s status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy holds free-tier, one of the three values the catalog schema allows (free-tier, free-with-card, no-free-tier). The vendor wording behind it: on https://platform.reka.ai/pricing the Pay as you go tile has a "Start for free" link to /sign-up and the page carries the text "Free credits used"; https://docs.reka.ai/pricing.md says "Get started with no upfront costs."; https://docs.reka.ai/resources/faqs.md answers "Do I need to pre-pay?" with "Yes. Add credits to your account before making requests." apiKeyFormat is null, so NeuroLink\'s key-format check is not applied.'},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.reka.ai/v1/models answers 401 without a key, so model ids are taken from https://docs.reka.ai/chat/models.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"authentication_error",method:`unauthenticated GET https://api.reka.ai/v1/models with no credentials \u2014 HTTP 401, JSON body {"error":{"message":"Unauthorized","type":"authentication_error","code":null,"param":null}}; code records the body's error.type because error.code is null; the same day an unauthenticated GET https://api.reka.ai/v1/chat/completions answered HTTP 405 with header allow: POST and JSON body {"detail":"Method Not Allowed"}; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://docs.reka.ai/resources/faqs.md ("Do I need to pre-pay?" answered "Yes. Add credits to your account before making requests."), https://docs.reka.ai/quickstart.md ("Create a free account on the Reka Platform to access your API key."), https://docs.reka.ai/pricing.md ("Get started with no upfront costs.") and https://platform.reka.ai/pricing (a "Start for free" link and the text "Free credits used"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),QAe,MNr=E({"src/lib/providers/catalog/runinfra.json"(){QAe={$schema:"./provider-catalog.schema.json",id:"runinfra",displayName:"RunInfra",enumTypeName:"RunInfraModels",aliases:[],tier:2,wire:{baseURL:"https://api.runinfra.ai/v1",envOverrides:{apiKey:"RUNINFRA_GATEWAY_KEY"},apiKeyFallbackEnvVars:["RUNINFRA_API_KEY"]},models:{default:"nemotron-3-5-lightning-30b",fallbacks:["nemotron-3-5-lightning-30b"],defaultContextWindow:262144,defaultMaxOutputTokens:262144,catalog:{"nemotron-3-5-lightning-30b":{contextWindow:262144,maxOutputTokens:262144,vision:!1,status:"production",description:"Nemotron 3.5 Lightning 30B on RunInfra Model APIs, the only model this pilot lists. The vendor's copyable examples send exactly nemotron-3-5-lightning-30b as the model; the model page also shows the upstream served name nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16, which is not the id sent. The model page states a 262,144-token context window and 262,144 maximum generated output tokens. The chat-completions reference caps one request's output at the model's remaining context (its window minus your prompt) and clamps oversized values, so 262,144 output is a ceiling, not capacity beside a full prompt. This pilot declares text generate/stream only; tools, structured output, thinking and vision are not declared, which bounds this pilot and is not a claim the vendor lacks them. Availability is a runtime field and is unverified."}}},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"RunInfra answered 401. The vendor's authentication page lists 401 Invalid API key and 401 API key has expired. Check {apiKeyEnvVar} and the workspace API key at {setupUrl}."}],setup:{url:"https://runinfra.ai/settings/api-keys",apiKeyFormat:null,billingPolicy:"promotional-credit",instructions:["1. Sign in to RunInfra and create a workspace API key under Settings > API keys at https://runinfra.ai/settings/api-keys. The vendor's authentication page says to send a workspace API key in an Authorization: Bearer header.","2. nemotron-3-5-lightning-30b is usage-priced per token in USD (the model page lists input, cached input and output rates per 1M tokens; rates may change). The vendor's plans page lists prepaid credits worth $1 each with a $5 minimum top-up, and a $1 signup credit, once per account, that it says never expires. Whether your account holds that credit is unverified, and this is not a free tier.","3. Set {apiKeyEnvVar}. The vendor's curl and SDK examples name RUNINFRA_GATEWAY_KEY, and its export block also sets RUNINFRA_API_KEY to the same value, which is read as a fallback. The key is sent as Authorization: Bearer to https://api.runinfra.ai/v1/chat/completions.","4. The vendor's chat-completions reference says a hosted model can be temporarily paused and then answers 503 with code hosted_model_paused. Availability of nemotron-3-5-lightning-30b to your account is unverified. The declared scope is text generate and stream with nemotron-3-5-lightning-30b."],description:"RunInfra text/stream pilot with a usage-priced nemotron-3-5-lightning-30b default. The vendor's plans page lists a one-time signup credit; no account entitlement, roster, live inference, availability or delivery is verified."},evidence:{rosterVerified:{date:"2026-10-12",code:"VENDOR_DOCS_ONLY_NOT_ROSTER_VERIFIED",method:"Public vendor page GETs only: runinfra.ai/inference-api/nemotron-3-5-lightning-30b, docs/tools-sdks/openai-compatibility, docs/api-reference/chat-completions.md and authentication.md, docs/introduction/plans.md and docs/changelog.md. No GET /v1/models, credentials, account or inference ran; this legacy field does not assert roster verification."},billingProbe:{date:"2026-10-12",code:"PUBLIC_DOCS_ONLY_ACCOUNT_NOT_TESTED",method:"Public documentation only: the model page lists USD pay-per-token rates and the plans page lists $1 credits, a $5 minimum top-up and a $1 signup credit once per account that never expires. No account was created, no credit was checked and no top-up was tried."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1983"}}}}),e1e,PNr=E({"src/lib/providers/catalog/sakana-ai.json"(){e1e={$schema:"./provider-catalog.schema.json",id:"sakana-ai",displayName:"Sakana AI",aliases:["sakana"],tier:2,wire:{baseURL:"https://api.sakana.ai/v1",apiKeyFallbackEnvVars:["SAKANA_API_KEY"]},models:{default:"fugu",fallbacks:["fugu-ultra","fugu-max","sakana-namazu"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{fugu:{contextWindow:1e6,vision:!0,status:"production",description:`NeuroLink default. Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "The default Fugu model." Fugu overview: "Fugu balances strong performance with low latency, making it the ideal default for everyday work." The Get Started page (https://console.sakana.ai/get-started) uses this id in its Chat Completions curl example ("model":"fugu"). Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu with display_name "Fugu", context_window 1000000 and input_modalities ["text", "image"], hence contextWindow 1000000 and vision true. Pricing page (https://console.sakana.ai/pricing), Fugu table, 1 agent: "You pay only the standard rate for the specific underlying model." Multiple agents: "We never stack model fees. You are charged a single rate based on the top tier model involved." pricingPerMTok is left out.`},"fugu-ultra":{contextWindow:1e6,pricingPerMTok:{input:5,output:30,cachedInput:.5},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "The Fugu Ultra model, defaults to fugu-ultra-v2.0." Fugu Ultra overview: "Fugu Ultra coordinates a deeper pool of expert agents to maximize answer quality on hard, high-stakes problems." Get Started page (https://console.sakana.ai/get-started): "For complex tasks, especially when using fugu-ultra and fugu-cyber, you may need to increase client-side timeouts." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra with display_name "Fugu Ultra v2.0", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-ultra "defaults to fugu-ultra-v2.0", so the same contextWindow 1000000 and vision true are recorded here. pricingPerMTok is the fugu-ultra-v2.0 rate. Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-ultra-v2.0 per 1M tokens." Standard price column: Input $5, Output $30, Cached input $0.50; Context > 272K column: Input $10, Output $45, Cached input $1.00; pricingPerMTok records the Standard price column. The same page says the orchestration tokens "will be counted in the final price of the request."`},"fugu-ultra-v2.0":{contextWindow:1e6,pricingPerMTok:{input:5,output:30,cachedInput:.5},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V2.0 of Fugu Ultra." Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-ultra-v2.0 per 1M tokens." Standard price column: Input $5, Output $30, Cached input $0.50; Context > 272K column: Input $10, Output $45, Cached input $1.00; pricingPerMTok records the Standard price column. The same page says the orchestration tokens "will be counted in the final price of the request." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra with display_name "Fugu Ultra v2.0", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-ultra "defaults to fugu-ultra-v2.0", so the same contextWindow 1000000 and vision true are recorded here.`},"fugu-ultra-v1.1":{contextWindow:1e6,vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.1 of Fugu Ultra." The Get Started page (https://console.sakana.ai/get-started) lists the reasoning effort levels high, xhigh and max for model="fugu-ultra-v1.1". Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra-v1.1 with display_name "Fugu Ultra v1.1", context_window 1000000 and input_modalities ["text", "image"], hence contextWindow 1000000 and vision true.`},"fugu-ultra-v1.0":{contextWindow:1e6,vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.0 of Fugu Ultra, also known as fugu-ultra-20260615." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-ultra-v1.0 with display_name "Fugu Ultra v1.0", context_window 1000000 and input_modalities ["text", "image"], hence contextWindow 1000000 and vision true.`},"fugu-max":{contextWindow:1e6,pricingPerMTok:{input:2,output:6,cachedInput:.25},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "The Fugu Max model, defaults to fugu-max-v1.0." Fugu Max overview: "Fugu Max orchestrates our largest pool of models to push the cost\u2013performance Pareto frontier." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-max with display_name "Fugu Max", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-max "defaults to fugu-max-v1.0", so the same contextWindow 1000000 and vision true are recorded here. pricingPerMTok is the fugu-max-v1.0 rate. Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-max-v1.0 per 1M tokens, regardless of context length." Input $2, Output $6, Cached input $0.25; "web_search and web_fetch are billed at $0.007 per call."`},"fugu-max-v1.0":{contextWindow:1e6,pricingPerMTok:{input:2,output:6,cachedInput:.25},vision:!0,status:"production",description:`Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.0 of Fugu Max, optimized for cost-performance." Pricing page (https://console.sakana.ai/pricing): "Fixed pricing for fugu-max-v1.0 per 1M tokens, regardless of context length." Input $2, Output $6, Cached input $0.25; "web_search and web_fetch are billed at $0.007 per call." Context window and image input: the Get Started page's Codex model catalog snippet (https://console.sakana.ai/get-started) lists slug fugu-max with display_name "Fugu Max", context_window 1000000 and input_modalities ["text", "image"]; the Models page's Supported models table says fugu-max "defaults to fugu-max-v1.0", so the same contextWindow 1000000 and vision true are recorded here.`},"sakana-namazu":{contextWindow:256e3,pricingPerMTok:{input:.95,output:4,cachedInput:.15},vision:!0,status:"production",description:'Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "Alias that points to the latest version (currently sakana-namazu-v1.0)." Models page, Sakana Namazu tab (https://console.sakana.ai/models?model=sakana-namazu, retrieved 2026-09-29), property table: Model ID sakana-namazu-v1.0, Alias sakana-namazu, Context window "256K tokens" (stored as 256000), Streaming "Supported", Image input "Supported (URL and base64)", Structured output "json_schema and json_object"; the same tab says "Thinking is enabled by default." The Get Started page (https://console.sakana.ai/get-started) says "Sakana Namazu is not included in subscription plans" and that it is "billed purely on a pay-as-you-go (per-token) basis." pricingPerMTok is the sakana-namazu-v1.0 rate. Pricing page (https://console.sakana.ai/pricing): "Token pricing for sakana-namazu-v1.0 per 1M tokens." Input $0.95, Output $4.00, Cached input $0.15; "Thinking tokens are billed at the same rate as output tokens."'},"sakana-namazu-v1.0":{contextWindow:256e3,pricingPerMTok:{input:.95,output:4,cachedInput:.15},vision:!0,status:"production",description:'Models page (https://console.sakana.ai/models, retrieved 2026-09-29), Supported models table: "V1.0 of the Sakana Namazu model. A Japanese-specialized LLM." Models page, Sakana Namazu tab (https://console.sakana.ai/models?model=sakana-namazu, retrieved 2026-09-29), property table: Model ID sakana-namazu-v1.0, Alias sakana-namazu, Context window "256K tokens" (stored as 256000), Streaming "Supported", Image input "Supported (URL and base64)", Structured output "json_schema and json_object"; the same tab says "Thinking is enabled by default." The Get Started page (https://console.sakana.ai/get-started) says "Sakana Namazu is not included in subscription plans" and that it is "billed purely on a pay-as-you-go (per-token) basis." Pricing page (https://console.sakana.ai/pricing): "Token pricing for sakana-namazu-v1.0 per 1M tokens." Input $0.95, Output $4.00, Cached input $0.15; "Thinking tokens are billed at the same rate as output tokens."'}},topModels:["fugu","fugu-ultra","fugu-ultra-v2.0","fugu-ultra-v1.1","fugu-ultra-v1.0","fugu-max","fugu-max-v1.0","sakana-namazu","sakana-namazu-v1.0"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Sakana AI answered HTTP 401 (authentication_error). Check {apiKeyEnvVar}. Get a key at {setupUrl}"}],setup:{url:"https://console.sakana.ai/overview",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://console.sakana.ai/overview and sign in - the page shows "Login with Google" and "Send login link"','2. Create an API key - the Get Started page (https://console.sakana.ai/get-started) says: "Before using Fugu or Sakana Namazu, create an API key and copy the generated key. The key is shown only once, so store it somewhere secure before closing the dialog."','3. Billing as the vendor states it: the Pricing page (https://console.sakana.ai/pricing) lists Pay as you go rates per model and Subscription Plans (Standard $20/month, Pro $100/month, Max $200/month); the Get Started page says Sakana Namazu "is billed purely on a pay-as-you-go (per-token) basis."',"4. Set {apiKeyEnvVar} in your .env file (SAKANA_API_KEY, which the Get Started page's curl example reads, is accepted as a fallback; the Models page's Python example reads FUGU_API_KEY and FUGU_BASE_URL, which NeuroLink does not)"],description:`Docs-verified only: the vendor's GET https://api.sakana.ai/v1/models needs a key (it answers HTTP 401 without one), so the nine model ids come from the Supported models table on https://console.sakana.ai/models and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.sakana.ai/v1: the Get Started page (https://console.sakana.ai/get-started) shows the OpenAI Python SDK with base_url "https://api.sakana.ai/v1" and a curl POST to https://api.sakana.ai/v1/chat/completions with the header Authorization: Bearer $SAKANA_API_KEY, and the Models page (https://console.sakana.ai/models) says: "Fugu currently supports the OpenAI-compatible Chat Completions, Responses, and Models APIs, as well as the Anthropic-compatible Messages API." An unauthenticated GET of https://api.sakana.ai/v1/models returned HTTP 401 with error.type authentication_error and error.message "Missing API key" (2026-09-29), so errorRules holds one rule, for status 401. models.defaultContextWindow (128,000) and models.defaultMaxOutputTokens (8,192) are conservative placeholders the vendor does not publish.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.sakana.ai/v1/models answers 401 without a key, so model ids are taken from https://console.sakana.ai/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"authentication_error",method:`unauthenticated GET https://api.sakana.ai/v1/models with no credentials \u2014 HTTP 401, JSON body {"error":{"message":"Missing API key","type":"authentication_error","param":null,"code":null}}; code records the body's error.type because error.code is null; the same day an unauthenticated GET https://api.sakana.ai/v1/chat/completions answered HTTP 405 with JSON body {"error":{"message":"Method Not Allowed","type":"invalid_request_error","param":null,"code":null}}; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://console.sakana.ai/pricing (Pay as you go rates; Subscription Plans Standard $20/month, Pro $100/month, Max $200/month) and https://console.sakana.ai/get-started (Sakana Namazu "is billed purely on a pay-as-you-go (per-token) basis"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),t1e,ONr=E({"src/lib/providers/catalog/sambanova.json"(){t1e={$schema:"./provider-catalog.schema.json",id:"sambanova",displayName:"SambaNova",aliases:[],tier:2,wire:{baseURL:"https://api.sambanova.ai/v1"},models:{default:"Meta-Llama-3.3-70B-Instruct",visionModel:"Meta-Llama-3.3-70B-Instruct",fallbacks:["Meta-Llama-3.3-70B-Instruct","gpt-oss-120b"],defaultContextWindow:131072,defaultMaxOutputTokens:8192,catalog:{"Meta-Llama-3.3-70B-Instruct":{contextWindow:131072,pricingPerMTok:{input:.6,output:1.2},vision:!0,status:"production",description:"Recommended - Meta Llama 3.3 70B; production, 128K context; vision-capable"},"gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.22,output:.59},vision:!1,status:"production",description:"OpenAI GPT-OSS 120B (open-weight)"},"DeepSeek-V3.1":{contextWindow:131072,pricingPerMTok:{input:3,output:4.5},vision:!1,status:"production",description:"DeepSeek V3.1 (reasoning)"},"DeepSeek-V3.2":{contextWindow:32768,pricingPerMTok:{input:3,output:4.5},vision:!1,status:"preview",description:"DeepSeek V3.2 (reasoning; vendor preview, 32K context)"},"MiniMax-M2.7":{contextWindow:196608,pricingPerMTok:{input:.6,output:2.4,cachedInput:.06},vision:!1,status:"production",description:"MiniMax M2.7, 192K context"},"MiniMax-M3":{pricingPerMTok:{input:.6,output:2.4},vision:!0,status:"production",description:"MiniMax M3 (vision)"},"gemma-4-31B-it":{contextWindow:131072,pricingPerMTok:{input:.38,output:1.15},vision:!0,status:"preview",description:"Google Gemma 4 31B IT (vision; vendor preview)"}},topModels:["Meta-Llama-3.3-70B-Instruct","gpt-oss-120b","DeepSeek-V3.1","DeepSeek-V3.2","MiniMax-M2.7","MiniMax-M3","gemma-4-31B-it"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key|Incorrect API key|authentication_error",class:"authentication",message:"Invalid SambaNova API key. Check {apiKeyEnvVar}. Get one at https://cloud.sambanova.ai/apis"},{status:402,pattern:"PAYMENT_METHOD_REQUIRED|balance_units",class:"provider",message:"SambaNova account has no credits (new accounts have no free allowance). Add a payment method and purchase credits at https://cloud.sambanova.ai/plans/billing"}],setup:{url:"https://cloud.sambanova.ai/apis",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://cloud.sambanova.ai (Google/Microsoft OAuth works)","2. Complete the profile step; note new accounts have NO free allowance \u2014 a payment method and purchased credits are required before calls succeed","3. Create an API key under API Keys","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-27",method:"authenticated GET /v1/models"},authProbe:{date:"2026-08-27",status:401,code:"invalid_api_key"},billingProbe:{date:"2026-08-27",status:402,code:"PAYMENT_METHOD_REQUIRED"},liveMatrix:{date:"2026-08-30",result:"Six of seven ids answer. Vision re-tested with a valid 64x64 PNG: gemma-4-31B-it and Meta-Llama-3.3-70B-Instruct both describe it correctly, so Meta-Llama's vision flag is now true. MiniMax-M3 returned 429 'currently experiencing high demand' \u2014 the model is served and simply busy, so it stays production rather than being retired; its declared vision support is therefore still unverified."},addedInPR:"https://github.com/juspay/neurolink/pull/1586"}}}}),r1e,DNr=E({"src/lib/providers/catalog/sarvam.json"(){r1e={$schema:"./provider-catalog.schema.json",id:"sarvam",displayName:"Sarvam AI",aliases:[],tier:2,wire:{baseURL:"https://api.sarvam.ai/v1"},models:{default:"sarvam-105b",fallbacks:["sarvam-105b-conversations"],defaultContextWindow:128e3,defaultMaxOutputTokens:2048,catalog:{"sarvam-105b":{contextWindow:128e3,vision:!1,status:"production",description:`Recommended - Sarvam's flagship chat model, documented as "(128K context) for complex reasoning and agentic tasks" (https://docs.sarvam.ai/api-reference-docs/chat/chat-completions, retrieved 2026-09-28). The /v1/chat/completions endpoint serves only sarvam-105b and sarvam-105b-conversations per the vendor's own reference \u2014 confirmed live by an unauthenticated GET https://api.sarvam.ai/v1/models on 2026-09-28 (HTTP 200, exactly these 2 ids, no key used). Request/response wire shape is OpenAI-compatible: messages[] with system/developer/user/assistant/tool roles, choices[].message/finish_reason (stop, length, tool_calls, content_filter, deprecated function_call), object: "chat.completion". tools + tool_choice (function calling) and response_format json_schema/json_object (Structured Outputs) are both documented generically for this endpoint, not per model \u2014 none of this was live-probed, since onboarding was credential-free (no API key, no POST request made to the vendor's API). Sarvam-specific reasoning_effort (low/high/max, default medium, disable by sending null) plus a reasoning_content field on the response message are documented \u2014 the basis for capabilities.thinking here. max_tokens defaults to 2048 if the caller omits it and the docs state no maximum output ceiling, so defaultMaxOutputTokens below reflects that documented default rather than a hard cap; maxOutputTokens is left unset on this entry rather than inventing one. Pricing is documented only in Indian Rupees \u2014 \u20B929.28 input / \u20B973.2 output / \u20B910.98 cached-input per 1M tokens (https://docs.sarvam.ai/api/getting-started/pricing.md, retrieved 2026-09-28); pricingPerMTok is left unset here rather than placing an INR figure in a field every other catalog entry uses for USD, since the vendor states no INR/USD rate to convert by without inventing a number. The message content-part schema also declares an image_url part (standard OpenAI-compatible shape), but the vendor documents no vision/multimodal capability for either model, so vision stays false and models.visionModel is left unset.`,enumMember:"SARVAM_105B"},"sarvam-105b-conversations":{contextWindow:32e3,vision:!1,status:"production",description:`Sarvam's conversational variant, documented as "(32K context) for real-time conversational and voice-agent workloads" (https://docs.sarvam.ai/api-reference-docs/chat/chat-completions, retrieved 2026-09-28) \u2014 kept as the fallback behind the larger-context sarvam-105b. Same endpoint, same OpenAI-compatible wire shape, tools/response_format documentation and reasoning_effort/reasoning_content fields as sarvam-105b (see that entry); confirmed live alongside it by the same unauthenticated GET https://api.sarvam.ai/v1/models on 2026-09-28 (HTTP 200). Pricing per the vendor's pricing page is identical to sarvam-105b \u2014 \u20B929.28 input / \u20B973.2 output / \u20B910.98 cached-input per 1M tokens, stated only in INR \u2014 so pricingPerMTok is left unset for the same reason.`,enumMember:"SARVAM_105B_CONVERSATIONS"}},topModels:["sarvam-105b","sarvam-105b-conversations"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:403,pattern:"invalid_api_key_error|Invalid API key",class:"authentication",message:"Invalid Sarvam AI API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://dashboard.sarvam.ai",apiKeyFormat:"^sk_[A-Za-z0-9_-]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://dashboard.sarvam.ai and sign in or create an account","2. Create an API subscription key from the dashboard (documented format: sk_xxx)","3. Every new account receives \u20B9100 in starter credits, then usage-based billing applies (https://docs.sarvam.ai/api/getting-started/pricing.md) \u2014 no ongoing free tier beyond that starter credit is documented","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible endpoint at https://api.sarvam.ai/v1, serving only sarvam-105b and sarvam-105b-conversations via POST /v1/chat/completions. The vendor's own API reference authenticates its raw HTTP examples with a standard Authorization: Bearer <token> header \u2014 what NeuroLink's generic OpenAI-compatible provider sends. Sarvam's stated preference is instead an api-subscription-key header, which its Python/TypeScript SDKs use; both are documented as accepted on every endpoint, so no custom auth-header quirk is needed here."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.sarvam.ai/v1/models \u2014 2 models (sarvam-105b, sarvam-105b-conversations); credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),n1e,NNr=E({"src/lib/providers/catalog/scaledown.json"(){n1e={$schema:"./provider-catalog.schema.json",id:"scaledown",displayName:"ScaleDown",enumTypeName:"ScaleDownModels",aliases:["scaledown-classify"],inferenceKinds:["decide"],wire:{baseURL:"https://api.scaledown.xyz"},models:{default:"classify-1",topModels:["classify-1","classify"],catalog:{"classify-1":{contextWindow:128e3,maxOutputTokens:1,vision:!1,status:"preview",description:"Recommended - ScaleDown Classify 1, decision model for boolean, choice and score questions; context window and output limit not established"},classify:{vision:!1,status:"preview",description:"ScaleDown's name for its latest Classify model; whether it moves to a newer model is not established"}}},decide:{dialect:"system-one",order:8,baseURLNormalize:["strip-trailing-slash"],endpoint:"{baseURL}/v1/scaledown",model:{placement:"body"},authHeader:"x-api-key",stateEncoding:"text",errors:{rules:[{status:401,kind:"authentication"},{status:[402,422],kind:"invalid_request"},{status:429,kind:"rate_limit"},{status:502,kind:"server"},{status:504,kind:"timeout"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"detail.message"},{path:"detail"}]}},setup:{url:"https://docs.scaledown.ai",apiKeyFormat:null,billingPolicy:"promotional-credit",description:"API key from ScaleDown (see its documentation). Sign-up gives a free allowance; whether it expires is not established",instructions:["1. Create an account and an API key, following https://docs.scaledown.ai","2. Set {apiKeyEnvVar} in your .env file","3. ScaleDown's documentation says the key goes in an x-api-key header rather than Authorization: Bearer, and NeuroLink sends it that way","4. ScaleDown's documentation says a request made with no credit left returns HTTP 402"]},evidence:{rosterVerified:{date:"2026-10-15",method:"Checked by the marketing session, not in this change: ScaleDown's docs at docs.scaledown.ai were read and probes were made against api.scaledown.xyz. No request was made to ScaleDown in this change"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/2005"}}}}),o1e,LNr=E({"src/lib/providers/catalog/scaleway.json"(){o1e={$schema:"./provider-catalog.schema.json",id:"scaleway",displayName:"Scaleway",aliases:[],tier:2,wire:{baseURL:"https://api.scaleway.ai/v1"},models:{default:"mistral-small-3.2-24b-instruct-2506",fallbacks:["llama-3.3-70b-instruct","qwen3-235b-a22b-instruct-2507","gemma-4-26b-a4b-it","qwen3.6-35b-a3b"],defaultContextWindow:1e5,defaultMaxOutputTokens:16e3,catalog:{"mistral-small-3.2-24b-instruct-2506":{contextWindow:128e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'NeuroLink default. The id appears in the Model field description of the Chat Completions API reference (https://www.scaleway.com/en/developers/api/generative-apis/chat-completions/: "Unique identifier of the model, such as llama-3.3-70b-instruct or mistral-small-3.2-24b-instruct-2506.") and in the /chat/completions curl example on the rate-limits page (https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/). From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Vision, maximum context window is 128k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported image formats are PNG, JPEG, WEBP, and non-animated GIFs. The pricing page lists it as Chat and Vision at 0.15 EUR per million input tokens and 0.35 EUR per million output tokens; pricingPerMTok is left out because the pricing page states euro prices and the schema has no currency field. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"llama-3.3-70b-instruct":{contextWindow:1e5,maxOutputTokens:16e3,vision:!1,status:"production",description:'Fallback. The id appears in the Model field description and the example request of the Chat Completions API reference (https://www.scaleway.com/en/developers/api/generative-apis/chat-completions/). From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modality is Text, context window is 100k (Serverless), maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes. Vendor text: "Released in December 2024, Llama 3.3 70b by Meta is a fine-tune of the Llama 3.1 70b model." and "This model is text-only (text in/text out)." The pricing page lists it as Chat at 0.90 EUR per million input tokens and 0.90 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"qwen3-235b-a22b-instruct-2507":{contextWindow:25e4,maxOutputTokens:16e3,vision:!1,status:"production",description:'Fallback. From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modality is Text, maximum context window is 250k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes. Vendor text: "Released in July 2025, Qwen 3 235B A22B is an open-weight model". The pricing page lists it as Chat at 0.75 EUR per million input tokens and 2.25 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"gemma-4-26b-a4b-it":{contextWindow:256e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'Fallback. From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Vision, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, high; supported image formats are PNG, JPEG, WEBP, and non-animated GIFs. Vendor text: "Released in April 2026, Gemma-4-26b-a4b-it is a frontier small-sized model to perform agentic and reasoning tasks on many languages." The pricing page lists it as Chat, code, and Vision at 0.25 EUR per million input tokens and 0.50 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"qwen3.6-35b-a3b":{contextWindow:256e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text, Code and Vision, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, high; supported image formats are PNG, JPEG, GIF. Vendor text: "Released in April 2026, Qwen3.6-35b-a3b is a state-of-the-art small-sized model optimized for agentic tasks and logical reasoning." The pricing page lists it as Chat, code, and Vision at 0.25 EUR per million input tokens and 1.50 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"qwen3.8-27b":{contextWindow:256e3,maxOutputTokens:32e3,vision:!0,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text, Code and Vision, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, xhigh; supported image formats are PNG, JPEG, GIF. Vendor text: "A state-of-the-art small-sized dense model as of August 2026, optimized for agentic tasks and logical reasoning." The pricing page lists it as Chat, code, and Vision at 0.60 EUR per million input tokens (0.12 EUR per million cached) and 3.30 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"qwen3.5-397b-a17b":{contextWindow:25e4,maxOutputTokens:16e3,vision:!0,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text, Code and Vision, maximum context window is 250k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, medium, high; supported image formats are PNG, JPEG, WEBP, and non-animated GIFs. Vendor text: "Qwen3.5-397b-a17b is a model developed by Qwen to perform text processing, agentic coding, image, and video analysis in several languages." The pricing page lists it as Chat, code, and Vision at 0.60 EUR per million input tokens and 3.60 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"deepseek-v4-flash-0731":{contextWindow:256e3,maxOutputTokens:32e3,vision:!1,status:"preview",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Code, maximum context window is 256k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, low, high, max. The context footnote on that page reads: "GLM 5.2 and DeepSeek-V4-Flash support 1 million context. During the preview stage, the context is limited to 256k to ensure consistent token generation speed." Vendor text: "Released in July 2026, DeepSeek-V4-Flash is the best cost-efficient model for long-horizon and coding tasks at the time of release." The pricing page lists it as Chat and code at 0.40 EUR per million input tokens (0.08 EUR per million cached) and 0.80 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"glm-5.2":{contextWindow:256e3,maxOutputTokens:16e3,vision:!1,status:"preview",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Code, maximum context window is 256k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, high, max. The context footnote on that page reads: "GLM 5.2 and DeepSeek-V4-Flash support 1 million context. During the preview stage, the context is limited to 256k to ensure consistent token generation speed." Vendor text: "Released in June 2026, GLM 5.2 is the best open-weight model for long-horizon and coding tasks at the time of release." The pricing page lists it as Chat and code at 1.80 EUR per million input tokens and 5.50 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'},"mistral-medium-3.5-128b":{contextWindow:18e4,maxOutputTokens:16e3,vision:!0,status:"preview",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modalities are Text and Vision, maximum context window is 180k, maximum output (Serverless) is 16k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are none, high; supported image formats are PNG, JPEG, WEBP, GIF. The context footnote on that page reads: "Mistral Medium 3.5 supports 1 million context. During the preview stage, the context is limited to 180k to ensure consistent token generation speed." Vendor text: "Mistral-medium-3.5 is a unified model from Mistral with strong performance for instruct, reasoning, and coding tasks." The pricing page lists it as Chat, code, and Vision at 1.50 EUR per million input tokens and 7.50 EUR per million output tokens. Vision is true because the modalities entry lists Vision (not probed with an image request).'},"gpt-oss-120b":{contextWindow:128e3,maxOutputTokens:32e3,vision:!1,status:"production",description:'From the supported-models page (https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/, retrieved 2026-09-29) and pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/, retrieved 2026-09-29, region Paris): Available in Serverless is Yes, modality is Text, maximum context window is 128k, maximum output (Serverless) is 32k; the attribute rows for structured output, function calling and parallel tool-calling are Yes; supported reasoning efforts are low, medium, high. Vendor text: "Released in August 2025, GPT OSS 120B is an open-weight model providing significant throughput performance and reasoning capabilities." and "Currently, this model should be used through the Responses API, because the Chat Completions API does not yet support tool-calling for this model." The pricing page lists it as Chat at 0.15 EUR per million input tokens and 0.60 EUR per million output tokens. Vision is false because the modalities entry does not list Vision.'}},topModels:["mistral-small-3.2-24b-instruct-2506","llama-3.3-70b-instruct","qwen3-235b-a22b-instruct-2507","gemma-4-26b-a4b-it","qwen3.6-35b-a3b","qwen3.8-27b","qwen3.5-397b-a17b","deepseek-v4-flash-0731","glm-5.2","mistral-medium-3.5-128b","gpt-oss-120b"],visionModel:"mistral-small-3.2-24b-instruct-2506"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:'Scaleway rejected the request with HTTP 401 (the Understanding common errors page lists 401 as "Unauthorized: The authorization header is missing."). Check {apiKeyEnvVar}. Create a key: {setupUrl}'},{status:403,class:"authentication",message:'Scaleway returned HTTP 403 (the Understanding common errors page lists 403 as "Forbidden: Your API key does not exist or does not have the necessary permissions to access the requested resource."). The Using Generative APIs page lists the permission sets GenerativeApisModelAccess, GenerativeApisFullAccess and AllProductsFullAccess for querying models. Check {apiKeyEnvVar}.'},{status:422,class:"invalid-model",message:`Scaleway returned HTTP 422 for model '{model}' (the Understanding common errors page lists 422 as "Model Not Found: The model key is present in the request payload, but the corresponding model is not found." and "Missing Model: The model key is missing from the request payload."). Supported models: https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/`},{status:429,class:"rate-limit",message:'Scaleway returned HTTP 429 (the Understanding common errors page lists 429 as "Too Many Requests: You are exceeding your current quota for the requested model, calculated in requests per minute." and "Too Many Tokens: You are exceeding your current quota for the requested model, calculated in tokens per minute."). Rate limits: https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/'}],setup:{url:"https://account.scaleway.com/register?service=console",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://account.scaleway.com/register?service=console and create a Scaleway account; the quickstart (https://www.scaleway.com/en/docs/generative-apis/quickstart/) lists "A Scaleway account logged into the console" and "A valid API key" as requirements',`2. Create an API key (https://www.scaleway.com/en/docs/iam/credentials/create-api-keys/): click IAM & API keys on the top-right drop-down menu of the Scaleway console, open the API keys tab and click + Generate API key. The page says: "A screen displays showing the access key and secret key for your new API key and reminding you that this is your only chance to securely save the secret key." The quickstart passes the secret key as the OpenAI client's api_key. Querying models requires one of the permission sets GenerativeApisModelAccess, GenerativeApisFullAccess or AllProductsFullAccess (https://www.scaleway.com/en/docs/generative-apis/api-cli/using-generative-apis/)`,'3. Billing as the vendor states it: the pricing page (https://www.scaleway.com/en/pricing/model-as-a-service/) says "Try out new models with our free tier: 1 million tokens and 60 minutes of audio transcription."; the FAQ (https://www.scaleway.com/en/docs/generative-apis/faq/) says "After reaching this limit, you will be charged per million tokens processed and per minutes of audio processed."; the create-account page (https://www.scaleway.com/en/docs/account/how-to/create-an-account/) says "Ordering Scaleway resources requires a valid credit card."; the payment-method page (https://www.scaleway.com/en/docs/billing/how-to/add-payment-method/) says "Before you can order Scaleway resources, you must add a payment method to your account."; the rate-limits page (https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/) says "Base limits apply if you registered a valid payment method, and they are increased automatically if you also verify your identity."',"4. Set {apiKeyEnvVar} in your .env file (the vendor's examples read SCW_SECRET_KEY, which NeuroLink does not)"],description:`Docs-verified only: the vendor's GET https://api.scaleway.ai/v1/models needs a key (it answers HTTP 401 without one), so the eleven model ids come from the supported-models page https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/ (names checked against the pricing page https://www.scaleway.com/en/pricing/model-as-a-service/) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.scaleway.ai/v1: the compatibility page (https://www.scaleway.com/en/docs/generative-apis/reference-content/openai-compatibility/) says "You can use any of the OpenAI official libraries, for example, the OpenAI Python client library to interact with Generative APIs.", the quickstart (https://www.scaleway.com/en/docs/generative-apis/quickstart/) sets base_url to https://api.scaleway.ai/v1, and the Chat Completions reference (https://www.scaleway.com/en/developers/api/generative-apis/chat-completions/) documents POST /{project_id}/v1/chat/completions with a required model and messages. Unauthenticated GETs made 2026-09-29: /models and /chat/completions both answered HTTP 401 with the body {"status":401,"error":"UNAUTHORIZED","message":"missing 'Authorization' header"}; errorRules carry that 401 and the 403, 422 and 429 statuses listed on the Understanding common errors page (https://www.scaleway.com/en/docs/generative-apis/api-cli/understanding-errors/). models.defaultContextWindow (100000) and models.defaultMaxOutputTokens (16000) are placeholders for model ids outside the catalog that the vendor does not publish; they equal the smallest Serverless context and maximum-output figures among the catalog models. Per-model contextWindow and maxOutputTokens values are the decimal forms of the labels the vendor prints (256k, 250k, 180k, 128k, 100k; 32k, 16k). The pricing page states euro prices, so pricingPerMTok is omitted rather than converted and the prices appear in the model descriptions. billingPolicy holds the schema value free-with-card: the pricing page and FAQ describe a Free Tier, and the create-account, payment-method and rate-limits pages carry the payment-method sentences quoted in setup.instructions step 3; the value is NeuroLink's classification, not a Scaleway statement. The status value production is a value the schema requires and is not a Scaleway statement; preview marks the three models whose context the supported-models page ties to the preview stage. No POST request was sent, so the request fields NeuroLink's chat-completions client can add (stream_options on streaming calls, tool_choice on calls with tools, and a json_schema response_format for schema output) have not been exercised against Scaleway.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.scaleway.ai/v1/models answers 401 without a key, so model ids are taken from https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"UNAUTHORIZED",method:`unauthenticated GET https://api.scaleway.ai/v1/models and GET https://api.scaleway.ai/v1/chat/completions, no Authorization header \u2014 both HTTP 401, JSON body {"status":401,"error":"UNAUTHORIZED","message":"missing 'Authorization' header"}; the code recorded here is the body's error value; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://www.scaleway.com/en/pricing/model-as-a-service/ ("Try out new models with our free tier: 1 million tokens and 60 minutes of audio transcription."), https://www.scaleway.com/en/docs/generative-apis/faq/ ("There is a Free Tier available for Serverless."), https://www.scaleway.com/en/docs/account/how-to/create-an-account/ ("Ordering Scaleway resources requires a valid credit card."), https://www.scaleway.com/en/docs/billing/how-to/add-payment-method/ ("Before you can order Scaleway resources, you must add a payment method to your account.") and https://www.scaleway.com/en/docs/generative-apis/reference-content/rate-limits/ ("Base limits apply if you registered a valid payment method, and they are increased automatically if you also verify your identity."); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),i1e,FNr=E({"src/lib/providers/catalog/siliconflow.json"(){i1e={$schema:"./provider-catalog.schema.json",id:"siliconflow",displayName:"SiliconFlow",aliases:[],tier:2,wire:{baseURL:"https://api.siliconflow.com/v1"},models:{default:"deepseek-ai/DeepSeek-V4-Pro",fallbacks:["deepseek-ai/DeepSeek-V4-Flash","deepseek-ai/DeepSeek-V3.2","zai-org/GLM-5.1","moonshotai/Kimi-K2.6","Qwen/Qwen3-32B"],defaultContextWindow:32768,defaultMaxOutputTokens:4096,catalog:{"deepseek-ai/DeepSeek-V4-Pro":{contextWindow:1049e3,maxOutputTokens:393e3,pricingPerMTok:{input:1.50162,output:3.135,cachedInput:.135},vision:!1,status:"production",description:`NeuroLink default. The model page About text begins "DeepSeek-V4-Pro is DeepSeek's flagship open-source MoE model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/deepseek-v4-pro (retrieved 2026-09-29) shows the id deepseek-ai/DeepSeek-V4-Pro, context length "1049K", max tokens "393K", input price 1.50162, cache read 0.135, output price 3.135 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name DeepSeek-V4-Pro.`},"deepseek-ai/DeepSeek-V4-Flash":{contextWindow:1049e3,maxOutputTokens:393e3,pricingPerMTok:{input:.13,output:.28,cachedInput:.028},vision:!1,status:"production",description:`The model page About text begins "DeepSeek-V4-Flash is DeepSeek's latest open-source MoE model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/deepseek-v4-flash (retrieved 2026-09-29) shows the id deepseek-ai/DeepSeek-V4-Flash, context length "1049K", max tokens "393K", input price 0.13, cache read 0.028, output price 0.28 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported".`},"deepseek-ai/DeepSeek-V3.2":{contextWindow:164e3,maxOutputTokens:164e3,pricingPerMTok:{input:.27,output:.42,cachedInput:.135},vision:!1,status:"production",description:'The model page About text begins "DeepSeek-V3.2 is a model that harmonizes high computational efficiency with superior reasoning and agent performance". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/deepseek-v3-2 (retrieved 2026-09-29) shows the id deepseek-ai/DeepSeek-V3.2, context length "164K", max tokens "164K", input price 0.27, cache read 0.135, output price 0.42 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported".'},"zai-org/GLM-5.1":{contextWindow:205e3,maxOutputTokens:131e3,pricingPerMTok:{input:1.19,output:3.74,cachedInput:.6},vision:!1,status:"production",description:`The model page About text begins "GLM-5.1 is Z.ai's next-generation flagship model built for agentic engineering". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/glm-5-1 (retrieved 2026-09-29) shows the id zai-org/GLM-5.1, context length "205K", max tokens "131K", input price 1.19, cache read 0.6, output price 3.74 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Not supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name GLM-5.1.`},"zai-org/GLM-5":{contextWindow:205e3,maxOutputTokens:131e3,pricingPerMTok:{input:.95,output:2.55,cachedInput:.2},vision:!1,status:"production",description:'The model page About text begins "GLM-5 is a next-generation open-source model for complex systems engineering and long-horizon agentic tasks". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/glm-5 (retrieved 2026-09-29) shows the id zai-org/GLM-5, context length "205K", max tokens "131K", input price 0.95, cache read 0.2, output price 2.55 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Not supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name GLM-5.'},"moonshotai/Kimi-K2.6":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.77,output:3.4,cachedInput:.14},vision:!0,status:"production",description:'The model page About text begins "Kimi K2.6 is an open-source, native multimodal agentic model by Moonshot AI". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/kimi-k2-6 (retrieved 2026-09-29) shows the id moonshotai/Kimi-K2.6, context length "262K", max tokens "262K", input price 0.77, cache read 0.14, output price 3.4 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Kimi-K2.6.'},"moonshotai/Kimi-K2.5":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.45,output:2.25,cachedInput:.07},vision:!0,status:"production",description:'The model page About text begins "Kimi K2.5 is an open-source, native multimodal agentic model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/kimi-k2-5 (retrieved 2026-09-29) shows the id moonshotai/Kimi-K2.5, context length "262K", max tokens "262K", input price 0.45, cache read 0.07, output price 2.25 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Kimi-K2.5.'},"Qwen/Qwen3.6-27B":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.3,output:3.2},vision:!0,status:"production",description:'The model page About text begins "Qwen3.6-27B is the first open-weight small-to-mid-sized dense model in the Qwen3.6 series". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-6-27b (retrieved 2026-09-29) shows the id Qwen/Qwen3.6-27B, context length "262K", max tokens "262K", input price 0.3, output price 3.2 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Qwen3.6-27B.'},"Qwen/Qwen3.6-35B-A3B":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.24,output:1.8,cachedInput:.15},vision:!0,status:"production",description:`The model page About text begins "Qwen3.6-35B-A3B is a large language model from Alibaba's Qwen3.6 series". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-6-35b-a3b (retrieved 2026-09-29) shows the id Qwen/Qwen3.6-35B-A3B, context length "262K", max tokens "262K", input price 0.24, cache read 0.15, output price 1.8 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name Qwen3.6-35B-A3B.`},"Qwen/Qwen3-32B":{contextWindow:131e3,pricingPerMTok:{input:.14,output:.57},vision:!1,status:"production",description:'The model page About text begins "Qwen3-32B is the latest large language model in the Qwen series with 32.8B parameters". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-32b (retrieved 2026-09-29) shows the id Qwen/Qwen3-32B, context length "131K", max tokens "131K", input price 0.14, output price 0.57 ($ per M tokens), Support image input "Not supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The Reasoning page (https://docs.siliconflow.com/en/userguide/capabilities/reasoning, retrieved 2026-09-29) lists the Qwen3 Series with Maximum Response Length 8192, Maximum Reasoning Chain Length 32768 and Maximum Context Length 131072. The two pages give different output figures, so maxOutputTokens is not set for this model.'},"Qwen/Qwen3-VL-32B-Instruct":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.2,output:.6},vision:!0,status:"production",description:'The model page About text begins "Qwen3-VL is the vision-language model in the Qwen3 series". Listed in the model enum of the VLM request schema in the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/qwen3-vl-32b-instruct (retrieved 2026-09-29) shows the id Qwen/Qwen3-VL-32B-Instruct, context length "262K", max tokens "262K", input price 0.2, output price 0.6 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported".'},"google/gemma-4-31B-it":{contextWindow:262e3,maxOutputTokens:262e3,pricingPerMTok:{input:.75,output:1,cachedInput:.25},vision:!0,status:"production",description:`The model page About text begins "Gemma 4 31B is Google DeepMind's latest open-source model". Listed in the model enum of the chat-completions API reference (https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions, retrieved 2026-09-29). The model page https://www.siliconflow.com/models/gemma-4-31b-it (retrieved 2026-09-29) shows the id google/gemma-4-31B-it, context length "262K", max tokens "262K", input price 0.75, cache read 0.25, output price 1.0 ($ per M tokens), Support image input "Supported", Tools "Supported", JSON Mode "Supported", Structured Outputs "Not supported". The pricing page (https://www.siliconflow.com/pricing, retrieved 2026-09-29) shows the same context length and prices under the name gemma-4-31B-it.`}},topModels:["deepseek-ai/DeepSeek-V4-Pro","deepseek-ai/DeepSeek-V4-Flash","deepseek-ai/DeepSeek-V3.2","zai-org/GLM-5.1","zai-org/GLM-5","moonshotai/Kimi-K2.6","moonshotai/Kimi-K2.5","Qwen/Qwen3.6-27B","Qwen/Qwen3.6-35B-A3B","Qwen/Qwen3-32B","Qwen/Qwen3-VL-32B-Instruct","google/gemma-4-31B-it"],visionModel:"Qwen/Qwen3-VL-32B-Instruct"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:'SiliconFlow rejected the request as unauthorized (HTTP 401; an unauthenticated GET https://api.siliconflow.com/v1/models returned code 30014 with the message "Token is invalid."). Check {apiKeyEnvVar}. Get one at {setupUrl}'},{status:403,class:"authentication",message:'SiliconFlow reports insufficient permissions (HTTP 403). Its error-handling page (https://docs.siliconflow.com/en/faqs/error-code) says: "The most common reason is that the model requires real-name authentication."'},{status:429,class:"rate-limit",message:"SiliconFlow rate limit reached (HTTP 429). Its error-handling page (https://docs.siliconflow.com/en/faqs/error-code) says to refer to the error message to determine whether the limit is RPM / RPD / TPM / TPD / IPM / IPD."},{pattern:"Model does not exist",class:"invalid-model",message:`SiliconFlow model '{model}' was not found. Its error-handling page (https://docs.siliconflow.com/en/faqs/error-code) shows the HTTP 400 message "Model does not exist. Please check it carefully." with code 20012.`}],setup:{url:"https://cloud.siliconflow.com/account/ak",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://cloud.siliconflow.com/ and create a SiliconFlow account (https://docs.siliconflow.com/en/userguide/quickstart)","2. Open the API Keys page at https://cloud.siliconflow.com/account/ak, click Create API Key and copy the key (https://docs.siliconflow.com/en/userguide/quickstart)",'3. Billing as the vendor words it on https://www.siliconflow.com/pricing: "Flexible token pricing, high usage limits, and postpaid billing\u2014plus $1 in free credits to get you started!"',"4. Set {apiKeyEnvVar} in your .env file"],description:`Endpoint https://api.siliconflow.com/v1 (the chat-completions API reference lists the server https://api.siliconflow.com/v1 and POST /chat/completions with bearer auth; the Text Generation page says "You can make end-to-end API requests using the OpenAI SDK" and the Quick Start says "The platform currently supports most OpenAI-related parameters."). This entry is docs-verified only: an unauthenticated GET of https://api.siliconflow.com/v1/models answered HTTP 401 without a key, so the model ids come from the vendor's public docs and the roster has not been checked; it is not yet live-verified. That GET returned code 30014 with the message "Token is invalid." (2026-09-29), so errorRules match status 401 and the statuses and messages on the vendor's error-handling page (https://docs.siliconflow.com/en/faqs/error-code). capabilities.structuredOutput is false because the model pages show Structured Outputs "Not supported" on the 12 catalog models; the JSON Mode page documents response_format={"type": "json_object"} and this entry sets no responseFormatDowngrade quirk. vision is true for moonshotai/Kimi-K2.6, moonshotai/Kimi-K2.5, Qwen/Qwen3.6-27B, Qwen/Qwen3.6-35B-A3B and google/gemma-4-31B-it from the model page value Support image input "Supported"; image input was not exercised. models.defaultContextWindow (32768) and models.defaultMaxOutputTokens (4096) are placeholders for ids outside the catalog that the vendor does not publish; the status values are ones the schema requires (production), not vendor statements. billingPolicy free-tier follows the pricing page's "$1 in free credits" statement.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.siliconflow.com/v1/models answers 401 without a key, so model ids are taken from https://docs.siliconflow.com/en/api-reference/chat-completions/chat-completions (retrieved 2026-09-29) and cross-checked against the ids shown on the model pages under https://www.siliconflow.com/models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"30014",method:'unauthenticated GET https://api.siliconflow.com/v1/models \u2014 body {"code":30014,"data":null,"message":"Token is invalid."} with header www-authenticate: Bearer realm="siliconflow", error="invalid_token", error_description="Token is invalid."; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public page https://www.siliconflow.com/pricing \u2014 "Flexible token pricing, high usage limits, and postpaid billing\u2014plus $1 in free credits to get you started!" and the FAQ answer "No, there are no minimum commitments. You only pay for what you use, and you can start with $1 in free credits."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),s1e,$Nr=E({"src/lib/providers/catalog/stackit.json"(){s1e={$schema:"./provider-catalog.schema.json",id:"stackit",displayName:"STACKIT",aliases:[],tier:2,wire:{baseURL:"https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1"},models:{default:"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8",fallbacks:["cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic","openai/gpt-oss-120b","Qwen/Qwen3.8-27B","google/gemma-4-31B-it","openai/gpt-oss-20b"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":{contextWindow:2e5,maxOutputTokens:16384,vision:!0,status:"production",description:`NeuroLink default. Row "Qwen3-VL 235B" (heading "Full Name: Qwen/Qwen3-VL-235B-A22B-Instruct-FP8") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Premium", Modalities "Input are text and image and Output is text.", Features "Tool calling enabled", Maximum images per request "10", Context length "200K Token", Maximum Generation "16384 Token", Specification "OpenAI-compatible", Status "Supported". The row's text reads "Meet Qwen3-VL \u2013 the most powerful vision-language model in the Qwen series to date." Vision is true from the Modalities cell; context is recorded as 200000, reading K as thousands.`},"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic":{contextWindow:128e3,maxOutputTokens:4096,vision:!1,status:"production",description:'Fallback. Row "Llama 3.3 70B" (heading "Full Name: cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input and output are text.", Features "Tool calling enabled", Context length "128K Token", Maximum Generation "4096 Token", Specification "OpenAI-compatible", Status "Supported". This id is the "model" value in the curl example of https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/, which says "In this guide we use Llama 3.3 70B." The FAQ (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/faq/) lists this id under "This behavior currently affects the following tool-calling enabled models:" and says "To avoid hallucinated tool calls, do not send the tools parameter with an empty list." Vision is false from the Modalities cell; context is recorded as 128000, reading K as thousands.'},"openai/gpt-oss-120b":{contextWindow:131e3,maxOutputTokens:8192,vision:!1,status:"production",description:`Fallback. Row "GPT-OSS 120B" (heading "Full Name: openai/gpt-oss-120b") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input and output are text.", Features "Tool calling & Reasoning enabled", Context length "131K Token", Maximum Generation "8192 Token", Specification "OpenAI-compatible", Status "Supported". The vendor's release note of Dec 10, 2025 (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/) says "The model provides full chain-of-thought (CoT) and support Structured Outputs." Vision is false from the Modalities cell; context is recorded as 131000, reading K as thousands.`},"Qwen/Qwen3.8-27B":{contextWindow:262e3,maxOutputTokens:16384,vision:!0,status:"production",description:'Fallback. Row "Qwen3.8 27B" (heading "Full Name: Qwen/Qwen3.8-27B") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input are text and image and Output is text.", Features "Tool calling & Reasoning enabled", Maximum images per request "10", Context length "262K Token", Maximum Generation "16384 Token", Thinking budget "8192 Token", Specification "OpenAI-compatible", Status "Supported". The id also appears in the Sep 8, 2026 release note (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/). Vision is true from the Modalities cell; context is recorded as 262000, reading K as thousands.'},"google/gemma-4-31B-it":{contextWindow:256e3,maxOutputTokens:4096,vision:!0,status:"production",description:'Fallback. Row "Gemma 4 31B" (heading "Full Name: google/gemma-4-31B-it") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Plus", Modalities "Input are text and image and Output is text.", Maximum images per request "10", Features "Tool calling & Reasoning enabled", Context length "256K Token", Maximum Generation "4096 Token", Specification "OpenAI-compatible", Status "Supported". The id also appears in the Jul 14, 2026 release note (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/). Vision is true from the Modalities cell; context is recorded as 256000, reading K as thousands.'},"openai/gpt-oss-20b":{contextWindow:131e3,maxOutputTokens:8192,vision:!1,status:"production",description:`Fallback. Row "GPT-OSS 20B" (heading "Full Name: openai/gpt-oss-20b") on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29) with these cell values: Type "Chat", Category "LLM-Standard", Modalities "Input and output are text.", Features "Tool calling & Reasoning enabled", Context length "131K Token", Maximum Generation "8192 Token", Specification "OpenAI-compatible", Status "Supported". The row's note reads "We recommend configuring retries for tool calling to improve reliability. Alternatively, consider switching to one of our bigger models, that support this feature." Vision is false from the Modalities cell; context is recorded as 131000, reading K as thousands.`}},topModels:["Qwen/Qwen3-VL-235B-A22B-Instruct-FP8","cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic","openai/gpt-oss-120b","Qwen/Qwen3.8-27B","google/gemma-4-31B-it","openai/gpt-oss-20b"]},capabilities:{text:!0,streaming:!1,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:404,class:"invalid-model",message:'STACKIT answered HTTP 404 for model "{model}". Its FAQ (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/faq/) says of a 404: "Most likely this is due to an incorrect \u201Cmodel\u201D parameter in the request body."'},{status:429,class:"rate-limit",message:'STACKIT answered HTTP 429. Its rate-limits page (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/how-tos/rate-limits-on-shared-models-_stackit-ai-model-serving/) says "Once you hit a rate limit (RPM or TPM)" the API responds with 429 Too Many Requests, and that "Every response contains rate-limit specific headers", including x-ratelimit-remaining-requests and x-ratelimit-remaining-tokens.'}],setup:{url:"https://portal.stackit.cloud",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://portal.stackit.cloud and log in to the customer portal \u2014 the Getting started page says "To enable AI Model Serving login to the Customer portal and click at the sidebar on the left on AI Model Serving." and lists a STACKIT customer account, a STACKIT user account and a STACKIT project as prerequisites (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/)','2. Enable AI Model Serving, click Create token, enter a token name and optionally a lifetime in days, and confirm with "Order fee-based" ("To confirm click on Order fee-based."); the same page says "You can not retrieve the token again after closing the pane", so copy it when it is shown','3. Billing as the vendor states it: the May 6, 2025 release note says "STACKIT AI Model Serving offers you easy pay-as-you-go access to proven GenAI models" (https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/); the product page (https://stackit.com/en/products/data-ai/stackit-ai-model-serving) offers "Register for a free trial access" \u2014 "All registrations are manually checked by us. If you qualify, you will receive your personal token to use STACKIT AI Model Serving within 24 hours. The trial period ends automatically after 30 days." \u2014 and shows a price table in euro (\u20AC)',"4. Set {apiKeyEnvVar} in your .env file (the docs' examples read STACKIT_MODEL_SERVING_AUTH_TOKEN and STACKIT_MODEL_SERVING_API_KEY, which NeuroLink does not read)"],description:`Docs-verified only: the vendor's GET https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 403 with content-length 0 and no body), so the six chat model ids come from the "Full Name:" headings of https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29), and the roster has not been checked; the entry is not yet live-verified. No account was created and no API key was used to build this entry. OpenAI-compatible endpoint at https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1: the six chat model rows in this catalog show Specification "OpenAI-compatible" and Available Endpoints "POST /chat/completions", "POST /completions" and "GET /models", and https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/how-tos/use-the-models/ says "STACKIT AI Model Serving provides an OpenAI-compatible API, making it easy to integrate with existing tools and libraries." Its curl example sends "Authorization: Bearer [auth-token]" and a JSON body with "model" and "messages" to https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/chat/completions. The sample reply shown under the POST /v1/chat/completions curl request on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/ reads "object":"text_completion" and "choices":[{"index":0,"text":. Unauthenticated GETs made 2026-09-29: /models, /chat/completions and the base URL /v1 each answered HTTP 403 with content-length 0 and no body. No POST request was sent. The Available Shared Models page also lists Status "Deprecated" for the rows "Qwen3.6 27B" and "Gemma 3 27B"; neither is in this catalog. errorRules carry only the two statuses the vendor's pages state, 404 (FAQ) and 429 (rate-limits page). models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish as general values; they apply to model ids outside the catalog and equal the Context length "128K Token" and Maximum Generation "4096 Token" cells of the Llama 3.3 70B row. Each model's context window is the page's "K Token" figure read as thousands. The status field of the six catalogued models holds production: the catalog schema requires a status (production, preview or retired) and the vendor's rows show Status "Supported". capabilities.text is true because the Getting started page documents a chat completions curl request; capabilities.tools is model-dependent: the Features cell reads "Tool calling enabled" on the Qwen3-VL 235B and Llama 3.3 70B rows and "Tool calling & Reasoning enabled" on the other four catalogued rows, and the LangChain example on https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/how-tos/integration-of-tool-calling/ prints tool_call_response.tool_calls; the other capability flags are false, meaning not declared by this entry, and no request exercising them was sent. billingPolicy holds no-free-tier because the schema takes one of three values and the token-creation step says "To confirm click on Order fee-based."; the free trial the product page describes is in step 3. apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:403,method:"docs-only \u2014 unauthenticated GET https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/models answers 403 without a key, so model ids are taken from https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:403,method:"unauthenticated GET https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1/models \u2014 HTTP 403, content-length 0, no response body, so no error code was observable; the same day unauthenticated GETs of .../v1/chat/completions and .../v1 answered HTTP 403 with content-length 0; credential-free, no key used, no POST sent"},billingProbe:{date:"2026-09-29",method:'public pages https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/getting-started/getting-started-with-shared-models/ (token step "To confirm click on Order fee-based."), https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/release-notes/ (May 6, 2025: "easy pay-as-you-go access") and https://stackit.com/en/products/data-ai/stackit-ai-model-serving ("Register for a free trial access", "The trial period ends automatically after 30 days.", and a STACKIT AI Model Serving price table in euro); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),a1e,UNr=E({"src/lib/providers/catalog/stepfun.json"(){a1e={$schema:"./provider-catalog.schema.json",id:"stepfun",displayName:"StepFun",aliases:[],tier:2,wire:{baseURL:"https://api.stepfun.ai/v1"},models:{default:"step-5-preview",fallbacks:["step-3.7-flash","step-3.5-flash","step-3.5-flash-2603","step-1o-turbo-vision"],fallbackModelName:"step-3.7-flash",defaultContextWindow:32e3,defaultMaxOutputTokens:16384,catalog:{"step-5-preview":{contextWindow:1e6,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:2.7,cachedInput:.05},vision:!0,status:"preview",description:`NeuroLink default. Model page https://platform.stepfun.ai/docs/en/guides/models/step-5-preview (retrieved 2026-09-29): "Step 5 Preview is StepFun's flagship model for agentic work." The page's specification table gives Model ID step-5-preview, Context window "1M tokens", Input types "Text, images, and video", Output type "Text" and Maximum output "64k tokens"; its features table lists Streaming output, Tool calling, Structured output ("JSON Mode and JSON Schema supported"), Reasoning effort (low, medium, high) and Prompt caching. The Chat Completions page https://platform.stepfun.ai/docs/en/api-reference/chat/chat-completion-create.md states "The examples below use step-5-preview by default." Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md: $1.00 input (cache miss), $0.05 input (cache hit), $2.70 output per 1M tokens. contextWindow 1000000 and maxOutputTokens 64000 are the decimal forms of "1M tokens" and "64k tokens"; vision is true because the model page lists images and video as input types; status is preview because the vendor names the model "Step 5 Preview".`},"step-3.7-flash":{contextWindow:256e3,pricingPerMTok:{input:.2,output:1.15,cachedInput:.04},vision:!0,status:"production",description:`Fallback. Model page https://platform.stepfun.ai/docs/en/guides/models/step-3.7-flash (retrieved 2026-09-29): "StepFun's flagship multimodal reasoning model. Powered by a 198B-parameter / 11B-activation sparse MoE architecture, with native support for image and video understanding." Its Key facts section states a context length of 256K tokens, and the page lists three reasoning effort levels (low, medium, high) set with reasoning_effort on the Chat Completions API. The Quickstart table (https://platform.stepfun.ai/docs/en/quickstart/overview.md) lists Input capabilities "Text, images, and video" for it; the Tool Call page (https://platform.stepfun.ai/docs/en/api-reference/tool-call.md) lists it among the models that support Toolcall requests, and the JSON Mode page (https://platform.stepfun.ai/docs/en/guides/developer/json-mode.md) says the json_schema approach applies to it. Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md (the model page shows the same figures): $0.20 input (cache miss), $0.04 input (cache hit), $1.15 output per 1M tokens. contextWindow 256000 is the decimal form of "256K tokens"; vision is true because the Quickstart table lists images and video as input capabilities.`},"step-3.5-flash":{contextWindow:256e3,pricingPerMTok:{input:.1,output:.3,cachedInput:.02},vision:!1,status:"production",description:`Fallback. Model page https://platform.stepfun.ai/docs/en/guides/models/step-3.5-flash (retrieved 2026-09-29): the model is "StepFun's flagship language reasoning model", "Built on a 196B-parameter / 11B-activation sparse MoE architecture." Its Key facts section states a context length of 256K tokens. The Quickstart table (https://platform.stepfun.ai/docs/en/quickstart/overview.md) lists Input capabilities "Text only" for it and says "Step 3.5 Flash does not support image input". The Tool Call page (https://platform.stepfun.ai/docs/en/api-reference/tool-call.md) lists it among the models that support Toolcall requests, and the JSON Mode page (https://platform.stepfun.ai/docs/en/guides/developer/json-mode.md) says the json_schema approach applies to it. Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md (the model page shows the same figures): $0.10 input (cache miss), $0.02 input (cache hit), $0.30 output per 1M tokens. contextWindow 256000 is the decimal form of "256K tokens".`},"step-3.5-flash-2603":{contextWindow:256e3,pricingPerMTok:{input:.1,output:.3,cachedInput:.02},vision:!1,status:"production",description:'Fallback. The Model variants section of https://platform.stepfun.ai/docs/en/guides/models/step-3.5-flash (retrieved 2026-09-29) describes step-3.5-flash-2603 as "Agent-optimized version: tuned from step-3.5-flash for high-frequency agent scenarios." and says it "Supports the reasoning_effort field (low / high)." The Chat Completions page (https://platform.stepfun.ai/docs/en/api-reference/chat/chat-completion-create.md) says step-3.5-flash-2603 accepts low and high for reasoning_effort. The welcome page model overview (https://platform.stepfun.ai/docs/en/welcome.md) has a card titled "Step 3.5 Flash 2603" with the category "Reasoning / text", the subtitle "Optimized for agents" and the metric "Max context" (value 256K). The Tool Call page (https://platform.stepfun.ai/docs/en/api-reference/tool-call.md) lists step-3.5-flash-2603 among the models that support Toolcall requests, and the JSON Mode page (https://platform.stepfun.ai/docs/en/guides/developer/json-mode.md) says the json_schema approach applies to it. Prices per https://platform.stepfun.ai/docs/en/guides/pricing/details.md: $0.10 input (cache miss), $0.02 input (cache hit), $0.30 output per 1M tokens. contextWindow 256000 is the decimal form of 256K; vision is false (the welcome card category is "Reasoning / text").'},"step-1o-turbo-vision":{contextWindow:32e3,pricingPerMTok:{input:.36,output:1.15,cachedInput:.07},vision:!0,status:"production",description:'Fallback. Listed as step-1o-turbo-vision under "Pricing for Vision Models" on https://platform.stepfun.ai/docs/en/guides/pricing/details.md (retrieved 2026-09-29): $0.36 input (cache miss), $0.07 input (cache hit), $1.15 output per 1M tokens; the page adds "Image input is counted and billed as tokens, just like text input." The Model Retirement and Migration page (https://platform.stepfun.ai/docs/en/guides/model-migration.md) lists it in the "Recommended replacement" column for step-1-8k, step-1-32k, step-1v-8k, step-1v-32k, step-2-mini, step-1o-vision-32k and step-2-16k. The welcome page model overview (https://platform.stepfun.ai/docs/en/welcome.md) has a card titled "Step-1o Turbo Vision" with the metric "Max context" (value 32K) and the text "Designed for social content creation, AI assistants, and image and video understanding." contextWindow 32000 is the decimal form of 32K; vision is true because the pricing page groups the model under vision models and the card describes image and video understanding.'}},topModels:["step-5-preview","step-3.7-flash","step-3.5-flash","step-3.5-flash-2603","step-1o-turbo-vision"],visionModel:"step-5-preview"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:'StepFun rejected the API key (HTTP 401 invalid_api_key; the Error Codes page lists 401 as "Invalid authentication" with the resolution "Make sure you are using the correct API key."). Check {apiKeyEnvVar}. Create a key: {setupUrl}'},{status:402,class:"provider",message:'StepFun returned HTTP 402 (the Error Codes page lists 402 as "Insufficient balance" with the resolution "Add funds to your account.").'},{status:429,class:"rate-limit",message:'StepFun returned HTTP 429 (the Error Codes page lists 429 as "Resource or rate limit exceeded, usually because requests are too frequent" with the resolution "Retry after a short delay.").'},{status:451,class:"provider",message:'StepFun returned HTTP 451 (the Error Codes page lists 451 as "The request or response content failed review" with the resolution "Modify the request and try again.").'},{status:503,class:"provider",message:'StepFun returned HTTP 503 (the Error Codes page lists 503 as "Server is currently overloaded" with the resolution "Retry after a short delay.").'}],setup:{url:"https://platform.stepfun.ai/interface-key",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://platform.stepfun.ai/interface-key and sign in - the Quickstart (https://platform.stepfun.ai/docs/en/quickstart/overview.md) says "Sign in to the StepFun Open Platform and create and copy an API key on the Interface Keys page."','2. Billing as the vendor states it: the pricing overview (https://platform.stepfun.ai/docs/en/guides/pricing/intro.md) says fees are deducted "drawing from free credit first, then paid balance", and the Error Codes page (https://platform.stepfun.ai/docs/en/api-reference/error-codes.md) lists HTTP 402 as "Insufficient balance" with the resolution "Add funds to your account."',"3. Set {apiKeyEnvVar} in your .env file"],description:`Docs-verified only: the vendor's GET https://api.stepfun.ai/v1/models needs a key (it answers HTTP 401 without one), so the five model ids come from the pricing page https://platform.stepfun.ai/docs/en/guides/pricing/details.md and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.stepfun.ai/v1: the Chat Completions page (https://platform.stepfun.ai/docs/en/api-reference/chat/chat-completion-create.md) documents POST https://api.stepfun.ai/v1/chat/completions with a required model and messages, and streaming as data: chunks ending in data: [DONE]; the migration page (https://platform.stepfun.ai/docs/en/guides/developer/openai.md) says "Stepfun models are compatible with the OpenAI API spec." Unauthenticated GETs made 2026-09-29: /models and /chat/completions each answered HTTP 401 with the body {"error":{"message":"Incorrect API key provided","type":"invalid_api_key"}}; errorRules carry that 401 and the 402, 429, 451 and 503 statuses listed on the Error Codes page. models.defaultContextWindow (32000) and models.defaultMaxOutputTokens (16384) are conservative placeholders for model ids outside the catalog; the vendor does not publish a general default. Per-model contextWindow and maxOutputTokens values are the decimal forms of the labels the vendor prints ("1M tokens", "256K tokens", 32K, "64k tokens"). billingPolicy holds the schema value no-free-tier because the catalog schema has no unknown value; it is not a vendor statement. The base URL is the standard Open Platform endpoint; the Step Plan overview (https://platform.stepfun.ai/docs/en/step-plan/overview.md) lists a separate OpenAI SDK base URL, https://api.stepfun.ai/step_plan/v1. No POST request was sent, so the request fields NeuroLink's chat-completions client can add (stream_options on streaming calls, tool_choice on calls with tools, and a json_schema response_format for schema output) have not been exercised against StepFun.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.stepfun.ai/v1/models answers 401 without a key, so model ids are taken from https://platform.stepfun.ai/docs/en/guides/pricing/details.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_api_key",method:`unauthenticated GET https://api.stepfun.ai/v1/models and GET https://api.stepfun.ai/v1/chat/completions, no Authorization header \u2014 each HTTP 401, JSON body {"error":{"message":"Incorrect API key provided","type":"invalid_api_key"}}; the code recorded here is the body's error.type value (the body has no error.code field); credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://platform.stepfun.ai/docs/en/guides/pricing/intro.md ("drawing from free credit first, then paid balance"), https://platform.stepfun.ai/docs/en/guides/pricing/details.md (per-token prices and rate-limit tiers by cumulative top-up amount) and https://platform.stepfun.ai/docs/en/api-reference/error-codes.md (402 "Insufficient balance"); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),l1e,BNr=E({"src/lib/providers/catalog/subconscious.json"(){l1e={$schema:"./provider-catalog.schema.json",id:"subconscious",displayName:"Subconscious",aliases:[],tier:2,wire:{baseURL:"https://api.subconscious.dev/v1"},models:{default:"subconscious/glm-5.3-marathon",fallbacks:["subconscious/deepseek-v4.1-flash-marathon","subconscious/tim-qwen3.6-27b"],defaultContextWindow:2e5,defaultMaxOutputTokens:4096,catalog:{"subconscious/glm-5.3-marathon":{pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:"NeuroLink default. The pricing page (https://www.subconscious.dev/pricing, retrieved 2026-09-29) lists the id subconscious/glm-5.3-marathon under the name 'GLM-5.3 Marathon', with the description 'Open-source frontier coding model', at $0.26 cached, $1.40 input and $4.40 output per 1M tokens. The API reference (https://docs.subconscious.dev/api-reference/openapi.json) lists this id as the model enum value. Present on the unauthenticated GET /v1/models roster (2026-09-29). vision is false as a schema-required placeholder the vendor does not publish for this id."},"subconscious/deepseek-v4.1-flash-marathon":{vision:!1,status:"production",description:"NeuroLink fallback. Present on the unauthenticated GET /v1/models roster (2026-09-29). The vendor homepage FAQ (https://www.subconscious.dev, retrieved 2026-09-29) says 'On our managed inference service, we serve GLM 5.3 Marathon and DeepSeek V4.1 Flash Marathon.' No pricing is attached: the pricing page (https://www.subconscious.dev/pricing, retrieved 2026-09-29) lists the id subconscious/deepseek-v4-flash-marathon, which differs from this roster id, with the description 'Multimodal & high-throughput DeepSeek V4'. vision is false as a schema-required placeholder the vendor does not publish for this roster id. Not probed with a key."},"subconscious/tim-qwen3.6-27b":{vision:!1,status:"production",description:"NeuroLink fallback. Present on the unauthenticated GET /v1/models roster (2026-09-29). The vendor blog post 'Introducing TIM-Qwen3.6-27B' (https://www.subconscious.dev/blog/introducing-tim-qwen3-6-27b, May 21, 2026) says the model is 'available via the OpenAI chat completions and Anthropic messages API formats'. vision is false as a schema-required placeholder the vendor does not publish for this id. Not probed with a key."}},topModels:["subconscious/glm-5.3-marathon","subconscious/deepseek-v4.1-flash-marathon","subconscious/tim-qwen3.6-27b"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Invalid or missing Subconscious API key. Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:429,class:"rate-limit",message:"Subconscious returned HTTP 429: rate limited due to too many requests or tokens per minute."}],setup:{url:"https://subconscious.dev/platform/api-keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit https://subconscious.dev/platform and sign up or sign in (the quickstart, https://docs.subconscious.dev/quickstart, describes signing up on the platform and generating an API key from the dashboard)","2. Create an API key at https://subconscious.dev/platform/api-keys and copy it (https://docs.subconscious.dev/ways-to-use/cloud-api says API keys are created and managed from the dashboard)","3. Pricing is at https://www.subconscious.dev/pricing (monthly token plans and usage-based per-token pricing); the cloud-API page says 'Usage is billed per token.' and 'Credits are added from your dashboard'","4. Set {apiKeyEnvVar} in your .env file"],description:"OpenAI-compatible Chat Completions endpoint at https://api.subconscious.dev/v1. The vendor overview (https://docs.subconscious.dev/overview) says 'Our API is compatible with both the OpenAI Completions and Anthropic Messages APIs'; this entry uses the OpenAI-format /chat/completions route. Verification level: docs- and roster-verified, not live-verified (evidence.liveMatrix is null). Checks made on 2026-09-29 were unauthenticated GET requests to /v1/models (HTTP 200, 4 models) and /v1/chat/completions (HTTP 405, allow: POST); no key was used and no POST was sent. The OpenAPI spec (https://docs.subconscious.dev/api-reference/openapi.json) lists statuses 400, 401 ('Unauthorized because of a missing or invalid API key'), 429 ('Rate limited due to too many requests or tokens per minute') and 500, so errorRules match on status. The spec says of response_format: 'Currently unsupported. The request may accept this field, but it is ignored and does not constrain the model output to JSON or a schema.' tools, toolsWithStreaming, structuredOutput, structuredOutputWithTools and thinking are declared false and were not probed with a key. models.defaultContextWindow (200000), models.defaultMaxOutputTokens (4096) and the vision value (false) of the three catalog models are placeholders the vendor does not publish per model. billingPolicy no-free-tier is the schema's required field value, not a vendor statement."},evidence:{rosterVerified:{date:"2026-09-29",method:"unauthenticated GET https://api.subconscious.dev/v1/models \u2014 4 models; credential-free, no key used",status:200},billingProbe:{date:"2026-09-29",method:"public pages https://docs.subconscious.dev/ways-to-use/cloud-api and https://www.subconscious.dev/pricing read without an account. The vendor blog post https://www.subconscious.dev/blog/subconscious-glm-5-2-makes-compact-obsolete (June 22, 2026, about GLM-5.2) says 'You also get $50 credits to test the model performance'; no account was created, so that offer was not tried; credential-free"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),c1e,zNr=E({"src/lib/providers/catalog/subq.json"(){c1e={$schema:"./provider-catalog.schema.json",id:"subq",displayName:"SubQ",aliases:["subquadratic","subq-snap"],inferenceKinds:["decide"],wire:{baseURL:"https://api.subq.ai"},models:{default:"subq-snap-preview",topModels:["subq-snap-preview"],catalog:{"subq-snap-preview":{contextWindow:393216,maxOutputTokens:1,vision:!1,status:"preview",description:"Recommended - SubQ Snap Preview, decision model for boolean, choice and score questions"}}},decisionLimits:{maxStateTokens:376e3,advisory:!0},decide:{dialect:"system-one",order:4,baseURLNormalize:["strip-trailing-slash"],endpoint:"{baseURL}/v1/systemone",model:{placement:"body"},errors:{rules:[{status:401,kind:"authentication"},{status:[402,403,422],kind:"invalid_request"},{status:429,kind:"rate_limit"},{status:503,kind:"overloaded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"detail.message"},{path:"detail"}]}},setup:{url:"https://console.subq.ai",apiKeyFormat:null,billingPolicy:"no-free-tier",description:"API key from the SubQ console",instructions:["1. Sign up at https://console.subq.ai and create an API key (the console shows it once)","2. Set {apiKeyEnvVar} in your .env file","3. A request made with no credits left returns HTTP 402"]},evidence:{rosterVerified:{date:"2026-10-13",method:"Checked by the marketing session, not in this change: GET https://api.subq.ai/v1/models without a key listed subq-snap-preview, and docs.subq.ai/using-the-api/models was read the same day. No request was made to SubQ in this change"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1986"}}}}),u1e,GNr=E({"src/lib/providers/catalog/synthetic.json"(){u1e={$schema:"./provider-catalog.schema.json",id:"synthetic",displayName:"Synthetic",aliases:[],tier:2,wire:{baseURL:"https://api.synthetic.new/openai/v1"},models:{default:"syn:large:text",fallbacks:["syn:small:text","syn:large:vision","syn:small:vision","hf:zai-org/GLM-5.3-Flash","hf:openai/gpt-oss-120b","hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","hf:deepseek-ai/DeepSeek-V4.1-Flash","hf:moonshotai/Kimi-K3","hf:Qwen/Qwen3.8-27B","hf:zai-org/GLM-4.7-Flash"],defaultContextWindow:524288,defaultMaxOutputTokens:65536,catalog:{"syn:large:text":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:.6,output:1.2,cachedInput:.03},vision:!0,status:"production",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) \u2014 see that catalog entry. Not itself capability-probed with a live key; this is a roster+docs verified entry (see evidence.liveMatrix: null).'},"syn:small:text":{contextWindow:196608,maxOutputTokens:65536,pricingPerMTok:{input:.1,output:.5,cachedInput:.02},vision:!1,status:"production",description:`Synthetic's "small:text" convenience alias for zai-org/GLM-4.7-Flash \u2014 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.`},"syn:large:vision":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:3,output:15,cachedInput:.45},vision:!0,status:"production",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 \u2014 the most expensive model in this roster. Also reachable via hf:moonshotai/Kimi-K3 (same model). Roster+docs verified only; no live key probe.`},"syn:small:vision":{contextWindow:262144,maxOutputTokens:65536,pricingPerMTok:{input:.45,output:2.2,cachedInput:.09},vision:!0,status:"production",description:`Synthetic's "small:vision" convenience alias for Qwen/Qwen3.8-27B \u2014 "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.`},"hf:zai-org/GLM-5.3-Flash":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:.15,output:.5,cachedInput:.04},vision:!0,status:"production",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 \u2014 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.'},"hf:openai/gpt-oss-120b":{contextWindow:131072,maxOutputTokens:65536,pricingPerMTok:{input:.1,output:.1,cachedInput:.02},vision:!1,status:"production",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.`},"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{contextWindow:262144,maxOutputTokens:65536,pricingPerMTok:{input:.3,output:1,cachedInput:.06},vision:!1,status:"production",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.`},"hf:deepseek-ai/DeepSeek-V4.1-Flash":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:.6,output:1.2,cachedInput:.03},vision:!0,status:"production",description:"Underlying weights id for the model also reachable via the syn:large:text convenience alias \u2014 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."},"hf:moonshotai/Kimi-K3":{contextWindow:524288,maxOutputTokens:65536,pricingPerMTok:{input:3,output:15,cachedInput:.45},vision:!0,status:"production",description:"Underlying weights id for the model also reachable via the syn:large:vision convenience alias \u2014 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."},"hf:Qwen/Qwen3.8-27B":{contextWindow:262144,maxOutputTokens:65536,pricingPerMTok:{input:.45,output:2.2,cachedInput:.09},vision:!0,status:"production",description:"Underlying weights id for the model also reachable via the syn:small:vision convenience alias \u2014 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."},"hf:zai-org/GLM-4.7-Flash":{contextWindow:196608,maxOutputTokens:65536,pricingPerMTok:{input:.1,output:.5,cachedInput:.02},vision:!1,status:"production",description:"Underlying weights id for the model also reachable via the syn:small:text convenience alias \u2014 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."}},topModels:["syn:large:text","syn:small:text","syn:large:vision","syn:small:vision","hf:zai-org/GLM-5.3-Flash"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[],setup:{url:"https://synthetic.new",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://synthetic.new and choose Sign up (or Log in if you already have an account)","2. Subscribe to a Pack ($1/day or $30/month, 500 requests/5hr per the pricing page) or set up enterprise usage-based billing \u2014 Synthetic has no free tier or keyless trial","3. Generate an API key from your account dashboard","4. Set {apiKeyEnvVar} in your .env file"],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."},evidence:{rosterVerified:{date:"2026-09-28",method:"unauthenticated GET https://api.synthetic.new/openai/v1/models \u2014 11 models; credential-free, no key used",status:200},billingProbe:{date:"2026-09-28",method:"unauthenticated GET https://synthetic.new/pricing \u2014 no free tier; $1/day or $30/month subscription pack (500 req/5hr), or enterprise usage-based pricing; credential-free, no key used",status:200},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1848"}}}}),d1e,qNr=E({"src/lib/providers/catalog/telnyx.json"(){d1e={$schema:"./provider-catalog.schema.json",id:"telnyx",displayName:"Telnyx",aliases:[],tier:2,wire:{baseURL:"https://api.telnyx.com/v2/ai/openai"},models:{default:"zai-org/GLM-5.3-Flash",fallbacks:["zai-org/GLM-5.3","deepseek-ai/DeepSeek-V4.1-Flash","moonshotai/Kimi-K3","moonshotai/Kimi-K2.6","zai-org/GLM-5.2","MiniMaxAI/MiniMax-M3-MXFP8","deepseek-ai/DeepSeek-V4-Flash-0731","Qwen/Qwen3.8-27B"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{"zai-org/GLM-5.3-Flash":{contextWindow:1e6,pricingPerMTok:{input:.135,output:.45,cachedInput:.027},vision:!1,status:"production",description:`NeuroLink default. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 320B, Context Length 1M and Best For "Efficient multimodal coding and agentic workflows", tagged "(Recommended)". The Inference API Quickstart (https://developers.telnyx.com/docs/inference/getting-started) uses it in its first chat-completions example with base_url https://api.telnyx.com/v2/ai/openai; the OpenAI Migration, Function Calling, Streaming and Parallel Calls and JSON Mode pages use it in their examples, and the Function Calling page (https://developers.telnyx.com/docs/inference/functions) says it "is especially good at calling functions". The Quickstart's note says reasoning models such as this one return their chain-of-thought in a separate reasoning_content field. contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "GLM-5.3 Flash \u2014 Fast, efficient inference" on https://telnyx.com/pricing/inference-api: $0.135 input, $0.027 cached input, $0.45 output per 1M tokens. vision is a placeholder (see setup.description).`},"zai-org/GLM-5.3":{contextWindow:1e6,pricingPerMTok:{input:1.25,output:4,cachedInput:.24},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 753.9B, Context Length 1M and Best For "Complex coding and long-horizon agent tasks". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "GLM-5.3 \u2014 Flagship frontier intelligence" on https://telnyx.com/pricing/inference-api: $1.25 input, $0.24 cached input, $4 output per 1M tokens. vision is a placeholder (see setup.description).`},"deepseek-ai/DeepSeek-V4.1-Flash":{contextWindow:1e6,pricingPerMTok:{input:.3,output:1.2,cachedInput:.006},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 552B backbone, Context Length 1M and Best For "Low-latency multimodal inference". The Service tiers page (https://developers.telnyx.com/docs/inference/service-tiers) uses this id in its Flex request example. contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "DeepSeek V4.1 Flash \u2014 Low-latency multimodal inference" on https://telnyx.com/pricing/inference-api: $0.30 input, $0.006 cached input, $1.20 output per 1M tokens. vision is a placeholder (see setup.description).`},"moonshotai/Kimi-K3":{contextWindow:1e6,pricingPerMTok:{input:2.7,output:13.5,cachedInput:.27},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 2.8T, Context Length 1M and Best For "State-of-the-art open-weight intelligence for coding, reasoning, and multimodal work". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "Kimi K3 \u2014 Multimodal intelligence, 1M context" on https://telnyx.com/pricing/inference-api: $2.70 input, $0.27 cached input, $13.50 output per 1M tokens. vision is a placeholder (see setup.description).`},"moonshotai/Kimi-K2.6":{contextWindow:256e3,pricingPerMTok:{input:.665,output:4,cachedInput:.08},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 1.0T, Context Length 256K, Best For "Voice AI" and, in its Voice AI column, "Verified \u2014 default". The Get available models reference (https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) uses this id as its example. contextWindow 256,000 is NeuroLink's decimal reading of the label 256K. Pricing row "Kimi K2.6 \u2014 Highest intelligence, voice AI" on https://telnyx.com/pricing/inference-api: $0.665 input, $0.08 cached input, $4 output per 1M tokens. vision is a placeholder (see setup.description).`},"zai-org/GLM-5.2":{contextWindow:1e6,pricingPerMTok:{input:1,output:4,cachedInput:.2},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 753.9B, Context Length 1M, Best For "Coding, reasoning, 1M context window" and, in its Voice AI column, "Verified". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "GLM-5.2 \u2014 Next-gen efficient reasoning" on https://telnyx.com/pricing/inference-api: $1 input, $0.20 cached input, $4 output per 1M tokens. vision is a placeholder (see setup.description).`},"MiniMaxAI/MiniMax-M3-MXFP8":{contextWindow:1e6,pricingPerMTok:{input:.27,output:1.1,cachedInput:.08},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 428B, Context Length 1M and Best For "Cheapest while maintaining high intelligence". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. Pricing row "MiniMax-M3 \u2014 Cheapest while maintaining high intelligence" on https://telnyx.com/pricing/inference-api (named without the -MXFP8 suffix; its text is the same as this id's Best For cell): $0.27 input, $0.08 cached input, $1.10 output per 1M tokens. vision is a placeholder (see setup.description).`},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:1e6,vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 304B, Context Length 1M and Best For "Advanced coding, tool use, and long-horizon agentic workflows". contextWindow 1,000,000 is NeuroLink's decimal reading of the label 1M. pricingPerMTok is not set. vision is a placeholder (see setup.description).`},"Qwen/Qwen3.8-27B":{contextWindow:256e3,pricingPerMTok:{input:.4,output:3,cachedInput:.05},vision:!1,status:"production",description:`Fallback. The models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) lists this id with Parameters 27B, Context Length 256K, Best For "Multimodal coding and visual understanding across documents, diagrams, and video" and, in its Voice AI column, "Not supported". contextWindow 256,000 is NeuroLink's decimal reading of the label 256K. Pricing row "Qwen 3.8 27B \u2014 Lightweight open-weight reasoning" on https://telnyx.com/pricing/inference-api: $0.40 input, $0.05 cached input, $3 output per 1M tokens. vision is a placeholder (see setup.description).`}},topModels:["zai-org/GLM-5.3-Flash","zai-org/GLM-5.3","deepseek-ai/DeepSeek-V4.1-Flash","moonshotai/Kimi-K3","moonshotai/Kimi-K2.6","zai-org/GLM-5.2","MiniMaxAI/MiniMax-M3-MXFP8","deepseek-ai/DeepSeek-V4-Flash-0731","Qwen/Qwen3.8-27B"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Telnyx returned HTTP 401. Check {apiKeyEnvVar}. Create a key: {setupUrl}"}],setup:{url:"https://portal.telnyx.com/#/app/auth/v2",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://telnyx.com/sign-up and create a Telnyx account \u2014 the Inference API Quickstart (https://developers.telnyx.com/docs/inference/getting-started) lists a "Telnyx account" and an "API Key" under Prerequisites',"2. Create an API key at https://portal.telnyx.com/#/app/auth/v2, the link the Quickstart gives for the API Key","3. Authentication is HTTP Bearer: the Service tiers page (https://developers.telnyx.com/docs/inference/service-tiers) shows a curl request to https://api.telnyx.com/v2/ai/openai/models with the header Authorization: Bearer $TELNYX_API_KEY",'4. Billing as the vendor states it: the Inference pricing page (https://telnyx.com/pricing/inference-api) shows a plan named PAY AS YOU GO described as "Standard rates. Card on file. Automatic tier discounts as usage crosses thresholds, no contract needed.", and the docs pricing page (https://developers.telnyx.com/docs/inference/models/pricing) says "Pay-per-token. No minimums, no commitments."',"5. Set {apiKeyEnvVar} in your .env file (the docs' examples read TELNYX_API_KEY)"],description:`Docs-verified only: the vendor's GET https://api.telnyx.com/v2/ai/openai/models needs a key (it answers HTTP 401 without one), so the nine model ids come from the models page (https://developers.telnyx.com/docs/inference/models, retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.telnyx.com/v2/ai/openai: the Quickstart (https://developers.telnyx.com/docs/inference/getting-started) says "The Inference API is OpenAI-compatible." and shows the OpenAI Python SDK with base_url "https://api.telnyx.com/v2/ai/openai"; the Chat Completions reference (https://developers.telnyx.com/api-reference/openai-chat/create-a-chat-completion-openai-compatible) documents POST /ai/openai/chat/completions under the server https://api.telnyx.com/v2. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 with header www-authenticate: Bearer resource_metadata="https://api.telnyx.com/.well-known/oauth-protected-resource" and a JSON body whose first errors entry has code "10009", title "Authentication failed" and detail "Could not find any usable credentials in the request."; /chat/completions answered HTTP 404 with code "10005" and title "Resource not found". No POST request was sent. errorRules holds one rule, for status 401. pricingPerMTok is read from the second of the three chat-completions tables on https://telnyx.com/pricing/inference-api (the page's selector lists Flex, Default and Priority in that order; the docs pricing page, https://developers.telnyx.com/docs/inference/models/pricing, says omitting service_tier uses default). The pricing rows are named by display name, and NeuroLink matched each row to a models-page id; the row "DeepSeek V4 Flash \u2014 Ultra-fast, cost-efficient inference" is not matched to a models-page id, so deepseek-ai/DeepSeek-V4-Flash-0731 has no pricingPerMTok. Each model's contextWindow is NeuroLink's decimal reading of the models page's Context Length label (1M or 256K). models.defaultContextWindow (128000) is a placeholder the vendor does not publish, for model ids outside models.catalog. models.defaultMaxOutputTokens (8192) equals the max_tokens default the Chat Completions reference states; it is a placeholder, not a per-model limit. Each model's vision field holds false, a placeholder for a boolean the catalog schema requires; it is not a vendor statement. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. capabilities.tools is true because the Function Calling page (https://developers.telnyx.com/docs/inference/functions) says "While we recommend you start with this model, every model in our API supports the tools interface." capabilities.toolsWithStreaming is true because the Streaming and Parallel Calls page (https://developers.telnyx.com/docs/inference/streaming-functions) shows a chat completion with tools and stream=True on zai-org/GLM-5.3-Flash. capabilities.structuredOutput is true because the JSON Mode page (https://developers.telnyx.com/docs/inference/json-mode) documents response_format with type json_schema and type json_object and the Chat Completions reference lists json_object and json_schema. These capabilities were not exercised: no key was available. capabilities.structuredOutputWithTools is false because no request combining tools and a schema was sent. capabilities.embeddings is false because NeuroLink's generic catalog provider does not implement embed(); the models page lists three embedding models on POST /v2/ai/openai/embeddings. capabilities.thinking is false because the entry sets no reasoning request parameter, although the Chat Completions reference documents reasoning_effort. billingPolicy holds the schema value no-free-tier because the catalog schema has no unknown value; it is not a vendor statement of signup terms. apiKeyFormat is null so NeuroLink's key-format check is not applied.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.telnyx.com/v2/ai/openai/models answers 401 without a key, so model ids are taken from https://developers.telnyx.com/docs/inference/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"10009",method:'unauthenticated GET https://api.telnyx.com/v2/ai/openai/models with no credentials \u2014 HTTP 401, header www-authenticate: Bearer resource_metadata="https://api.telnyx.com/.well-known/oauth-protected-resource", JSON body errors[0] code "10009", title "Authentication failed", detail "Could not find any usable credentials in the request."; the same day an unauthenticated GET https://api.telnyx.com/v2/ai/openai/chat/completions answered HTTP 404 with JSON body errors[0] code "10005", title "Resource not found"; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:'public pages https://telnyx.com/pricing/inference-api (PAY AS YOU GO plan: "Standard rates. Card on file. Automatic tier discounts as usage crosses thresholds, no contract needed.") and https://developers.telnyx.com/docs/inference/models/pricing ("Pay-per-token. No minimums, no commitments."); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),p1e,jNr=E({"src/lib/providers/catalog/thinking-machines.json"(){p1e={$schema:"./provider-catalog.schema.json",id:"thinking-machines",displayName:"Thinking Machines",aliases:["tinker"],tier:2,wire:{baseURL:"https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1",apiKeyFallbackEnvVars:["TINKER_API_KEY"]},models:{default:"moonshotai/Kimi-K2.6",fallbacks:["Qwen/Qwen3.8-27B","openai/gpt-oss-120b","Qwen/Qwen3-8B"],defaultContextWindow:32768,defaultMaxOutputTokens:8192,catalog:{"moonshotai/Kimi-K2.6":{contextWindow:32768,pricingPerMTok:{input:2.205,output:5.49,cachedInput:.441},vision:!1,status:"preview",description:`NeuroLink default. The OpenCode tutorial (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/, retrieved 2026-09-29), section "Using a base model (no fine-tuning)", says "You can also point at a base model on Tinker's sampler:" and shows a models entry keyed by this id with "name": "Kimi K2.6" and "limit": { "context": 32768, "output": 8192 }. The tutorial's Step 2 provider config sets options.baseURL to https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Kimi-K2.6: Context 32K, Size 1T, Active 32B, Arch MoE, Type "Hybrid + Vision", Tinker ID moonshotai/Kimi-K2.6, Prefill $2.205 ($0.441 cached), Sample $5.49 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Kimi-K2.5 and Kimi-K2-Thinking. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.8-27B":{contextWindow:65536,pricingPerMTok:{input:1.86,output:5.595,cachedInput:.372},vision:!1,status:"preview",description:`Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.8-27B: Context 64K, Size 27B, Active 27B, Arch Dense, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.8-27B, Prefill $1.86 ($0.372 cached), Sample $5.595 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3.6-27B. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.6-35B-A3B":{contextWindow:65536,pricingPerMTok:{input:.54,output:1.335,cachedInput:.108},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.6-35B-A3B: Context 64K, Size 35B, Active 3B, Arch MoE, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.6-35B-A3B, Prefill $0.54 ($0.108 cached), Sample $1.335 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3.5-35B-A3B and Qwen3-30B-A3B. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.5-397B-A17B":{contextWindow:65536,pricingPerMTok:{input:3,output:7.5,cachedInput:.6},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-397B-A17B: Context 64K, Size 397B, Active 17B, Arch MoE, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.5-397B-A17B, Prefill $3.00 ($0.60 cached), Sample $7.50 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3-235B-A22B-Instruct-2507 and Qwen3-VL-235B-A22B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.5-9B":{contextWindow:65536,pricingPerMTok:{input:.66,output:1.995,cachedInput:.132},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-9B: Context 64K, Size 9B, Active 9B, Arch Dense, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.5-9B, Prefill $0.66 ($0.132 cached), Sample $1.995 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Llama-3.1-8B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3.5-4B":{contextWindow:65536,pricingPerMTok:{input:.33,output:1.005,cachedInput:.066},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-4B: Context 64K, Size 4B, Active 4B, Arch Dense, Type "Hybrid + Vision", Tinker ID Qwen/Qwen3.5-4B, Prefill $0.33 ($0.066 cached), Sample $1.005 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." It says Vision models are "Vision-language models that accept images alongside text." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under "Recommended replacement" for Qwen3-4B-Instruct-2507. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"Qwen/Qwen3-8B":{contextWindow:32768,pricingPerMTok:{input:.195,output:.6,cachedInput:.039},vision:!1,status:"preview",description:`Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3-8B: Context 32K, Size 8B, Active 8B, Arch Dense, Type "Hybrid", Tinker ID Qwen/Qwen3-8B, Prefill $0.195 ($0.039 cached), Sample $0.60 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." The Anthropic-Compatible API page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/anthropic/), which documents a separate endpoint, says "another base model name (for example Qwen/Qwen3-8B)". contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"openai/gpt-oss-120b":{contextWindow:32768,pricingPerMTok:{input:.33,output:.84,cachedInput:.066},vision:!1,status:"preview",description:`Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GPT-OSS-120B: Context 32K, Size 117B, Active 5B, Arch MoE, Type "Reasoning", Tinker ID openai/gpt-oss-120b, Prefill $0.33 ($0.066 cached), Sample $0.84 per million tokens. The page's Model Types section says Reasoning models "Always produce chain-of-thought before their answer." contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"openai/gpt-oss-20b":{contextWindow:32768,pricingPerMTok:{input:.18,output:.45,cachedInput:.036},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GPT-OSS-20B: Context 32K, Size 21B, Active 3.6B, Arch MoE, Type "Reasoning", Tinker ID openai/gpt-oss-20b, Prefill $0.18 ($0.036 cached), Sample $0.45 per million tokens. The page's Model Types section says Reasoning models "Always produce chain-of-thought before their answer." contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"deepseek-ai/DeepSeek-V3.1":{contextWindow:32768,pricingPerMTok:{input:1.695,output:4.215,cachedInput:.339},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row DeepSeek-V3.1: Context 32K, Size 671B, Active 37B, Arch MoE, Type "Hybrid", Tinker ID deepseek-ai/DeepSeek-V3.1, Prefill $1.695 ($0.339 cached), Sample $4.215 per million tokens. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"zai-org/GLM-5.3:peft:262144":{contextWindow:262144,pricingPerMTok:{input:4.86,output:12.15,cachedInput:.972},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GLM-5.3 (256K): Context 256K, Size 753B, Active 40B, Arch MoE, Type "Reasoning", Tinker ID zai-org/GLM-5.3:peft:262144, Prefill $4.86 ($0.972 cached), Sample $12.15 per million tokens. The page's Model Types section says Reasoning models "Always produce chain-of-thought before their answer." contextWindow 262144 matches the 256K label and the :peft:262144 suffix in the id. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`},"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16":{contextWindow:65536,pricingPerMTok:{input:.57,output:1.44,cachedInput:.114},vision:!1,status:"preview",description:`Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Nemotron-3-Super-120B-A12B: Context 64K, Size 120B, Active 12B, Arch MoE, Type "Hybrid", Tinker ID nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16, Prefill $0.57 ($0.114 cached), Sample $1.44 per million tokens. The row carries the note "Limited-time 50% discount"; the page shows Prefill $1.14 and Sample $2.88 struck through, and pricingPerMTok holds the current figures. The page's Model Types section says Hybrid models "Run in both thinking and non-thinking modes." The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists Nemotron-3-Super-120B-A12B among the "Recommended replacement" entries for Llama-3.3-70B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title "OpenAI API Compatible Inference (in beta)"; the schema requires a value and it is not a per-model vendor statement.`}},topModels:["moonshotai/Kimi-K2.6","Qwen/Qwen3.8-27B","Qwen/Qwen3.6-35B-A3B","Qwen/Qwen3.5-397B-A17B","Qwen/Qwen3.5-9B","Qwen/Qwen3.5-4B","Qwen/Qwen3-8B","openai/gpt-oss-120b","openai/gpt-oss-20b","deepseek-ai/DeepSeek-V3.1","zai-org/GLM-5.3:peft:262144","nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"]},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Thinking Machines answered HTTP 401. Check {apiKeyEnvVar}. Get a key at {setupUrl}"}],setup:{url:"https://tinker.thinkingmachines.ai/keys",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://tinker.thinkingmachines.ai/keys \u2014 the Quickstart (https://tinker-docs.thinkingmachines.ai/tinker/quickstart/) says "Or create an API key in the Tinker Console and set it as the TINKER_API_KEY environment variable."; an unauthenticated GET of that URL redirects to a page titled "Sign in" (sign-in was not attempted while building this entry)','2. Authentication as the vendor states it: the OpenAI-compatible page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/openai/) says "Authenticate with your Tinker API key, by passing the same key used for Tinker as the API key to the OpenAI client."; its code example reads the key from TINKER_API_KEY','3. Billing as the vendor states it: the Quickstart (https://tinker-docs.thinkingmachines.ai/tinker/quickstart/) says "Set up payment info in Billing, and see Models & Pricing for current training and sampling rates." (the Billing link goes to https://tinker.thinkingmachines.ai/billing/), and the Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/) says "All prices are per million tokens."',"4. Set {apiKeyEnvVar} in your .env file (the vendor's examples read TINKER_API_KEY, which NeuroLink accepts as a fallback)"],description:`Docs-verified only: the vendor's GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401 with the JSON body {"detail":"X-Api-Key token is empty"}), so the twelve model ids come from the Training table on https://tinker-docs.thinkingmachines.ai/tinker/models/ (retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1: the OpenAI-compatible page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/openai/, titled "OpenAI API Compatible Inference (in beta)") says "The new interface exposes an OpenAI-compatible HTTP API.", gives that base URL, says "We support both /completions and /chat/completions endpoints." and says "Currently, OpenAI-compatible inference is meant for testing and internal use with low internal traffic, rather than large, high-throughput, user-facing deployments." The same page says "Use a Tinker sampler weight path as the model name." and shows a sampler weight path that begins with tinker://. moonshotai/Kimi-K2.6 is the catalog id that the OpenCode tutorial (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/) shows as a models entry under the "Using a base model (no fine-tuning)" heading; the other eleven catalog ids are Tinker IDs from the Models & Pricing Training table. A tinker:// path passed as the model is an id outside the catalog. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 (content-type application/json) with the body {"detail":"X-Api-Key token is empty"}; /chat/completions answered HTTP 405 with header allow: POST and the body {"detail":"Method Not Allowed"}; the base URL itself answered HTTP 404 with the body {"detail":"Not Found"}. No POST request was sent. errorRules holds one rule, for the 401 status observed on /models. pricingPerMTok input is the Prefill figure, output is the Sample figure and cachedInput is the cached Prefill figure of each Training-table row; the page's Pricing Terms define Prefill as "Processing input/prompt tokens when sampling" and Sample as "Generating output tokens". models.defaultContextWindow (32768) is the figure in the OpenCode tutorial's Config fields table (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/): "Max input tokens (32768 for most Tinker models)"; models.defaultMaxOutputTokens (8192) is the "output" figure in both example configs of that tutorial, whose Config fields table describes limit.output as "Max output tokens"; the catalog rows do not set maxOutputTokens, so the default applies to them. capabilities.text is true because the page documents /chat/completions; capabilities.streaming is true because the page describes streaming on /chat/completions ("In streaming mode, reasoning_content and content arrive on separate SSE events"); capabilities.thinking is true because the page documents the separate_reasoning flag and the reasoning_effort parameter on /chat/completions ("Not all models support this parameter."). capabilities.tools, toolsWithStreaming, structuredOutput and structuredOutputWithTools are false, meaning not declared by this entry: with tools false the provider's supportsTools() answers false and no tools array is sent, and no POST request exercising these was sent. capabilities.embeddings is false, not declared. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. apiKeyFormat is null so NeuroLink's key-format check is not applied. Verification level: docs-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models answers 401 without a key, so model ids are taken from https://tinker-docs.thinkingmachines.ai/tinker/models/ (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models with no credentials \u2014 HTTP 401, content-type application/json, JSON body {"detail":"X-Api-Key token is empty"}; the body has no code field, so no code is recorded; the same day an unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/chat/completions answered HTTP 405 with header allow: POST and JSON body {"detail":"Method Not Allowed"}; credential-free, no key used, no POST request sent'},billingProbe:{date:"2026-09-29",method:'public page https://tinker-docs.thinkingmachines.ai/tinker/quickstart/ \u2014 Billing section: "Set up payment info in Billing, and see Models & Pricing for current training and sampling rates."; credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),m1e,VNr=E({"src/lib/providers/catalog/tinfoil.json"(){m1e={$schema:"./provider-catalog.schema.json",id:"tinfoil",displayName:"Tinfoil",aliases:[],tier:2,wire:{baseURL:"https://inference.tinfoil.sh/v1"},models:{default:"kimi-k3",fallbacks:["gpt-oss-120b","gemma4-31b","llama3-3-70b"],defaultContextWindow:131072,defaultMaxOutputTokens:4096,catalog:{"kimi-k3":{contextWindow:262144,pricingPerMTok:{input:4,output:20,cachedInput:.8},vision:!0,status:"production",description:'NeuroLink default. Roster description: "Moonshot\'s flagship multimodal MoE model with hybrid attention for long-context reasoning, coding, and agentic workflows". https://docs.tinfoil.sh/guides/tool-calling (Best Practices): "Among the models offered on Tinfoil API, Kimi K3 is recommended for function calling and agentic workflows"; https://docs.tinfoil.sh/tutorials/coding-agents uses the model ID kimi-k3 in its setup examples. Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 262144 (https://docs.tinfoil.sh/models/chat gives the Context value as "256K tokens"), inputTokenPricePer1M 4, outputTokenPricePer1M 20, cachedInputTokenPricePer1M 0.8, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name Kimi K3 among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, high and max for it. Status is production: this roster entry does not set `experimental`.'},"gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.15,output:.6},vision:!1,status:"production",description:'Fallback. Roster description: "Open-weight model designed for powerful reasoning, agentic tasks, and versatile developer use cases". The first inference example on https://docs.tinfoil.sh/quickstart uses this model ID; https://docs.tinfoil.sh/models/chat gives the Best for value as "Production use cases requiring configurable reasoning and tool use". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 131072 (docs Context value "131K tokens"), inputTokenPricePer1M 0.15, outputTokenPricePer1M 0.6, multimodal false, tool_calling true, reasoning true. https://docs.tinfoil.sh/guides/image-processing: "Other models (Llama, GPT-OSS) are text-only and cannot process images.", so vision is false. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, medium and high for it. Status is production: this roster entry does not set `experimental`.'},"gemma4-31b":{contextWindow:262144,pricingPerMTok:{input:.4,output:1},vision:!0,status:"production",description:'Fallback. https://docs.tinfoil.sh/models/chat gives the Strengths value as "Built-in thinking mode, image understanding, native function calling, multilingual support for 35+ languages". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 262144 (docs Context value "256K tokens"), inputTokenPricePer1M 0.4, outputTokenPricePer1M 1, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name Gemma 4 31B among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values none, minimal, low, medium, high, xhigh and max for it. Status is production: this roster entry does not set `experimental`.'},"llama3-3-70b":{contextWindow:131072,pricingPerMTok:{input:1.75,output:2.75},vision:!1,status:"production",description:'Fallback. Roster description: "High-performance multilingual language model optimized for dialogue". https://docs.tinfoil.sh/models/chat gives the Strengths value as "Multilingual, dialogue-optimized, function calling". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions"], context_window 131072 (docs Context value "128K tokens"), inputTokenPricePer1M 1.75, outputTokenPricePer1M 2.75, multimodal false, tool_calling true, reasoning false. https://docs.tinfoil.sh/guides/image-processing: "Other models (Llama, GPT-OSS) are text-only and cannot process images.", so vision is false. https://docs.tinfoil.sh/guides/reasoning states that llama3-3-70b is not a reasoning model. Status is production: this roster entry does not set `experimental`.'},"glm-5-3":{contextWindow:1048576,pricingPerMTok:{input:1.8,output:5.75,cachedInput:.45},vision:!1,status:"production",description:'Catalog entry (not a NeuroLink default or fallback). Roster description: "Z.ai\'s latest flagship for agentic coding and long-horizon tasks, with a 1M-token context window". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 1048576 (https://docs.tinfoil.sh/models/chat gives the Context value as "1M tokens"), inputTokenPricePer1M 1.8, outputTokenPricePer1M 5.75, cachedInputTokenPricePer1M 0.45, multimodal false, tool_calling true, reasoning true, so vision is false. https://docs.tinfoil.sh/models/chat states that reasoning tokens count toward max_tokens for this model and that structured outputs and strict tool calls at the default effort need a generous max_tokens (around 20K) or a lower effort. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, high and max for it. Status is production: this roster entry does not set `experimental`.'},"glm-5-3-flash":{contextWindow:1048576,pricingPerMTok:{input:.4,output:1.25,cachedInput:.1},vision:!0,status:"preview",description:`Catalog entry (not a NeuroLink default or fallback). Roster description: "Z.AI's fast multimodal MoE model with a 1M-token context window, image input, reasoning, and tool calling". Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], experimental true (status is therefore preview), context_window 1048576 (https://docs.tinfoil.sh/models/chat gives the Context value as "1M tokens"), inputTokenPricePer1M 0.4, outputTokenPricePer1M 1.25, cachedInputTokenPricePer1M 0.1, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name GLM-5.3 Flash among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/models/chat states that reasoning tokens count toward max_tokens for this model and that structured outputs and strict tool calls at the default effort need a generous max_tokens (around 20K) or a lower effort. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values low, high and max for it.`},"deepseek-v4-1-flash":{contextWindow:1048576,pricingPerMTok:{input:.65,output:1.45,cachedInput:.13},vision:!0,status:"preview",description:`Catalog entry (not a NeuroLink default or fallback). Roster description: "DeepSeek's efficient MoE model with a 1M-token context window, image input, Engram memory, built-in speculative decoding, and tool calling". https://docs.tinfoil.sh/models/chat shows a warning on this model: "this model is not yet fully productionized. Capacity and performance may change while we finish rolling it out." (the roster field experimental is true), so status is preview. Unauthenticated GET https://inference.tinfoil.sh/v1/models roster (2026-09-29, 17 models): type chat, endpoints ["/v1/chat/completions","/v1/responses"], context_window 1048576 (docs Context value "1M tokens"), inputTokenPricePer1M 0.65, outputTokenPricePer1M 1.45, cachedInputTokenPricePer1M 0.13, multimodal true, tool_calling true, reasoning true. https://docs.tinfoil.sh/models/vision and https://docs.tinfoil.sh/guides/image-processing name DeepSeek V4.1 Flash among the models that support image inputs, so vision is true. https://docs.tinfoil.sh/guides/reasoning lists the reasoning_effort values none, low, high, xhigh and max for it.`}},topModels:["kimi-k3","gpt-oss-120b","gemma4-31b","llama3-3-70b","glm-5-3","glm-5-3-flash","deepseek-v4-1-flash"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{pattern:"invalid_api_key",class:"authentication",message:"Invalid Tinfoil API key (code invalid_api_key). Check {apiKeyEnvVar}. Get one at {setupUrl}"},{status:402,pattern:"You exceeded your current quota",class:"provider",message:"Tinfoil reported HTTP 402 (insufficient_quota). https://docs.tinfoil.sh/sdk/error-handling lists 402 as the account or organization having no remaining balance or an inactive subscription; billing is managed under Billing in the Tinfoil dashboard (https://docs.tinfoil.sh/get-api-key)"},{pattern:"insufficient_quota|Spend limit reached for this API key|Input token limit reached for this API key|Output token limit reached for this API key",class:"provider",message:"Tinfoil reported a limit on this API key (insufficient_quota). https://docs.tinfoil.sh/sdk/error-handling describes a 429 from a per-key cap as not transient, so retrying will not help"}],setup:{url:"https://dash.tinfoil.sh?tab=api-keys",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:['1. Visit: https://dash.tinfoil.sh?tab=api-keys and sign in or sign up \u2014 https://docs.tinfoil.sh/get-api-key says "Create an account with your email or one of the social connections."','2. On the dashboard Products page, click Activate on the Private Inference card. Per https://docs.tinfoil.sh/get-api-key, if no payment method is on file you are redirected to a checkout page to enter your card details, and "You\u2019re only charged based on usage."','3. The activation dialog creates a "Default API key" and, per the same page, "adds $1 in API credits to your account"; additional keys are created from API Keys in the sidebar',"4. Set {apiKeyEnvVar} in your .env file (the examples on https://docs.tinfoil.sh/quickstart read TINFOIL_API_KEY)",'5. NeuroLink sends requests straight to https://inference.tinfoil.sh/v1. https://docs.tinfoil.sh/sdk/direct-api-access says "but this is not recommended in production" and "Direct access skips the automatic attestation verification our SDKs perform". https://docs.tinfoil.sh/local-proxy/cli documents a local proxy that verifies enclave attestations and serves http://127.0.0.1:3301/v1 for OpenAI-compatible clients (not exercised with NeuroLink)'],description:`OpenAI-compatible endpoint at https://inference.tinfoil.sh/v1 (https://tinfoil.sh: "Our API is OpenAI-compatible, open-source, and fully verifiable."; https://docs.tinfoil.sh/models/chat: "Chat models use the OpenAI chat completions API."), serving seven chat models. The unauthenticated GET https://inference.tinfoil.sh/v1/models on 2026-09-29 returned HTTP 200 with 17 entries; the ten entries whose roster type is not chat (safety, embedding, document, audio, tts, tool) are not in this catalog. An unauthenticated GET https://inference.tinfoil.sh/v1/chat/completions on 2026-09-29 returned HTTP 400 with {"error":{"message":"Invalid request body: EOF.","type":"invalid_request_error","param":null,"code":"invalid_json"}}, so no authentication-failure body was observed and errorRules use the codes and messages documented at https://docs.tinfoil.sh/sdk/error-handling (invalid_api_key, insufficient_quota). models.defaultContextWindow (131072) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish; per-model contextWindow values are the roster's context_window fields.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://inference.tinfoil.sh/v1/models \u2014 17 models; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public page https://docs.tinfoil.sh/get-api-key \u2014 card details are entered at checkout when no payment method is on file, "You\u2019re only charged based on usage.", and the activation dialog "adds $1 in API credits to your account"; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),h1e,HNr=E({"src/lib/providers/catalog/together-ai.json"(){h1e={$schema:"./provider-catalog.schema.json",id:"together-ai",displayName:"Together AI",enumTypeName:"TogetherAIModels",credentialsKey:"together",aliases:["together"],tier:2,wire:{baseURL:"https://api.together.xyz/v1",envOverrides:{apiKey:"TOGETHER_API_KEY",baseURL:"TOGETHER_BASE_URL",model:"TOGETHER_MODEL"}},models:{default:"meta-llama/Llama-3.3-70B-Instruct-Turbo",fallbackModelName:"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",fallbacks:["meta-llama/Llama-3.3-70B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo","mistralai/Mixtral-8x22B-Instruct-v0.1","Qwen/Qwen2.5-72B-Instruct-Turbo","deepseek-ai/DeepSeek-R1","deepseek-ai/DeepSeek-V3"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"meta-llama/Llama-3.3-70B-Instruct-Turbo":{enumMember:"LLAMA_3_3_70B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:.88,output:.88},vision:!1,status:"production",description:"Recommended - Llama 3.3 70B Turbo"},"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{enumMember:"LLAMA_3_1_405B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:3.5,output:3.5},vision:!1,status:"production",description:"Flagship 405B"},"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":{enumMember:"LLAMA_3_1_70B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:.88,output:.88},vision:!1,status:"production",description:"Llama 3.1 70B Instruct Turbo"},"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":{enumMember:"LLAMA_3_1_8B_INSTRUCT_TURBO",contextWindow:128e3,pricingPerMTok:{input:.18,output:.18},vision:!1,status:"production",description:"Llama 3.1 8B Instruct Turbo \u2014 fastest"},"mistralai/Mixtral-8x22B-Instruct-v0.1":{enumMember:"MIXTRAL_8X22B_INSTRUCT",contextWindow:65536,pricingPerMTok:{input:1.2,output:1.2},vision:!1,status:"production",description:"Mistral 8x22B MoE"},"mistralai/Mixtral-8x7B-Instruct-v0.1":{enumMember:"MIXTRAL_8X7B_INSTRUCT",contextWindow:32768,pricingPerMTok:{input:.6,output:.6},vision:!1,status:"production",description:"Mixtral 8x7B Instruct"},"Qwen/Qwen2.5-72B-Instruct-Turbo":{enumMember:"QWEN_2_5_72B_INSTRUCT_TURBO",contextWindow:32768,pricingPerMTok:{input:1.2,output:1.2},vision:!1,status:"production",description:"Qwen 2.5 72B Turbo"},"Qwen/Qwen2.5-Coder-32B-Instruct":{enumMember:"QWEN_2_5_CODER_32B",contextWindow:32768,vision:!1,status:"production",description:"Qwen 2.5 Coder 32B Instruct"},"deepseek-ai/DeepSeek-R1":{enumMember:"DEEPSEEK_R1",contextWindow:64e3,pricingPerMTok:{input:7,output:7},vision:!1,status:"production",description:"DeepSeek R1 reasoning"},"deepseek-ai/DeepSeek-V3":{enumMember:"DEEPSEEK_V3",contextWindow:64e3,pricingPerMTok:{input:1.25,output:1.25},vision:!1,status:"production",description:"DeepSeek V3"},"google/gemma-2-27b-it":{enumMember:"GEMMA_2_27B_IT",contextWindow:8192,vision:!1,status:"production",description:"Google Gemma 2 27B IT"},"microsoft/WizardLM-2-8x22B":{enumMember:"WIZARDLM_2_8X22B",contextWindow:65536,vision:!1,status:"production",description:"WizardLM 2 8x22B"}},topModels:["meta-llama/Llama-3.3-70B-Instruct-Turbo","meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo","Qwen/Qwen2.5-72B-Instruct-Turbo","deepseek-ai/DeepSeek-R1","mistralai/Mixtral-8x22B-Instruct-v0.1"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Invalid API key|Authentication",class:"authentication",message:"Invalid Together AI API key. Get one at https://api.together.xyz/settings/api-keys"}],setup:{url:"https://api.together.xyz/settings/api-keys",apiKeyFormat:null,billingPolicy:"free-with-card",instructions:["1. Visit: https://api.together.xyz/settings/api-keys","2. Sign in to your Together AI account","3. Create a new API key","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-28",method:"transcribed from pre-migration TS catalog"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),f1e,WNr=E({"src/lib/providers/catalog/umans-ai.json"(){f1e={$schema:"./provider-catalog.schema.json",id:"umans-ai",displayName:"Umans AI",aliases:["umans"],tier:2,wire:{baseURL:"https://api.code.umans.ai/v1"},models:{default:"umans-coder",fallbacks:["umans-glm-5.3","umans-deepseek-v4-flash-0731","umans-kimi-k3"],defaultContextWindow:262144,defaultMaxOutputTokens:131072,catalog:{"umans-coder":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:`Default - the vendor's own default model: every curl example on https://app.umans.ai/offers/code/docs names it, the docs' Models table lists it as "Default: we choose the best for you", and the docs' CLI launches it by default. It is a routing alias, not a fixed model: the docs say it "routes to our current pick, which changes as we evaluate models" (GLM-5.3-Flash since September 9, 2026), and https://app.umans.ai/pricing says "Umans Coder is an alias for this model today: same rates, routed automatically" under GLM 5.3 Flash. Read on 2026-09-29: unauthenticated GET https://api.code.umans.ai/v1/models - context_length 1,048,576, pricing 0.15 input / 0.5 output; unauthenticated GET https://api.code.umans.ai/v1/models/info - base_model GLM-5.3-Flash, max_completion_tokens 131,072, supports_vision true, supports_tools true. The $0.03 cache-read rate is the GLM 5.3 Flash rate on the pricing page. Context, price and vision follow whatever model it routes to and can change without a new id.`},"umans-glm-5.3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`Fallback - Z.ai's GLM 5.3. https://app.umans.ai/offers/code/docs lists it as the GLM 5.2 successor on a 1M context at $1.40 / $4.40 per 1M tokens (input / output; $0.26 cached). It always thinks, at max effort by default; reasoning_effort low or high dials it and thinking cannot be turned off. Text-only: /v1/models/info says supports_vision false, and the docs' Cursor setup says "the DeepSeek and GLM ids are text-only on this route". Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 1.4 / 4.4; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 131,072, supports_tools true.`},"umans-deepseek-v4-flash-0731":{contextWindow:1048576,maxOutputTokens:393216,pricingPerMTok:{input:.14,output:.28,cachedInput:.028},vision:!1,status:"production",description:'Fallback - DeepSeek V4 Flash, the 0731 release. https://app.umans.ai/offers/code/docs calls it "The cheapest production model in the lineup ($0.14 / $0.28 per 1M tokens)" and the default for new chats on app.umans.ai; it thinks at low effort by default and the docs say to select high or max on hard tasks. /v1/models/info describes 284B total and 13B active parameters and four reasoning modes: none, low (default), high, max. Text-only: /v1/models/info says supports_vision false. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 0.14 / 0.28; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 393,216, supports_tools true. The $0.028 cache-read rate is stated on the docs and pricing pages.'},"umans-kimi-k3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:3,output:15,cachedInput:.3},vision:!0,status:"production",description:"Fallback - Moonshot's Kimi K3. https://app.umans.ai/offers/code/docs lists it with a 1M context, native vision and max-effort reasoning by default, and says it honors reasoning_effort none, low, high or max; its sampling fields (temperature, top_p) are fixed server-side and the gateway removes them rather than failing the request. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 3.0 / 15.0; GET https://api.code.umans.ai/v1/models/info: base_model Kimi-K3, max_completion_tokens 131,072, supports_vision true, supports_tools true. The $0.30 cache-read rate is stated on https://app.umans.ai/pricing."},"umans-glm-5.3-flash":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:`Vision model for tests - Z.ai's GLM-5.3-Flash. https://app.umans.ai/offers/code/docs describes "a 320B mixture-of-experts (18B active per token) with native image and video understanding" at $0.15 / $0.50 per 1M tokens; it always thinks at max effort by default, reasoning_effort low or high dials it and thinking cannot be turned off. The pricing page says umans-coder is an alias for it today. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 0.15 / 0.5; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 131,072, supports_vision true, supports_tools true. The $0.03 cache-read rate is stated on https://app.umans.ai/pricing. It is models.visionModel so vision tests use a fixed id rather than the routed alias.`},"umans-deepseek-v4.1-flash":{contextWindow:1048576,maxOutputTokens:393216,pricingPerMTok:{input:.15,output:.6,cachedInput:.028},vision:!0,status:"production",description:'DeepSeek V4.1 Flash, listed in the Models table of https://app.umans.ai/offers/code/docs, which describes "a 552B MoE (8B active on prefill, 16B on decode) with native image understanding ($0.15 / $0.60 per 1M tokens)", names it the DeepSeek V4 Pro successor, and lists four reasoning modes - non-think, think low, think high (the default), think max - with a numeric 1-100 budget also accepted. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 1,048,576, pricing 0.15 / 0.6; GET https://api.code.umans.ai/v1/models/info: production_start_date 2026-09-18, max_completion_tokens 393,216, supports_vision true, supports_tools true. The $0.028 cache-read rate is stated on https://app.umans.ai/pricing.'},"umans-flash":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.15,output:1,cachedInput:.05},vision:!0,status:"production",description:`Qwen3.6-35B-A3B-FP8, a light model rather than a coder. https://app.umans.ai/offers/code/docs lists it in its Models table as "High-interactivity light model; complement to umans-coder" with a 256K context, says to use it for the roles around umans-coder "not as a standalone coder", targets 200+ tokens per second, and its Claude Code table lists Text, Vision, WebSearch. Unauthenticated GET https://api.code.umans.ai/v1/models (2026-09-29): context_length 262,144, pricing 0.15 / 1.0; GET https://api.code.umans.ai/v1/models/info: max_completion_tokens 262,144, supports_vision true, supports_tools true. The $0.05 cache-read rate is stated on https://app.umans.ai/offers/code/docs/orgs and the pricing page. The docs' Limits section counts it as half a request against the wallet tier's request window. The roster's umans-qwen3.6-35b-a3b id is described by /v1/models/info as a technical alias for this model and is not listed separately.`}},topModels:["umans-coder","umans-glm-5.3","umans-deepseek-v4-flash-0731","umans-kimi-k3","umans-glm-5.3-flash","umans-deepseek-v4.1-flash","umans-flash"],visionModel:"umans-glm-5.3-flash"},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:"Umans AI rejected the request with HTTP 401. Check {apiKeyEnvVar}; the docs say a 401 means the key may be expired or revoked. Create a new key at {setupUrl}"},{status:429,class:"rate-limit",message:"Umans AI rate limit (HTTP 429): the wallet tier's burst limit was exceeded. The docs describe 429s as retryable - wait for the rolling five-hour window to free capacity, or top up to grow the tier (https://app.umans.ai/offers/code/docs)"},{pattern:"unknown model",class:"invalid-model",message:"Umans AI model '{model}' is not a valid id (HTTP 400 Unknown model). Ids start with umans-; the error body lists the valid ids, or pick one from https://api.code.umans.ai/v1/models"}],setup:{url:"https://app.umans.ai/billing",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://app.umans.ai/register and create an account with Google or an email and password (already have one? sign in at https://app.umans.ai/login). Organizations are provisioned by Umans: email contact@umans.ai (https://app.umans.ai/offers/code/docs/orgs)","2. Open https://app.umans.ai/billing, go to Dashboard -> API Keys and generate a key; the docs say it is shown only once, so copy it immediately",'3. Prepaid wallet, no free tier stated: top up before calling the API - the docs say a wallet with no credit (no paid top-up and no active promo grant) "does not serve until it has some", and promo credit serves only while it lasts (https://app.umans.ai/offers/code/docs)',"4. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.code.umans.ai/v1 (https://app.umans.ai/offers/code/docs: "Umans Code also implements the OpenAI Chat Completions API"), pay-per-token from a prepaid wallet, serving open-weight coding models from Z.ai, DeepSeek, Moonshot and Qwen. The gateway's 401 body was observed only on GET /v1/usage ({"error":{"type":"authentication_error","message":"Missing API key"}}); GET /v1/chat/completions answers 405 and was never POSTed, so errorRules match the documented status codes (401, 429) and the documented "Unknown model" text rather than a probed chat-completions body. models.defaultContextWindow (262144) and models.defaultMaxOutputTokens (131072) are schema-required placeholders, not vendor-stated caps: they are the smallest context and max-output values among the seven catalog models, used only for an id outside the catalog, and no Umans page states a general cap. apiKeyFormat is null because the docs conflict: the Any BYOK Tool section says the key "starts with sk-" and the examples write sk-your-umans-api-key, while the wallet-summary example shows a key prefix of umans_7fKq and the homepage .env example shows umans_.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.code.umans.ai/v1/models \u2014 10 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,code:"authentication_error",method:'unauthenticated GET https://api.code.umans.ai/v1/usage (a documented bearer-key route) \u2014 body {"error":{"type":"authentication_error","message":"Missing API key"}}; the OpenAI route GET /v1/chat/completions returned 405 Method Not Allowed and no POST was sent; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public pages https://app.umans.ai/offers/code/docs ("A wallet with no credit at all \u2014 no paid top-up, no active promo grant \u2014 does not serve until it has some") and https://app.umans.ai/pricing ("Pay per token. Top up, create a key, and go."); no free tier stated; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),g1e,KNr=E({"src/lib/providers/catalog/upstage.json"(){g1e={$schema:"./provider-catalog.schema.json",id:"upstage",displayName:"Upstage",aliases:["solar"],tier:2,wire:{baseURL:"https://api.upstage.ai/v1"},models:{default:"solar-pro4",fallbacks:["solar-pro3","solar-mini"],defaultContextWindow:524288,defaultMaxOutputTokens:131072,catalog:{"solar-pro4":{contextWindow:524288,maxOutputTokens:131072,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:"Recommended - Solar Pro 4; 512K context, up to 128K output tokens; agentic flagship for tool calling, terminal tasks and long-document reasoning"},"solar-pro4-260806":{contextWindow:524288,maxOutputTokens:131072,pricingPerMTok:{input:.3,output:1.2,cachedInput:.06},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Pro 4 (2026-08-06 build) \u2014 the id the solar-pro4 alias currently resolves to"},"solar-pro3":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Solar Pro 3; drop-in replacement for Solar Pro 2 with the same API interface, throughput and latency"},"solar-pro3-260323":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Pro 3 (2026-03-23 build)"},"solar-pro2":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Solar Pro 2; 31B-parameter model with an optional Reasoning Mode"},"solar-pro2-251215":{pricingPerMTok:{input:.15,output:.6,cachedInput:.015},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Pro 2 (2025-12-15 build)"},"solar-mini":{pricingPerMTok:{input:.15,output:.15},vision:!1,status:"production",description:"Solar Mini; small, fast model for lightweight reasoning and cost-efficient tasks"},"solar-mini-250422":{pricingPerMTok:{input:.15,output:.15},vision:!1,status:"production",description:"Pinned dated snapshot of Solar Mini (2025-04-22 build)"},"syn-pro":{vision:!1,status:"production",description:"Syn Pro; Upstage's Japan-focused LLM"},"syn-pro-251021":{vision:!1,status:"production",description:"Pinned dated snapshot of Syn Pro (2025-10-21 build)"}},topModels:["solar-pro4","solar-pro3","solar-pro2","solar-mini","syn-pro"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key|API key is invalid",class:"authentication",message:"Invalid Upstage API key. Check {apiKeyEnvVar}. Get one at https://console.upstage.ai/api-keys"},{pattern:"requested model is invalid or no longer supported",class:"invalid-model",message:"Upstage model '{model}' is invalid or no longer supported. Pick a current model from https://console.upstage.ai/docs/models."}],setup:{url:"https://console.upstage.ai/api-keys",apiKeyFormat:"^up_[A-Za-z0-9]+$",billingPolicy:"free-tier",instructions:["1. Visit: https://console.upstage.ai (Google OAuth works)","2. New accounts get a $10 sign-up credit \u2014 no payment method required","3. Create an API key under API Keys","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-09-03",method:"authenticated GET /v1/models",status:200},authProbe:{date:"2026-09-03",status:401,code:"invalid_api_key"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1625"}}}}),y1e,JNr=E({"src/lib/providers/catalog/venice-ai.json"(){y1e={$schema:"./provider-catalog.schema.json",id:"venice-ai",displayName:"Venice AI",aliases:["venice"],tier:2,wire:{baseURL:"https://api.venice.ai/api/v1",apiKeyFallbackEnvVars:["VENICE_API_KEY"]},models:{default:"zai-org-glm-5-2",fallbacks:["zai-org-glm-5","zai-org-glm-5-1","deepseek-v4-pro-0813"],defaultContextWindow:128e3,defaultMaxOutputTokens:4096,catalog:{"zai-org-glm-5-2":{contextWindow:1e6,maxOutputTokens:131072,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink default. The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the traits "default" and "function_calling_default" on this model, and an unauthenticated GET https://api.venice.ai/api/v1/models/traits returned "default":"zai-org-glm-5-2" on the same day; https://docs.venice.ai/overview/deprecations lists the default trait as currently routing to this id. Roster description: "GLM-5.2 is the next-generation large language model developed by Zhiyuan AI". Roster figures: context_length 1,000,000, maxCompletionTokens 131,072, $1.4/$4.4 per MTok input/output, $0.26 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Code".'},"zai-org-glm-5":{contextWindow:198e3,maxOutputTokens:32e3,pricingPerMTok:{input:1,output:3.2,cachedInput:.2},vision:!1,status:"production",description:'Fallback. The model in the request examples of https://docs.venice.ai/getting-started/quick-start, which lists it with the text "Default model for most use cases", and of https://docs.venice.ai/guides/features/function-calling. Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "GLM-5 is the next-generation large language model developed by Zhiyuan AI". Roster figures: context_length 198,000, maxCompletionTokens 32,000, $1/$3.2 per MTok input/output, $0.2 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Code".'},"zai-org-glm-5-1":{contextWindow:2e5,maxOutputTokens:8e4,pricingPerMTok:{input:1.54,output:4.84,cachedInput:.286},vision:!1,status:"production",description:'Fallback. The model in the request examples of https://docs.venice.ai/guides/features/reasoning-models. Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "GLM-5.1 is the next-generation large language model developed by Zhiyuan AI". Roster figures: context_length 200,000, maxCompletionTokens 80,000, $1.54/$4.84 per MTok input/output, $0.286 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning". The pricing page shows the cache-read price rounded to two decimals.'},"deepseek-v4-pro-0813":{contextWindow:1e6,maxOutputTokens:32768,pricingPerMTok:{input:1.65,output:4.95,cachedInput:.165},vision:!1,status:"production",description:'Fallback. The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "default_code" on this model, and https://docs.venice.ai/overview/deprecations lists the default_code trait as currently routing to this id. Roster description: "DeepSeek V4 Pro is a 1.6T-parameter Mixture-of-Experts model with 49B active parameters and a 1M-token context window." Roster figures: context_length 1,000,000, maxCompletionTokens 32,768, $1.65/$4.95 per MTok input/output, $0.165 cache read, supportsVision false, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Code". The pricing page shows the cache-read price rounded to two decimals.'},"kimi-k3":{contextWindow:1e6,maxOutputTokens:131072,pricingPerMTok:{input:3.75,output:18.75,cachedInput:.375},vision:!0,status:"production",description:'The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "default_reasoning" on this model, and https://docs.venice.ai/overview/deprecations lists the default_reasoning trait as currently routing to this id. Roster description: "Kimi K3 is an ultra-large-scale, open-weight multimodal reasoning model from Moonshot AI." Roster figures: context_length 1,000,000, maxCompletionTokens 131,072, $3.75/$18.75 per MTok input/output, $0.375 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Vision, Code". The pricing page shows the cache-read price rounded to two decimals.'},"kimi-k2-6":{contextWindow:256e3,maxOutputTokens:65536,pricingPerMTok:{input:.75,output:3.5,cachedInput:.16},vision:!0,status:"production",description:'https://docs.venice.ai/getting-started/quick-start lists this id with the text "Strong reasoning for more complex tasks". Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "Kimi K2.6 is an open-source, native multimodal agentic model from Moonshot AI with 1T total parameters and 32B active parameters." Roster figures: context_length 256,000, maxCompletionTokens 65,536, $0.75/$3.5 per MTok input/output, $0.16 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Vision, Code".'},"qwen3-vl-235b-a22b":{contextWindow:128e3,maxOutputTokens:16384,pricingPerMTok:{input:.21,output:1.9,cachedInput:.1},vision:!0,status:"production",description:'NeuroLink models.visionModel. The model in the request examples of https://docs.venice.ai/guides/features/vision. Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "Qwen3-VL 235B vision-language model with MoE architecture." Roster figures: context_length 128,000, maxCompletionTokens 16,384, $0.21/$1.9 per MTok input/output, $0.1 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning false. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Vision".'},"venice-uncensored-1-2":{contextWindow:128e3,maxOutputTokens:8192,pricingPerMTok:{input:.2,output:.9},vision:!0,status:"production",description:`The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "most_uncensored" on this model, and https://docs.venice.ai/getting-started/quick-start lists this id with the text "Venice's uncensored model". Roster description: "Venice Uncensored 1.2 is designed for maximum creative freedom and authentic interaction." Roster figures: context_length 128,000, maxCompletionTokens 8,192, $0.2/$0.9 per MTok input/output, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning false. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Vision, Uncensored".`},"grok-4-7":{contextWindow:5e5,maxOutputTokens:2e5,pricingPerMTok:{input:2.27,output:6.8,cachedInput:.57},vision:!0,status:"production",description:`The roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) lists the trait "most_intelligent" on this model, and https://docs.venice.ai/overview/deprecations lists the most_intelligent trait as currently routing to this id. Roster description: "Grok 4.7 is xAI's multimodal chat and reasoning model with function calling, structured outputs, adjustable reasoning effort (low/medium/high/xhigh), and a 500K-token context window." Roster figures: context_length 500,000, maxCompletionTokens 200,000, $2.27/$6.8 per MTok input/output, $0.57 cache read, supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the pricing page has a further row labelled "\u21B3 >200K Context" at $4.53 input and $13.60 output, which the flat prices here do not carry. https://docs.venice.ai/models/text lists the Capabilities "Function calling, Reasoning, Vision, Code".`},"claude-opus-4-8":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:6,output:30,cachedInput:.6},vision:!0,status:"production",description:'https://docs.venice.ai/getting-started/quick-start lists this id with the text "High-intelligence model for complex tasks". Roster (unauthenticated GET https://api.venice.ai/api/v1/models, 2026-09-29, 126 text models) description: "It features a 1M token context window, 128K max output tokens, adaptive thinking, and strong multimodal capabilities." Roster figures: context_length 1,000,000, maxCompletionTokens 128,000, $6/$30 per MTok input/output, $0.6 cache read, privacy "anonymized", supportsVision true, supportsFunctionCalling true, supportsResponseSchema true, supportsReasoning true. The input and output prices and the rounded context also appear on https://docs.venice.ai/overview/pricing and https://docs.venice.ai/models/text; the latter lists the Capabilities "Function calling, Reasoning, Vision, Code".'}},topModels:["zai-org-glm-5-2","zai-org-glm-5","zai-org-glm-5-1","deepseek-v4-pro-0813","kimi-k3","kimi-k2-6","qwen3-vl-235b-a22b","venice-uncensored-1-2","grok-4-7","claude-opus-4-8"],visionModel:"qwen3-vl-235b-a22b"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!0},errorRules:[{status:401,class:"authentication",message:'Venice AI authentication failed (HTTP 401). https://docs.venice.ai/api-reference/error-codes lists AUTHENTICATION_FAILED ("Authentication failed"), AUTHENTICATION_FAILED_INACTIVE_KEY, X402_INVALID_SIGN_IN and PRO_ONLY_MODEL under 401. NeuroLink reads the key from {apiKeyEnvVar}; keys are created at {setupUrl}'},{status:402,class:"provider",message:'Venice AI reports a balance problem (HTTP 402). https://docs.venice.ai/api-reference/error-codes lists INSUFFICIENT_BALANCE ("Insufficient USD or Diem balance to complete request.", pointing to https://venice.ai/settings/api to add credits), API_KEY_USD_SPEND_LIMIT_EXCEEDED and API_KEY_DIEM_SPEND_LIMIT_EXCEEDED under 402'},{pattern:"Specified model not found|Invalid model specified",class:"invalid-model",message:`Venice AI did not accept model '{model}'. https://docs.venice.ai/api-reference/error-codes lists MODEL_NOT_FOUND (404, "Specified model not found") and INVALID_MODEL (400, "Invalid model specified"). Model ids are served by an unauthenticated GET https://api.venice.ai/api/v1/models`},{status:429,class:"rate-limit",message:'Venice AI returned HTTP 429. https://docs.venice.ai/api-reference/error-codes lists RATE_LIMIT_EXCEEDED ("Rate limit exceeded") and MODEL_OVERLOADED ("The model is currently overloaded. Please try again later.") under 429, and https://docs.venice.ai/api-reference/rate-limiting says "Failed requests (500, 503, 429) should be retried with exponential backoff."'}],setup:{url:"https://venice.ai/settings/api",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://venice.ai/settings/api and select Generate New API Key; the API key guide lists "Sign in to your Venice account." under Before you start (https://docs.venice.ai/guides/getting-started/generating-api-key)','2. Copy the key when it is shown \u2014 the API key guide states "Venice will show the full API key one time." (https://docs.venice.ai/guides/getting-started/generating-api-key) \u2014 and paste it without a Bearer prefix or quotes (https://docs.venice.ai/getting-started/quick-start)','3. Fund the account before calling models: the docs state "model requests will not succeed until the account can consume DIEM, bundled credits, or USD" (https://docs.venice.ai/guides/getting-started/generating-api-key); payment options are listed at https://docs.venice.ai/overview/pricing',"4. Set {apiKeyEnvVar} in your .env file (VENICE_API_KEY, the variable Venice's own docs use, is also read)"],description:`Docs- and roster-verified, not yet live-verified. OpenAI-compatible endpoint at https://api.venice.ai/api/v1 (https://docs.venice.ai/api-reference/endpoint/chat/completions: "This endpoint is OpenAI-compatible"), serving 126 text models on the 2026-09-29 roster, 10 of which are catalogued here (the roster's e2ee- ids are not). models.defaultContextWindow (128,000) and models.defaultMaxOutputTokens (4,096) are placeholders the vendor does not publish: Venice publishes context and max-output figures per model on the roster, not as a general default. The error-codes page (https://docs.venice.ai/api-reference/error-codes) shows the error body format {"error": "..."}, so errorRules match its documented statuses and model-not-found messages.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.venice.ai/api/v1/models \u2014 126 models; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public pages \u2014 https://docs.venice.ai/guides/getting-started/generating-api-key: "model requests will not succeed until the account can consume DIEM, bundled credits, or USD"; https://docs.venice.ai/overview/pricing: "Buy Venice credits with credit card. Credits never expire."; https://venice.ai/pricing: the Free plan lists "API Access (pay with credits)"; https://venice.ai/venice-api shows the tag "Free tier, no card"; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),v1e,XNr=E({"src/lib/providers/catalog/vispark.json"(){v1e={$schema:"./provider-catalog.schema.json",id:"vispark",displayName:"Vispark",aliases:[],tier:2,wire:{baseURL:"https://api.lab.vispark.in/v1"},models:{default:"vispark/vision-large",fallbacks:["vispark/vision-medium","vispark/vision-small"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"vispark/vision-large":{contextWindow:1e6,maxOutputTokens:65536,pricingPerMTok:{input:7.37,output:22.11},vision:!0,status:"production",description:`NeuroLink default. Vendor text for this model: the roster description reads "Vision Large: India's most advanced foundational intelligence. Delivers state-of-the-art reasoning, SOTA media processing, and complex tool usage. With 1M token context, it handles deep analysis and structured data with unmatched accuracy and cultural depth." and the site's size entry "large" reads "Slowest processing but highest intelligence and accuracy" with the price text "\u20B970 input/\u20B9210 output per 100k tokens. Minimum 600 input tokens charged." Unauthenticated GET https://api.lab.vispark.in/v1/models (2026-09-29, 3 models): context_length 1000000, max_output_length 65536, pricing.prompt "0.00000737" and pricing.completion "0.00002211" (pricingPerMTok is these two values times 1,000,000), input_modalities text, image, audio, video, file, output_modalities text, supported_features tools, json_mode, structured_outputs, reasoning. vision is true from the input_modalities entry image and the site text "Supports images, audio, video, and PDFs (max 25MB each)". The site's Limitations text for the Vision model reads "Combined content: 980,000 tokens maximum". The site text comes from https://lab.vispark.in/assets/index-WmfFPhvJ.js, the script https://lab.vispark.in/ loads (retrieved 2026-09-29).`},"vispark/vision-medium":{contextWindow:1e6,maxOutputTokens:65536,pricingPerMTok:{input:4.21,output:12.63},vision:!0,status:"production",description:`Fallback. Vendor text for this model: the roster description reads "Vision Medium: A versatile foundational model built for the world on Indian infrastructure. Balances speed with robust reasoning and 1M token context. Excels at content creation, nuanced cultural interactions, and evolving personal assistance." and the site's size entry "medium" reads "Balanced processing speed with good intelligence" with the price text "\u20B940 input/\u20B9120 output per 100k tokens. Minimum 600 input tokens charged." Unauthenticated GET https://api.lab.vispark.in/v1/models (2026-09-29, 3 models): context_length 1000000, max_output_length 65536, pricing.prompt "0.00000421" and pricing.completion "0.00001263" (pricingPerMTok is these two values times 1,000,000), input_modalities text, image, audio, video, file, output_modalities text, supported_features tools, json_mode, structured_outputs, reasoning. vision is true from the input_modalities entry image and the site text "Supports images, audio, video, and PDFs (max 25MB each)". The site text comes from https://lab.vispark.in/assets/index-WmfFPhvJ.js, the script https://lab.vispark.in/ loads (retrieved 2026-09-29).`},"vispark/vision-small":{contextWindow:1e6,maxOutputTokens:65536,pricingPerMTok:{input:1.05,output:3.16},vision:!0,status:"production",description:`Fallback. Vendor text for this model: the roster description reads "Vision Small: India's fast and efficient foundational AI. Trained from scratch with native multimodal understanding (text, audio, video) and deep cultural awareness. Features 1M token context for high-throughput, real-time interactions across 250+ languages." and the site's size entry "small" reads "Fastest processing speed with basic intelligence" with the price text "\u20B910 input/\u20B930 output per 100k tokens. Minimum 600 input tokens charged." Unauthenticated GET https://api.lab.vispark.in/v1/models (2026-09-29, 3 models): context_length 1000000, max_output_length 65536, pricing.prompt "0.00000105" and pricing.completion "0.00000316" (pricingPerMTok is these two values times 1,000,000), input_modalities text, image, audio, video, file, output_modalities text, supported_features tools, json_mode, structured_outputs, reasoning. vision is true from the input_modalities entry image and the site text "Supports images, audio, video, and PDFs (max 25MB each)". The site text comes from https://lab.vispark.in/assets/index-WmfFPhvJ.js, the script https://lab.vispark.in/ loads (retrieved 2026-09-29).`}},topModels:["vispark/vision-large","vispark/vision-medium","vispark/vision-small"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:`Vispark returned HTTP 401. The site's Limitations text lists 401 in "Check HTTP status codes (200, 400, 401, 402, 429)" and says "Validate API keys and sufficient units"; the OpenAI Compatibility panel says "Use your standard API Key as a Bearer Token." NeuroLink reads {apiKeyEnvVar}; create a key at {setupUrl}`},{status:402,class:"provider",message:`Vispark returned HTTP 402. The site's Limitations text lists 402 in "Check HTTP status codes (200, 400, 401, 402, 429)" and says "Validate API keys and sufficient units"; the site's script uses "Insufficient units for this operation" as the fallback message for this status.`},{status:429,class:"rate-limit",message:`Vispark returned HTTP 429. The site's Limitations text says "API rate limit: 240 requests/minute" and "Handle rate limiting with exponential backoff".`}],setup:{url:"https://lab.vispark.in/profile",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://lab.vispark.in/profile and sign in \u2014 the playground text reads "Sign in to run this model.", and the site links the Vispark account system at https://account.vispark.in','2. Open API Keys in the profile sidebar (the panel is titled "API Keys" with the subtitle "Manage your API keys"), choose "Add Key" and complete the "Create New API Key" dialog',`3. Authentication is HTTP Bearer: the OpenAI Compatibility panel says "Use your standard API Key as a Bearer Token." and shows Authorization: Bearer <your_api_key>. The site's developer-guide text for the Vision model also lists "Endpoint: /model/text/vision" and "Authentication: X-API-Key: your_api_key_here", and the ephemeral-key panel "Using on Model Endpoints" shows an X-API-Key header and lists "POST /chat/completions" under "Supported endpoints:". Neither header scheme was exercised: no POST request was sent`,'4. Billing as the site shows it: the Account tab of the profile page has a "Buy More Units" panel with the strings "\u20B91 (INR) = 1 unit" and "$1 (USD) = ~95 units"',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.lab.vispark.in/v1. The Vision documentation's OpenAI Compatibility panel says "This model is compatible with OpenAI-compatible clients." and gives the Base URL https://api.lab.vispark.in, Authorization: Bearer <your_api_key> and the model ids vispark/vision-small, vispark/vision-medium and vispark/vision-large; the ephemeral-key panel's Supported endpoints list includes "POST /chat/completions". Unauthenticated GETs made 2026-09-29: https://api.lab.vispark.in/v1/models and https://api.lab.vispark.in/models answered HTTP 200 with the same 3-model body; https://api.lab.vispark.in/v1/chat/completions and https://api.lab.vispark.in/chat/completions answered HTTP 405 with an HTML body titled 405 Method Not Allowed. No POST request was sent. The site text is read from the script https://lab.vispark.in/assets/index-WmfFPhvJ.js that https://lab.vispark.in/ loads (retrieved 2026-09-29). errorRules carry the status codes and sentences of the site's Limitations text. pricingPerMTok is the roster's pricing strings times 1,000,000; for vispark/vision-small the site's price text "\u20B910 input/\u20B930 output per 100k tokens" is \u20B9100 per 1M input tokens, which at "$1 (USD) = ~95 units" is about $1.05, the roster's figure. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are NeuroLink placeholders for model ids outside models.catalog, not vendor figures; the roster figures are quoted in the models.catalog descriptions. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. Verification level: docs- and roster-verified, not yet live-verified.`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.lab.vispark.in/v1/models \u2014 3 models; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public script https://lab.vispark.in/assets/index-WmfFPhvJ.js (retrieved 2026-09-29), Buy More Units panel strings "\u20B91 (INR) = 1 unit" and "$1 (USD) = ~95 units"; credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1862"}}}}),w1e,YNr=E({"src/lib/providers/catalog/vultr-inference.json"(){w1e={$schema:"./provider-catalog.schema.json",id:"vultr-inference",displayName:"Vultr Inference",aliases:[],tier:2,wire:{baseURL:"https://api.vultrinference.com/v1"},models:{default:"glm-5.2",fallbacks:["deepseek-v4.1-flash","qwen3.8-flash-next","mimo-v2.6-flash-rl"],defaultContextWindow:131072,defaultMaxOutputTokens:32768,catalog:{"glm-5.2":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.75,output:3},vision:!0,status:"production",description:`NeuroLink default. Roster entry named "GLM 5.2" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "GLM-5.2 is Z.ai's flagship model for long-horizon tasks, sustaining agentic work across a solid 1M-token context." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.75 and completion price $3 per MTok (cost_usd 0.00000075 and 0.000003 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"deepseek-v4.1-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.15,output:.6},vision:!0,status:"production",description:'Fallback. Roster entry named "DeepSeek V4.1 Flash" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "DeepSeek V4.1 Flash is a mixture-of-experts model with 552B backbone parameters, a one-million-token context window, and support for reasoning and tool calling." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.15 and completion price $0.6 per MTok (cost_usd 0.00000015 and 0.0000006 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"qwen3.8-flash-next":{contextWindow:262144,maxOutputTokens:262144,pricingPerMTok:{input:.1,output:.2},vision:!0,status:"production",description:'Fallback. Roster entry named "Qwen 3.8 Flash Next" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Qwen3.8 Flash Next with NVFP4 weights, a 262,144-token context window, reasoning, and tool calling." Roster fields: text input max_context_length 262,144 tokens; output max_length 262,144 tokens; prompt price $0.1 and completion price $0.2 per MTok (cost_usd 0.0000001 and 0.0000002 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"mimo-v2.6-flash-rl":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.1,output:.25},vision:!0,status:"production",description:`Fallback. Roster entry named "MiMo V2.6 Flash RL" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "MiMo V2.6 Flash RL is Xiaomi's efficiency-balanced mixture-of-experts model with 309B total and 15B active parameters, hybrid sliding-window attention, and a 1M-token context." "Supports reasoning and tool calling, served at FP8." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.1 and completion price $0.25 per MTok (cost_usd 0.0000001 and 0.00000025 per token); streaming true; tools listed among the supported parameters; input modalities text, image, audio, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"deepseek-v4-flash-0731":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.1,output:.25},vision:!0,status:"production",description:`Roster-listed. Roster entry named "DeepSeek V4 Flash 0731" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "DeepSeek's official V4 Flash release with substantially enhanced agentic capabilities and a built-in speculative decoding module." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.1 and completion price $0.25 per MTok (cost_usd 0.0000001 and 0.00000025 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"glm-5.3":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.75,output:3},vision:!0,status:"production",description:'Roster-listed. Roster entry named "GLM 5.3" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Served at NVFP4 across a 1M-token context." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.75 and completion price $3 per MTok (cost_usd 0.00000075 and 0.000003 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"glm-5.3-flash":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.1,output:.35},vision:!0,status:"production",description:`Roster-listed. Roster entry named "GLM 5.3 Flash" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Z.ai's first natively multimodal GLM-5 model: a 320B-parameter MoE with ~18B active per token, combining sparse and linear attention for cheap long-context serving across a 1M-token window." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.1 and completion price $0.35 per MTok (cost_usd 0.0000001 and 0.00000035 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"glm-5.x-menthol":{contextWindow:202752,maxOutputTokens:202752,pricingPerMTok:{input:.4,output:1.75},vision:!0,status:"production",description:`Roster-listed. Roster entry named "GLM 5" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Z.ai's GLM-5, a 744B-parameter MoE flagship for agentic reasoning and coding, served in FP8." Roster fields: text input max_context_length 202,752 tokens; output max_length 202,752 tokens; prompt price $0.4 and completion price $1.75 per MTok (cost_usd 0.0000004 and 0.00000175 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"laguna-s-2.1":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.09,output:.18},vision:!0,status:"production",description:'Roster-listed. Roster entry named "Laguna S 2.1" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Laguna S 2.1 is a 118B total parameter Mixture-of-Experts model with 8B activated parameters per token, designed for agentic coding and long-horizon work." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.09 and completion price $0.18 per MTok (cost_usd 0.00000009 and 0.00000018 per token); streaming true; tools listed among the supported parameters; input modalities text, image. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'},"mimo-v2.6-pro-rl":{contextWindow:1048576,maxOutputTokens:1048576,pricingPerMTok:{input:.4,output:.8},vision:!0,status:"production",description:`Roster-listed. Roster entry named "MiMo V2.6 Pro RL" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "MiMo V2.6 Pro RL is Xiaomi's mixture-of-experts model with 1.02T total and 42B active parameters, hybrid sliding-window attention, and a 1M-token context." "Supports reasoning and tool calling, served at FP8." Roster fields: text input max_context_length 1,048,576 tokens; output max_length 1,048,576 tokens; prompt price $0.4 and completion price $0.8 per MTok (cost_usd 0.0000004 and 0.0000008 per token); streaming true; tools listed among the supported parameters; input modalities text, image, audio, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.`},"minimax-m3":{contextWindow:524288,maxOutputTokens:524288,pricingPerMTok:{input:.2,output:.9},vision:!0,status:"production",description:'Roster-listed. Roster entry named "MiniMax M3" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "MiniMax M3 is a natively multimodal MoE model (~428B parameters, ~23B active) with a 1M-token context." Roster fields: text input max_context_length 524,288 tokens; output max_length 524,288 tokens; prompt price $0.2 and completion price $0.9 per MTok (cost_usd 0.0000002 and 0.0000009 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent. The roster description text says a 1M-token context while the max_context_length field says 524,288; contextWindow uses the field.'},"muse-glimmer-30b":{contextWindow:131072,maxOutputTokens:131072,pricingPerMTok:{input:.25,output:1},vision:!0,status:"production",description:'Roster-listed. Roster entry named "Muse Glimmer 30B" on the unauthenticated GET https://api.vultrinference.com/v1/models (2026-09-29, 24 entries). Roster description: "Muse Glimmer 30B is a dense multimodal model for reasoning, coding, and tool use, with a 131072-token context." Roster fields: text input max_context_length 131,072 tokens; output max_length 131,072 tokens; prompt price $0.25 and completion price $1 per MTok (cost_usd 0.00000025 and 0.000001 per token); streaming true; tools listed among the supported parameters; input modalities text, image, video. Vision is true because the roster lists an image input modality (sources url and base64; formats image/png, image/jpeg, image/webp, image/gif); no image request was sent.'}},topModels:["glm-5.2","deepseek-v4.1-flash","qwen3.8-flash-next","mimo-v2.6-flash-rl","deepseek-v4-flash-0731","glm-5.3","glm-5.3-flash","glm-5.x-menthol","laguna-s-2.1","mimo-v2.6-pro-rl","minimax-m3","muse-glimmer-30b"]},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Vultr Inference rejected the request with HTTP 401 (Unauthorized). Check {apiKeyEnvVar}; the steps to retrieve a key are at {setupUrl}"},{status:429,class:"rate-limit",message:"Vultr Inference reports HTTP 429 (Rate limit exceeded)."}],setup:{url:"https://docs.vultr.com/products/compute/serverless-inference/provisioning",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://docs.vultr.com/products/compute/serverless-inference/provisioning and follow the Vultr Console steps: Products, Serverless, Inference, Add Serverless Inference, then provide a Label, "acknowledge the list of supported models and the charges note", and click Add Serverless Inference',`2. Open the new subscription's management page and copy the API key from its overview page (https://docs.vultr.com/products/compute/serverless-inference/management/connection: "API key is necessary to send any request to the inference endpoints")`,`3. Charges: the provisioning page above lists the charges note among the items to acknowledge, and the FAQ (https://docs.vultr.com/products/compute/serverless-inference/faq) says the subscription's Usage tab shows "details on your current token usage, overage, and any associated costs"`,"4. Set {apiKeyEnvVar} in your .env file (the authentication example on https://api.vultrinference.com/ writes ${VULTR_API_KEY}, which NeuroLink does not read)"],description:'Chat completions endpoint at https://api.vultrinference.com/v1 (https://api.vultrinference.com/ documents POST /chat/completions with bearer-token authentication and says "Responses follow OpenRouter\'s chat completion shape whichever engine serves the model"; the FAQ at https://docs.vultr.com/products/compute/serverless-inference/faq says to "replace your current inference API URL (such as OpenAI\'s base API URL) with Vultr\u2019s API URL"). The chat-completions request message schema at https://api.vultrinference.com/ lists role (system, assistant, user, tool, developer) and content (type string, "The contents of the message."); the tool call id description says "Send it back unchanged as the `tool_call_id` of the tool result." The roster route is public ("Most API routes require a bearer token. The public `/v1/models` route does not.") and lists 24 entries, 15 with a text output; the catalog holds 12 chat models. billingPolicy no-free-tier is the schema\'s closest value (the schema has no unknown value) and is not a Vultr statement. Each model\'s status production is a value the schema requires and is not a Vultr statement. models.defaultContextWindow (131,072) and models.defaultMaxOutputTokens (32,768) are placeholders for ids outside the catalog that the vendor does not publish: 131,072 is the context the roster lists for muse-glimmer-30b and 32,768 is the default the chat-completions page shows for max_completion_tokens. errorRules match the documented statuses 401 and 429; the 401 body was observed on unauthenticated GETs of /v1/models/all, /v1/usage and /v1/models/glm-5.2 ({"message":"No API key provided"}); no POST to /chat/completions was sent.'},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://api.vultrinference.com/v1/models \u2014 24 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,method:'unauthenticated GET https://api.vultrinference.com/v1/models/all with no credentials \u2014 401 {"message":"No API key provided"} (the same body on GET /v1/usage and GET /v1/models/glm-5.2); the body carries no error code; GET https://api.vultrinference.com/v1/chat/completions answered 404 (the documented method is POST and none was sent); credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public pages https://docs.vultr.com/products/compute/serverless-inference/provisioning (Console steps: "acknowledge the list of supported models and the charges note") and https://docs.vultr.com/products/compute/serverless-inference/faq (Usage tab: "details on your current token usage, overage, and any associated costs"); no free-tier statement read; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),b1e,ZNr=E({"src/lib/providers/catalog/wafer.json"(){b1e={$schema:"./provider-catalog.schema.json",id:"wafer",displayName:"Wafer",aliases:[],tier:2,wire:{baseURL:"https://pass.wafer.ai/v1"},models:{default:"GLM-5.3",fallbacks:["DeepSeek-V4-Pro","Kimi-K3","GLM-5.2"],defaultContextWindow:128e3,defaultMaxOutputTokens:16384,catalog:{"GLM-5.3":{contextWindow:1048576,pricingPerMTok:{input:.29,output:4.4,cachedInput:.2359},vision:!1,status:"production",description:`NeuroLink default. The model named in the curl request example on https://docs.wafer.ai/serverless and on https://docs.wafer.ai/serverless/zero-data-retention. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "GLM-5.3 \u2014 Z.ai's flagship GLM-5.3 MoE (391B, NVFP4), self-hosted on the Wafer fleet with a 1M-token context window and frontier coding/agentic performance. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 29, output_cents_per_million 440 ($0.29 / $4.40 per MTok input/output); cache_read_microcents_per_million 23,590,000 ($0.2359 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.`},"DeepSeek-V4-Pro":{contextWindow:1048576,pricingPerMTok:{input:.4,output:4.2,cachedInput:.32},vision:!1,status:"production",description:`Fallback. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "DeepSeek-V4-Pro -- DeepSeek's V4 Pro MoE, self-hosted on the Wafer fleet with a 1M-token context window, reasoning-effort control and tool calling. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 40, output_cents_per_million 420 ($0.40 / $4.20 per MTok input/output); cache_read_microcents_per_million 32,000,000 ($0.32 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.`},"Kimi-K3":{contextWindow:1048576,maxOutputTokens:131072,pricingPerMTok:{input:1.44,output:9,cachedInput:.3},vision:!0,status:"production",description:'Fallback. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "Kimi K3 sparse MoE model, self-hosted on the Wafer fleet. Available serverless with a 1M-token context window and strong coding/agentic performance." Roster values: context_length 1,048,576; max_output_tokens 131,072; input_cents_per_million 144, output_cents_per_million 900 ($1.44 / $9.00 per MTok input/output); cache_read_microcents_per_million 30,000,000 ($0.3 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.'},"GLM-5.2":{contextWindow:1048576,pricingPerMTok:{input:.32,output:4.4,cachedInput:.2599},vision:!1,status:"production",description:`Fallback. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "GLM-5.2 \u2014 Z.ai's GLM-5.2 MoE (NVFP4), self-hosted on the Wafer fleet with a 1M-token context window, strong coding and reasoning, and tool calling. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 32, output_cents_per_million 440 ($0.32 / $4.40 per MTok input/output); cache_read_microcents_per_million 25,990,000 ($0.2599 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.`},"Qwen3.8-27B":{contextWindow:262144,pricingPerMTok:{input:.04,output:4.4,cachedInput:.0342},vision:!0,status:"production",description:`Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "Qwen3.8-27B -- Alibaba's dense 27B vision-language model, self-hosted on the Wafer fleet with a 262K-token context window, image and video input, reasoning-effort control and tool calling. Available serverless." Roster values: context_length 262,144; input_cents_per_million 4, output_cents_per_million 440 ($0.04 / $4.40 per MTok input/output); cache_read_microcents_per_million 3,420,000 ($0.0342 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.`},"GLM-5.3-Flash":{contextWindow:1048576,pricingPerMTok:{input:.75,output:.5,cachedInput:.03},vision:!0,status:"production",description:`Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "GLM-5.3-Flash \u2014 Z.ai's fast GLM-5.3 MoE variant, self-hosted on the Wafer fleet with a 1M-token context window and strong coding/agentic performance. Available serverless to gateway partners." Roster values: context_length 1,048,576; input_cents_per_million 75, output_cents_per_million 50 ($0.75 / $0.50 per MTok input/output); cache_read_microcents_per_million 3,000,000 ($0.03 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.`},"DeepSeek-V4.1-Flash":{contextWindow:1048576,pricingPerMTok:{input:.02,output:.7,cachedInput:.016},vision:!0,status:"production",description:`Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "DeepSeek-V4.1-Flash \u2014 DeepSeek's V4.1 Flash MoE (552B total, 8B active for prefill / 16B for decode, 1M-token context), self-hosted on the Wafer fleet with reasoning-effort control and tool calling. Available serverless." Roster values: context_length 1,048,576; input_cents_per_million 2, output_cents_per_million 70 ($0.02 / $0.70 per MTok input/output); cache_read_microcents_per_million 1,600,000 ($0.016 per MTok cache-read); capabilities.vision true and supports_vision true; not probed with an image request; chat_completions supported, tools, streaming, json_object and json_schema true.`},"DeepSeek-V4-Flash-0731-Fast":{contextWindow:1048576,pricingPerMTok:{input:.07,output:.35,cachedInput:.0531},vision:!1,status:"production",description:'Roster-listed. Unauthenticated GET https://pass.wafer.ai/v1/models roster (2026-09-29, 8 models), wafer.description: "The same model served for high TPS." Roster values: context_length 1,048,576; input_cents_per_million 7, output_cents_per_million 35 ($0.07 / $0.35 per MTok input/output); cache_read_microcents_per_million 5,310,000 ($0.0531 per MTok cache-read); capabilities.vision false; chat_completions supported, tools, streaming, json_object and json_schema true.'}},topModels:["GLM-5.3","DeepSeek-V4-Pro","Kimi-K3","GLM-5.2","Qwen3.8-27B","GLM-5.3-Flash","DeepSeek-V4.1-Flash","DeepSeek-V4-Flash-0731-Fast"],visionModel:"Qwen3.8-27B"},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,class:"authentication",message:"Wafer returned HTTP 401 authentication_error. Check {apiKeyEnvVar}. Get one at {setupUrl}"}],setup:{url:"https://app.wafer.ai",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:['1. Visit: https://app.wafer.ai and sign in \u2014 the docs say "Sign in at app.wafer.ai to add credits and create an API key. Store your key securely." (https://docs.wafer.ai/serverless)','2. Add credits and create an API key \u2014 the docs say "Add credits, create an API key, and pay per token." (https://docs.wafer.ai/serverless)',"3. Set {apiKeyEnvVar} in your .env file (the docs' Authentication row shows the Authorization: Bearer header)"],description:`OpenAI-compatible endpoint at https://pass.wafer.ai/v1 (https://docs.wafer.ai/serverless: "Access Wafer models through an OpenAI-compatible API."), with the 8 models the unauthenticated GET /models roster listed on 2026-09-29 in models.catalog. An unauthenticated GET of https://pass.wafer.ai/v1/chat/completions returned HTTP 401 with error.type authentication_error and error.code missing_api_key (2026-09-29), so errorRules match status 401. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are placeholders the vendor does not publish. billingPolicy is recorded as no-free-tier because the schema has no unknown value; the vendor's stated flow is "Add credits, create an API key, and pay per token."`},evidence:{rosterVerified:{date:"2026-09-29",status:200,method:"unauthenticated GET https://pass.wafer.ai/v1/models \u2014 8 models; credential-free, no key used"},authProbe:{date:"2026-09-29",status:401,code:"missing_api_key",method:"unauthenticated GET https://pass.wafer.ai/v1/chat/completions \u2014 error.type authentication_error; credential-free, no key used"},billingProbe:{date:"2026-09-29",method:'public page https://docs.wafer.ai/serverless \u2014 "Add credits, create an API key, and pay per token."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),T1e,QNr=E({"src/lib/providers/catalog/wandb-inference.json"(){T1e={$schema:"./provider-catalog.schema.json",id:"wandb-inference",displayName:"W&B Inference",aliases:["wandb"],tier:2,wire:{baseURL:"https://api.inference.wandb.ai/v1"},models:{default:"openai/gpt-oss-120b",fallbacks:["deepseek-ai/DeepSeek-V4-Flash-0731","meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","meta-llama/Llama-3.1-8B-Instruct","zai-org/GLM-5.2","deepseek-ai/DeepSeek-V4-Pro-0813","google/gemma-4-26B-A4B-it","Qwen/Qwen3.8-27B","moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4.1-Flash","ibm-granite/granite-4.2-8b"],defaultContextWindow:128e3,defaultMaxOutputTokens:8192,catalog:{"openai/gpt-oss-120b":{contextWindow:131072,pricingPerMTok:{input:.03,output:.17},vision:!1,status:"production",description:`NeuroLink default. Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": OpenAI GPT OSS 120B, Type "Text", context window "131k", described as "Efficient Mixture-of-Experts model designed for high-reasoning, agentic and general-purpose use cases." Pricing page (wandb.ai/site/pricing/tokens/): $0.03 input, $0.17 output, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). The streaming page (docs.wandb.ai/inference/response-settings/streaming) uses this id in its example, and the reasoning page (docs.wandb.ai/inference/response-settings/reasoning) lists it as "Always on".`},"deepseek-ai/DeepSeek-V4-Flash-0731":{contextWindow:262144,pricingPerMTok:{input:.13,output:.28,cachedInput:.07},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": DeepSeek V4-Flash-0731, Type "Text", context window "262k", described as "DeepSeek V4-Flash-0731 is an MoE model great for coding, reasoning, and agentic workloads." Pricing page (wandb.ai/site/pricing/tokens/): $0.13 input, $0.28 output, cache hit $0.07, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"meta-llama/Llama-3.3-70B-Instruct":{contextWindow:128e3,pricingPerMTok:{input:.71,output:.71},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Meta Llama 3.3 70B, Type "Text", context window "128k", described as "Multilingual model excelling in conversational tasks, detailed instruction-following, and coding." Pricing page (wandb.ai/site/pricing/tokens/): $0.71 input, $0.71 output, prices shown per 1 million tokens. contextWindow 128000 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"openai/gpt-oss-20b":{contextWindow:131072,pricingPerMTok:{input:.03,output:.13},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": OpenAI GPT OSS 20B, Type "Text", context window "131k", described as "Lower latency Mixture-of-Experts model trained on OpenAI's Harmony response format with reasoning capabilities." Pricing page (wandb.ai/site/pricing/tokens/): $0.03 input, $0.13 output, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). The tool-calling, structured-output and JSON-mode pages (docs.wandb.ai/inference/response-settings/) use this id in their examples.`},"meta-llama/Llama-3.1-8B-Instruct":{contextWindow:131072,pricingPerMTok:{input:.22,output:.22},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Meta Llama 3.1 8B, Type "Text", context window "131k", described as "Efficient conversational model optimized for responsive multilingual chatbot interactions." Pricing page (wandb.ai/site/pricing/tokens/): $0.22 input, $0.22 output, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). The quick-start example on docs.wandb.ai/inference uses this id.`},"zai-org/GLM-5.2":{contextWindow:1048576,pricingPerMTok:{input:.76,output:2.42,cachedInput:.14},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Z.AI GLM 5.2, Type "Text", context window "1049k", described as "GLM-5.2 is a Mixture-of-Experts language model featuring 40 billion activated parameters and a total of 744 billion parameters." Pricing page (wandb.ai/site/pricing/tokens/): $0.76 input, $2.42 output, cache hit $0.14, prices shown per 1 million tokens. contextWindow 1048576 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"deepseek-ai/DeepSeek-V4-Pro-0813":{contextWindow:1048576,pricingPerMTok:{input:1.31,output:3.96,cachedInput:.044},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": DeepSeek V4-Pro-0813, Type "Text", context window "1049k", described as "DeepSeek V4-Pro-0813 is a 1.6T-parameter MoE model excelling at advanced reasoning, coding, and complex agentic workloads." Pricing page (wandb.ai/site/pricing/tokens/): $1.31 input, $3.96 output, cache hit $0.044, prices shown per 1 million tokens. contextWindow 1048576 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"google/gemma-4-26B-A4B-it":{contextWindow:262144,pricingPerMTok:{input:.1,output:.3,cachedInput:.05},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Google Gemma 4 26B A4B Instruct, Type "Text, Vision", context window "262k", described as "Gemma 4 26B A4B is a multimodal MoE model with LoRA support and function calling for agentic workflows." Pricing page (wandb.ai/site/pricing/tokens/): $0.10 input, $0.30 output, cache hit $0.05, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models). NeuroLink models.visionModel.`},"Qwen/Qwen3.8-27B":{contextWindow:262144,pricingPerMTok:{input:.4,output:3,cachedInput:.15},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Qwen3.8 27B, Type "Text, Vision", context window "262k", described as "Qwen3.8-27B is a dense multimodal model suited for coding, research, vision, and long-running agent tasks." Pricing page (wandb.ai/site/pricing/tokens/): $0.40 input, $3.00 output, cache hit $0.15, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"moonshotai/Kimi-K2.6":{contextWindow:262144,pricingPerMTok:{input:.65,output:3.41,cachedInput:.15},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": Moonshot AI Kimi K2.6, Type "Text, Vision", context window "262k", described as "Kimi K2.6 is a multimodal Mixture-of-Experts language model featuring 32 billion activated parameters and a total of 1 trillion parameters." Pricing page (wandb.ai/site/pricing/tokens/): $0.65 input, $3.41 output, cache hit $0.15, prices shown per 1 million tokens. contextWindow 262144 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"deepseek-ai/DeepSeek-V4.1-Flash":{contextWindow:1048576,pricingPerMTok:{input:.2,output:.65,cachedInput:.03},vision:!0,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": DeepSeek V4.1-Flash, Type "Text, Vision", context window "1049k", described as "DeepSeek V4.1 Flash is a multimodal MoE model for coding, reasoning, and agentic workloads with long contexts." Pricing page (wandb.ai/site/pricing/tokens/): $0.20 input, $0.65 output, cache hit $0.03, prices shown per 1 million tokens. contextWindow 1048576 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`},"ibm-granite/granite-4.2-8b":{contextWindow:131072,pricingPerMTok:{input:.1,output:.15,cachedInput:.05},vision:!1,status:"production",description:`Models page (docs.wandb.ai/inference/models, retrieved 2026-09-29), heading "Generally available models": IBM Granite 4.2 8B, Type "Text", context window "131k", described as "Granite 4.2 8B is an instruct model capable of enhanced tool calling, instruction following, and chat capabilities." Pricing page (wandb.ai/site/pricing/tokens/): $0.10 input, $0.15 output, cache hit $0.05, prices shown per 1 million tokens. contextWindow 131072 is the contextWindow value the vendor's public catalog API returns for this id (GET trace.wandb.ai/inference/catalog/models).`}},topModels:["openai/gpt-oss-120b","deepseek-ai/DeepSeek-V4-Flash-0731","meta-llama/Llama-3.3-70B-Instruct","openai/gpt-oss-20b","meta-llama/Llama-3.1-8B-Instruct","zai-org/GLM-5.2","deepseek-ai/DeepSeek-V4-Pro-0813","google/gemma-4-26B-A4B-it","Qwen/Qwen3.8-27B","moonshotai/Kimi-K2.6","deepseek-ai/DeepSeek-V4.1-Flash","ibm-granite/granite-4.2-8b"],visionModel:"google/gemma-4-26B-A4B-it"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!1,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"invalid_api_key",class:"authentication",message:"W&B Inference rejected the credentials (HTTP 401). Check {apiKeyEnvVar}. Create a key at {setupUrl}. The vendor's 401 article (https://docs.wandb.ai/support/inference/articles/api-error-code-401-authentication-failed) lists an invalid, expired or revoked API key and an incorrect W&B project entity or name as causes."},{status:402,class:"provider",message:"W&B Inference reports the quota is exceeded (HTTP 402). The vendor's 402 article (https://docs.wandb.ai/support/inference/articles/api-error-code-402-you-exceeded-your-cur) says this means no remaining credits or a reached monthly spending cap; see https://docs.wandb.ai/inference/usage-limits"},{pattern:"Country, region, or territory not supported",class:"provider",message:`W&B Inference returned "Country, region, or territory not supported" (HTTP 403). The vendor's article (https://docs.wandb.ai/support/inference/articles/api-error-code-403-country-region-or-ter) says the service determines location from the IP address of the request; see https://docs.wandb.ai/inference/usage-limits#geographic-restrictions`},{pattern:"inference gateway is not enabled for your organization",class:"authentication",message:`W&B Inference returned "The inference gateway is not enabled for your organization" (HTTP 403). The vendor's article (https://docs.wandb.ai/support/inference/articles/api-error-code-403-the-inference-gateway) says to ask your organization's W&B administrator to enable the inference gateway.`},{status:404,class:"invalid-model",message:"W&B Inference returned HTTP 404 for model '{model}'. The vendor's 404 article (https://docs.wandb.ai/support/inference/articles/api-error-code-404-model-not-found) says model IDs are case-sensitive; the ids are listed at https://docs.wandb.ai/inference/models"},{status:429,pattern:"Concurrency limit reached for requests",class:"rate-limit",message:`W&B Inference rate-limit error. The vendor's 429 article (https://docs.wandb.ai/support/inference/articles/api-error-code-429-concurrency-limit-rea) covers a 429 with the message "Concurrency limit reached for requests" and lists reducing concurrent requests as one approach; limits are described at https://docs.wandb.ai/inference/usage-limits`}],setup:{url:"https://wandb.ai/settings",apiKeyFormat:null,billingPolicy:"free-tier",instructions:["1. Visit: https://app.wandb.ai/login?signup=true and sign up for a W&B account (https://docs.wandb.ai/inference/prerequisites)","2. Create an API key: click your user profile icon, then User Settings, then Create new API key, and copy it immediately because W&B shows the full key once (https://docs.wandb.ai/inference/prerequisites); the API reference also names https://wandb.ai/settings (https://docs.wandb.ai/inference/api-reference)",'3. Project: the prerequisites page (https://docs.wandb.ai/inference/prerequisites) lists a W&B project among the items you must have: "Create a project in your W&B account to track usage." The chat completions reference (https://docs.wandb.ai/inference/api-reference/chat-completions) lists "Your W&B team and project: [YOUR-TEAM]/[YOUR-PROJECT] (optional)."','4. Credits: "Serverless Inference credits come with Free, Pro, and Academic plans for a limited time." Free accounts must activate pay-as-you-go inference on the Billing tab or upgrade to a paid plan when credits run out; the default cap for a Free account is $100/month (https://docs.wandb.ai/inference/usage-limits)',"5. Set {apiKeyEnvVar} in your .env file"],description:`OpenAI-compatible endpoint at https://api.inference.wandb.ai/v1 (https://docs.wandb.ai/inference: "Serverless Inference gives you access to leading open-source foundation models through W&B Weave and an OpenAI-compatible API."). Docs-verified only: GET https://api.inference.wandb.ai/v1/models answers HTTP 401 without a key, so the 12 model ids (from the 20 in the models page's "Generally available models" table) come from https://docs.wandb.ai/inference/models, retrieved 2026-09-29, and the roster has not been checked; the entry is not yet live-verified. Context windows are the contextWindow values returned by the vendor's public catalog API (GET https://trace.wandb.ai/inference/catalog/models, documented at https://docs.wandb.ai/weave/reference/service-api/inference/inference-catalog-models as "This API is available without authentication."); prices come from https://wandb.ai/site/pricing/tokens/. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (8192) are placeholders: the vendor does not publish a general default or a maximum output figure. errorRules follow the statuses and messages on https://docs.wandb.ai/support/inference and the 401 body observed on 2026-09-29.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.inference.wandb.ai/v1/models answers 401 without a key, so model ids are taken from https://docs.wandb.ai/inference/models (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"invalid_api_key",method:'unauthenticated GET https://api.inference.wandb.ai/v1/models and unauthenticated GET https://api.inference.wandb.ai/v1/chat/completions, both HTTP 401 with body {"error":{"code":"invalid_api_key","message":"Missing bearer authentication in header","type":"invalid_request_error"}}; credential-free, no key used'},billingProbe:{date:"2026-09-29",method:'public page https://docs.wandb.ai/inference/usage-limits \u2014 "Serverless Inference credits come with Free, Pro, and Academic plans for a limited time."; Free default cap "$100/month"; "W&B requires prepayment for paid Inference access."; credential-free'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}}),_1e,eLr=E({"src/lib/providers/catalog/xai.json"(){_1e={$schema:"./provider-catalog.schema.json",id:"xai",displayName:"xAI",aliases:["grok"],tier:2,wire:{baseURL:"https://api.x.ai/v1"},models:{default:"grok-4.6",fallbacks:["grok-4.6","grok-4.5","grok-4.3","grok-3","grok-3-mini","grok-4.7"],defaultContextWindow:131072,defaultMaxOutputTokens:4096,catalog:{"grok-4.7":{enumMember:"GROK_4_7",contextWindow:5e5,vision:!0,status:"production",description:"Grok 4.7 \u2014 xAI's newest flagship as of 2026-09-27 (text + image input); not yet the SDK default, see docs.x.ai/developers/grok-4-7"},"grok-4.6":{enumMember:"GROK_4_6",contextWindow:131072,vision:!0,status:"production",description:"Recommended - Grok 4.6, current flagship; vision-capable"},"grok-4.5":{enumMember:"GROK_4_5",contextWindow:131072,vision:!0,status:"production",description:"Grok 4.5 \u2014 vision-capable"},"grok-4.3":{enumMember:"GROK_4_3",contextWindow:131072,vision:!0,status:"production",description:"Grok 4.3 \u2014 vision-capable"},"grok-3":{contextWindow:131072,pricingPerMTok:{input:3,output:15},vision:!1,status:"production",description:"Grok 3 \u2014 still served, though absent from the /models roster"},"grok-3-mini":{contextWindow:131072,pricingPerMTok:{input:.3,output:.5},vision:!1,status:"production",description:"Faster + cheaper Grok 3"},"grok-2-latest":{contextWindow:131072,pricingPerMTok:{input:2,output:10},vision:!1,status:"retired",description:"Retired 2026-08 \u2014 xAI rejects it as an invalid model"},"grok-2-vision-latest":{contextWindow:32768,pricingPerMTok:{input:2,output:10},vision:!1,status:"retired",description:"Retired 2026-08 \u2014 xAI rejects it as an invalid model; vision moved to the grok-4.x line"},"grok-beta":{contextWindow:131072,pricingPerMTok:{input:5,output:15},vision:!1,status:"retired",description:"Retired 2026-08 \u2014 xAI rejects it as an invalid model"}},visionModel:"grok-4.6",topModels:["grok-4.6","grok-4.5","grok-4.3","grok-3","grok-4.7"]},capabilities:{text:!0,streaming:!0,tools:!0,toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!0,embeddings:!1,thinking:!1},errorRules:[{status:401,pattern:"Invalid API key|Authentication|invalid_api_key",class:"authentication",message:"Invalid xAI API key. Please check your {apiKeyEnvVar} environment variable. Get one at https://console.x.ai/"},{pattern:"insufficient_quota|quota exceeded",class:"provider",message:"xAI account has insufficient quota. Top up at https://console.x.ai/"}],setup:{url:"https://console.x.ai/",apiKeyFormat:null,billingPolicy:"no-free-tier",instructions:["1. Visit: https://console.x.ai/","2. Sign in with your xAI account","3. Create an API key","4. Set {apiKeyEnvVar} in your .env file"]},evidence:{rosterVerified:{date:"2026-08-30",method:"GET /models against the live account, cross-checked with a real chat call per id"},liveMatrix:{date:"2026-08-30",result:"grok-2-latest, grok-2-vision-latest and grok-beta are rejected as invalid models. The grok-4.x line replaces them: 4.3/4.5/4.6 all answer, and all three read a 64x64 PNG correctly, so vision moved there from the retired grok-2-vision-latest. An earlier probe with an 8x8 PNG reported no vision \u2014 that was xAI answering 'Invalid PNG image', a complaint about the file rather than the capability. grok-3 and grok-3-mini are kept because they still serve, even though xAI's /models roster omits them: roster absence is not evidence of death here. grok-4.7 added 2026-09-27 from docs.x.ai/developers/grok-4-7 and docs.x.ai/developers/pricing (official docs review only \u2014 no xAI API key was available in this environment, so unlike the rest of this file it has not been roster/chat-probed live; context 500,000 tokens and text+image input are as published, and it is deliberately left with no pricingPerMTok, matching grok-4.6/4.5/4.3, because its real rate is tiered by prompt length ($2/$0.50/$6 per 1M below 200k tokens, $4/$1/$12 at or above) and the schema's pricingPerMTok field can only hold one flat rate)."},addedInPR:"https://github.com/juspay/neurolink/pull/1587"}}}}),E1e,tLr=E({"src/lib/providers/catalog/xiaomi-mimo.json"(){E1e={$schema:"./provider-catalog.schema.json",id:"xiaomi-mimo",displayName:"Xiaomi MiMo",aliases:[],tier:2,wire:{baseURL:"https://api.xiaomimimo.com/v1",apiKeyFallbackEnvVars:["MIMO_API_KEY"]},models:{default:"mimo-v2.6-flash",fallbacks:["mimo-v2.6-flash"],defaultContextWindow:1048576,defaultMaxOutputTokens:131072,catalog:{"mimo-v2.6-flash":{contextWindow:1048576,maxOutputTokens:131072,vision:!1,status:"production",description:"Xiaomi MiMo's usage-priced mimo-v2.6-flash, the vendor's named replacement for the retiring mimo-v2.5. The vendor's OpenClaw and OpenCode integration guides bind the integers 1048576 (context) and 131072 (output) to this exact id, and its API reference gives [1, 131072] as the required range for max_completion_tokens (visible plus reasoning tokens). The model table shows only the rounded labels 1M and 128K, so nothing was expanded from it. This pilot declares text generate/stream; tools, vision, structured output and thinking controls await separate evidence. Account/model access is unverified."}}},capabilities:{text:!0,streaming:!0,tools:!1,toolsWithStreaming:!1,structuredOutput:!1,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},quirks:{maxTokensField:"max_completion_tokens",omitStreamOptions:!0},errorRules:[],setup:{url:"https://platform.xiaomimimo.com/#/console/api-keys",apiKeyFormat:null,billingPolicy:"promotional-credit",instructions:["1. Sign in to the Xiaomi MiMo platform console with a Xiaomi account and create a pay-as-you-go API key at https://platform.xiaomimimo.com/#/console/api-keys.","2. mimo-v2.6-flash is usage-priced against your account balance. The vendor's promotions page describes bonus credit, from Refer & Earn or new-user registration, that offsets pay-as-you-go API usage and is currently valid for 40 days. Eligibility and amounts vary by campaign; your own entitlement and balance are unverified, and this is not a free tier.","3. Set {apiKeyEnvVar}. The vendor's own examples name the variable MIMO_API_KEY, which is read as a fallback. The key is sent as Authorization: Bearer to https://api.xiaomimimo.com/v1/chat/completions (the vendor also accepts an api-key header, which this entry does not use).","4. Token Plan keys are a separate subscription product and are not covered by this entry. The declared scope is text generate and stream with mimo-v2.6-flash."],description:"Xiaomi MiMo text/stream pilot with a usage-priced mimo-v2.6-flash default. Bonus credit is a campaign-dependent promotion that offsets API usage; no account entitlement, roster, live inference or delivery is verified."},evidence:{rosterVerified:{date:"2026-10-10",code:"PUBLIC_DOCS_ONLY_NOT_ROSTER_VERIFIED",method:"Public documentation GETs only: mimo.mi.com model.md, api/chat/openai-api.md, tokenplan/integration/openclaw.md and opencode.md, quick-start/faq/promotions.md, price/pay-as-you-go.md and updates/deprecate.md. No vendor roster, auth, billing or inference probe ran; this legacy field does not assert roster verification."},billingProbe:{date:"2026-10-10",code:"PUBLIC_DOCS_ONLY_ACCOUNT_NOT_TESTED",method:"Public documentation only: the pay-as-you-go page states the API consumes the account balance by actual token usage, and the promotions page states bonus credit offsets API usage and is currently valid for 40 days with campaign-dependent amounts. No account was created and no credit amount or eligibility was checked."},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1977"}}}}),S1e,rLr=E({"src/lib/providers/catalog/xor.json"(){S1e={$schema:"./provider-catalog.schema.json",id:"xor",displayName:"XOR",aliases:[],inferenceKinds:["decide"],wire:{},models:{default:"xor-latest",topModels:["xor-latest","xor-omni"],catalog:{"xor-latest":{contextWindow:25e4,maxOutputTokens:256,vision:!1,status:"production",description:"Recommended - XOR text alias; boolean, choice and score questions, 2 to 64 options each"},"xor-omni":{contextWindow:25e4,maxOutputTokens:256,vision:!0,status:"production",description:"XOR multimodal alias; reads images and video alongside the state, for boolean, choice and score questions"},"xor-1.1":{contextWindow:25e4,maxOutputTokens:256,vision:!1,status:"retired",description:"Name served by the deprecated /v1/systemone route; superseded by xor-latest and xor-omni. Still sent as given when you name it - the endpoint decides whether it accepts it"}}},timeouts:{decideMs:5e3},decisionLimits:{maxStateTokens:2e5,nonAsciiTokensPerChar:1,media:{maxImages:8,video:!0,maxRequestBytes:8388608}},decide:{dialect:"system-one",order:3,baseURLRequired:!0,baseURLNormalize:["strip-trailing-slash","strip-v1-suffix"],baseURLShape:"origin",endpoint:"{baseURL}/v1/decisions",model:{placement:"body"},media:{imagesKey:"images",videoKey:"video"},requestIdHeaders:["x-request-id","x-typesafe-request-id","x-litellm-call-id"],errors:{rules:[{status:401,kind:"authentication"},{status:413,kind:"max_tokens_exceeded"},{status:429,kind:"rate_limit"},{status:503,kind:"overloaded"},{statusMin:500,messagePattern:"(context|prefill|prompt).{0,40}(length|limit|too long|exceed)|(too long|exceeds?).{0,40}(context|tokens)",kind:"max_tokens_exceeded"},{statusMin:500,kind:"server"}],default:"invalid_request",bodyShapes:[{path:"error.message"},{path:"error"},{path:"detail",isArray:!0,formatter:"fastapi-validation"},{path:"detail"}]}},setup:{url:"https://huggingface.co/juspay/xor",apiKeyFormat:null,billingPolicy:"free-tier",description:"API key for your XOR endpoint",instructions:["1. Reach an XOR deployment, or use a LiteLLM proxy with a pass-through route to one","2. Set XOR_BASE_URL to its origin (NeuroLink calls <XOR_BASE_URL>/v1/decisions)","3. Set {apiKeyEnvVar} to the key it accepts (on LiteLLM, a virtual key whose team allows xor-latest, and xor-omni for media)"]},evidence:{rosterVerified:{date:"2026-10-18",method:"POST <origin>/v1/decisions with model xor-latest and a 3-option choice question returned HTTP 200 with served model xor-text-2, through NeuroLink's decide(); a 65-option choice question returned HTTP 422 reading 2..64 options, got 65. A 64-option question returned 200 and 77 options returned 422 on both aliases when probed by hand the same day. A successful xor-omni answer, and any image, audio or video request, were not exercised. The figures contextWindow 250000, maxOutputTokens 256, the 200000-token state window and the media limits are carried over from xor-1.1, not re-measured for the aliases; xor-1.1 is kept only as a retired name"},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1984"}}}}),k1e,nLr=E({"src/lib/providers/catalog/z-ai.json"(){k1e={$schema:"./provider-catalog.schema.json",id:"z-ai",displayName:"Z.AI",aliases:["zai"],tier:2,wire:{baseURL:"https://api.z.ai/api/paas/v4"},models:{default:"glm-5.3",fallbacks:["glm-5.2","glm-5.1","glm-5","glm-4.7","glm-4.6","glm-4.5","glm-4.5-air","glm-4.7-flashx","glm-4.7-flash","glm-5.3-flash","glm-5.3-flashx"],defaultContextWindow:128e3,defaultMaxOutputTokens:16e3,catalog:{"glm-5.3":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:`NeuroLink default. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md, retrieved 2026-09-29) gives glm-5.3 as the default of its model parameter and uses it in its request examples, and says "GLM-5.3, GLM-5.2, GLM-5.1 are the latest flagship model series, foundational models specifically designed for agent applications". The GLM-5.3 page (https://docs.z.ai/guides/llm/glm-5.3.md) says "Z.ai's latest flagship model" and "GLM-5.3 currently supports text-only inputs, with a 1M-token context window and a maximum output length of 128K tokens", so vision is false; it also says "GLM-5.3 always operates with reasoning enabled". Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.3, per 1M tokens: Input $1.4, Cached Input $0.26, Output $4.4.`},"glm-5.3-flash":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:.15,output:.5,cachedInput:.03},vision:!0,status:"production",description:'NeuroLink fallback and vision model. The GLM-5.3-Flash/FlashX page (https://docs.z.ai/guides/vlm/glm-5.3-flash.md) shows Input Modality "Video / Image / Text / File", Output Modality "Text", Context Length "1M" and Maximum Output Tokens "128K", lists the model code glm-5.3-flash, and documents image input as image_url content blocks in messages[].content[], so vision is true. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.3-flash in its vision-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.3-Flash, per 1M tokens: Input $0.15, Cached Input $0.03, Output $0.50.'},"glm-5.3-flashx":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:.37,output:1.25,cachedInput:.075},vision:!0,status:"production",description:'NeuroLink fallback. The GLM-5.3-Flash/FlashX page (https://docs.z.ai/guides/vlm/glm-5.3-flash.md) shows Input Modality "Video / Image / Text / File", Output Modality "Text", Context Length "1M" and Maximum Output Tokens "128K", lists the model code glm-5.3-flashx, and states an inference speed of 200 tokens/s for GLM-5.3-FlashX, so vision is true. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.3-flashx in its vision-model enum and uses it in its Image Visual and Video Visual examples. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.3-FlashX, per 1M tokens: Input $0.37, Cached Input $0.075, Output $1.25.'},"glm-5.2":{contextWindow:1e6,maxOutputTokens:128e3,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-5.2 page (https://docs.z.ai/guides/llm/glm-5.2.md) shows Positioning "Flagship Foundation Model", Input Modalities "Text", Context Length "1M" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.2 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.2, per 1M tokens: Input $1.4, Cached Input $0.26, Output $4.4.'},"glm-5.1":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:1.4,output:4.4,cachedInput:.26},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-5.1 page (https://docs.z.ai/guides/llm/glm-5.1.md) shows Positioning "Flagship Foundation Model", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5.1 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5.1, per 1M tokens: Input $1.4, Cached Input $0.26, Output $4.4.'},"glm-5":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:1,output:3.2,cachedInput:.2},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-5 page (https://docs.z.ai/guides/llm/glm-5.md) shows Positioning "Foundation Model", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-5 in its text-model enum, and the Structured Output page (https://docs.z.ai/guides/capabilities/struct-output.md) uses glm-5 in its examples. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-5, per 1M tokens: Input $1, Cached Input $0.2, Output $3.2.'},"glm-4.7":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:.6,output:2.2,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.7 page (https://docs.z.ai/guides/llm/glm-4.7.md), tab GLM-4.7, shows Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.7 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.7, per 1M tokens: Input $0.6, Cached Input $0.11, Output $2.2.'},"glm-4.6":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:.6,output:2.2,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.6 page (https://docs.z.ai/guides/llm/glm-4.6.md) shows Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.6 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.6, per 1M tokens: Input $0.6, Cached Input $0.11, Output $2.2.'},"glm-4.5":{contextWindow:128e3,maxOutputTokens:96e3,pricingPerMTok:{input:.6,output:2.2,cachedInput:.11},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.5 page (https://docs.z.ai/guides/llm/glm-4.5.md), which covers GLM-4.5 and GLM-4.5-Air, shows Input Modalities "Text", Context Length "128K" and Maximum Output Tokens "96K", so vision is false, and says "GLM-4.5 has a total parameter count of 355B with 32B active parameters per forward pass". The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.5 in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.5, per 1M tokens: Input $0.6, Cached Input $0.11, Output $2.2.'},"glm-4.5-air":{contextWindow:128e3,maxOutputTokens:96e3,pricingPerMTok:{input:.2,output:1.1,cachedInput:.03},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.5 page (https://docs.z.ai/guides/llm/glm-4.5.md), which covers GLM-4.5 and GLM-4.5-Air, shows Input Modalities "Text", Context Length "128K" and Maximum Output Tokens "96K", so vision is false, and describes GLM-4.5-Air as having "106B total parameters and 12B active parameters". The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.5-air in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.5-Air, per 1M tokens: Input $0.2, Cached Input $0.03, Output $1.1.'},"glm-4.7-flashx":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:.07,output:.4,cachedInput:.01},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.7 page (https://docs.z.ai/guides/llm/glm-4.7.md), tab GLM-4.7-FlashX, shows Positioning "Lightweight, High-Speed,and Affordable", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.7-flashx in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.7-FlashX, per 1M tokens: Input $0.07, Cached Input $0.01, Output $0.4.'},"glm-4.7-flash":{contextWindow:2e5,maxOutputTokens:128e3,pricingPerMTok:{input:0,output:0,cachedInput:0},vision:!1,status:"production",description:'NeuroLink fallback. The GLM-4.7 page (https://docs.z.ai/guides/llm/glm-4.7.md), tab GLM-4.7-Flash, shows Positioning "Lightweight, Completely Free", Input Modalities "Text", Context Length "200K" and Maximum Output Tokens "128K", so vision is false. The Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) lists glm-4.7-flash in its text-model enum. Pricing page (https://docs.z.ai/guides/overview/pricing.md), row GLM-4.7-Flash: the Input, Cached Input, Cached Input Storage and Output cells each read "Free", recorded here as 0.'}},topModels:["glm-5.3","glm-5.3-flash","glm-5.3-flashx","glm-5.2","glm-5.1","glm-5","glm-4.7","glm-4.6","glm-4.5","glm-4.5-air","glm-4.7-flashx","glm-4.7-flash"],visionModel:"glm-5.3-flash"},capabilities:{text:!0,streaming:!0,tools:"model-dependent",toolsWithStreaming:!0,structuredOutput:!0,structuredOutputWithTools:!1,embeddings:!1,thinking:!1},errorRules:[{pattern:"insufficient balance or no resource package",class:"provider",message:'Z.AI reports an insufficient balance or no resource package (error.code 1113, HTTP 429). The Errors page says: "Insufficient balance or no resource package. Please recharge." (https://docs.z.ai/api-reference/api-code.md)'},{status:401,class:"authentication",message:`Z.AI rejected the request's authentication (HTTP 401; an unauthenticated GET returned error.code 1001, "Authentication parameter not received in Header, unable to authenticate"). The Errors page (https://docs.z.ai/api-reference/api-code.md) lists error codes 1000, 1001, 1003 and 1005 for HTTP 401. Check {apiKeyEnvVar}. The Introduction page says an API key can be created or managed at {setupUrl}`},{pattern:"unknown model",class:"invalid-model",message:'Z.AI reports an unknown model for {model} (error.code 1211, HTTP 400). The Errors page says: "Unknown Model, please check the model code." (https://docs.z.ai/api-reference/api-code.md)'},{status:429,class:"rate-limit",message:'Z.AI returned HTTP 429. The Errors page (https://docs.z.ai/api-reference/api-code.md) lists "Rate limit reached for requests" (error.code 1302) and "The service may be temporarily overloaded, please try again later" (error.code 1305) for this status.'}],quirks:{responseFormatDowngrade:"json-schema-to-json-object"},setup:{url:"https://z.ai/manage-apikey/apikey-list",apiKeyFormat:null,billingPolicy:"free-tier",instructions:['1. Visit: https://z.ai/manage-apikey/apikey-list \u2014 the Quick Start (https://docs.z.ai/guides/overview/quick-start.md) says to access the Z.AI Open Platform (https://z.ai/model-api) and "Register or Login.", then to "Create an API Key" in the API Keys management page and "Copy your API Key for use."',"2. Authentication is HTTP Bearer: the Introduction page (https://docs.z.ai/api-reference/introduction.md) shows the header Authorization: Bearer ZAI_API_KEY",'3. Billing as the vendor states it: the Quick Start says to open the Billing Page (https://z.ai/manage-apikey/billing) "to top up if needed"; the pricing page (https://docs.z.ai/guides/overview/pricing.md) lists per-1M-token prices and reads "Free" for GLM-4.7-Flash, GLM-4.5-Flash and GLM-4.6V-Flash; the Errors page (https://docs.z.ai/api-reference/api-code.md) lists error 1113 as "Insufficient balance or no resource package. Please recharge."',"4. Set {apiKeyEnvVar} in your .env file"],description:`Docs-verified only: the vendor's GET https://api.z.ai/api/paas/v4/models needs a key (it answers HTTP 401 without one), so the twelve model ids come from the Chat Completion reference (https://docs.z.ai/api-reference/llm/chat-completion.md) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.z.ai/api/paas/v4 (the Introduction page, https://docs.z.ai/api-reference/introduction.md, calls it "Z.ai Platform's general API endpoint" and shows POST https://api.z.ai/api/paas/v4/chat/completions with a messages array); the OpenAI Python SDK page (https://docs.z.ai/guides/develop/openai/python.md) says "Z.AI provides interfaces compatible with OpenAI API, which means you can use existing OpenAI SDK code and seamlessly switch to Z.AI's model services by simply modifying the API key and base URL" and adds "In some scenarios, there are still differences between Z.AI and OpenAI interfaces, but this does not affect overall compatibility." The Introduction page's warning says GLM Coding Plan users follow the Coding Plan tutorial to configure a dedicated endpoint, and the Coding Plan Endpoint Guide (https://docs.z.ai/devpack/quick-start.md) lists https://api.z.ai/api/coding/paas/v4 for OpenAI Chat Completions; this entry uses the general endpoint. Unauthenticated GETs made 2026-09-29: /models and /chat/completions each answered HTTP 401 with the body {"error":{"code":"1001","message":"Authentication parameter not received in Header, unable to authenticate"}}, matching the error shape on the Errors page (https://docs.z.ai/api-reference/api-code.md); errorRules carry the 401 status and the messages the Errors page gives for error codes 1113, 1211 and the 429 status. No POST request was sent. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16000) apply to model ids outside the catalog and are placeholders the vendor does not publish: 128000 equals the Context Length label on the GLM-4.5 page and 16000 equals the maximum-output figure the Chat Completion reference gives for GLM-4-32B-0414-128K. Per-model contextWindow and maxOutputTokens values are the decimal forms of the labels the vendor prints (1M, 200K, 128K, 96K). The pricing page prints display names such as GLM-5.3; each price row is matched to the model id of the same name, and a cell that reads "Free" is recorded as 0. capabilities.tools is model-dependent because the Chat Completion reference states that for vision models tools are "Only supported by \`GLM-5.3-Flash\` series, the GLM-4.6V series, and autoglm-phone-multilingual". capabilities.toolsWithStreaming is true because the Thinking Mode page (https://docs.z.ai/guides/capabilities/thinking-mode.md) gives an Interleaved Thinking + Tool Calling example that sends tools with stream=True and reads tool_calls from the streamed deltas; the Tool Streaming Output page (https://docs.z.ai/guides/capabilities/stream-tool.md) documents a separate tool_stream parameter that this entry does not set. The Thinking Mode page also says "thinking blocks should be explicitly preserved and returned together with the tool results.", and its example appends an assistant message carrying reasoning_content and tool_calls before the tool message; this entry does not set quirks.replayReasoningContent. capabilities.structuredOutput is true because the Structured Output page (https://docs.z.ai/guides/capabilities/struct-output.md) documents response_format {"type": "json_object"}; the Chat Completion reference lists text and json_object as the response_format type values, so quirks.responseFormatDowngrade is set to send json_object for schema requests, and no request with json_schema was sent. The Chat Completion reference says of response_format "Only text models support this field.", and the GLM-5.3-Flash/FlashX page (https://docs.z.ai/guides/vlm/glm-5.3-flash.md) lists Structured Output among its Capabilities ("Supports structured output formats such as JSON for seamless system integration."). capabilities.thinking is false and the entry sets none of the thinking or reasoning_effort request parameters; the Chat Completion reference documents both, and the GLM-5.3 page says "GLM-5.3 always operates with reasoning enabled". billingPolicy holds the schema value free-tier because the catalog schema has no unknown value; it is not a vendor statement of signup terms. Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement.`},evidence:{rosterVerified:{date:"2026-09-29",status:401,method:"docs-only \u2014 unauthenticated GET https://api.z.ai/api/paas/v4/models answers 401 without a key, so model ids are taken from https://docs.z.ai/api-reference/llm/chat-completion.md (retrieved 2026-09-29); roster not verified"},authProbe:{date:"2026-09-29",status:401,code:"1001",method:`unauthenticated GET https://api.z.ai/api/paas/v4/models and GET https://api.z.ai/api/paas/v4/chat/completions, no Authorization header \u2014 each HTTP 401, JSON body {"error":{"code":"1001","message":"Authentication parameter not received in Header, unable to authenticate"}}; the code recorded here is the body's error.code string; credential-free, no key used`},billingProbe:{date:"2026-09-29",method:'public pages https://docs.z.ai/guides/overview/quick-start.md (Billing Page "to top up if needed"), https://docs.z.ai/guides/overview/pricing.md (per-1M-token prices; "Free" for GLM-4.7-Flash, GLM-4.5-Flash and GLM-4.6V-Flash) and https://docs.z.ai/api-reference/api-code.md (error 1113 "Insufficient balance or no resource package. Please recharge."); credential-free, no signup performed'},liveMatrix:null,addedInPR:"https://github.com/juspay/neurolink/pull/1860"}}}});function x1e(e){return P.strictObject({baseURL:P.string().optional(),baseURLTemplate:P.string().optional(),extraCredentials:P.array(P.string()).optional(),missingCredentialMessage:P.string().optional(),apiKeyFallbackEnvVars:P.array(P.string()).optional(),envOverrides:P.strictObject({apiKey:P.string().optional(),baseURL:P.string().optional(),model:P.string().optional()}).optional()}).superRefine((t,r)=>{const n=t.baseURL!==void 0,o=t.baseURLTemplate!==void 0;if(e&&n===o&&r.addIssue({code:"custom",path:["baseURL"],message:"wire requires exactly one of baseURL or baseURLTemplate"}),t.extraCredentials!==void 0&&(t.extraCredentials.length!==1?r.addIssue({code:"custom",path:["extraCredentials"],message:"wire.extraCredentials must have exactly one entry"}):tS.test(t.extraCredentials[0])||r.addIssue({code:"custom",path:["extraCredentials",0],message:"wire.extraCredentials entry must be a valid identifier"}),o||r.addIssue({code:"custom",path:["extraCredentials"],message:"wire.extraCredentials is only valid with baseURLTemplate"})),t.missingCredentialMessage!==void 0&&!o&&r.addIssue({code:"custom",path:["missingCredentialMessage"],message:"wire.missingCredentialMessage is only valid with baseURLTemplate"}),o&&t.extraCredentials!==void 0&&t.extraCredentials.length===1){const i=`{${t.extraCredentials[0]}}`;t.baseURLTemplate?.includes(i)||r.addIssue({code:"custom",path:["baseURLTemplate"],message:"wire.baseURLTemplate must contain the extraCredentials[0] placeholder"})}})}function oLr(e){const t=/\{(\d+)(?:,(\d*))?\}/y;let r=!1,n=!1,o=1;for(let i=0;i<e.length;i+=1){const s=e[i],a=n;if(n=!1,s==="\\")i+=1;else if(r)r=s!=="]";else if(s==="[")r=!0;else if(s===")")n=!0;else{if(s==="*"||s==="+"||s==="?"&&a)return!0;if(s==="?")e[i-1]!=="("&&(o*=2);else if(s==="{"){t.lastIndex=i;const l=t.exec(e);if(l&&(a||l[2]===""||Math.max(Number(l[1]),Number(l[2]??0))>G1e))return!0;l&&l[2]!==void 0&&(o*=Number(l[2])-Number(l[1])+1)}}if(o>q1e)return!0}return!1}function iLr(e){try{return new RegExp(e,"i"),!0}catch{return!1}}function sLr(e){try{return new URL(e),!0}catch{return!1}}function aLr(e){return e.issues.map(t=>`${t.path.join(".")}: ${t.message}`).join("; ")}function A1e(e){return typeof e=="object"&&e!==null&&e.inferenceKinds!==void 0}function lLr(e,t="<in-memory entry>"){if(!A1e(e))return uLr(e,t);const r=lCe.safeParse(e);if(!r.success)throw new Error(`Invalid decide catalog file ${t}: ${aLr(r.error)}`);return r.data}function cLr(e){return"inferenceKinds"in e}function uLr(e,t){if(A1e(e))throw new Error(`Invalid provider catalog file ${t}: inferenceKinds is set, so this is a decide entry; parse it with parseCatalogEntry`);const r=z1e.safeParse(e);if(!r.success)throw new Error(`Invalid provider catalog file ${t}: ${r.error.issues.map(n=>`${n.path.join(".")}: ${n.message}`).join("; ")}`);return r.data}var tS,C1e,R9,I1e,R1e,M9,M1e,P1e,O1e,D1e,N1e,L1e,F1e,$1e,P9,J4,O9,U1e,B1e,D9,z1e,X4,Wu,_v,Y4,G1e,q1e,j1e,V1e,H1e,W1e,N9,K1e,J1e,X1e,Y1e,L9,Z1e,Z4,Q1e,eCe,tCe,rCe,nCe,oCe,iCe,sCe,aCe,lCe,dLr=E({"src/lib/providers/catalog/schema.ts"(){"use strict";pn(),tS=/^[A-Za-z_$][A-Za-z0-9_$]*$/,C1e=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,R9=/^\d{4}-\d{2}-\d{2}$/,I1e=P.strictObject({input:P.number(),output:P.number(),cachedInput:P.number().optional()}),R1e=P.enum(["production","preview","retired"]),M9=P.strictObject({contextWindow:P.number().optional(),maxOutputTokens:P.number().optional(),pricingPerMTok:I1e.optional(),vision:P.boolean(),tools:P.boolean().optional(),status:R1e,description:P.string(),enumMember:P.string().regex(tS,"enumMember must be a valid identifier").optional()}),M1e=x1e(!0),P1e=x1e(!1),O1e=["baseURLTemplate","extraCredentials","missingCredentialMessage","apiKeyFallbackEnvVars"],D1e=P.enum(["authentication","rate-limit","invalid-model","network","provider"]),N1e=P.strictObject({status:P.number().optional(),pattern:P.string().optional(),patternStatuses:P.array(P.number().int()).min(1).optional(),class:D1e,message:P.string()}).superRefine((e,t)=>{if(e.status===void 0&&e.pattern===void 0&&t.addIssue({code:"custom",path:[],message:"errorRules entry requires status or pattern"}),e.patternStatuses!==void 0&&e.pattern===void 0&&t.addIssue({code:"custom",path:["patternStatuses"],message:"errorRules patternStatuses requires pattern"}),e.pattern!==void 0)try{new RegExp(e.pattern,"i")}catch{t.addIssue({code:"custom",path:["pattern"],message:"errorRules pattern must compile as a regular expression"})}}),L1e=P.strictObject({maxTokensField:P.literal("max_completion_tokens").optional(),omitStreamOptions:P.boolean().optional(),timeoutErrorClass:P.literal("provider").optional(),messageContentFormat:P.literal("string").optional(),registryDefaultIgnoresModelEnvVar:P.boolean().optional(),responseFormatDowngrade:P.literal("json-schema-to-json-object").optional(),replayReasoningContent:P.boolean().optional(),rejectRequiredToolChoice:P.boolean().optional(),authHeaderStyle:P.literal("x-api-key").optional()}),F1e=P.strictObject({generateMs:P.number().optional(),streamMs:P.number().optional()}),$1e=P.enum(["free-tier","free-with-card","no-free-tier","promotional-credit"]),P9=P.strictObject({url:P.string(),apiKeyFormat:P.string().nullable(),billingPolicy:$1e,instructions:P.array(P.string()),description:P.string().optional()}),J4=P.strictObject({date:P.string().regex(R9,"date must match YYYY-MM-DD"),status:P.number().optional(),code:P.string().optional(),method:P.string().optional()}),O9=P.strictObject({rosterVerified:J4,authProbe:J4.optional(),billingProbe:J4.optional(),liveMatrix:P.strictObject({date:P.string().regex(R9,"date must match YYYY-MM-DD"),result:P.string()}).nullable(),addedInPR:P.string()}),U1e=P.strictObject({text:P.boolean(),streaming:P.boolean(),tools:P.union([P.boolean(),P.literal("model-dependent")]),toolsWithStreaming:P.boolean(),structuredOutput:P.boolean(),structuredOutputWithTools:P.boolean(),embeddings:P.boolean(),thinking:P.boolean()}),B1e=P.strictObject({default:P.string(),fallbacks:P.array(P.string()),fallbackModelName:P.string().optional(),registryDefaultModel:P.string().optional(),defaultContextWindow:P.number().int().positive().max(Number.MAX_SAFE_INTEGER),defaultMaxOutputTokens:P.number().int().positive().max(Number.MAX_SAFE_INTEGER),catalog:P.record(P.string(),M9),topModels:P.array(P.string()).min(1).optional(),visionModel:P.string().optional(),testModel:P.string().min(1).optional()}).superRefine((e,t)=>{const r=new Set(Object.keys(e.catalog));e.fallbacks.length===0&&t.addIssue({code:"custom",path:["fallbacks"],message:"models.fallbacks must have at least one entry"}),r.has(e.default)||t.addIssue({code:"custom",path:["default"],message:"models.default must be a key of models.catalog"}),e.fallbacks.forEach((i,s)=>{r.has(i)||t.addIssue({code:"custom",path:["fallbacks",s],message:"models.fallbacks entry must be a key of models.catalog"})}),e.fallbackModelName!==void 0&&!r.has(e.fallbackModelName)&&t.addIssue({code:"custom",path:["fallbackModelName"],message:"models.fallbackModelName must be a key of models.catalog"});const n=e.fallbackModelName??e.fallbacks[1]??e.fallbacks[0],o=Object.values(e.catalog).filter(i=>i.status!=="retired").length;if(n!==void 0&&n===e.default&&o>1&&t.addIssue({code:"custom",path:e.fallbackModelName!==void 0?["fallbackModelName"]:["fallbacks"],message:`the fallback model resolves to "${n}", which is also models.default \u2014 a fallback identical to the primary cannot fall back. This catalog declares ${o} selectable models, so name a different one (or drop fallbackModelName to let fallbacks[1] apply). Single-model catalogs are exempt.`}),e.registryDefaultModel!==void 0&&!r.has(e.registryDefaultModel)&&t.addIssue({code:"custom",path:["registryDefaultModel"],message:"models.registryDefaultModel must be a key of models.catalog"}),e.topModels!==void 0){e.topModels.forEach((s,a)=>{r.has(s)||t.addIssue({code:"custom",path:["topModels",a],message:"models.topModels entry must be a key of models.catalog"})});const i=new Set;e.topModels.forEach((s,a)=>{i.has(s)&&t.addIssue({code:"custom",path:["topModels",a],message:"models.topModels must not contain duplicate entries"}),i.add(s)})}if(e.visionModel!==void 0){const i=e.catalog[e.visionModel];i?i.vision||t.addIssue({code:"custom",path:["visionModel"],message:"models.visionModel entry must have vision: true"}):t.addIssue({code:"custom",path:["visionModel"],message:"models.visionModel must be a key of models.catalog"})}}),D9={$schema:P.string().optional(),id:P.string().regex(C1e,"id must be kebab-case"),displayName:P.string(),enumTypeName:P.string().regex(tS,"enumTypeName must be a valid identifier").optional(),credentialsKey:P.string().regex(tS,"credentialsKey must be a valid identifier").optional(),aliases:P.array(P.string())},z1e=P.strictObject({...D9,tier:P.literal(2).optional(),wire:M1e,models:B1e,capabilities:U1e,errorRules:P.array(N1e),quirks:L1e.optional(),timeouts:F1e.optional(),autoSelectPriority:P.number().optional(),setup:P9,evidence:O9}),X4=P.number().int().min(100).max(599),Wu=P.number().int().positive(),_v=P.number().positive(),Y4=P.enum(["authentication","invalid_request","max_tokens_exceeded","rate_limit","overloaded","server","timeout","network"]),G1e=255,q1e=4096,j1e=P.string().min(1).max(200).refine(iLr,{message:"messagePattern is not a valid regular expression"}).refine(e=>!oLr(e),{message:"messagePattern must be bounded: an unescaped * or +, an open-ended {n,}, a {n,m} count above 255, or any quantifier on a group, outside a character class, can backtrack catastrophically on an error message. Put ?, or {n,m} up to 255, only on a plain character, a character class or an escape, and keep the counts side by side to 4096 ways in all (each ? is 2, each {n,m} is m-n+1)"}),V1e=P.strictObject({status:P.union([X4,P.array(X4).min(1)]).optional(),statusMin:X4.optional(),messagePattern:j1e.optional(),kind:Y4,retryable:P.boolean().optional()}),H1e=new Set(["__proto__","constructor","prototype"]),W1e=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,N9=P.string().refine(e=>/^[^.\s]+(?:\.[^.\s]+)*$/.test(e)&&e.split(".").every(t=>!H1e.has(t)),{message:"path must be dot-separated segments without whitespace, and must not use __proto__, constructor or prototype"}),K1e=P.string().regex(W1e,"header name must be an HTTP token"),J1e=P.string().refine(e=>e.trim().length>0&&!/[{}]/.test(e.split("{baseURL}").join("")),{message:"endpoint must not be blank and may only use the {baseURL} placeholder"}),X1e=P.strictObject({path:N9,isArray:P.boolean().optional(),formatter:P.enum(["fastapi-validation"]).optional(),kind:Y4.optional(),retryable:P.boolean().optional()}).refine(e=>e.formatter!==void 0==(e.isArray===!0),{path:["formatter"],message:"a body shape sets isArray: true together with a formatter, or neither: an array without a formatter never matches, and a formatter on a body that is not an array reads the text as an empty list"}),Y1e=new Set(["model","state","questions","__proto__","constructor","prototype"]),L9=P.string().regex(/^[A-Za-z][A-Za-z0-9_]*$/,"a media key must start with a letter and use only letters, digits and underscores").refine(e=>!Y1e.has(e),{message:"a media key must not be model, state, questions, __proto__, constructor or prototype"}),Z1e=P.strictObject({imagesKey:L9,videoKey:L9.optional()}).refine(e=>e.imagesKey!==e.videoKey,{path:["videoKey"],message:"decide.media.videoKey must differ from imagesKey: one body key cannot carry both"}),Z4=8,Q1e=P.string().max(64).regex(/^[A-Z][A-Z0-9_]*$/,"an environment variable name must be upper-case letters, digits and underscores, and start with a letter"),eCe=/^https?:\/\/[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*(?::[0-9]{1,5})?$/,tCe=P.string().max(100).regex(eCe,"a trusted origin must be an http(s) origin: a lower-case scheme, host and optional port, with no path, query, fragment or userinfo").refine(sLr,{message:"a trusted origin must parse as a URL (a valid host, port 0 to 65535)"}),rCe=P.string().max(64).regex(/^[a-zA-Z][a-zA-Z0-9]*$/,"a credentials key must be letters and digits, and start with a letter"),nCe=P.strictObject({baseURLEnvVars:P.array(Q1e).min(1).max(Z4),trustedOrigins:P.array(tCe).min(1).max(Z4),credentialBaseURLs:P.array(P.strictObject({key:rCe,field:P.literal("baseURL")})).min(1).max(Z4).optional()}),oCe=P.strictObject({dialect:P.enum(["system-one","openai-decisions"]),order:Wu,baseURLRequired:P.boolean().optional(),baseURLNormalize:P.array(P.enum(["strip-trailing-slash","strip-v1-suffix"])).optional(),baseURLShape:P.enum(["origin"]).optional(),endpoint:J1e,model:P.strictObject({placement:P.enum(["body","body-unless-alias"]),alias:P.string().min(1).optional()}),authHeader:P.enum(["bearer","x-api-key"]).optional(),stateEncoding:P.enum(["text"]).optional(),media:Z1e.optional(),ambientKeyGuard:nCe.optional(),requestIdHeaders:P.array(K1e).optional(),response:P.strictObject({modelPaths:P.array(N9).optional()}).optional(),errors:P.strictObject({rules:P.array(V1e),default:Y4,bodyShapes:P.array(X1e)})}),iCe=M9.extend({contextWindow:Wu.optional(),maxOutputTokens:Wu.optional()}),sCe=P.strictObject({default:P.string(),catalog:P.record(P.string(),iCe),topModels:P.array(P.string()).min(1).optional(),testModel:P.string().min(1).optional()}).superRefine((e,t)=>{if(!Object.hasOwn(e.catalog,e.default))return;const r=e.catalog[e.default];for(const n of["contextWindow","maxOutputTokens"])r[n]===void 0&&t.addIssue({code:"custom",path:["catalog",e.default,n],message:`${n} is required on the default model; the derived model manifest reads it`})}),aCe=P.strictObject({maxStateTokens:Wu,maxQuestions:Wu.optional(),nonAsciiTokensPerChar:_v.optional(),digitTokensPerChar:_v.optional(),symbolTokensPerChar:_v.optional(),astralTokensPerChar:_v.optional(),models:P.record(P.string(),P.strictObject({maxStateTokens:Wu,nonAsciiTokensPerChar:_v.optional()})).optional(),media:P.strictObject({maxImages:Wu,video:P.boolean(),maxRequestBytes:Wu}).optional(),advisory:P.boolean().optional()}),lCe=P.strictObject({...D9,inferenceKinds:P.tuple([P.literal("decide")]),tier:P.literal(2).optional(),wire:P1e,models:sCe,timeouts:P.strictObject({decideMs:Wu.optional()}).optional(),decisionLimits:aCe.optional(),decide:oCe,setup:P9,evidence:O9}).superRefine((e,t)=>{const{wire:r,decide:n}=e,o=(w,T)=>{t.addIssue({code:"custom",path:w,message:T})},i=new Set,s=new Set;n.errors.rules.forEach((w,T)=>{const S=["decide","errors","rules",T];w.status===void 0==(w.statusMin===void 0)&&o(S,"errors.rules entry needs exactly one of status or statusMin");const k=typeof w.status=="number"?[w.status]:w.status??[],A=w.messagePattern===void 0?"":" with the same messagePattern",x=R=>JSON.stringify([R,w.messagePattern??null]);for(const R of k)i.has(x(R))&&o([...S,"status"],`errors.rules lists status ${R} more than once${A}`),i.add(x(R));w.statusMin!==void 0&&(s.has(x(w.statusMin))&&o([...S,"statusMin"],`errors.rules lists statusMin ${w.statusMin} more than once${A}`),s.add(x(w.statusMin)))});const a=new Set(Object.keys(e.models.catalog));a.has(e.models.default)||o(["models","default"],"models.default must be a key of models.catalog");const l=new Set;(e.models.topModels??[]).forEach((w,T)=>{a.has(w)||o(["models","topModels",T],"models.topModels entry must be a key of models.catalog"),l.has(w)&&o(["models","topModels",T],"models.topModels must not contain duplicate entries"),l.add(w)});const{alias:c,placement:u}=n.model;u==="body-unless-alias"&&c===void 0&&o(["decide","model","alias"],"decide.model.alias is required when placement is body-unless-alias"),u==="body"&&c!==void 0&&o(["decide","model","alias"],"decide.model.alias is only valid with placement body-unless-alias"),c!==void 0&&!a.has(c)&&o(["decide","model","alias"],"decide.model.alias must be a key of models.catalog");for(const w of Object.keys(e.decisionLimits?.models??{}))a.has(w)||o(["decisionLimits","models",w],"decisionLimits.models key must be a key of models.catalog");const d=n.media,p=e.decisionLimits?.media;n.dialect==="openai-decisions"?(d!==void 0&&o(["decide","media"],"decide.media is not valid with dialect openai-decisions: that dialect places images in the request input itself and has no body keys for them"),p?.video===!0&&o(["decisionLimits","media","video"],"decisionLimits.media.video must be false with dialect openai-decisions: its request input has no video part"),u!=="body"&&o(["decide","model","placement"],"decide.model.placement must be body with dialect openai-decisions: the model is always a field of the request")):(d!==void 0&&p===void 0&&o(["decide","media"],"decide.media needs decisionLimits.media: without an allowance the base class refuses every image and video, so these keys would never be written"),d===void 0&&p!==void 0&&o(["decisionLimits","media"],"decisionLimits.media needs decide.media: without body keys the engine would prepare a request's media and then leave it out of the body"),d!==void 0&&p!==void 0&&(p.video&&d.videoKey===void 0&&o(["decide","media","videoKey"],"decide.media.videoKey is required when decisionLimits.media.video is true"),!p.video&&d.videoKey!==void 0&&o(["decide","media","videoKey"],"decide.media.videoKey must be omitted when decisionLimits.media.video is false"))),n.baseURLRequired===!0&&!n.endpoint.includes("{baseURL}")&&o(["decide","endpoint"],"decide.endpoint must contain {baseURL} when decide.baseURLRequired is true");const m=new Set;n.errors.bodyShapes.forEach((w,T)=>{const S=`${w.path}|${w.isArray===!0}`;m.has(S)&&o(["decide","errors","bodyShapes",T],"errors.bodyShapes lists the same path and isArray twice"),m.add(S)});const f=new Set;(n.requestIdHeaders??[]).forEach((w,T)=>{f.has(w.toLowerCase())&&o(["decide","requestIdHeaders",T],"requestIdHeaders lists the same header twice; header names are case-insensitive"),f.add(w.toLowerCase())});const g=n.ambientKeyGuard;if(g!==void 0){const w=r.envOverrides?.baseURL??`${e.id.toUpperCase().replace(/-/g,"_")}_BASE_URL`,T=[["baseURLEnvVars",g.baseURLEnvVars,"variable"],["trustedOrigins",g.trustedOrigins,"origin"]];for(const[k,A,x]of T)new Set(A).size!==A.length&&o(["decide","ambientKeyGuard",k],`lists the same ${x} twice`);const S=g.credentialBaseURLs??[];new Set(S.map(k=>`${k.key}.${k.field}`)).size!==S.length&&o(["decide","ambientKeyGuard","credentialBaseURLs"],"lists the same credentials field twice"),g.baseURLEnvVars.includes(w)&&o(["decide","ambientKeyGuard","baseURLEnvVars"],`must not list the provider's own base-URL variable ${w}: setting it already exempts the key`)}for(const w of O1e)r[w]!==void 0&&o(["wire",w],`wire.${w} is not supported on decide entries yet; ConfiguredDecisionProvider does not read it`);const y=r.baseURL!==void 0,v=r.baseURLTemplate!==void 0;n.baseURLRequired===!0?(y||v)&&t.addIssue({code:"custom",path:["wire",y?"baseURL":"baseURLTemplate"],message:"wire must not set baseURL or baseURLTemplate when decide.baseURLRequired is true; the caller supplies the base URL"}):y===v&&t.addIssue({code:"custom",path:["wire","baseURL"],message:"wire requires exactly one of baseURL or baseURLTemplate unless decide.baseURLRequired is true"})})}}),cCe,F9,uCe,pLr=E({"src/lib/providers/catalog/index.generated.ts"(){"use strict";bDr(),TDr(),_Dr(),EDr(),SDr(),kDr(),xDr(),ADr(),CDr(),IDr(),RDr(),MDr(),PDr(),ODr(),DDr(),NDr(),LDr(),FDr(),$Dr(),UDr(),BDr(),zDr(),GDr(),qDr(),jDr(),VDr(),HDr(),WDr(),KDr(),JDr(),XDr(),YDr(),ZDr(),QDr(),eNr(),tNr(),rNr(),nNr(),oNr(),iNr(),sNr(),aNr(),lNr(),cNr(),uNr(),dNr(),pNr(),mNr(),hNr(),fNr(),gNr(),yNr(),vNr(),wNr(),bNr(),TNr(),_Nr(),ENr(),SNr(),kNr(),xNr(),ANr(),CNr(),INr(),RNr(),MNr(),PNr(),ONr(),DNr(),NNr(),LNr(),FNr(),$Nr(),UNr(),BNr(),zNr(),GNr(),qNr(),jNr(),VNr(),HNr(),WNr(),KNr(),JNr(),XNr(),YNr(),ZNr(),QNr(),eLr(),tLr(),rLr(),nLr(),dLr(),cCe=e=>{const t=lLr(e);if(!cLr(t))throw new Error("a catalog file listed as a decide entry parsed as a chat entry");return t},F9=[Gxe,qxe,jxe,Vxe,Hxe,Wxe,Kxe,Jxe,Xxe,Yxe,Zxe,Qxe,eAe,tAe,rAe,nAe,oAe,iAe,sAe,aAe,lAe,cAe,uAe,dAe,pAe,mAe,hAe,fAe,gAe,yAe,vAe,wAe,bAe,TAe,_Ae,EAe,SAe,kAe,xAe,AAe,IAe,RAe,MAe,PAe,OAe,DAe,NAe,LAe,FAe,$Ae,UAe,BAe,zAe,GAe,qAe,jAe,HAe,WAe,KAe,JAe,XAe,YAe,ZAe,QAe,e1e,t1e,r1e,o1e,i1e,s1e,a1e,l1e,u1e,d1e,p1e,m1e,h1e,f1e,g1e,y1e,v1e,w1e,b1e,T1e,_1e,E1e,k1e],uCe=[CAe,VAe,n1e,c1e,S1e].map(cCe)}});async function St(e,t,r){let n;const o=new Promise((i,s)=>{n=setTimeout(()=>{s(new Kl(r||`Operation timed out after ${t}ms`,t))},t)});try{return await Promise.race([e,o])}finally{n!==void 0&&clearTimeout(n)}}async function Ku(e,t){if(!t||typeof t.addEventListener!="function")return e;const r=()=>{const n=new Error("Operation aborted");return n.name="AbortError",n};return t.aborted?(e.catch(()=>{}),Promise.reject(r())):new Promise((n,o)=>{const i=()=>{e.catch(()=>{}),o(r())};t.addEventListener("abort",i,{once:!0}),e.then(s=>{t.removeEventListener("abort",i),n(s)},s=>{t.removeEventListener("abort",i),o(s)})})}async function $9(e,t,r){return St(e(),t,r)}var Kl,jr=E({"src/lib/utils/async/withTimeout.ts"(){"use strict";Kl=class z1r extends Error{constructor(t,r){super(t),this.timeoutMs=r,this.name="TimeoutError",Error.captureStackTrace&&Error.captureStackTrace(this,z1r)}timeoutMs}}});function Gc(e){if(e!==void 0){if(typeof e=="number"){if(e<=0)throw new Error(`Timeout must be positive, got: ${e}`);return e}if(typeof e=="string"){const t=e.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(!t)throw new Error(`Invalid timeout format: ${e}. Use formats like '30s', '2m', '500ms', or '1.5h'`);const r=parseFloat(t[1]);if(r<=0)throw new Error(`Timeout must be positive, got: ${r}`);switch(t[2]||"ms"){case"ms":return r;case"s":return r*1e3;case"m":return r*60*1e3;case"h":return r*60*60*1e3;default:return r}}throw new Error(`Invalid timeout type: ${typeof e}`)}}function mLr(e,t="generate"){if(t==="stream")return eP.streaming;const r=e.toLowerCase().replace("_","-");return eP.providers[r]||eP.global}async function hLr(e,t,r,n){const o=Gc(t);if(!o)return e;let i;const s=new Promise((a,l)=>{const c=setTimeout(()=>{l(new Ma(`${r} ${n} operation timed out after ${o}ms`,o,r,n))},o);i=c,typeof c=="object"&&c&&"unref"in c&&typeof c.unref=="function"&&c.unref()});try{return await Promise.race([e,s])}finally{i!==void 0&&clearTimeout(i)}}function Ra(e,t,r){const n=Gc(e);if(!n)return null;const o=new AbortController,i=()=>{o.abort(new Ma(`${t} ${r} operation timed out after ${e}`,n,t,r))};let s=setTimeout(i,n);return{controller:o,cleanup:()=>{clearTimeout(s)},reset:()=>{o.signal.aborted||(clearTimeout(s),s=setTimeout(i,n))},timeoutMs:n}}function Ev(e,t){return e&&t?AbortSignal.any([e,t]):e??t}function Q4(e,t){if(!e||!t)return{signal:e??t,dispose:()=>{}};const r=new AbortController,n=[e,t],o=[],i=()=>{for(const{source:a,listener:l}of o)a.removeEventListener("abort",l);o.length=0},s=a=>{r.signal.aborted||r.abort(a.reason),i()};for(const a of n){const l=()=>s(a);a.addEventListener("abort",l,{once:!0}),o.push({source:a,listener:l})}for(const a of n)if(a.aborted){s(a);break}return{signal:r.signal,dispose:i}}function dCe(e){const t=new AbortController,r=e.filter(i=>i!==void 0),n=r.find(i=>i.aborted);if(n)return t.abort(n.reason),t;if(r.length===0)return t;const o=AbortSignal.any(r);return o.addEventListener("abort",()=>{t.signal.aborted||t.abort(o.reason)},{once:!0}),t.__nlMergedSignal=o,t}var Ma,eP,oa=E({"src/lib/utils/timeout.ts"(){"use strict";jr(),Ma=class G1r extends Kl{constructor(t,r,n,o){super(t,r),this.timeout=r,this.provider=n,this.operation=o,this.name="TimeoutError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,G1r)}timeout;provider;operation},eP={global:"30s",streaming:"2m",providers:{openai:"30s",bedrock:"45s",vertex:"60s",anthropic:"60s",azure:"30s","google-ai":"30s",huggingface:"2m",ollama:"5m",mistral:"45s",litellm:"5m"},tools:{default:"10s",filesystem:"5s",network:"30s",computation:"2m"}}}}),tP,rS,nS,Sv,rP=E({"src/lib/hitl/hitlErrors.ts"(){"use strict";tP=class extends Error{constructor(e,t){super(e),this.confirmationId=t,this.name="HITLError"}confirmationId},rS=class extends tP{constructor(e,t,r,n){super(e,n),this.toolName=t,this.reason=r,this.name="HITLUserRejectedError"}toolName;reason},nS=class extends tP{constructor(e,t,r){super(e,t),this.timeout=r,this.name="HITLTimeoutError"}timeout},Sv=class extends tP{constructor(e){super(e),this.name="HITLConfigurationError"}}}}),oS={};ie(oS,{CircuitBreaker:()=>oP,ERROR_CODES:()=>qe,ErrorFactory:()=>pe,NeuroLinkError:()=>Me,isAbortError:()=>or,isRecoverableError:()=>nP,isRetriableError:()=>U9,logStructuredError:()=>mCe,withRetry:()=>pCe,withTimeout:()=>Be});async function Be(e,t,r){let n;const o=t>rE?rE:t,i=new Promise((s,a)=>{n=setTimeout(()=>{a(r||new Error(`Operation timed out after ${t}ms`))},o)});try{return await Promise.race([e,i])}finally{clearTimeout(n)}}async function pCe(e,t){const{maxAttempts:r,delayMs:n,isRetriable:o=()=>!0,onRetry:i}=t;let s;for(let a=1;a<=r;a++)try{return await e()}catch(l){if(s=l instanceof Error?l:new Error(String(l)),a===r||!o(s))throw s;i&&i(a,s),await new Promise(c=>setTimeout(c,n))}throw s||new Error("Retry operation failed with no error information")}function or(e){return!!(e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"||e instanceof Me&&e.category==="abort"||e instanceof Error&&(e.message?.includes("This operation was aborted")||e.message?.includes("The operation was aborted")||e.message?.includes("The user aborted a request")||e.message?.includes("Request was aborted")))}function U9(e){return e instanceof Me?e.retriable:e instanceof nS?!1:[/timeout/i,/network/i,/connection/i,/temporary/i,/rate limit/i,/quota/i,/503/i,/502/i,/504/i].some(r=>r.test(e.message))}function nP(e){const t=e;if("retriable"in e&&typeof t.retriable=="boolean")return t.retriable;const r=e.message?.toLowerCase()||"";return!!(r.includes("rate limit")||r.includes("too many requests")||/\b429\b/.test(r)||r.includes("timeout")||r.includes("etimedout")||r.includes("timed out")||r.includes("econnreset")||r.includes("econnrefused")||r.includes("network")||r.includes("socket")||/\b50[0234]\b/.test(r))}function mCe(e,t){const r={...e.toJSON(),...t};switch(e.severity){case"critical":h.error(`[CRITICAL] ${e.message}`,r);break;case"high":h.error(`[HIGH] ${e.message}`,r);break;case"medium":h.warn(`[MEDIUM] ${e.message}`,r);break;case"low":h.info(`[LOW] ${e.message}`,r);break}}var qe,Me,pe,oP,Qe=E({"src/lib/utils/errorHandling.ts"(){"use strict";wf(),z(),ct(),rP(),qe={TOOL_NOT_FOUND:"TOOL_NOT_FOUND",TOOL_EXECUTION_FAILED:"TOOL_EXECUTION_FAILED",TOOL_TIMEOUT:"TOOL_TIMEOUT",TOOL_VALIDATION_FAILED:"TOOL_VALIDATION_FAILED",INVALID_PARAMETERS:"INVALID_PARAMETERS",MISSING_REQUIRED_PARAM:"MISSING_REQUIRED_PARAM",MEMORY_EXHAUSTED:"MEMORY_EXHAUSTED",NETWORK_ERROR:"NETWORK_ERROR",PERMISSION_DENIED:"PERMISSION_DENIED",PROXY_WORKER_LIFECYCLE_FAILED:"PROXY_WORKER_LIFECYCLE_FAILED",PROVIDER_NOT_AVAILABLE:"PROVIDER_NOT_AVAILABLE",PROVIDER_AUTH_FAILED:"PROVIDER_AUTH_FAILED",PROVIDER_QUOTA_EXCEEDED:"PROVIDER_QUOTA_EXCEEDED",OPERATION_ABORTED:"OPERATION_ABORTED",INVALID_CONFIGURATION:"INVALID_CONFIGURATION",MISSING_CONFIGURATION:"MISSING_CONFIGURATION",INVALID_VIDEO_RESOLUTION:"INVALID_VIDEO_RESOLUTION",INVALID_VIDEO_LENGTH:"INVALID_VIDEO_LENGTH",INVALID_VIDEO_ASPECT_RATIO:"INVALID_VIDEO_ASPECT_RATIO",INVALID_VIDEO_AUDIO:"INVALID_VIDEO_AUDIO",INVALID_VIDEO_MODE:"INVALID_VIDEO_MODE",MISSING_VIDEO_IMAGE:"MISSING_VIDEO_IMAGE",EMPTY_VIDEO_PROMPT:"EMPTY_VIDEO_PROMPT",VIDEO_PROMPT_TOO_LONG:"VIDEO_PROMPT_TOO_LONG",EMPTY_IMAGE_PATH:"EMPTY_IMAGE_PATH",INVALID_IMAGE_TYPE:"INVALID_IMAGE_TYPE",IMAGE_TOO_LARGE:"IMAGE_TOO_LARGE",IMAGE_TOO_SMALL:"IMAGE_TOO_SMALL",INVALID_IMAGE_FORMAT:"INVALID_IMAGE_FORMAT",INVALID_IMAGE_SIZE:"INVALID_IMAGE_SIZE",IMAGE_BUFFER_INVALID:"IMAGE_BUFFER_INVALID",FILE_PROCESSING_FAILED:"FILE_PROCESSING_FAILED",CSV_PROCESSING_FAILED:"CSV_PROCESSING_FAILED",PDF_PAGE_LIMIT_EXCEEDED:"PDF_PAGE_LIMIT_EXCEEDED",PDF_AGGREGATE_PAGE_LIMIT_EXCEEDED:"PDF_AGGREGATE_PAGE_LIMIT_EXCEEDED",PDF_AGGREGATE_SIZE_LIMIT_EXCEEDED:"PDF_AGGREGATE_SIZE_LIMIT_EXCEEDED",PDF_PAGE_COUNT_UNVERIFIABLE:"PDF_PAGE_COUNT_UNVERIFIABLE",PDF_PASSWORD_REQUIRED:"PDF_PASSWORD_REQUIRED",PDF_INCORRECT_PASSWORD:"PDF_INCORRECT_PASSWORD",RATE_LIMITER_QUEUE_FULL:"RATE_LIMITER_QUEUE_FULL",RATE_LIMITER_QUEUE_TIMEOUT:"RATE_LIMITER_QUEUE_TIMEOUT",RATE_LIMITER_RESET:"RATE_LIMITER_RESET",SCORER_NOT_FOUND:"SCORER_NOT_FOUND",EVALUATION_VALIDATION_FAILED:"EVALUATION_VALIDATION_FAILED",EVALUATION_TIMEOUT:"EVALUATION_TIMEOUT",EVALUATION_EXECUTION_FAILED:"EVALUATION_EXECUTION_FAILED",MISSING_PPT_PROPERTIES:"MISSING_PPT_PROPERTIES",INVALID_PPT_PAGES:"INVALID_PPT_PAGES",INVALID_PPT_FORMAT:"INVALID_PPT_FORMAT",INVALID_PPT_PROVIDER:"INVALID_PPT_PROVIDER",INVALID_PPT_OUTPUT_OPTIONS:"INVALID_PPT_OUTPUT_OPTIONS",INVALID_PPT_OUTPUT_PATH:"INVALID_PPT_OUTPUT_PATH",INVALID_PPT_LOGO_PATH:"INVALID_PPT_LOGO_PATH",INVALID_PPT_MODE:"INVALID_PPT_MODE",INVALID_PPT_PROMPT:"INVALID_PPT_PROMPT",CSV_INVALID_INPUT:"CSV_INVALID_INPUT",CSV_ROW_INVALID:"CSV_ROW_INVALID",CSV_FILE_ACCESS_FAILED:"CSV_FILE_ACCESS_FAILED",CSV_PARSE_FAILED:"CSV_PARSE_FAILED"},Me=class extends Error{code;category;severity;retriable;retryAfterMs;context;timestamp;toolName;serverId;constructor(e){super(e.message),this.name="NeuroLinkError",this.code=e.code,this.category=e.category,this.severity=e.severity,this.retriable=e.retriable,this.retryAfterMs=e.retryAfterMs,this.context=e.context||{},this.timestamp=new Date,this.toolName=e.toolName,this.serverId=e.serverId,e.originalError&&(this.stack=e.originalError.stack,this.context.originalMessage=e.originalError.message)}toJSON(){return{code:this.code,message:this.message,category:this.category,severity:this.severity,retriable:this.retriable,context:this.context,timestamp:this.timestamp,toolName:this.toolName,serverId:this.serverId}}},pe=class{static toolNotFound(e,t){return new Me({code:qe.TOOL_NOT_FOUND,message:`Tool '${e}' not found`,category:"validation",severity:"medium",retriable:!1,context:{toolName:e,availableTools:t},toolName:e})}static toolExecutionFailed(e,t,r){return new Me({code:qe.TOOL_EXECUTION_FAILED,message:`Tool '${e}' execution failed: ${t.message}`,category:"execution",severity:"high",retriable:!0,originalError:t,toolName:e,serverId:r})}static toolTimeout(e,t,r,n){const o=n?.exhausted?`exhausted its ${n.totalTimeoutMs}ms total budget`:n?.maxAttempts&&n.maxAttempts>1?`timed out after ${t}ms on attempt ${n.attempt??1} of ${n.maxAttempts}`:`timed out after ${t}ms`;return new Me({code:qe.TOOL_TIMEOUT,message:`Tool '${e}' ${o}`,category:"timeout",severity:"high",retriable:n?.exhausted!==!0,context:{timeoutMs:t,...n??{}},toolName:e,serverId:r})}static invalidParameters(e,t,r){return new Me({code:qe.INVALID_PARAMETERS,message:`Invalid parameters for tool '${e}': ${t.message}`,category:"validation",severity:"medium",retriable:!1,context:{providedParams:r},originalError:t,toolName:e})}static networkError(e,t,r){return new Me({code:qe.NETWORK_ERROR,message:`Network error in tool '${e}': ${t.message}`,category:"network",severity:"high",retriable:!0,originalError:t,toolName:e,serverId:r})}static memoryExhausted(e,t){return new Me({code:qe.MEMORY_EXHAUSTED,message:`Memory exhausted during tool '${e}' execution (${t}MB used)`,category:"resource",severity:"critical",retriable:!1,context:{memoryUsageMB:t},toolName:e})}static aborted(e){const t=new Me({code:qe.OPERATION_ABORTED,message:e?.message||"The operation was aborted",category:"abort",severity:"low",retriable:!1,context:{},originalError:e});return t.name="AbortError",t}static missingConfiguration(e,t){return new Me({code:qe.MISSING_CONFIGURATION,message:`Missing required configuration: ${e}`,category:"validation",severity:"high",retriable:!1,context:t||{}})}static invalidConfiguration(e,t,r){return new Me({code:qe.INVALID_CONFIGURATION,message:`Invalid configuration for '${e}': ${t}`,category:"validation",severity:"high",retriable:!1,context:r||{}})}static csvInvalidInput(e){return new Me({code:qe.CSV_INVALID_INPUT,message:e,category:"validation",severity:"medium",retriable:!1,context:{}})}static csvRowInvalid(e,t){return new Me({code:qe.CSV_ROW_INVALID,message:e,category:"validation",severity:"medium",retriable:!1,context:{rowNumber:t}})}static csvFileAccessFailed(e,t,r){return new Me({code:qe.CSV_FILE_ACCESS_FAILED,message:e,category:"resource",severity:"high",retriable:!1,context:{filePath:t},originalError:r})}static csvParseFailed(e,t,r){return new Me({code:qe.CSV_PARSE_FAILED,message:e,category:"execution",severity:"medium",retriable:!1,context:t,originalError:r})}static invalidVideoResolution(e){return new Me({code:qe.INVALID_VIDEO_RESOLUTION,message:`Invalid resolution '${e}'. Use '720p' or '1080p'`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.resolution",providedValue:e,suggestions:["Use '720p' for standard HD","Use '1080p' for full HD"]}})}static invalidVideoLength(e){return new Me({code:qe.INVALID_VIDEO_LENGTH,message:`Invalid length '${e}'. Use 4, 6, or 8 seconds`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.length",providedValue:e,suggestions:["Use 4 for short clips","Use 6 for balanced duration (recommended)","Use 8 for longer videos"]}})}static invalidVideoAspectRatio(e){return new Me({code:qe.INVALID_VIDEO_ASPECT_RATIO,message:`Invalid aspect ratio '${e}'. Use '9:16' or '16:9'`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.aspectRatio",providedValue:e,suggestions:["Use '9:16' for portrait/vertical video","Use '16:9' for landscape"]}})}static invalidVideoAudio(e){return new Me({code:qe.INVALID_VIDEO_AUDIO,message:`Invalid audio option '${e}'. Must be true or false`,category:"validation",severity:"medium",retriable:!1,context:{field:"output.video.audio",providedValue:e,suggestions:["Set audio: true to enable audio generation","Set audio: false to disable"]}})}static invalidVideoMode(){return new Me({code:qe.INVALID_VIDEO_MODE,message:"Video generation requires output.mode to be 'video'",category:"validation",severity:"medium",retriable:!1,context:{field:"output.mode",suggestions:["Set output: { mode: 'video' } for video generation"]}})}static missingVideoImage(){return new Me({code:qe.MISSING_VIDEO_IMAGE,message:"Video generation requires an input image",category:"validation",severity:"medium",retriable:!1,context:{field:"input.images",suggestions:["Provide an image via input.images array","Example: input: { text: 'prompt', images: [imageBuffer] }"]}})}static emptyVideoPrompt(){return new Me({code:qe.EMPTY_VIDEO_PROMPT,message:"Video prompt cannot be empty",category:"validation",severity:"medium",retriable:!1,context:{field:"input.text",suggestions:["Provide a text prompt describing the desired video motion/content","Example: 'Smooth camera pan with dramatic lighting'"]}})}static videoPromptTooLong(e,t){return new Me({code:qe.VIDEO_PROMPT_TOO_LONG,message:`Video prompt must be ${t} characters or less (got ${e})`,category:"validation",severity:"medium",retriable:!1,context:{field:"input.text",providedLength:e,maxLength:t,suggestions:[`Shorten your prompt to ${t} characters or less`,"Focus on key visual elements and camera motion"]}})}static emptyImagePath(){return new Me({code:qe.EMPTY_IMAGE_PATH,message:"Image path or URL cannot be empty",category:"validation",severity:"medium",retriable:!1,context:{field:"input.images",suggestions:["Provide a valid file path or URL"]}})}static invalidImageType(){return new Me({code:qe.INVALID_IMAGE_TYPE,message:"Image must be a Buffer, file path string, or URL",category:"validation",severity:"medium",retriable:!1,context:{field:"input.images",suggestions:["Provide image as Buffer: fs.readFileSync('image.jpg')","Or as file path string: './image.jpg'","Or as URL: 'https://example.com/image.jpg'"]}})}static pdfPageLimitExceeded(e,t,r){const n=[`Split the PDF into smaller files (max ${t} pages each)`,"Extract only the pages you need using a PDF editor","For large files, consider Google AI Studio which supports up to 2000MB file size (though page limits still apply)","Convert specific pages to images manually before processing","Bypass this limit with { enforceLimits: false } (not recommended - may cause API errors or unexpected costs)"];return new Me({code:qe.PDF_PAGE_LIMIT_EXCEEDED,message:`PDF page limit exceeded: ${e} pages detected, but ${r} supports maximum ${t} pages.
|
|
64
64
|
|
|
65
65
|
Alternatives:
|
|
66
66
|
`+n.map((o,i)=>`${i+1}. ${o}`).join(`
|