@juspay/neurolink 12.39.1 → 12.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +6 -2
  2. package/README.md +1 -1
  3. package/dist/auth/middleware/AuthMiddleware.d.ts +1 -1
  4. package/dist/browser/neurolink.min.js +422 -422
  5. package/dist/constants/enums.d.ts +237 -0
  6. package/dist/constants/enums.js +257 -0
  7. package/dist/neurolink.js +46 -21
  8. package/dist/providers/catalog/ai21.json +142 -0
  9. package/dist/providers/catalog/aionlabs.json +144 -0
  10. package/dist/providers/catalog/atlas-cloud.json +203 -0
  11. package/dist/providers/catalog/avian-io.json +227 -0
  12. package/dist/providers/catalog/crusoe.json +229 -0
  13. package/dist/providers/catalog/index.generated.d.ts +1 -1
  14. package/dist/providers/catalog/index.generated.js +60 -0
  15. package/dist/providers/catalog/minimax.json +200 -0
  16. package/dist/providers/catalog/moonshot-ai.json +135 -0
  17. package/dist/providers/catalog/nebius.json +165 -0
  18. package/dist/providers/catalog/prime-intellect.json +217 -0
  19. package/dist/providers/catalog/scaleway.json +177 -0
  20. package/dist/providers/catalog/siliconflow.json +242 -0
  21. package/dist/providers/catalog/stepfun.json +155 -0
  22. package/dist/providers/catalog/subconscious.json +93 -0
  23. package/dist/providers/catalog/tinfoil.json +155 -0
  24. package/dist/providers/catalog/umans-ai.json +174 -0
  25. package/dist/providers/catalog/venice-ai.json +208 -0
  26. package/dist/providers/catalog/vultr-inference.json +220 -0
  27. package/dist/providers/catalog/wafer.json +165 -0
  28. package/dist/providers/catalog/wandb-inference.json +249 -0
  29. package/dist/providers/catalog/z-ai.json +255 -0
  30. package/dist/types/providerCatalog.generated.d.ts +2 -2
  31. package/dist/types/providers.d.ts +80 -0
  32. package/docs-site/static/search-index.json +227 -3
  33. package/package.json +1 -1
@@ -22,15 +22,20 @@ export var AIProviderName;
22
22
  AIProviderName["LLAMACPP"] = "llamacpp";
23
23
  // ── BEGIN GENERATED(provider-members): provider catalog (pnpm run codegen:catalog) ──
24
24
  AIProviderName["ABOVE_DEV"] = "above-dev";
25
+ AIProviderName["AI21"] = "ai21";
25
26
  AIProviderName["AIAND"] = "aiand";
27
+ AIProviderName["AIONLABS"] = "aionlabs";
26
28
  AIProviderName["AMBIENT"] = "ambient";
27
29
  AIProviderName["API_ROUTE"] = "api-route";
30
+ AIProviderName["ATLAS_CLOUD"] = "atlas-cloud";
31
+ AIProviderName["AVIAN_IO"] = "avian-io";
28
32
  AIProviderName["BASETEN"] = "baseten";
29
33
  AIProviderName["BEE_HEOSSI"] = "bee-heossi";
30
34
  AIProviderName["CEREBRAS"] = "cerebras";
31
35
  AIProviderName["CHARM_HYPER"] = "charm-hyper";
32
36
  AIProviderName["CHUTES"] = "chutes";
33
37
  AIProviderName["CLOUDFLARE"] = "cloudflare";
38
+ AIProviderName["CRUSOE"] = "crusoe";
34
39
  AIProviderName["DEEPINFRA"] = "deepinfra";
35
40
  AIProviderName["DEEPSEEK"] = "deepseek";
36
41
  AIProviderName["EMPIRIOLABS"] = "empiriolabs";
@@ -48,20 +53,35 @@ export var AIProviderName;
48
53
  AIProviderName["LILAC"] = "lilac";
49
54
  AIProviderName["LLMTECH"] = "llmtech";
50
55
  AIProviderName["MANCER"] = "mancer";
56
+ AIProviderName["MINIMAX"] = "minimax";
51
57
  AIProviderName["MISTRAL"] = "mistral";
52
58
  AIProviderName["MOARK"] = "moark";
59
+ AIProviderName["MOONSHOT_AI"] = "moonshot-ai";
53
60
  AIProviderName["MORPH"] = "morph";
61
+ AIProviderName["NEBIUS"] = "nebius";
54
62
  AIProviderName["NEURALWATT"] = "neuralwatt";
55
63
  AIProviderName["NOVITA"] = "novita";
56
64
  AIProviderName["OVHCLOUD"] = "ovhcloud";
57
65
  AIProviderName["PARETO_INFERENCE"] = "pareto-inference";
58
66
  AIProviderName["PERPLEXITY"] = "perplexity";
67
+ AIProviderName["PRIME_INTELLECT"] = "prime-intellect";
59
68
  AIProviderName["SAMBANOVA"] = "sambanova";
60
69
  AIProviderName["SARVAM"] = "sarvam";
70
+ AIProviderName["SCALEWAY"] = "scaleway";
71
+ AIProviderName["SILICONFLOW"] = "siliconflow";
72
+ AIProviderName["STEPFUN"] = "stepfun";
73
+ AIProviderName["SUBCONSCIOUS"] = "subconscious";
61
74
  AIProviderName["SYNTHETIC"] = "synthetic";
75
+ AIProviderName["TINFOIL"] = "tinfoil";
62
76
  AIProviderName["TOGETHER_AI"] = "together-ai";
77
+ AIProviderName["UMANS_AI"] = "umans-ai";
63
78
  AIProviderName["UPSTAGE"] = "upstage";
79
+ AIProviderName["VENICE_AI"] = "venice-ai";
80
+ AIProviderName["VULTR_INFERENCE"] = "vultr-inference";
81
+ AIProviderName["WAFER"] = "wafer";
82
+ AIProviderName["WANDB_INFERENCE"] = "wandb-inference";
64
83
  AIProviderName["XAI"] = "xai";
84
+ AIProviderName["Z_AI"] = "z-ai";
65
85
  // ── END GENERATED(provider-members) ──
66
86
  AIProviderName["COHERE"] = "cohere";
67
87
  AIProviderName["REPLICATE"] = "replicate";
@@ -1048,6 +1068,15 @@ export var AboveDevModels;
1048
1068
  AboveDevModels["MIMO_V2_6_FLASH"] = "mimo-v2.6-flash";
1049
1069
  AboveDevModels["MIMO_V2_6_PRO_ULTRASPEED"] = "mimo-v2.6-pro-ultraspeed";
1050
1070
  })(AboveDevModels || (AboveDevModels = {}));
1071
+ export var Ai21Models;
1072
+ (function (Ai21Models) {
1073
+ Ai21Models["JAMBA_LARGE"] = "jamba-large";
1074
+ Ai21Models["JAMBA_MINI"] = "jamba-mini";
1075
+ Ai21Models["JAMBA_LARGE_1_7_2025_07"] = "jamba-large-1.7-2025-07";
1076
+ Ai21Models["JAMBA_MINI_2_2026_01"] = "jamba-mini-2-2026-01";
1077
+ Ai21Models["JAMBA_LARGE_1_7"] = "jamba-large-1.7";
1078
+ Ai21Models["JAMBA_MINI_2"] = "jamba-mini-2";
1079
+ })(Ai21Models || (Ai21Models = {}));
1051
1080
  export var AiandModels;
1052
1081
  (function (AiandModels) {
1053
1082
  AiandModels["OPENAI_GPT_OSS_120B"] = "openai/gpt-oss-120b";
@@ -1062,6 +1091,15 @@ export var AiandModels;
1062
1091
  AiandModels["MOTIF_TECHNOLOGIES_MOTIF_3"] = "motif-technologies/motif-3";
1063
1092
  AiandModels["GOOGLE_GEMMA_4_31B_IT"] = "google/gemma-4-31b-it";
1064
1093
  })(AiandModels || (AiandModels = {}));
1094
+ export var AionlabsModels;
1095
+ (function (AionlabsModels) {
1096
+ AionlabsModels["AION_LABS_AION_3_5"] = "aion-labs/aion-3.5";
1097
+ AionlabsModels["AION_LABS_AION_3_5_MINI"] = "aion-labs/aion-3.5-mini";
1098
+ AionlabsModels["AION_LABS_AION_3_0"] = "aion-labs/aion-3.0";
1099
+ AionlabsModels["AION_LABS_AION_3_0_MINI"] = "aion-labs/aion-3.0-mini";
1100
+ AionlabsModels["AION_LABS_AION_2_0"] = "aion-labs/aion-2.0";
1101
+ AionlabsModels["AION_LABS_AION_RP_LLAMA_3_1_8B"] = "aion-labs/aion-rp-llama-3.1-8b";
1102
+ })(AionlabsModels || (AionlabsModels = {}));
1065
1103
  export var AmbientModels;
1066
1104
  (function (AmbientModels) {
1067
1105
  AmbientModels["AMBIENT_LARGE"] = "ambient/large";
@@ -1080,6 +1118,34 @@ export var ApiRouteModels;
1080
1118
  ApiRouteModels["KIMI_K2_7_CODE"] = "kimi-k2.7-code";
1081
1119
  ApiRouteModels["GLM_5_3_FLASH"] = "glm-5.3-flash";
1082
1120
  })(ApiRouteModels || (ApiRouteModels = {}));
1121
+ export var AtlasCloudModels;
1122
+ (function (AtlasCloudModels) {
1123
+ AtlasCloudModels["DEEPSEEK_AI_DEEPSEEK_V3_2"] = "deepseek-ai/deepseek-v3.2";
1124
+ AtlasCloudModels["DEEPSEEK_AI_DEEPSEEK_V4_FLASH"] = "deepseek-ai/deepseek-v4-flash";
1125
+ AtlasCloudModels["ZAI_ORG_GLM_5_3"] = "zai-org/glm-5.3";
1126
+ AtlasCloudModels["QWEN_QWEN3_235B_A22B_INSTRUCT_2507"] = "Qwen/Qwen3-235B-A22B-Instruct-2507";
1127
+ AtlasCloudModels["DEEPSEEK_AI_DEEPSEEK_V4_PRO"] = "deepseek-ai/deepseek-v4-pro";
1128
+ AtlasCloudModels["ZAI_ORG_GLM_5_1"] = "zai-org/glm-5.1";
1129
+ AtlasCloudModels["MINIMAXAI_MINIMAX_M2_7"] = "minimaxai/minimax-m2.7";
1130
+ AtlasCloudModels["MOONSHOTAI_KIMI_K2_6"] = "moonshotai/kimi-k2.6";
1131
+ AtlasCloudModels["QWEN_QWEN3_5_397B_A17B"] = "qwen/qwen3.5-397b-a17b";
1132
+ AtlasCloudModels["QWEN_QWEN3_5_27B"] = "qwen/qwen3.5-27b";
1133
+ })(AtlasCloudModels || (AtlasCloudModels = {}));
1134
+ export var AvianIoModels;
1135
+ (function (AvianIoModels) {
1136
+ AvianIoModels["DEEPSEEK_DEEPSEEK_V4_PRO_0813"] = "deepseek/deepseek-v4-pro-0813";
1137
+ AvianIoModels["DEEPSEEK_DEEPSEEK_V4_FLASH"] = "deepseek/deepseek-v4-flash";
1138
+ AvianIoModels["DEEPSEEK_DEEPSEEK_V3_2"] = "deepseek/deepseek-v3.2";
1139
+ AvianIoModels["Z_AI_GLM_5_2"] = "z-ai/glm-5.2";
1140
+ AvianIoModels["DEEPSEEK_DEEPSEEK_V4_PRO"] = "deepseek/deepseek-v4-pro";
1141
+ AvianIoModels["MINIMAX_MINIMAX_M2_5"] = "minimax/minimax-m2.5";
1142
+ AvianIoModels["Z_AI_GLM_5"] = "z-ai/glm-5";
1143
+ AvianIoModels["Z_AI_GLM_5_1"] = "z-ai/glm-5.1";
1144
+ AvianIoModels["MOONSHOTAI_KIMI_K2_5"] = "moonshotai/kimi-k2.5";
1145
+ AvianIoModels["MOONSHOTAI_KIMI_K2_6"] = "moonshotai/kimi-k2.6";
1146
+ AvianIoModels["XIAOMI_MIMO_V2_6_FLASH"] = "xiaomi/mimo-v2.6-flash";
1147
+ AvianIoModels["XIAOMI_MIMO_V2_6_PRO"] = "xiaomi/mimo-v2.6-pro";
1148
+ })(AvianIoModels || (AvianIoModels = {}));
1083
1149
  export var BasetenModels;
1084
1150
  (function (BasetenModels) {
1085
1151
  BasetenModels["OPENAI_GPT_OSS_120B"] = "openai/gpt-oss-120b";
@@ -1173,6 +1239,21 @@ export var CloudflareModels;
1173
1239
  CloudflareModels["QWEN_1P5_14B_CHAT_AWQ"] = "@cf/qwen/qwen1.5-14b-chat-awq";
1174
1240
  CloudflareModels["GEMMA_2B_IT_LORA"] = "@cf/google/gemma-2b-it-lora";
1175
1241
  })(CloudflareModels || (CloudflareModels = {}));
1242
+ export var CrusoeModels;
1243
+ (function (CrusoeModels) {
1244
+ CrusoeModels["DEEPSEEK_AI_DEEPSEEK_V4_FLASH"] = "deepseek-ai/DeepSeek-V4-Flash";
1245
+ CrusoeModels["DEEPSEEK_AI_DEEPSEEK_V4_PRO"] = "deepseek-ai/DeepSeek-V4-Pro";
1246
+ CrusoeModels["OPENAI_GPT_OSS_120B"] = "openai/gpt-oss-120b";
1247
+ CrusoeModels["ZAI_GLM_5_3"] = "zai/GLM-5.3";
1248
+ CrusoeModels["MOONSHOTAI_KIMI_K2_6"] = "moonshotai/Kimi-K2.6";
1249
+ CrusoeModels["GOOGLE_GEMMA_4_31B_IT"] = "google/gemma-4-31b-it";
1250
+ CrusoeModels["NVIDIA_NEMOTRON_3_NANO_30B_A3B"] = "nvidia/Nemotron-3-Nano-30B-A3B";
1251
+ CrusoeModels["NVIDIA_NEMOTRON_3_SUPER_120B_A12B"] = "nvidia/Nemotron-3-Super-120B-A12B";
1252
+ CrusoeModels["NVIDIA_NEMOTRON_3_NANO_OMNI_REASONING_30B_A3B"] = "nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B";
1253
+ CrusoeModels["NVIDIA_NEMOTRON_3_5_LIGHTNING_30B_A3B"] = "nvidia/nemotron-3.5-lightning-30b-a3b";
1254
+ CrusoeModels["QWEN_QWEN3_8_27B"] = "qwen/Qwen3.8-27B";
1255
+ CrusoeModels["ZAI_GLM_5_3_FLASH"] = "zai/GLM-5.3-Flash";
1256
+ })(CrusoeModels || (CrusoeModels = {}));
1176
1257
  export var DeepinfraModels;
1177
1258
  (function (DeepinfraModels) {
1178
1259
  DeepinfraModels["DEEPSEEK_AI_DEEPSEEK_V4_FLASH_0731"] = "deepseek-ai/DeepSeek-V4-Flash-0731";
@@ -1412,6 +1493,18 @@ export var MancerModels;
1412
1493
  MancerModels["WEAVER_ALPHA"] = "weaver-alpha";
1413
1494
  MancerModels["DANS_PE_1_3_24B"] = "dans-pe-1.3-24b";
1414
1495
  })(MancerModels || (MancerModels = {}));
1496
+ export var MinimaxModels;
1497
+ (function (MinimaxModels) {
1498
+ MinimaxModels["MINIMAX_M3"] = "MiniMax-M3";
1499
+ MinimaxModels["MINIMAX_M3_1_FLASH_PREVIEW"] = "MiniMax-M3.1-Flash-Preview";
1500
+ MinimaxModels["MINIMAX_M2_7"] = "MiniMax-M2.7";
1501
+ MinimaxModels["MINIMAX_M2_7_HIGHSPEED"] = "MiniMax-M2.7-highspeed";
1502
+ MinimaxModels["MINIMAX_M2_5"] = "MiniMax-M2.5";
1503
+ MinimaxModels["MINIMAX_M2_5_HIGHSPEED"] = "MiniMax-M2.5-highspeed";
1504
+ MinimaxModels["MINIMAX_M2_1"] = "MiniMax-M2.1";
1505
+ MinimaxModels["MINIMAX_M2_1_HIGHSPEED"] = "MiniMax-M2.1-highspeed";
1506
+ MinimaxModels["MINIMAX_M2"] = "MiniMax-M2";
1507
+ })(MinimaxModels || (MinimaxModels = {}));
1415
1508
  export var MistralModels;
1416
1509
  (function (MistralModels) {
1417
1510
  MistralModels["MISTRAL_LARGE_LATEST"] = "mistral-large-latest";
@@ -1456,11 +1549,28 @@ export var MoarkModels;
1456
1549
  MoarkModels["KIMI_K3"] = "kimi-k3";
1457
1550
  MoarkModels["DEEPSEEK_V4_PRO_0813"] = "DeepSeek-V4-Pro-0813";
1458
1551
  })(MoarkModels || (MoarkModels = {}));
1552
+ export var MoonshotAiModels;
1553
+ (function (MoonshotAiModels) {
1554
+ MoonshotAiModels["KIMI_K3"] = "kimi-k3";
1555
+ MoonshotAiModels["KIMI_K2_7_CODE"] = "kimi-k2.7-code";
1556
+ MoonshotAiModels["KIMI_K2_7_CODE_HIGHSPEED"] = "kimi-k2.7-code-highspeed";
1557
+ MoonshotAiModels["KIMI_K2_6"] = "kimi-k2.6";
1558
+ })(MoonshotAiModels || (MoonshotAiModels = {}));
1459
1559
  export var MorphModels;
1460
1560
  (function (MorphModels) {
1461
1561
  MorphModels["MORPH_V3_LARGE"] = "morph-v3-large";
1462
1562
  MorphModels["MORPH_V3_FAST"] = "morph-v3-fast";
1463
1563
  })(MorphModels || (MorphModels = {}));
1564
+ export var NebiusModels;
1565
+ (function (NebiusModels) {
1566
+ NebiusModels["QWEN_QWEN3_235B_A22B_INSTRUCT_2507"] = "Qwen/Qwen3-235B-A22B-Instruct-2507";
1567
+ NebiusModels["DEEPSEEK_AI_DEEPSEEK_V4_FLASH_0731"] = "deepseek-ai/DeepSeek-V4-Flash-0731";
1568
+ NebiusModels["OPENAI_GPT_OSS_120B"] = "openai/gpt-oss-120b";
1569
+ NebiusModels["QWEN_QWEN3_30B_A3B_INSTRUCT_2507"] = "Qwen/Qwen3-30B-A3B-Instruct-2507";
1570
+ NebiusModels["NOUSRESEARCH_HERMES_4_405B"] = "NousResearch/Hermes-4-405B";
1571
+ NebiusModels["NVIDIA_NEMOTRON_3_5_LIGHTNING"] = "nvidia/Nemotron-3_5-Lightning";
1572
+ NebiusModels["OPENBMB_MINICPM_V_4_5"] = "openbmb/MiniCPM-V-4_5";
1573
+ })(NebiusModels || (NebiusModels = {}));
1464
1574
  export var NeuralwattModels;
1465
1575
  (function (NeuralwattModels) {
1466
1576
  NeuralwattModels["GLM_5_3"] = "glm-5.3";
@@ -1509,6 +1619,21 @@ export var PerplexityModels;
1509
1619
  PerplexityModels["SONAR_REASONING_PRO"] = "sonar-reasoning-pro";
1510
1620
  PerplexityModels["SONAR_DEEP_RESEARCH"] = "sonar-deep-research";
1511
1621
  })(PerplexityModels || (PerplexityModels = {}));
1622
+ export var PrimeIntellectModels;
1623
+ (function (PrimeIntellectModels) {
1624
+ PrimeIntellectModels["OPENAI_GPT_4_1_MINI"] = "openai/gpt-4.1-mini";
1625
+ PrimeIntellectModels["OPENAI_GPT_4_1"] = "openai/gpt-4.1";
1626
+ PrimeIntellectModels["ANTHROPIC_CLAUDE_SONNET_4_5"] = "anthropic/claude-sonnet-4.5";
1627
+ PrimeIntellectModels["META_LLAMA_LLAMA_3_3_70B_INSTRUCT"] = "meta-llama/llama-3.3-70b-instruct";
1628
+ PrimeIntellectModels["GOOGLE_GEMINI_2_5_FLASH"] = "google/gemini-2.5-flash";
1629
+ PrimeIntellectModels["QWEN_QWEN3_235B_A22B_INSTRUCT_2507"] = "Qwen/Qwen3-235B-A22B-Instruct-2507";
1630
+ PrimeIntellectModels["Z_AI_GLM_5_3"] = "z-ai/glm-5.3";
1631
+ PrimeIntellectModels["OPENAI_GPT_5_4_MINI"] = "openai/gpt-5.4-mini";
1632
+ PrimeIntellectModels["OPENAI_GPT_OSS_120B"] = "openai/gpt-oss-120b";
1633
+ PrimeIntellectModels["DEEPSEEK_DEEPSEEK_V4_FLASH"] = "deepseek/deepseek-v4-flash";
1634
+ PrimeIntellectModels["ANTHROPIC_CLAUDE_HAIKU_4_5"] = "anthropic/claude-haiku-4.5";
1635
+ PrimeIntellectModels["QWEN_QWEN3_5_122B_A10B"] = "Qwen/Qwen3.5-122B-A10B";
1636
+ })(PrimeIntellectModels || (PrimeIntellectModels = {}));
1512
1637
  export var SambanovaModels;
1513
1638
  (function (SambanovaModels) {
1514
1639
  SambanovaModels["META_LLAMA_3_3_70B_INSTRUCT"] = "Meta-Llama-3.3-70B-Instruct";
@@ -1524,6 +1649,49 @@ export var SarvamModels;
1524
1649
  SarvamModels["SARVAM_105B"] = "sarvam-105b";
1525
1650
  SarvamModels["SARVAM_105B_CONVERSATIONS"] = "sarvam-105b-conversations";
1526
1651
  })(SarvamModels || (SarvamModels = {}));
1652
+ export var ScalewayModels;
1653
+ (function (ScalewayModels) {
1654
+ ScalewayModels["MISTRAL_SMALL_3_2_24B_INSTRUCT_2506"] = "mistral-small-3.2-24b-instruct-2506";
1655
+ ScalewayModels["LLAMA_3_3_70B_INSTRUCT"] = "llama-3.3-70b-instruct";
1656
+ ScalewayModels["QWEN3_235B_A22B_INSTRUCT_2507"] = "qwen3-235b-a22b-instruct-2507";
1657
+ ScalewayModels["GEMMA_4_26B_A4B_IT"] = "gemma-4-26b-a4b-it";
1658
+ ScalewayModels["QWEN3_6_35B_A3B"] = "qwen3.6-35b-a3b";
1659
+ ScalewayModels["QWEN3_8_27B"] = "qwen3.8-27b";
1660
+ ScalewayModels["QWEN3_5_397B_A17B"] = "qwen3.5-397b-a17b";
1661
+ ScalewayModels["DEEPSEEK_V4_FLASH_0731"] = "deepseek-v4-flash-0731";
1662
+ ScalewayModels["GLM_5_2"] = "glm-5.2";
1663
+ ScalewayModels["MISTRAL_MEDIUM_3_5_128B"] = "mistral-medium-3.5-128b";
1664
+ ScalewayModels["GPT_OSS_120B"] = "gpt-oss-120b";
1665
+ })(ScalewayModels || (ScalewayModels = {}));
1666
+ export var SiliconflowModels;
1667
+ (function (SiliconflowModels) {
1668
+ SiliconflowModels["DEEPSEEK_AI_DEEPSEEK_V4_PRO"] = "deepseek-ai/DeepSeek-V4-Pro";
1669
+ SiliconflowModels["DEEPSEEK_AI_DEEPSEEK_V4_FLASH"] = "deepseek-ai/DeepSeek-V4-Flash";
1670
+ SiliconflowModels["DEEPSEEK_AI_DEEPSEEK_V3_2"] = "deepseek-ai/DeepSeek-V3.2";
1671
+ SiliconflowModels["ZAI_ORG_GLM_5_1"] = "zai-org/GLM-5.1";
1672
+ SiliconflowModels["ZAI_ORG_GLM_5"] = "zai-org/GLM-5";
1673
+ SiliconflowModels["MOONSHOTAI_KIMI_K2_6"] = "moonshotai/Kimi-K2.6";
1674
+ SiliconflowModels["MOONSHOTAI_KIMI_K2_5"] = "moonshotai/Kimi-K2.5";
1675
+ SiliconflowModels["QWEN_QWEN3_6_27B"] = "Qwen/Qwen3.6-27B";
1676
+ SiliconflowModels["QWEN_QWEN3_6_35B_A3B"] = "Qwen/Qwen3.6-35B-A3B";
1677
+ SiliconflowModels["QWEN_QWEN3_32B"] = "Qwen/Qwen3-32B";
1678
+ SiliconflowModels["QWEN_QWEN3_VL_32B_INSTRUCT"] = "Qwen/Qwen3-VL-32B-Instruct";
1679
+ SiliconflowModels["GOOGLE_GEMMA_4_31B_IT"] = "google/gemma-4-31B-it";
1680
+ })(SiliconflowModels || (SiliconflowModels = {}));
1681
+ export var StepfunModels;
1682
+ (function (StepfunModels) {
1683
+ StepfunModels["STEP_5_PREVIEW"] = "step-5-preview";
1684
+ StepfunModels["STEP_3_7_FLASH"] = "step-3.7-flash";
1685
+ StepfunModels["STEP_3_5_FLASH"] = "step-3.5-flash";
1686
+ StepfunModels["STEP_3_5_FLASH_2603"] = "step-3.5-flash-2603";
1687
+ StepfunModels["STEP_1O_TURBO_VISION"] = "step-1o-turbo-vision";
1688
+ })(StepfunModels || (StepfunModels = {}));
1689
+ export var SubconsciousModels;
1690
+ (function (SubconsciousModels) {
1691
+ SubconsciousModels["SUBCONSCIOUS_GLM_5_3_MARATHON"] = "subconscious/glm-5.3-marathon";
1692
+ SubconsciousModels["SUBCONSCIOUS_DEEPSEEK_V4_1_FLASH_MARATHON"] = "subconscious/deepseek-v4.1-flash-marathon";
1693
+ SubconsciousModels["SUBCONSCIOUS_TIM_QWEN3_6_27B"] = "subconscious/tim-qwen3.6-27b";
1694
+ })(SubconsciousModels || (SubconsciousModels = {}));
1527
1695
  export var SyntheticModels;
1528
1696
  (function (SyntheticModels) {
1529
1697
  SyntheticModels["SYN_LARGE_TEXT"] = "syn:large:text";
@@ -1538,6 +1706,16 @@ export var SyntheticModels;
1538
1706
  SyntheticModels["HF_QWEN_QWEN3_8_27B"] = "hf:Qwen/Qwen3.8-27B";
1539
1707
  SyntheticModels["HF_ZAI_ORG_GLM_4_7_FLASH"] = "hf:zai-org/GLM-4.7-Flash";
1540
1708
  })(SyntheticModels || (SyntheticModels = {}));
1709
+ export var TinfoilModels;
1710
+ (function (TinfoilModels) {
1711
+ TinfoilModels["KIMI_K3"] = "kimi-k3";
1712
+ TinfoilModels["GPT_OSS_120B"] = "gpt-oss-120b";
1713
+ TinfoilModels["GEMMA4_31B"] = "gemma4-31b";
1714
+ TinfoilModels["LLAMA3_3_70B"] = "llama3-3-70b";
1715
+ TinfoilModels["GLM_5_3"] = "glm-5-3";
1716
+ TinfoilModels["GLM_5_3_FLASH"] = "glm-5-3-flash";
1717
+ TinfoilModels["DEEPSEEK_V4_1_FLASH"] = "deepseek-v4-1-flash";
1718
+ })(TinfoilModels || (TinfoilModels = {}));
1541
1719
  export var TogetherAIModels;
1542
1720
  (function (TogetherAIModels) {
1543
1721
  TogetherAIModels["LLAMA_3_3_70B_INSTRUCT_TURBO"] = "meta-llama/Llama-3.3-70B-Instruct-Turbo";
@@ -1553,6 +1731,16 @@ export var TogetherAIModels;
1553
1731
  TogetherAIModels["GEMMA_2_27B_IT"] = "google/gemma-2-27b-it";
1554
1732
  TogetherAIModels["WIZARDLM_2_8X22B"] = "microsoft/WizardLM-2-8x22B";
1555
1733
  })(TogetherAIModels || (TogetherAIModels = {}));
1734
+ export var UmansAiModels;
1735
+ (function (UmansAiModels) {
1736
+ UmansAiModels["UMANS_CODER"] = "umans-coder";
1737
+ UmansAiModels["UMANS_GLM_5_3"] = "umans-glm-5.3";
1738
+ UmansAiModels["UMANS_DEEPSEEK_V4_FLASH_0731"] = "umans-deepseek-v4-flash-0731";
1739
+ UmansAiModels["UMANS_KIMI_K3"] = "umans-kimi-k3";
1740
+ UmansAiModels["UMANS_GLM_5_3_FLASH"] = "umans-glm-5.3-flash";
1741
+ UmansAiModels["UMANS_DEEPSEEK_V4_1_FLASH"] = "umans-deepseek-v4.1-flash";
1742
+ UmansAiModels["UMANS_FLASH"] = "umans-flash";
1743
+ })(UmansAiModels || (UmansAiModels = {}));
1556
1744
  export var UpstageModels;
1557
1745
  (function (UpstageModels) {
1558
1746
  UpstageModels["SOLAR_PRO4"] = "solar-pro4";
@@ -1566,6 +1754,60 @@ export var UpstageModels;
1566
1754
  UpstageModels["SYN_PRO"] = "syn-pro";
1567
1755
  UpstageModels["SYN_PRO_251021"] = "syn-pro-251021";
1568
1756
  })(UpstageModels || (UpstageModels = {}));
1757
+ export var VeniceAiModels;
1758
+ (function (VeniceAiModels) {
1759
+ VeniceAiModels["ZAI_ORG_GLM_5_2"] = "zai-org-glm-5-2";
1760
+ VeniceAiModels["ZAI_ORG_GLM_5"] = "zai-org-glm-5";
1761
+ VeniceAiModels["ZAI_ORG_GLM_5_1"] = "zai-org-glm-5-1";
1762
+ VeniceAiModels["DEEPSEEK_V4_PRO_0813"] = "deepseek-v4-pro-0813";
1763
+ VeniceAiModels["KIMI_K3"] = "kimi-k3";
1764
+ VeniceAiModels["KIMI_K2_6"] = "kimi-k2-6";
1765
+ VeniceAiModels["QWEN3_VL_235B_A22B"] = "qwen3-vl-235b-a22b";
1766
+ VeniceAiModels["VENICE_UNCENSORED_1_2"] = "venice-uncensored-1-2";
1767
+ VeniceAiModels["GROK_4_7"] = "grok-4-7";
1768
+ VeniceAiModels["CLAUDE_OPUS_4_8"] = "claude-opus-4-8";
1769
+ })(VeniceAiModels || (VeniceAiModels = {}));
1770
+ export var VultrInferenceModels;
1771
+ (function (VultrInferenceModels) {
1772
+ VultrInferenceModels["GLM_5_2"] = "glm-5.2";
1773
+ VultrInferenceModels["DEEPSEEK_V4_1_FLASH"] = "deepseek-v4.1-flash";
1774
+ VultrInferenceModels["QWEN3_8_FLASH_NEXT"] = "qwen3.8-flash-next";
1775
+ VultrInferenceModels["MIMO_V2_6_FLASH_RL"] = "mimo-v2.6-flash-rl";
1776
+ VultrInferenceModels["DEEPSEEK_V4_FLASH_0731"] = "deepseek-v4-flash-0731";
1777
+ VultrInferenceModels["GLM_5_3"] = "glm-5.3";
1778
+ VultrInferenceModels["GLM_5_3_FLASH"] = "glm-5.3-flash";
1779
+ VultrInferenceModels["GLM_5_X_MENTHOL"] = "glm-5.x-menthol";
1780
+ VultrInferenceModels["LAGUNA_S_2_1"] = "laguna-s-2.1";
1781
+ VultrInferenceModels["MIMO_V2_6_PRO_RL"] = "mimo-v2.6-pro-rl";
1782
+ VultrInferenceModels["MINIMAX_M3"] = "minimax-m3";
1783
+ VultrInferenceModels["MUSE_GLIMMER_30B"] = "muse-glimmer-30b";
1784
+ })(VultrInferenceModels || (VultrInferenceModels = {}));
1785
+ export var WaferModels;
1786
+ (function (WaferModels) {
1787
+ WaferModels["GLM_5_3"] = "GLM-5.3";
1788
+ WaferModels["DEEPSEEK_V4_PRO"] = "DeepSeek-V4-Pro";
1789
+ WaferModels["KIMI_K3"] = "Kimi-K3";
1790
+ WaferModels["GLM_5_2"] = "GLM-5.2";
1791
+ WaferModels["QWEN3_8_27B"] = "Qwen3.8-27B";
1792
+ WaferModels["GLM_5_3_FLASH"] = "GLM-5.3-Flash";
1793
+ WaferModels["DEEPSEEK_V4_1_FLASH"] = "DeepSeek-V4.1-Flash";
1794
+ WaferModels["DEEPSEEK_V4_FLASH_0731_FAST"] = "DeepSeek-V4-Flash-0731-Fast";
1795
+ })(WaferModels || (WaferModels = {}));
1796
+ export var WandbInferenceModels;
1797
+ (function (WandbInferenceModels) {
1798
+ WandbInferenceModels["OPENAI_GPT_OSS_120B"] = "openai/gpt-oss-120b";
1799
+ WandbInferenceModels["DEEPSEEK_AI_DEEPSEEK_V4_FLASH_0731"] = "deepseek-ai/DeepSeek-V4-Flash-0731";
1800
+ WandbInferenceModels["META_LLAMA_LLAMA_3_3_70B_INSTRUCT"] = "meta-llama/Llama-3.3-70B-Instruct";
1801
+ WandbInferenceModels["OPENAI_GPT_OSS_20B"] = "openai/gpt-oss-20b";
1802
+ WandbInferenceModels["META_LLAMA_LLAMA_3_1_8B_INSTRUCT"] = "meta-llama/Llama-3.1-8B-Instruct";
1803
+ WandbInferenceModels["ZAI_ORG_GLM_5_2"] = "zai-org/GLM-5.2";
1804
+ WandbInferenceModels["DEEPSEEK_AI_DEEPSEEK_V4_PRO_0813"] = "deepseek-ai/DeepSeek-V4-Pro-0813";
1805
+ WandbInferenceModels["GOOGLE_GEMMA_4_26B_A4B_IT"] = "google/gemma-4-26B-A4B-it";
1806
+ WandbInferenceModels["QWEN_QWEN3_8_27B"] = "Qwen/Qwen3.8-27B";
1807
+ WandbInferenceModels["MOONSHOTAI_KIMI_K2_6"] = "moonshotai/Kimi-K2.6";
1808
+ WandbInferenceModels["DEEPSEEK_AI_DEEPSEEK_V4_1_FLASH"] = "deepseek-ai/DeepSeek-V4.1-Flash";
1809
+ WandbInferenceModels["IBM_GRANITE_GRANITE_4_2_8B"] = "ibm-granite/granite-4.2-8b";
1810
+ })(WandbInferenceModels || (WandbInferenceModels = {}));
1569
1811
  export var XaiModels;
1570
1812
  (function (XaiModels) {
1571
1813
  XaiModels["GROK_4_7"] = "grok-4.7";
@@ -1578,6 +1820,21 @@ export var XaiModels;
1578
1820
  XaiModels["GROK_2_VISION_LATEST"] = "grok-2-vision-latest";
1579
1821
  XaiModels["GROK_BETA"] = "grok-beta";
1580
1822
  })(XaiModels || (XaiModels = {}));
1823
+ export var ZAiModels;
1824
+ (function (ZAiModels) {
1825
+ ZAiModels["GLM_5_3"] = "glm-5.3";
1826
+ ZAiModels["GLM_5_3_FLASH"] = "glm-5.3-flash";
1827
+ ZAiModels["GLM_5_3_FLASHX"] = "glm-5.3-flashx";
1828
+ ZAiModels["GLM_5_2"] = "glm-5.2";
1829
+ ZAiModels["GLM_5_1"] = "glm-5.1";
1830
+ ZAiModels["GLM_5"] = "glm-5";
1831
+ ZAiModels["GLM_4_7"] = "glm-4.7";
1832
+ ZAiModels["GLM_4_6"] = "glm-4.6";
1833
+ ZAiModels["GLM_4_5"] = "glm-4.5";
1834
+ ZAiModels["GLM_4_5_AIR"] = "glm-4.5-air";
1835
+ ZAiModels["GLM_4_7_FLASHX"] = "glm-4.7-flashx";
1836
+ ZAiModels["GLM_4_7_FLASH"] = "glm-4.7-flash";
1837
+ })(ZAiModels || (ZAiModels = {}));
1581
1838
  // ── END GENERATED(models-enums) ──
1582
1839
  /**
1583
1840
  * TypeSafe decision models. Hand-written: TypeSafe is a Tier-3 provider, so
package/dist/neurolink.js CHANGED
@@ -7851,11 +7851,33 @@ Current user's request: ${currentInput}`;
7851
7851
  },
7852
7852
  });
7853
7853
  ttsMetadataSink?.(streamTtsMetadata);
7854
+ // E1b: do NOT snapshot mcpStreamOutcome.toolCalls/toolResults here.
7855
+ // For a provider whose tool loop runs in the background (native Vertex
7856
+ // Claude — see the `allToolCalls`-backed getter in
7857
+ // googleVertex/client.ts), toolCalls/toolResults are live getters that
7858
+ // are still empty at this instant: `createMCPStream` has only just
7859
+ // kicked the loop off, and it fills in as the caller drains
7860
+ // `incrementalStream` below. Reading the getter now and storing the
7861
+ // returned VALUE freezes that empty snapshot forever, because a
7862
+ // property assignment is not a live binding — previously only the
7863
+ // cross-provider fallback branch (handleStreamFallback) ever
7864
+ // reassigned it, so every other path returned an empty array even
7865
+ // after the caller had fully drained a stream with real tool calls.
7866
+ // `streamState.toolCalls`/`toolResults` now start undefined and are
7867
+ // set only by that fallback branch; every read goes through
7868
+ // `currentToolCalls`/`currentToolResults`, which fall through to
7869
+ // `mcpStreamOutcome`'s own (possibly still-live) getter so a read
7870
+ // after the stream completes sees the real, current value. Providers
7871
+ // that populate toolCalls eagerly (a plain array, not a getter) are
7872
+ // unaffected — `mcpStreamOutcome.toolCalls` already holds their final
7873
+ // value the first time it's read.
7854
7874
  const streamState = {
7855
7875
  finishReason: mcpStreamOutcome.finishReason ?? "stop",
7856
- toolCalls: mcpStreamOutcome.toolCalls ?? [],
7857
- toolResults: mcpStreamOutcome.toolResults ?? [],
7876
+ toolCalls: undefined,
7877
+ toolResults: undefined,
7858
7878
  };
7879
+ const currentToolCalls = () => streamState.toolCalls ?? mcpStreamOutcome.toolCalls ?? [];
7880
+ const currentToolResults = () => streamState.toolResults ?? mcpStreamOutcome.toolResults ?? [];
7859
7881
  streamSpan.setAttribute(ATTR.NL_PROVIDER, providerName || "unknown");
7860
7882
  let accumulatedContent = "";
7861
7883
  let chunkCount = 0;
@@ -7942,8 +7964,8 @@ Current user's request: ${currentInput}`;
7942
7964
  !cappedByCallerBudget &&
7943
7965
  !metadata.fallbackAttempted &&
7944
7966
  !enhancedOptions.disableInternalFallback &&
7945
- streamState.toolCalls.length === 0 &&
7946
- streamState.toolResults.length === 0) {
7967
+ currentToolCalls().length === 0 &&
7968
+ currentToolResults().length === 0) {
7947
7969
  const fallbackStream = self.handleStreamFallback(metadata, streamState, originalPrompt, enhancedOptions, providerName, (content) => {
7948
7970
  accumulatedContent += content;
7949
7971
  });
@@ -8073,7 +8095,7 @@ Current user's request: ${currentInput}`;
8073
8095
  provider: finalProvider,
8074
8096
  model: finalModel,
8075
8097
  responseTime: Date.now() - streamStartTime,
8076
- toolsUsed: streamState.toolCalls?.map((t) => t.toolName),
8098
+ toolsUsed: currentToolCalls().map((t) => t.toolName),
8077
8099
  timestamp: Date.now(),
8078
8100
  result: {
8079
8101
  content: accumulatedContent,
@@ -8152,29 +8174,32 @@ Current user's request: ${currentInput}`;
8152
8174
  const streamResult = await this.processStreamResult(processedStream, enhancedOptions, factoryResult);
8153
8175
  streamResult.finishReason =
8154
8176
  streamState.finishReason || streamResult.finishReason;
8155
- // Unresolved #1819 review comment: a top-level cross-provider fallback
8156
- // (handleStreamFallback, inside `processedStream` above) only
8157
- // reassigns `streamState.toolCalls`/`toolResults` once the caller
8158
- // starts draining the stream — strictly AFTER this point, since
8159
- // `processedStream` is a lazy async generator and the
8160
- // `processStreamResult` call above resolves without pulling a single
8161
- // chunk. A plain value copy here (`streamResult.toolCalls =
8162
- // streamState.toolCalls`) would freeze whatever streamState held at
8163
- // THIS instant — the primary attempt's (usually empty) arrays —
8164
- // because a property assignment is not a live binding. Define live
8165
- // getters instead so every later read reflects streamState's current
8166
- // value, mirroring the pattern #1819 already used to keep
8167
- // finishReason/usage/model live via getters over streamState/
8168
- // mcpStreamOutcome.
8177
+ // #1819 / E1b: a top-level cross-provider fallback (handleStreamFallback,
8178
+ // inside `processedStream` above) only reassigns
8179
+ // `streamState.toolCalls`/`toolResults` once the caller starts draining
8180
+ // the stream — strictly AFTER this point, since `processedStream` is a
8181
+ // lazy async generator and the `processStreamResult` call above
8182
+ // resolves without pulling a single chunk. A plain value copy here
8183
+ // (`streamResult.toolCalls = streamState.toolCalls`) would freeze
8184
+ // whatever streamState held at THIS instant — always undefined this
8185
+ // early — because a property assignment is not a live binding. Define
8186
+ // live getters instead, routed through `currentToolCalls`/
8187
+ // `currentToolResults` (see their definition above) so every later
8188
+ // read reflects the fallback override once set, and otherwise falls
8189
+ // through live to `mcpStreamOutcome`'s own getter — which is what
8190
+ // fixes a background-tool-loop provider (native Vertex Claude)
8191
+ // reporting empty toolCalls: that getter is only populated by the time
8192
+ // the caller has finished draining the stream, and this getter is read
8193
+ // after that, not frozen before it.
8169
8194
  Object.defineProperty(streamResult, "toolCalls", {
8170
8195
  enumerable: true,
8171
8196
  configurable: true,
8172
- get: () => streamState.toolCalls,
8197
+ get: () => currentToolCalls(),
8173
8198
  });
8174
8199
  Object.defineProperty(streamResult, "toolResults", {
8175
8200
  enumerable: true,
8176
8201
  configurable: true,
8177
- get: () => streamState.toolResults,
8202
+ get: () => currentToolResults(),
8178
8203
  });
8179
8204
  if (!streamResult.usage) {
8180
8205
  streamResult.usage = mcpStreamOutcome.usage;
@@ -0,0 +1,142 @@
1
+ {
2
+ "$schema": "./provider-catalog.schema.json",
3
+ "id": "ai21",
4
+ "displayName": "AI21 Labs",
5
+ "aliases": [],
6
+ "tier": 2,
7
+ "wire": {
8
+ "baseURL": "https://api.ai21.com/studio/v1"
9
+ },
10
+ "models": {
11
+ "default": "jamba-large",
12
+ "fallbacks": [
13
+ "jamba-mini",
14
+ "jamba-large-1.7-2025-07",
15
+ "jamba-mini-2-2026-01"
16
+ ],
17
+ "fallbackModelName": "jamba-mini",
18
+ "defaultContextWindow": 256000,
19
+ "defaultMaxOutputTokens": 4096,
20
+ "catalog": {
21
+ "jamba-large": {
22
+ "contextWindow": 256000,
23
+ "maxOutputTokens": 4096,
24
+ "pricingPerMTok": {
25
+ "input": 2,
26
+ "output": 8
27
+ },
28
+ "vision": false,
29
+ "status": "production",
30
+ "description": "NeuroLink default. https://docs.ai21.com/docs/jamba-foundation-models (retrieved 2026-09-29) describes Jamba Large as \"Our most powerful and advanced model, designed to handle complex tasks at enterprise scale with superior performance.\"; its Model Details row for Jamba Large lists Max Tokens 256K, Version 1.7, Snapshot 2025-07 and API Endpoint `jamba-large`, and its API Versioning list says `jamba-large` currently points to `jamba-large-1.7-2025-07`. https://docs.ai21.com/reference/jamba-1-6-api-ref (retrieved 2026-09-29) names `jamba-large` and `jamba-mini` as the model names that can be called without specifying a version, and its cURL example sends \"model\": \"jamba-large\". https://www.ai21.com/pricing (retrieved 2026-09-29) lists Jamba Large at $2 / 1M input tokens and $8 / 1M output tokens. The models page gives Input Modality: Text, so vision is false. contextWindow records the page's 256K as 256,000; maxOutputTokens is the Chat request page's statement \"For Jamba models, the maximum allowed value is 4096 tokens.\""
31
+ },
32
+ "jamba-mini": {
33
+ "contextWindow": 256000,
34
+ "maxOutputTokens": 4096,
35
+ "pricingPerMTok": {
36
+ "input": 0.2,
37
+ "output": 0.4
38
+ },
39
+ "vision": false,
40
+ "status": "production",
41
+ "description": "NeuroLink fallback. https://docs.ai21.com/docs/jamba-foundation-models (retrieved 2026-09-29): the Model Details row for Jamba Mini lists Max Tokens 256K, Version 2, Snapshot 2026-01 and API Endpoint `jamba-mini`, and the API Versioning list says `jamba-mini` currently points to `jamba-mini-2-2026-01`. https://www.ai21.com/pricing (retrieved 2026-09-29) describes Jamba Mini as \"Efficient & lightweight model for a wide range of tasks\" at $0.2 / 1M input tokens and $0.4 / 1M output tokens. https://docs.ai21.com/docs/sdk (retrieved 2026-09-29) uses `jamba-mini` in its chat example. The models page gives Input Modality: Text, so vision is false. contextWindow records the page's 256K as 256,000; maxOutputTokens is the Chat request page's statement \"For Jamba models, the maximum allowed value is 4096 tokens.\""
42
+ },
43
+ "jamba-large-1.7-2025-07": {
44
+ "contextWindow": 256000,
45
+ "maxOutputTokens": 4096,
46
+ "vision": false,
47
+ "status": "production",
48
+ "description": "Dated snapshot of Jamba Large. https://docs.ai21.com/docs/jamba-foundation-models (retrieved 2026-09-29) lists it in API Versioning (`jamba-large` currently points to `jamba-large-1.7-2025-07`; `jamba-large-1.7` points to `jamba-large-1.7-2025-07`), and the Model Details row for Jamba Large lists Version 1.7, Snapshot 2025-07 and Max Tokens 256K. The page states: \"We advise using dated versions of the Jamba API to avoid disruptions from model updates and breaking changes.\" Input Modality: Text, so vision is false. Context and output figures are recorded as for `jamba-large` (256K as 256,000; max_tokens 4096 per the Chat request page)."
49
+ },
50
+ "jamba-mini-2-2026-01": {
51
+ "contextWindow": 256000,
52
+ "maxOutputTokens": 4096,
53
+ "vision": false,
54
+ "status": "production",
55
+ "description": "Dated snapshot of Jamba Mini. https://docs.ai21.com/docs/jamba-foundation-models (retrieved 2026-09-29) lists it in API Versioning (`jamba-mini` currently points to `jamba-mini-2-2026-01`; `jamba-mini-2` points to `jamba-mini-2-2026-01`), and the Model Details row for Jamba Mini lists Version 2, Snapshot 2026-01 and Max Tokens 256K. The page states: \"We advise using dated versions of the Jamba API to avoid disruptions from model updates and breaking changes.\" Input Modality: Text, so vision is false. Context and output figures are recorded as for `jamba-mini` (256K as 256,000; max_tokens 4096 per the Chat request page)."
56
+ },
57
+ "jamba-large-1.7": {
58
+ "contextWindow": 256000,
59
+ "maxOutputTokens": 4096,
60
+ "vision": false,
61
+ "status": "production",
62
+ "description": "Version name for Jamba Large. https://docs.ai21.com/docs/jamba-foundation-models (retrieved 2026-09-29) API Versioning list: `jamba-large-1.7` points to `jamba-large-1.7-2025-07`; the Model Details row for Jamba Large lists Version 1.7, Snapshot 2025-07 and Max Tokens 256K. Input Modality: Text, so vision is false. Context and output figures are recorded as for `jamba-large` (256K as 256,000; max_tokens 4096 per the Chat request page)."
63
+ },
64
+ "jamba-mini-2": {
65
+ "contextWindow": 256000,
66
+ "maxOutputTokens": 4096,
67
+ "vision": false,
68
+ "status": "production",
69
+ "description": "Version name for Jamba Mini. https://docs.ai21.com/docs/jamba-foundation-models (retrieved 2026-09-29) API Versioning list: `jamba-mini-2` points to `jamba-mini-2-2026-01`; the Model Details row for Jamba Mini lists Version 2, Snapshot 2026-01 and Max Tokens 256K. Input Modality: Text, so vision is false. Context and output figures are recorded as for `jamba-mini` (256K as 256,000; max_tokens 4096 per the Chat request page)."
70
+ }
71
+ },
72
+ "topModels": [
73
+ "jamba-large",
74
+ "jamba-mini",
75
+ "jamba-large-1.7-2025-07",
76
+ "jamba-mini-2-2026-01",
77
+ "jamba-large-1.7",
78
+ "jamba-mini-2"
79
+ ]
80
+ },
81
+ "capabilities": {
82
+ "text": true,
83
+ "streaming": true,
84
+ "tools": true,
85
+ "toolsWithStreaming": false,
86
+ "structuredOutput": true,
87
+ "structuredOutputWithTools": false,
88
+ "embeddings": false,
89
+ "thinking": false
90
+ },
91
+ "errorRules": [
92
+ {
93
+ "status": 401,
94
+ "class": "authentication",
95
+ "message": "AI21 rejected the API key (HTTP 401; the Chat response page documents 401 as \"Unauthorized (Incorrect API key provided/Invalid Authentication)\"). Check {apiKeyEnvVar}. Create a key: {setupUrl}"
96
+ },
97
+ {
98
+ "pattern": "bad or missing authentication",
99
+ "class": "authentication",
100
+ "message": "AI21 reported bad or missing authentication. Check {apiKeyEnvVar}. Create a key: {setupUrl}"
101
+ },
102
+ {
103
+ "status": 429,
104
+ "class": "rate-limit",
105
+ "message": "AI21 rate limit (HTTP 429; the Chat response page documents 429 as \"Too Many Requests (You are sending requests too quickly.)\"). https://docs.ai21.com/reference/api-rate-limits lists 10 requests per second and 200 requests per minute for Jamba Large and Jamba Mini."
106
+ },
107
+ {
108
+ "status": 503,
109
+ "class": "provider",
110
+ "message": "AI21 returned HTTP 503 (the Chat response page documents 503 as \"Service Unavailable (The engine is currently overloaded, please try again later)\")."
111
+ }
112
+ ],
113
+ "setup": {
114
+ "url": "https://docs.ai21.com/docs/create-api-key",
115
+ "apiKeyFormat": null,
116
+ "billingPolicy": "free-tier",
117
+ "instructions": [
118
+ "1. Visit: https://docs.ai21.com/docs/create-api-key and follow its steps: sign in to AI21 Studio (the page says \"You can sign in using your email address, Google account, GitHub account, or SSO.\"), click Settings in the bottom-left corner of the sidebar, open the API Keys tab, then click Create new key",
119
+ "2. Copy the key when it is shown; the page says \"you won’t be able to view it again\"",
120
+ "3. Free trial: https://docs.ai21.com/docs/usage-cost says \"New accounts are given a $10 credit good for three months on the AI21 platform.\" and, once the trial is exceeded or expires, \"you must provide valid billing information in your account to continue using the AI21 platform\". https://www.ai21.com/pricing shows \"$10 credits for 7 days.\" and \"No credit card needed\" under Free Trial",
121
+ "4. Set {apiKeyEnvVar} in your .env file"
122
+ ],
123
+ "description": "Docs-verified only: GET https://api.ai21.com/studio/v1/models answers 200 with an empty data array without a key, so the model ids come from https://docs.ai21.com/docs/jamba-foundation-models and the roster has not been checked; the entry is not yet live-verified. Chat completions are documented at POST https://api.ai21.com/studio/v1/chat/completions with Bearer authentication (https://docs.ai21.com/reference/jamba-1-6-api-ref, https://docs.ai21.com/reference/authentication); the request takes model and messages and the response carries a choices array, with streaming as server-sent events ending in data: [DONE] (https://docs.ai21.com/reference/jamba-api-response). Unauthenticated GETs made 2026-09-29: /models answered 200 {\"data\":[]}; /chat/completions answered 405 {\"detail\":\"Method Not Allowed\"} with header allow: POST; /library/files (a documented endpoint) answered 400 {\"detail\":\"Bad request: bad or missing authentication.\"}. The 401, 429 and 503 errorRules follow the status codes on the Chat response page; the pattern rule matches the /library/files body text. defaultContextWindow and the per-model contextWindow values hold 256000 as a numeric placeholder for the 256K label printed on the models page; no exact token count is taken from a vendor page. toolsWithStreaming is false because the stream parameter text on the Chat request page says \"Must be False if using tools.\" structuredOutput is true on the basis of the response_format value { \"type\": \"json_object\" } that the Chat request page describes as activating JSON mode. No POST request was sent, so the request fields that 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 AI21."
124
+ },
125
+ "evidence": {
126
+ "rosterVerified": {
127
+ "date": "2026-09-29",
128
+ "method": "docs-only, roster not verified — unauthenticated GET https://api.ai21.com/studio/v1/models answered HTTP 200 with body {\"data\":[]} and no key, so model ids are taken from https://docs.ai21.com/docs/jamba-foundation-models (retrieved 2026-09-29)"
129
+ },
130
+ "authProbe": {
131
+ "date": "2026-09-29",
132
+ "status": 400,
133
+ "method": "unauthenticated GET https://api.ai21.com/studio/v1/library/files (a documented endpoint) — body {\"detail\":\"Bad request: bad or missing authentication.\"}; the same day GET /models answered 200 {\"data\":[]} and GET /chat/completions answered 405 {\"detail\":\"Method Not Allowed\"}; credential-free, no key used"
134
+ },
135
+ "billingProbe": {
136
+ "date": "2026-09-29",
137
+ "method": "public pages https://docs.ai21.com/docs/usage-cost (\"New accounts are given a $10 credit good for three months on the AI21 platform.\") and https://www.ai21.com/pricing (\"Start with a free trial, no credit card required, then pay based on usage.\"; Free Trial: \"$10 credits for 7 days.\" and \"No credit card needed\"); credential-free"
138
+ },
139
+ "liveMatrix": null,
140
+ "addedInPR": "https://github.com/juspay/neurolink/pull/1860"
141
+ }
142
+ }