@agentproto/model-catalog 0.5.0 → 0.6.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 (38) hide show
  1. package/dist/access/index.d.ts +5 -5
  2. package/dist/audio/index.d.ts +1 -1
  3. package/dist/{audio-BbeLA_4x.d.ts → audio-DR0g_ZH_.d.ts} +1 -0
  4. package/dist/{base-C4kz9Dxc.d.ts → base-B8IIoaqg.d.ts} +2 -0
  5. package/dist/{catalog-BPDMuxzf.d.ts → catalog-CLQ-Bo1n.d.ts} +17 -1
  6. package/dist/{chunk-S74S3Q7Z.mjs → chunk-34LOJCOZ.mjs} +3 -3
  7. package/dist/{chunk-S74S3Q7Z.mjs.map → chunk-34LOJCOZ.mjs.map} +1 -1
  8. package/dist/{chunk-VIVKDMAT.mjs → chunk-DUAH5LWG.mjs} +3 -3
  9. package/dist/{chunk-VIVKDMAT.mjs.map → chunk-DUAH5LWG.mjs.map} +1 -1
  10. package/dist/chunk-DW45X6XT.mjs +70 -0
  11. package/dist/chunk-DW45X6XT.mjs.map +1 -0
  12. package/dist/{chunk-FCPS2VGK.mjs → chunk-EXT2CSSJ.mjs} +683 -527
  13. package/dist/chunk-EXT2CSSJ.mjs.map +1 -0
  14. package/dist/{chunk-TQSSXYY5.mjs → chunk-HL2G36MT.mjs} +4 -62
  15. package/dist/chunk-HL2G36MT.mjs.map +1 -0
  16. package/dist/{chunk-GCDMRPDR.mjs → chunk-HWBCMKT2.mjs} +4 -4
  17. package/dist/{chunk-GCDMRPDR.mjs.map → chunk-HWBCMKT2.mjs.map} +1 -1
  18. package/dist/cost/index.mjs +3 -3
  19. package/dist/curation/index.d.ts +4 -4
  20. package/dist/curation/index.mjs +3 -3
  21. package/dist/{evaluate-CVzfLCd0.d.ts → evaluate-Df3GphJP.d.ts} +2 -2
  22. package/dist/{index-DSgqNd3Z.d.ts → index-C2XMLGDa.d.ts} +1 -1
  23. package/dist/{index-CgOxudo5.d.ts → index-D-sc36bL.d.ts} +3 -3
  24. package/dist/index.d.ts +7 -7
  25. package/dist/index.mjs +7 -6
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/llm/index.d.ts +2 -2
  28. package/dist/llm/index.mjs +1 -1
  29. package/dist/overlay/index.d.ts +3 -3
  30. package/dist/picker/index.d.ts +6 -6
  31. package/dist/route-identity/index.d.ts +68 -14
  32. package/dist/route-identity/index.mjs +2842 -19
  33. package/dist/route-identity/index.mjs.map +1 -1
  34. package/dist/schema/index.d.ts +9 -2
  35. package/dist/schema/index.mjs +2 -1
  36. package/package.json +1 -1
  37. package/dist/chunk-FCPS2VGK.mjs.map +0 -1
  38. package/dist/chunk-TQSSXYY5.mjs.map +0 -1
@@ -1,4 +1,5 @@
1
- import { resolvePricing, resolveAlias, OPENROUTER_ROUTES, DEFAULT_PRICING } from '../chunk-FCPS2VGK.mjs';
1
+ import { CatalogProviderSchema } from '../chunk-DW45X6XT.mjs';
2
+ import { resolvePricing, resolveAlias, OPENROUTER_ROUTES, DEFAULT_PRICING } from '../chunk-EXT2CSSJ.mjs';
2
3
  import '../chunk-QHELXPSL.mjs';
3
4
 
4
5
  /**
@@ -3757,9 +3758,2742 @@ var REQUESTY_ROUTES = {
3757
3758
  }
3758
3759
  };
3759
3760
 
3761
+ // src/llm/huggingface-routes.generated.ts
3762
+ var HUGGINGFACE_ROUTES = {
3763
+ "CohereLabs/aya-expanse-32b": {
3764
+ wireId: "CohereLabs/aya-expanse-32b",
3765
+ providers: [
3766
+ {
3767
+ provider: "cohere",
3768
+ status: "live",
3769
+ supportsTools: false,
3770
+ supportsStructuredOutput: false
3771
+ }
3772
+ ]
3773
+ },
3774
+ "CohereLabs/aya-vision-32b": {
3775
+ wireId: "CohereLabs/aya-vision-32b",
3776
+ providers: [
3777
+ {
3778
+ provider: "cohere",
3779
+ status: "live",
3780
+ supportsTools: false,
3781
+ supportsStructuredOutput: false
3782
+ }
3783
+ ]
3784
+ },
3785
+ "CohereLabs/c4ai-command-a-03-2025": {
3786
+ wireId: "CohereLabs/c4ai-command-a-03-2025",
3787
+ providers: [
3788
+ {
3789
+ provider: "cohere",
3790
+ status: "live",
3791
+ supportsTools: true,
3792
+ supportsStructuredOutput: false
3793
+ }
3794
+ ]
3795
+ },
3796
+ "CohereLabs/c4ai-command-r-08-2024": {
3797
+ wireId: "CohereLabs/c4ai-command-r-08-2024",
3798
+ providers: [
3799
+ {
3800
+ provider: "cohere",
3801
+ status: "live",
3802
+ supportsTools: true,
3803
+ supportsStructuredOutput: false
3804
+ }
3805
+ ]
3806
+ },
3807
+ "CohereLabs/c4ai-command-r7b-12-2024": {
3808
+ wireId: "CohereLabs/c4ai-command-r7b-12-2024",
3809
+ providers: [
3810
+ {
3811
+ provider: "cohere",
3812
+ status: "live",
3813
+ supportsTools: true,
3814
+ supportsStructuredOutput: false
3815
+ }
3816
+ ]
3817
+ },
3818
+ "CohereLabs/c4ai-command-r7b-arabic-02-2025": {
3819
+ wireId: "CohereLabs/c4ai-command-r7b-arabic-02-2025",
3820
+ providers: [
3821
+ {
3822
+ provider: "cohere",
3823
+ status: "live",
3824
+ supportsTools: false,
3825
+ supportsStructuredOutput: false
3826
+ }
3827
+ ]
3828
+ },
3829
+ "CohereLabs/command-a-reasoning-08-2025": {
3830
+ wireId: "CohereLabs/command-a-reasoning-08-2025",
3831
+ providers: [
3832
+ {
3833
+ provider: "cohere",
3834
+ status: "live",
3835
+ supportsTools: true,
3836
+ supportsStructuredOutput: false
3837
+ }
3838
+ ]
3839
+ },
3840
+ "CohereLabs/command-a-translate-08-2025": {
3841
+ wireId: "CohereLabs/command-a-translate-08-2025",
3842
+ providers: [
3843
+ {
3844
+ provider: "cohere",
3845
+ status: "live",
3846
+ supportsTools: true,
3847
+ supportsStructuredOutput: false
3848
+ }
3849
+ ]
3850
+ },
3851
+ "CohereLabs/command-a-vision-07-2025": {
3852
+ wireId: "CohereLabs/command-a-vision-07-2025",
3853
+ providers: [
3854
+ {
3855
+ provider: "cohere",
3856
+ status: "live",
3857
+ supportsTools: false,
3858
+ supportsStructuredOutput: false
3859
+ }
3860
+ ]
3861
+ },
3862
+ "CohereLabs/tiny-aya-earth": {
3863
+ wireId: "CohereLabs/tiny-aya-earth",
3864
+ providers: [
3865
+ {
3866
+ provider: "cohere",
3867
+ status: "live",
3868
+ supportsTools: false,
3869
+ supportsStructuredOutput: false
3870
+ }
3871
+ ]
3872
+ },
3873
+ "CohereLabs/tiny-aya-fire": {
3874
+ wireId: "CohereLabs/tiny-aya-fire",
3875
+ providers: [
3876
+ {
3877
+ provider: "cohere",
3878
+ status: "live",
3879
+ supportsTools: false,
3880
+ supportsStructuredOutput: false
3881
+ }
3882
+ ]
3883
+ },
3884
+ "CohereLabs/tiny-aya-global": {
3885
+ wireId: "CohereLabs/tiny-aya-global",
3886
+ providers: [
3887
+ {
3888
+ provider: "cohere",
3889
+ status: "live",
3890
+ supportsTools: false,
3891
+ supportsStructuredOutput: false
3892
+ }
3893
+ ]
3894
+ },
3895
+ "CohereLabs/tiny-aya-water": {
3896
+ wireId: "CohereLabs/tiny-aya-water",
3897
+ providers: [
3898
+ {
3899
+ provider: "cohere",
3900
+ status: "live",
3901
+ supportsTools: false,
3902
+ supportsStructuredOutput: false
3903
+ }
3904
+ ]
3905
+ },
3906
+ "MiniMaxAI/MiniMax-M1-80k": {
3907
+ wireId: "MiniMaxAI/MiniMax-M1-80k",
3908
+ providers: [
3909
+ {
3910
+ provider: "novita",
3911
+ status: "live",
3912
+ contextLength: 1e6,
3913
+ inputPer1M: 0.55,
3914
+ outputPer1M: 2.2,
3915
+ supportsTools: true,
3916
+ supportsStructuredOutput: false
3917
+ }
3918
+ ]
3919
+ },
3920
+ "MiniMaxAI/MiniMax-M2": {
3921
+ wireId: "MiniMaxAI/MiniMax-M2",
3922
+ providers: [
3923
+ {
3924
+ provider: "featherless-ai",
3925
+ status: "live"
3926
+ },
3927
+ {
3928
+ provider: "novita",
3929
+ status: "live",
3930
+ contextLength: 204800,
3931
+ inputPer1M: 0.3,
3932
+ outputPer1M: 1.2,
3933
+ supportsTools: true,
3934
+ supportsStructuredOutput: false
3935
+ }
3936
+ ]
3937
+ },
3938
+ "MiniMaxAI/MiniMax-M2.1": {
3939
+ wireId: "MiniMaxAI/MiniMax-M2.1",
3940
+ providers: [
3941
+ {
3942
+ provider: "featherless-ai",
3943
+ status: "live"
3944
+ },
3945
+ {
3946
+ provider: "novita",
3947
+ status: "live",
3948
+ contextLength: 204800,
3949
+ inputPer1M: 0.3,
3950
+ outputPer1M: 1.2,
3951
+ supportsTools: true,
3952
+ supportsStructuredOutput: false
3953
+ }
3954
+ ]
3955
+ },
3956
+ "MiniMaxAI/MiniMax-M2.5": {
3957
+ wireId: "MiniMaxAI/MiniMax-M2.5",
3958
+ providers: [
3959
+ {
3960
+ provider: "deepinfra",
3961
+ status: "live",
3962
+ contextLength: 196608,
3963
+ inputPer1M: 0.15,
3964
+ outputPer1M: 1.15,
3965
+ supportsTools: true,
3966
+ supportsStructuredOutput: false
3967
+ },
3968
+ {
3969
+ provider: "featherless-ai",
3970
+ status: "live"
3971
+ },
3972
+ {
3973
+ provider: "novita",
3974
+ status: "live",
3975
+ contextLength: 204800,
3976
+ inputPer1M: 0.3,
3977
+ outputPer1M: 1.2,
3978
+ supportsTools: true,
3979
+ supportsStructuredOutput: false
3980
+ }
3981
+ ]
3982
+ },
3983
+ "MiniMaxAI/MiniMax-M2.7": {
3984
+ wireId: "MiniMaxAI/MiniMax-M2.7",
3985
+ providers: [
3986
+ {
3987
+ provider: "deepinfra",
3988
+ status: "live",
3989
+ contextLength: 196608,
3990
+ inputPer1M: 0.25,
3991
+ outputPer1M: 1,
3992
+ supportsTools: false,
3993
+ supportsStructuredOutput: false
3994
+ },
3995
+ {
3996
+ provider: "featherless-ai",
3997
+ status: "live"
3998
+ },
3999
+ {
4000
+ provider: "fireworks-ai",
4001
+ status: "live",
4002
+ contextLength: 196608,
4003
+ inputPer1M: 0.3,
4004
+ outputPer1M: 1.2,
4005
+ supportsTools: true,
4006
+ supportsStructuredOutput: false
4007
+ },
4008
+ {
4009
+ provider: "novita",
4010
+ status: "live",
4011
+ contextLength: 204800,
4012
+ inputPer1M: 0.3,
4013
+ outputPer1M: 1.2,
4014
+ supportsTools: true,
4015
+ supportsStructuredOutput: false
4016
+ },
4017
+ {
4018
+ provider: "together",
4019
+ status: "live",
4020
+ contextLength: 196608,
4021
+ inputPer1M: 0.3,
4022
+ outputPer1M: 1.2,
4023
+ supportsTools: true,
4024
+ supportsStructuredOutput: true
4025
+ }
4026
+ ]
4027
+ },
4028
+ "MiniMaxAI/MiniMax-M3": {
4029
+ wireId: "MiniMaxAI/MiniMax-M3",
4030
+ providers: [
4031
+ {
4032
+ provider: "deepinfra",
4033
+ status: "live",
4034
+ contextLength: 524288,
4035
+ inputPer1M: 0.3,
4036
+ outputPer1M: 1.2,
4037
+ supportsTools: true,
4038
+ supportsStructuredOutput: false
4039
+ },
4040
+ {
4041
+ provider: "featherless-ai",
4042
+ status: "live"
4043
+ },
4044
+ {
4045
+ provider: "fireworks-ai",
4046
+ status: "live",
4047
+ contextLength: 512e3,
4048
+ inputPer1M: 0.3,
4049
+ outputPer1M: 1.2,
4050
+ supportsTools: true,
4051
+ supportsStructuredOutput: false
4052
+ },
4053
+ {
4054
+ provider: "novita",
4055
+ status: "live",
4056
+ contextLength: 1e6,
4057
+ inputPer1M: 0.3,
4058
+ outputPer1M: 1.2,
4059
+ supportsTools: true,
4060
+ supportsStructuredOutput: false
4061
+ },
4062
+ {
4063
+ provider: "together",
4064
+ status: "live",
4065
+ contextLength: 524288,
4066
+ inputPer1M: 0.3,
4067
+ outputPer1M: 1.2,
4068
+ supportsTools: true,
4069
+ supportsStructuredOutput: true
4070
+ }
4071
+ ]
4072
+ },
4073
+ "Qwen/Qwen2.5-72B-Instruct": {
4074
+ wireId: "Qwen/Qwen2.5-72B-Instruct",
4075
+ providers: [
4076
+ {
4077
+ provider: "deepinfra",
4078
+ status: "live",
4079
+ contextLength: 32768,
4080
+ inputPer1M: 0.36,
4081
+ outputPer1M: 0.4,
4082
+ supportsTools: true,
4083
+ supportsStructuredOutput: true
4084
+ },
4085
+ {
4086
+ provider: "featherless-ai",
4087
+ status: "live"
4088
+ },
4089
+ {
4090
+ provider: "novita",
4091
+ status: "live",
4092
+ contextLength: 32e3,
4093
+ inputPer1M: 0.38,
4094
+ outputPer1M: 0.4,
4095
+ supportsTools: true,
4096
+ supportsStructuredOutput: false
4097
+ }
4098
+ ]
4099
+ },
4100
+ "Qwen/Qwen2.5-7B-Instruct": {
4101
+ wireId: "Qwen/Qwen2.5-7B-Instruct",
4102
+ providers: [
4103
+ {
4104
+ provider: "featherless-ai",
4105
+ status: "live"
4106
+ },
4107
+ {
4108
+ provider: "together",
4109
+ status: "live",
4110
+ contextLength: 32768,
4111
+ inputPer1M: 0.3,
4112
+ outputPer1M: 0.3,
4113
+ supportsTools: true,
4114
+ supportsStructuredOutput: true
4115
+ }
4116
+ ]
4117
+ },
4118
+ "Qwen/Qwen2.5-Coder-32B-Instruct": {
4119
+ wireId: "Qwen/Qwen2.5-Coder-32B-Instruct",
4120
+ providers: [
4121
+ {
4122
+ provider: "featherless-ai",
4123
+ status: "live"
4124
+ },
4125
+ {
4126
+ provider: "nscale",
4127
+ status: "live",
4128
+ contextLength: 131072,
4129
+ inputPer1M: 0.06,
4130
+ outputPer1M: 0.2,
4131
+ supportsTools: false,
4132
+ supportsStructuredOutput: true
4133
+ }
4134
+ ]
4135
+ },
4136
+ "Qwen/Qwen2.5-Coder-3B-Instruct": {
4137
+ wireId: "Qwen/Qwen2.5-Coder-3B-Instruct",
4138
+ providers: [
4139
+ {
4140
+ provider: "featherless-ai",
4141
+ status: "live"
4142
+ },
4143
+ {
4144
+ provider: "nscale",
4145
+ status: "live",
4146
+ contextLength: 32768,
4147
+ inputPer1M: 0.01,
4148
+ outputPer1M: 0.03,
4149
+ supportsTools: false,
4150
+ supportsStructuredOutput: true
4151
+ }
4152
+ ]
4153
+ },
4154
+ "Qwen/Qwen2.5-Coder-7B-Instruct": {
4155
+ wireId: "Qwen/Qwen2.5-Coder-7B-Instruct",
4156
+ providers: [
4157
+ {
4158
+ provider: "featherless-ai",
4159
+ status: "live"
4160
+ },
4161
+ {
4162
+ provider: "nscale",
4163
+ status: "live",
4164
+ contextLength: 131072,
4165
+ inputPer1M: 0.01,
4166
+ outputPer1M: 0.03,
4167
+ supportsTools: false,
4168
+ supportsStructuredOutput: true
4169
+ }
4170
+ ]
4171
+ },
4172
+ "Qwen/Qwen2.5-VL-72B-Instruct": {
4173
+ wireId: "Qwen/Qwen2.5-VL-72B-Instruct",
4174
+ providers: [
4175
+ {
4176
+ provider: "featherless-ai",
4177
+ status: "live"
4178
+ },
4179
+ {
4180
+ provider: "ovhcloud",
4181
+ status: "live",
4182
+ contextLength: 32768,
4183
+ inputPer1M: 1.01,
4184
+ outputPer1M: 1.01,
4185
+ supportsTools: false,
4186
+ supportsStructuredOutput: true
4187
+ }
4188
+ ]
4189
+ },
4190
+ "Qwen/Qwen3-14B": {
4191
+ wireId: "Qwen/Qwen3-14B",
4192
+ providers: [
4193
+ {
4194
+ provider: "deepinfra",
4195
+ status: "live",
4196
+ contextLength: 40960,
4197
+ inputPer1M: 0.12,
4198
+ outputPer1M: 0.24,
4199
+ supportsTools: true,
4200
+ supportsStructuredOutput: false
4201
+ },
4202
+ {
4203
+ provider: "featherless-ai",
4204
+ status: "live"
4205
+ },
4206
+ {
4207
+ provider: "nscale",
4208
+ status: "live",
4209
+ contextLength: 40960,
4210
+ inputPer1M: 0.07,
4211
+ outputPer1M: 0.2,
4212
+ supportsTools: true,
4213
+ supportsStructuredOutput: false
4214
+ }
4215
+ ]
4216
+ },
4217
+ "Qwen/Qwen3-235B-A22B": {
4218
+ wireId: "Qwen/Qwen3-235B-A22B",
4219
+ providers: [
4220
+ {
4221
+ provider: "featherless-ai",
4222
+ status: "live"
4223
+ },
4224
+ {
4225
+ provider: "novita",
4226
+ status: "live",
4227
+ contextLength: 40960,
4228
+ inputPer1M: 0.2,
4229
+ outputPer1M: 0.8,
4230
+ supportsTools: false,
4231
+ supportsStructuredOutput: false
4232
+ },
4233
+ {
4234
+ provider: "nscale",
4235
+ status: "live",
4236
+ contextLength: 32e3,
4237
+ inputPer1M: 0.2,
4238
+ outputPer1M: 0.6,
4239
+ supportsTools: true,
4240
+ supportsStructuredOutput: true
4241
+ }
4242
+ ]
4243
+ },
4244
+ "Qwen/Qwen3-235B-A22B-Instruct-2507": {
4245
+ wireId: "Qwen/Qwen3-235B-A22B-Instruct-2507",
4246
+ providers: [
4247
+ {
4248
+ provider: "deepinfra",
4249
+ status: "live",
4250
+ contextLength: 262144,
4251
+ inputPer1M: 0.09,
4252
+ outputPer1M: 0.55,
4253
+ supportsTools: true,
4254
+ supportsStructuredOutput: true
4255
+ },
4256
+ {
4257
+ provider: "novita",
4258
+ status: "live",
4259
+ contextLength: 131072,
4260
+ inputPer1M: 0.09,
4261
+ outputPer1M: 0.58,
4262
+ supportsTools: true,
4263
+ supportsStructuredOutput: true
4264
+ },
4265
+ {
4266
+ provider: "nscale",
4267
+ status: "live",
4268
+ contextLength: 32768,
4269
+ inputPer1M: 0.2,
4270
+ outputPer1M: 0.6,
4271
+ supportsTools: true,
4272
+ supportsStructuredOutput: true
4273
+ },
4274
+ {
4275
+ provider: "scaleway",
4276
+ status: "live",
4277
+ inputPer1M: 0.855,
4278
+ outputPer1M: 2.565,
4279
+ supportsTools: true,
4280
+ supportsStructuredOutput: true
4281
+ }
4282
+ ]
4283
+ },
4284
+ "Qwen/Qwen3-235B-A22B-Thinking-2507": {
4285
+ wireId: "Qwen/Qwen3-235B-A22B-Thinking-2507",
4286
+ providers: [
4287
+ {
4288
+ provider: "deepinfra",
4289
+ status: "live",
4290
+ contextLength: 262144,
4291
+ inputPer1M: 0.23,
4292
+ outputPer1M: 2.3,
4293
+ supportsTools: true,
4294
+ supportsStructuredOutput: false
4295
+ },
4296
+ {
4297
+ provider: "featherless-ai",
4298
+ status: "live"
4299
+ },
4300
+ {
4301
+ provider: "novita",
4302
+ status: "live",
4303
+ contextLength: 131072,
4304
+ inputPer1M: 0.3,
4305
+ outputPer1M: 3,
4306
+ supportsTools: true,
4307
+ supportsStructuredOutput: false
4308
+ }
4309
+ ]
4310
+ },
4311
+ "Qwen/Qwen3-32B": {
4312
+ wireId: "Qwen/Qwen3-32B",
4313
+ providers: [
4314
+ {
4315
+ provider: "deepinfra",
4316
+ status: "live",
4317
+ contextLength: 40960,
4318
+ inputPer1M: 0.08,
4319
+ outputPer1M: 0.28,
4320
+ supportsTools: true,
4321
+ supportsStructuredOutput: false
4322
+ },
4323
+ {
4324
+ provider: "featherless-ai",
4325
+ status: "live"
4326
+ },
4327
+ {
4328
+ provider: "nscale",
4329
+ status: "live",
4330
+ contextLength: 40960,
4331
+ inputPer1M: 0.08,
4332
+ outputPer1M: 0.25,
4333
+ supportsTools: true,
4334
+ supportsStructuredOutput: false
4335
+ }
4336
+ ]
4337
+ },
4338
+ "Qwen/Qwen3-4B-Instruct-2507": {
4339
+ wireId: "Qwen/Qwen3-4B-Instruct-2507",
4340
+ providers: [
4341
+ {
4342
+ provider: "featherless-ai",
4343
+ status: "live"
4344
+ },
4345
+ {
4346
+ provider: "nscale",
4347
+ status: "live",
4348
+ contextLength: 262144,
4349
+ inputPer1M: 0.01,
4350
+ outputPer1M: 0.03,
4351
+ supportsTools: true,
4352
+ supportsStructuredOutput: true
4353
+ }
4354
+ ]
4355
+ },
4356
+ "Qwen/Qwen3-4B-Thinking-2507": {
4357
+ wireId: "Qwen/Qwen3-4B-Thinking-2507",
4358
+ providers: [
4359
+ {
4360
+ provider: "featherless-ai",
4361
+ status: "live"
4362
+ },
4363
+ {
4364
+ provider: "nscale",
4365
+ status: "live",
4366
+ contextLength: 262144,
4367
+ inputPer1M: 0.01,
4368
+ outputPer1M: 0.03,
4369
+ supportsTools: true,
4370
+ supportsStructuredOutput: true
4371
+ }
4372
+ ]
4373
+ },
4374
+ "Qwen/Qwen3-8B": {
4375
+ wireId: "Qwen/Qwen3-8B",
4376
+ providers: [
4377
+ {
4378
+ provider: "featherless-ai",
4379
+ status: "live"
4380
+ },
4381
+ {
4382
+ provider: "nscale",
4383
+ status: "live",
4384
+ contextLength: 40960,
4385
+ inputPer1M: 0.07,
4386
+ outputPer1M: 0.18,
4387
+ supportsTools: true,
4388
+ supportsStructuredOutput: false
4389
+ }
4390
+ ]
4391
+ },
4392
+ "Qwen/Qwen3-Coder-30B-A3B-Instruct": {
4393
+ wireId: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
4394
+ providers: [
4395
+ {
4396
+ provider: "featherless-ai",
4397
+ status: "live"
4398
+ },
4399
+ {
4400
+ provider: "scaleway",
4401
+ status: "live",
4402
+ inputPer1M: 0.228,
4403
+ outputPer1M: 0.912,
4404
+ supportsTools: true,
4405
+ supportsStructuredOutput: true
4406
+ }
4407
+ ]
4408
+ },
4409
+ "Qwen/Qwen3-Coder-480B-A35B-Instruct": {
4410
+ wireId: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
4411
+ providers: [
4412
+ {
4413
+ provider: "featherless-ai",
4414
+ status: "live"
4415
+ },
4416
+ {
4417
+ provider: "novita",
4418
+ status: "live",
4419
+ contextLength: 262144,
4420
+ inputPer1M: 0.38,
4421
+ outputPer1M: 1.55,
4422
+ supportsTools: true,
4423
+ supportsStructuredOutput: true
4424
+ }
4425
+ ]
4426
+ },
4427
+ "Qwen/Qwen3-Coder-Next": {
4428
+ wireId: "Qwen/Qwen3-Coder-Next",
4429
+ providers: [
4430
+ {
4431
+ provider: "featherless-ai",
4432
+ status: "live"
4433
+ },
4434
+ {
4435
+ provider: "novita",
4436
+ status: "live",
4437
+ contextLength: 262144,
4438
+ inputPer1M: 0.2,
4439
+ outputPer1M: 1.5,
4440
+ supportsTools: true,
4441
+ supportsStructuredOutput: false
4442
+ }
4443
+ ]
4444
+ },
4445
+ "Qwen/Qwen3-Next-80B-A3B-Instruct": {
4446
+ wireId: "Qwen/Qwen3-Next-80B-A3B-Instruct",
4447
+ providers: [
4448
+ {
4449
+ provider: "featherless-ai",
4450
+ status: "live"
4451
+ },
4452
+ {
4453
+ provider: "novita",
4454
+ status: "live",
4455
+ contextLength: 131072,
4456
+ inputPer1M: 0.15,
4457
+ outputPer1M: 1.5,
4458
+ supportsTools: true,
4459
+ supportsStructuredOutput: false
4460
+ }
4461
+ ]
4462
+ },
4463
+ "Qwen/Qwen3-VL-235B-A22B-Instruct": {
4464
+ wireId: "Qwen/Qwen3-VL-235B-A22B-Instruct",
4465
+ providers: [
4466
+ {
4467
+ provider: "novita",
4468
+ status: "live",
4469
+ contextLength: 131072,
4470
+ inputPer1M: 0.3,
4471
+ outputPer1M: 1.5,
4472
+ supportsTools: true,
4473
+ supportsStructuredOutput: true
4474
+ }
4475
+ ]
4476
+ },
4477
+ "Qwen/Qwen3-VL-235B-A22B-Thinking": {
4478
+ wireId: "Qwen/Qwen3-VL-235B-A22B-Thinking",
4479
+ providers: [
4480
+ {
4481
+ provider: "featherless-ai",
4482
+ status: "live"
4483
+ },
4484
+ {
4485
+ provider: "novita",
4486
+ status: "live",
4487
+ contextLength: 131072,
4488
+ inputPer1M: 0.98,
4489
+ outputPer1M: 3.95,
4490
+ supportsTools: true,
4491
+ supportsStructuredOutput: false
4492
+ }
4493
+ ]
4494
+ },
4495
+ "Qwen/Qwen3-VL-30B-A3B-Instruct": {
4496
+ wireId: "Qwen/Qwen3-VL-30B-A3B-Instruct",
4497
+ providers: [
4498
+ {
4499
+ provider: "featherless-ai",
4500
+ status: "live"
4501
+ },
4502
+ {
4503
+ provider: "novita",
4504
+ status: "live",
4505
+ contextLength: 131072,
4506
+ inputPer1M: 0.2,
4507
+ outputPer1M: 0.7,
4508
+ supportsTools: true,
4509
+ supportsStructuredOutput: true
4510
+ }
4511
+ ]
4512
+ },
4513
+ "Qwen/Qwen3.5-122B-A10B": {
4514
+ wireId: "Qwen/Qwen3.5-122B-A10B",
4515
+ providers: [
4516
+ {
4517
+ provider: "deepinfra",
4518
+ status: "live",
4519
+ contextLength: 262144,
4520
+ inputPer1M: 0.29,
4521
+ outputPer1M: 2.4,
4522
+ supportsTools: true,
4523
+ supportsStructuredOutput: false
4524
+ },
4525
+ {
4526
+ provider: "novita",
4527
+ status: "live",
4528
+ contextLength: 262144,
4529
+ inputPer1M: 0.4,
4530
+ outputPer1M: 3.2,
4531
+ supportsTools: true,
4532
+ supportsStructuredOutput: false
4533
+ }
4534
+ ]
4535
+ },
4536
+ "Qwen/Qwen3.5-27B": {
4537
+ wireId: "Qwen/Qwen3.5-27B",
4538
+ providers: [
4539
+ {
4540
+ provider: "deepinfra",
4541
+ status: "live",
4542
+ contextLength: 262144,
4543
+ inputPer1M: 0.26,
4544
+ outputPer1M: 2.6,
4545
+ supportsTools: true,
4546
+ supportsStructuredOutput: true
4547
+ },
4548
+ {
4549
+ provider: "featherless-ai",
4550
+ status: "live"
4551
+ },
4552
+ {
4553
+ provider: "novita",
4554
+ status: "live",
4555
+ contextLength: 262144,
4556
+ inputPer1M: 0.3,
4557
+ outputPer1M: 2.4,
4558
+ supportsTools: true,
4559
+ supportsStructuredOutput: false
4560
+ }
4561
+ ]
4562
+ },
4563
+ "Qwen/Qwen3.5-35B-A3B": {
4564
+ wireId: "Qwen/Qwen3.5-35B-A3B",
4565
+ providers: [
4566
+ {
4567
+ provider: "deepinfra",
4568
+ status: "live",
4569
+ contextLength: 262144,
4570
+ inputPer1M: 0.14,
4571
+ outputPer1M: 1,
4572
+ supportsTools: true,
4573
+ supportsStructuredOutput: true
4574
+ },
4575
+ {
4576
+ provider: "novita",
4577
+ status: "live",
4578
+ contextLength: 262144,
4579
+ inputPer1M: 0.25,
4580
+ outputPer1M: 2,
4581
+ supportsTools: true,
4582
+ supportsStructuredOutput: false
4583
+ }
4584
+ ]
4585
+ },
4586
+ "Qwen/Qwen3.5-397B-A17B": {
4587
+ wireId: "Qwen/Qwen3.5-397B-A17B",
4588
+ providers: [
4589
+ {
4590
+ provider: "deepinfra",
4591
+ status: "live",
4592
+ contextLength: 262144,
4593
+ inputPer1M: 0.45,
4594
+ outputPer1M: 3,
4595
+ supportsTools: true,
4596
+ supportsStructuredOutput: true
4597
+ },
4598
+ {
4599
+ provider: "featherless-ai",
4600
+ status: "live"
4601
+ },
4602
+ {
4603
+ provider: "novita",
4604
+ status: "live",
4605
+ contextLength: 262144,
4606
+ inputPer1M: 0.6,
4607
+ outputPer1M: 3.6,
4608
+ supportsTools: true,
4609
+ supportsStructuredOutput: false
4610
+ },
4611
+ {
4612
+ provider: "ovhcloud",
4613
+ status: "live",
4614
+ contextLength: 262144,
4615
+ inputPer1M: 0.71,
4616
+ outputPer1M: 4.25,
4617
+ supportsTools: true,
4618
+ supportsStructuredOutput: true
4619
+ },
4620
+ {
4621
+ provider: "scaleway",
4622
+ status: "live",
4623
+ inputPer1M: 0.684,
4624
+ outputPer1M: 4.104,
4625
+ supportsTools: true,
4626
+ supportsStructuredOutput: true
4627
+ }
4628
+ ]
4629
+ },
4630
+ "Qwen/Qwen3.5-9B": {
4631
+ wireId: "Qwen/Qwen3.5-9B",
4632
+ providers: [
4633
+ {
4634
+ provider: "deepinfra",
4635
+ status: "live",
4636
+ contextLength: 262144,
4637
+ inputPer1M: 0.1,
4638
+ outputPer1M: 0.15,
4639
+ supportsTools: true,
4640
+ supportsStructuredOutput: true
4641
+ },
4642
+ {
4643
+ provider: "featherless-ai",
4644
+ status: "live"
4645
+ },
4646
+ {
4647
+ provider: "ovhcloud",
4648
+ status: "live",
4649
+ contextLength: 262144,
4650
+ inputPer1M: 0.12,
4651
+ outputPer1M: 0.18,
4652
+ supportsTools: true,
4653
+ supportsStructuredOutput: true
4654
+ },
4655
+ {
4656
+ provider: "together",
4657
+ status: "live",
4658
+ contextLength: 262144,
4659
+ inputPer1M: 0.17,
4660
+ outputPer1M: 0.25,
4661
+ supportsTools: true,
4662
+ supportsStructuredOutput: true
4663
+ }
4664
+ ]
4665
+ },
4666
+ "Qwen/Qwen3.6-27B": {
4667
+ wireId: "Qwen/Qwen3.6-27B",
4668
+ providers: [
4669
+ {
4670
+ provider: "deepinfra",
4671
+ status: "live",
4672
+ contextLength: 262144,
4673
+ inputPer1M: 0.32,
4674
+ outputPer1M: 3.2,
4675
+ supportsTools: true,
4676
+ supportsStructuredOutput: true
4677
+ },
4678
+ {
4679
+ provider: "featherless-ai",
4680
+ status: "live"
4681
+ },
4682
+ {
4683
+ provider: "ovhcloud",
4684
+ status: "live",
4685
+ contextLength: 262144,
4686
+ inputPer1M: 0.47,
4687
+ outputPer1M: 3.19,
4688
+ supportsTools: true,
4689
+ supportsStructuredOutput: true
4690
+ }
4691
+ ]
4692
+ },
4693
+ "Qwen/Qwen3.6-35B-A3B": {
4694
+ wireId: "Qwen/Qwen3.6-35B-A3B",
4695
+ providers: [
4696
+ {
4697
+ provider: "deepinfra",
4698
+ status: "live",
4699
+ contextLength: 262144,
4700
+ inputPer1M: 0.15,
4701
+ outputPer1M: 0.95,
4702
+ supportsTools: true,
4703
+ supportsStructuredOutput: true
4704
+ },
4705
+ {
4706
+ provider: "featherless-ai",
4707
+ status: "live"
4708
+ },
4709
+ {
4710
+ provider: "scaleway",
4711
+ status: "live",
4712
+ inputPer1M: 0.285,
4713
+ outputPer1M: 1.71,
4714
+ supportsTools: true,
4715
+ supportsStructuredOutput: true
4716
+ }
4717
+ ]
4718
+ },
4719
+ "Sao10K/L3-8B-Lunaris-v1": {
4720
+ wireId: "Sao10K/L3-8B-Lunaris-v1",
4721
+ providers: [
4722
+ {
4723
+ provider: "featherless-ai",
4724
+ status: "live"
4725
+ },
4726
+ {
4727
+ provider: "novita",
4728
+ status: "live",
4729
+ contextLength: 8192,
4730
+ inputPer1M: 0.05,
4731
+ outputPer1M: 0.05,
4732
+ supportsTools: false,
4733
+ supportsStructuredOutput: false
4734
+ }
4735
+ ]
4736
+ },
4737
+ "Sao10K/L3-8B-Stheno-v3.2": {
4738
+ wireId: "Sao10K/L3-8B-Stheno-v3.2",
4739
+ providers: [
4740
+ {
4741
+ provider: "featherless-ai",
4742
+ status: "live"
4743
+ },
4744
+ {
4745
+ provider: "novita",
4746
+ status: "live",
4747
+ contextLength: 8192,
4748
+ inputPer1M: 0.05,
4749
+ outputPer1M: 0.05,
4750
+ supportsTools: false,
4751
+ supportsStructuredOutput: false
4752
+ }
4753
+ ]
4754
+ },
4755
+ "XiaomiMiMo/MiMo-V2.5-Pro": {
4756
+ wireId: "XiaomiMiMo/MiMo-V2.5-Pro",
4757
+ providers: [
4758
+ {
4759
+ provider: "deepinfra",
4760
+ status: "live",
4761
+ contextLength: 1048576,
4762
+ inputPer1M: 1,
4763
+ outputPer1M: 3,
4764
+ supportsTools: true,
4765
+ supportsStructuredOutput: false
4766
+ }
4767
+ ]
4768
+ },
4769
+ "aisingapore/Gemma-SEA-LION-v4-27B-IT": {
4770
+ wireId: "aisingapore/Gemma-SEA-LION-v4-27B-IT",
4771
+ providers: [
4772
+ {
4773
+ provider: "featherless-ai",
4774
+ status: "live"
4775
+ },
4776
+ {
4777
+ provider: "publicai",
4778
+ status: "live",
4779
+ inputPer1M: 0.2,
4780
+ outputPer1M: 0.4,
4781
+ supportsTools: false,
4782
+ supportsStructuredOutput: true
4783
+ }
4784
+ ]
4785
+ },
4786
+ "aisingapore/Qwen-SEA-LION-v4-32B-IT": {
4787
+ wireId: "aisingapore/Qwen-SEA-LION-v4-32B-IT",
4788
+ providers: [
4789
+ {
4790
+ provider: "featherless-ai",
4791
+ status: "live"
4792
+ },
4793
+ {
4794
+ provider: "publicai",
4795
+ status: "live",
4796
+ inputPer1M: 0.25,
4797
+ outputPer1M: 0.5,
4798
+ supportsTools: true,
4799
+ supportsStructuredOutput: true
4800
+ }
4801
+ ]
4802
+ },
4803
+ "allenai/Olmo-3-7B-Instruct": {
4804
+ wireId: "allenai/Olmo-3-7B-Instruct",
4805
+ providers: [
4806
+ {
4807
+ provider: "publicai",
4808
+ status: "live",
4809
+ inputPer1M: 0.1,
4810
+ outputPer1M: 0.2,
4811
+ supportsTools: true,
4812
+ supportsStructuredOutput: false
4813
+ }
4814
+ ]
4815
+ },
4816
+ "alpindale/WizardLM-2-8x22B": {
4817
+ wireId: "alpindale/WizardLM-2-8x22B",
4818
+ providers: [
4819
+ {
4820
+ provider: "novita",
4821
+ status: "live",
4822
+ contextLength: 65535,
4823
+ inputPer1M: 0.62,
4824
+ outputPer1M: 0.62,
4825
+ supportsTools: false,
4826
+ supportsStructuredOutput: false
4827
+ }
4828
+ ]
4829
+ },
4830
+ "baidu/ERNIE-4.5-VL-424B-A47B-Base-PT": {
4831
+ wireId: "baidu/ERNIE-4.5-VL-424B-A47B-Base-PT",
4832
+ providers: [
4833
+ {
4834
+ provider: "novita",
4835
+ status: "live",
4836
+ contextLength: 123e3,
4837
+ inputPer1M: 0.42,
4838
+ outputPer1M: 1.25,
4839
+ supportsTools: false,
4840
+ supportsStructuredOutput: false
4841
+ }
4842
+ ]
4843
+ },
4844
+ "deepcogito/cogito-671b-v2.1": {
4845
+ wireId: "deepcogito/cogito-671b-v2.1",
4846
+ providers: [
4847
+ {
4848
+ provider: "together",
4849
+ status: "live",
4850
+ contextLength: 163840,
4851
+ inputPer1M: 1.25,
4852
+ outputPer1M: 1.25,
4853
+ supportsTools: false,
4854
+ supportsStructuredOutput: false
4855
+ }
4856
+ ]
4857
+ },
4858
+ "deepcogito/cogito-671b-v2.1-FP8": {
4859
+ wireId: "deepcogito/cogito-671b-v2.1-FP8",
4860
+ providers: [
4861
+ {
4862
+ provider: "together",
4863
+ status: "live",
4864
+ contextLength: 163840,
4865
+ inputPer1M: 1.25,
4866
+ outputPer1M: 1.25,
4867
+ supportsTools: false,
4868
+ supportsStructuredOutput: false
4869
+ }
4870
+ ]
4871
+ },
4872
+ "deepreinforce-ai/Ornith-1.0-35B": {
4873
+ wireId: "deepreinforce-ai/Ornith-1.0-35B",
4874
+ providers: [
4875
+ {
4876
+ provider: "deepinfra",
4877
+ status: "live",
4878
+ contextLength: 262144,
4879
+ inputPer1M: 0.1,
4880
+ outputPer1M: 0.75,
4881
+ supportsTools: true,
4882
+ supportsStructuredOutput: true
4883
+ }
4884
+ ]
4885
+ },
4886
+ "deepreinforce-ai/Ornith-1.0-35B-FP8": {
4887
+ wireId: "deepreinforce-ai/Ornith-1.0-35B-FP8",
4888
+ providers: [
4889
+ {
4890
+ provider: "deepinfra",
4891
+ status: "live",
4892
+ contextLength: 262144,
4893
+ inputPer1M: 0.1,
4894
+ outputPer1M: 0.75,
4895
+ supportsTools: true,
4896
+ supportsStructuredOutput: true
4897
+ }
4898
+ ]
4899
+ },
4900
+ "deepseek-ai/DeepSeek-R1": {
4901
+ wireId: "deepseek-ai/DeepSeek-R1",
4902
+ providers: [
4903
+ {
4904
+ provider: "novita",
4905
+ status: "live",
4906
+ contextLength: 64e3,
4907
+ inputPer1M: 0.7,
4908
+ outputPer1M: 2.5,
4909
+ supportsTools: false,
4910
+ supportsStructuredOutput: true
4911
+ }
4912
+ ]
4913
+ },
4914
+ "deepseek-ai/DeepSeek-R1-0528": {
4915
+ wireId: "deepseek-ai/DeepSeek-R1-0528",
4916
+ providers: [
4917
+ {
4918
+ provider: "deepinfra",
4919
+ status: "live",
4920
+ contextLength: 163840,
4921
+ inputPer1M: 0.5,
4922
+ outputPer1M: 2.15,
4923
+ supportsTools: false,
4924
+ supportsStructuredOutput: false
4925
+ },
4926
+ {
4927
+ provider: "featherless-ai",
4928
+ status: "live"
4929
+ },
4930
+ {
4931
+ provider: "novita",
4932
+ status: "live",
4933
+ contextLength: 163840,
4934
+ inputPer1M: 0.7,
4935
+ outputPer1M: 2.5,
4936
+ supportsTools: true,
4937
+ supportsStructuredOutput: true
4938
+ }
4939
+ ]
4940
+ },
4941
+ "deepseek-ai/DeepSeek-R1-Distill-Llama-70B": {
4942
+ wireId: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
4943
+ providers: [
4944
+ {
4945
+ provider: "featherless-ai",
4946
+ status: "live"
4947
+ },
4948
+ {
4949
+ provider: "novita",
4950
+ status: "live",
4951
+ contextLength: 8192,
4952
+ inputPer1M: 0.8,
4953
+ outputPer1M: 0.8,
4954
+ supportsTools: false,
4955
+ supportsStructuredOutput: false
4956
+ }
4957
+ ]
4958
+ },
4959
+ "deepseek-ai/DeepSeek-R1-Distill-Llama-8B": {
4960
+ wireId: "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
4961
+ providers: [
4962
+ {
4963
+ provider: "featherless-ai",
4964
+ status: "live"
4965
+ },
4966
+ {
4967
+ provider: "nscale",
4968
+ status: "live",
4969
+ contextLength: 131072,
4970
+ inputPer1M: 0.05,
4971
+ outputPer1M: 0.05,
4972
+ supportsTools: false,
4973
+ supportsStructuredOutput: true
4974
+ }
4975
+ ]
4976
+ },
4977
+ "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B": {
4978
+ wireId: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
4979
+ providers: [
4980
+ {
4981
+ provider: "featherless-ai",
4982
+ status: "live"
4983
+ },
4984
+ {
4985
+ provider: "nscale",
4986
+ status: "live",
4987
+ contextLength: 131072,
4988
+ inputPer1M: 0.2,
4989
+ outputPer1M: 0.2,
4990
+ supportsTools: false,
4991
+ supportsStructuredOutput: true
4992
+ }
4993
+ ]
4994
+ },
4995
+ "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B": {
4996
+ wireId: "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",
4997
+ providers: [
4998
+ {
4999
+ provider: "featherless-ai",
5000
+ status: "live"
5001
+ },
5002
+ {
5003
+ provider: "nscale",
5004
+ status: "live",
5005
+ contextLength: 131072,
5006
+ inputPer1M: 0.15,
5007
+ outputPer1M: 0.15,
5008
+ supportsTools: false,
5009
+ supportsStructuredOutput: false
5010
+ }
5011
+ ]
5012
+ },
5013
+ "deepseek-ai/DeepSeek-V3": {
5014
+ wireId: "deepseek-ai/DeepSeek-V3",
5015
+ providers: [
5016
+ {
5017
+ provider: "deepinfra",
5018
+ status: "live",
5019
+ contextLength: 163840,
5020
+ inputPer1M: 0.32,
5021
+ outputPer1M: 0.89,
5022
+ supportsTools: true,
5023
+ supportsStructuredOutput: true
5024
+ },
5025
+ {
5026
+ provider: "novita",
5027
+ status: "live",
5028
+ contextLength: 64e3,
5029
+ inputPer1M: 0.4,
5030
+ outputPer1M: 1.3,
5031
+ supportsTools: true,
5032
+ supportsStructuredOutput: false
5033
+ }
5034
+ ]
5035
+ },
5036
+ "deepseek-ai/DeepSeek-V3-0324": {
5037
+ wireId: "deepseek-ai/DeepSeek-V3-0324",
5038
+ providers: [
5039
+ {
5040
+ provider: "deepinfra",
5041
+ status: "live",
5042
+ contextLength: 163840,
5043
+ inputPer1M: 0.24,
5044
+ outputPer1M: 0.9,
5045
+ supportsTools: true,
5046
+ supportsStructuredOutput: true
5047
+ },
5048
+ {
5049
+ provider: "featherless-ai",
5050
+ status: "live"
5051
+ },
5052
+ {
5053
+ provider: "novita",
5054
+ status: "live",
5055
+ contextLength: 163840,
5056
+ inputPer1M: 0.27,
5057
+ outputPer1M: 1.12,
5058
+ supportsTools: true,
5059
+ supportsStructuredOutput: false
5060
+ }
5061
+ ]
5062
+ },
5063
+ "deepseek-ai/DeepSeek-V3.1": {
5064
+ wireId: "deepseek-ai/DeepSeek-V3.1",
5065
+ providers: [
5066
+ {
5067
+ provider: "deepinfra",
5068
+ status: "live",
5069
+ contextLength: 163840,
5070
+ inputPer1M: 0.25,
5071
+ outputPer1M: 0.95,
5072
+ supportsTools: true,
5073
+ supportsStructuredOutput: true
5074
+ },
5075
+ {
5076
+ provider: "featherless-ai",
5077
+ status: "live"
5078
+ },
5079
+ {
5080
+ provider: "novita",
5081
+ status: "live",
5082
+ contextLength: 131072,
5083
+ inputPer1M: 0.27,
5084
+ outputPer1M: 1,
5085
+ supportsTools: true,
5086
+ supportsStructuredOutput: true
5087
+ }
5088
+ ]
5089
+ },
5090
+ "deepseek-ai/DeepSeek-V3.1-Terminus": {
5091
+ wireId: "deepseek-ai/DeepSeek-V3.1-Terminus",
5092
+ providers: [
5093
+ {
5094
+ provider: "deepinfra",
5095
+ status: "live",
5096
+ contextLength: 163840,
5097
+ inputPer1M: 0.27,
5098
+ outputPer1M: 0.95,
5099
+ supportsTools: false,
5100
+ supportsStructuredOutput: true
5101
+ },
5102
+ {
5103
+ provider: "featherless-ai",
5104
+ status: "live"
5105
+ },
5106
+ {
5107
+ provider: "novita",
5108
+ status: "live",
5109
+ contextLength: 131072,
5110
+ inputPer1M: 0.27,
5111
+ outputPer1M: 1,
5112
+ supportsTools: true,
5113
+ supportsStructuredOutput: true
5114
+ }
5115
+ ]
5116
+ },
5117
+ "deepseek-ai/DeepSeek-V3.2": {
5118
+ wireId: "deepseek-ai/DeepSeek-V3.2",
5119
+ providers: [
5120
+ {
5121
+ provider: "deepinfra",
5122
+ status: "live",
5123
+ contextLength: 163840,
5124
+ inputPer1M: 0.26,
5125
+ outputPer1M: 0.38,
5126
+ supportsTools: true,
5127
+ supportsStructuredOutput: true
5128
+ },
5129
+ {
5130
+ provider: "featherless-ai",
5131
+ status: "live"
5132
+ },
5133
+ {
5134
+ provider: "novita",
5135
+ status: "live",
5136
+ contextLength: 163840,
5137
+ inputPer1M: 0.269,
5138
+ outputPer1M: 0.4,
5139
+ supportsTools: true,
5140
+ supportsStructuredOutput: true
5141
+ }
5142
+ ]
5143
+ },
5144
+ "deepseek-ai/DeepSeek-V3.2-Exp": {
5145
+ wireId: "deepseek-ai/DeepSeek-V3.2-Exp",
5146
+ providers: [
5147
+ {
5148
+ provider: "novita",
5149
+ status: "live",
5150
+ contextLength: 163840,
5151
+ inputPer1M: 0.27,
5152
+ outputPer1M: 0.41,
5153
+ supportsTools: true,
5154
+ supportsStructuredOutput: true
5155
+ }
5156
+ ]
5157
+ },
5158
+ "deepseek-ai/DeepSeek-V4-Flash": {
5159
+ wireId: "deepseek-ai/DeepSeek-V4-Flash",
5160
+ providers: [
5161
+ {
5162
+ provider: "deepinfra",
5163
+ status: "live",
5164
+ contextLength: 1048576,
5165
+ inputPer1M: 0.09,
5166
+ outputPer1M: 0.18,
5167
+ supportsTools: true,
5168
+ supportsStructuredOutput: true
5169
+ },
5170
+ {
5171
+ provider: "featherless-ai",
5172
+ status: "live"
5173
+ },
5174
+ {
5175
+ provider: "fireworks-ai",
5176
+ status: "live",
5177
+ contextLength: 1048576,
5178
+ inputPer1M: 0.14,
5179
+ outputPer1M: 0.28,
5180
+ supportsTools: true,
5181
+ supportsStructuredOutput: false
5182
+ },
5183
+ {
5184
+ provider: "novita",
5185
+ status: "live",
5186
+ contextLength: 1048576,
5187
+ inputPer1M: 0.14,
5188
+ outputPer1M: 0.28,
5189
+ supportsTools: true,
5190
+ supportsStructuredOutput: false
5191
+ }
5192
+ ]
5193
+ },
5194
+ "deepseek-ai/DeepSeek-V4-Pro": {
5195
+ wireId: "deepseek-ai/DeepSeek-V4-Pro",
5196
+ providers: [
5197
+ {
5198
+ provider: "deepinfra",
5199
+ status: "live",
5200
+ contextLength: 1048576,
5201
+ inputPer1M: 1.3,
5202
+ outputPer1M: 2.6,
5203
+ supportsTools: true,
5204
+ supportsStructuredOutput: true
5205
+ },
5206
+ {
5207
+ provider: "fireworks-ai",
5208
+ status: "live",
5209
+ contextLength: 1048576,
5210
+ inputPer1M: 1.74,
5211
+ outputPer1M: 3.48,
5212
+ supportsTools: true,
5213
+ supportsStructuredOutput: false
5214
+ },
5215
+ {
5216
+ provider: "novita",
5217
+ status: "live",
5218
+ contextLength: 1048576,
5219
+ inputPer1M: 1.6,
5220
+ outputPer1M: 3.2,
5221
+ supportsTools: true,
5222
+ supportsStructuredOutput: false
5223
+ },
5224
+ {
5225
+ provider: "together",
5226
+ status: "live",
5227
+ contextLength: 512e3,
5228
+ inputPer1M: 1.74,
5229
+ outputPer1M: 3.48,
5230
+ supportsTools: true,
5231
+ supportsStructuredOutput: true
5232
+ }
5233
+ ]
5234
+ },
5235
+ "google/gemma-3-12b-it": {
5236
+ wireId: "google/gemma-3-12b-it",
5237
+ providers: [
5238
+ {
5239
+ provider: "deepinfra",
5240
+ status: "live",
5241
+ contextLength: 131072,
5242
+ inputPer1M: 0.05,
5243
+ outputPer1M: 0.15,
5244
+ supportsTools: true,
5245
+ supportsStructuredOutput: true
5246
+ },
5247
+ {
5248
+ provider: "featherless-ai",
5249
+ status: "live"
5250
+ }
5251
+ ]
5252
+ },
5253
+ "google/gemma-3-27b-it": {
5254
+ wireId: "google/gemma-3-27b-it",
5255
+ providers: [
5256
+ {
5257
+ provider: "deepinfra",
5258
+ status: "live",
5259
+ contextLength: 131072,
5260
+ inputPer1M: 0.08,
5261
+ outputPer1M: 0.16,
5262
+ supportsTools: true,
5263
+ supportsStructuredOutput: false
5264
+ },
5265
+ {
5266
+ provider: "featherless-ai",
5267
+ status: "live"
5268
+ },
5269
+ {
5270
+ provider: "scaleway",
5271
+ status: "live",
5272
+ inputPer1M: 0.285,
5273
+ outputPer1M: 0.57,
5274
+ supportsTools: true,
5275
+ supportsStructuredOutput: true
5276
+ }
5277
+ ]
5278
+ },
5279
+ "google/gemma-3-4b-it": {
5280
+ wireId: "google/gemma-3-4b-it",
5281
+ providers: [
5282
+ {
5283
+ provider: "deepinfra",
5284
+ status: "live",
5285
+ contextLength: 131072,
5286
+ inputPer1M: 0.05,
5287
+ outputPer1M: 0.1,
5288
+ supportsTools: true,
5289
+ supportsStructuredOutput: true
5290
+ },
5291
+ {
5292
+ provider: "featherless-ai",
5293
+ status: "live"
5294
+ }
5295
+ ]
5296
+ },
5297
+ "google/gemma-3n-E4B-it": {
5298
+ wireId: "google/gemma-3n-E4B-it",
5299
+ providers: [
5300
+ {
5301
+ provider: "together",
5302
+ status: "live",
5303
+ contextLength: 32768,
5304
+ inputPer1M: 0.06,
5305
+ outputPer1M: 0.12,
5306
+ supportsTools: false,
5307
+ supportsStructuredOutput: true
5308
+ }
5309
+ ]
5310
+ },
5311
+ "google/gemma-4-26B-A4B-it": {
5312
+ wireId: "google/gemma-4-26B-A4B-it",
5313
+ providers: [
5314
+ {
5315
+ provider: "deepinfra",
5316
+ status: "live",
5317
+ contextLength: 262144,
5318
+ inputPer1M: 0.07,
5319
+ outputPer1M: 0.34,
5320
+ supportsTools: true,
5321
+ supportsStructuredOutput: true
5322
+ },
5323
+ {
5324
+ provider: "featherless-ai",
5325
+ status: "live"
5326
+ },
5327
+ {
5328
+ provider: "novita",
5329
+ status: "live",
5330
+ contextLength: 262144,
5331
+ inputPer1M: 0.13,
5332
+ outputPer1M: 0.4,
5333
+ supportsTools: true,
5334
+ supportsStructuredOutput: true
5335
+ },
5336
+ {
5337
+ provider: "scaleway",
5338
+ status: "live",
5339
+ inputPer1M: 0.285,
5340
+ outputPer1M: 0.57,
5341
+ supportsTools: true,
5342
+ supportsStructuredOutput: true
5343
+ }
5344
+ ]
5345
+ },
5346
+ "google/gemma-4-31B-it": {
5347
+ wireId: "google/gemma-4-31B-it",
5348
+ providers: [
5349
+ {
5350
+ provider: "cerebras",
5351
+ status: "live",
5352
+ supportsTools: true,
5353
+ supportsStructuredOutput: false
5354
+ },
5355
+ {
5356
+ provider: "deepinfra",
5357
+ status: "live",
5358
+ contextLength: 262144,
5359
+ inputPer1M: 0.13,
5360
+ outputPer1M: 0.38,
5361
+ supportsTools: true,
5362
+ supportsStructuredOutput: true
5363
+ },
5364
+ {
5365
+ provider: "featherless-ai",
5366
+ status: "live"
5367
+ },
5368
+ {
5369
+ provider: "novita",
5370
+ status: "live",
5371
+ contextLength: 262144,
5372
+ inputPer1M: 0.14,
5373
+ outputPer1M: 0.4,
5374
+ supportsTools: true,
5375
+ supportsStructuredOutput: false
5376
+ },
5377
+ {
5378
+ provider: "together",
5379
+ status: "live",
5380
+ contextLength: 262144,
5381
+ inputPer1M: 0.39,
5382
+ outputPer1M: 0.97,
5383
+ supportsTools: false,
5384
+ supportsStructuredOutput: true
5385
+ }
5386
+ ]
5387
+ },
5388
+ "inclusionAI/Ling-2.6-1T": {
5389
+ wireId: "inclusionAI/Ling-2.6-1T",
5390
+ providers: [
5391
+ {
5392
+ provider: "novita",
5393
+ status: "live",
5394
+ contextLength: 262144,
5395
+ inputPer1M: 0.3,
5396
+ outputPer1M: 2.5,
5397
+ supportsTools: true,
5398
+ supportsStructuredOutput: false
5399
+ }
5400
+ ]
5401
+ },
5402
+ "meta-llama/Llama-3.1-8B-Instruct": {
5403
+ wireId: "meta-llama/Llama-3.1-8B-Instruct",
5404
+ providers: [
5405
+ {
5406
+ provider: "deepinfra",
5407
+ status: "live",
5408
+ contextLength: 131072,
5409
+ inputPer1M: 0.02,
5410
+ outputPer1M: 0.05,
5411
+ supportsTools: true,
5412
+ supportsStructuredOutput: false
5413
+ },
5414
+ {
5415
+ provider: "featherless-ai",
5416
+ status: "live"
5417
+ },
5418
+ {
5419
+ provider: "novita",
5420
+ status: "live",
5421
+ contextLength: 16384,
5422
+ inputPer1M: 0.02,
5423
+ outputPer1M: 0.05,
5424
+ supportsTools: false,
5425
+ supportsStructuredOutput: false
5426
+ },
5427
+ {
5428
+ provider: "nscale",
5429
+ status: "live",
5430
+ contextLength: 131072,
5431
+ inputPer1M: 0.06,
5432
+ outputPer1M: 0.06,
5433
+ supportsTools: false,
5434
+ supportsStructuredOutput: false
5435
+ }
5436
+ ]
5437
+ },
5438
+ "meta-llama/Llama-3.3-70B-Instruct": {
5439
+ wireId: "meta-llama/Llama-3.3-70B-Instruct",
5440
+ providers: [
5441
+ {
5442
+ provider: "featherless-ai",
5443
+ status: "live"
5444
+ },
5445
+ {
5446
+ provider: "groq",
5447
+ status: "live",
5448
+ contextLength: 131072,
5449
+ inputPer1M: 0.59,
5450
+ outputPer1M: 0.79,
5451
+ supportsTools: true,
5452
+ supportsStructuredOutput: false
5453
+ },
5454
+ {
5455
+ provider: "novita",
5456
+ status: "live",
5457
+ contextLength: 6e3,
5458
+ inputPer1M: 0.135,
5459
+ outputPer1M: 0.4,
5460
+ supportsTools: true,
5461
+ supportsStructuredOutput: false
5462
+ },
5463
+ {
5464
+ provider: "ovhcloud",
5465
+ status: "live",
5466
+ contextLength: 131072,
5467
+ inputPer1M: 0.74,
5468
+ outputPer1M: 0.74,
5469
+ supportsTools: true,
5470
+ supportsStructuredOutput: true
5471
+ },
5472
+ {
5473
+ provider: "scaleway",
5474
+ status: "live",
5475
+ inputPer1M: 1.026,
5476
+ outputPer1M: 1.026,
5477
+ supportsTools: true,
5478
+ supportsStructuredOutput: true
5479
+ },
5480
+ {
5481
+ provider: "together",
5482
+ status: "live",
5483
+ contextLength: 131072,
5484
+ inputPer1M: 1.04,
5485
+ outputPer1M: 1.04,
5486
+ supportsTools: true,
5487
+ supportsStructuredOutput: true
5488
+ }
5489
+ ]
5490
+ },
5491
+ "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8": {
5492
+ wireId: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
5493
+ providers: [
5494
+ {
5495
+ provider: "novita",
5496
+ status: "live",
5497
+ contextLength: 1048576,
5498
+ inputPer1M: 0.27,
5499
+ outputPer1M: 0.85,
5500
+ supportsTools: false,
5501
+ supportsStructuredOutput: true
5502
+ }
5503
+ ]
5504
+ },
5505
+ "meta-llama/Llama-4-Scout-17B-16E-Instruct": {
5506
+ wireId: "meta-llama/Llama-4-Scout-17B-16E-Instruct",
5507
+ providers: [
5508
+ {
5509
+ provider: "deepinfra",
5510
+ status: "live",
5511
+ contextLength: 327680,
5512
+ inputPer1M: 0.1,
5513
+ outputPer1M: 0.3,
5514
+ supportsTools: true,
5515
+ supportsStructuredOutput: true
5516
+ },
5517
+ {
5518
+ provider: "novita",
5519
+ status: "live",
5520
+ contextLength: 131072,
5521
+ inputPer1M: 0.18,
5522
+ outputPer1M: 0.59,
5523
+ supportsTools: false,
5524
+ supportsStructuredOutput: false
5525
+ },
5526
+ {
5527
+ provider: "nscale",
5528
+ status: "live",
5529
+ contextLength: 89e4,
5530
+ inputPer1M: 0.09,
5531
+ outputPer1M: 0.29,
5532
+ supportsTools: true,
5533
+ supportsStructuredOutput: true
5534
+ }
5535
+ ]
5536
+ },
5537
+ "meta-llama/Llama-Guard-4-12B": {
5538
+ wireId: "meta-llama/Llama-Guard-4-12B",
5539
+ providers: [
5540
+ {
5541
+ provider: "deepinfra",
5542
+ status: "live",
5543
+ contextLength: 163840,
5544
+ inputPer1M: 0.18,
5545
+ outputPer1M: 0.18,
5546
+ supportsTools: false,
5547
+ supportsStructuredOutput: false
5548
+ },
5549
+ {
5550
+ provider: "together",
5551
+ status: "live",
5552
+ contextLength: 1048576,
5553
+ inputPer1M: 0.2,
5554
+ outputPer1M: 0.2,
5555
+ supportsTools: false,
5556
+ supportsStructuredOutput: false
5557
+ }
5558
+ ]
5559
+ },
5560
+ "microsoft/phi-4": {
5561
+ wireId: "microsoft/phi-4",
5562
+ providers: [
5563
+ {
5564
+ provider: "deepinfra",
5565
+ status: "live",
5566
+ contextLength: 16384,
5567
+ inputPer1M: 0.07,
5568
+ outputPer1M: 0.14,
5569
+ supportsTools: false,
5570
+ supportsStructuredOutput: true
5571
+ },
5572
+ {
5573
+ provider: "featherless-ai",
5574
+ status: "live"
5575
+ }
5576
+ ]
5577
+ },
5578
+ "moonshotai/Kimi-K2-Instruct": {
5579
+ wireId: "moonshotai/Kimi-K2-Instruct",
5580
+ providers: [
5581
+ {
5582
+ provider: "novita",
5583
+ status: "live",
5584
+ contextLength: 131072,
5585
+ inputPer1M: 0.57,
5586
+ outputPer1M: 2.3,
5587
+ supportsTools: true,
5588
+ supportsStructuredOutput: false
5589
+ }
5590
+ ]
5591
+ },
5592
+ "moonshotai/Kimi-K2-Instruct-0905": {
5593
+ wireId: "moonshotai/Kimi-K2-Instruct-0905",
5594
+ providers: [
5595
+ {
5596
+ provider: "novita",
5597
+ status: "live",
5598
+ contextLength: 262144,
5599
+ inputPer1M: 0.6,
5600
+ outputPer1M: 2.5,
5601
+ supportsTools: true,
5602
+ supportsStructuredOutput: true
5603
+ }
5604
+ ]
5605
+ },
5606
+ "moonshotai/Kimi-K2.5": {
5607
+ wireId: "moonshotai/Kimi-K2.5",
5608
+ providers: [
5609
+ {
5610
+ provider: "deepinfra",
5611
+ status: "live",
5612
+ contextLength: 262144,
5613
+ inputPer1M: 0.45,
5614
+ outputPer1M: 2.25,
5615
+ supportsTools: true,
5616
+ supportsStructuredOutput: true
5617
+ },
5618
+ {
5619
+ provider: "featherless-ai",
5620
+ status: "live"
5621
+ },
5622
+ {
5623
+ provider: "novita",
5624
+ status: "live",
5625
+ contextLength: 262144,
5626
+ inputPer1M: 0.6,
5627
+ outputPer1M: 3,
5628
+ supportsTools: true,
5629
+ supportsStructuredOutput: true
5630
+ }
5631
+ ]
5632
+ },
5633
+ "moonshotai/Kimi-K2.6": {
5634
+ wireId: "moonshotai/Kimi-K2.6",
5635
+ providers: [
5636
+ {
5637
+ provider: "deepinfra",
5638
+ status: "live",
5639
+ contextLength: 262144,
5640
+ inputPer1M: 0.75,
5641
+ outputPer1M: 3.5,
5642
+ supportsTools: true,
5643
+ supportsStructuredOutput: false
5644
+ },
5645
+ {
5646
+ provider: "featherless-ai",
5647
+ status: "live"
5648
+ },
5649
+ {
5650
+ provider: "fireworks-ai",
5651
+ status: "live",
5652
+ contextLength: 262144,
5653
+ inputPer1M: 0.95,
5654
+ outputPer1M: 4,
5655
+ supportsTools: true,
5656
+ supportsStructuredOutput: false
5657
+ },
5658
+ {
5659
+ provider: "novita",
5660
+ status: "live",
5661
+ contextLength: 262144,
5662
+ inputPer1M: 0.8,
5663
+ outputPer1M: 3.4,
5664
+ supportsTools: true,
5665
+ supportsStructuredOutput: false
5666
+ },
5667
+ {
5668
+ provider: "together",
5669
+ status: "live",
5670
+ contextLength: 262144,
5671
+ inputPer1M: 1.2,
5672
+ outputPer1M: 4.5,
5673
+ supportsTools: true,
5674
+ supportsStructuredOutput: true
5675
+ }
5676
+ ]
5677
+ },
5678
+ "moonshotai/Kimi-K2.7-Code": {
5679
+ wireId: "moonshotai/Kimi-K2.7-Code",
5680
+ providers: [
5681
+ {
5682
+ provider: "deepinfra",
5683
+ status: "live",
5684
+ contextLength: 262144,
5685
+ inputPer1M: 0.74,
5686
+ outputPer1M: 3.5,
5687
+ supportsTools: true,
5688
+ supportsStructuredOutput: true
5689
+ },
5690
+ {
5691
+ provider: "featherless-ai",
5692
+ status: "live"
5693
+ },
5694
+ {
5695
+ provider: "fireworks-ai",
5696
+ status: "live",
5697
+ contextLength: 262144,
5698
+ inputPer1M: 0.95,
5699
+ outputPer1M: 4,
5700
+ supportsTools: true,
5701
+ supportsStructuredOutput: false
5702
+ },
5703
+ {
5704
+ provider: "novita",
5705
+ status: "live",
5706
+ contextLength: 262144,
5707
+ inputPer1M: 0.95,
5708
+ outputPer1M: 4,
5709
+ supportsTools: true,
5710
+ supportsStructuredOutput: true
5711
+ },
5712
+ {
5713
+ provider: "together",
5714
+ status: "live",
5715
+ contextLength: 262144,
5716
+ inputPer1M: 0.95,
5717
+ outputPer1M: 4,
5718
+ supportsTools: true,
5719
+ supportsStructuredOutput: true
5720
+ }
5721
+ ]
5722
+ },
5723
+ "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16": {
5724
+ wireId: "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",
5725
+ providers: [
5726
+ {
5727
+ provider: "deepinfra",
5728
+ status: "live",
5729
+ contextLength: 262144,
5730
+ inputPer1M: 1,
5731
+ outputPer1M: 5,
5732
+ supportsTools: true,
5733
+ supportsStructuredOutput: true
5734
+ }
5735
+ ]
5736
+ },
5737
+ "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4": {
5738
+ wireId: "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4",
5739
+ providers: [
5740
+ {
5741
+ provider: "fireworks-ai",
5742
+ status: "live",
5743
+ contextLength: 262144,
5744
+ inputPer1M: 0.6,
5745
+ outputPer1M: 2.4,
5746
+ supportsTools: true,
5747
+ supportsStructuredOutput: false
5748
+ },
5749
+ {
5750
+ provider: "together",
5751
+ status: "live",
5752
+ contextLength: 512288,
5753
+ inputPer1M: 0.6,
5754
+ outputPer1M: 3.6,
5755
+ supportsTools: true,
5756
+ supportsStructuredOutput: true
5757
+ }
5758
+ ]
5759
+ },
5760
+ "openai/gpt-oss-120b": {
5761
+ wireId: "openai/gpt-oss-120b",
5762
+ providers: [
5763
+ {
5764
+ provider: "cerebras",
5765
+ status: "live",
5766
+ inputPer1M: 0.25,
5767
+ outputPer1M: 0.69,
5768
+ supportsTools: true,
5769
+ supportsStructuredOutput: false
5770
+ },
5771
+ {
5772
+ provider: "deepinfra",
5773
+ status: "live",
5774
+ contextLength: 131072,
5775
+ inputPer1M: 0.037,
5776
+ outputPer1M: 0.17,
5777
+ supportsTools: true,
5778
+ supportsStructuredOutput: true
5779
+ },
5780
+ {
5781
+ provider: "featherless-ai",
5782
+ status: "live"
5783
+ },
5784
+ {
5785
+ provider: "fireworks-ai",
5786
+ status: "live",
5787
+ contextLength: 131072,
5788
+ inputPer1M: 0.15,
5789
+ outputPer1M: 0.6,
5790
+ supportsTools: true,
5791
+ supportsStructuredOutput: false
5792
+ },
5793
+ {
5794
+ provider: "groq",
5795
+ status: "live",
5796
+ contextLength: 131072,
5797
+ inputPer1M: 0.15,
5798
+ outputPer1M: 0.75,
5799
+ supportsTools: true,
5800
+ supportsStructuredOutput: false
5801
+ },
5802
+ {
5803
+ provider: "novita",
5804
+ status: "live",
5805
+ contextLength: 131072,
5806
+ inputPer1M: 0.05,
5807
+ outputPer1M: 0.25,
5808
+ supportsTools: true,
5809
+ supportsStructuredOutput: true
5810
+ },
5811
+ {
5812
+ provider: "nscale",
5813
+ status: "live",
5814
+ contextLength: 131072,
5815
+ inputPer1M: 0.1,
5816
+ outputPer1M: 0.4,
5817
+ supportsTools: true,
5818
+ supportsStructuredOutput: true
5819
+ },
5820
+ {
5821
+ provider: "ovhcloud",
5822
+ status: "live",
5823
+ contextLength: 131072,
5824
+ inputPer1M: 0.09,
5825
+ outputPer1M: 0.47,
5826
+ supportsTools: true,
5827
+ supportsStructuredOutput: true
5828
+ },
5829
+ {
5830
+ provider: "scaleway",
5831
+ status: "live",
5832
+ inputPer1M: 0.171,
5833
+ outputPer1M: 0.684,
5834
+ supportsTools: true,
5835
+ supportsStructuredOutput: true
5836
+ },
5837
+ {
5838
+ provider: "together",
5839
+ status: "live",
5840
+ contextLength: 131072,
5841
+ inputPer1M: 0.15,
5842
+ outputPer1M: 0.6,
5843
+ supportsTools: true,
5844
+ supportsStructuredOutput: true
5845
+ }
5846
+ ]
5847
+ },
5848
+ "openai/gpt-oss-20b": {
5849
+ wireId: "openai/gpt-oss-20b",
5850
+ providers: [
5851
+ {
5852
+ provider: "deepinfra",
5853
+ status: "live",
5854
+ contextLength: 131072,
5855
+ inputPer1M: 0.03,
5856
+ outputPer1M: 0.14,
5857
+ supportsTools: true,
5858
+ supportsStructuredOutput: true
5859
+ },
5860
+ {
5861
+ provider: "featherless-ai",
5862
+ status: "live"
5863
+ },
5864
+ {
5865
+ provider: "fireworks-ai",
5866
+ status: "live",
5867
+ contextLength: 131072,
5868
+ inputPer1M: 0.07,
5869
+ outputPer1M: 0.3,
5870
+ supportsTools: true,
5871
+ supportsStructuredOutput: false
5872
+ },
5873
+ {
5874
+ provider: "groq",
5875
+ status: "live",
5876
+ contextLength: 131072,
5877
+ inputPer1M: 0.1,
5878
+ outputPer1M: 0.5,
5879
+ supportsTools: true,
5880
+ supportsStructuredOutput: false
5881
+ },
5882
+ {
5883
+ provider: "novita",
5884
+ status: "live",
5885
+ contextLength: 131072,
5886
+ inputPer1M: 0.04,
5887
+ outputPer1M: 0.15,
5888
+ supportsTools: false,
5889
+ supportsStructuredOutput: true
5890
+ },
5891
+ {
5892
+ provider: "nscale",
5893
+ status: "live",
5894
+ contextLength: 131072,
5895
+ inputPer1M: 0.05,
5896
+ outputPer1M: 0.2,
5897
+ supportsTools: true,
5898
+ supportsStructuredOutput: true
5899
+ },
5900
+ {
5901
+ provider: "ovhcloud",
5902
+ status: "live",
5903
+ contextLength: 131072,
5904
+ inputPer1M: 0.05,
5905
+ outputPer1M: 0.18,
5906
+ supportsTools: true,
5907
+ supportsStructuredOutput: true
5908
+ },
5909
+ {
5910
+ provider: "together",
5911
+ status: "live",
5912
+ contextLength: 131072,
5913
+ inputPer1M: 0.05,
5914
+ outputPer1M: 0.2,
5915
+ supportsTools: true,
5916
+ supportsStructuredOutput: true
5917
+ }
5918
+ ]
5919
+ },
5920
+ "openai/gpt-oss-safeguard-20b": {
5921
+ wireId: "openai/gpt-oss-safeguard-20b",
5922
+ providers: [
5923
+ {
5924
+ provider: "featherless-ai",
5925
+ status: "live"
5926
+ },
5927
+ {
5928
+ provider: "groq",
5929
+ status: "live",
5930
+ contextLength: 131072,
5931
+ supportsTools: true,
5932
+ supportsStructuredOutput: false
5933
+ }
5934
+ ]
5935
+ },
5936
+ "pearl-ai/Gemma-4-31B-it-pearl": {
5937
+ wireId: "pearl-ai/Gemma-4-31B-it-pearl",
5938
+ providers: [
5939
+ {
5940
+ provider: "together",
5941
+ status: "live",
5942
+ contextLength: 262144,
5943
+ inputPer1M: 0.28,
5944
+ outputPer1M: 0.86,
5945
+ supportsTools: true,
5946
+ supportsStructuredOutput: false
5947
+ }
5948
+ ]
5949
+ },
5950
+ "prism-ml/Ternary-Bonsai-27B-AWQ-4bit": {
5951
+ wireId: "prism-ml/Ternary-Bonsai-27B-AWQ-4bit",
5952
+ providers: [
5953
+ {
5954
+ provider: "together",
5955
+ status: "live",
5956
+ contextLength: 262144,
5957
+ inputPer1M: 0,
5958
+ outputPer1M: 0,
5959
+ supportsTools: true,
5960
+ supportsStructuredOutput: false
5961
+ }
5962
+ ]
5963
+ },
5964
+ "prism-ml/Ternary-Bonsai-27B-gguf": {
5965
+ wireId: "prism-ml/Ternary-Bonsai-27B-gguf",
5966
+ providers: [
5967
+ {
5968
+ provider: "together",
5969
+ status: "live",
5970
+ contextLength: 262144,
5971
+ inputPer1M: 0,
5972
+ outputPer1M: 0,
5973
+ supportsTools: true,
5974
+ supportsStructuredOutput: false
5975
+ }
5976
+ ]
5977
+ },
5978
+ "speakleash/Bielik-11B-v3.0-Instruct": {
5979
+ wireId: "speakleash/Bielik-11B-v3.0-Instruct",
5980
+ providers: [
5981
+ {
5982
+ provider: "publicai",
5983
+ status: "live",
5984
+ inputPer1M: 0.4,
5985
+ outputPer1M: 0.4,
5986
+ supportsTools: true,
5987
+ supportsStructuredOutput: true
5988
+ }
5989
+ ]
5990
+ },
5991
+ "stepfun-ai/Step-3.5-Flash": {
5992
+ wireId: "stepfun-ai/Step-3.5-Flash",
5993
+ providers: [
5994
+ {
5995
+ provider: "deepinfra",
5996
+ status: "live",
5997
+ contextLength: 262144,
5998
+ inputPer1M: 0.1,
5999
+ outputPer1M: 0.3,
6000
+ supportsTools: true,
6001
+ supportsStructuredOutput: false
6002
+ },
6003
+ {
6004
+ provider: "featherless-ai",
6005
+ status: "live"
6006
+ }
6007
+ ]
6008
+ },
6009
+ "stepfun-ai/Step-3.7-Flash": {
6010
+ wireId: "stepfun-ai/Step-3.7-Flash",
6011
+ providers: [
6012
+ {
6013
+ provider: "deepinfra",
6014
+ status: "live",
6015
+ contextLength: 262144,
6016
+ inputPer1M: 0.2,
6017
+ outputPer1M: 1.15,
6018
+ supportsTools: true,
6019
+ supportsStructuredOutput: false
6020
+ },
6021
+ {
6022
+ provider: "featherless-ai",
6023
+ status: "live"
6024
+ }
6025
+ ]
6026
+ },
6027
+ "swiss-ai/Apertus-70B-Instruct-2509": {
6028
+ wireId: "swiss-ai/Apertus-70B-Instruct-2509",
6029
+ providers: [
6030
+ {
6031
+ provider: "publicai",
6032
+ status: "live",
6033
+ inputPer1M: 0.82,
6034
+ outputPer1M: 2.92,
6035
+ supportsTools: true,
6036
+ supportsStructuredOutput: true
6037
+ }
6038
+ ]
6039
+ },
6040
+ "swiss-ai/Apertus-8B-Instruct-2509": {
6041
+ wireId: "swiss-ai/Apertus-8B-Instruct-2509",
6042
+ providers: [
6043
+ {
6044
+ provider: "publicai",
6045
+ status: "live",
6046
+ inputPer1M: 0.1,
6047
+ outputPer1M: 0.2,
6048
+ supportsTools: false,
6049
+ supportsStructuredOutput: false
6050
+ }
6051
+ ]
6052
+ },
6053
+ "thinkingmachines/Inkling": {
6054
+ wireId: "thinkingmachines/Inkling",
6055
+ providers: [
6056
+ {
6057
+ provider: "together",
6058
+ status: "live",
6059
+ contextLength: 524288,
6060
+ inputPer1M: 1,
6061
+ outputPer1M: 4.05,
6062
+ supportsTools: true,
6063
+ supportsStructuredOutput: true
6064
+ }
6065
+ ]
6066
+ },
6067
+ "utter-project/EuroLLM-22B-Instruct-2512": {
6068
+ wireId: "utter-project/EuroLLM-22B-Instruct-2512",
6069
+ providers: [
6070
+ {
6071
+ provider: "publicai",
6072
+ status: "live",
6073
+ inputPer1M: 0.1,
6074
+ outputPer1M: 0.2,
6075
+ supportsTools: false,
6076
+ supportsStructuredOutput: false
6077
+ }
6078
+ ]
6079
+ },
6080
+ "zai-org/AutoGLM-Phone-9B-Multilingual": {
6081
+ wireId: "zai-org/AutoGLM-Phone-9B-Multilingual",
6082
+ providers: [
6083
+ {
6084
+ provider: "novita",
6085
+ status: "live",
6086
+ contextLength: 65536,
6087
+ inputPer1M: 0.035,
6088
+ outputPer1M: 0.138,
6089
+ supportsTools: false,
6090
+ supportsStructuredOutput: false
6091
+ }
6092
+ ]
6093
+ },
6094
+ "zai-org/GLM-4-32B-0414": {
6095
+ wireId: "zai-org/GLM-4-32B-0414",
6096
+ providers: [
6097
+ {
6098
+ provider: "featherless-ai",
6099
+ status: "live"
6100
+ },
6101
+ {
6102
+ provider: "novita",
6103
+ status: "live",
6104
+ contextLength: 32e3,
6105
+ inputPer1M: 0.55,
6106
+ outputPer1M: 1.66,
6107
+ supportsTools: false,
6108
+ supportsStructuredOutput: false
6109
+ }
6110
+ ]
6111
+ },
6112
+ "zai-org/GLM-4.5-Air": {
6113
+ wireId: "zai-org/GLM-4.5-Air",
6114
+ providers: [
6115
+ {
6116
+ provider: "novita",
6117
+ status: "live",
6118
+ contextLength: 131072,
6119
+ inputPer1M: 0.13,
6120
+ outputPer1M: 0.85,
6121
+ supportsTools: true,
6122
+ supportsStructuredOutput: false
6123
+ },
6124
+ {
6125
+ provider: "zai-org",
6126
+ status: "live",
6127
+ supportsTools: true,
6128
+ supportsStructuredOutput: false
6129
+ }
6130
+ ]
6131
+ },
6132
+ "zai-org/GLM-4.5V": {
6133
+ wireId: "zai-org/GLM-4.5V",
6134
+ providers: [
6135
+ {
6136
+ provider: "novita",
6137
+ status: "live",
6138
+ contextLength: 65536,
6139
+ inputPer1M: 0.6,
6140
+ outputPer1M: 1.8,
6141
+ supportsTools: true,
6142
+ supportsStructuredOutput: false
6143
+ },
6144
+ {
6145
+ provider: "zai-org",
6146
+ status: "live",
6147
+ supportsTools: true,
6148
+ supportsStructuredOutput: false
6149
+ }
6150
+ ]
6151
+ },
6152
+ "zai-org/GLM-4.5V-FP8": {
6153
+ wireId: "zai-org/GLM-4.5V-FP8",
6154
+ providers: [
6155
+ {
6156
+ provider: "zai-org",
6157
+ status: "live",
6158
+ supportsTools: true,
6159
+ supportsStructuredOutput: false
6160
+ }
6161
+ ]
6162
+ },
6163
+ "zai-org/GLM-4.6": {
6164
+ wireId: "zai-org/GLM-4.6",
6165
+ providers: [
6166
+ {
6167
+ provider: "deepinfra",
6168
+ status: "live",
6169
+ contextLength: 202752,
6170
+ inputPer1M: 0.5,
6171
+ outputPer1M: 2,
6172
+ supportsTools: true,
6173
+ supportsStructuredOutput: true
6174
+ },
6175
+ {
6176
+ provider: "featherless-ai",
6177
+ status: "live"
6178
+ },
6179
+ {
6180
+ provider: "novita",
6181
+ status: "live",
6182
+ contextLength: 204800,
6183
+ inputPer1M: 0.55,
6184
+ outputPer1M: 2.2,
6185
+ supportsTools: false,
6186
+ supportsStructuredOutput: false
6187
+ },
6188
+ {
6189
+ provider: "zai-org",
6190
+ status: "live",
6191
+ supportsTools: false,
6192
+ supportsStructuredOutput: false
6193
+ }
6194
+ ]
6195
+ },
6196
+ "zai-org/GLM-4.6-FP8": {
6197
+ wireId: "zai-org/GLM-4.6-FP8",
6198
+ providers: [
6199
+ {
6200
+ provider: "zai-org",
6201
+ status: "live",
6202
+ supportsTools: true,
6203
+ supportsStructuredOutput: false
6204
+ }
6205
+ ]
6206
+ },
6207
+ "zai-org/GLM-4.6V": {
6208
+ wireId: "zai-org/GLM-4.6V",
6209
+ providers: [
6210
+ {
6211
+ provider: "zai-org",
6212
+ status: "live",
6213
+ supportsTools: true,
6214
+ supportsStructuredOutput: false
6215
+ }
6216
+ ]
6217
+ },
6218
+ "zai-org/GLM-4.6V-FP8": {
6219
+ wireId: "zai-org/GLM-4.6V-FP8",
6220
+ providers: [
6221
+ {
6222
+ provider: "zai-org",
6223
+ status: "live",
6224
+ supportsTools: true,
6225
+ supportsStructuredOutput: false
6226
+ }
6227
+ ]
6228
+ },
6229
+ "zai-org/GLM-4.6V-Flash": {
6230
+ wireId: "zai-org/GLM-4.6V-Flash",
6231
+ providers: [
6232
+ {
6233
+ provider: "novita",
6234
+ status: "live",
6235
+ contextLength: 131072,
6236
+ inputPer1M: 0.3,
6237
+ outputPer1M: 0.9,
6238
+ supportsTools: true,
6239
+ supportsStructuredOutput: false
6240
+ },
6241
+ {
6242
+ provider: "zai-org",
6243
+ status: "live",
6244
+ supportsTools: false,
6245
+ supportsStructuredOutput: false
6246
+ }
6247
+ ]
6248
+ },
6249
+ "zai-org/GLM-4.7": {
6250
+ wireId: "zai-org/GLM-4.7",
6251
+ providers: [
6252
+ {
6253
+ provider: "cerebras",
6254
+ status: "live",
6255
+ supportsTools: true,
6256
+ supportsStructuredOutput: false
6257
+ },
6258
+ {
6259
+ provider: "deepinfra",
6260
+ status: "live",
6261
+ contextLength: 202752,
6262
+ inputPer1M: 0.4,
6263
+ outputPer1M: 1.75,
6264
+ supportsTools: true,
6265
+ supportsStructuredOutput: false
6266
+ },
6267
+ {
6268
+ provider: "featherless-ai",
6269
+ status: "live"
6270
+ },
6271
+ {
6272
+ provider: "novita",
6273
+ status: "live",
6274
+ contextLength: 204800,
6275
+ inputPer1M: 0.6,
6276
+ outputPer1M: 2.2,
6277
+ supportsTools: true,
6278
+ supportsStructuredOutput: false
6279
+ }
6280
+ ]
6281
+ },
6282
+ "zai-org/GLM-4.7-FP8": {
6283
+ wireId: "zai-org/GLM-4.7-FP8",
6284
+ providers: [
6285
+ {
6286
+ provider: "zai-org",
6287
+ status: "live",
6288
+ supportsTools: true,
6289
+ supportsStructuredOutput: false
6290
+ }
6291
+ ]
6292
+ },
6293
+ "zai-org/GLM-4.7-Flash": {
6294
+ wireId: "zai-org/GLM-4.7-Flash",
6295
+ providers: [
6296
+ {
6297
+ provider: "deepinfra",
6298
+ status: "live",
6299
+ contextLength: 202752,
6300
+ inputPer1M: 0.06,
6301
+ outputPer1M: 0.4,
6302
+ supportsTools: true,
6303
+ supportsStructuredOutput: false
6304
+ },
6305
+ {
6306
+ provider: "featherless-ai",
6307
+ status: "live"
6308
+ },
6309
+ {
6310
+ provider: "novita",
6311
+ status: "live",
6312
+ contextLength: 2e5,
6313
+ inputPer1M: 0.07,
6314
+ outputPer1M: 0.4,
6315
+ supportsTools: true,
6316
+ supportsStructuredOutput: false
6317
+ },
6318
+ {
6319
+ provider: "zai-org",
6320
+ status: "live",
6321
+ supportsTools: true,
6322
+ supportsStructuredOutput: false
6323
+ }
6324
+ ]
6325
+ },
6326
+ "zai-org/GLM-5": {
6327
+ wireId: "zai-org/GLM-5",
6328
+ providers: [
6329
+ {
6330
+ provider: "deepinfra",
6331
+ status: "live",
6332
+ contextLength: 202752,
6333
+ inputPer1M: 0.6,
6334
+ outputPer1M: 2.08,
6335
+ supportsTools: true,
6336
+ supportsStructuredOutput: false
6337
+ },
6338
+ {
6339
+ provider: "featherless-ai",
6340
+ status: "live"
6341
+ },
6342
+ {
6343
+ provider: "novita",
6344
+ status: "live",
6345
+ contextLength: 202800,
6346
+ inputPer1M: 1,
6347
+ outputPer1M: 3.2,
6348
+ supportsTools: true,
6349
+ supportsStructuredOutput: false
6350
+ },
6351
+ {
6352
+ provider: "zai-org",
6353
+ status: "live",
6354
+ supportsTools: true,
6355
+ supportsStructuredOutput: false
6356
+ }
6357
+ ]
6358
+ },
6359
+ "zai-org/GLM-5.1": {
6360
+ wireId: "zai-org/GLM-5.1",
6361
+ providers: [
6362
+ {
6363
+ provider: "deepinfra",
6364
+ status: "live",
6365
+ contextLength: 202752,
6366
+ inputPer1M: 1.05,
6367
+ outputPer1M: 3.5,
6368
+ supportsTools: true,
6369
+ supportsStructuredOutput: true
6370
+ },
6371
+ {
6372
+ provider: "featherless-ai",
6373
+ status: "live"
6374
+ },
6375
+ {
6376
+ provider: "fireworks-ai",
6377
+ status: "live",
6378
+ contextLength: 202752,
6379
+ inputPer1M: 1.4,
6380
+ outputPer1M: 4.4,
6381
+ supportsTools: true,
6382
+ supportsStructuredOutput: false
6383
+ },
6384
+ {
6385
+ provider: "zai-org",
6386
+ status: "live",
6387
+ supportsTools: false,
6388
+ supportsStructuredOutput: false
6389
+ }
6390
+ ]
6391
+ },
6392
+ "zai-org/GLM-5.1-FP8": {
6393
+ wireId: "zai-org/GLM-5.1-FP8",
6394
+ providers: [
6395
+ {
6396
+ provider: "fireworks-ai",
6397
+ status: "live",
6398
+ contextLength: 202752,
6399
+ inputPer1M: 1.4,
6400
+ outputPer1M: 4.4,
6401
+ supportsTools: true,
6402
+ supportsStructuredOutput: false
6403
+ },
6404
+ {
6405
+ provider: "zai-org",
6406
+ status: "live",
6407
+ supportsTools: false,
6408
+ supportsStructuredOutput: false
6409
+ }
6410
+ ]
6411
+ },
6412
+ "zai-org/GLM-5.2": {
6413
+ wireId: "zai-org/GLM-5.2",
6414
+ providers: [
6415
+ {
6416
+ provider: "deepinfra",
6417
+ status: "live",
6418
+ contextLength: 1048576,
6419
+ inputPer1M: 0.93,
6420
+ outputPer1M: 3,
6421
+ supportsTools: true,
6422
+ supportsStructuredOutput: true
6423
+ },
6424
+ {
6425
+ provider: "featherless-ai",
6426
+ status: "live"
6427
+ },
6428
+ {
6429
+ provider: "fireworks-ai",
6430
+ status: "live",
6431
+ contextLength: 1048576,
6432
+ inputPer1M: 1.4,
6433
+ outputPer1M: 4.4,
6434
+ supportsTools: true,
6435
+ supportsStructuredOutput: false
6436
+ },
6437
+ {
6438
+ provider: "novita",
6439
+ status: "live",
6440
+ contextLength: 1048576,
6441
+ inputPer1M: 1.4,
6442
+ outputPer1M: 4.4,
6443
+ supportsTools: true,
6444
+ supportsStructuredOutput: true
6445
+ },
6446
+ {
6447
+ provider: "scaleway",
6448
+ status: "live",
6449
+ inputPer1M: 2.052,
6450
+ outputPer1M: 6.27,
6451
+ supportsTools: true,
6452
+ supportsStructuredOutput: false
6453
+ },
6454
+ {
6455
+ provider: "together",
6456
+ status: "live",
6457
+ contextLength: 262144,
6458
+ inputPer1M: 1.4,
6459
+ outputPer1M: 4.4,
6460
+ supportsTools: true,
6461
+ supportsStructuredOutput: true
6462
+ },
6463
+ {
6464
+ provider: "zai-org",
6465
+ status: "live",
6466
+ supportsTools: false,
6467
+ supportsStructuredOutput: false
6468
+ }
6469
+ ]
6470
+ },
6471
+ "zai-org/GLM-5.2-FP8": {
6472
+ wireId: "zai-org/GLM-5.2-FP8",
6473
+ providers: [
6474
+ {
6475
+ provider: "zai-org",
6476
+ status: "live",
6477
+ supportsTools: true,
6478
+ supportsStructuredOutput: false
6479
+ }
6480
+ ]
6481
+ }
6482
+ };
6483
+
3760
6484
  // src/route-identity/index.ts
3761
6485
  var SEGMENT_RE = /^[a-zA-Z0-9_.-]+$/;
3762
- var REF_RE = /^([^/@]+)\/([^/@]+)(?:@([^/@]+))?$/;
6486
+ var OPENROUTER_VARIANTS = [
6487
+ "free",
6488
+ "nitro",
6489
+ "floor",
6490
+ "online",
6491
+ "exacto"
6492
+ ];
6493
+ var OPENROUTER_VARIANT_SET = new Set(OPENROUTER_VARIANTS);
6494
+ var KNOWN_ROUTE_PREFIXES = new Set(
6495
+ CatalogProviderSchema.options
6496
+ );
3763
6497
  var InvalidModelRefError = class extends Error {
3764
6498
  constructor(raw, message) {
3765
6499
  super(`Invalid model reference "${raw}": ${message}`);
@@ -3768,27 +6502,63 @@ var InvalidModelRefError = class extends Error {
3768
6502
  raw;
3769
6503
  name = "InvalidModelRefError";
3770
6504
  };
6505
+ function classifyPin(pin, explicitRoute) {
6506
+ const openRouterEligible = explicitRoute === "openrouter" || explicitRoute === void 0;
6507
+ if (openRouterEligible && OPENROUTER_VARIANT_SET.has(pin)) {
6508
+ return { variant: pin };
6509
+ }
6510
+ return { inferenceProvider: pin };
6511
+ }
3771
6512
  function parseModelRef(raw) {
3772
6513
  const input = raw.trim();
3773
6514
  if (input.length === 0) {
3774
6515
  throw new InvalidModelRefError(raw, "model reference is empty");
3775
6516
  }
3776
- if (input.includes("@") && !input.includes("/")) {
6517
+ let body = input;
6518
+ let atRoute;
6519
+ const atIdx = input.indexOf("@");
6520
+ if (atIdx !== -1) {
6521
+ body = input.slice(0, atIdx);
6522
+ atRoute = input.slice(atIdx + 1);
6523
+ }
6524
+ if (atIdx !== -1 && !body.includes("/")) {
3777
6525
  throw new InvalidModelRefError(
3778
6526
  raw,
3779
6527
  "unscoped @ route is not allowed; use vendor/product[@route]"
3780
6528
  );
3781
6529
  }
3782
- const match = REF_RE.exec(input);
3783
- if (!match) {
6530
+ let prefixRoute;
6531
+ let remainder = body;
6532
+ const bodySlashIdx = body.indexOf("/");
6533
+ if (bodySlashIdx !== -1) {
6534
+ const bodyColonIdx = body.indexOf(":");
6535
+ if (bodyColonIdx !== -1 && bodyColonIdx < bodySlashIdx) {
6536
+ const candidate = body.slice(0, bodyColonIdx);
6537
+ if (KNOWN_ROUTE_PREFIXES.has(candidate)) {
6538
+ prefixRoute = candidate;
6539
+ remainder = body.slice(bodyColonIdx + 1);
6540
+ }
6541
+ }
6542
+ }
6543
+ const remSlashIdx = remainder.indexOf("/");
6544
+ if (remSlashIdx === -1) {
3784
6545
  throw new InvalidModelRefError(
3785
6546
  raw,
3786
- "expected vendor/product[@route] (e.g. openai/gpt-4o or openai/gpt-4o@openrouter)"
6547
+ "expected vendor/product[:pin][@route] (e.g. openai/gpt-4o or openai/gpt-4o@openrouter)"
3787
6548
  );
3788
6549
  }
3789
- const vendor = match[1].trim();
3790
- const product = match[2].trim();
3791
- const route = (match[3] ?? vendor).trim();
6550
+ const vendor = remainder.slice(0, remSlashIdx).trim();
6551
+ const afterVendor = remainder.slice(remSlashIdx + 1);
6552
+ let product = afterVendor;
6553
+ let pin;
6554
+ const pinColonIdx = afterVendor.indexOf(":");
6555
+ if (pinColonIdx !== -1) {
6556
+ product = afterVendor.slice(0, pinColonIdx);
6557
+ pin = afterVendor.slice(pinColonIdx + 1);
6558
+ }
6559
+ product = product.trim();
6560
+ const explicitRoute = atRoute ?? prefixRoute;
6561
+ const route = (explicitRoute ?? vendor).trim();
3792
6562
  for (const [label, value] of [
3793
6563
  ["vendor", vendor],
3794
6564
  ["product", product],
@@ -3804,13 +6574,33 @@ function parseModelRef(raw) {
3804
6574
  );
3805
6575
  }
3806
6576
  }
3807
- return { raw: input, vendor, product, route };
6577
+ if (pin !== void 0) {
6578
+ if (pin.length === 0) {
6579
+ throw new InvalidModelRefError(raw, "pin segment is empty");
6580
+ }
6581
+ if (!SEGMENT_RE.test(pin)) {
6582
+ throw new InvalidModelRefError(
6583
+ raw,
6584
+ `pin "${pin}" contains invalid characters (no '/' or '@')`
6585
+ );
6586
+ }
6587
+ }
6588
+ const classified = pin !== void 0 ? classifyPin(pin, explicitRoute) : {};
6589
+ return { raw: input, vendor, product, route, ...classified };
3808
6590
  }
3809
- function formatModelRef(ref) {
3810
- if (ref.route === ref.vendor) {
3811
- return `${ref.vendor}/${ref.product}`;
6591
+ function tryParseModelRef(raw) {
6592
+ try {
6593
+ return parseModelRef(raw);
6594
+ } catch {
6595
+ return void 0;
3812
6596
  }
3813
- return `${ref.vendor}/${ref.product}@${ref.route}`;
6597
+ }
6598
+ function formatModelRef(ref) {
6599
+ let out = `${ref.vendor}/${ref.product}`;
6600
+ const pin = ref.variant ?? ref.inferenceProvider;
6601
+ if (pin !== void 0) out += `:${pin}`;
6602
+ if (ref.route !== ref.vendor) out += `@${ref.route}`;
6603
+ return out;
3814
6604
  }
3815
6605
  function isModelRefString(raw) {
3816
6606
  try {
@@ -3858,6 +6648,36 @@ function resolveLlmModelRoute(input) {
3858
6648
  flavor: "requesty"
3859
6649
  });
3860
6650
  }
6651
+ if (modelRef.route === "huggingface") {
6652
+ const key = `${modelRef.vendor}/${modelRef.product}`;
6653
+ const hfRoute = HUGGINGFACE_ROUTES[key];
6654
+ if (!hfRoute || hfRoute.providers.length === 0) return void 0;
6655
+ const pinnedProvider = modelRef.inferenceProvider ? hfRoute.providers.find((p) => p.provider === modelRef.inferenceProvider) : void 0;
6656
+ if (modelRef.inferenceProvider !== void 0 && !pinnedProvider) return void 0;
6657
+ const priced = hfRoute.providers.filter(isPricedHuggingFaceProvider);
6658
+ const cheapest = priced.reduce((best, p) => {
6659
+ if (!best) return p;
6660
+ return p.inputPer1M + p.outputPer1M < best.inputPer1M + best.outputPer1M ? p : best;
6661
+ }, void 0);
6662
+ const selected = pinnedProvider ?? cheapest;
6663
+ const pricing2 = {
6664
+ inputPer1M: selected?.inputPer1M ?? DEFAULT_PRICING.inputPer1M,
6665
+ outputPer1M: selected?.outputPer1M ?? DEFAULT_PRICING.outputPer1M,
6666
+ vendor: modelRef.vendor,
6667
+ provider: "huggingface"
6668
+ };
6669
+ const contextWindow = pinnedProvider ? pinnedProvider.contextLength : hfRoute.providers.reduce((max, p) => {
6670
+ if (p.contextLength === void 0) return max;
6671
+ return max === void 0 ? p.contextLength : Math.max(max, p.contextLength);
6672
+ }, void 0);
6673
+ return buildLlmRoute(
6674
+ modelRef,
6675
+ canonicalProductId,
6676
+ pricing2,
6677
+ { flavor: "openai", baseUrl: "https://router.huggingface.co/v1" },
6678
+ { limits: contextWindow !== void 0 ? { contextWindow } : {} }
6679
+ );
6680
+ }
3861
6681
  const custom = resolveCustomRoute(modelRef.route);
3862
6682
  if (!custom) return void 0;
3863
6683
  const basePricing = directPricing ?? DEFAULT_PRICING;
@@ -3874,10 +6694,13 @@ function resolveLlmModelRoute(input) {
3874
6694
  flavor: custom.flavor ?? "custom",
3875
6695
  baseUrl: custom.baseUrl
3876
6696
  },
3877
- custom
6697
+ { availability: custom.availability, limits: custom.limits }
3878
6698
  );
3879
6699
  }
3880
- function buildLlmRoute(ref, canonicalProductId, pricing, transport, custom) {
6700
+ function isPricedHuggingFaceProvider(p) {
6701
+ return p.inputPer1M !== void 0 && p.outputPer1M !== void 0;
6702
+ }
6703
+ function buildLlmRoute(ref, canonicalProductId, pricing, transport, opts) {
3881
6704
  return {
3882
6705
  ref,
3883
6706
  vendor: ref.vendor,
@@ -3885,8 +6708,8 @@ function buildLlmRoute(ref, canonicalProductId, pricing, transport, custom) {
3885
6708
  canonicalProductId,
3886
6709
  route: ref.route,
3887
6710
  transport,
3888
- availability: custom?.availability ?? "available",
3889
- limits: custom?.limits ?? {},
6711
+ availability: opts?.availability ?? "available",
6712
+ limits: opts?.limits ?? {},
3890
6713
  pricing
3891
6714
  };
3892
6715
  }
@@ -3930,6 +6753,6 @@ function diagnoseModelRef(input) {
3930
6753
  };
3931
6754
  }
3932
6755
 
3933
- export { InvalidModelRefError, clearCustomRoutes, diagnoseModelRef, formatModelRef, isModelRefString, parseModelRef, registerCustomRoute, resolveCustomRoute, resolveLlmModelRoute };
6756
+ export { InvalidModelRefError, OPENROUTER_VARIANTS, clearCustomRoutes, diagnoseModelRef, formatModelRef, isModelRefString, parseModelRef, registerCustomRoute, resolveCustomRoute, resolveLlmModelRoute, tryParseModelRef };
3934
6757
  //# sourceMappingURL=index.mjs.map
3935
6758
  //# sourceMappingURL=index.mjs.map