ctxman 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/.ctxman/llm-profiles.json +1067 -39
  2. package/.ctxman/profiles/backend-team.json +13 -0
  3. package/.ctxman/profiles/default.json +12 -0
  4. package/.ctxman/profiles/devops-team.json +21 -0
  5. package/.ctxman/profiles/frontend-team.json +20 -0
  6. package/.ctxman/templates/bug-fix.json +17 -0
  7. package/.ctxman/templates/code-review.json +9 -0
  8. package/.ctxman/templates/documentation.json +9 -0
  9. package/.ctxman/templates/feature.json +9 -0
  10. package/.ctxman/templates/full-context.json +9 -0
  11. package/.ctxman/templates/refactoring.json +18 -0
  12. package/.ctxman/templates/testing.json +9 -0
  13. package/.ctxman/wizard-profiles/security-audit/profile.json +7 -1
  14. package/LICENSE +21 -0
  15. package/README.md +380 -136
  16. package/bin/cli.js +1880 -529
  17. package/bin/cm-ask.js +18 -13
  18. package/bin/cm-audit.js +124 -0
  19. package/bin/cm-count.js +151 -0
  20. package/bin/cm-gitingest.js +128 -115
  21. package/bin/cm-map.js +242 -0
  22. package/bin/cm-mcp.js +293 -0
  23. package/bin/cm-pack.js +405 -0
  24. package/bin/cm-policy.js +170 -0
  25. package/bin/cm-pr.js +248 -0
  26. package/bin/cm-search.js +178 -0
  27. package/bin/cm-update.js +128 -128
  28. package/bin/cm-why.js +197 -0
  29. package/bin/mcp-server.js +8 -24
  30. package/ctxman.js +237 -183
  31. package/examples/README.md +19 -4
  32. package/examples/github-actions/ctxman-check.yml +49 -0
  33. package/examples/wizard-profiles/security-audit/profile.json +7 -1
  34. package/index.d.ts +1422 -0
  35. package/index.js +55 -31
  36. package/lib/agents/pr-failure-agent.js +48 -45
  37. package/lib/analyzers/ai-suggester.js +451 -0
  38. package/lib/analyzers/dependency-scanner.js +505 -0
  39. package/lib/analyzers/duplicate-detector.js +264 -0
  40. package/lib/analyzers/go-method-analyzer.js +151 -110
  41. package/lib/analyzers/import-tracker.js +431 -0
  42. package/lib/analyzers/method-analyzer.js +1055 -434
  43. package/lib/analyzers/performance-dashboard.js +683 -0
  44. package/lib/analyzers/token-calculator.js +895 -504
  45. package/lib/analyzers/unused-exports-detector.js +336 -0
  46. package/lib/api/mcp/install.js +424 -0
  47. package/lib/api/mcp/prompts.js +281 -281
  48. package/lib/api/mcp/resources.js +300 -241
  49. package/lib/api/mcp/sandbox.js +89 -0
  50. package/lib/api/mcp/server.js +675 -312
  51. package/lib/api/mcp/start.js +125 -0
  52. package/lib/api/mcp/transports/HttpSseTransport.js +60 -52
  53. package/lib/api/rest/server.js +105 -28
  54. package/lib/cache/CacheManager.js +9 -17
  55. package/lib/core/Analyzer.js +16 -10
  56. package/lib/core/ContextBuilder.js +19 -28
  57. package/lib/core/Reporter.js +15 -14
  58. package/lib/core/Scanner.js +81 -12
  59. package/lib/count/index.js +100 -0
  60. package/lib/formatters/format-registry.js +394 -372
  61. package/lib/formatters/gitingest-formatter.js +656 -621
  62. package/lib/formatters/toon-formatter-v1.3.js +637 -632
  63. package/lib/formatters/toon-formatter.js +239 -240
  64. package/lib/integrations/git/BlameTracker.js +4 -4
  65. package/lib/integrations/git/DiffAnalyzer.js +38 -31
  66. package/lib/integrations/git/GitClient.js +71 -53
  67. package/lib/lsp/server.js +311 -0
  68. package/lib/map/graph.js +299 -0
  69. package/lib/map/imports.js +233 -0
  70. package/lib/map/index.js +33 -0
  71. package/lib/map/rank.js +253 -0
  72. package/lib/map/render.js +346 -0
  73. package/lib/map/resolver.js +574 -0
  74. package/lib/pack/budget.js +111 -0
  75. package/lib/pack/code-lexer.js +360 -0
  76. package/lib/pack/compress.js +414 -0
  77. package/lib/pack/index.js +354 -0
  78. package/lib/pack/renderers/common.js +134 -0
  79. package/lib/pack/renderers/index.js +24 -0
  80. package/lib/pack/renderers/json.js +47 -0
  81. package/lib/pack/renderers/markdown.js +54 -0
  82. package/lib/pack/renderers/plain.js +38 -0
  83. package/lib/pack/renderers/xml.js +85 -0
  84. package/lib/pack/select.js +177 -0
  85. package/lib/pack/split.js +182 -0
  86. package/lib/pack/tree.js +35 -0
  87. package/lib/parsers/gitignore-parser.js +113 -107
  88. package/lib/parsers/method-filter-parser.js +50 -33
  89. package/lib/plugins/ExporterPlugin.js +3 -3
  90. package/lib/plugins/LanguagePlugin.js +3 -3
  91. package/lib/plugins/PluginManager.js +7 -13
  92. package/lib/policy/audit.js +294 -0
  93. package/lib/policy/enforce.js +125 -0
  94. package/lib/policy/ignore-files.js +169 -0
  95. package/lib/policy/index.js +52 -0
  96. package/lib/policy/policy.js +489 -0
  97. package/lib/pr/diff-parser.js +267 -0
  98. package/lib/pr/method-mapper.js +148 -0
  99. package/lib/pr/pr-context.js +829 -0
  100. package/lib/pr/pr-git.js +149 -0
  101. package/lib/pr/pr-renderer.js +644 -0
  102. package/lib/pr/related-tests.js +296 -0
  103. package/lib/rag/DataSourcePlugin.js +5 -5
  104. package/lib/rag/EmbeddingProvider.js +19 -8
  105. package/lib/rag/Indexer.js +14 -5
  106. package/lib/rag/VectorStoreFactory.js +3 -3
  107. package/lib/rag/sources/FileDataSource.js +6 -6
  108. package/lib/rag/stores/BaseVectorStore.js +5 -5
  109. package/lib/rag/stores/ChromaDBStore.js +10 -10
  110. package/lib/rag/stores/LanceDBStore.js +29 -19
  111. package/lib/rag/stores/PineconeStore.js +11 -9
  112. package/lib/search/bm25.js +433 -0
  113. package/lib/search/code-units.js +201 -0
  114. package/lib/search/symbols.js +189 -0
  115. package/lib/ui/dashboard.js +120 -89
  116. package/lib/ui/index.js +1 -6
  117. package/lib/ui/init-wizard-ui.js +550 -0
  118. package/lib/ui/progress-bar.js +94 -88
  119. package/lib/ui/select-input.js +40 -32
  120. package/lib/ui/template-selector.js +99 -0
  121. package/lib/ui/wizard.js +374 -329
  122. package/lib/utils/claude-token-counter.js +151 -0
  123. package/lib/utils/cli-output.js +17 -0
  124. package/lib/utils/clipboard-utils.js +49 -50
  125. package/lib/utils/config-utils.js +81 -66
  126. package/lib/utils/context-versioning.js +532 -0
  127. package/lib/utils/error-handler.js +112 -112
  128. package/lib/utils/file-utils.js +153 -69
  129. package/lib/utils/format-converter.js +356 -283
  130. package/lib/utils/git-utils.js +366 -294
  131. package/lib/utils/llm-cost-estimator.js +281 -0
  132. package/lib/utils/llm-detector.js +242 -78
  133. package/lib/utils/logger.js +243 -237
  134. package/lib/utils/messages.js +355 -0
  135. package/lib/utils/multi-repo-manager.js +364 -0
  136. package/lib/utils/profile-manager.js +380 -0
  137. package/lib/utils/safe-read.js +61 -0
  138. package/lib/utils/secret-redactor.js +61 -0
  139. package/lib/utils/snapshot-manager.js +679 -0
  140. package/lib/utils/template-manager.js +378 -0
  141. package/lib/utils/token-utils.js +201 -170
  142. package/lib/utils/tokenizer-adapter.js +421 -377
  143. package/lib/utils/updater.js +539 -506
  144. package/lib/watch/FileWatcher.js +12 -8
  145. package/lib/watch/IncrementalAnalyzer.js +7 -7
  146. package/lib/why/coupling.js +81 -0
  147. package/lib/why/errors.js +23 -0
  148. package/lib/why/git.js +169 -0
  149. package/lib/why/history.js +108 -0
  150. package/lib/why/index.js +720 -0
  151. package/lib/why/ownership.js +79 -0
  152. package/lib/why/paths.js +207 -0
  153. package/lib/why/references.js +259 -0
  154. package/lib/why/render.js +722 -0
  155. package/lib/why/search.js +358 -0
  156. package/lib/why/target.js +389 -0
  157. package/lib/wizards/config-generator.js +255 -0
  158. package/lib/wizards/project-detector.js +571 -0
  159. package/package.json +44 -10
  160. package/.ctxman/logs/ctxman-2026-07-02.log +0 -156
  161. package/.ctxman/self-knowledge/documents.lance/_transactions/0-b3dd1558-f95b-44b9-a154-18e8c330ae7a.txn +0 -0
  162. package/.ctxman/self-knowledge/documents.lance/_transactions/1-44bff6d4-e552-4010-a769-e09ad822698d.txn +0 -0
  163. package/.ctxman/self-knowledge/documents.lance/_transactions/10-37260794-5947-4ecb-b4c8-d732f58f40f1.txn +0 -0
  164. package/.ctxman/self-knowledge/documents.lance/_transactions/11-0d52a883-5518-463c-9b6d-986c3af89dfd.txn +0 -0
  165. package/.ctxman/self-knowledge/documents.lance/_transactions/12-ae354646-52f2-49c9-90fb-2e6ed8932663.txn +0 -0
  166. package/.ctxman/self-knowledge/documents.lance/_transactions/13-5d7d5e57-27da-498b-b734-091b9d38da13.txn +0 -0
  167. package/.ctxman/self-knowledge/documents.lance/_transactions/14-558ce928-810b-4252-a364-fdd1ee6f8a25.txn +0 -0
  168. package/.ctxman/self-knowledge/documents.lance/_transactions/15-27e3a58f-8b64-43b8-a9f4-e3369446968b.txn +0 -0
  169. package/.ctxman/self-knowledge/documents.lance/_transactions/16-a110c390-e5c8-4464-b976-bc7f5195fa15.txn +0 -0
  170. package/.ctxman/self-knowledge/documents.lance/_transactions/17-97513225-53de-4216-b61a-6337bd0cc4ad.txn +0 -0
  171. package/.ctxman/self-knowledge/documents.lance/_transactions/18-5ba450f0-c527-459c-bf4f-6d79b5e4285f.txn +0 -0
  172. package/.ctxman/self-knowledge/documents.lance/_transactions/19-600d3a63-5225-49e9-b8b7-30e037b564ab.txn +0 -0
  173. package/.ctxman/self-knowledge/documents.lance/_transactions/2-48a61b4e-92cf-4342-8376-914c1b99a9f9.txn +0 -0
  174. package/.ctxman/self-knowledge/documents.lance/_transactions/20-121dd912-5410-410e-84ff-82c7a23604a0.txn +0 -0
  175. package/.ctxman/self-knowledge/documents.lance/_transactions/3-bc6844ab-7ea3-4bb3-9ee1-538ce5664a9c.txn +0 -0
  176. package/.ctxman/self-knowledge/documents.lance/_transactions/4-d5e1754f-dbb5-454e-a9be-2a7da8d7bcf9.txn +0 -0
  177. package/.ctxman/self-knowledge/documents.lance/_transactions/5-4fae93df-0568-4b6f-8acf-8bef4bba6047.txn +0 -0
  178. package/.ctxman/self-knowledge/documents.lance/_transactions/6-4b1b8b87-068e-49a3-ba2b-d8dae628b252.txn +0 -0
  179. package/.ctxman/self-knowledge/documents.lance/_transactions/7-63d040fb-d2fa-4c0f-bed0-53411918a7b0.txn +0 -0
  180. package/.ctxman/self-knowledge/documents.lance/_transactions/8-c5628cf6-264c-420f-aab8-bc96a9083591.txn +0 -0
  181. package/.ctxman/self-knowledge/documents.lance/_transactions/9-c94570aa-5e53-4fcb-971f-cecc1d1d5492.txn +0 -0
  182. package/.ctxman/self-knowledge/documents.lance/_versions/1.manifest +0 -0
  183. package/.ctxman/self-knowledge/documents.lance/_versions/10.manifest +0 -0
  184. package/.ctxman/self-knowledge/documents.lance/_versions/11.manifest +0 -0
  185. package/.ctxman/self-knowledge/documents.lance/_versions/12.manifest +0 -0
  186. package/.ctxman/self-knowledge/documents.lance/_versions/13.manifest +0 -0
  187. package/.ctxman/self-knowledge/documents.lance/_versions/14.manifest +0 -0
  188. package/.ctxman/self-knowledge/documents.lance/_versions/15.manifest +0 -0
  189. package/.ctxman/self-knowledge/documents.lance/_versions/16.manifest +0 -0
  190. package/.ctxman/self-knowledge/documents.lance/_versions/17.manifest +0 -0
  191. package/.ctxman/self-knowledge/documents.lance/_versions/18.manifest +0 -0
  192. package/.ctxman/self-knowledge/documents.lance/_versions/19.manifest +0 -0
  193. package/.ctxman/self-knowledge/documents.lance/_versions/2.manifest +0 -0
  194. package/.ctxman/self-knowledge/documents.lance/_versions/20.manifest +0 -0
  195. package/.ctxman/self-knowledge/documents.lance/_versions/21.manifest +0 -0
  196. package/.ctxman/self-knowledge/documents.lance/_versions/3.manifest +0 -0
  197. package/.ctxman/self-knowledge/documents.lance/_versions/4.manifest +0 -0
  198. package/.ctxman/self-knowledge/documents.lance/_versions/5.manifest +0 -0
  199. package/.ctxman/self-knowledge/documents.lance/_versions/6.manifest +0 -0
  200. package/.ctxman/self-knowledge/documents.lance/_versions/7.manifest +0 -0
  201. package/.ctxman/self-knowledge/documents.lance/_versions/8.manifest +0 -0
  202. package/.ctxman/self-knowledge/documents.lance/_versions/9.manifest +0 -0
  203. package/.ctxman/self-knowledge/documents.lance/data/000010010011011101000010de8621405d9d5cb06540dbf02c.lance +0 -0
  204. package/.ctxman/self-knowledge/documents.lance/data/0000101001011100011000003fb62a4aa8978974075c144f1c.lance +0 -0
  205. package/.ctxman/self-knowledge/documents.lance/data/000011010000100111001011c6cc824d628f3bb1f4e04cd5d0.lance +0 -0
  206. package/.ctxman/self-knowledge/documents.lance/data/001000001000011001011100d8f74349ada090b332cd1df669.lance +0 -0
  207. package/.ctxman/self-knowledge/documents.lance/data/01000001111010001000010045ab44467bb1e7e4d8ae06bd58.lance +0 -0
  208. package/.ctxman/self-knowledge/documents.lance/data/01000101101110111110011131ef904241a89e1ffb6ddaf8e3.lance +0 -0
  209. package/.ctxman/self-knowledge/documents.lance/data/010010110000010000011010fbfcc145c6a8a827b28057a07e.lance +0 -0
  210. package/.ctxman/self-knowledge/documents.lance/data/1000011000101010001110003fb4f045c3835982efa1405324.lance +0 -0
  211. package/.ctxman/self-knowledge/documents.lance/data/100111011101110111101011f4396b410fa06af3b028d204e6.lance +0 -0
  212. package/.ctxman/self-knowledge/documents.lance/data/100111100111101000001100596b174e00995d6cc2969cc8dc.lance +0 -0
  213. package/.ctxman/self-knowledge/documents.lance/data/1010001100011000110010102ea16b484d887c7c9725feffd6.lance +0 -0
  214. package/.ctxman/self-knowledge/documents.lance/data/101101100010101111110111c5230944d9b3af7301b6392dda.lance +0 -0
  215. package/.ctxman/self-knowledge/documents.lance/data/1011011100100111111110105892bf41b5a530fedd7cf516f1.lance +0 -0
  216. package/.ctxman/self-knowledge/documents.lance/data/10111110000010001011110164e8774742bade87b483c10f36.lance +0 -0
  217. package/.ctxman/self-knowledge/documents.lance/data/1100000100010110001110103ffaca40a2a42c85067ebaf9ae.lance +0 -0
  218. package/.ctxman/self-knowledge/documents.lance/data/110000010001110110101110664bde4c76a78dfc14b05e83b8.lance +0 -0
  219. package/.ctxman/self-knowledge/documents.lance/data/11001100111000010100110050645c4281b1f35b2022234f7f.lance +0 -0
  220. package/.ctxman/self-knowledge/documents.lance/data/1101111011001100110111017214924a368f5719eab2246619.lance +0 -0
  221. package/.ctxman/self-knowledge/documents.lance/data/1110000111001010001000002150c24dcab653d39d07032e63.lance +0 -0
  222. package/.ctxman/self-knowledge/documents.lance/data/1110100000000100000011014d20534967a18b5c87721659ff.lance +0 -0
  223. package/.ctxman/self-knowledge/documents.lance/data/11110101111010000101011135a0114ef2b35dc6f1297a3381.lance +0 -0
@@ -1,47 +1,552 @@
1
1
  {
2
- "$schema": "./llm-profiles.schema.json",
3
- "version": "3.0.0",
4
- "lastUpdated": "2025-11-05",
2
+ "version": "4.0.0",
3
+ "lastUpdated": "2026-10-09",
4
+ "description": "Context windows, output limits and list prices (USD per 1M tokens, standard tier) of current models. Check prices with the provider before budgeting.",
5
+ "sources": {
6
+ "Anthropic": [
7
+ "https://platform.claude.com/docs/en/about-claude/models/overview",
8
+ "https://platform.claude.com/docs/en/about-claude/pricing"
9
+ ],
10
+ "OpenAI": [
11
+ "https://developers.openai.com/api/docs/models",
12
+ "https://developers.openai.com/api/docs/pricing",
13
+ "https://developers.openai.com/api/docs/deprecations"
14
+ ],
15
+ "Google": [
16
+ "https://ai.google.dev/gemini-api/docs/models",
17
+ "https://ai.google.dev/gemini-api/docs/pricing",
18
+ "https://ai.google.dev/gemini-api/docs/changelog"
19
+ ],
20
+ "DeepSeek": [
21
+ "https://api-docs.deepseek.com/quick_start/pricing/",
22
+ "https://api-docs.deepseek.com/updates/"
23
+ ],
24
+ "Mistral": ["https://docs.mistral.ai/resources/changelogs", "https://mistral.ai/pricing/api/"],
25
+ "xAI": ["https://docs.x.ai/developers/models", "https://docs.x.ai/developers/pricing"],
26
+ "Qwen": ["https://www.alibabacloud.com/help/en/model-studio/model-pricing"],
27
+ "Meta": ["https://www.llama.com/docs/model-cards-and-prompt-formats/llama4/"]
28
+ },
5
29
  "config": {
6
30
  "utilizationPercentage": 0.6,
7
31
  "description": "Use only 60% of context window (leave 40% for system prompts, responses, overhead)"
8
32
  },
33
+ "fields": {
34
+ "tier": "frontier | balanced | fast",
35
+ "status": "active | preview | legacy (still served, superseded) | deprecated (retirement announced) | retired (no longer served; kept so old configs resolve)",
36
+ "pricing": "USD per 1M tokens; tiers[].above = prompt tokens above which the whole request uses that rate",
37
+ "tokenizer": "encoding = tiktoken encoding used to count; exact = whether that matches the model; Claude counts are exact only through the Anthropic API (ctxman count --api)"
38
+ },
39
+ "aliases": {
40
+ "claude-sonnet-4.5": "claude-sonnet-4-5",
41
+ "claude-opus-4": "claude-opus-4-0",
42
+ "deepseek-coder": "deepseek-chat",
43
+ "claude-fable": "claude-fable-5-1",
44
+ "claude-opus": "claude-opus-5-5",
45
+ "claude-sonnet": "claude-sonnet-5-5",
46
+ "claude-haiku": "claude-haiku-5-5",
47
+ "opus": "claude-opus-5-5",
48
+ "sonnet": "claude-sonnet-5-5",
49
+ "haiku": "claude-haiku-5-5",
50
+ "gemini-pro": "gemini-3.1-pro-preview",
51
+ "gemini-flash": "gemini-3.8-flash",
52
+ "mistral-medium-latest": "mistral-medium-3-5",
53
+ "mistral-small-latest": "mistral-small-2603",
54
+ "codestral-latest": "codestral-2508",
55
+ "mistral-large-latest": "mistral-large-4",
56
+ "meta-llama/llama-4-maverick-17b-128e-instruct": "llama-4-maverick",
57
+ "llama-4-maverick-17b-128e-instruct": "llama-4-maverick",
58
+ "meta-llama/llama-4-scout-17b-16e-instruct": "llama-4-scout",
59
+ "llama-4-scout-17b-16e-instruct": "llama-4-scout"
60
+ },
9
61
  "profiles": {
10
- "claude-sonnet-4.5": {
62
+ "claude-fable-5-1": {
63
+ "name": "Claude Fable 5.1",
64
+ "vendor": "Anthropic",
65
+ "contextWindow": 1000000,
66
+ "outputWindow": 128000,
67
+ "utilizationPercentage": 0.6,
68
+ "maxRecommendedInput": 600000,
69
+ "preferredFormat": "toon",
70
+ "chunkStrategy": "none",
71
+ "supportedLanguages": "all",
72
+ "strengths": ["reasoning", "long-horizon-agents", "long-context"],
73
+ "tier": "frontier",
74
+ "status": "active",
75
+ "pricing": {
76
+ "input": 10,
77
+ "output": 50
78
+ },
79
+ "tokenizer": {
80
+ "family": "claude",
81
+ "exact": false,
82
+ "exactVia": "anthropic-api"
83
+ }
84
+ },
85
+ "claude-opus-5-5": {
86
+ "name": "Claude Opus 5.5",
87
+ "vendor": "Anthropic",
88
+ "contextWindow": 1000000,
89
+ "outputWindow": 128000,
90
+ "utilizationPercentage": 0.6,
91
+ "maxRecommendedInput": 600000,
92
+ "preferredFormat": "toon",
93
+ "chunkStrategy": "none",
94
+ "supportedLanguages": "all",
95
+ "strengths": ["agentic-coding", "reasoning", "long-context"],
96
+ "tier": "frontier",
97
+ "status": "active",
98
+ "pricing": {
99
+ "input": 4,
100
+ "output": 20
101
+ },
102
+ "tokenizer": {
103
+ "family": "claude",
104
+ "exact": false,
105
+ "exactVia": "anthropic-api"
106
+ },
107
+ "featured": true
108
+ },
109
+ "claude-sonnet-5-5": {
110
+ "name": "Claude Sonnet 5.5",
111
+ "vendor": "Anthropic",
112
+ "contextWindow": 1000000,
113
+ "outputWindow": 128000,
114
+ "utilizationPercentage": 0.6,
115
+ "maxRecommendedInput": 600000,
116
+ "preferredFormat": "toon",
117
+ "chunkStrategy": "none",
118
+ "supportedLanguages": "all",
119
+ "strengths": ["code-generation", "agentic-coding", "long-context"],
120
+ "tier": "balanced",
121
+ "status": "active",
122
+ "pricing": {
123
+ "input": 2,
124
+ "output": 10
125
+ },
126
+ "tokenizer": {
127
+ "family": "claude",
128
+ "exact": false,
129
+ "exactVia": "anthropic-api"
130
+ },
131
+ "featured": true
132
+ },
133
+ "claude-haiku-5-5": {
134
+ "name": "Claude Haiku 5.5",
135
+ "vendor": "Anthropic",
136
+ "contextWindow": 1000000,
137
+ "outputWindow": 128000,
138
+ "utilizationPercentage": 0.6,
139
+ "maxRecommendedInput": 600000,
140
+ "preferredFormat": "toon",
141
+ "chunkStrategy": "none",
142
+ "supportedLanguages": "all",
143
+ "strengths": ["speed", "cost-effective", "sub-agents"],
144
+ "tier": "fast",
145
+ "status": "active",
146
+ "pricing": {
147
+ "input": 0.1,
148
+ "output": 0.5,
149
+ "tiers": [
150
+ {
151
+ "above": 100000,
152
+ "input": 0.5,
153
+ "output": 2.5
154
+ }
155
+ ]
156
+ },
157
+ "tokenizer": {
158
+ "family": "claude",
159
+ "exact": false,
160
+ "exactVia": "anthropic-api"
161
+ },
162
+ "featured": true
163
+ },
164
+ "claude-opus-5": {
165
+ "name": "Claude Opus 5",
166
+ "vendor": "Anthropic",
167
+ "contextWindow": 1000000,
168
+ "outputWindow": 128000,
169
+ "utilizationPercentage": 0.6,
170
+ "maxRecommendedInput": 600000,
171
+ "preferredFormat": "toon",
172
+ "chunkStrategy": "none",
173
+ "supportedLanguages": "all",
174
+ "strengths": ["agentic-coding", "reasoning"],
175
+ "tier": "frontier",
176
+ "status": "active",
177
+ "pricing": {
178
+ "input": 5,
179
+ "output": 25
180
+ },
181
+ "tokenizer": {
182
+ "family": "claude",
183
+ "exact": false,
184
+ "exactVia": "anthropic-api"
185
+ }
186
+ },
187
+ "claude-sonnet-5": {
188
+ "name": "Claude Sonnet 5",
189
+ "vendor": "Anthropic",
190
+ "contextWindow": 1000000,
191
+ "outputWindow": 128000,
192
+ "utilizationPercentage": 0.6,
193
+ "maxRecommendedInput": 600000,
194
+ "preferredFormat": "toon",
195
+ "chunkStrategy": "none",
196
+ "supportedLanguages": "all",
197
+ "strengths": ["code-generation", "agentic-coding"],
198
+ "tier": "balanced",
199
+ "status": "active",
200
+ "pricing": {
201
+ "input": 2,
202
+ "output": 10
203
+ },
204
+ "tokenizer": {
205
+ "family": "claude",
206
+ "exact": false,
207
+ "exactVia": "anthropic-api"
208
+ }
209
+ },
210
+ "claude-opus-4-8": {
211
+ "name": "Claude Opus 4.8",
212
+ "vendor": "Anthropic",
213
+ "contextWindow": 1000000,
214
+ "outputWindow": 128000,
215
+ "utilizationPercentage": 0.6,
216
+ "maxRecommendedInput": 600000,
217
+ "preferredFormat": "toon",
218
+ "chunkStrategy": "none",
219
+ "supportedLanguages": "all",
220
+ "strengths": ["agentic-coding", "reasoning"],
221
+ "tier": "frontier",
222
+ "status": "active",
223
+ "pricing": {
224
+ "input": 5,
225
+ "output": 25
226
+ },
227
+ "tokenizer": {
228
+ "family": "claude",
229
+ "exact": false,
230
+ "exactVia": "anthropic-api"
231
+ }
232
+ },
233
+ "claude-opus-4-7": {
234
+ "name": "Claude Opus 4.7",
235
+ "vendor": "Anthropic",
236
+ "contextWindow": 1000000,
237
+ "outputWindow": 128000,
238
+ "utilizationPercentage": 0.6,
239
+ "maxRecommendedInput": 600000,
240
+ "preferredFormat": "toon",
241
+ "chunkStrategy": "none",
242
+ "supportedLanguages": "all",
243
+ "strengths": ["agentic-coding", "reasoning"],
244
+ "tier": "frontier",
245
+ "status": "active",
246
+ "pricing": {
247
+ "input": 5,
248
+ "output": 25
249
+ },
250
+ "tokenizer": {
251
+ "family": "claude",
252
+ "exact": false,
253
+ "exactVia": "anthropic-api"
254
+ }
255
+ },
256
+ "claude-opus-4-6": {
257
+ "name": "Claude Opus 4.6",
258
+ "vendor": "Anthropic",
259
+ "contextWindow": 1000000,
260
+ "outputWindow": 128000,
261
+ "utilizationPercentage": 0.6,
262
+ "maxRecommendedInput": 600000,
263
+ "preferredFormat": "toon",
264
+ "chunkStrategy": "none",
265
+ "supportedLanguages": "all",
266
+ "strengths": ["reasoning"],
267
+ "tier": "frontier",
268
+ "status": "active",
269
+ "pricing": {
270
+ "input": 5,
271
+ "output": 25
272
+ },
273
+ "tokenizer": {
274
+ "family": "claude",
275
+ "exact": false,
276
+ "exactVia": "anthropic-api"
277
+ }
278
+ },
279
+ "claude-sonnet-4-6": {
280
+ "name": "Claude Sonnet 4.6",
281
+ "vendor": "Anthropic",
282
+ "contextWindow": 1000000,
283
+ "outputWindow": 128000,
284
+ "utilizationPercentage": 0.6,
285
+ "maxRecommendedInput": 600000,
286
+ "preferredFormat": "toon",
287
+ "chunkStrategy": "none",
288
+ "supportedLanguages": "all",
289
+ "strengths": ["code-generation", "reasoning"],
290
+ "tier": "balanced",
291
+ "status": "active",
292
+ "pricing": {
293
+ "input": 3,
294
+ "output": 15
295
+ },
296
+ "tokenizer": {
297
+ "family": "claude",
298
+ "exact": false,
299
+ "exactVia": "anthropic-api"
300
+ }
301
+ },
302
+ "claude-haiku-4-5": {
303
+ "name": "Claude Haiku 4.5",
304
+ "vendor": "Anthropic",
305
+ "contextWindow": 200000,
306
+ "outputWindow": 64000,
307
+ "utilizationPercentage": 0.6,
308
+ "maxRecommendedInput": 120000,
309
+ "preferredFormat": "toon",
310
+ "chunkStrategy": "smart",
311
+ "supportedLanguages": "all",
312
+ "strengths": ["speed", "cost-effective"],
313
+ "tier": "fast",
314
+ "status": "active",
315
+ "pricing": {
316
+ "input": 1,
317
+ "output": 5
318
+ },
319
+ "tokenizer": {
320
+ "family": "claude",
321
+ "exact": false,
322
+ "exactVia": "anthropic-api"
323
+ }
324
+ },
325
+ "claude-sonnet-4-5": {
11
326
  "name": "Claude Sonnet 4.5",
12
327
  "vendor": "Anthropic",
13
328
  "contextWindow": 200000,
14
- "outputWindow": 8192,
329
+ "outputWindow": 64000,
15
330
  "utilizationPercentage": 0.6,
16
331
  "maxRecommendedInput": 120000,
17
332
  "preferredFormat": "toon",
18
333
  "chunkStrategy": "smart",
19
334
  "supportedLanguages": "all",
20
- "strengths": ["long-context", "code-generation", "reasoning"]
335
+ "strengths": ["code-generation", "reasoning"],
336
+ "tier": "balanced",
337
+ "status": "legacy",
338
+ "pricing": {
339
+ "input": 3,
340
+ "output": 15
341
+ },
342
+ "tokenizer": {
343
+ "family": "claude",
344
+ "exact": false,
345
+ "exactVia": "anthropic-api"
346
+ },
347
+ "replacement": "claude-sonnet-5-5"
21
348
  },
22
- "claude-opus-4": {
349
+ "claude-opus-4-0": {
23
350
  "name": "Claude Opus 4",
24
351
  "vendor": "Anthropic",
25
352
  "contextWindow": 200000,
26
- "outputWindow": 8192,
353
+ "outputWindow": 32000,
27
354
  "utilizationPercentage": 0.6,
28
355
  "maxRecommendedInput": 120000,
29
356
  "preferredFormat": "toon",
30
357
  "chunkStrategy": "smart",
31
358
  "supportedLanguages": "all",
32
- "strengths": ["reasoning", "complex-tasks", "accuracy"]
359
+ "strengths": ["reasoning"],
360
+ "tier": "frontier",
361
+ "status": "deprecated",
362
+ "pricing": {
363
+ "input": 15,
364
+ "output": 75
365
+ },
366
+ "tokenizer": {
367
+ "family": "claude",
368
+ "exact": false,
369
+ "exactVia": "anthropic-api"
370
+ },
371
+ "replacement": "claude-opus-5-5"
33
372
  },
34
- "gpt-4-turbo": {
35
- "name": "GPT-4 Turbo",
373
+ "gpt-6-astra": {
374
+ "name": "GPT-6 Astra",
36
375
  "vendor": "OpenAI",
37
- "contextWindow": 128000,
38
- "outputWindow": 4096,
376
+ "contextWindow": 1050000,
377
+ "outputWindow": 128000,
39
378
  "utilizationPercentage": 0.6,
40
- "maxRecommendedInput": 76800,
379
+ "maxRecommendedInput": 630000,
380
+ "preferredFormat": "json",
381
+ "chunkStrategy": "none",
382
+ "supportedLanguages": "all",
383
+ "strengths": ["reasoning", "agentic-coding", "long-context"],
384
+ "tier": "frontier",
385
+ "status": "active",
386
+ "pricing": {
387
+ "input": 10,
388
+ "output": 50,
389
+ "tiers": [
390
+ {
391
+ "above": 272000,
392
+ "input": 20,
393
+ "output": 75.0
394
+ }
395
+ ]
396
+ },
397
+ "tokenizer": {
398
+ "encoding": "o200k_base",
399
+ "exact": false
400
+ },
401
+ "released": "2026-09",
402
+ "notes": "OpenAI has not published the encoding of GPT-6 models; o200k_base is an approximation"
403
+ },
404
+ "gpt-6.1-sol": {
405
+ "name": "GPT-6.1 Sol",
406
+ "vendor": "OpenAI",
407
+ "contextWindow": 1050000,
408
+ "outputWindow": 128000,
409
+ "utilizationPercentage": 0.6,
410
+ "maxRecommendedInput": 630000,
411
+ "preferredFormat": "json",
412
+ "chunkStrategy": "none",
413
+ "supportedLanguages": "all",
414
+ "strengths": ["code-generation", "agentic-coding"],
415
+ "tier": "balanced",
416
+ "status": "active",
417
+ "pricing": {
418
+ "input": 2,
419
+ "output": 10,
420
+ "tiers": [
421
+ {
422
+ "above": 272000,
423
+ "input": 4,
424
+ "output": 15.0
425
+ }
426
+ ]
427
+ },
428
+ "tokenizer": {
429
+ "encoding": "o200k_base",
430
+ "exact": false
431
+ },
432
+ "released": "2026-09",
433
+ "featured": true,
434
+ "notes": "OpenAI has not published the encoding of GPT-6 models; o200k_base is an approximation"
435
+ },
436
+ "gpt-6-luna": {
437
+ "name": "GPT-6 Luna",
438
+ "vendor": "OpenAI",
439
+ "contextWindow": 1050000,
440
+ "outputWindow": 128000,
441
+ "utilizationPercentage": 0.6,
442
+ "maxRecommendedInput": 630000,
443
+ "preferredFormat": "json",
444
+ "chunkStrategy": "none",
445
+ "supportedLanguages": "all",
446
+ "strengths": ["speed", "cost-effective"],
447
+ "tier": "fast",
448
+ "status": "active",
449
+ "pricing": {
450
+ "input": 0.1,
451
+ "output": 0.5,
452
+ "tiers": [
453
+ {
454
+ "above": 272000,
455
+ "input": 0.2,
456
+ "output": 0.75
457
+ }
458
+ ]
459
+ },
460
+ "tokenizer": {
461
+ "encoding": "o200k_base",
462
+ "exact": false
463
+ },
464
+ "released": "2026-09",
465
+ "featured": true,
466
+ "notes": "Maximum input is 922,000 tokens. OpenAI has not published the encoding of GPT-6 models; o200k_base is an approximation"
467
+ },
468
+ "gpt-5.6-terra": {
469
+ "name": "GPT-5.6 Terra",
470
+ "vendor": "OpenAI",
471
+ "contextWindow": 1050000,
472
+ "outputWindow": 128000,
473
+ "utilizationPercentage": 0.6,
474
+ "maxRecommendedInput": 630000,
475
+ "preferredFormat": "json",
476
+ "chunkStrategy": "none",
477
+ "supportedLanguages": "all",
478
+ "strengths": ["code-generation", "reasoning"],
479
+ "tier": "balanced",
480
+ "status": "active",
481
+ "pricing": {
482
+ "input": 2,
483
+ "output": 12,
484
+ "tiers": [
485
+ {
486
+ "above": 272000,
487
+ "input": 4,
488
+ "output": 18.0
489
+ }
490
+ ]
491
+ },
492
+ "tokenizer": {
493
+ "encoding": "o200k_base",
494
+ "exact": true
495
+ },
496
+ "released": "2026-07"
497
+ },
498
+ "gpt-5.5": {
499
+ "name": "GPT-5.5",
500
+ "vendor": "OpenAI",
501
+ "contextWindow": 1050000,
502
+ "outputWindow": 128000,
503
+ "utilizationPercentage": 0.6,
504
+ "maxRecommendedInput": 630000,
505
+ "preferredFormat": "json",
506
+ "chunkStrategy": "none",
507
+ "supportedLanguages": "all",
508
+ "strengths": ["reasoning", "code-generation"],
509
+ "tier": "frontier",
510
+ "status": "active",
511
+ "pricing": {
512
+ "input": 5,
513
+ "output": 30,
514
+ "tiers": [
515
+ {
516
+ "above": 272000,
517
+ "input": 10,
518
+ "output": 45.0
519
+ }
520
+ ]
521
+ },
522
+ "tokenizer": {
523
+ "encoding": "o200k_base",
524
+ "exact": true
525
+ },
526
+ "released": "2026-04"
527
+ },
528
+ "gpt-5.4-mini": {
529
+ "name": "GPT-5.4 mini",
530
+ "vendor": "OpenAI",
531
+ "contextWindow": 400000,
532
+ "outputWindow": 128000,
533
+ "utilizationPercentage": 0.6,
534
+ "maxRecommendedInput": 240000,
41
535
  "preferredFormat": "json",
42
536
  "chunkStrategy": "smart",
43
537
  "supportedLanguages": "all",
44
- "strengths": ["accuracy", "json-mode", "function-calling"]
538
+ "strengths": ["speed", "cost-effective"],
539
+ "tier": "fast",
540
+ "status": "active",
541
+ "pricing": {
542
+ "input": 0.75,
543
+ "output": 4.5
544
+ },
545
+ "tokenizer": {
546
+ "encoding": "o200k_base",
547
+ "exact": true
548
+ },
549
+ "released": "2026-03"
45
550
  },
46
551
  "gpt-4o": {
47
552
  "name": "GPT-4o",
@@ -53,67 +558,590 @@
53
558
  "preferredFormat": "json",
54
559
  "chunkStrategy": "smart",
55
560
  "supportedLanguages": "all",
56
- "strengths": ["speed", "vision", "structured-output", "reasoning"]
561
+ "strengths": ["vision", "structured-output"],
562
+ "tier": "frontier",
563
+ "status": "legacy",
564
+ "pricing": {
565
+ "input": 2.5,
566
+ "output": 10
567
+ },
568
+ "tokenizer": {
569
+ "encoding": "o200k_base",
570
+ "exact": true
571
+ },
572
+ "replacement": "gpt-6.1-sol"
57
573
  },
58
574
  "gpt-4o-mini": {
59
- "name": "GPT-4o Mini",
575
+ "name": "GPT-4o mini",
60
576
  "vendor": "OpenAI",
61
577
  "contextWindow": 128000,
62
578
  "outputWindow": 16384,
63
579
  "utilizationPercentage": 0.6,
64
580
  "maxRecommendedInput": 76800,
65
581
  "preferredFormat": "json",
66
- "chunkStrategy": "file",
582
+ "chunkStrategy": "smart",
67
583
  "supportedLanguages": "all",
68
- "strengths": ["speed", "cost-effective", "quick-tasks"]
584
+ "strengths": ["speed", "cost-effective"],
585
+ "tier": "fast",
586
+ "status": "legacy",
587
+ "pricing": {
588
+ "input": 0.15,
589
+ "output": 0.6
590
+ },
591
+ "tokenizer": {
592
+ "encoding": "o200k_base",
593
+ "exact": true
594
+ },
595
+ "replacement": "gpt-6-luna"
69
596
  },
70
- "gemini-1.5-pro": {
71
- "name": "Gemini 1.5 Pro",
597
+ "gpt-4-turbo": {
598
+ "name": "GPT-4 Turbo",
599
+ "vendor": "OpenAI",
600
+ "contextWindow": 128000,
601
+ "outputWindow": 4096,
602
+ "utilizationPercentage": 0.6,
603
+ "maxRecommendedInput": 76800,
604
+ "preferredFormat": "json",
605
+ "chunkStrategy": "smart",
606
+ "supportedLanguages": "all",
607
+ "strengths": ["json-mode", "function-calling"],
608
+ "tier": "frontier",
609
+ "status": "deprecated",
610
+ "pricing": {
611
+ "input": 10,
612
+ "output": 30
613
+ },
614
+ "tokenizer": {
615
+ "encoding": "cl100k_base",
616
+ "exact": true
617
+ },
618
+ "retires": "2026-10-23",
619
+ "replacement": "gpt-6.1-sol"
620
+ },
621
+ "gemini-3.1-pro-preview": {
622
+ "name": "Gemini 3.1 Pro (preview)",
72
623
  "vendor": "Google",
73
- "contextWindow": 1000000,
74
- "outputWindow": 8192,
624
+ "contextWindow": 1048576,
625
+ "outputWindow": 65536,
75
626
  "utilizationPercentage": 0.6,
76
- "maxRecommendedInput": 600000,
627
+ "maxRecommendedInput": 629145,
628
+ "preferredFormat": "gitingest",
629
+ "chunkStrategy": "none",
630
+ "supportedLanguages": "all",
631
+ "strengths": ["ultra-long-context", "reasoning", "multimodal"],
632
+ "tier": "frontier",
633
+ "status": "preview",
634
+ "pricing": {
635
+ "input": 2,
636
+ "output": 12,
637
+ "tiers": [
638
+ {
639
+ "above": 200000,
640
+ "input": 4,
641
+ "output": 18
642
+ }
643
+ ]
644
+ },
645
+ "tokenizer": {
646
+ "exact": false
647
+ },
648
+ "released": "2026-02",
649
+ "featured": true
650
+ },
651
+ "gemini-3.8-flash": {
652
+ "name": "Gemini 3.8 Flash",
653
+ "vendor": "Google",
654
+ "contextWindow": 1048576,
655
+ "outputWindow": 65536,
656
+ "utilizationPercentage": 0.6,
657
+ "maxRecommendedInput": 629145,
77
658
  "preferredFormat": "gitingest",
78
659
  "chunkStrategy": "none",
79
660
  "supportedLanguages": "all",
80
- "strengths": ["ultra-long-context", "multimodal", "analysis"]
661
+ "strengths": ["ultra-long-context", "speed", "multimodal"],
662
+ "tier": "balanced",
663
+ "status": "active",
664
+ "pricing": {
665
+ "input": 0.75,
666
+ "output": 3.75
667
+ },
668
+ "tokenizer": {
669
+ "exact": false
670
+ },
671
+ "released": "2026-09",
672
+ "featured": true,
673
+ "notes": "Introductory price until 2026-12-31, then $1.50 input / $7.50 output"
674
+ },
675
+ "gemini-3.5-flash": {
676
+ "name": "Gemini 3.5 Flash",
677
+ "vendor": "Google",
678
+ "contextWindow": 1048576,
679
+ "outputWindow": 65536,
680
+ "utilizationPercentage": 0.6,
681
+ "maxRecommendedInput": 629145,
682
+ "preferredFormat": "gitingest",
683
+ "chunkStrategy": "none",
684
+ "supportedLanguages": "all",
685
+ "strengths": ["ultra-long-context", "speed"],
686
+ "tier": "balanced",
687
+ "status": "active",
688
+ "pricing": {
689
+ "input": 1.5,
690
+ "output": 9
691
+ },
692
+ "tokenizer": {
693
+ "exact": false
694
+ },
695
+ "released": "2026-05"
696
+ },
697
+ "gemini-3.5-flash-lite": {
698
+ "name": "Gemini 3.5 Flash-Lite",
699
+ "vendor": "Google",
700
+ "contextWindow": 1048576,
701
+ "outputWindow": 65536,
702
+ "utilizationPercentage": 0.6,
703
+ "maxRecommendedInput": 629145,
704
+ "preferredFormat": "gitingest",
705
+ "chunkStrategy": "none",
706
+ "supportedLanguages": "all",
707
+ "strengths": ["ultra-long-context", "cost-effective"],
708
+ "tier": "fast",
709
+ "status": "active",
710
+ "pricing": {
711
+ "input": 0.3,
712
+ "output": 2.5
713
+ },
714
+ "tokenizer": {
715
+ "exact": false
716
+ },
717
+ "released": "2026-07"
718
+ },
719
+ "gemini-2.5-pro": {
720
+ "name": "Gemini 2.5 Pro",
721
+ "vendor": "Google",
722
+ "contextWindow": 1048576,
723
+ "outputWindow": 65536,
724
+ "utilizationPercentage": 0.6,
725
+ "maxRecommendedInput": 629145,
726
+ "preferredFormat": "gitingest",
727
+ "chunkStrategy": "none",
728
+ "supportedLanguages": "all",
729
+ "strengths": ["ultra-long-context", "reasoning"],
730
+ "tier": "frontier",
731
+ "status": "deprecated",
732
+ "pricing": {
733
+ "input": 1.25,
734
+ "output": 10,
735
+ "tiers": [
736
+ {
737
+ "above": 200000,
738
+ "input": 2.5,
739
+ "output": 15
740
+ }
741
+ ]
742
+ },
743
+ "tokenizer": {
744
+ "exact": false
745
+ },
746
+ "replacement": "gemini-3.1-pro-preview"
81
747
  },
82
748
  "gemini-2.0-flash": {
83
749
  "name": "Gemini 2.0 Flash",
84
750
  "vendor": "Google",
85
- "contextWindow": 1000000,
751
+ "contextWindow": 1048576,
86
752
  "outputWindow": 8192,
87
753
  "utilizationPercentage": 0.6,
88
- "maxRecommendedInput": 600000,
754
+ "maxRecommendedInput": 629145,
89
755
  "preferredFormat": "gitingest",
90
756
  "chunkStrategy": "none",
91
757
  "supportedLanguages": "all",
92
- "strengths": ["ultra-long-context", "speed", "multimodal"]
758
+ "strengths": ["speed"],
759
+ "tier": "fast",
760
+ "status": "retired",
761
+ "pricing": {
762
+ "input": 0.1,
763
+ "output": 0.4
764
+ },
765
+ "tokenizer": {
766
+ "exact": false
767
+ },
768
+ "retires": "2026-06-01",
769
+ "replacement": "gemini-3.8-flash"
93
770
  },
94
- "deepseek-coder": {
95
- "name": "DeepSeek Coder",
771
+ "gemini-1.5-pro": {
772
+ "name": "Gemini 1.5 Pro",
773
+ "vendor": "Google",
774
+ "contextWindow": 2097152,
775
+ "outputWindow": 8192,
776
+ "utilizationPercentage": 0.6,
777
+ "maxRecommendedInput": 1258291,
778
+ "preferredFormat": "gitingest",
779
+ "chunkStrategy": "none",
780
+ "supportedLanguages": "all",
781
+ "strengths": ["ultra-long-context"],
782
+ "tier": "frontier",
783
+ "status": "retired",
784
+ "pricing": {
785
+ "input": 1.25,
786
+ "output": 5
787
+ },
788
+ "tokenizer": {
789
+ "exact": false
790
+ },
791
+ "retires": "2025-09-29",
792
+ "replacement": "gemini-3.1-pro-preview"
793
+ },
794
+ "deepseek-flash": {
795
+ "name": "DeepSeek V4.1 Flash",
96
796
  "vendor": "DeepSeek",
97
- "contextWindow": 16000,
98
- "outputWindow": 4096,
797
+ "contextWindow": 1048576,
798
+ "outputWindow": 393216,
99
799
  "utilizationPercentage": 0.6,
100
- "maxRecommendedInput": 9600,
800
+ "maxRecommendedInput": 629145,
101
801
  "preferredFormat": "json",
102
- "chunkStrategy": "file",
802
+ "chunkStrategy": "none",
103
803
  "supportedLanguages": "all",
104
- "strengths": ["code-completion", "efficiency", "cost-effective"]
804
+ "strengths": ["reasoning", "cost-effective", "long-context"],
805
+ "tier": "balanced",
806
+ "status": "active",
807
+ "pricing": {
808
+ "input": 0.3,
809
+ "output": 1.2
810
+ },
811
+ "tokenizer": {
812
+ "exact": false
813
+ },
814
+ "released": "2026-09",
815
+ "featured": true,
816
+ "notes": "Peak-hour price; off-peak hours cost half"
105
817
  },
106
818
  "deepseek-chat": {
107
819
  "name": "DeepSeek Chat",
108
820
  "vendor": "DeepSeek",
109
- "contextWindow": 64000,
110
- "outputWindow": 4096,
821
+ "contextWindow": 128000,
822
+ "outputWindow": 8192,
823
+ "utilizationPercentage": 0.6,
824
+ "maxRecommendedInput": 76800,
825
+ "preferredFormat": "json",
826
+ "chunkStrategy": "smart",
827
+ "supportedLanguages": "all",
828
+ "strengths": [],
829
+ "tier": "balanced",
830
+ "status": "retired",
831
+ "tokenizer": {
832
+ "exact": false
833
+ },
834
+ "retires": "2026-07-24",
835
+ "replacement": "deepseek-flash"
836
+ },
837
+ "deepseek-reasoner": {
838
+ "name": "DeepSeek Reasoner",
839
+ "vendor": "DeepSeek",
840
+ "contextWindow": 128000,
841
+ "outputWindow": 65536,
842
+ "utilizationPercentage": 0.6,
843
+ "maxRecommendedInput": 76800,
844
+ "preferredFormat": "json",
845
+ "chunkStrategy": "smart",
846
+ "supportedLanguages": "all",
847
+ "strengths": [],
848
+ "tier": "balanced",
849
+ "status": "retired",
850
+ "tokenizer": {
851
+ "exact": false
852
+ },
853
+ "retires": "2026-07-24",
854
+ "replacement": "deepseek-flash"
855
+ },
856
+ "mistral-large-4": {
857
+ "name": "Mistral Large 4 (preview)",
858
+ "vendor": "Mistral",
859
+ "contextWindow": 1000000,
860
+ "outputWindow": null,
861
+ "utilizationPercentage": 0.6,
862
+ "maxRecommendedInput": 600000,
863
+ "preferredFormat": "json",
864
+ "chunkStrategy": "none",
865
+ "supportedLanguages": "all",
866
+ "strengths": ["reasoning", "long-context"],
867
+ "tier": "frontier",
868
+ "status": "preview",
869
+ "pricing": {
870
+ "input": 1.36,
871
+ "output": 4.18
872
+ },
873
+ "tokenizer": {
874
+ "exact": false
875
+ },
876
+ "released": "2026-10"
877
+ },
878
+ "mistral-medium-3-5": {
879
+ "name": "Mistral Medium 3.5",
880
+ "vendor": "Mistral",
881
+ "contextWindow": 256000,
882
+ "outputWindow": null,
883
+ "utilizationPercentage": 0.6,
884
+ "maxRecommendedInput": 153600,
885
+ "preferredFormat": "json",
886
+ "chunkStrategy": "smart",
887
+ "supportedLanguages": "all",
888
+ "strengths": ["code-generation", "agentic-coding"],
889
+ "tier": "balanced",
890
+ "status": "active",
891
+ "pricing": {
892
+ "input": 1.5,
893
+ "output": 7.5
894
+ },
895
+ "tokenizer": {
896
+ "exact": false
897
+ },
898
+ "released": "2026-04",
899
+ "featured": true
900
+ },
901
+ "mistral-small-2603": {
902
+ "name": "Mistral Small 4",
903
+ "vendor": "Mistral",
904
+ "contextWindow": 256000,
905
+ "outputWindow": null,
906
+ "utilizationPercentage": 0.6,
907
+ "maxRecommendedInput": 153600,
908
+ "preferredFormat": "json",
909
+ "chunkStrategy": "smart",
910
+ "supportedLanguages": "all",
911
+ "strengths": ["speed", "cost-effective"],
912
+ "tier": "fast",
913
+ "status": "active",
914
+ "pricing": {
915
+ "input": 0.15,
916
+ "output": 0.6
917
+ },
918
+ "tokenizer": {
919
+ "exact": false
920
+ },
921
+ "released": "2026-03"
922
+ },
923
+ "codestral-2508": {
924
+ "name": "Codestral 25.08",
925
+ "vendor": "Mistral",
926
+ "contextWindow": 128000,
927
+ "outputWindow": null,
928
+ "utilizationPercentage": 0.6,
929
+ "maxRecommendedInput": 76800,
930
+ "preferredFormat": "json",
931
+ "chunkStrategy": "smart",
932
+ "supportedLanguages": "all",
933
+ "strengths": ["code-completion", "fill-in-the-middle"],
934
+ "tier": "fast",
935
+ "status": "active",
936
+ "pricing": {
937
+ "input": 0.3,
938
+ "output": 0.9
939
+ },
940
+ "tokenizer": {
941
+ "exact": false
942
+ },
943
+ "released": "2025-07"
944
+ },
945
+ "grok-4.7": {
946
+ "name": "Grok 4.7",
947
+ "vendor": "xAI",
948
+ "contextWindow": 500000,
949
+ "outputWindow": null,
950
+ "utilizationPercentage": 0.6,
951
+ "maxRecommendedInput": 300000,
952
+ "preferredFormat": "json",
953
+ "chunkStrategy": "smart",
954
+ "supportedLanguages": "all",
955
+ "strengths": ["reasoning", "code-generation"],
956
+ "tier": "frontier",
957
+ "status": "active",
958
+ "pricing": {
959
+ "input": 2,
960
+ "output": 6,
961
+ "tiers": [
962
+ {
963
+ "above": 200000,
964
+ "input": 4,
965
+ "output": 12
966
+ }
967
+ ]
968
+ },
969
+ "tokenizer": {
970
+ "exact": false
971
+ },
972
+ "released": "2026-09",
973
+ "featured": true
974
+ },
975
+ "grok-4.3": {
976
+ "name": "Grok 4.3",
977
+ "vendor": "xAI",
978
+ "contextWindow": 1000000,
979
+ "outputWindow": null,
980
+ "utilizationPercentage": 0.6,
981
+ "maxRecommendedInput": 600000,
982
+ "preferredFormat": "json",
983
+ "chunkStrategy": "none",
984
+ "supportedLanguages": "all",
985
+ "strengths": ["long-context", "cost-effective"],
986
+ "tier": "balanced",
987
+ "status": "active",
988
+ "pricing": {
989
+ "input": 1.25,
990
+ "output": 2.5,
991
+ "tiers": [
992
+ {
993
+ "above": 200000,
994
+ "input": 2.5,
995
+ "output": 5
996
+ }
997
+ ]
998
+ },
999
+ "tokenizer": {
1000
+ "exact": false
1001
+ }
1002
+ },
1003
+ "grok-build-0.1": {
1004
+ "name": "Grok Build 0.1 (beta)",
1005
+ "vendor": "xAI",
1006
+ "contextWindow": 256000,
1007
+ "outputWindow": null,
111
1008
  "utilizationPercentage": 0.6,
112
- "maxRecommendedInput": 38400,
1009
+ "maxRecommendedInput": 153600,
113
1010
  "preferredFormat": "json",
114
1011
  "chunkStrategy": "smart",
115
1012
  "supportedLanguages": "all",
116
- "strengths": ["reasoning", "analysis", "cost-effective"]
1013
+ "strengths": ["code-generation", "agentic-coding"],
1014
+ "tier": "balanced",
1015
+ "status": "preview",
1016
+ "pricing": {
1017
+ "input": 1,
1018
+ "output": 2
1019
+ },
1020
+ "tokenizer": {
1021
+ "exact": false
1022
+ },
1023
+ "released": "2026-05"
1024
+ },
1025
+ "qwen3.8-max": {
1026
+ "name": "Qwen3.8-Max",
1027
+ "vendor": "Qwen",
1028
+ "contextWindow": 1000000,
1029
+ "outputWindow": 131072,
1030
+ "utilizationPercentage": 0.6,
1031
+ "maxRecommendedInput": 600000,
1032
+ "preferredFormat": "json",
1033
+ "chunkStrategy": "none",
1034
+ "supportedLanguages": "all",
1035
+ "strengths": ["reasoning", "long-context"],
1036
+ "tier": "frontier",
1037
+ "status": "active",
1038
+ "pricing": {
1039
+ "input": 2,
1040
+ "output": 6
1041
+ },
1042
+ "tokenizer": {
1043
+ "exact": false
1044
+ },
1045
+ "released": "2026-08"
1046
+ },
1047
+ "qwen3.8-flash": {
1048
+ "name": "Qwen3.8-Flash",
1049
+ "vendor": "Qwen",
1050
+ "contextWindow": 1000000,
1051
+ "outputWindow": 131072,
1052
+ "utilizationPercentage": 0.6,
1053
+ "maxRecommendedInput": 600000,
1054
+ "preferredFormat": "json",
1055
+ "chunkStrategy": "none",
1056
+ "supportedLanguages": "all",
1057
+ "strengths": ["speed", "cost-effective"],
1058
+ "tier": "fast",
1059
+ "status": "active",
1060
+ "pricing": {
1061
+ "input": 0.15,
1062
+ "output": 0.47
1063
+ },
1064
+ "tokenizer": {
1065
+ "exact": false
1066
+ }
1067
+ },
1068
+ "qwen3-coder-plus": {
1069
+ "name": "Qwen3-Coder-Plus",
1070
+ "vendor": "Qwen",
1071
+ "contextWindow": 1000000,
1072
+ "outputWindow": 65536,
1073
+ "utilizationPercentage": 0.6,
1074
+ "maxRecommendedInput": 600000,
1075
+ "preferredFormat": "json",
1076
+ "chunkStrategy": "none",
1077
+ "supportedLanguages": "all",
1078
+ "strengths": ["code-generation", "agentic-coding"],
1079
+ "tier": "balanced",
1080
+ "status": "active",
1081
+ "pricing": {
1082
+ "input": 1,
1083
+ "output": 5,
1084
+ "tiers": [
1085
+ {
1086
+ "above": 32000,
1087
+ "input": 1.8,
1088
+ "output": 9
1089
+ },
1090
+ {
1091
+ "above": 128000,
1092
+ "input": 3,
1093
+ "output": 15
1094
+ },
1095
+ {
1096
+ "above": 256000,
1097
+ "input": 6,
1098
+ "output": 60
1099
+ }
1100
+ ]
1101
+ },
1102
+ "tokenizer": {
1103
+ "exact": false
1104
+ },
1105
+ "released": "2025-07",
1106
+ "featured": true
1107
+ },
1108
+ "llama-4-maverick": {
1109
+ "name": "Llama 4 Maverick",
1110
+ "vendor": "Meta",
1111
+ "contextWindow": 1000000,
1112
+ "outputWindow": null,
1113
+ "utilizationPercentage": 0.6,
1114
+ "maxRecommendedInput": 600000,
1115
+ "preferredFormat": "json",
1116
+ "chunkStrategy": "none",
1117
+ "supportedLanguages": "all",
1118
+ "strengths": ["open-weights", "multimodal"],
1119
+ "tier": "balanced",
1120
+ "status": "active",
1121
+ "tokenizer": {
1122
+ "exact": false
1123
+ },
1124
+ "released": "2025-04",
1125
+ "notes": "Context per the model card; hosted providers often cap it lower"
1126
+ },
1127
+ "llama-4-scout": {
1128
+ "name": "Llama 4 Scout",
1129
+ "vendor": "Meta",
1130
+ "contextWindow": 10000000,
1131
+ "outputWindow": null,
1132
+ "utilizationPercentage": 0.6,
1133
+ "maxRecommendedInput": 6000000,
1134
+ "preferredFormat": "json",
1135
+ "chunkStrategy": "none",
1136
+ "supportedLanguages": "all",
1137
+ "strengths": ["open-weights", "ultra-long-context"],
1138
+ "tier": "fast",
1139
+ "status": "active",
1140
+ "tokenizer": {
1141
+ "exact": false
1142
+ },
1143
+ "released": "2025-04",
1144
+ "notes": "Context per the model card; hosted providers often cap it lower"
117
1145
  }
118
1146
  },
119
1147
  "default": {