@linxiraos/pi-catalog 1.1.26 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -6
- package/dist/types/compat/auth-ids.d.ts +2 -2
- package/dist/types/compat/collapse.d.ts +7 -0
- package/dist/types/compat/image-tokenization.d.ts +52 -0
- package/dist/types/compat/judgment-questions.d.ts +7 -0
- package/dist/types/compat/prompt-cache-lookback.d.ts +7 -0
- package/dist/types/compat/provider-ids.d.ts +1 -1
- package/dist/types/compat/reasoning-carry.d.ts +21 -0
- package/dist/types/compat/request-size.d.ts +7 -0
- package/dist/types/compat/taxonomy.d.ts +0 -10
- package/dist/types/compat/types.d.ts +4 -0
- package/dist/types/discovery/antigravity.d.ts +13 -3
- package/dist/types/hosts.d.ts +4 -0
- package/dist/types/model-cache.d.ts +6 -0
- package/dist/types/model-manager.d.ts +16 -0
- package/dist/types/provider-models/account-access.d.ts +11 -0
- package/dist/types/provider-models/google.d.ts +23 -1
- package/dist/types/provider-models/openai-compat.d.ts +19 -1
- package/dist/types/provider-models/special.d.ts +8 -0
- package/dist/types/types.d.ts +134 -23
- package/dist/types/wire/cloudflare-ai-gateway.d.ts +0 -10
- package/dist/types/wire/cloudflare.d.ts +10 -0
- package/dist/types/wire/factory-droid.d.ts +1 -1
- package/dist/types/wire/gemini-headers.d.ts +6 -3
- package/package.json +4 -4
- package/src/build.ts +39 -35
- package/src/compat/auth-ids.ts +6 -0
- package/src/compat/axes.ts +43 -5
- package/src/compat/cascade.ts +6 -1
- package/src/compat/collapse.d.ts +7 -0
- package/src/compat/collapse.ts +11 -0
- package/src/compat/image-tokenization.ts +166 -0
- package/src/compat/judgment-questions.ts +12 -0
- package/src/compat/prompt-cache-lookback.ts +23 -0
- package/src/compat/provider-ids.d.ts +1 -1
- package/src/compat/provider-ids.ts +3 -0
- package/src/compat/reasoning-carry.ts +64 -0
- package/src/compat/request-size.ts +25 -0
- package/src/compat/resolve.ts +36 -25
- package/src/compat/rules/README.md +13 -3
- package/src/compat/rules/auth/_order.kdl +2 -2
- package/src/compat/rules/auth/cloudflare-workers-ai.kdl +9 -0
- package/src/compat/rules/auth/coralbricks.kdl +13 -0
- package/src/compat/rules/auth/minimax-code-cn.kdl +1 -1
- package/src/compat/rules/auth/minimax-code.kdl +1 -1
- package/src/compat/rules/auth/openai-codex.kdl +1 -1
- package/src/compat/rules/auth/snowflake.kdl +11 -0
- package/src/compat/rules/auth/stencil.kdl +1 -1
- package/src/compat/rules/classes/anthropic.kdl +188 -7
- package/src/compat/rules/classes/deepseek.kdl +11 -3
- package/src/compat/rules/classes/gemini.kdl +12 -0
- package/src/compat/rules/classes/glm.kdl +17 -8
- package/src/compat/rules/classes/kimi.kdl +15 -0
- package/src/compat/rules/classes/meta.kdl +4 -4
- package/src/compat/rules/classes/minimax.kdl +31 -1
- package/src/compat/rules/classes/openai.kdl +114 -4
- package/src/compat/rules/classes/qwen.kdl +2 -1
- package/src/compat/rules/providers/abliteration.kdl +7 -0
- package/src/compat/rules/providers/amazon-bedrock.kdl +0 -7
- package/src/compat/rules/providers/anthropic.kdl +13 -0
- package/src/compat/rules/providers/apple.kdl +1 -0
- package/src/compat/rules/providers/cloudflare-workers-ai.kdl +34 -0
- package/src/compat/rules/providers/coralbricks.kdl +62 -0
- package/src/compat/rules/providers/cursor.kdl +28 -8
- package/src/compat/rules/providers/devin.kdl +2 -2
- package/src/compat/rules/providers/factory-droid.kdl +77 -13
- package/src/compat/rules/providers/github-copilot.kdl +29 -0
- package/src/compat/rules/providers/google-antigravity.kdl +8 -1
- package/src/compat/rules/providers/groq.kdl +21 -0
- package/src/compat/rules/providers/image-tokenization.kdl +42 -0
- package/src/compat/rules/providers/judgment-questions.kdl +53 -0
- package/src/compat/rules/providers/litellm.kdl +4 -1
- package/src/compat/rules/providers/meta.kdl +3 -3
- package/src/compat/rules/providers/minimax-code-cn.kdl +10 -5
- package/src/compat/rules/providers/minimax-code.kdl +10 -5
- package/src/compat/rules/providers/mistral.kdl +25 -1
- package/src/compat/rules/providers/moonshot.kdl +11 -0
- package/src/compat/rules/providers/muse-code.kdl +7 -0
- package/src/compat/rules/providers/ollama.kdl +3 -0
- package/src/compat/rules/providers/openai-codex.kdl +18 -13
- package/src/compat/rules/providers/openai.kdl +22 -0
- package/src/compat/rules/providers/opencode-go.kdl +11 -0
- package/src/compat/rules/providers/opencode-zen.kdl +20 -0
- package/src/compat/rules/providers/openrouter.kdl +6 -0
- package/src/compat/rules/providers/snowflake.kdl +135 -0
- package/src/compat/rules/providers/tool-result-images.kdl +16 -0
- package/src/compat/rules/providers/zhipu-coding-plan.kdl +10 -0
- package/src/compat/rules/runtime/behavior.kdl +8 -5
- package/src/compat/rules/taxonomy/_collapse.kdl +52 -2
- package/src/compat/rules/taxonomy/deepseek.kdl +4 -0
- package/src/compat/rules/taxonomy/kimi.kdl +5 -0
- package/src/compat/rules.json +1 -1
- package/src/compat/taxonomy.d.ts +0 -10
- package/src/compat/taxonomy.ts +3 -3
- package/src/compat/types.d.ts +4 -0
- package/src/compat/types.ts +4 -0
- package/src/discovery/antigravity.d.ts +13 -3
- package/src/discovery/antigravity.ts +33 -17
- package/src/discovery/cursor.ts +28 -4
- package/src/discovery/devin.ts +20 -2
- package/src/hosts.d.ts +4 -0
- package/src/hosts.ts +2 -0
- package/src/model-cache.d.ts +6 -0
- package/src/model-cache.ts +123 -47
- package/src/model-manager.d.ts +16 -0
- package/src/model-manager.ts +107 -41
- package/src/model-tokenizer.ts +3 -0
- package/src/models.json +1 -1
- package/src/provider-models/account-access.d.ts +11 -0
- package/src/provider-models/account-access.ts +30 -0
- package/src/provider-models/cache-provider-id.ts +13 -6
- package/src/provider-models/cline-pass.ts +33 -0
- package/src/provider-models/descriptors.ts +4 -0
- package/src/provider-models/google.d.ts +23 -1
- package/src/provider-models/google.ts +72 -14
- package/src/provider-models/openai-compat.d.ts +19 -1
- package/src/provider-models/openai-compat.ts +281 -42
- package/src/provider-models/special.d.ts +8 -0
- package/src/provider-models/special.ts +26 -22
- package/src/types.d.ts +134 -23
- package/src/types.ts +183 -20
- package/src/wire/cloudflare-ai-gateway.d.ts +0 -10
- package/src/wire/cloudflare-ai-gateway.ts +0 -36
- package/src/wire/cloudflare.ts +40 -0
- package/src/wire/factory-droid.d.ts +1 -1
- package/src/wire/factory-droid.ts +1 -1
- package/src/wire/gemini-headers.d.ts +6 -3
- package/src/wire/gemini-headers.ts +39 -21
|
@@ -111,6 +111,12 @@ provider "factory-droid" {
|
|
|
111
111
|
cost input=0 output=0 cache-read=0 cache-write=0
|
|
112
112
|
limits context=180000 max-tokens=32000
|
|
113
113
|
}
|
|
114
|
+
model "claude-haiku-5-5" name="Haiku 5.5" {
|
|
115
|
+
reasoning #true
|
|
116
|
+
input "text" "image"
|
|
117
|
+
cost input=0 output=0 cache-read=0 cache-write=0
|
|
118
|
+
limits context=872000 max-tokens=128000
|
|
119
|
+
}
|
|
114
120
|
model "claude-haiku-4-5-20251001" name="Haiku 4.5" {
|
|
115
121
|
reasoning #true
|
|
116
122
|
input "text" "image"
|
|
@@ -273,6 +279,12 @@ provider "factory-droid" {
|
|
|
273
279
|
cost input=0 output=0 cache-read=0 cache-write=0
|
|
274
280
|
limits context=1007232 max-tokens=32768
|
|
275
281
|
}
|
|
282
|
+
model "mistral-large-4" name="Mistral Large 4" {
|
|
283
|
+
reasoning #true
|
|
284
|
+
input "text" "image"
|
|
285
|
+
cost input=0 output=0 cache-read=0 cache-write=0
|
|
286
|
+
limits context=524288 max-tokens=64000
|
|
287
|
+
}
|
|
276
288
|
model "mistral-medium-3.5" name="Mistral Medium 3.5" {
|
|
277
289
|
reasoning #true
|
|
278
290
|
input "text" "image"
|
|
@@ -400,7 +412,7 @@ provider "factory-droid" {
|
|
|
400
412
|
models "claude-fable-5.1" {
|
|
401
413
|
routing-family "anthropic"
|
|
402
414
|
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic"
|
|
403
|
-
region-upstreams-eu
|
|
415
|
+
region-upstreams-eu "vertex_anthropic"
|
|
404
416
|
credit-rates { input 4; output 5; cache-read 0.025 }
|
|
405
417
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
406
418
|
thinking-requires-effort #false
|
|
@@ -410,7 +422,7 @@ provider "factory-droid" {
|
|
|
410
422
|
models "claude-fable-5" {
|
|
411
423
|
routing-family "anthropic"
|
|
412
424
|
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic"
|
|
413
|
-
region-upstreams-eu
|
|
425
|
+
region-upstreams-eu "vertex_anthropic"
|
|
414
426
|
credit-rates { input 4; output 5 }
|
|
415
427
|
list-price-from "anthropic"
|
|
416
428
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
@@ -439,7 +451,7 @@ provider "factory-droid" {
|
|
|
439
451
|
models "claude-opus-5" {
|
|
440
452
|
routing-family "anthropic"
|
|
441
453
|
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic" "azure_anthropic" "snowflake"
|
|
442
|
-
region-upstreams-eu "bedrock_anthropic"
|
|
454
|
+
region-upstreams-eu "vertex_anthropic" "bedrock_anthropic"
|
|
443
455
|
credit-rates { input 2 }
|
|
444
456
|
list-price-from "anthropic"
|
|
445
457
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
@@ -458,7 +470,7 @@ provider "factory-droid" {
|
|
|
458
470
|
models "claude-opus-4-8" {
|
|
459
471
|
routing-family "anthropic"
|
|
460
472
|
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic" "azure_anthropic" "snowflake"
|
|
461
|
-
region-upstreams-eu "bedrock_anthropic"
|
|
473
|
+
region-upstreams-eu "vertex_anthropic" "bedrock_anthropic"
|
|
462
474
|
credit-rates { input 2 }
|
|
463
475
|
list-price-from "anthropic"
|
|
464
476
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
@@ -477,7 +489,7 @@ provider "factory-droid" {
|
|
|
477
489
|
models "claude-opus-4-7" {
|
|
478
490
|
routing-family "anthropic"
|
|
479
491
|
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic"
|
|
480
|
-
region-upstreams-eu "bedrock_anthropic"
|
|
492
|
+
region-upstreams-eu "vertex_anthropic" "bedrock_anthropic"
|
|
481
493
|
credit-rates { input 2 }
|
|
482
494
|
list-price-from "anthropic"
|
|
483
495
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
@@ -506,9 +518,10 @@ provider "factory-droid" {
|
|
|
506
518
|
models "claude-sonnet-5-5" {
|
|
507
519
|
routing-family "anthropic"
|
|
508
520
|
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic" "azure_anthropic"
|
|
509
|
-
credit-rates { input 0.8; output 5 }
|
|
521
|
+
credit-rates { input 0.8; output 5; cache-read 0.05 }
|
|
522
|
+
list-price-from "anthropic"
|
|
510
523
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
511
|
-
thinking-requires-effort #
|
|
524
|
+
thinking-requires-effort #false
|
|
512
525
|
thinking-default-level "high"
|
|
513
526
|
entitlement { feature-flag "claude_sonnet_5_5" }
|
|
514
527
|
}
|
|
@@ -540,6 +553,16 @@ provider "factory-droid" {
|
|
|
540
553
|
thinking-requires-effort #false
|
|
541
554
|
default-reasoning-off #true
|
|
542
555
|
}
|
|
556
|
+
models "claude-haiku-5-5" {
|
|
557
|
+
routing-family "anthropic"
|
|
558
|
+
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic" "azure_anthropic"
|
|
559
|
+
credit-rates { input 0.04; output 5 }
|
|
560
|
+
list-price-from "anthropic"
|
|
561
|
+
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
562
|
+
thinking-requires-effort #false
|
|
563
|
+
thinking-default-level "medium"
|
|
564
|
+
entitlement { feature-flag "claude_haiku_5_5" }
|
|
565
|
+
}
|
|
543
566
|
models "claude-haiku-4-5-20251001" {
|
|
544
567
|
routing-family "anthropic"
|
|
545
568
|
upstream-rotation "anthropic" "vertex_anthropic" "bedrock_anthropic"
|
|
@@ -562,7 +585,7 @@ provider "factory-droid" {
|
|
|
562
585
|
}
|
|
563
586
|
models "gpt-6.1-sol" {
|
|
564
587
|
routing-family "openai"
|
|
565
|
-
upstream-rotation "openai"
|
|
588
|
+
upstream-rotation "openai" "bedrock_openai" "databricks"
|
|
566
589
|
region-upstreams-eu "openai"
|
|
567
590
|
credit-rates { input 0.8; output 5; cache-read 0.05 }
|
|
568
591
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
@@ -589,7 +612,6 @@ provider "factory-droid" {
|
|
|
589
612
|
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
590
613
|
thinking-requires-effort #false
|
|
591
614
|
thinking-default-level "medium"
|
|
592
|
-
entitlement { feature-flag "gpt_6_luna" }
|
|
593
615
|
}
|
|
594
616
|
models "gpt-5.6-sol" {
|
|
595
617
|
routing-family "openai"
|
|
@@ -749,6 +771,7 @@ provider "factory-droid" {
|
|
|
749
771
|
models "gemini-3.8-flash" {
|
|
750
772
|
routing-family "google"
|
|
751
773
|
upstream-rotation "google"
|
|
774
|
+
region-upstreams-eu "google"
|
|
752
775
|
credit-rates { input 0.6; output 5 }
|
|
753
776
|
list-price-from "google"
|
|
754
777
|
thinking-efforts "low" "medium" "high"
|
|
@@ -758,6 +781,7 @@ provider "factory-droid" {
|
|
|
758
781
|
models "gemini-3.7-flash" {
|
|
759
782
|
routing-family "google"
|
|
760
783
|
upstream-rotation "google"
|
|
784
|
+
region-upstreams-eu "google"
|
|
761
785
|
credit-rates { input 0.6; output 5 }
|
|
762
786
|
list-price-from "google"
|
|
763
787
|
thinking-efforts "low" "medium" "high"
|
|
@@ -767,6 +791,7 @@ provider "factory-droid" {
|
|
|
767
791
|
models "gemini-3.6-flash" {
|
|
768
792
|
routing-family "google"
|
|
769
793
|
upstream-rotation "google"
|
|
794
|
+
region-upstreams-eu "google"
|
|
770
795
|
credit-rates { input 0.6; output 5 }
|
|
771
796
|
list-price-from "google"
|
|
772
797
|
thinking-efforts "low" "medium" "high"
|
|
@@ -776,6 +801,7 @@ provider "factory-droid" {
|
|
|
776
801
|
models "gemini-3.5-flash" {
|
|
777
802
|
routing-family "google"
|
|
778
803
|
upstream-rotation "google"
|
|
804
|
+
region-upstreams-eu "google"
|
|
779
805
|
credit-rates { input 0.6 }
|
|
780
806
|
list-price-from "google"
|
|
781
807
|
thinking-efforts "minimal" "low" "medium" "high"
|
|
@@ -801,6 +827,19 @@ provider "factory-droid" {
|
|
|
801
827
|
thinking-requires-effort #false
|
|
802
828
|
thinking-default-level "high"
|
|
803
829
|
}
|
|
830
|
+
// Factory bills the Standard list-price ceiling, above the bundled Mistral
|
|
831
|
+
// row, so no list price is borrowed.
|
|
832
|
+
models "mistral-large-4" {
|
|
833
|
+
routing-family "factory"
|
|
834
|
+
upstream-rotation "mistral"
|
|
835
|
+
region-upstreams-us
|
|
836
|
+
region-upstreams-eu "mistral"
|
|
837
|
+
credit-rates { input 0.544; output 3.08; cache-read 0.103 }
|
|
838
|
+
thinking-efforts "high"
|
|
839
|
+
thinking-requires-effort #false
|
|
840
|
+
thinking-default-level "high"
|
|
841
|
+
entitlement { feature-flag "mistral_large_4" }
|
|
842
|
+
}
|
|
804
843
|
models "mistral-medium-3.5" {
|
|
805
844
|
routing-family "factory"
|
|
806
845
|
upstream-rotation "mistral"
|
|
@@ -889,7 +928,6 @@ provider "factory-droid" {
|
|
|
889
928
|
thinking-efforts "low" "high" "max"
|
|
890
929
|
thinking-requires-effort #false
|
|
891
930
|
thinking-default-level "high"
|
|
892
|
-
entitlement { feature-flag "deepseek_v4_1_flash" }
|
|
893
931
|
}
|
|
894
932
|
models "deepseek-v4-flash-0731" {
|
|
895
933
|
routing-family "factory"
|
|
@@ -999,7 +1037,8 @@ provider "factory-droid" {
|
|
|
999
1037
|
// Native declares every Responses tool `strict: false`; the field must reach the wire.
|
|
1000
1038
|
supports-strict-mode #true
|
|
1001
1039
|
}
|
|
1002
|
-
models "glm-*" "kimi-*" "deepseek-*" "nemotron-*" "inkling" "mistral-medium-3.5" "qwen3.8-max"
|
|
1040
|
+
models "glm-*" "kimi-*" "deepseek-*" "nemotron-*" "inkling" "mistral-medium-3.5" "mistral-large-4" "qwen3.8-max" \
|
|
1041
|
+
"minimax-m3" {
|
|
1003
1042
|
clamp-output-to-model-max #true
|
|
1004
1043
|
completions-reasoning-mode "none"
|
|
1005
1044
|
completions-reasoning-history "omit"
|
|
@@ -1039,7 +1078,7 @@ provider "factory-droid" {
|
|
|
1039
1078
|
}
|
|
1040
1079
|
// The replay codec follows the selected route, including EU GLM routes.
|
|
1041
1080
|
on-upstream "mistral" {
|
|
1042
|
-
models "glm-*" "mistral-medium-3.5" {
|
|
1081
|
+
models "glm-*" "mistral-medium-3.5" "mistral-large-4" {
|
|
1043
1082
|
completions-reasoning-mode "effort"
|
|
1044
1083
|
completions-reasoning-history "omit"
|
|
1045
1084
|
mistral-reasoning-content-parts #true
|
|
@@ -1058,6 +1097,7 @@ provider "factory-droid" {
|
|
|
1058
1097
|
// Messages contract on every Factory Anthropic route: non-thinking-led
|
|
1059
1098
|
// history drops thinking, disabled thinking omits the field, and the effort
|
|
1060
1099
|
// beta rides only where the route requires it alongside output effort.
|
|
1100
|
+
// Where disabled thinking is sent, replayed history drops its thinking.
|
|
1061
1101
|
on-api "anthropic-messages" {
|
|
1062
1102
|
strip-thinking-history #true
|
|
1063
1103
|
disabled-thinking "omit"
|
|
@@ -1073,6 +1113,12 @@ provider "factory-droid" {
|
|
|
1073
1113
|
disabled-thinking "disabled"
|
|
1074
1114
|
}
|
|
1075
1115
|
}
|
|
1116
|
+
// Adaptive models the registry marks `supportsDisabledThinking` send the
|
|
1117
|
+
// explicit disabled form at Off on every upstream.
|
|
1118
|
+
models "claude-sonnet-4-6" "claude-sonnet-5" "claude-opus-4-6" "claude-opus-4-7" "claude-opus-4-8" \
|
|
1119
|
+
"claude-opus-4-8-fast" "claude-opus-5" "claude-opus-5-fast" "claude-haiku-5-5" {
|
|
1120
|
+
disabled-thinking "disabled"
|
|
1121
|
+
}
|
|
1076
1122
|
models "claude-*" "atlas-07-21" "aster-07-15" {
|
|
1077
1123
|
anthropic-thinking "adaptive-summarized"
|
|
1078
1124
|
}
|
|
@@ -1091,9 +1137,15 @@ provider "factory-droid" {
|
|
|
1091
1137
|
anthropic-thinking "budget-effort"
|
|
1092
1138
|
}
|
|
1093
1139
|
// Always-thinking models keep adaptive thinking on disabled turns, on every upstream.
|
|
1094
|
-
models "claude-fable-5.1" "claude-opus-5-5" "claude-opus-5-5-fast"
|
|
1140
|
+
models "claude-fable-5.1" "claude-opus-5-5" "claude-opus-5-5-fast" {
|
|
1095
1141
|
disabled-thinking "adaptive"
|
|
1096
1142
|
}
|
|
1143
|
+
// Sonnet 5.5 rejects `disabled`: Off is `between_tools`, pinned to high
|
|
1144
|
+
// effort because `between_tools` rejects xhigh and max.
|
|
1145
|
+
models "claude-sonnet-5-5" {
|
|
1146
|
+
disabled-thinking "between-tools"
|
|
1147
|
+
between-tools-effort "high"
|
|
1148
|
+
}
|
|
1097
1149
|
// Fast tiers are distinct SKUs served with `speed: "fast"`.
|
|
1098
1150
|
models "claude-opus-5-5-fast" "claude-opus-5-fast" "claude-opus-4-8-fast" {
|
|
1099
1151
|
fast-mode #true
|
|
@@ -1113,6 +1165,13 @@ provider "factory-droid" {
|
|
|
1113
1165
|
on-upstream "bedrock_anthropic" {
|
|
1114
1166
|
anthropic-tool-streaming-beta #true
|
|
1115
1167
|
}
|
|
1168
|
+
// Azure Foundry enforces the preserved-thinking prefix check on Factory's
|
|
1169
|
+
// account, so prefix-bound models (`thinking-prefix-binding`) ask it to drop
|
|
1170
|
+
// stale signed blocks instead of failing. The other Anthropic upstreams
|
|
1171
|
+
// predate default enforcement; the field would opt them into it.
|
|
1172
|
+
on-upstream "azure_anthropic" {
|
|
1173
|
+
supports-thinking-binding-controls #true
|
|
1174
|
+
}
|
|
1116
1175
|
// xAI and Google sessions lock their upstream.
|
|
1117
1176
|
on-upstream "xai" "google" {
|
|
1118
1177
|
routing-session-lock #true
|
|
@@ -1132,6 +1191,11 @@ provider "factory-droid" {
|
|
|
1132
1191
|
reasoning-disable-mode "none-effort"
|
|
1133
1192
|
}
|
|
1134
1193
|
}
|
|
1194
|
+
// GPT models whose ladder has an Off/None rung send the literal `none`
|
|
1195
|
+
// tier on every upstream.
|
|
1196
|
+
models "gpt-5.2" "gpt-5.6-sol" "gpt-5.6-sol-fast" "gpt-5.6-terra" "gpt-5.6-luna" "gpt-6-sol" "gpt-6-luna" {
|
|
1197
|
+
reasoning-disable-mode "none-effort"
|
|
1198
|
+
}
|
|
1135
1199
|
models "gpt-*" {
|
|
1136
1200
|
omit-max-output-tokens #true
|
|
1137
1201
|
responses-verbosity "low"
|
|
@@ -10,6 +10,10 @@ provider "github-copilot" {
|
|
|
10
10
|
// tool schemas and does not support the context-management beta or field.
|
|
11
11
|
disable-strict-tools #true
|
|
12
12
|
supports-context-management #false
|
|
13
|
+
// Responses items from an earlier connection answer `401 input item does
|
|
14
|
+
// not belong to this connection`: a resumed session rebuilds prior turns
|
|
15
|
+
// until its first response.
|
|
16
|
+
connection-bound-native-history #true
|
|
13
17
|
class "anthropic" {
|
|
14
18
|
revision ">=4 <4.6" {
|
|
15
19
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
@@ -76,4 +80,29 @@ provider "github-copilot" {
|
|
|
76
80
|
}
|
|
77
81
|
max-context-window 1050000
|
|
78
82
|
}
|
|
83
|
+
// Claude Haiku 5.5: `billing.token_prices` reports its input/output rates
|
|
84
|
+
// but no cache legs, so discovered rows priced cache reads and writes at
|
|
85
|
+
// $0. Copilot's rate card bills $0.01 read / $0.125 write up to 100K and
|
|
86
|
+
// $0.05 / $0.625 on the long tier (the `-1m` sibling).
|
|
87
|
+
// https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing
|
|
88
|
+
// Copilot serves that tier as the `-1m` row (promotion target of the base
|
|
89
|
+
// row), so both rows opt out of the class-wide 100K 5x band: the base row
|
|
90
|
+
// would otherwise bill the band on top of the promotion, and the `-1m`
|
|
91
|
+
// row would charge 5x twice.
|
|
92
|
+
models "claude-haiku-5.5" {
|
|
93
|
+
cost-patch {
|
|
94
|
+
cache-read 0.01
|
|
95
|
+
cache-write 0.125
|
|
96
|
+
}
|
|
97
|
+
long-context-cost {
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
models "claude-haiku-5.5-1m" {
|
|
101
|
+
cost-patch {
|
|
102
|
+
cache-read 0.05
|
|
103
|
+
cache-write 0.625
|
|
104
|
+
}
|
|
105
|
+
long-context-cost {
|
|
106
|
+
}
|
|
107
|
+
}
|
|
79
108
|
}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
provider "google-antigravity" {
|
|
4
4
|
default-model "gemini-3.1-pro"
|
|
5
|
+
// `fetchAvailableModels` is the account's served roster; bundled rows it
|
|
6
|
+
// omits (e.g. Claude 5.5 on plans without it) 404 on every request (#14328).
|
|
7
|
+
dynamic-models-authoritative #true
|
|
5
8
|
kind-apis {
|
|
6
9
|
image "google-gemini-cli"
|
|
7
10
|
}
|
|
@@ -64,7 +67,11 @@ provider "google-antigravity" {
|
|
|
64
67
|
models "gemini-3-pro" {
|
|
65
68
|
thinking-mode "google-level"
|
|
66
69
|
}
|
|
67
|
-
|
|
70
|
+
// Antigravity discovery lists image SKUs beside chat models with no output
|
|
71
|
+
// modality, so they would build as chat. Accounts advertise either SKU in
|
|
72
|
+
// `imageGenerationModelIds` (gemini-3.1-flash-image replaced
|
|
73
|
+
// gemini-3-pro-image on some accounts, #11106).
|
|
74
|
+
models "gemini-3-pro-image" "gemini-3.1-flash-image" {
|
|
68
75
|
kind "image"
|
|
69
76
|
}
|
|
70
77
|
// residue: taxonomy ranks and exact globs do not isolate these models.
|
|
@@ -4,8 +4,29 @@ provider "groq" {
|
|
|
4
4
|
default-model "openai/gpt-oss-120b"
|
|
5
5
|
env "GROQ_API_KEY"
|
|
6
6
|
|
|
7
|
+
// Groq validates assistant message properties and refuses `reasoning_content`
|
|
8
|
+
// (400 "property 'reasoning_content' is unsupported"), so the Kimi lineage's
|
|
9
|
+
// tool-call replay field, real or the "." placeholder, is never sent here.
|
|
10
|
+
requires-reasoning-content-for-tool-calls #false
|
|
7
11
|
thinking-mode "effort"
|
|
8
12
|
class "unknown" {
|
|
9
13
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
10
14
|
}
|
|
15
|
+
// Groq accepts OpenAI `reasoning_effort` for Qwen, with `none` as its off
|
|
16
|
+
// value, not Qwen-native `enable_thinking` (400 "property 'enable_thinking'
|
|
17
|
+
// is unsupported"). Its documented Qwen ladder (Qwen 3.8) is low/medium/high;
|
|
18
|
+
// `minimal` answers 400 "invalid Qwen3.8 reasoning_effort".
|
|
19
|
+
class "qwen" {
|
|
20
|
+
thinking-format "openai"
|
|
21
|
+
reasoning-disable-mode "none-effort"
|
|
22
|
+
thinking-efforts "low" "medium" "high"
|
|
23
|
+
}
|
|
24
|
+
// Qwen 3.6 only takes `default` (thinking) or `none` (off), per its Groq
|
|
25
|
+
// model card.
|
|
26
|
+
models "qwen/qwen3.6-27b" {
|
|
27
|
+
thinking-efforts "high"
|
|
28
|
+
thinking-effort-map {
|
|
29
|
+
high "default"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
11
32
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Image billing for readers whose lineage has no `image-tokenization` rule in
|
|
2
|
+
// classes/*.kdl, by the wire API carrying the request. priority=-1: these are
|
|
3
|
+
// fallbacks, so a class-wide lineage rule (same specificity) always wins.
|
|
4
|
+
|
|
5
|
+
// OpenAI-compatible wires bill like GPT-5.5: 32px patches × 1.2, `auto` sized
|
|
6
|
+
// like `original`.
|
|
7
|
+
on-api "openai-completions" "openai-responses" "openai-codex-responses" "azure-openai-responses" priority=-1 {
|
|
8
|
+
image-tokenization {
|
|
9
|
+
regime "openai-patch"
|
|
10
|
+
multiplier 1.2
|
|
11
|
+
auto "original"
|
|
12
|
+
low {
|
|
13
|
+
max-edge 512
|
|
14
|
+
}
|
|
15
|
+
high {
|
|
16
|
+
max-edge 2048
|
|
17
|
+
patch-budget 2500
|
|
18
|
+
}
|
|
19
|
+
original {
|
|
20
|
+
max-edge 6000
|
|
21
|
+
patch-budget 10000
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Google wires bill Gemini 3's fixed `media_resolution` budget per image.
|
|
27
|
+
on-api "google-generative-ai" "google-gemini-cli" "google-vertex" priority=-1 {
|
|
28
|
+
image-tokenization {
|
|
29
|
+
regime "fixed"
|
|
30
|
+
tokens 1120
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Anthropic wires and every other adapter bill Claude's high-res tier, the
|
|
35
|
+
// largest per-image bill, so an unpriced reader is never undercounted.
|
|
36
|
+
on-api "anthropic-messages" "bedrock-converse-stream" "openrouter" "ollama-chat" "cursor-agent" "factory-droid-agent" "gitlab-duo-agent" "devin-agent" "apple-foundation-models" priority=-1 {
|
|
37
|
+
image-tokenization {
|
|
38
|
+
regime "anthropic-patch"
|
|
39
|
+
max-edge 2576
|
|
40
|
+
max-tokens 4784
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Most questions one System One judgment request may carry. A server that
|
|
2
|
+
// validates the `questions` map rejects an oversized request (HTTP 400/422)
|
|
3
|
+
// before judging anything, so the judge splits larger requests. Scoped by
|
|
4
|
+
// adapter, not provider name: self-hosted servers are user-configured judge
|
|
5
|
+
// rows under arbitrary provider ids.
|
|
6
|
+
//
|
|
7
|
+
// Unassigned, verified without a count cap (token budget only): TypeSafe jev
|
|
8
|
+
// (docs.typesafe.ai/models: 64k tokens per request), the same jev behind
|
|
9
|
+
// OpenRouter Decisions, Command Code and OpenCode Zen, Kev
|
|
10
|
+
// (github.com/jaredpalmer/kev: "A request may carry any number of
|
|
11
|
+
// questions"), and wev / OpenJev-4B (github.com/alanhuangyoo/OpenJev, which
|
|
12
|
+
// answers under any requested name).
|
|
13
|
+
//
|
|
14
|
+
// Unassigned: OpenAI Decisions (`openai-decisions`); its guide
|
|
15
|
+
// (developers.openai.com/api/docs/guides/decisions) documents no question cap.
|
|
16
|
+
//
|
|
17
|
+
// Not isolatable: openjev-sglang (github.com/ekzhang/openjev-sglang) caps at
|
|
18
|
+
// 64 but answers as `jev-latest` or its upstream model name, the same ids as
|
|
19
|
+
// uncapped hosts.
|
|
20
|
+
on-api "typesafe" "openrouter-decisions" {
|
|
21
|
+
// residue: no taxonomy class covers self-hosted OpenJEV deployments. An
|
|
22
|
+
// `openjev-*` gateway answered HTTP 422 `at most 16 items`
|
|
23
|
+
// (https://github.com/can1357/oh-my-pi/issues/15081); which server that is
|
|
24
|
+
// remains unidentified, so unknown OpenJEV ids keep the smallest cap
|
|
25
|
+
// observed. Over-splitting costs requests; under-splitting fails them.
|
|
26
|
+
models "*openjev*" {
|
|
27
|
+
judgment-questions-max 16
|
|
28
|
+
}
|
|
29
|
+
// residue: razorback16/openjev and its Swift port (Algorythm-Canada/
|
|
30
|
+
// OpenJevSwift) reject more than OPENJEV_MAX_QUESTIONS, default 256, with
|
|
31
|
+
// `at most 256 questions per request`. These are the wire names their
|
|
32
|
+
// DiffusionGemma, Laya, Verdict and JevK5 backends answer under; exact ids
|
|
33
|
+
// outrank the glob above.
|
|
34
|
+
models "openjev-latest" "openjev-0.1" "laya-1.0" "verdict-1.4" "jevk5-0.2" {
|
|
35
|
+
judgment-questions-max 256
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Cloudflare Clef, Clef Flash and Clef Omni: the Workers AI input schema
|
|
39
|
+
// bounds `questions` to 1-64 entries (`maxProperties: 64`,
|
|
40
|
+
// developers.cloudflare.com/workers-ai/models/clef, /clef-flash, /clef-omni).
|
|
41
|
+
on-api "workers-ai-systemone" {
|
|
42
|
+
models "@cf/cloudflare/clef*" {
|
|
43
|
+
judgment-questions-max 64
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// OpenRouter Decisions serves its `cloudflare/clef*` rows from Workers AI (and
|
|
47
|
+
// PrimeIntellect, whose cap is unpublished), so the Workers AI schema's 64
|
|
48
|
+
// applies; scoped apart from the TypeSafe block above.
|
|
49
|
+
on-api "openrouter-decisions" {
|
|
50
|
+
models "cloudflare/clef*" {
|
|
51
|
+
judgment-questions-max 64
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Provider-wire compat for "litellm".
|
|
2
2
|
|
|
3
3
|
provider "litellm" {
|
|
4
4
|
default-model "claude-opus-5-5"
|
|
5
5
|
env "LITELLM_API_KEY"
|
|
6
6
|
discovery label="LiteLLM" allow-unauthenticated=#true
|
|
7
|
+
|
|
8
|
+
// The proxy groups request logs into sessions by this header.
|
|
9
|
+
session-header "x-litellm-session-id"
|
|
7
10
|
}
|
|
@@ -42,8 +42,8 @@ provider "meta" {
|
|
|
42
42
|
supports-reasoning-effort #true
|
|
43
43
|
include-encrypted-reasoning #true
|
|
44
44
|
}
|
|
45
|
-
// Meta documents the `max` effort tier for Muse Spark 1.3
|
|
46
|
-
// contributor tiers
|
|
45
|
+
// Meta documents the `max` effort tier for Muse Spark 1.3 standard and
|
|
46
|
+
// contributor tiers; other revisions stay on the 5-tier ladder.
|
|
47
47
|
model "muse-spark-1.3" name="Muse Spark 1.3" {
|
|
48
48
|
reasoning #true
|
|
49
49
|
input "text" "image"
|
|
@@ -60,7 +60,7 @@ provider "meta" {
|
|
|
60
60
|
cost input=0.1 output=0.2 cache-read=0.002 cache-write=0
|
|
61
61
|
limits context=1048576 max-tokens=131072
|
|
62
62
|
thinking-mode "effort"
|
|
63
|
-
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
63
|
+
thinking-efforts "minimal" "low" "medium" "high" "xhigh" "max"
|
|
64
64
|
supports-reasoning-effort #true
|
|
65
65
|
include-encrypted-reasoning #true
|
|
66
66
|
}
|
|
@@ -6,11 +6,16 @@ provider "minimax-code-cn" priority=1 {
|
|
|
6
6
|
|
|
7
7
|
// Replaces the provider-id regex in both OpenAI baselines.
|
|
8
8
|
reasoning-deltas-may-be-cumulative #true
|
|
9
|
-
|
|
9
|
+
// residue: the legacy lightning SKUs survive only as previous-snapshot rows
|
|
10
|
+
// on the OpenAI-compatible route (models.dev and both live model lists omit
|
|
11
|
+
// them), so they keep that route's effort-mode thinking instead of the
|
|
12
|
+
// Anthropic adaptive rules the rest of the plan uses.
|
|
13
|
+
models "MiniMax-M2.1-lightning" "MiniMax-M2.5-lightning" {
|
|
10
14
|
thinking-mode "effort"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
thinking-effort-map {
|
|
16
|
+
low "low"
|
|
17
|
+
medium "medium"
|
|
18
|
+
high "high"
|
|
19
|
+
}
|
|
15
20
|
}
|
|
16
21
|
}
|
|
@@ -6,11 +6,16 @@ provider "minimax-code" priority=1 {
|
|
|
6
6
|
|
|
7
7
|
// Replaces the provider-id regex in both OpenAI baselines.
|
|
8
8
|
reasoning-deltas-may-be-cumulative #true
|
|
9
|
-
|
|
9
|
+
// residue: the legacy lightning SKUs survive only as previous-snapshot rows
|
|
10
|
+
// on the OpenAI-compatible route (models.dev and both live model lists omit
|
|
11
|
+
// them), so they keep that route's effort-mode thinking instead of the
|
|
12
|
+
// Anthropic adaptive rules the rest of the plan uses.
|
|
13
|
+
models "MiniMax-M2.1-lightning" "MiniMax-M2.5-lightning" {
|
|
10
14
|
thinking-mode "effort"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
thinking-effort-map {
|
|
16
|
+
low "low"
|
|
17
|
+
medium "medium"
|
|
18
|
+
high "high"
|
|
19
|
+
}
|
|
15
20
|
}
|
|
16
21
|
}
|
|
@@ -4,7 +4,31 @@ provider "mistral" {
|
|
|
4
4
|
default-model "devstral-medium-latest"
|
|
5
5
|
env "MISTRAL_API_KEY"
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// Public-preview aliases and current USD / 1M token pricing:
|
|
8
|
+
// https://docs.mistral.ai/models/mistral-large-4-0 (2026-10-06).
|
|
9
|
+
// Public preview is 50% off: input $0.68, output $2.09, cached input $0.07.
|
|
10
|
+
// List prices: input $1.36, output $4.18, cached input $0.14; update when preview ends.
|
|
11
|
+
// No separate maximum output-token limit is published.
|
|
12
|
+
seed api="openai-completions" base-url="https://api.mistral.ai/v1" bundle="always" {
|
|
13
|
+
model "mistral-large-4" name="Mistral Large 4" {
|
|
14
|
+
reasoning #true
|
|
15
|
+
input "text" "image"
|
|
16
|
+
cost input=0.68 output=2.09 cache-read=0.07 cache-write=0
|
|
17
|
+
limits context=1000000
|
|
18
|
+
}
|
|
19
|
+
model "mistral-large-4-0" name="Mistral Large 4" {
|
|
20
|
+
reasoning #true
|
|
21
|
+
input "text" "image"
|
|
22
|
+
cost input=0.68 output=2.09 cache-read=0.07 cache-write=0
|
|
23
|
+
limits context=1000000
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Mistral's chat-completions endpoint derives cache affinity from the
|
|
28
|
+
// top-level `prompt_cache_key` (https://docs.mistral.ai/studio/conversations/advanced/prompt-caching);
|
|
29
|
+
// without it, requests only hit replica-local implicit cache. Same shape as
|
|
30
|
+
// the kimi-code rule (#6049).
|
|
31
|
+
supports-prompt-cache-key #true
|
|
8
32
|
class "unknown" {
|
|
9
33
|
thinking-efforts "minimal" "low" "medium" "high" "xhigh"
|
|
10
34
|
}
|
|
@@ -31,6 +31,17 @@ provider "moonshot" {
|
|
|
31
31
|
input-modalities "text" "image"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
// stencil.so reports a $3 K3 cache write; Moonshot bills only cache hits
|
|
35
|
+
// ($0.30) and misses (the $3 input rate), with no cache-write charge.
|
|
36
|
+
// https://platform.moonshot.ai/docs/pricing/chat-k3
|
|
37
|
+
models "kimi-k3" {
|
|
38
|
+
cost-patch {
|
|
39
|
+
input 3.0
|
|
40
|
+
output 15.0
|
|
41
|
+
cache-read 0.3
|
|
42
|
+
cache-write 0.0
|
|
43
|
+
}
|
|
44
|
+
}
|
|
34
45
|
// The /models roster carries no modality metadata for the named vision/vl
|
|
35
46
|
// SKUs; the bounded id token is the census signal.
|
|
36
47
|
models token="vision" {
|
|
@@ -15,6 +15,13 @@ provider "muse-code" {
|
|
|
15
15
|
// api.meta.ai/v1 accepts only tool_choice "auto"; "none", "required" and named
|
|
16
16
|
// choices are rejected with 400 (verified 2026-09-10), so omit the field.
|
|
17
17
|
supports-tool-choice #false
|
|
18
|
+
// Results can be stored so a dropped stream is recovered: verified 2026-09-29
|
|
19
|
+
// against api.meta.ai/v1, a stored run keeps generating after the client
|
|
20
|
+
// socket dies and `GET /responses/{id}` returns it once finished (~60s for
|
|
21
|
+
// a high-effort turn), while `store: false` runs 404 forever. Storage is
|
|
22
|
+
// opt-in (privacy: stored runs retain prompts/outputs on Meta's side): omp
|
|
23
|
+
// setting providers.muse-code.storeResponses or PI_MUSE_STORE_RESPONSES=1.
|
|
24
|
+
store-responses #true
|
|
18
25
|
// Subscription tier bills per request; the compact edit prompt cuts the
|
|
19
26
|
// recurring tool-schema bytes. Verified 2026-09-05 against api.meta.ai/v1:
|
|
20
27
|
// `custom` tools are rejected with 400 "`custom` tools are not supported
|
|
@@ -13,6 +13,9 @@ provider "ollama" priority=-1 {
|
|
|
13
13
|
// Replaces both Ollama empty-length finish baselines.
|
|
14
14
|
empty-length-finish-is-context-error #true
|
|
15
15
|
thinking-efforts "low" "medium" "high" "max"
|
|
16
|
+
// Ollama's OpenAI-compatible endpoints accept effort "none" to turn thinking
|
|
17
|
+
// off; the lowest ladder effort ("low") still thinks on e.g. Gemma 4.
|
|
18
|
+
reasoning-disable-mode "none-effort"
|
|
16
19
|
// Ollama continues a trailing assistant turn verbatim on /api/chat and
|
|
17
20
|
// /v1/responses alike; callers use it to commit an output prefix.
|
|
18
21
|
supports-assistant-prefill #true
|