@khalilgharbaoui/opencode-claude-code-plugin 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -84,7 +84,7 @@ CI installs and builds on **Node 24** (`.github/workflows/publish.yml`), which i
84
84
 
85
85
  ## Models
86
86
 
87
- The plugin auto-registers the following, and they appear in the model picker with no extra config: Haiku 4.5, Sonnet 4.5/4.6/5, Opus 4.5/4.6/4.7/4.8/5 (plus two fast-mode Opus entries), Fable 5/5.1 and Mythos 5/5.1, each except Haiku carrying `low` / `medium` / `high` / `xhigh` / `max` reasoning variants.
87
+ The plugin auto-registers the following, and they appear in the model picker with no extra config: Haiku 4.5, Sonnet 4.5/4.6/5, Opus 4.5/4.6/4.7/4.8/5/5.5 (plus three fast-mode Opus entries), Fable 5/5.1 and Mythos 5/5.1, each except Haiku carrying `low` / `medium` / `high` / `xhigh` / `max` reasoning variants.
88
88
 
89
89
  | ID | Display name | Context | Output | Reasoning variants | Price × |
90
90
  |---|---|---|---|---|---|
@@ -99,6 +99,8 @@ The plugin auto-registers the following, and they appear in the model picker wit
99
99
  | `claude-opus-4-8-fast` | Claude Opus 4.8 Fast | 1M | 128,000 | low/medium/high/xhigh/max | 10× |
100
100
  | `claude-opus-5` | Claude Opus 5 | 1M | 128,000 | low/medium/high/xhigh/max | 5× |
101
101
  | `claude-opus-5-fast` | Claude Opus 5 Fast | 1M | 128,000 | low/medium/high/xhigh/max | 10× |
102
+ | `claude-opus-5-5` | Claude Opus 5.5 | 1M | 128,000 | low/medium/high/xhigh/max | 4× |
103
+ | `claude-opus-5-5-fast` | Claude Opus 5.5 Fast | 1M | 128,000 | low/medium/high/xhigh/max | 8× |
102
104
  | `claude-fable-5` | Claude Fable 5 | 1M | 128,000 | low/medium/high/xhigh/max | 10× |
103
105
  | `claude-fable-5-1` | Claude Fable 5.1 | 1M | 128,000 | low/medium/high/xhigh/max | 10× |
104
106
  | `claude-mythos-5` | Claude Mythos 5 | 1M | 128,000 | low/medium/high/xhigh/max | 10× |
@@ -108,15 +110,17 @@ The plugin auto-registers the following, and they appear in the model picker wit
108
110
 
109
111
  Capabilities for every model: text + image input, text output, tool use, attachments. No temperature control, no PDF/audio/video, no interleaved streaming.
110
112
 
111
- **Price ×** is each model's per-token list price relative to Haiku, the cheapest model. It's derived exactly from Anthropic's published pricing (input and output ratios both come out the same: Haiku $1/$5 = 1×, Sonnet $3/$15 = 3×, Opus $5/$25 = 5×, Fable/Mythos 5 and 5.1 / Opus fast mode $10/$50 = 10×). So **Fable/Mythos 5 and 5.1, and fast-mode Opus, all cost 2× standard Opus 5**. The same multiplier is shown as a `(N×)` suffix on the display name in opencode's model picker, since opencode has no dedicated multiplier field. On a flat Max/Pro subscription it doubles as a rough guide to how fast each model drains your usage limit.
113
+ **Price ×** is each model's per-token list price relative to Haiku, the cheapest model. It's derived exactly from Anthropic's published pricing (input and output ratios both come out the same: Haiku $1/$5 = 1×, Sonnet $3/$15 = 3×, Opus 5.5 $4/$20 = 4×, Opus $5/$25 = 5×, Opus 5.5 fast mode $8/$40 = 8×, Fable/Mythos 5 and 5.1 / Opus 5 and 4.8 fast mode $10/$50 = 10×). So **Fable/Mythos 5 and 5.1, and fast-mode Opus 5 and 4.8, all cost 2× standard Opus 5**, and fast mode is 2× the standard price on every Opus that offers it. The same multiplier is shown as a `(N×)` suffix on the display name in opencode's model picker, since opencode has no dedicated multiplier field. On a flat Max/Pro subscription it doubles as a rough guide to how fast each model drains your usage limit.
112
114
 
113
115
  Fable 5.1 and Mythos 5.1 keep the same $10/M input and $50/M output rates as 5.0, but cache reads cost $0.25/M instead of $1/M. Their cache-write rate remains $12.50/M.
114
116
 
115
- The model ID is passed straight through to `claude --model`, so anything Claude Code accepts works. The two `-fast` IDs are the one exception, described below.
117
+ Opus 5.5 is priced below the Opus line at $4/M input and $20/M output, with cache writes at $5/M and cache reads at $0.20/M (0.05× input rather than the usual 0.1×). It needs **Claude Code 2.1.280 or newer**: the API rejects it from an older CLI with a 400 naming that floor, which shows up as a failed turn.
118
+
119
+ The model ID is passed straight through to `claude --model`, so anything Claude Code accepts works. The three `-fast` IDs are the one exception, described below.
116
120
 
117
121
  ### Fast mode
118
122
 
119
- `claude-opus-5-fast` and `claude-opus-4-8-fast` run the same models at up to 2.5× the output tokens per second, at 2× the price ($10/M input, $50/M output, the 10× column). Pick them in the model selector like any other model.
123
+ `claude-opus-5-5-fast`, `claude-opus-5-fast` and `claude-opus-4-8-fast` run the same models at up to 2.5× the output tokens per second, at 2× the price ($8/M input, $40/M output for Opus 5.5, the 8× column; $10/M input, $50/M output for Opus 5 and 4.8, the 10× column). Pick them in the model selector like any other model.
120
124
 
121
125
  The `-fast` suffix is this plugin's own marker, not a model name Anthropic serves. The plugin strips it and spawns `claude --model claude-opus-5 --settings '{"fastMode":true}'`, because that settings layer is the only way to opt a headless (`--print`) session into fast mode: there is no `--fast` flag, and the old `claude-opus-4-6-fast` style model names are retired. Requires Claude Code 2.1.220+; below that the plugin skips the opt-in and you get standard speed.
122
126
 
@@ -1214,7 +1218,7 @@ This plugin absorbs work from its forks directly, cherry-picked with the origina
1214
1218
  | [@galvani](https://github.com/galvani) (Jan Kozak) | Per-session working directory for `opencode serve`, so one server spawns each project's `claude` in the right place. Also found the stale `toolCallMap` re-emission three months before it was fixed here. | `9e02ce4`, `2238ed0` |
1215
1219
  | [@HeikoAtGitHub](https://github.com/HeikoAtGitHub) | Stopped sending `AGENTS.md` to the model twice (opencode already forwards it). Independently diagnosed the 5-minute proxy wall. | `25260a4`, `42f426d` |
1216
1220
  | [@bernardofortes](https://github.com/bernardofortes) (Bernardo Fortes) | `idleProcessTimeoutMs`, idle eviction of retained `claude` workers. | `a5f723a` |
1217
- | [@broskees](https://github.com/broskees) (Joseph Roberts) | Task proxy default-on (PR #18), the abort `interrupt` so Esc really stops the CLI, the skill bridge, `task_batch` for concurrent subagents (and the measurement that the CLI serialises MCP calls), the undici 300 s diagnosis of the proxy wall, and the lifecycle release of proxied calls that made the `task` deadline unnecessary (PR #36). | PR #18, `68ed142`, PR #36 |
1221
+ | [@broskees](https://github.com/broskees) (Joseph Roberts) | Task proxy default-on (PR #18), the abort `interrupt` so Esc really stops the CLI, the skill bridge, `task_batch` for concurrent subagents (and the measurement that the CLI serialises MCP calls), the undici 300 s diagnosis of the proxy wall, the lifecycle release of proxied calls that made the `task` deadline unnecessary (PR #36), and Claude Opus 5.5 with its fast-mode entry (PR #43). | PR #18, `68ed142`, PR #36, PR #43 |
1218
1222
  | [@jknlsn](https://github.com/jknlsn) (Jake Nelson) | Per-tool proxy timeouts, subagent dispatch steering, the question proxy, the start watchdog respawn. | `84f3db9`, `94980a6`, `47501d0`, `ffefc24` |
1219
1223
  | [@CollieIsCute](https://github.com/CollieIsCute) (Collie Tsai) | The plan-mode approval bridge. | `8c5b583` |
1220
1224
  | [@flupkede](https://github.com/flupkede) | The compress proxy tool design and the AI-SDK v4 image-part fix. | `4ac319f`, `60a6e9a` |
package/dist/index.js CHANGED
@@ -4856,6 +4856,8 @@ var opusCost = { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 };
4856
4856
  var fableCost = { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 };
4857
4857
  var fable51Cost = { input: 10, output: 50, cacheRead: 0.25, cacheWrite: 12.5 };
4858
4858
  var opusFastCost = { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 };
4859
+ var opus55Cost = { input: 4, output: 20, cacheRead: 0.2, cacheWrite: 5 };
4860
+ var opus55FastCost = { input: 8, output: 40, cacheRead: 0.4, cacheWrite: 10 };
4859
4861
  function toConfigModel(model) {
4860
4862
  const inputMods = [];
4861
4863
  const outputMods = [];
@@ -4982,10 +4984,12 @@ var defaultModels = {
4982
4984
  // `--settings {"fastMode":true}` on the spawn. Retired `-fast` model strings
4983
4985
  // (`claude-opus-4-6-fast`) are a different thing and are not registered here.
4984
4986
  //
4985
- // Only Opus 4.8 and Opus 5 qualify: the CLI gates fast mode on the resolved
4986
- // model name containing `opus-4-8` or `opus-5`, so registering a fast entry
4987
- // for any other model would produce a picker option that silently runs at
4988
- // standard speed while displaying the 10x price.
4987
+ // Only Opus 4.8, Opus 5 and Opus 5.5 qualify: the CLI gates fast mode on
4988
+ // the resolved model name containing `opus-4-8` or `opus-5` (which
4989
+ // `claude-opus-5-5` satisfies too, and 2.1.280's model catalog lists
4990
+ // `fast_mode` for it outright), so registering a fast entry for any other
4991
+ // model would produce a picker option that silently runs at standard speed
4992
+ // while displaying the fast price.
4989
4993
  "claude-opus-4-8-fast": defineModel({
4990
4994
  id: "claude-opus-4-8-fast",
4991
4995
  name: "Claude Opus 4.8 Fast",
@@ -5019,6 +5023,33 @@ var defaultModels = {
5019
5023
  multiplier: 10,
5020
5024
  releaseDate: "2026-07-24"
5021
5025
  }),
5026
+ // Opus 5.5 needs Claude Code 2.1.280+: the API rejects it from an older CLI
5027
+ // with a 400 naming that floor, which the plugin surfaces as a turn error.
5028
+ // Thinking cannot be switched off for it (the CLI's catalog marks it
5029
+ // `rejects_disabled_thinking`); the plugin never asks for that, so nothing
5030
+ // here has to special-case it.
5031
+ "claude-opus-5-5": defineModel({
5032
+ id: "claude-opus-5-5",
5033
+ name: "Claude Opus 5.5",
5034
+ family: "opus",
5035
+ reasoning: true,
5036
+ context: 1e6,
5037
+ output: 128e3,
5038
+ cost: opus55Cost,
5039
+ multiplier: 4,
5040
+ releaseDate: "2026-09-22"
5041
+ }),
5042
+ "claude-opus-5-5-fast": defineModel({
5043
+ id: "claude-opus-5-5-fast",
5044
+ name: "Claude Opus 5.5 Fast",
5045
+ family: "opus",
5046
+ reasoning: true,
5047
+ context: 1e6,
5048
+ output: 128e3,
5049
+ cost: opus55FastCost,
5050
+ multiplier: 8,
5051
+ releaseDate: "2026-09-22"
5052
+ }),
5022
5053
  "claude-fable-5": defineModel({
5023
5054
  id: "claude-fable-5",
5024
5055
  name: "Claude Fable 5",
@@ -6338,14 +6369,14 @@ function reportFastModeState(msg, requested) {
6338
6369
  const reason = msg.fast_mode_disabled_reason;
6339
6370
  if (state === "cooldown") {
6340
6371
  log.notice(
6341
- "fast mode is in cooldown after a rate limit; this turn runs at standard speed and is billed at standard Opus rates, not the 10x shown in the model picker.",
6372
+ "fast mode is in cooldown after a rate limit; this turn runs at standard speed and is billed at standard Opus rates, not the fast price shown in the model picker.",
6342
6373
  { state, reason: reason ?? null }
6343
6374
  );
6344
6375
  return;
6345
6376
  }
6346
6377
  const key = reason ?? "unknown";
6347
6378
  const explanation = reason ? FAST_MODE_REASONS[reason] : void 0;
6348
- const message = `fast mode was requested but is off${explanation ? `: ${explanation}` : reason ? ` (${reason})` : ""}. Turns run at standard speed and are billed at standard Opus rates, not the 10x shown in the model picker. Switch to the non-fast model id to make the picker's price accurate.`;
6379
+ const message = `fast mode was requested but is off${explanation ? `: ${explanation}` : reason ? ` (${reason})` : ""}. Turns run at standard speed and are billed at standard Opus rates, not the fast price shown in the model picker. Switch to the non-fast model id to make the picker's price accurate.`;
6349
6380
  if (warnedFastModeReasons.has(key)) {
6350
6381
  log.debug(message, { state, reason: reason ?? null });
6351
6382
  return;