agent-bios 0.9.1 → 0.9.3

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.
@@ -17,7 +17,7 @@ core_rules:
17
17
  - name the boundary explicitly — what to do without asking, and what to stop and ask about
18
18
  targets:
19
19
  - claude-fable-5
20
- - claude-opus-4-8
20
+ - claude-opus-5
21
21
  - claude-sonnet-5
22
22
  - claude-haiku-4-5
23
23
  verification_focus:
@@ -55,15 +55,21 @@ pick the path.
55
55
  ## When to add blocks
56
56
 
57
57
  - Long-horizon or autonomous work: give the full spec up front in one
58
- well-specified turn and run at a high effort. Add an explicit self-check
59
- cadence; separate fresh-context verifier subagents beat self-critique.
58
+ well-specified turn and run at a high effort. Do **not** add a self-check
59
+ cadence or a dedicated verifier subagent: the helm binding verifies its own
60
+ work unasked, so an instruction to verify buys over-verification instead.
61
+ Deleting inherited verification scaffolding costs no capability — this inverts
62
+ the usual self-check advice, so carve this tier out of a prompt library that
63
+ applies that advice uniformly.
60
64
  - Review: state the evidence bar and the verdict shape. This tier follows
61
65
  severity filters literally, so "only report high-severity" depresses measured
62
66
  recall even as bug-finding improves — ask for every finding with confidence
63
67
  and severity attached, and filter downstream.
64
- - Delegation: say when to delegate. Left unprompted this tier under-reaches for
65
- subagents, file-based memory, and custom tools it will not spend an
66
- expensive capability unless it is reasonably sure the capability is needed.
68
+ - Delegation: say when *not* to delegate, and cap the spawn count. The helm
69
+ binding reaches for subagents readilythe reverse of the binding it replaced
70
+ and every spawn rebuilds context, reports back, and is then re-read, so
71
+ unbounded delegation multiplies cost and latency. File-based memory and custom
72
+ tools are the opposite case: they still need an explicit when-to-use trigger.
67
73
  - Autonomous runs with no human watching: say so. Otherwise it asks permission
68
74
  it does not need and blocks. Grant autonomy on minor choices (naming,
69
75
  defaults, equivalent approaches) while keeping the ask for scope changes and
@@ -80,13 +86,17 @@ pick the path.
80
86
  per subtask, and the orchestrator is not pinned to the slowest one.
81
87
  - Effort ladder — `low`, `medium`, `high`, `xhigh`, `max` on the frontier, helm,
82
88
  and workhorse bindings; `xhigh` is the best setting for most coding and
83
- agentic work, `high` a sound default, `low` for cheap subagent scans. Sweep the
84
- levels on a real eval set rather than reaching for the top: higher effort up
85
- front often *reduces* turn count and total cost on agentic work, while some
86
- tasks land equally well a level down.
89
+ agentic work, `high` a sound default, `low` for cheap subagent scans. Start
90
+ there and sweep *down* on a real eval set rather than reaching for the top: the
91
+ lower rungs are unusually strong on the helm binding, higher effort up front
92
+ often *reduces* turn count and total cost on agentic work, and some tasks land
93
+ equally well a level down. Effort does not control response length — see
94
+ Working rules.
87
95
  - Per-model constraints differ across the `targets` bindings — thinking
88
96
  configuration, sampling parameters, and effort support are not uniform, and
89
- the sweep binding is the most restricted. Confirm the constraint against the
97
+ the sweep binding is the most restricted. On the helm binding, for instance,
98
+ thinking is on by default and turning it off is accepted only at `high` effort
99
+ or below. Confirm the constraint against the
90
100
  live surface before relying on it in a dispatch; do not assume the frontier
91
101
  binding's rules apply to the sweep one.
92
102
 
@@ -98,6 +108,13 @@ pick the path.
98
108
  - Do not add "summarize every N tool calls" scaffolding — this tier narrates on
99
109
  its own. If it narrates too much for a coding agent, set a silence default
100
110
  instead: text only on a finding, a direction change, or a blocker.
111
+ - Length is a prompting lever, not an effort lever. This tier writes longer
112
+ answers and longer files than its predecessors, and lowering `effort` does not
113
+ reliably shorten visible output — only an explicit instruction does. Calibrate
114
+ the deliverable's length separately from the conversation's.
115
+ - Scope self-correction. Left alone this tier narrates its own earlier mistakes
116
+ at length, which reads as thrash. Ask it to correct only what would change the
117
+ reader's decisions, say it plainly, and carry on.
101
118
  - Give it somewhere to write learnings, tell it to consult that place later, and
102
119
  give the file a format. It performs notably better with a memory surface.
103
120
  - Keep the deliverable readable: the final message is the reader's first look at
@@ -111,7 +128,8 @@ pick the path.
111
128
  2. Name the boundaries — what to do freely, what to stop and ask about.
112
129
  3. Give each tool a when-to-call description.
113
130
  4. Say how progress claims must be grounded, and how the deliverable should read.
114
- 5. Delete the step-by-step scaffolding inherited from older models, then A/B the
131
+ 5. Delete the step-by-step scaffolding inherited from older models including
132
+ any verify-your-work step and any encouragement to delegate — then A/B the
115
133
  prompt with it removed before keeping either version.
116
134
 
117
135
  ## Sources
@@ -156,12 +156,12 @@ Write for the next agent and re-verification, not narrative. Required content:
156
156
 
157
157
  This is the human-readable projection of concrete models/tools; `config/agent-launch.toml` is the machine launch authority and parity checks keep them aligned. Re-probe when the binding is older than ~8 weeks or a newer observable model/tool changes the surface. `agent-bios install` overwrites deployed bindings, so edit the repo copy.
158
158
 
159
- Binding (2026-07-13):
159
+ Binding (2026-07-25):
160
160
 
161
161
  | Slot | Binding | Notes |
162
162
  |---|---|---|
163
163
  | FRONTIER | Claude Fable 5 · GPT-5.6 Sol (read-only; max default, task-fit effort including Ultra) | bounded hardest decisions and verdicts |
164
- | HELM | Claude Opus 4.8 (xhigh) · GPT-5.6 Sol (xhigh main; main Ultra requires explicit selection; bounded FRONTIER Ultra allowed) | standing main; Codex defaults bypass, explicit sandbox narrows |
164
+ | HELM | Claude Opus 5 (xhigh) · GPT-5.6 Sol (xhigh main; main Ultra requires explicit selection; bounded FRONTIER Ultra allowed) | standing main; Codex defaults bypass, explicit sandbox narrows |
165
165
  | WORKHORSE | Claude Sonnet 5 · GPT-5.6 Terra (high) | implementation and per-item judgment |
166
166
  | SWEEP | Claude Haiku 4.5 · GPT-5.6 Luna (low) | clear repeatable scans and mechanical work |
167
167
  | VERIFIER-A | onto-mcp review | logic/authority kind; tier units per funnel |
@@ -186,7 +186,7 @@ Dispatch packets:
186
186
  | GPT-5.6 Sol FRONTIER | outcome, evidence, decision boundary, stop/verification; task-fit effort; read-only |
187
187
  | GPT-5.6 Terra WORKHORSE | outcome, frozen scope/inputs, authority, done-when, evidence/report, escalation; high |
188
188
  | GPT-5.6 Luna SWEEP | exact search space, rules, ambiguity behavior, stop, output; low; no architecture/debugging |
189
- | Claude Opus 4.8 HELM | xhigh for agentic work; high minimum for sensitive judgment; lower only when bounded/cost-led |
189
+ | Claude Opus 5 HELM | xhigh for agentic work; high minimum for sensitive judgment; lower only when bounded/cost-led |
190
190
  | Claude Sonnet 5 WORKHORSE | exact scope, apply-to-all rules, tools, verification, report; high default |
191
191
  | Claude Haiku 4.5 SWEEP | closed, high-volume, latency-sensitive work with exact schema/examples |
192
192
 
@@ -17,7 +17,7 @@ core_rules:
17
17
  - name the boundary explicitly — what to do without asking, and what to stop and ask about
18
18
  targets:
19
19
  - claude-fable-5
20
- - claude-opus-4-8
20
+ - claude-opus-5
21
21
  - claude-sonnet-5
22
22
  - claude-haiku-4-5
23
23
  verification_focus:
@@ -55,15 +55,21 @@ pick the path.
55
55
  ## When to add blocks
56
56
 
57
57
  - Long-horizon or autonomous work: give the full spec up front in one
58
- well-specified turn and run at a high effort. Add an explicit self-check
59
- cadence; separate fresh-context verifier subagents beat self-critique.
58
+ well-specified turn and run at a high effort. Do **not** add a self-check
59
+ cadence or a dedicated verifier subagent: the helm binding verifies its own
60
+ work unasked, so an instruction to verify buys over-verification instead.
61
+ Deleting inherited verification scaffolding costs no capability — this inverts
62
+ the usual self-check advice, so carve this tier out of a prompt library that
63
+ applies that advice uniformly.
60
64
  - Review: state the evidence bar and the verdict shape. This tier follows
61
65
  severity filters literally, so "only report high-severity" depresses measured
62
66
  recall even as bug-finding improves — ask for every finding with confidence
63
67
  and severity attached, and filter downstream.
64
- - Delegation: say when to delegate. Left unprompted this tier under-reaches for
65
- subagents, file-based memory, and custom tools it will not spend an
66
- expensive capability unless it is reasonably sure the capability is needed.
68
+ - Delegation: say when *not* to delegate, and cap the spawn count. The helm
69
+ binding reaches for subagents readilythe reverse of the binding it replaced
70
+ and every spawn rebuilds context, reports back, and is then re-read, so
71
+ unbounded delegation multiplies cost and latency. File-based memory and custom
72
+ tools are the opposite case: they still need an explicit when-to-use trigger.
67
73
  - Autonomous runs with no human watching: say so. Otherwise it asks permission
68
74
  it does not need and blocks. Grant autonomy on minor choices (naming,
69
75
  defaults, equivalent approaches) while keeping the ask for scope changes and
@@ -80,13 +86,17 @@ pick the path.
80
86
  per subtask, and the orchestrator is not pinned to the slowest one.
81
87
  - Effort ladder — `low`, `medium`, `high`, `xhigh`, `max` on the frontier, helm,
82
88
  and workhorse bindings; `xhigh` is the best setting for most coding and
83
- agentic work, `high` a sound default, `low` for cheap subagent scans. Sweep the
84
- levels on a real eval set rather than reaching for the top: higher effort up
85
- front often *reduces* turn count and total cost on agentic work, while some
86
- tasks land equally well a level down.
89
+ agentic work, `high` a sound default, `low` for cheap subagent scans. Start
90
+ there and sweep *down* on a real eval set rather than reaching for the top: the
91
+ lower rungs are unusually strong on the helm binding, higher effort up front
92
+ often *reduces* turn count and total cost on agentic work, and some tasks land
93
+ equally well a level down. Effort does not control response length — see
94
+ Working rules.
87
95
  - Per-model constraints differ across the `targets` bindings — thinking
88
96
  configuration, sampling parameters, and effort support are not uniform, and
89
- the sweep binding is the most restricted. Confirm the constraint against the
97
+ the sweep binding is the most restricted. On the helm binding, for instance,
98
+ thinking is on by default and turning it off is accepted only at `high` effort
99
+ or below. Confirm the constraint against the
90
100
  live surface before relying on it in a dispatch; do not assume the frontier
91
101
  binding's rules apply to the sweep one.
92
102
 
@@ -98,6 +108,13 @@ pick the path.
98
108
  - Do not add "summarize every N tool calls" scaffolding — this tier narrates on
99
109
  its own. If it narrates too much for a coding agent, set a silence default
100
110
  instead: text only on a finding, a direction change, or a blocker.
111
+ - Length is a prompting lever, not an effort lever. This tier writes longer
112
+ answers and longer files than its predecessors, and lowering `effort` does not
113
+ reliably shorten visible output — only an explicit instruction does. Calibrate
114
+ the deliverable's length separately from the conversation's.
115
+ - Scope self-correction. Left alone this tier narrates its own earlier mistakes
116
+ at length, which reads as thrash. Ask it to correct only what would change the
117
+ reader's decisions, say it plainly, and carry on.
101
118
  - Give it somewhere to write learnings, tell it to consult that place later, and
102
119
  give the file a format. It performs notably better with a memory surface.
103
120
  - Keep the deliverable readable: the final message is the reader's first look at
@@ -111,7 +128,8 @@ pick the path.
111
128
  2. Name the boundaries — what to do freely, what to stop and ask about.
112
129
  3. Give each tool a when-to-call description.
113
130
  4. Say how progress claims must be grounded, and how the deliverable should read.
114
- 5. Delete the step-by-step scaffolding inherited from older models, then A/B the
131
+ 5. Delete the step-by-step scaffolding inherited from older models including
132
+ any verify-your-work step and any encouragement to delegate — then A/B the
115
133
  prompt with it removed before keeping either version.
116
134
 
117
135
  ## Sources
@@ -156,12 +156,12 @@ Write for the next agent and re-verification, not narrative. Required content:
156
156
 
157
157
  This is the human-readable projection of concrete models/tools; `config/agent-launch.toml` is the machine launch authority and parity checks keep them aligned. Re-probe when the binding is older than ~8 weeks or a newer observable model/tool changes the surface. `agent-bios install` overwrites deployed bindings, so edit the repo copy.
158
158
 
159
- Binding (2026-07-13):
159
+ Binding (2026-07-25):
160
160
 
161
161
  | Slot | Binding | Notes |
162
162
  |---|---|---|
163
163
  | FRONTIER | Claude Fable 5 · GPT-5.6 Sol (read-only; max default, task-fit effort including Ultra) | bounded hardest decisions and verdicts |
164
- | HELM | Claude Opus 4.8 (xhigh) · GPT-5.6 Sol (xhigh main; main Ultra requires explicit selection; bounded FRONTIER Ultra allowed) | standing main; Codex defaults bypass, explicit sandbox narrows |
164
+ | HELM | Claude Opus 5 (xhigh) · GPT-5.6 Sol (xhigh main; main Ultra requires explicit selection; bounded FRONTIER Ultra allowed) | standing main; Codex defaults bypass, explicit sandbox narrows |
165
165
  | WORKHORSE | Claude Sonnet 5 · GPT-5.6 Terra (high) | implementation and per-item judgment |
166
166
  | SWEEP | Claude Haiku 4.5 · GPT-5.6 Luna (low) | clear repeatable scans and mechanical work |
167
167
  | VERIFIER-A | onto-mcp review | logic/authority kind; tier units per funnel |
@@ -186,7 +186,7 @@ Dispatch packets:
186
186
  | GPT-5.6 Sol FRONTIER | outcome, evidence, decision boundary, stop/verification; task-fit effort; read-only |
187
187
  | GPT-5.6 Terra WORKHORSE | outcome, frozen scope/inputs, authority, done-when, evidence/report, escalation; high |
188
188
  | GPT-5.6 Luna SWEEP | exact search space, rules, ambiguity behavior, stop, output; low; no architecture/debugging |
189
- | Claude Opus 4.8 HELM | xhigh for agentic work; high minimum for sensitive judgment; lower only when bounded/cost-led |
189
+ | Claude Opus 5 HELM | xhigh for agentic work; high minimum for sensitive judgment; lower only when bounded/cost-led |
190
190
  | Claude Sonnet 5 WORKHORSE | exact scope, apply-to-all rules, tools, verification, report; high default |
191
191
  | Claude Haiku 4.5 SWEEP | closed, high-volume, latency-sensitive work with exact schema/examples |
192
192
 
@@ -48,7 +48,7 @@ workhorse = "${CODEX_HOME}/agents/workhorse.toml"
48
48
  sweep = "${CODEX_HOME}/agents/sweep.toml"
49
49
 
50
50
  [hosts.claude]
51
- models = ["claude-fable-5", "claude-opus-4-8", "claude-sonnet-5", "claude-haiku-4-5"]
51
+ models = ["claude-fable-5", "claude-opus-5", "claude-sonnet-5", "claude-haiku-4-5"]
52
52
  # onto review seat used when a CROSS-family main (Codex) routes onto review to
53
53
  # this (anthropic/claude) family; must be an onto review-role registered (provider, model).
54
54
  onto_review = { provider = "anthropic", model = "claude-fable-5" }
@@ -58,7 +58,7 @@ model = "claude-fable-5"
58
58
  effort = "max"
59
59
 
60
60
  [hosts.claude.tiers.helm]
61
- model = "claude-opus-4-8"
61
+ model = "claude-opus-5"
62
62
  effort = "xhigh"
63
63
 
64
64
  [hosts.claude.tiers.workhorse]
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "agent-bios",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
+ "releaseDate": "2026-07-25",
4
5
  "description": "A thin, low-level instruction layer for LLM CLI agents: one set of principles and behavior whichever model you run. Deploys into $HOME by copy via an explicit `agent-bios install`.",
5
6
  "bin": {
6
7
  "agent-bios": "scripts/install.sh"
@@ -609,6 +609,9 @@ def _build_app_class():
609
609
  def setup_panel(plan):
610
610
  panel = Static("\n".join(setup_summary_lines(plan)), id="al-setup")
611
611
  panel.border_title = "Current setup"
612
+ release = version_label()
613
+ if release:
614
+ panel.border_subtitle = release
612
615
  return panel
613
616
 
614
617
  class MenuScreen(ModalScreen):
@@ -1460,6 +1463,13 @@ CORPUS_STATUS_PATH = pathlib.Path(
1460
1463
  )
1461
1464
  )
1462
1465
 
1466
+ VERSION_INFO_PATH = pathlib.Path(
1467
+ os.environ.get(
1468
+ "AGENT_LAUNCH_VERSION_FILE",
1469
+ str(pathlib.Path.home() / ".local/share/agent-bios/version.json"),
1470
+ )
1471
+ )
1472
+
1463
1473
 
1464
1474
  def load_corpus_status() -> dict[str, Any] | None:
1465
1475
  try:
@@ -1468,6 +1478,22 @@ def load_corpus_status() -> dict[str, Any] | None:
1468
1478
  return None
1469
1479
 
1470
1480
 
1481
+ def version_label() -> str | None:
1482
+ """The deployed agent-bios version + release date for the TUI, or None when
1483
+ the marker is absent (uninstalled / dev checkout). `agent-bios install`
1484
+ writes it from package.json (version + releaseDate). This is the deploy /
1485
+ system version — distinct from the corpus content version in the distill hub."""
1486
+ try:
1487
+ info = json.loads(VERSION_INFO_PATH.read_text())
1488
+ except (OSError, ValueError):
1489
+ return None
1490
+ version = info.get("version") if isinstance(info, dict) else None
1491
+ if not version:
1492
+ return None
1493
+ released = info.get("releaseDate")
1494
+ return f"agent-bios v{version} · {released}" if released else f"agent-bios v{version}"
1495
+
1496
+
1471
1497
  def corpus_summary_lines(status: dict[str, Any] | None) -> list[str]:
1472
1498
  """Panel body for the Session Distill area: which corpus content is
1473
1499
  live, through which mechanisms, and whether the corpus is rolled back."""
@@ -273,7 +273,7 @@ for tier, (model, effort) in expected_launch_tiers.items():
273
273
 
274
274
  expected_claude_tiers = {
275
275
  "frontier": ("claude-fable-5", "max"),
276
- "helm": ("claude-opus-4-8", "xhigh"),
276
+ "helm": ("claude-opus-5", "xhigh"),
277
277
  "workhorse": ("claude-sonnet-5", "high"),
278
278
  "sweep": ("claude-haiku-4-5", "low"),
279
279
  }
@@ -409,7 +409,7 @@ for guide_name in [
409
409
  mark_fail(f"{guide} SWEEP must bind exact GPT-5.6 Luna")
410
410
  for slot, claude_model in (
411
411
  ("FRONTIER", "Claude Fable 5"),
412
- ("HELM", "Claude Opus 4.8"),
412
+ ("HELM", "Claude Opus 5"),
413
413
  ("WORKHORSE", "Claude Sonnet 5"),
414
414
  ("SWEEP", "Claude Haiku 4.5"),
415
415
  ):
@@ -764,6 +764,26 @@ if launcher.is_file() and launch_profile:
764
764
  "project an applied setup (customization must not be silently discarded)"
765
765
  )
766
766
 
767
+ # Version line: version_label reads the deployed version marker
768
+ # ($STATE_DIR/version.json) that install writes from package.json. A
769
+ # present marker yields "agent-bios v<version> · <releaseDate>"; an absent
770
+ # one yields None (uninstalled / dev checkout, so the panel shows no line).
771
+ saved_version_path = launcher_module.VERSION_INFO_PATH
772
+ try:
773
+ version_marker = pathlib.Path(tempfile.mkdtemp()) / "version.json"
774
+ version_marker.write_text('{"version": "9.9.9", "releaseDate": "2026-01-02"}')
775
+ launcher_module.VERSION_INFO_PATH = version_marker
776
+ if launcher_module.version_label() != "agent-bios v9.9.9 · 2026-01-02":
777
+ mark_fail(
778
+ "agent-launch version_label wrong with a marker present: "
779
+ f"{launcher_module.version_label()!r}"
780
+ )
781
+ launcher_module.VERSION_INFO_PATH = version_marker.parent / "absent.json"
782
+ if launcher_module.version_label() is not None:
783
+ mark_fail("agent-launch version_label must be None when the marker is absent")
784
+ finally:
785
+ launcher_module.VERSION_INFO_PATH = saved_version_path
786
+
767
787
  with tempfile.TemporaryDirectory() as raw_tmp:
768
788
  tmp = pathlib.Path(raw_tmp)
769
789
  backend = tmp / "backend"
@@ -806,10 +826,13 @@ if launcher.is_file() and launch_profile:
806
826
  mark_fail(f"fake launch profile did not replace every backend: {fake_commands!r}")
807
827
  fake_profile = pathlib.Path("/nonexistent/unsafe-fixture")
808
828
  env = os.environ.copy()
829
+ version_fixture = tmp / "version.json"
830
+ version_fixture.write_text('{"version": "9.9.9", "releaseDate": "2026-01-02"}')
809
831
  env.update(
810
832
  FAKE_LAUNCH_ARGV=str(argv_log),
811
833
  AGENT_LAUNCH_CONFIG=str(fake_profile),
812
834
  XDG_CACHE_HOME=str(tmp / "cache"),
835
+ AGENT_LAUNCH_VERSION_FILE=str(version_fixture),
813
836
  )
814
837
 
815
838
  pty_env = env.copy()
@@ -974,6 +997,8 @@ if launcher.is_file() and launch_profile:
974
997
  < positions[b"Options ("]
975
998
  ):
976
999
  mark_fail("agent-launch layout is not setup then description then options")
1000
+ if b"agent-bios v9.9.9" not in transcript:
1001
+ mark_fail("agent-launch does not show the deployed version line in the setup panel")
977
1002
 
978
1003
  _, picker_status = run_picker_scenario(
979
1004
  "root escape cancellation",
@@ -476,6 +476,24 @@ cmd_install() {
476
476
  else
477
477
  log "note: corpus-status projection unavailable (versions.json/ledger missing?)"
478
478
  fi
479
+ # Deploy/system version marker for the launcher's TUI version line, read from
480
+ # package.json (version + releaseDate) — distinct from the corpus content
481
+ # version. Best-effort: a failure here never fails the install.
482
+ if [ "$DRY_RUN" != 1 ]; then
483
+ if python3 - "$REPO/package.json" "$STATE_DIR/version.json" <<'PY' 2>/dev/null
484
+ import json, sys
485
+ pkg = json.load(open(sys.argv[1]))
486
+ with open(sys.argv[2], "w") as f:
487
+ json.dump({"version": pkg.get("version"), "releaseDate": pkg.get("releaseDate")}, f)
488
+ f.write("\n")
489
+ PY
490
+ then
491
+ printf '%s\n' "$STATE_DIR/version.json" >> "$MANIFEST"
492
+ info "version marker written ($STATE_DIR/version.json)"
493
+ else
494
+ log "note: version marker not written (package.json unreadable)"
495
+ fi
496
+ fi
479
497
  log ""
480
498
  log "Verifying deployment..."
481
499
  if cmd_verify; then
@@ -12,6 +12,7 @@ from datetime import datetime
12
12
  PRICES = {
13
13
  "claude-fable-5": (10.0, 50.0, 1.00, 12.50, 20.0),
14
14
  "claude-mythos-5": (10.0, 50.0, 1.00, 12.50, 20.0),
15
+ "claude-opus-5": (5.0, 25.0, 0.50, 6.25, 10.0),
15
16
  "claude-opus-4-8": (5.0, 25.0, 0.50, 6.25, 10.0),
16
17
  "claude-opus-4-7": (5.0, 25.0, 0.50, 6.25, 10.0),
17
18
  "claude-opus-4-6": (5.0, 25.0, 0.50, 6.25, 10.0),