opencode-cmd-provider 1.6.0 → 1.6.2
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/CHANGELOG.md +91 -0
- package/dist/src/catalog/facts.d.ts +4 -4
- package/dist/src/catalog/facts.js +8 -8
- package/dist/src/catalog/snapshot.js +1 -2
- package/dist/src/deals/catalog.d.ts +1 -1
- package/dist/src/deals/catalog.js +3 -4
- package/dist/src/provider/reasoning.js +7 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,96 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.6.2 - 2026-09-01
|
|
4
|
+
|
|
5
|
+
Patch release. Make the daily catalog-refresh cron self-sustainable against
|
|
6
|
+
upstream data changes (refs issue #89) and ship the 2026-09-01 catalog
|
|
7
|
+
refresh.
|
|
8
|
+
|
|
9
|
+
- **Self-sustainable cron tests** — the daily catalog-refresh cron has been
|
|
10
|
+
failing every day since 2026-08-28 because its shape-pinning tests pinned
|
|
11
|
+
upstream-managed data (deal pcts, benchmark throughput, plan allowances,
|
|
12
|
+
effort-classification lists). Any legitimate upstream change — a deal
|
|
13
|
+
expiring, a benchmark value moving, a free variant being retired — failed
|
|
14
|
+
`npm test` and blocked the refresh PR until a human updated the pins.
|
|
15
|
+
This release separates **shape** from **value** in those tests, so the
|
|
16
|
+
cron can land upstream changes without manual intervention:
|
|
17
|
+
- `tests/refresh-deals.test.ts`: the five real-RSC `modelDealEntry`
|
|
18
|
+
value pins (Gemini 3.7 Flash, Qwen 3.6 Plus, MiniMax M3, DeepSeek V4
|
|
19
|
+
Flash, Laguna) are replaced with nine synthetic-record tests that own
|
|
20
|
+
every value they assert. A companion test exercises the "deal ended"
|
|
21
|
+
case the cron hit on 2026-08-31. The end-to-end real-RSC smoke test
|
|
22
|
+
still runs the parser over every per-plan slug record to catch
|
|
23
|
+
shape/contract regressions, but no longer pins values.
|
|
24
|
+
- `tests/refresh-deals-rsc.test.ts`: the "emitted catalog has parity
|
|
25
|
+
with the shipped catalog" test asserts structural fields (discount
|
|
26
|
+
exists, benchmark exists, allowance has both goat/pro keys,
|
|
27
|
+
peakOffPeak exists) instead of exact MiniMax / Kimi values. Value
|
|
28
|
+
semantics now live in the synthetic `modelDealEntry` tests.
|
|
29
|
+
- `tests/catalog-metadata.test.ts`: `EFFORTS_MODELS` is now derived
|
|
30
|
+
from the auto-generated `MODEL_EFFORTS` (the npm package's
|
|
31
|
+
`models.md` is the source of truth for which models expose effort
|
|
32
|
+
levels), so a new efforts model — like `deepseek/deepseek-v4-flash-fast`
|
|
33
|
+
added 2026-08-31 — lands in `MODEL_EFFORTS` on the next refresh and
|
|
34
|
+
the reasoning-classification test follows automatically. The
|
|
35
|
+
"exactly once" gate becomes a "no model is in both `MODEL_EFFORTS`
|
|
36
|
+
and `REASONING_MODELS`" invariant (a real misclassification signal)
|
|
37
|
+
plus an advisory check that `isReasoningModel` agrees with the
|
|
38
|
+
union and respects `NON_REASONING_MODELS`.
|
|
39
|
+
- `tests/plugin-models.test.ts`: the "free variants get a `(free)`
|
|
40
|
+
suffix" test pins on `poolside/laguna-s-2.1-free` (still in the
|
|
41
|
+
snapshot) instead of the MiniMax name-collision pair retired
|
|
42
|
+
from upstream.
|
|
43
|
+
- `src/provider/reasoning.ts`: drop `minimax/minimax-m3-free` from
|
|
44
|
+
`REASONING_MODELS` — the variant was retired from upstream's
|
|
45
|
+
`models.md` alongside the free model itself, so the entry was stale.
|
|
46
|
+
- **Catalog refresh — 2026-09-01** — snapshot + capability facts +
|
|
47
|
+
RSC fixtures refreshed to current upstream values (see PR #105).
|
|
48
|
+
- **Issue #89** — the broader question of how to lock down shape-pinning
|
|
49
|
+
value pins remains open; this release is the cron-side half of that
|
|
50
|
+
fix. The deals-value-pin half is still tracked in #89.
|
|
51
|
+
|
|
52
|
+
## 1.6.1 - 2026-08-29
|
|
53
|
+
|
|
54
|
+
Patch release. Catalog refresh to `command-code@1.38.1`, one catalog
|
|
55
|
+
classification re-pin, and two CI fixes for the daily catalog-refresh cron.
|
|
56
|
+
|
|
57
|
+
- **Catalog refresh** — snapshot + capability facts + RSC fixtures refreshed
|
|
58
|
+
to `command-code@1.38.1` (was 1.37.0). Net: 30 → 31 effort entries;
|
|
59
|
+
`tencent/hy4-preview` is the new row (Efforts column now lists
|
|
60
|
+
`low, medium, high`, was empty in 1.37.0). The 62 cost rows are unchanged.
|
|
61
|
+
The deals catalog is unaffected (the new model already had its RSC
|
|
62
|
+
availability + deal info in 1.37.0 fixtures). A follow-up 2026-08-29 cron
|
|
63
|
+
re-captured the RSC fixtures and refreshed `src/catalog/facts.ts` to
|
|
64
|
+
upstream's new values.
|
|
65
|
+
- **Catalog classification** — `tencent/hy4-preview` re-pinned to
|
|
66
|
+
`EFFORTS_MODELS` in `src/catalog/facts.ts`; the prior
|
|
67
|
+
`REASONING_MODELS` classification was a labelling error in 1.6.0 (upstream
|
|
68
|
+
advertises it as an effort-controlled model, not a reasoning model). The
|
|
69
|
+
matching unit-test pin was updated in lockstep.
|
|
70
|
+
- **CI: catalog-refresh heredoc** — `realpath` the relative `.ts` path
|
|
71
|
+
before the `npx tsx -e` heredoc in `.github/workflows/catalog-refresh.yml`.
|
|
72
|
+
The `after` loop passed a bare-relative path (e.g. `src/catalog/snapshot.ts`)
|
|
73
|
+
to the heredoc, which Node's ESM resolver parsed as a package name and
|
|
74
|
+
rejected with `ERR_MODULE_NOT_FOUND`. The `before` loop was unaffected
|
|
75
|
+
because it used `/tmp/...` absolute paths. Locked down with
|
|
76
|
+
`tests/catalog-refresh-extract.test.ts`.
|
|
77
|
+
- **CI: catalog-refresh push** — force-push the `catalog-refresh/${date}`
|
|
78
|
+
branch in `.github/workflows/catalog-refresh.yml`. Two consecutive cron
|
|
79
|
+
runs on the same day land sibling commits on `main`'s HEAD; `git push -u`
|
|
80
|
+
then rejects as non-fast-forward, leaving the cron stuck. `-fu` handles
|
|
81
|
+
both the partial-failure rerun and the fresh-branch case; the branch is
|
|
82
|
+
owned only by this workflow, so there's no clobber risk. The
|
|
83
|
+
`Open PR` step's `gh pr list --head X` already copes correctly with a
|
|
84
|
+
force-pushed tip. Locked down with
|
|
85
|
+
`tests/catalog-refresh-push.test.ts`.
|
|
86
|
+
- **Test fix for the push test** — `tests/catalog-refresh-push.test.ts`'s
|
|
87
|
+
verification `git ls-remote` previously ran from the outer project
|
|
88
|
+
CWD, so it resolved `origin` to GitHub rather than the test's local
|
|
89
|
+
bare remote. It passed only on the day the matching
|
|
90
|
+
`catalog-refresh/${date}` branch happened to exist on GitHub. Now
|
|
91
|
+
passes `-C repo.work` so the `origin` resolution is scoped to the
|
|
92
|
+
test fixture.
|
|
93
|
+
|
|
3
94
|
## 1.6.0 - 2026-08-28
|
|
4
95
|
|
|
5
96
|
### Deals pipeline: RSC-primary + daily catalog refresh cron
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare const FACTS_SOURCE_URL = "https://unpkg.com/command-code@1.
|
|
2
|
-
export declare const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.
|
|
3
|
-
export declare const FACTS_PACKAGE_VERSION = "1.
|
|
4
|
-
export declare const FACTS_LAST_REFRESHED = "2026-
|
|
1
|
+
export declare const FACTS_SOURCE_URL = "https://unpkg.com/command-code@1.39.2/dist/bundled/command-code-knowledge/reference/models.md";
|
|
2
|
+
export declare const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.39.2/dist/cli.mjs";
|
|
3
|
+
export declare const FACTS_PACKAGE_VERSION = "1.39.2";
|
|
4
|
+
export declare const FACTS_LAST_REFRESHED = "2026-09-01";
|
|
5
5
|
export declare const MODEL_EFFORTS: Readonly<Record<string, readonly string[]>>;
|
|
6
6
|
export declare const MODEL_COSTS: Readonly<Record<string, {
|
|
7
7
|
input: number;
|
|
@@ -4,20 +4,22 @@
|
|
|
4
4
|
// command-code npm package's bundled model catalog (models.md), plus input
|
|
5
5
|
// modalities parsed from its CLI bundle (dist/cli.mjs). Regenerate
|
|
6
6
|
// with `npm run refresh:snapshot`.
|
|
7
|
-
export const FACTS_SOURCE_URL = "https://unpkg.com/command-code@1.
|
|
8
|
-
export const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.
|
|
9
|
-
export const FACTS_PACKAGE_VERSION = "1.
|
|
10
|
-
export const FACTS_LAST_REFRESHED = "2026-
|
|
7
|
+
export const FACTS_SOURCE_URL = "https://unpkg.com/command-code@1.39.2/dist/bundled/command-code-knowledge/reference/models.md";
|
|
8
|
+
export const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.39.2/dist/cli.mjs";
|
|
9
|
+
export const FACTS_PACKAGE_VERSION = "1.39.2";
|
|
10
|
+
export const FACTS_LAST_REFRESHED = "2026-09-01";
|
|
11
11
|
export const MODEL_EFFORTS = {
|
|
12
12
|
"deepseek/deepseek-v4-pro": ["high", "max"],
|
|
13
13
|
"deepseek/deepseek-v4-flash": ["high", "max"],
|
|
14
14
|
"deepseek/deepseek-v4-flash-vision-exp": ["high", "max"],
|
|
15
|
+
"deepseek/deepseek-v4-flash-fast": ["low", "high", "max"],
|
|
15
16
|
"z-ai/glm-5.3-flash": ["low", "high", "max"],
|
|
16
17
|
"zai-org/GLM-5.3": ["low", "high", "max"],
|
|
17
18
|
"zai-org/GLM-5.2": ["high", "max"],
|
|
18
19
|
"Qwen/Qwen3.8-Max": ["low", "medium", "xhigh"],
|
|
19
20
|
"Qwen/Qwen3.8-27B": ["low", "medium", "xhigh"],
|
|
20
21
|
"Qwen/Qwen3.8-Flash": ["low", "medium", "xhigh"],
|
|
22
|
+
"tencent/hy4-preview": ["low", "medium", "high"],
|
|
21
23
|
"claude-sonnet-5": ["low", "medium", "high", "xhigh", "max"],
|
|
22
24
|
"claude-sonnet-4-6": ["low", "medium", "high", "xhigh", "max"],
|
|
23
25
|
"claude-fable-5": ["low", "medium", "high", "xhigh", "max"],
|
|
@@ -44,6 +46,7 @@ export const MODEL_COSTS = {
|
|
|
44
46
|
"deepseek/deepseek-v4-pro": { input: 0.66, output: 1.98, cacheRead: 0.022, cacheWrite: 0 },
|
|
45
47
|
"deepseek/deepseek-v4-flash": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
|
|
46
48
|
"deepseek/deepseek-v4-flash-vision-exp": { input: 0.22, output: 0.66, cacheRead: 0.007, cacheWrite: 0 },
|
|
49
|
+
"deepseek/deepseek-v4-flash-fast": { input: 0.28, output: 0.56, cacheRead: 0.07, cacheWrite: 0 },
|
|
47
50
|
"moonshotai/Kimi-K3": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
|
|
48
51
|
"moonshotai/Kimi-K2.7-Code": { input: 0.95, output: 4, cacheRead: 0.19, cacheWrite: 0 },
|
|
49
52
|
"moonshotai/Kimi-K2.7-Code-Highspeed": { input: 1.9, output: 8, cacheRead: 0.38, cacheWrite: 0 },
|
|
@@ -57,8 +60,6 @@ export const MODEL_COSTS = {
|
|
|
57
60
|
"zai-org/GLM-5": { input: 1, output: 3.2, cacheRead: 0.2, cacheWrite: 0 },
|
|
58
61
|
"MiniMaxAI/MiniMax-M3": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
|
|
59
62
|
"MiniMaxAI/MiniMax-M2.7": { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0 },
|
|
60
|
-
"minimax/minimax-m3-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
61
|
-
"minimax/minimax-m2.7-free": { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
62
63
|
"MiniMaxAI/MiniMax-M2.5": { input: 0.3, output: 1.2, cacheRead: 0.03, cacheWrite: 0 },
|
|
63
64
|
"xiaomi/mimo-v2.5-pro": { input: 0.435, output: 0.87, cacheRead: 0.0036, cacheWrite: 0 },
|
|
64
65
|
"xiaomi/mimo-v2.5": { input: 0.14, output: 0.28, cacheRead: 0.0028, cacheWrite: 0 },
|
|
@@ -92,7 +93,7 @@ export const MODEL_COSTS = {
|
|
|
92
93
|
"gpt-5.4": { input: 2.5, output: 15, cacheRead: 0.25, cacheWrite: 0 },
|
|
93
94
|
"gpt-5.3-codex": { input: 2, output: 8, cacheRead: 0.5, cacheWrite: 0 },
|
|
94
95
|
"gpt-5.4-mini": { input: 0.75, output: 4.5, cacheRead: 0.075, cacheWrite: 0 },
|
|
95
|
-
"google/gemini-3.7-flash": { input:
|
|
96
|
+
"google/gemini-3.7-flash": { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0.08334 },
|
|
96
97
|
"google/gemini-3.6-flash": { input: 1.5, output: 7.5, cacheRead: 0.15, cacheWrite: 0 },
|
|
97
98
|
"google/gemini-3.5-flash": { input: 1.5, output: 9, cacheRead: 0.15, cacheWrite: 0 },
|
|
98
99
|
"google/gemini-3.5-flash-lite": { input: 0.3, output: 2.5, cacheRead: 0.03, cacheWrite: 0 },
|
|
@@ -135,7 +136,6 @@ export const MODEL_INPUT_MODALITIES = {
|
|
|
135
136
|
"meta/muse-spark-1.1": ["text", "image"],
|
|
136
137
|
"meta/muse-spark-1.2": ["text", "image"],
|
|
137
138
|
"meta/muse-spark-1.2-contributor": ["text", "image"],
|
|
138
|
-
"minimax/minimax-m3-free": ["text", "image"],
|
|
139
139
|
"moonshotai/Kimi-K2.5": ["text", "image"],
|
|
140
140
|
"moonshotai/Kimi-K2.6": ["text", "image"],
|
|
141
141
|
"moonshotai/Kimi-K2.7-Code": ["text", "image"],
|
|
@@ -21,6 +21,7 @@ export const MODEL_SNAPSHOT = [
|
|
|
21
21
|
{ id: "deepseek/deepseek-v4-pro", name: "DeepSeek V4 Pro (latest)", contextLength: 1000000 },
|
|
22
22
|
{ id: "deepseek/deepseek-v4-flash", name: "DeepSeek V4 Flash (latest)", contextLength: 1000000 },
|
|
23
23
|
{ id: "deepseek/deepseek-v4-flash-vision-exp", name: "DeepSeek V4 Flash Vision (exp)", contextLength: 1000000 },
|
|
24
|
+
{ id: "deepseek/deepseek-v4-flash-fast", name: "DeepSeek V4 Flash Fast", contextLength: 1000000 },
|
|
24
25
|
{ id: "moonshotai/Kimi-K3", name: "Kimi K3", contextLength: 1000000 },
|
|
25
26
|
{ id: "moonshotai/Kimi-K2.7-Code", name: "Kimi K2.7 Code", contextLength: 256000 },
|
|
26
27
|
{ id: "moonshotai/Kimi-K2.7-Code-Highspeed", name: "Kimi K2.7 Code HighSpeed", contextLength: 262000 },
|
|
@@ -34,8 +35,6 @@ export const MODEL_SNAPSHOT = [
|
|
|
34
35
|
{ id: "zai-org/GLM-5", name: "GLM-5", contextLength: 200000 },
|
|
35
36
|
{ id: "MiniMaxAI/MiniMax-M3", name: "MiniMax M3", contextLength: 1000000 },
|
|
36
37
|
{ id: "MiniMaxAI/MiniMax-M2.7", name: "MiniMax M2.7", contextLength: 200000 },
|
|
37
|
-
{ id: "minimax/minimax-m3-free", name: "MiniMax M3", contextLength: 1000000 },
|
|
38
|
-
{ id: "minimax/minimax-m2.7-free", name: "MiniMax M2.7", contextLength: 197000 },
|
|
39
38
|
{ id: "MiniMaxAI/MiniMax-M2.5", name: "MiniMax M2.5", contextLength: 200000 },
|
|
40
39
|
{ id: "xiaomi/mimo-v2.5-pro", name: "MiMo V2.5 Pro", contextLength: 1000000 },
|
|
41
40
|
{ id: "xiaomi/mimo-v2.5", name: "MiMo V2.5", contextLength: 1000000 },
|
|
@@ -51,5 +51,5 @@ export interface ModelDeals {
|
|
|
51
51
|
export declare const MODEL_DEALS: Readonly<Record<string, ModelDeals>>;
|
|
52
52
|
export declare const PLAN_CATALOG: Readonly<Record<PlanId, PlanInfo>>;
|
|
53
53
|
export declare const DEAL_SOURCE_URL = "https://commandcode.ai/docs/resources/pricing-limits";
|
|
54
|
-
export declare const DEAL_LAST_REFRESHED = "2026-
|
|
54
|
+
export declare const DEAL_LAST_REFRESHED = "2026-09-01";
|
|
55
55
|
export declare const DEAL_PACKAGE_VERSION = "docs";
|
|
@@ -13,13 +13,14 @@ export const MODEL_DEALS = {
|
|
|
13
13
|
"claude-sonnet-4-6": { tier: "premium", benchmark: { "intelligence": 48.4 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
14
14
|
"claude-sonnet-5": { tier: "premium", benchmark: { "intelligence": 55.3, "tokPerSec": 89.6 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
15
15
|
"deepseek/deepseek-v4-flash": { tier: "opensource", benchmark: { "intelligence": 51.8, "tokPerSec": 129 }, peakOffPeak: { "peak": { "input": 0.44, "output": 1.32, "cacheRead": 0.014, "cacheWrite": 0 }, "offPeak": { "input": 0.22, "output": 0.66, "cacheRead": 0.007, "cacheWrite": 0 }, "windows": "01–04 & 06–10 UTC" }, free: false, allowance: { "goat": 60, "pro": 70 } },
|
|
16
|
+
"deepseek/deepseek-v4-flash-fast": { tier: "opensource", free: false, allowance: { "goat": 20, "pro": 30 } },
|
|
16
17
|
"deepseek/deepseek-v4-flash-vision-exp": { tier: "opensource", peakOffPeak: { "peak": { "input": 0.44, "output": 1.32, "cacheRead": 0.014, "cacheWrite": 0 }, "offPeak": { "input": 0.22, "output": 0.66, "cacheRead": 0.007, "cacheWrite": 0 }, "windows": "01–04 & 06–10 UTC" }, free: false, allowance: { "goat": 20, "pro": 30 } },
|
|
17
18
|
"deepseek/deepseek-v4-pro": { tier: "opensource", benchmark: { "intelligence": 53.2, "tokPerSec": 61 }, peakOffPeak: { "peak": { "input": 1.32, "output": 3.96, "cacheRead": 0.044, "cacheWrite": 0 }, "offPeak": { "input": 0.66, "output": 1.98, "cacheRead": 0.022, "cacheWrite": 0 }, "windows": "01–04 & 06–10 UTC" }, free: false, allowance: { "goat": 20, "pro": 30 } },
|
|
18
19
|
"google/gemini-3.1-flash-lite": { tier: "premium", benchmark: { "intelligence": 25.6 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
19
20
|
"google/gemini-3.5-flash": { tier: "premium", benchmark: { "intelligence": 52 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
20
21
|
"google/gemini-3.5-flash-lite": { tier: "premium", benchmark: { "intelligence": 37.4, "tokPerSec": 368.8 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
21
22
|
"google/gemini-3.6-flash": { tier: "premium", benchmark: { "intelligence": 51.6, "tokPerSec": 197.3 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
22
|
-
"google/gemini-3.7-flash": { tier: "opensource",
|
|
23
|
+
"google/gemini-3.7-flash": { tier: "opensource", benchmark: { "intelligence": 56, "tokPerSec": 365.9 }, free: false, allowance: { "goat": 40, "pro": 50 } },
|
|
23
24
|
"gpt-5.3-codex": { tier: "premium", benchmark: { "intelligence": 45.5, "tokPerSec": 121.4 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
24
25
|
"gpt-5.4": { tier: "premium", benchmark: { "intelligence": 53.1 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
25
26
|
"gpt-5.4-mini": { tier: "premium", benchmark: { "intelligence": 40.9 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
@@ -30,8 +31,6 @@ export const MODEL_DEALS = {
|
|
|
30
31
|
"meta/muse-spark-1.1": { tier: "premium", benchmark: { "intelligence": 53.2 }, free: false, allowance: { "goat": 20, "pro": 20 } },
|
|
31
32
|
"meta/muse-spark-1.2": { tier: "opensource", benchmark: { "intelligence": 56.8 }, free: false, allowance: { "goat": 20, "pro": 30 } },
|
|
32
33
|
"meta/muse-spark-1.2-contributor": { tier: "opensource", benchmark: { "intelligence": 56.8 }, free: false, allowance: { "goat": 20, "pro": 30 } },
|
|
33
|
-
"minimax/minimax-m2.7-free": { tier: "opensource", free: true, benchmark: { "intelligence": 38.9 } },
|
|
34
|
-
"minimax/minimax-m3-free": { tier: "opensource", free: true, benchmark: { "intelligence": 45.4 } },
|
|
35
34
|
"MiniMaxAI/MiniMax-M2.5": { tier: "opensource", benchmark: { "intelligence": 34.5 }, free: false, allowance: { "goat": 20, "pro": 30 } },
|
|
36
35
|
"MiniMaxAI/MiniMax-M2.7": { tier: "opensource", benchmark: { "intelligence": 38.9 }, free: false, allowance: { "goat": 20, "pro": 30 } },
|
|
37
36
|
"MiniMaxAI/MiniMax-M3": { tier: "opensource", discount: { "pct": 50 }, was: { "input": 0.6, "output": 2.4, "cacheRead": 0.12 }, now: { "input": 0.3, "output": 1.2, "cacheRead": 0.06 }, benchmark: { "intelligence": 45.4, "tokPerSec": 111.3 }, free: false, allowance: { "goat": 47, "pro": 57 } },
|
|
@@ -78,5 +77,5 @@ export const PLAN_CATALOG = {
|
|
|
78
77
|
provider: { price: 15, credits: 0, window5h: 0, windowWeek: 0, display: "Provider" },
|
|
79
78
|
};
|
|
80
79
|
export const DEAL_SOURCE_URL = "https://commandcode.ai/docs/resources/pricing-limits";
|
|
81
|
-
export const DEAL_LAST_REFRESHED = "2026-
|
|
80
|
+
export const DEAL_LAST_REFRESHED = "2026-09-01";
|
|
82
81
|
export const DEAL_PACKAGE_VERSION = "docs";
|
|
@@ -29,7 +29,6 @@ export const REASONING_MODELS = new Set([
|
|
|
29
29
|
"meta/muse-spark-1.1",
|
|
30
30
|
"meta/muse-spark-1.2",
|
|
31
31
|
"meta/muse-spark-1.2-contributor",
|
|
32
|
-
"minimax/minimax-m3-free",
|
|
33
32
|
"moonshotai/Kimi-K2.7-Code",
|
|
34
33
|
"moonshotai/Kimi-K2.7-Code-Highspeed",
|
|
35
34
|
"moonshotai/Kimi-K3",
|
|
@@ -37,8 +36,13 @@ export const REASONING_MODELS = new Set([
|
|
|
37
36
|
"poolside/laguna-s-2.1-free",
|
|
38
37
|
"stepfun/Step-3.7-Flash",
|
|
39
38
|
"tencent/hy3-paid",
|
|
40
|
-
//
|
|
41
|
-
|
|
39
|
+
// tencent/hy4-preview is reasoning-capable with explicit efforts
|
|
40
|
+
// (models.md lists `low, medium, high` since command-code@1.38.0,
|
|
41
|
+
// 2026-08-28) — it belongs in MODEL_EFFORTS, not here. Keeping it here
|
|
42
|
+
// would leave a snapshot model classified in both REASONING_MODELS and
|
|
43
|
+
// MODEL_EFFORTS, which breaks the dedicated
|
|
44
|
+
// `tencent/hy4-preview is an efforts model` pin in
|
|
45
|
+
// tests/catalog-metadata.test.ts.
|
|
42
46
|
"thinkingmachines/inkling",
|
|
43
47
|
"thinkingmachines/inkling-small",
|
|
44
48
|
]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-cmd-provider",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "Command Code provider + plugin for opencode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"refresh:deals": "node scripts/refresh-deals.mjs",
|
|
23
23
|
"refresh": "npm run refresh:snapshot && npm run refresh:fixtures && npm run refresh:deals -- --fixtures",
|
|
24
24
|
"test": "npm run typecheck && npm run test:unit && npm run test:integration && npm run test:contract && npm run format:check",
|
|
25
|
-
"test:unit": "tsx tests/env.test.ts && tsx tests/auth-key.test.ts && tsx tests/converters.test.ts && tsx tests/stream.test.ts && tsx tests/provider-codecs.test.ts && tsx tests/provider-transport.test.ts && tsx tests/provider-parity.test.ts && tsx tests/provider-upgrade-fallback.test.ts && tsx tests/provider-zdr.test.ts && tsx tests/redact.test.ts && tsx tests/cost.test.ts && tsx tests/retry.test.ts && tsx tests/reasoning.test.ts && tsx tests/modalities.test.ts && tsx tests/snapshot.test.ts && tsx tests/refresh-snapshot.test.ts && tsx tests/oauth.test.ts && tsx tests/auth-mirror.test.ts && tsx tests/parse-facts.test.ts && tsx tests/parse-modalities.test.ts && tsx tests/catalog-metadata.test.ts && tsx tests/plugin-models.test.ts && tsx tests/vendor.test.ts && tsx tests/deals-enrichment.test.ts && tsx tests/deals-coverage.test.ts && tsx tests/plan-summary.test.ts && tsx tests/html-tables.test.ts && tsx tests/parse-docs.test.ts && tsx tests/parse-rsc.test.ts && tsx tests/mock-cc-rsc.test.ts && tsx tests/capture-rsc-fixtures.test.ts && tsx tests/refresh-deals.test.ts && tsx tests/refresh-deals-rsc.test.ts && tsx tests/tier-overrides.test.ts && tsx tests/tui-deals-panel.test.ts && tsx tests/diff-catalog.test.ts && tsx tests/plugin-install.test.ts",
|
|
25
|
+
"test:unit": "tsx tests/env.test.ts && tsx tests/auth-key.test.ts && tsx tests/converters.test.ts && tsx tests/stream.test.ts && tsx tests/provider-codecs.test.ts && tsx tests/provider-transport.test.ts && tsx tests/provider-parity.test.ts && tsx tests/provider-upgrade-fallback.test.ts && tsx tests/provider-zdr.test.ts && tsx tests/redact.test.ts && tsx tests/cost.test.ts && tsx tests/retry.test.ts && tsx tests/reasoning.test.ts && tsx tests/modalities.test.ts && tsx tests/snapshot.test.ts && tsx tests/refresh-snapshot.test.ts && tsx tests/oauth.test.ts && tsx tests/auth-mirror.test.ts && tsx tests/parse-facts.test.ts && tsx tests/parse-modalities.test.ts && tsx tests/catalog-metadata.test.ts && tsx tests/plugin-models.test.ts && tsx tests/vendor.test.ts && tsx tests/deals-enrichment.test.ts && tsx tests/deals-coverage.test.ts && tsx tests/plan-summary.test.ts && tsx tests/html-tables.test.ts && tsx tests/parse-docs.test.ts && tsx tests/parse-rsc.test.ts && tsx tests/mock-cc-rsc.test.ts && tsx tests/capture-rsc-fixtures.test.ts && tsx tests/refresh-deals.test.ts && tsx tests/refresh-deals-rsc.test.ts && tsx tests/tier-overrides.test.ts && tsx tests/tui-deals-panel.test.ts && tsx tests/diff-catalog.test.ts && tsx tests/catalog-refresh-extract.test.ts && tsx tests/catalog-refresh-push.test.ts && tsx tests/plugin-install.test.ts",
|
|
26
26
|
"test:integration": "tsx tests/integration-do-stream.test.ts && tsx tests/integration-do-generate.test.ts",
|
|
27
27
|
"test:contract": "tsx tests/contract.test.ts",
|
|
28
28
|
"test:e2e": "node tests/e2e-opencode.mjs",
|