@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 +9 -5
- package/dist/index.js +37 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/claude-code-plugin/SKILL.md +7 -3
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
|
4986
|
-
// model name containing `opus-4-8` or `opus-5
|
|
4987
|
-
//
|
|
4988
|
-
//
|
|
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
|
|
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
|
|
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;
|