agentshim 0.18.3__tar.gz → 0.19.0__tar.gz
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.
- {agentshim-0.18.3 → agentshim-0.19.0}/CHANGELOG.md +12 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/PKG-INFO +1 -1
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/__init__.py +1 -1
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/models.py +88 -26
- {agentshim-0.18.3 → agentshim-0.19.0}/pyproject.toml +1 -1
- {agentshim-0.18.3 → agentshim-0.19.0}/.gitignore +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/LICENSE +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/README.md +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/agent.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/_files.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/auth.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/checkpoints.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/clock.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/conversation.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/env.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/errors.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/events.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/home.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/ids.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/mcp.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/permissions.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/pricing.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/profile.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/provider.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/schema.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/session_policy.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/skills.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/status.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/stream.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/turn.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/core/usage.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/execution/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/execution/confinement.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/execution/docker.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/execution/executor.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/execution/host.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/execution/process.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/execution/transform.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/oneshot.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/probe.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/events.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/failures.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/hooks/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/hooks/confine_reads.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/parser.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/probe.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/provider.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/rate_limits.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/sandbox.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/scripted.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/stream_argv.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/stream_transport.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/claude/user_hooks.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/_toml.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/_wire.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/approvals.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/channel.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/errors.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/items.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/mcp.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/permissions.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/profile.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/protocol.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/rate_limits.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/transport.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/app_server/usage.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/events.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/failures.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/mcp_scope.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/parser.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/probe.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/provider.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/rules.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/sandbox.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/scripted.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/codex/skills.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/copilot/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/copilot/events.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/copilot/parser.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/copilot/probe.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/copilot/provider.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/copilot/scripted.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/gemini/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/gemini/events.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/gemini/parser.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/gemini/probe.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/gemini/provider.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/gemini/scripted.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/opencode/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/opencode/events.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/opencode/parser.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/opencode/probe.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/opencode/provider.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/providers/opencode/scripted.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/py.typed +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/runtime.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/session.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/__init__.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/claude_stream.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/clock.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/codex_app_server.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/confinement.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/contracts.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/conversation.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/probe.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/agentshim/testing/process.py +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/tests/fixtures/claude_stream/README.md +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/tests/fixtures/codex/README.md +0 -0
- {agentshim-0.18.3 → agentshim-0.19.0}/tests/fixtures/codex_app_server/README.md +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.19.0 (2026-10-17)
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `ModelSpec` carries what a model picker needs: `display_name` (`"Opus 5.5"`), `family`
|
|
8
|
+
(`"Claude"`, `"GPT"`, `"Gemini"`), and a within-family ladder, `tier` (a rank, `1` the
|
|
9
|
+
smallest) with `tier_name` (`"Opus"`). Haiku < Sonnet < Opus < Fable; Luna < Terra < Sol <
|
|
10
|
+
Astra. All four fields default to `None`, so a caller-built `ModelSpec` keeps working;
|
|
11
|
+
every shipped entry has a name and family, and every one but `gpt-5.5` a tier.
|
|
12
|
+
Read them with `model_spec(provider, model)`. A provider's readable name was already
|
|
13
|
+
`ProviderProfile.display_name`.
|
|
14
|
+
|
|
3
15
|
## 0.18.3 (2026-10-16)
|
|
4
16
|
|
|
5
17
|
### Fixed
|
|
@@ -60,6 +60,15 @@ class ModelSpec:
|
|
|
60
60
|
output together), at the vendor's default for that id.
|
|
61
61
|
source: URL of the official page the number was read from.
|
|
62
62
|
checked: Date the number was last checked against ``source``.
|
|
63
|
+
display_name: A readable name for the model (``"Opus 5.5"``), or
|
|
64
|
+
``None`` for a caller-built entry that has none.
|
|
65
|
+
family: The model line the model belongs to (``"Claude"``, ``"GPT"``,
|
|
66
|
+
``"Gemini"``); set together with ``display_name``.
|
|
67
|
+
tier: The model's rank within its family, ``1`` the smallest and
|
|
68
|
+
cheapest; versions of one tier share a rank. ``None`` for a model
|
|
69
|
+
that sits on no tier ladder.
|
|
70
|
+
tier_name: The tier's readable name (``"Opus"``); set together with
|
|
71
|
+
``tier``.
|
|
63
72
|
"""
|
|
64
73
|
|
|
65
74
|
vendor: str
|
|
@@ -67,6 +76,10 @@ class ModelSpec:
|
|
|
67
76
|
context_window: int
|
|
68
77
|
source: str
|
|
69
78
|
checked: dt.date
|
|
79
|
+
display_name: str | None = None
|
|
80
|
+
family: str | None = None
|
|
81
|
+
tier: int | None = None
|
|
82
|
+
tier_name: str | None = None
|
|
70
83
|
|
|
71
84
|
def __post_init__(self) -> None:
|
|
72
85
|
"""Reject a missing name, source or date, and a window that is not a positive int."""
|
|
@@ -87,6 +100,26 @@ class ModelSpec:
|
|
|
87
100
|
if isinstance(window, bool) or not isinstance(window, int) or window <= 0:
|
|
88
101
|
msg = f"{self.vendor}/{self.model}: context_window must be a positive int"
|
|
89
102
|
raise ValueError(msg)
|
|
103
|
+
self._check_presentation()
|
|
104
|
+
|
|
105
|
+
def _check_presentation(self) -> None:
|
|
106
|
+
"""Reject a half-set name pair or tier pair, and a tier that is not a positive int."""
|
|
107
|
+
for first, second in (("display_name", "family"), ("tier", "tier_name")):
|
|
108
|
+
if (getattr(self, first) is None) != (getattr(self, second) is None):
|
|
109
|
+
msg = f"{self.vendor}/{self.model}: {first} and {second} are set together"
|
|
110
|
+
raise ValueError(msg)
|
|
111
|
+
for name in ("display_name", "family", "tier_name"):
|
|
112
|
+
value: object = getattr(self, name)
|
|
113
|
+
if value is not None and (not isinstance(value, str) or not value.strip()):
|
|
114
|
+
msg = f"{self.vendor}/{self.model}: {name} must be a non-empty string"
|
|
115
|
+
raise ValueError(msg)
|
|
116
|
+
tier = cast("object", self.tier)
|
|
117
|
+
if tier is not None and (isinstance(tier, bool) or not isinstance(tier, int) or tier < 1):
|
|
118
|
+
msg = f"{self.vendor}/{self.model}: tier must be a positive int"
|
|
119
|
+
raise ValueError(msg)
|
|
120
|
+
if self.tier is not None and self.family is None:
|
|
121
|
+
msg = f"{self.vendor}/{self.model}: tier needs a family"
|
|
122
|
+
raise ValueError(msg)
|
|
90
123
|
|
|
91
124
|
@property
|
|
92
125
|
def key(self) -> tuple[str, str]:
|
|
@@ -197,10 +230,15 @@ def default_models() -> ModelTable:
|
|
|
197
230
|
return DEFAULT_MODELS
|
|
198
231
|
|
|
199
232
|
|
|
200
|
-
_CHECKED = dt.date(2026, 10,
|
|
233
|
+
_CHECKED = dt.date(2026, 10, 17)
|
|
201
234
|
|
|
202
235
|
|
|
203
|
-
def _openai(
|
|
236
|
+
def _openai(
|
|
237
|
+
model: str,
|
|
238
|
+
context_window: int,
|
|
239
|
+
display_name: str,
|
|
240
|
+
tier: tuple[int, str] | None = None,
|
|
241
|
+
) -> ModelSpec:
|
|
204
242
|
# Each model's page under OPENAI_MODELS_URL ("<n> context window").
|
|
205
243
|
return ModelSpec(
|
|
206
244
|
vendor="openai",
|
|
@@ -208,10 +246,14 @@ def _openai(model: str, context_window: int) -> ModelSpec:
|
|
|
208
246
|
context_window=context_window,
|
|
209
247
|
source=f"{OPENAI_MODELS_URL}/{model}",
|
|
210
248
|
checked=_CHECKED,
|
|
249
|
+
display_name=display_name,
|
|
250
|
+
family="GPT",
|
|
251
|
+
tier=None if tier is None else tier[0],
|
|
252
|
+
tier_name=None if tier is None else tier[1],
|
|
211
253
|
)
|
|
212
254
|
|
|
213
255
|
|
|
214
|
-
def _anthropic(model: str, context_window: int) -> ModelSpec:
|
|
256
|
+
def _anthropic(model: str, context_window: int, tier: tuple[int, str], version: str) -> ModelSpec:
|
|
215
257
|
# "Context window sizes by model": the 1M models list 1M as the default
|
|
216
258
|
# with no beta header; "other Claude models ... have a 200k-token" window.
|
|
217
259
|
return ModelSpec(
|
|
@@ -220,10 +262,14 @@ def _anthropic(model: str, context_window: int) -> ModelSpec:
|
|
|
220
262
|
context_window=context_window,
|
|
221
263
|
source=ANTHROPIC_CONTEXT_WINDOWS_URL,
|
|
222
264
|
checked=_CHECKED,
|
|
265
|
+
display_name=f"{tier[1]} {version}",
|
|
266
|
+
family="Claude",
|
|
267
|
+
tier=tier[0],
|
|
268
|
+
tier_name=tier[1],
|
|
223
269
|
)
|
|
224
270
|
|
|
225
271
|
|
|
226
|
-
def _google(model: str, context_window: int) -> ModelSpec:
|
|
272
|
+
def _google(model: str, context_window: int, display_name: str, tier: tuple[int, str]) -> ModelSpec:
|
|
227
273
|
# Each model's page under GOOGLE_MODELS_URL ("Input token limit"), which
|
|
228
274
|
# is the window Google publishes for the model.
|
|
229
275
|
return ModelSpec(
|
|
@@ -232,9 +278,25 @@ def _google(model: str, context_window: int) -> ModelSpec:
|
|
|
232
278
|
context_window=context_window,
|
|
233
279
|
source=f"{GOOGLE_MODELS_URL}/{model}",
|
|
234
280
|
checked=_CHECKED,
|
|
281
|
+
display_name=display_name,
|
|
282
|
+
family="Gemini",
|
|
283
|
+
tier=tier[0],
|
|
284
|
+
tier_name=tier[1],
|
|
235
285
|
)
|
|
236
286
|
|
|
237
287
|
|
|
288
|
+
# Tier ladders, smallest and cheapest first. Anthropic ranks its lines
|
|
289
|
+
# Haiku < Sonnet < Opus < Fable; Codex's GPT lines Luna < Terra < Sol < Astra.
|
|
290
|
+
_HAIKU = (1, "Haiku")
|
|
291
|
+
_SONNET = (2, "Sonnet")
|
|
292
|
+
_OPUS = (3, "Opus")
|
|
293
|
+
_FABLE = (4, "Fable")
|
|
294
|
+
_LUNA = (1, "Luna")
|
|
295
|
+
_TERRA = (2, "Terra")
|
|
296
|
+
_SOL = (3, "Sol")
|
|
297
|
+
_ASTRA = (4, "Astra")
|
|
298
|
+
_PRO = (1, "Pro")
|
|
299
|
+
|
|
238
300
|
_ONE_MILLION = 1_000_000
|
|
239
301
|
_GOOGLE_1M = 1_048_576
|
|
240
302
|
_OPENAI_1_05M = 1_050_000
|
|
@@ -242,32 +304,32 @@ _OPENAI_1_05M = 1_050_000
|
|
|
242
304
|
#: The table agentshim ships. Update it as described in ``docs/models.md``.
|
|
243
305
|
#: A model whose window could not be read from its vendor's page is left out.
|
|
244
306
|
DEFAULT_MODELS = ModelTable(
|
|
245
|
-
version="2026-10-
|
|
307
|
+
version="2026-10-17.1",
|
|
246
308
|
last_updated=_CHECKED,
|
|
247
309
|
entries=(
|
|
248
310
|
# OpenAI (Codex): each model page reads "1,050,000 context window".
|
|
249
|
-
_openai("gpt-6-astra", _OPENAI_1_05M),
|
|
250
|
-
_openai("gpt-6.1-sol", _OPENAI_1_05M),
|
|
251
|
-
_openai("gpt-6-sol", _OPENAI_1_05M),
|
|
252
|
-
_openai("gpt-6-luna", _OPENAI_1_05M),
|
|
253
|
-
_openai("gpt-5.6-sol", _OPENAI_1_05M),
|
|
254
|
-
_openai("gpt-5.6-terra", _OPENAI_1_05M),
|
|
255
|
-
_openai("gpt-5.6-luna", _OPENAI_1_05M),
|
|
256
|
-
_openai("gpt-5.5", _OPENAI_1_05M),
|
|
311
|
+
_openai("gpt-6-astra", _OPENAI_1_05M, "GPT-6 Astra", _ASTRA),
|
|
312
|
+
_openai("gpt-6.1-sol", _OPENAI_1_05M, "GPT-6.1 Sol", _SOL),
|
|
313
|
+
_openai("gpt-6-sol", _OPENAI_1_05M, "GPT-6 Sol", _SOL),
|
|
314
|
+
_openai("gpt-6-luna", _OPENAI_1_05M, "GPT-6 Luna", _LUNA),
|
|
315
|
+
_openai("gpt-5.6-sol", _OPENAI_1_05M, "GPT-5.6 Sol", _SOL),
|
|
316
|
+
_openai("gpt-5.6-terra", _OPENAI_1_05M, "GPT-5.6 Terra", _TERRA),
|
|
317
|
+
_openai("gpt-5.6-luna", _OPENAI_1_05M, "GPT-5.6 Luna", _LUNA),
|
|
318
|
+
_openai("gpt-5.5", _OPENAI_1_05M, "GPT-5.5"),
|
|
257
319
|
# Anthropic (Claude).
|
|
258
|
-
_anthropic("claude-fable-5-1", _ONE_MILLION),
|
|
259
|
-
_anthropic("claude-fable-5", _ONE_MILLION),
|
|
260
|
-
_anthropic("claude-opus-5-5", _ONE_MILLION),
|
|
261
|
-
_anthropic("claude-opus-5", _ONE_MILLION),
|
|
262
|
-
_anthropic("claude-opus-4-8", _ONE_MILLION),
|
|
263
|
-
_anthropic("claude-opus-4-7", _ONE_MILLION),
|
|
264
|
-
_anthropic("claude-opus-4-6", _ONE_MILLION),
|
|
265
|
-
_anthropic("claude-sonnet-5-5", _ONE_MILLION),
|
|
266
|
-
_anthropic("claude-sonnet-5", _ONE_MILLION),
|
|
267
|
-
_anthropic("claude-sonnet-4-6", _ONE_MILLION),
|
|
268
|
-
_anthropic("claude-haiku-5-5", _ONE_MILLION),
|
|
269
|
-
_anthropic("claude-haiku-4-5", 200_000),
|
|
320
|
+
_anthropic("claude-fable-5-1", _ONE_MILLION, _FABLE, "5.1"),
|
|
321
|
+
_anthropic("claude-fable-5", _ONE_MILLION, _FABLE, "5"),
|
|
322
|
+
_anthropic("claude-opus-5-5", _ONE_MILLION, _OPUS, "5.5"),
|
|
323
|
+
_anthropic("claude-opus-5", _ONE_MILLION, _OPUS, "5"),
|
|
324
|
+
_anthropic("claude-opus-4-8", _ONE_MILLION, _OPUS, "4.8"),
|
|
325
|
+
_anthropic("claude-opus-4-7", _ONE_MILLION, _OPUS, "4.7"),
|
|
326
|
+
_anthropic("claude-opus-4-6", _ONE_MILLION, _OPUS, "4.6"),
|
|
327
|
+
_anthropic("claude-sonnet-5-5", _ONE_MILLION, _SONNET, "5.5"),
|
|
328
|
+
_anthropic("claude-sonnet-5", _ONE_MILLION, _SONNET, "5"),
|
|
329
|
+
_anthropic("claude-sonnet-4-6", _ONE_MILLION, _SONNET, "4.6"),
|
|
330
|
+
_anthropic("claude-haiku-5-5", _ONE_MILLION, _HAIKU, "5.5"),
|
|
331
|
+
_anthropic("claude-haiku-4-5", 200_000, _HAIKU, "4.5"),
|
|
270
332
|
# Google (opencode): the page reads "Input token limit 1,048,576".
|
|
271
|
-
_google("gemini-3-pro-preview", _GOOGLE_1M),
|
|
333
|
+
_google("gemini-3-pro-preview", _GOOGLE_1M, "Gemini 3 Pro Preview", _PRO),
|
|
272
334
|
),
|
|
273
335
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|