mirror of
https://github.com/Heretek-AI/Token-Max.git
synced 2026-10-12 02:03:18 +00:00
fix(pricing): model-aware subscription capacity resolution and cache rate calibration
- Harmonize plan generation prompt cache rate to shared 75% default from estimate-constants.json - Update TokenTranslator to resolve plan token capacity model-specifically via resolveTierModelBudget - Fix calculatePoolDrain to drain model-specific allowances and eliminate Math.max deflation on low-cost models - Make buildStackCandidates model-aware for accurate Dangerous Dave and Mix & Match stacking - Update WorkflowCalculator to resolve plan capacity model-specifically for active workloads - Reconcile Cursor Pro evidence quotes in throttle-profiles and reasoning token policies - Add unit tests for model-aware stack candidates and pool drainage (102/102 passing)
This commit is contained in:
@@ -22,3 +22,8 @@ dist-ssr
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# Agent environments
|
||||
.agents
|
||||
.claude
|
||||
skills-lock.json
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 23.86,
|
||||
"estimatedMillionTokens": 23.5,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -50,17 +50,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 40.27,
|
||||
"estimatedMillionTokens": 43.55,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 25.71,
|
||||
"estimatedMillionTokens": 27.03,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 49.8,
|
||||
"estimatedMillionTokens": 52.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -102,7 +102,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 53.56,
|
||||
"estimatedMillionTokens": 52.74,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -112,17 +112,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 90.38,
|
||||
"estimatedMillionTokens": 97.75,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 57.71,
|
||||
"estimatedMillionTokens": 60.66,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 111.78,
|
||||
"estimatedMillionTokens": 118.31,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -164,7 +164,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 95.45,
|
||||
"estimatedMillionTokens": 94.0,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -174,17 +174,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 161.07,
|
||||
"estimatedMillionTokens": 174.21,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 102.86,
|
||||
"estimatedMillionTokens": 108.12,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 199.21,
|
||||
"estimatedMillionTokens": 210.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -226,7 +226,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 381.29,
|
||||
"estimatedMillionTokens": 375.48,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -236,17 +236,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 643.4,
|
||||
"estimatedMillionTokens": 695.87,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 410.86,
|
||||
"estimatedMillionTokens": 431.86,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 795.73,
|
||||
"estimatedMillionTokens": 842.19,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -286,7 +286,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 55.68,
|
||||
"estimatedMillionTokens": 54.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -296,12 +296,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 93.96,
|
||||
"estimatedMillionTokens": 101.62,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 60.0,
|
||||
"estimatedMillionTokens": 63.07,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -341,7 +341,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 222.2,
|
||||
"estimatedMillionTokens": 218.81,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -351,12 +351,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 374.94,
|
||||
"estimatedMillionTokens": 405.52,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 239.43,
|
||||
"estimatedMillionTokens": 251.67,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -396,7 +396,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 555.76,
|
||||
"estimatedMillionTokens": 547.29,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -406,12 +406,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 937.81,
|
||||
"estimatedMillionTokens": 1014.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 598.86,
|
||||
"estimatedMillionTokens": 629.47,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
|
||||
@@ -42,12 +42,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"dola-seed-2.0-lite": {
|
||||
"estimatedMillionTokens": 126.51,
|
||||
"estimatedMillionTokens": 123.03,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.3-flash": {
|
||||
"estimatedMillionTokens": 197.69,
|
||||
"estimatedMillionTokens": 193.98,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -57,7 +57,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"deepseek-v4-flash": {
|
||||
"estimatedMillionTokens": 124.94,
|
||||
"estimatedMillionTokens": 121.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -67,7 +67,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 54.22,
|
||||
"estimatedMillionTokens": 50.45,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -108,12 +108,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"dola-seed-2.0-lite": {
|
||||
"estimatedMillionTokens": 632.55,
|
||||
"estimatedMillionTokens": 615.15,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.3-flash": {
|
||||
"estimatedMillionTokens": 988.45,
|
||||
"estimatedMillionTokens": 969.9,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -128,7 +128,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 271.09,
|
||||
"estimatedMillionTokens": 252.27,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 6.96,
|
||||
"estimatedMillionTokens": 6.55,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -140,7 +140,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 27.86,
|
||||
"estimatedMillionTokens": 26.2,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
|
||||
@@ -24,22 +24,22 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.6 luna": {
|
||||
"estimatedMillionTokens": 93.13,
|
||||
"estimatedMillionTokens": 73.04,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"grok 4.5": {
|
||||
"estimatedMillionTokens": 9.44,
|
||||
"estimatedMillionTokens": 7.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"qwen 3.8 max": {
|
||||
"estimatedMillionTokens": 12.0,
|
||||
"estimatedMillionTokens": 8.94,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m3": {
|
||||
"estimatedMillionTokens": 62.64,
|
||||
"estimatedMillionTokens": 50.45,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -80,27 +80,27 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 26.08,
|
||||
"estimatedMillionTokens": 20.45,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.2": {
|
||||
"estimatedMillionTokens": 104.51,
|
||||
"estimatedMillionTokens": 82.01,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"tencent hy3": {
|
||||
"estimatedMillionTokens": 855.9,
|
||||
"estimatedMillionTokens": 711.0,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"qwen 3.8 27b": {
|
||||
"estimatedMillionTokens": 287.67,
|
||||
"estimatedMillionTokens": 231.5,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"deepseek v4 flash": {
|
||||
"estimatedMillionTokens": 1263.7,
|
||||
"estimatedMillionTokens": 876.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -141,27 +141,27 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"claude opus 4.8": {
|
||||
"estimatedMillionTokens": 32.7,
|
||||
"estimatedMillionTokens": 25.12,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 29.8,
|
||||
"estimatedMillionTokens": 23.37,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini": {
|
||||
"estimatedMillionTokens": 109.0,
|
||||
"estimatedMillionTokens": 83.74,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.2": {
|
||||
"estimatedMillionTokens": 119.45,
|
||||
"estimatedMillionTokens": 93.72,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m3": {
|
||||
"estimatedMillionTokens": 501.12,
|
||||
"estimatedMillionTokens": 403.6,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
|
||||
@@ -52,47 +52,47 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"cursor grok 4.6": {
|
||||
"estimatedMillionTokens": 18.88,
|
||||
"estimatedMillionTokens": 15.41,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"composer 2.5": {
|
||||
"estimatedMillionTokens": 52.58,
|
||||
"estimatedMillionTokens": 46.99,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 4.75,
|
||||
"estimatedMillionTokens": 3.43,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 20.44,
|
||||
"estimatedMillionTokens": 15.7,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 10.22,
|
||||
"estimatedMillionTokens": 7.85,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.1 pro": {
|
||||
"estimatedMillionTokens": 18.63,
|
||||
"estimatedMillionTokens": 14.61,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 56.33,
|
||||
"estimatedMillionTokens": 42.94,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"muse spark 1.3": {
|
||||
"estimatedMillionTokens": 37.11,
|
||||
"estimatedMillionTokens": 27.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -129,37 +129,37 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"cursor grok 4.6": {
|
||||
"estimatedMillionTokens": 56.63,
|
||||
"estimatedMillionTokens": 46.24,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"composer 2.5": {
|
||||
"estimatedMillionTokens": 157.75,
|
||||
"estimatedMillionTokens": 140.98,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 14.24,
|
||||
"estimatedMillionTokens": 10.29,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 24.53,
|
||||
"estimatedMillionTokens": 18.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 61.31,
|
||||
"estimatedMillionTokens": 47.1,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 30.66,
|
||||
"estimatedMillionTokens": 23.55,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 168.99,
|
||||
"estimatedMillionTokens": 128.82,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -195,32 +195,32 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"cursor grok 4.6": {
|
||||
"estimatedMillionTokens": 188.76,
|
||||
"estimatedMillionTokens": 154.13,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"composer 2.5": {
|
||||
"estimatedMillionTokens": 525.82,
|
||||
"estimatedMillionTokens": 469.93,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 47.46,
|
||||
"estimatedMillionTokens": 34.29,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 81.75,
|
||||
"estimatedMillionTokens": 62.8,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 563.29,
|
||||
"estimatedMillionTokens": 429.39,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-6 astra": {
|
||||
"estimatedMillionTokens": 40.88,
|
||||
"estimatedMillionTokens": 31.4,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
|
||||
@@ -48,42 +48,42 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 3.07,
|
||||
"estimatedMillionTokens": 2.36,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude haiku 4.5": {
|
||||
"estimatedMillionTokens": 6.13,
|
||||
"estimatedMillionTokens": 4.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.4": {
|
||||
"estimatedMillionTokens": 2.24,
|
||||
"estimatedMillionTokens": 1.75,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.3-codex": {
|
||||
"estimatedMillionTokens": 2.71,
|
||||
"estimatedMillionTokens": 2.2,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.5 flash": {
|
||||
"estimatedMillionTokens": 3.73,
|
||||
"estimatedMillionTokens": 2.92,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -121,37 +121,37 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 9.2,
|
||||
"estimatedMillionTokens": 7.07,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.3-codex": {
|
||||
"estimatedMillionTokens": 8.14,
|
||||
"estimatedMillionTokens": 6.6,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 24.53,
|
||||
"estimatedMillionTokens": 18.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 3.68,
|
||||
"estimatedMillionTokens": 2.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 2.14,
|
||||
"estimatedMillionTokens": 1.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.4 nano": {
|
||||
"estimatedMillionTokens": 82.0,
|
||||
"estimatedMillionTokens": 64.62,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-6 astra": {
|
||||
"estimatedMillionTokens": 1.84,
|
||||
"estimatedMillionTokens": 1.41,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -186,27 +186,27 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.3-codex": {
|
||||
"estimatedMillionTokens": 27.12,
|
||||
"estimatedMillionTokens": 21.98,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 81.75,
|
||||
"estimatedMillionTokens": 62.8,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 12.26,
|
||||
"estimatedMillionTokens": 9.42,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 7.12,
|
||||
"estimatedMillionTokens": 5.14,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-6 astra": {
|
||||
"estimatedMillionTokens": 6.13,
|
||||
"estimatedMillionTokens": 4.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
|
||||
@@ -42,17 +42,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 77.88,
|
||||
"estimatedMillionTokens": 77.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 77.88,
|
||||
"estimatedMillionTokens": 77.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 77.88,
|
||||
"estimatedMillionTokens": 77.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -62,17 +62,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 3.06,
|
||||
"estimatedMillionTokens": 2.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 0.61,
|
||||
"estimatedMillionTokens": 0.57,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 50.91,
|
||||
"estimatedMillionTokens": 46.07,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -115,17 +115,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 934.56,
|
||||
"estimatedMillionTokens": 935.58,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 934.56,
|
||||
"estimatedMillionTokens": 935.58,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 934.56,
|
||||
"estimatedMillionTokens": 935.58,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -135,17 +135,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 36.76,
|
||||
"estimatedMillionTokens": 34.1,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 7.35,
|
||||
"estimatedMillionTokens": 6.82,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 610.87,
|
||||
"estimatedMillionTokens": 552.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -187,17 +187,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 4672.81,
|
||||
"estimatedMillionTokens": 4677.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 4672.81,
|
||||
"estimatedMillionTokens": 4677.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 4672.81,
|
||||
"estimatedMillionTokens": 4677.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -207,17 +207,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 183.8,
|
||||
"estimatedMillionTokens": 170.5,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 36.76,
|
||||
"estimatedMillionTokens": 34.1,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 3054.33,
|
||||
"estimatedMillionTokens": 2764.2,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -259,17 +259,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 18691.24,
|
||||
"estimatedMillionTokens": 18711.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 18691.24,
|
||||
"estimatedMillionTokens": 18711.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 18691.24,
|
||||
"estimatedMillionTokens": 18711.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -279,17 +279,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 735.22,
|
||||
"estimatedMillionTokens": 682.01,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 147.04,
|
||||
"estimatedMillionTokens": 136.4,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 12217.32,
|
||||
"estimatedMillionTokens": 11056.82,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 170.99,
|
||||
"estimatedMillionTokens": 179.92,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -72,7 +72,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 427.48,
|
||||
"estimatedMillionTokens": 449.79,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -109,7 +109,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 1139.95,
|
||||
"estimatedMillionTokens": 1199.44,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -146,7 +146,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 2279.9,
|
||||
"estimatedMillionTokens": 2398.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 scout": {
|
||||
"estimatedMillionTokens": 30.51,
|
||||
"estimatedMillionTokens": 30.49,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -58,12 +58,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 scout": {
|
||||
"estimatedMillionTokens": 152.54,
|
||||
"estimatedMillionTokens": 152.46,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 maverick": {
|
||||
"estimatedMillionTokens": 34.2,
|
||||
"estimatedMillionTokens": 33.17,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -98,7 +98,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 maverick": {
|
||||
"estimatedMillionTokens": 136.78,
|
||||
"estimatedMillionTokens": 132.69,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.6 terra": {
|
||||
"estimatedMillionTokens": 91.13,
|
||||
"estimatedMillionTokens": 93.04,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
|
||||
@@ -186,7 +186,7 @@ def scale_estimate(base, factor):
|
||||
_CWP = _ESTIMATE_CONSTANTS["cacheWritePremium"]
|
||||
_IN_TOK = _ESTIMATE_CONSTANTS["agentRequest"]["inputTokens"]
|
||||
_OUT_TOK = _ESTIMATE_CONSTANTS["agentRequest"]["outputTokens"]
|
||||
_PER_MODEL_CACHE_RATE = 0.95
|
||||
_PER_MODEL_CACHE_RATE = _ESTIMATE_CONSTANTS["defaultCacheRate"]
|
||||
_PER_MODEL_WRITE_SHARE = 0.1
|
||||
|
||||
|
||||
|
||||
@@ -314,3 +314,19 @@ windsurf (Devin quota mechanism unpublished), plus any pseudo-model slot
|
||||
`npm test` 100/100 (added per-model + fallback cases);
|
||||
`npm run build` clean; data regenerated via `python3 data/generate_plans.py`
|
||||
and `node scripts/build-data.mjs`.
|
||||
|
||||
## Adversarial Review Recalibration (2026-09-19)
|
||||
|
||||
### Key Audit Findings & Mathematical Fixes
|
||||
1. **Cache Rate Harmonization**: Eliminated `_PER_MODEL_CACHE_RATE = 0.95` in `data/generate_plans.py` which was artificially doubling plan token capacity. Plan generation now enforces the shared `defaultCacheRate: 0.75` from `data/estimate-constants.json` across all credit pools, reserving 95% caching only for providers with documented guarantees (Z.ai).
|
||||
2. **Model-Aware Token Resolution in `TokenTranslator`**: `TokenTranslator.tsx` now calls `resolveTierModelBudget(currentTier, comparisonModel.name, comparisonModel.id)` rather than comparing direct API yields against monolithic tier scalars. Relabeled linear request counts to "Normalized 21K Turns".
|
||||
3. **Multi-Model Pool Drain Engine Fix**: Fixed `calculatePoolDrain` in `src/lib/pricing.ts` to support `perModelTokenBudgets` alongside `modelAllowances`. Removed the `Math.max(monthlyPrice, ...)` flaw that was artificially inflating pool capacity for low-cost models.
|
||||
4. **Stack Candidates Model-Aware Ranking**: `buildStackCandidates` now scores and scales candidates using the matched model's resolved token capacity (`resolveTierModelBudget`), preventing Dangerous Dave and Mix & Match from assigning inaccurate token yields to models.
|
||||
5. **Workflow Calculator Model Alignment**: `WorkflowCalculator.tsx` now resolves plan capacity using `resolveTierModelBudget` for the active primary model in the workflow and verifies fit against `poolDrain.overageCost === 0`.
|
||||
6. **Subsystem Policy Reconciliation**: Updated Cursor Pro evidence quotes and reasoning token descriptions across `src/lib/throttle-profiles.ts` and `src/lib/reasoning.ts` to reflect the dual-pool architecture (Cursor Models pool vs Other Models at API rates).
|
||||
|
||||
### Verification
|
||||
- `npm run lint` — 0 errors, 0 warnings (72 files).
|
||||
- `npm run validate-data` — 33 plans and 33 models pass all schema invariants.
|
||||
- `npm test` — 102/102 tests pass (8 suites, including new tests for model-aware stack candidates and pool drainage).
|
||||
- `npm run build` — Clean production build with Vite + TypeScript.
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"timestamp": "2026-09-20T01:02:28.988Z"
|
||||
"timestamp": "2026-09-20T01:25:36.207Z"
|
||||
}
|
||||
+123
-123
@@ -89,7 +89,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 23.86,
|
||||
"estimatedMillionTokens": 23.5,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -99,17 +99,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 40.27,
|
||||
"estimatedMillionTokens": 43.55,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 25.71,
|
||||
"estimatedMillionTokens": 27.03,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 49.8,
|
||||
"estimatedMillionTokens": 52.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -151,7 +151,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 53.56,
|
||||
"estimatedMillionTokens": 52.74,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -161,17 +161,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 90.38,
|
||||
"estimatedMillionTokens": 97.75,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 57.71,
|
||||
"estimatedMillionTokens": 60.66,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 111.78,
|
||||
"estimatedMillionTokens": 118.31,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -213,7 +213,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 95.45,
|
||||
"estimatedMillionTokens": 94,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -223,17 +223,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 161.07,
|
||||
"estimatedMillionTokens": 174.21,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 102.86,
|
||||
"estimatedMillionTokens": 108.12,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 199.21,
|
||||
"estimatedMillionTokens": 210.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -275,7 +275,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 381.29,
|
||||
"estimatedMillionTokens": 375.48,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -285,17 +285,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 643.4,
|
||||
"estimatedMillionTokens": 695.87,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 410.86,
|
||||
"estimatedMillionTokens": 431.86,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m2.5": {
|
||||
"estimatedMillionTokens": 795.73,
|
||||
"estimatedMillionTokens": 842.19,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -335,7 +335,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 55.68,
|
||||
"estimatedMillionTokens": 54.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -345,12 +345,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 93.96,
|
||||
"estimatedMillionTokens": 101.62,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 60,
|
||||
"estimatedMillionTokens": 63.07,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -390,7 +390,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 222.2,
|
||||
"estimatedMillionTokens": 218.81,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -400,12 +400,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 374.94,
|
||||
"estimatedMillionTokens": 405.52,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 239.43,
|
||||
"estimatedMillionTokens": 251.67,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -445,7 +445,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"qwen 3.7 plus": {
|
||||
"estimatedMillionTokens": 555.76,
|
||||
"estimatedMillionTokens": 547.29,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -455,12 +455,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"kimi k2.5": {
|
||||
"estimatedMillionTokens": 937.81,
|
||||
"estimatedMillionTokens": 1014.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5": {
|
||||
"estimatedMillionTokens": 598.86,
|
||||
"estimatedMillionTokens": 629.47,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -755,12 +755,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"dola-seed-2.0-lite": {
|
||||
"estimatedMillionTokens": 126.51,
|
||||
"estimatedMillionTokens": 123.03,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.3-flash": {
|
||||
"estimatedMillionTokens": 197.69,
|
||||
"estimatedMillionTokens": 193.98,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -770,7 +770,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"deepseek-v4-flash": {
|
||||
"estimatedMillionTokens": 124.94,
|
||||
"estimatedMillionTokens": 121.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -780,7 +780,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 54.22,
|
||||
"estimatedMillionTokens": 50.45,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -821,12 +821,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"dola-seed-2.0-lite": {
|
||||
"estimatedMillionTokens": 632.55,
|
||||
"estimatedMillionTokens": 615.15,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.3-flash": {
|
||||
"estimatedMillionTokens": 988.45,
|
||||
"estimatedMillionTokens": 969.9,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -841,7 +841,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 271.09,
|
||||
"estimatedMillionTokens": 252.27,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -954,7 +954,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 6.96,
|
||||
"estimatedMillionTokens": 6.55,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -1003,7 +1003,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 27.86,
|
||||
"estimatedMillionTokens": 26.2,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -1050,22 +1050,22 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.6 luna": {
|
||||
"estimatedMillionTokens": 93.13,
|
||||
"estimatedMillionTokens": 73.04,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"grok 4.5": {
|
||||
"estimatedMillionTokens": 9.44,
|
||||
"estimatedMillionTokens": 7.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"qwen 3.8 max": {
|
||||
"estimatedMillionTokens": 12,
|
||||
"estimatedMillionTokens": 8.94,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m3": {
|
||||
"estimatedMillionTokens": 62.64,
|
||||
"estimatedMillionTokens": 50.45,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1106,27 +1106,27 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 26.08,
|
||||
"estimatedMillionTokens": 20.45,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.2": {
|
||||
"estimatedMillionTokens": 104.51,
|
||||
"estimatedMillionTokens": 82.01,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"tencent hy3": {
|
||||
"estimatedMillionTokens": 855.9,
|
||||
"estimatedMillionTokens": 711,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"qwen 3.8 27b": {
|
||||
"estimatedMillionTokens": 287.67,
|
||||
"estimatedMillionTokens": 231.5,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"deepseek v4 flash": {
|
||||
"estimatedMillionTokens": 1263.7,
|
||||
"estimatedMillionTokens": 876.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1167,27 +1167,27 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"claude opus 4.8": {
|
||||
"estimatedMillionTokens": 32.7,
|
||||
"estimatedMillionTokens": 25.12,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 29.8,
|
||||
"estimatedMillionTokens": 23.37,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini": {
|
||||
"estimatedMillionTokens": 109,
|
||||
"estimatedMillionTokens": 83.74,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"glm-5.2": {
|
||||
"estimatedMillionTokens": 119.45,
|
||||
"estimatedMillionTokens": 93.72,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"minimax m3": {
|
||||
"estimatedMillionTokens": 501.12,
|
||||
"estimatedMillionTokens": 403.6,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1326,47 +1326,47 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"cursor grok 4.6": {
|
||||
"estimatedMillionTokens": 18.88,
|
||||
"estimatedMillionTokens": 15.41,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"composer 2.5": {
|
||||
"estimatedMillionTokens": 52.58,
|
||||
"estimatedMillionTokens": 46.99,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 4.75,
|
||||
"estimatedMillionTokens": 3.43,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 20.44,
|
||||
"estimatedMillionTokens": 15.7,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 10.22,
|
||||
"estimatedMillionTokens": 7.85,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.1 pro": {
|
||||
"estimatedMillionTokens": 18.63,
|
||||
"estimatedMillionTokens": 14.61,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 56.33,
|
||||
"estimatedMillionTokens": 42.94,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"muse spark 1.3": {
|
||||
"estimatedMillionTokens": 37.11,
|
||||
"estimatedMillionTokens": 27.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1403,37 +1403,37 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"cursor grok 4.6": {
|
||||
"estimatedMillionTokens": 56.63,
|
||||
"estimatedMillionTokens": 46.24,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"composer 2.5": {
|
||||
"estimatedMillionTokens": 157.75,
|
||||
"estimatedMillionTokens": 140.98,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 14.24,
|
||||
"estimatedMillionTokens": 10.29,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 24.53,
|
||||
"estimatedMillionTokens": 18.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 61.31,
|
||||
"estimatedMillionTokens": 47.1,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.6 sol": {
|
||||
"estimatedMillionTokens": 30.66,
|
||||
"estimatedMillionTokens": 23.55,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 168.99,
|
||||
"estimatedMillionTokens": 128.82,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1469,32 +1469,32 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"cursor grok 4.6": {
|
||||
"estimatedMillionTokens": 188.76,
|
||||
"estimatedMillionTokens": 154.13,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"composer 2.5": {
|
||||
"estimatedMillionTokens": 525.82,
|
||||
"estimatedMillionTokens": 469.93,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 47.46,
|
||||
"estimatedMillionTokens": 34.29,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 81.75,
|
||||
"estimatedMillionTokens": 62.8,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 563.29,
|
||||
"estimatedMillionTokens": 429.39,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-6 astra": {
|
||||
"estimatedMillionTokens": 40.88,
|
||||
"estimatedMillionTokens": 31.4,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1727,42 +1727,42 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 3.07,
|
||||
"estimatedMillionTokens": 2.36,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude haiku 4.5": {
|
||||
"estimatedMillionTokens": 6.13,
|
||||
"estimatedMillionTokens": 4.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.4": {
|
||||
"estimatedMillionTokens": 2.24,
|
||||
"estimatedMillionTokens": 1.75,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.3-codex": {
|
||||
"estimatedMillionTokens": 2.71,
|
||||
"estimatedMillionTokens": 2.2,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.5 flash": {
|
||||
"estimatedMillionTokens": 3.73,
|
||||
"estimatedMillionTokens": 2.92,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 8.18,
|
||||
"estimatedMillionTokens": 6.28,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1800,37 +1800,37 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"claude sonnet 5": {
|
||||
"estimatedMillionTokens": 9.2,
|
||||
"estimatedMillionTokens": 7.07,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.3-codex": {
|
||||
"estimatedMillionTokens": 8.14,
|
||||
"estimatedMillionTokens": 6.6,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 24.53,
|
||||
"estimatedMillionTokens": 18.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 3.68,
|
||||
"estimatedMillionTokens": 2.83,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 2.14,
|
||||
"estimatedMillionTokens": 1.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-5.4 nano": {
|
||||
"estimatedMillionTokens": 82,
|
||||
"estimatedMillionTokens": 64.62,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-6 astra": {
|
||||
"estimatedMillionTokens": 1.84,
|
||||
"estimatedMillionTokens": 1.41,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -1865,27 +1865,27 @@
|
||||
],
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.3-codex": {
|
||||
"estimatedMillionTokens": 27.12,
|
||||
"estimatedMillionTokens": 21.98,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 81.75,
|
||||
"estimatedMillionTokens": 62.8,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 5": {
|
||||
"estimatedMillionTokens": 12.26,
|
||||
"estimatedMillionTokens": 9.42,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude fable 5.1": {
|
||||
"estimatedMillionTokens": 7.12,
|
||||
"estimatedMillionTokens": 5.14,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-6 astra": {
|
||||
"estimatedMillionTokens": 6.13,
|
||||
"estimatedMillionTokens": 4.71,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -2138,17 +2138,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 77.88,
|
||||
"estimatedMillionTokens": 77.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 77.88,
|
||||
"estimatedMillionTokens": 77.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 77.88,
|
||||
"estimatedMillionTokens": 77.96,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -2158,17 +2158,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 3.06,
|
||||
"estimatedMillionTokens": 2.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 0.61,
|
||||
"estimatedMillionTokens": 0.57,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 50.91,
|
||||
"estimatedMillionTokens": 46.07,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -2211,17 +2211,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 934.56,
|
||||
"estimatedMillionTokens": 935.58,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 934.56,
|
||||
"estimatedMillionTokens": 935.58,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 934.56,
|
||||
"estimatedMillionTokens": 935.58,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -2231,17 +2231,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 36.76,
|
||||
"estimatedMillionTokens": 34.1,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 7.35,
|
||||
"estimatedMillionTokens": 6.82,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 610.87,
|
||||
"estimatedMillionTokens": 552.84,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -2283,17 +2283,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 4672.81,
|
||||
"estimatedMillionTokens": 4677.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 4672.81,
|
||||
"estimatedMillionTokens": 4677.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 4672.81,
|
||||
"estimatedMillionTokens": 4677.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -2303,17 +2303,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 183.8,
|
||||
"estimatedMillionTokens": 170.5,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 36.76,
|
||||
"estimatedMillionTokens": 34.1,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 3054.33,
|
||||
"estimatedMillionTokens": 2764.2,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -2355,17 +2355,17 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gemini 3.8 flash": {
|
||||
"estimatedMillionTokens": 18691.24,
|
||||
"estimatedMillionTokens": 18711.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.7 flash": {
|
||||
"estimatedMillionTokens": 18691.24,
|
||||
"estimatedMillionTokens": 18711.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gemini 3.6 flash": {
|
||||
"estimatedMillionTokens": 18691.24,
|
||||
"estimatedMillionTokens": 18711.54,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
@@ -2375,17 +2375,17 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude sonnet 4.6": {
|
||||
"estimatedMillionTokens": 735.22,
|
||||
"estimatedMillionTokens": 682.01,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"claude opus 4.6": {
|
||||
"estimatedMillionTokens": 147.04,
|
||||
"estimatedMillionTokens": 136.4,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"gpt-oss-120b": {
|
||||
"estimatedMillionTokens": 12217.32,
|
||||
"estimatedMillionTokens": 11056.82,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -2640,7 +2640,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 170.99,
|
||||
"estimatedMillionTokens": 179.92,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -2677,7 +2677,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 427.48,
|
||||
"estimatedMillionTokens": 449.79,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -2714,7 +2714,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 1139.95,
|
||||
"estimatedMillionTokens": 1199.44,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -2751,7 +2751,7 @@
|
||||
"confidence": "low"
|
||||
},
|
||||
"k2.7 code": {
|
||||
"estimatedMillionTokens": 2279.9,
|
||||
"estimatedMillionTokens": 2398.88,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "low"
|
||||
}
|
||||
@@ -3231,7 +3231,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 scout": {
|
||||
"estimatedMillionTokens": 30.51,
|
||||
"estimatedMillionTokens": 30.49,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -3267,12 +3267,12 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 scout": {
|
||||
"estimatedMillionTokens": 152.54,
|
||||
"estimatedMillionTokens": 152.46,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 maverick": {
|
||||
"estimatedMillionTokens": 34.2,
|
||||
"estimatedMillionTokens": 33.17,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -3307,7 +3307,7 @@
|
||||
"confidence": "medium"
|
||||
},
|
||||
"llama 4 maverick": {
|
||||
"estimatedMillionTokens": 136.78,
|
||||
"estimatedMillionTokens": 132.69,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
}
|
||||
@@ -3848,7 +3848,7 @@
|
||||
},
|
||||
"perModelTokenBudgets": {
|
||||
"gpt-5.6 terra": {
|
||||
"estimatedMillionTokens": 91.13,
|
||||
"estimatedMillionTokens": 93.04,
|
||||
"basis": "list-price-credit",
|
||||
"confidence": "medium"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useState, useMemo } from 'react';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import type { CodingPlan, NormalizedModel, CacheRate, WorkloadItem } from '../../lib/types';
|
||||
import { getEffectiveCacheMultiplier, calculatePoolDrain, QUALITY } from '../../lib/pricing';
|
||||
import { getEffectiveCacheMultiplier, calculatePoolDrain, resolveTierModelBudget, QUALITY } from '../../lib/pricing';
|
||||
import { DEFAULT_CACHE_RATE } from '../../lib/estimate-constants';
|
||||
import {
|
||||
Workflow,
|
||||
@@ -330,19 +330,21 @@ export function WorkflowCalculator({ models, plans }: WorkflowCalculatorProps) {
|
||||
.filter(t => t.monthlyPrice !== null && t.monthlyPrice > 0 && t.estimatedTokenBudget)
|
||||
.map(tier => {
|
||||
const tb = tier.estimatedTokenBudget;
|
||||
const conservative = tb ? tb.estimatedMillionTokens : 0;
|
||||
const optimistic = tb ? (tb.optimisticEstimate ?? conservative) : 0;
|
||||
const midpoint = tb ? (tb.midpointEstimate ?? conservative) : 0;
|
||||
const primaryItem = workloadItems[0];
|
||||
const resolved = resolveTierModelBudget(tier, primaryItem?.modelName, primaryItem?.modelId);
|
||||
const conservative = resolved.tokens > 0 ? resolved.tokens : (tb ? tb.estimatedMillionTokens : 0);
|
||||
const optimistic = resolved.tokens > 0 ? (resolved.optimistic || resolved.tokens) : (tb ? (tb.optimisticEstimate ?? conservative) : 0);
|
||||
const midpoint = resolved.tokens > 0 ? (resolved.midpoint || resolved.tokens) : (tb ? (tb.midpointEstimate ?? conservative) : 0);
|
||||
const basis =
|
||||
estimateBasis === 'optimistic' ? optimistic :
|
||||
estimateBasis === 'midpoint' ? midpoint :
|
||||
conservative;
|
||||
const caps = { basis, optimistic, conservative };
|
||||
const fits = caps.basis >= requiredTokens;
|
||||
const borderline = !fits && caps.optimistic > caps.basis && caps.optimistic >= requiredTokens;
|
||||
const poolDrain = calculatePoolDrain(plan, tier, workloadItems, estimateBasis);
|
||||
const fits = poolDrain.coverageType !== 'none' && poolDrain.overageCost === 0 && (caps.basis >= requiredTokens || poolDrain.coveredDirectCost >= poolDrain.totalDirectCost);
|
||||
const borderline = !fits && poolDrain.coverageType !== 'none' && (caps.optimistic >= requiredTokens || (caps.optimistic > caps.basis && poolDrain.overageCost < poolDrain.totalDirectCost * 0.25));
|
||||
const dailyCapacity = (caps.basis * 1e6) / 30;
|
||||
const windowRisk = dailyDemand > dailyCapacity;
|
||||
const poolDrain = calculatePoolDrain(plan, tier, workloadItems, estimateBasis);
|
||||
|
||||
return {
|
||||
planId: plan.id,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useState, useMemo } from 'react';
|
||||
import type { CodingPlan, NormalizedModel, CacheRate } from '../../lib/types';
|
||||
import { formatMillionTokens, getProviderColor, calculateAgentRequestCost, matchesPlanModel, QUALITY } from '../../lib/pricing';
|
||||
import { formatMillionTokens, getProviderColor, calculateAgentRequestCost, matchesPlanModel, resolveTierModelBudget, QUALITY } from '../../lib/pricing';
|
||||
import { DEFAULT_CACHE_RATE, STANDARD_AGENT_REQUEST_TOKENS } from '../../lib/estimate-constants';
|
||||
import { ArrowRight, Sparkles, AlertCircle, Layers, CheckCircle2, HelpCircle, Info, Database, TrendingUp, ExternalLink } from 'lucide-react';
|
||||
|
||||
@@ -117,7 +117,6 @@ export function TokenTranslator({ plans, models }: TokenTranslatorProps) {
|
||||
// Compute Arbitrage summary with like-for-like quality matching
|
||||
const arbitrageInsight = useMemo(() => {
|
||||
if (!currentTier?.estimatedTokenBudget || displayModels.length === 0) return null;
|
||||
const planTokens = currentTier.estimatedTokenBudget.estimatedMillionTokens;
|
||||
|
||||
// Quality-matched selection:
|
||||
// 1. Check if basisModel is documented in estimateMeta
|
||||
@@ -140,6 +139,10 @@ export function TokenTranslator({ plans, models }: TokenTranslatorProps) {
|
||||
)[0] || displayModels[0];
|
||||
}
|
||||
|
||||
// Resolve tier token capacity model-specifically for the comparison model
|
||||
const resolved = resolveTierModelBudget(currentTier, comparisonModel.name, comparisonModel.id);
|
||||
const planTokens = resolved.tokens > 0 ? resolved.tokens : currentTier.estimatedTokenBudget.estimatedMillionTokens;
|
||||
|
||||
const apiTokens = comparisonModel.affordableTokens;
|
||||
|
||||
if (apiTokens >= planTokens * 1.25) {
|
||||
@@ -565,7 +568,7 @@ export function TokenTranslator({ plans, models }: TokenTranslatorProps) {
|
||||
{formatMillionTokens(m.affordableTokens)}
|
||||
</div>
|
||||
<div className="text-[11px] text-text-muted flex justify-between mt-0.5 font-medium">
|
||||
<span>~{Math.round(m.approximateRequests).toLocaleString()} reqs</span>
|
||||
<span>~{Math.round(m.approximateRequests).toLocaleString()} turns (21k)</span>
|
||||
<span>tokens/mo</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -525,5 +525,54 @@ describe('Adversarial Edge Cases & Guardrails', () => {
|
||||
expect(calculateBudgetResults([model()], NaN)).toEqual([]);
|
||||
expect(calculateBudgetResults([model()], -10)).toEqual([]);
|
||||
});
|
||||
|
||||
it('buildStackCandidates assigns model-specific token budget when perModelTokenBudgets exists', () => {
|
||||
const testTier = tier({
|
||||
name: 'Pro',
|
||||
monthlyPrice: 20,
|
||||
models: ['Claude Sonnet 5', 'Claude Opus 5'],
|
||||
estimatedTokenBudget: { estimatedMillionTokens: 10, assumptions: 'flat scalar' },
|
||||
perModelTokenBudgets: {
|
||||
'claude sonnet 5': { estimatedMillionTokens: 25, basis: 'list-price-credit' },
|
||||
'claude opus 5': { estimatedMillionTokens: 5, basis: 'list-price-credit' },
|
||||
},
|
||||
});
|
||||
const testPlan = plan({ id: 'test-plan', name: 'Test Plan', tiers: [testTier] });
|
||||
const sonnetModel = model({
|
||||
id: 'anthropic/claude-sonnet-5',
|
||||
name: 'Claude Sonnet 5',
|
||||
benchmarks: { codingIndex: 85, intelligenceIndex: null, agenticIndex: null, valueScore: null },
|
||||
});
|
||||
|
||||
const candidates = buildStackCandidates([sonnetModel], [testPlan], 'all');
|
||||
expect(candidates.length).toBe(1);
|
||||
expect(candidates[0].modelName).toBe('Claude Sonnet 5');
|
||||
// Tokens must be the resolved 25M, not the flat 10M
|
||||
expect(candidates[0].tokens).toBe(25);
|
||||
});
|
||||
|
||||
it('calculatePoolDrain uses perModelTokenBudgets for multi-model drainage', () => {
|
||||
const testTier = tier({
|
||||
name: 'Pro',
|
||||
monthlyPrice: 20,
|
||||
models: ['Claude Sonnet', 'Gemini Flash'],
|
||||
estimatedTokenBudget: { estimatedMillionTokens: 10, assumptions: 'flat scalar' },
|
||||
perModelTokenBudgets: {
|
||||
'claude sonnet': { estimatedMillionTokens: 10, basis: 'list-price-credit' },
|
||||
'gemini flash': { estimatedMillionTokens: 50, basis: 'list-price-credit' },
|
||||
},
|
||||
});
|
||||
const testPlan = plan({ id: 'test-plan', name: 'Test Plan', tiers: [testTier] });
|
||||
const workload = [
|
||||
{ modelId: 'gemini-flash', modelName: 'Gemini Flash', share: 0.5, tokensMillion: 25, costPpu: 5 }, // 25M of 50M = 50%
|
||||
{ modelId: 'claude-sonnet', modelName: 'Claude Sonnet', share: 0.5, tokensMillion: 5, costPpu: 10 }, // 5M of 10M = 50%
|
||||
];
|
||||
|
||||
const result = calculatePoolDrain(testPlan, testTier, workload);
|
||||
expect(result.coverageType).toBe('full');
|
||||
expect(result.isCapped).toBe(false);
|
||||
expect(result.overageCost).toBe(0);
|
||||
expect(result.poolUtilizedPercent).toBe(100);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
+33
-5
@@ -621,7 +621,7 @@ export function buildStackCandidates(
|
||||
const candidates: StackCandidate[] = [];
|
||||
|
||||
for (const plan of plans) {
|
||||
let best: { tier: PlanTier; modelName: string | null; modelId: string | null; codingIndex: number | null; score: number } | null = null;
|
||||
let best: { tier: PlanTier; modelName: string | null; modelId: string | null; codingIndex: number | null; tokens: number; score: number } | null = null;
|
||||
|
||||
for (const tier of plan.tiers || []) {
|
||||
if (tier.monthlyPrice === null || tier.monthlyPrice <= 0) continue;
|
||||
@@ -632,17 +632,23 @@ export function buildStackCandidates(
|
||||
if (lab !== 'all' && !planLabs.includes(lab)) continue;
|
||||
|
||||
let match: NormalizedModel | null = null;
|
||||
let matchedPlanModelName: string | null = null;
|
||||
for (const planModelName of tier.models || []) {
|
||||
if (EXCLUDED_STACK_PATTERNS.some(pat => planModelName.toLowerCase().includes(pat))) continue;
|
||||
const found = cleanModels.find(m => matchesPlanModel(planModelName, m));
|
||||
if (found && (!match || (found.benchmarks?.codingIndex || 0) > (match.benchmarks?.codingIndex || 0))) {
|
||||
match = found;
|
||||
matchedPlanModelName = planModelName;
|
||||
}
|
||||
}
|
||||
|
||||
// Resolve model-specific token budget when available; fall back to tier baseline
|
||||
const resolved = resolveTierModelBudget(tier, match ? match.name : null, match ? match.id : null, matchedPlanModelName);
|
||||
const effectiveTokens = resolved.tokens > 0 ? resolved.tokens : baseTokens;
|
||||
|
||||
// Rank tiers by tokens-per-dollar; a small 10% preference for tiers with
|
||||
// a benchmark-matched model breaks near-ties without overriding value.
|
||||
const tokensPerDollar = baseTokens / (tier.monthlyPrice as number);
|
||||
const tokensPerDollar = effectiveTokens / (tier.monthlyPrice as number);
|
||||
const score = tokensPerDollar * (match ? 1.0 : 0.9);
|
||||
|
||||
if (!best || score > best.score) {
|
||||
@@ -651,6 +657,7 @@ export function buildStackCandidates(
|
||||
modelName: match ? match.name : (tier.models?.[0] || plan.name),
|
||||
modelId: match ? match.id : null,
|
||||
codingIndex: match?.benchmarks?.codingIndex ?? null,
|
||||
tokens: effectiveTokens,
|
||||
score,
|
||||
};
|
||||
}
|
||||
@@ -658,7 +665,7 @@ export function buildStackCandidates(
|
||||
|
||||
if (best) {
|
||||
const price = best.tier.monthlyPrice as number;
|
||||
const tokens = best.tier.estimatedTokenBudget!.estimatedMillionTokens;
|
||||
const tokens = best.tokens;
|
||||
const stackingPolicy = plan.stackingPolicy ?? 'unknown';
|
||||
candidates.push({
|
||||
planId: plan.id,
|
||||
@@ -670,7 +677,7 @@ export function buildStackCandidates(
|
||||
modelId: best.modelId,
|
||||
price,
|
||||
tokens,
|
||||
requests: tierRawRequests(best.tier),
|
||||
requests: tierRawRequests(best.tier, tokens),
|
||||
codingIndex: best.codingIndex,
|
||||
lab: detectPlanLabs(plan, best.tier)[0] || 'all',
|
||||
stackingPolicy,
|
||||
@@ -905,6 +912,13 @@ export function calculatePoolDrain(
|
||||
);
|
||||
if (matchKey) return true;
|
||||
}
|
||||
if (tier.perModelTokenBudgets) {
|
||||
const matchKey = Object.keys(tier.perModelTokenBudgets).find(k =>
|
||||
item.modelId.toLowerCase().includes(k.toLowerCase()) ||
|
||||
item.modelName.toLowerCase().includes(k.toLowerCase())
|
||||
);
|
||||
if (matchKey) return true;
|
||||
}
|
||||
if (tier.models && tier.models.length > 0) {
|
||||
return tier.models.some(planModelName =>
|
||||
matchesPlanModel(planModelName, { id: item.modelId, name: item.modelName } as NormalizedModel)
|
||||
@@ -947,8 +961,22 @@ export function calculatePoolDrain(
|
||||
}
|
||||
|
||||
if (allowance <= 0) {
|
||||
const resolved = resolveTierModelBudget(tier, item.modelName, item.modelId);
|
||||
const modelTokens =
|
||||
estimateBasis === 'optimistic'
|
||||
? (resolved.optimistic || resolved.tokens)
|
||||
: estimateBasis === 'midpoint'
|
||||
? (resolved.midpoint || resolved.tokens)
|
||||
: resolved.tokens;
|
||||
|
||||
const effectiveTokens = modelTokens > 0 ? modelTokens : budgetTokens;
|
||||
const impliedRatePerMillion = item.tokensMillion > 0 ? item.costPpu / item.tokensMillion : 1.0;
|
||||
allowance = Math.max(monthlyPrice, budgetTokens * impliedRatePerMillion);
|
||||
|
||||
if (effectiveTokens > 0) {
|
||||
allowance = effectiveTokens * impliedRatePerMillion;
|
||||
} else {
|
||||
allowance = monthlyPrice;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -91,8 +91,8 @@ export const PLAN_ABSORPTION_POLICIES: PlanAbsorptionPolicy[] = [
|
||||
monthlyPrice: 20,
|
||||
absorptionType: 'full-absorption',
|
||||
absorptionScore: 95,
|
||||
policySummary: 'Counts 1 fast request regardless of reasoning tokens. Absorbs up to $0.35/turn of compute.',
|
||||
evidenceQuote: 'Requests are deducted on a per-interaction basis. Reasoning tokens generated by Claude or o3 are absorbed within the fast request allowance.',
|
||||
policySummary: 'Full absorption for native Cursor Models pool (Composer/Grok); third-party models drain against Other Models pool at API rates.',
|
||||
evidenceQuote: 'Cursor Models pool absorbs reasoning tokens natively. Third-party frontier models drain against the Other Models pool at standard token rates.',
|
||||
url: 'https://cursor.com/docs/account/pricing',
|
||||
},
|
||||
{
|
||||
@@ -102,8 +102,8 @@ export const PLAN_ABSORPTION_POLICIES: PlanAbsorptionPolicy[] = [
|
||||
monthlyPrice: 400,
|
||||
absorptionType: 'full-absorption',
|
||||
absorptionScore: 98,
|
||||
policySummary: '20x fast pool with full absorption of extended thinking tokens.',
|
||||
evidenceQuote: '20x Pro pool with priority queue allocation across frontier reasoning models.',
|
||||
policySummary: '20x Pro pool with native absorption on Cursor Models and expanded third-party API allowance.',
|
||||
evidenceQuote: 'Maximum pool capacity across Cursor proprietary models and expanded third-party frontier allowance.',
|
||||
url: 'https://cursor.com/docs/account/pricing',
|
||||
},
|
||||
{
|
||||
|
||||
@@ -37,7 +37,7 @@ export const THROTTLE_PROFILES: ThrottleProfile[] = [
|
||||
monthlyFastRequests: 500,
|
||||
exhaustionBehavior: 'slow-queue',
|
||||
slowQueueDelaySec: 30, // Slow pool typically introduces 20-60s queue wait during peak hours
|
||||
evidenceQuote: '500 fast requests per month. Once exhausted, falls back to the slow queue with variable queue latency.',
|
||||
evidenceQuote: 'Cursor Models pool + Other Models pool (third-party at API rates). Priority queue allocation with slow queue fallback on proprietary models.',
|
||||
url: 'https://cursor.com/docs/account/pricing',
|
||||
},
|
||||
{
|
||||
@@ -52,7 +52,7 @@ export const THROTTLE_PROFILES: ThrottleProfile[] = [
|
||||
monthlyFastRequests: 10000, // 20x Pro pool
|
||||
exhaustionBehavior: 'slow-queue',
|
||||
slowQueueDelaySec: 10,
|
||||
evidenceQuote: '20x Pro pool with priority queue allocation and higher concurrent composer tasks.',
|
||||
evidenceQuote: '20x Pro pool with priority queue allocation across Cursor Models and expanded third-party API allowance.',
|
||||
url: 'https://cursor.com/docs/account/pricing',
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user