opencode-cmd-provider 1.6.3 → 1.6.5

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 CHANGED
@@ -1,3 +1,37 @@
1
+ ## 1.6.5 - 2026-09-04
2
+
3
+ Automated catalog refresh.
4
+
5
+ ## 1.6.4 - 2026-09-03
6
+
7
+ ### Model catalog
8
+
9
+ ## Model catalog
10
+
11
+ - **FACTS_LAST_REFRESHED**: `2026-09-02` → `2026-09-03`
12
+
13
+ | Model | Change | Before | After |
14
+ | --------------------------------- | ------- | ------ | ------------------------ |
15
+ | `meta/muse-spark-1.1` | efforts | — | low, medium, high, xhigh |
16
+ | `meta/muse-spark-1.2` | efforts | — | low, medium, high, xhigh |
17
+ | `meta/muse-spark-1.2-contributor` | efforts | — | low, medium, high, xhigh |
18
+ | `meta/muse-spark-1.3` | efforts | — | low, medium, high, xhigh |
19
+ | `meta/muse-spark-1.3-contributor` | efforts | — | low, medium, high, xhigh |
20
+
21
+ ### Reasoning classification
22
+
23
+ ## Reasoning classification
24
+
25
+ - **CLASSIFICATION_LAST_REFRESHED**: `2026-09-02` → `2026-09-03`
26
+
27
+ | Model | Change | Before | After |
28
+ | --------------------------------- | -------------- | ------------------------- | ---------------------------------------- |
29
+ | `meta/muse-spark-1.1` | classification | reasoning-without-efforts | efforts model (low, medium, high, xhigh) |
30
+ | `meta/muse-spark-1.2` | classification | reasoning-without-efforts | efforts model (low, medium, high, xhigh) |
31
+ | `meta/muse-spark-1.2-contributor` | classification | reasoning-without-efforts | efforts model (low, medium, high, xhigh) |
32
+ | `meta/muse-spark-1.3` | classification | reasoning-without-efforts | efforts model (low, medium, high, xhigh) |
33
+ | `meta/muse-spark-1.3-contributor` | classification | reasoning-without-efforts | efforts model (low, medium, high, xhigh) |
34
+
1
35
  ## 1.6.3 - 2026-09-02
2
36
 
3
37
  ### Model catalog
package/README.md CHANGED
@@ -13,12 +13,17 @@ A provider and plugin for [OpenCode](https://opencode.ai) that connects to the [
13
13
  opencode plugin opencode-cmd-provider
14
14
  ```
15
15
 
16
- Update an existing install:
16
+ Update an existing install — OpenCode caches the plugin package and reuses it
17
+ on every startup without checking for a newer version, so updating means
18
+ deleting the cache:
17
19
 
18
20
  ```sh
19
- opencode plugin opencode-cmd-provider --force
21
+ rm -rf ~/.cache/opencode/packages/opencode-cmd-provider*
20
22
  ```
21
23
 
24
+ Restart OpenCode afterwards. The plugin is re-downloaded, so that first launch
25
+ takes a little longer than usual; subsequent startups are fast again.
26
+
22
27
  Install globally (available in every project):
23
28
 
24
29
  ```sh
@@ -117,7 +122,9 @@ Delivery is zero-step: the package exports both a `server` and a `tui` target
117
122
  opencode-cmd-provider` writes both `opencode.json(c)` and `tui.json` from one
118
123
  spec. The sidebar is a TUI plugin loaded from `tui.json` — which is why
119
124
  installs made before the `./tui` export only wrote the server target and never
120
- showed a sidebar. Re-run with `--force` to add `tui.json`.
125
+ showed a sidebar. Re-run `opencode plugin opencode-cmd-provider --force` to add
126
+ `tui.json` (this only rewrites the config entry — see
127
+ [Update and remove](#update-and-remove) for refreshing the cached package).
121
128
 
122
129
  When the Deals catalog is empty (the upstream fetch failed or the RSC shape
123
130
  changed), the feature degrades visibly rather than silently: the sidebar shows
@@ -135,7 +142,9 @@ paid model (e.g. the MiniMax M3 free tier) get a `(free)` suffix —
135
142
  `[CMD] MiniMax M3 (free)` — so the two are distinguishable in the model
136
143
  picker. The suffix is derived from the bundled pricing table: a model is
137
144
  labeled free only when the catalog carries an explicit zero-cost entry. Model
138
- availability changes when the package is updated. You can still declare your
145
+ availability changes when the package is updated but note that OpenCode's
146
+ plugin cache can hold a stale copy after a release if new models don't appear
147
+ (see [Update and remove](#update-and-remove)). You can still declare your
139
148
  own `provider.commandcode` entry; your declarations always win and the
140
149
  snapshot fills in only what's missing (`whitelist`/`blacklist` on a declared
141
150
  entry filter the auto-registered models too).
@@ -232,7 +241,37 @@ Models missing from that table display zero cost in OpenCode. This does **not**
232
241
 
233
242
  ## Update and remove
234
243
 
235
- Update the installed package, or remove it from the `plugin` array in your `opencode.json` (the auto-registered `provider.commandcode` entry is injected by the plugin, so there is no config block to remove). The npm package is cached under OpenCode's plugin cache (`~/.cache/opencode/packages/`); remove the cached directory to fully uninstall.
244
+ ### Updating
245
+
246
+ OpenCode caches the plugin package (`~/.cache/opencode/packages/`) and reuses
247
+ the cached copy on every startup without checking for a newer version — so a
248
+ new release won't appear until you delete the cache:
249
+
250
+ ```sh
251
+ rm -rf ~/.cache/opencode/packages/opencode-cmd-provider*
252
+ ```
253
+
254
+ Then restart OpenCode. The plugin is re-downloaded, so that first launch takes
255
+ a little longer than usual; subsequent startups are fast again. If new Command
256
+ Code models stop appearing in `/models` after a release, a stale cache entry is
257
+ the most likely cause.
258
+
259
+ - **OpenChamber users:** click **Reload OpenCode** in OpenChamber's settings
260
+ instead of restarting manually — the running OpenCode server keeps the old
261
+ plugin loaded until it is restarted.
262
+ - **No re-authentication needed.** Your API key is stored by OpenCode's
263
+ `/connect` flow in OpenCode's auth store (and mirrored to
264
+ `~/.commandcode/auth.json`), not inside the plugin package — the plugin reads
265
+ it from there (or the `COMMANDCODE_API_KEY` env var) at request time, so
266
+ deleting the plugin cache does not affect your login.
267
+
268
+ ### Removing
269
+
270
+ Remove it from the `plugin` array in your `opencode.json` (the auto-registered
271
+ `provider.commandcode` entry is injected by the plugin, so there is no config
272
+ block to remove). The npm package is cached under OpenCode's plugin cache
273
+ (`~/.cache/opencode/packages/`); remove the cached directory to fully
274
+ uninstall.
236
275
 
237
276
  ## Development
238
277
 
@@ -1,5 +1,5 @@
1
1
  export declare const CLASSIFICATION_SOURCE_URLS: ReadonlyArray<string>;
2
- export declare const CLASSIFICATION_LAST_REFRESHED = "2026-09-02";
2
+ export declare const CLASSIFICATION_LAST_REFRESHED = "2026-09-04";
3
3
  export declare const CLASSIFICATION_OVERRIDES: Readonly<Record<string, {
4
4
  capability: boolean;
5
5
  justification: string;
@@ -13,7 +13,7 @@ export const CLASSIFICATION_SOURCE_URLS = [
13
13
  "https://commandcode.ai/docs/plans/goat",
14
14
  "https://commandcode.ai/docs/plans/pro",
15
15
  ];
16
- export const CLASSIFICATION_LAST_REFRESHED = "2026-09-02";
16
+ export const CLASSIFICATION_LAST_REFRESHED = "2026-09-04";
17
17
  // Active capability overrides. Empty = upstream data is truth.
18
18
  // Every entry requires a written justification naming the upstream
19
19
  // disagreement; entries are rendered into the refresh PR body.
@@ -1,7 +1,7 @@
1
- export declare const FACTS_SOURCE_URL = "https://unpkg.com/command-code@1.44.0/dist/bundled/command-code-knowledge/reference/models.md";
2
- export declare const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.44.0/dist/cli.mjs";
3
- export declare const FACTS_PACKAGE_VERSION = "1.44.0";
4
- export declare const FACTS_LAST_REFRESHED = "2026-09-02";
1
+ export declare const FACTS_SOURCE_URL = "https://unpkg.com/command-code@1.47.0/dist/bundled/command-code-knowledge/reference/models.md";
2
+ export declare const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.47.0/dist/cli.mjs";
3
+ export declare const FACTS_PACKAGE_VERSION = "1.47.0";
4
+ export declare const FACTS_LAST_REFRESHED = "2026-09-04";
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,10 +4,10 @@
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.44.0/dist/bundled/command-code-knowledge/reference/models.md";
8
- export const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.44.0/dist/cli.mjs";
9
- export const FACTS_PACKAGE_VERSION = "1.44.0";
10
- export const FACTS_LAST_REFRESHED = "2026-09-02";
7
+ export const FACTS_SOURCE_URL = "https://unpkg.com/command-code@1.47.0/dist/bundled/command-code-knowledge/reference/models.md";
8
+ export const MODALITIES_SOURCE_URL = "https://unpkg.com/command-code@1.47.0/dist/cli.mjs";
9
+ export const FACTS_PACKAGE_VERSION = "1.47.0";
10
+ export const FACTS_LAST_REFRESHED = "2026-09-04";
11
11
  export const MODEL_EFFORTS = {
12
12
  "deepseek/deepseek-v4-pro": ["high", "max"],
13
13
  "deepseek/deepseek-v4-flash": ["high", "max"],
@@ -43,6 +43,11 @@ export const MODEL_EFFORTS = {
43
43
  "google/gemini-3.5-flash-lite": ["low", "medium", "high"],
44
44
  "google/gemini-3.1-flash-lite": ["low", "medium", "high"],
45
45
  "sakana/fugu-ultra": ["high", "xhigh"],
46
+ "meta/muse-spark-1.1": ["low", "medium", "high", "xhigh"],
47
+ "meta/muse-spark-1.2": ["low", "medium", "high", "xhigh"],
48
+ "meta/muse-spark-1.2-contributor": ["low", "medium", "high", "xhigh"],
49
+ "meta/muse-spark-1.3": ["low", "medium", "high", "xhigh"],
50
+ "meta/muse-spark-1.3-contributor": ["low", "medium", "high", "xhigh"],
46
51
  "xai/grok-4.5": ["low", "medium", "high"],
47
52
  "xai/grok-4.6": ["low", "medium", "high", "xhigh"],
48
53
  };
@@ -161,6 +166,7 @@ export const MODEL_INPUT_MODALITIES = {
161
166
  "thinkingmachines/inkling": ["text", "image"],
162
167
  "thinkingmachines/inkling-small": ["text", "image"],
163
168
  "xai/grok-4.5": ["text", "image"],
169
+ "xai/grok-4.6": ["text", "image"],
164
170
  "xiaomi/mimo-v2.5": ["text", "image"],
165
171
  "z-ai/glm-5.3-flash": ["text", "image"],
166
172
  };
@@ -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-09-02";
54
+ export declare const DEAL_LAST_REFRESHED = "2026-09-04";
55
55
  export declare const DEAL_PACKAGE_VERSION = "docs";
@@ -83,5 +83,5 @@ export const PLAN_CATALOG = {
83
83
  provider: { price: 15, credits: 0, window5h: 0, windowWeek: 0, display: "Provider" },
84
84
  };
85
85
  export const DEAL_SOURCE_URL = "https://commandcode.ai/docs/resources/pricing-limits";
86
- export const DEAL_LAST_REFRESHED = "2026-09-02";
86
+ export const DEAL_LAST_REFRESHED = "2026-09-04";
87
87
  export const DEAL_PACKAGE_VERSION = "docs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-cmd-provider",
3
- "version": "1.6.3",
3
+ "version": "1.6.5",
4
4
  "description": "Command Code provider + plugin for opencode",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -23,7 +23,7 @@
23
23
  "refresh:classification": "node scripts/refresh-classification.mjs",
24
24
  "refresh": "npm run refresh:snapshot && npm run refresh:fixtures && npm run refresh:classification -- --fixtures && npm run refresh:deals -- --fixtures",
25
25
  "test": "npm run typecheck && npm run test:unit && npm run test:integration && npm run test:contract && npm run format:check",
26
- "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/rsc-source.test.ts && tsx tests/classification-overrides.test.ts && tsx tests/refresh-classification.test.ts && tsx tests/classification.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-drift.test.ts && tsx tests/catalog-refresh-push.test.ts && tsx tests/auto-release.test.ts && tsx tests/replay-verification.test.ts && tsx tests/plugin-install.test.ts",
26
+ "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/rsc-source.test.ts && tsx tests/classification-overrides.test.ts && tsx tests/refresh-classification.test.ts && tsx tests/classification.test.ts && tsx tests/no-upstream-value-pins.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-drift.test.ts && tsx tests/catalog-refresh-push.test.ts && tsx tests/auto-release.test.ts && tsx tests/replay-verification.test.ts && tsx tests/plugin-install.test.ts",
27
27
  "test:integration": "tsx tests/integration-do-stream.test.ts && tsx tests/integration-do-generate.test.ts",
28
28
  "test:contract": "tsx tests/contract.test.ts",
29
29
  "test:e2e": "node tests/e2e-opencode.mjs",