@mars-sea/dsh-commandcode-provider 0.15.0 → 0.15.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/lib/client.js CHANGED
@@ -3172,7 +3172,7 @@ window.__ModuleLoader__.load({
3172
3172
  modelAllowance: "${amount}/月",
3173
3173
  modelAllowanceTitle: "该模型每月可用的额度(美元)。套餐内所有模型共用同一个月度额度池,这不是额外赠送的额度。",
3174
3174
  visibleModelsTitle: "模型白名单",
3175
- visibleModelsHint: "模型选择器只列出勾选的模型,都不勾选则显示全部;网页与终端共用这份选择。",
3175
+ visibleModelsHint: "只列出勾选的模型,都不勾选=显示全部。网页与终端共用。",
3176
3176
  visibleModelsPick: "选择要保留的模型…",
3177
3177
  visibleModelsCount: "已选 {count} 个模型",
3178
3178
  visibleModelsShowAll: "显示全部",
@@ -3444,7 +3444,7 @@ window.__ModuleLoader__.load({
3444
3444
  modelAllowance: "${amount}/mo",
3445
3445
  modelAllowanceTitle: "Monthly usage this model can draw, in USD. Every model shares one monthly pool — this is not extra credit on top of the plan.",
3446
3446
  visibleModelsTitle: "Model allowlist",
3447
- visibleModelsHint: "Model pickers list only the checked models; check none to show all. Web and terminal share this selection.",
3447
+ visibleModelsHint: "Only checked models are listed; none checked shows all. Web and terminal share this.",
3448
3448
  visibleModelsPick: "Select models to keep…",
3449
3449
  visibleModelsCount: "{count} model(s) selected",
3450
3450
  visibleModelsShowAll: "Show all",
@@ -3837,7 +3837,7 @@ window.__ModuleLoader__.load({
3837
3837
  }
3838
3838
  //#endregion
3839
3839
  //#region package.json
3840
- var version = "0.15.0";
3840
+ var version = "0.15.2";
3841
3841
  var repository = {
3842
3842
  "type": "git",
3843
3843
  "url": "git+https://github.com/Mars-Sea/dsh-commandcode-provider.git"
@@ -4249,7 +4249,7 @@ window.__ModuleLoader__.load({
4249
4249
  const fraction = (match[2] ?? "").replace(/0+$/, "");
4250
4250
  return fraction === "" ? `${match[1]}%` : `${match[1]}.${fraction}%`;
4251
4251
  }
4252
- /** The aggregate line, or undefined when this check carried no aggregates. */
4252
+ /** The aggregate segments; empty when this check carried no aggregates. */
4253
4253
  function detailCopy(snapshot, t) {
4254
4254
  const parts = [];
4255
4255
  const uptimes = [];
@@ -4257,7 +4257,7 @@ window.__ModuleLoader__.load({
4257
4257
  if (snapshot.uptimeMonth !== void 0) uptimes.push(t("serviceStatusUptimeMonth", { value: compactUptime(snapshot.uptimeMonth) }));
4258
4258
  if (uptimes.length > 0) parts.push(t("serviceStatusUptime", { value: uptimes.join(" / ") }));
4259
4259
  if (snapshot.responseTimeWeekMs !== void 0) parts.push(t("serviceStatusResponseWeek", { value: `${Math.round(snapshot.responseTimeWeekMs)} ms` }));
4260
- return parts.length === 0 ? void 0 : parts.join(" · ");
4260
+ return parts;
4261
4261
  }
4262
4262
  /** The heading verdict: a failed local probe first, else the published one. */
4263
4263
  function badgeOf(probe, official, t) {
@@ -4292,6 +4292,7 @@ window.__ModuleLoader__.load({
4292
4292
  label,
4293
4293
  tone: "checking"
4294
4294
  }, t),
4295
+ detailParts: [],
4295
4296
  local: local.text,
4296
4297
  localTone: local.tone,
4297
4298
  localChecking: probe.kind === "checking",
@@ -4311,7 +4312,7 @@ window.__ModuleLoader__.load({
4311
4312
  label,
4312
4313
  tone: officialTone
4313
4314
  }, t),
4314
- detail: detailCopy(snapshot, t),
4315
+ detailParts: detailCopy(snapshot, t),
4315
4316
  updated: snapshot.checkedAt === void 0 ? t("serviceStatusUpdatedUnknown") : updatedCopy(snapshot.checkedAt, now, t),
4316
4317
  lag: lagCopy(snapshot.checkedAt, now, t),
4317
4318
  local: local.text,
@@ -4656,26 +4657,6 @@ window.__ModuleLoader__.load({
4656
4657
  };
4657
4658
  }
4658
4659
  /**
4659
- * The reset button a staged field shows once it differs from the default. It
4660
- * trails the control, and a row with nothing to reset keeps an empty slot of
4661
- * the same width, so every staged control in a group ends on one right edge.
4662
- */
4663
- function FieldOverride({ label, state, disabled, t, onReset }) {
4664
- if (!state.overridden && !state.clear) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4665
- className: "cc-resetSlot",
4666
- "aria-hidden": "true"
4667
- });
4668
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4669
- type: "button",
4670
- className: "cc-iconButton",
4671
- disabled,
4672
- onClick: onReset,
4673
- "aria-label": `${label} — ${t("reset")}`,
4674
- title: t("reset"),
4675
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { name: "reset" })
4676
- });
4677
- }
4678
- /**
4679
4660
  * One settings row, laid out like the harness's own General page: the title
4680
4661
  * and description on the left, the control on the right, a hairline between
4681
4662
  * rows.
@@ -4714,12 +4695,34 @@ window.__ModuleLoader__.load({
4714
4695
  }) : null]
4715
4696
  });
4716
4697
  }
4717
- /** The tag a row title carries while its field overrides the default. */
4718
- function OverrideTag({ state, t }) {
4719
- return state.overridden ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4720
- className: "cc-badge",
4721
- children: t("overridden")
4722
- }) : null;
4698
+ /**
4699
+ * The title-line marker of a field that differs from its default: the
4700
+ * "customized" badge with a small reset button right after it (a draft that
4701
+ * only clears the stored value shows the button alone). Keeping reset on the
4702
+ * title line, not after the control, means no row reserves an empty reset
4703
+ * column — every control, account card and heading action ends on the same
4704
+ * right edge.
4705
+ */
4706
+ function OverrideTag({ label, state, disabled, t, onReset }) {
4707
+ if (!state.overridden && !state.clear) return null;
4708
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4709
+ className: "cc-overrideTag",
4710
+ children: [state.overridden ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4711
+ className: "cc-badge",
4712
+ children: t("overridden")
4713
+ }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
4714
+ type: "button",
4715
+ className: "cc-resetInline",
4716
+ disabled,
4717
+ onClick: onReset,
4718
+ "aria-label": `${label} — ${t("reset")}`,
4719
+ title: t("reset"),
4720
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
4721
+ name: "reset",
4722
+ className: "cc-icon cc-btnIcon"
4723
+ })
4724
+ })]
4725
+ });
4723
4726
  }
4724
4727
  /** One text/number field row. */
4725
4728
  function Field({ id, label, hint, state, disabled, numeric, decimal, context, output, wide, unit, placeholder, onEdit, onReset, t }) {
@@ -4738,24 +4741,21 @@ window.__ModuleLoader__.load({
4738
4741
  title: label,
4739
4742
  titleFor: id,
4740
4743
  tag: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OverrideTag, {
4744
+ label,
4741
4745
  state,
4742
- t
4746
+ disabled,
4747
+ t,
4748
+ onReset
4743
4749
  }),
4744
4750
  description: hint,
4745
4751
  error: state.invalid ? invalidCopy(state.invalidReason, t, output === true ? "output" : context === true ? "context" : decimal === true ? "duration" : "number") : void 0,
4746
- control: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [unit === void 0 ? input : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4752
+ control: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: unit === void 0 ? input : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4747
4753
  className: state.invalid ? "cc-unitBox cc-unitBoxInvalid" : "cc-unitBox",
4748
4754
  children: [input, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4749
4755
  className: "cc-unit",
4750
4756
  children: unit
4751
4757
  })]
4752
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FieldOverride, {
4753
- label,
4754
- state,
4755
- disabled,
4756
- t,
4757
- onReset
4758
- })] })
4758
+ }) })
4759
4759
  });
4760
4760
  }
4761
4761
  /** The per-field error copy for a staged draft's failure reason. */
@@ -4790,11 +4790,14 @@ window.__ModuleLoader__.load({
4790
4790
  title: label,
4791
4791
  titleFor: id,
4792
4792
  tag: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OverrideTag, {
4793
+ label,
4793
4794
  state,
4794
- t
4795
+ disabled,
4796
+ t,
4797
+ onReset
4795
4798
  }),
4796
4799
  description: hint,
4797
- control: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4800
+ control: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4798
4801
  id,
4799
4802
  className: "cc-toggle",
4800
4803
  type: "checkbox",
@@ -4802,13 +4805,7 @@ window.__ModuleLoader__.load({
4802
4805
  checked,
4803
4806
  disabled,
4804
4807
  onChange: (event) => onEdit(event.target.checked ? "true" : "false")
4805
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FieldOverride, {
4806
- label,
4807
- state,
4808
- disabled,
4809
- t,
4810
- onReset
4811
- })] })
4808
+ }) })
4812
4809
  });
4813
4810
  }
4814
4811
  /** One stat tile in the account card's summary grid. */
@@ -5418,7 +5415,7 @@ window.__ModuleLoader__.load({
5418
5415
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SettingRow, {
5419
5416
  title: t("contextOverridesTitle"),
5420
5417
  description: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("contextOverridesHint") }),
5421
- control: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageButton, {
5418
+ control: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PageButton, {
5422
5419
  variant: "outline",
5423
5420
  size: "sm",
5424
5421
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
@@ -5428,7 +5425,7 @@ window.__ModuleLoader__.load({
5428
5425
  disabled: disabled || available.length === 0,
5429
5426
  onClick: addRow,
5430
5427
  children: t("contextOverrideAdd")
5431
- })
5428
+ }) })
5432
5429
  }),
5433
5430
  state.catalogFailed ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5434
5431
  className: "cc-groupDesc",
@@ -5532,6 +5529,16 @@ window.__ModuleLoader__.load({
5532
5529
  function ServiceStatusRow({ view, t }) {
5533
5530
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SettingRow, {
5534
5531
  title: t("serviceStatusTitle"),
5532
+ tag: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
5533
+ className: "cc-statusLink cc-statusTitleLink",
5534
+ href: STATUS_PAGE_URL,
5535
+ target: "_blank",
5536
+ rel: "noreferrer",
5537
+ children: [view.linkLabel, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
5538
+ name: "external",
5539
+ className: "cc-icon cc-iconInline"
5540
+ })]
5541
+ }),
5535
5542
  description: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5536
5543
  className: "cc-statusLines",
5537
5544
  children: [
@@ -5550,16 +5557,17 @@ window.__ModuleLoader__.load({
5550
5557
  className: "cc-statusVerdict",
5551
5558
  children: view.label
5552
5559
  }),
5553
- view.detail !== void 0 || view.updated !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5560
+ view.detailParts.length > 0 || view.updated !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5554
5561
  className: "cc-statusMeta",
5555
- children: [
5556
- view.detail,
5557
- view.detail !== void 0 && view.updated !== void 0 ? "\xA0· " : null,
5558
- view.updated !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5559
- title: view.lag ?? view.hint,
5560
- children: view.updated
5561
- }) : null
5562
- ]
5562
+ children: [...view.detailParts, ...view.updated !== void 0 ? [view.updated] : []].map((part, index, parts) => {
5563
+ const last = index === parts.length - 1;
5564
+ const isAge = view.updated !== void 0 && last;
5565
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5566
+ className: "cc-statusPart",
5567
+ title: isAge ? view.lag ?? view.hint : void 0,
5568
+ children: last ? part : `${part}\u00a0·`
5569
+ }), last ? null : " "] }, index);
5570
+ })
5563
5571
  }) : null
5564
5572
  ]
5565
5573
  }),
@@ -5581,14 +5589,7 @@ window.__ModuleLoader__.load({
5581
5589
  }), view.notice !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
5582
5590
  className: "cc-statusNotice",
5583
5591
  children: view.notice
5584
- }) : null] }),
5585
- control: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
5586
- className: "cc-statusLink",
5587
- href: STATUS_PAGE_URL,
5588
- target: "_blank",
5589
- rel: "noreferrer",
5590
- children: view.linkLabel
5591
- })
5592
+ }) : null] })
5592
5593
  });
5593
5594
  }
5594
5595
  /**
@@ -10270,7 +10271,11 @@ window.__ModuleLoader__.load({
10270
10271
  .cc-rows{flex-direction:column;display:flex}
10271
10272
  .cc-row{flex-wrap:wrap;align-items:center;gap:8px 24px;display:flex;padding:12px 0}
10272
10273
  .cc-rowFlush{padding:0}
10273
- .cc-rowText{flex-direction:column;flex:1 1 300px;gap:2px;min-width:0;display:flex}
10274
+ /* The text column starts at 200px (not 300px) so the widest controls — the
10275
+ * 280px API base input, the allowlist's button + 200px selector — still sit
10276
+ * beside their label in a ~560px settings panel; the description wraps more
10277
+ * lines instead of the control dropping to a second line. */
10278
+ .cc-rowText{flex-direction:column;flex:1 1 200px;gap:2px;min-width:0;display:flex}
10274
10279
  .cc-rowTitleLine{align-items:center;gap:8px;display:flex;min-width:0}
10275
10280
  .cc-rowTitle{min-width:0;color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}
10276
10281
  .cc-rowDesc{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}
@@ -10296,9 +10301,14 @@ window.__ModuleLoader__.load({
10296
10301
  .cc-unitBox:has(>.cc-fieldInput:disabled){opacity:.5}
10297
10302
  .cc-unitBox>.cc-fieldInput{flex:1;width:auto;height:30px;border:0;border-radius:0;background:0 0;outline:none;text-align:right;font-variant-numeric:tabular-nums}
10298
10303
  .cc-unit{flex:none;padding:0 10px 0 2px;color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px;white-space:nowrap}
10299
- /* Holds the reset button's column on rows that have nothing to reset, so the
10300
- * staged controls of one group line up on a single right edge. */
10301
- .cc-resetSlot{flex:none;width:28px;height:28px}
10304
+ /* A customized field's marker on its title line: the badge, then a 20px
10305
+ * round reset button. Reset lives here rather than after the control, so no
10306
+ * row reserves a reset column and the page keeps one right edge. */
10307
+ .cc-overrideTag{align-items:center;gap:4px;display:inline-flex}
10308
+ .cc-resetInline{flex:none;align-items:center;justify-content:center;display:inline-flex;width:20px;height:20px;padding:0;border:0;border-radius:999px;corner-shape:round;background:0 0;color:var(--dsw-alias-label-tertiary);cursor:pointer}
10309
+ .cc-resetInline:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}
10310
+ .cc-resetInline:disabled{cursor:default;opacity:.4}
10311
+ .cc-resetInline:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}
10302
10312
  .cc-icon{flex:none;width:16px;height:16px}
10303
10313
  /* The page's buttons (PageButton), drawn to the design canvas: one capsule
10304
10314
  * shape, md 32px / 14px text / 14px icon, sm 28px / 12px text, lg 36px for
@@ -10520,6 +10530,11 @@ window.__ModuleLoader__.load({
10520
10530
  .cc-statusValue{flex-wrap:wrap;align-items:center;gap:2px 8px;min-width:0;display:flex}
10521
10531
  .cc-statusVerdict{color:var(--dsw-alias-label-primary)}
10522
10532
  .cc-statusMeta{flex:1 1 200px;min-width:0}
10533
+ /* One aggregate (uptime, response, age) never breaks inside itself; a line
10534
+ * that runs out of room moves the whole next segment down. */
10535
+ .cc-statusPart{white-space:nowrap}
10536
+ /* On the title line, flush with the page's single right edge. */
10537
+ .cc-statusTitleLink{align-items:center;gap:4px;display:inline-flex;margin-left:auto}
10523
10538
  .cc-statusBad{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary,#b45309))}
10524
10539
  .cc-statusLink{color:var(--dsw-alias-link,var(--dsw-alias-brand-primary));text-decoration:none;font-size:12px;line-height:18px;white-space:nowrap}
10525
10540
  .cc-statusLink:hover{text-decoration:underline;text-underline-position:under}
package/lib/index.d.ts CHANGED
@@ -61,7 +61,7 @@ type CommandCodeProtocol = 'cli' | 'openai' | 'messages';
61
61
  declare const DEFAULT_MAX_OUTPUT_TOKENS = 131072;
62
62
  //#endregion
63
63
  //#region src/adapter.d.ts
64
- declare const COMMAND_CODE_CLI_VERSION = "1.86.3";
64
+ declare const COMMAND_CODE_CLI_VERSION = "1.87.3";
65
65
  declare const DEFAULT_API_BASE = "https://api.commandcode.ai";
66
66
  /**
67
67
  * The output budget this bundle asks for, and the ceiling it will never exceed.
@@ -1165,7 +1165,7 @@ declare const KNOWN_THINKING_MODELS: ReadonlySet<string>;
1165
1165
  * `/docs/plans/max` and `/docs/resources/pricing-limits`). Each plan's model
1166
1166
  * list is a superset of the one below it: Go ⊂ GOAT ⊂ Pro ⊂ Provider/Max.
1167
1167
  * Models absent from every plan list (Claude Opus/Fable, Fugu Ultra) are
1168
- * Provider-tier. Re-verified at command-code@1.86.3 (2026-10-21) against the
1168
+ * Provider-tier. Re-verified at command-code@1.87.1 (2026-10-22) against the
1169
1169
  * live `?view=client` catalog: 104 ids, still a strict superset chain. Mistral
1170
1170
  * Large 4
1171
1171
  * (1.75.0) was the only addition at the 1.77.0 check; the 1.78.0/1.79.0 pair
@@ -1176,7 +1176,8 @@ declare const KNOWN_THINKING_MODELS: ReadonlySet<string>;
1176
1176
  * Super VL and the free Cat Jam preview at Go, and drops Ling 3.0 Flash Sante,
1177
1177
  * which left the live catalog. Every other
1178
1178
  * tier is unchanged. The 1.86.1 sync (2026-10-21) adds only the Ornith 1.5 122B
1179
- * launch pair at Go.
1179
+ * launch pair at Go; the 1.87.1 check (2026-10-22) adds no model and moves no
1180
+ * tier.
1180
1181
  * The only removals since 1.49.0 are the two retired stealth previews (Pixel
1181
1182
  * Canary at 1.73.1, Space Bunny Alpha at 1.74.3), Ling 3.0 Flash Sante
1182
1183
  * (2026-10-16) and the retired Cat Jam preview (2026-10-20). Per-entry tags
package/lib/index.js CHANGED
@@ -123,15 +123,18 @@ const PLAN_ORDER = Object.fromEntries(PLAN_TIER_ORDER.map((tier, index) => [tier
123
123
  * subscription-plan labels, deals, and hourly (peak/off-peak) pricing.
124
124
  *
125
125
  * Everything here is synced from official sources — the command-code CLI
126
- * bundle's model table (`dist/cli.mjs`, re-verified at command-code@1.86.3), the
126
+ * bundle's model table (`dist/cli.mjs`, re-verified at command-code@1.87.1), the
127
127
  * live model catalog (`GET /provider/v1/models?view=client`, the authority for
128
128
  * capability fields since 1.82.4), and the official plan/pricing/model docs; see
129
129
  * the dsh-commandcode-upstream skill for the extraction procedures. The
130
- * 2026-10-21 sync moves the CLI from 1.84.0 to 1.86.1 and picks up the Ornith
130
+ * 2026-10-21 sync moved the CLI from 1.84.0 to 1.86.1 and picked up the Ornith
131
131
  * 1.5 122B launch pair in the catalog, the ZDR exclusion-set prune and the
132
- * MiniMax M3.1 Flash promo extension. The follow-up check later that day moves
133
- * the pinned constant to 1.86.3 (request header only): 1.86.2/1.86.3 leave
134
- * every snapshot here untouched, so no data in this file moved for them. Keeping the snapshot in its own module
132
+ * MiniMax M3.1 Flash promo extension; the follow-up check later that day moved
133
+ * the pinned constant to 1.86.3 (request header only). The 2026-10-22 check
134
+ * moves it to 1.87.1: the CLI bundle's registry, effort map, subscription plans
135
+ * and ZDR exception set are identical, and the live catalog's capability fields
136
+ * did not move either, so the only data added here is one output-limit row
137
+ * (`thinkingmachines/inkling-small`). Keeping the snapshot in its own module
135
138
  * confines those frequent sync diffs here: src/adapter.ts holds only the stable
136
139
  * wire/runtime logic. The read helpers live here too, for the same reason.
137
140
  *
@@ -479,13 +482,6 @@ const KNOWN_EFFORTS = {
479
482
  "xhigh",
480
483
  "max"
481
484
  ],
482
- "minimax/minimax-m3.1-flash:free": [
483
- "low",
484
- "medium",
485
- "high",
486
- "xhigh",
487
- "max"
488
- ],
489
485
  "gpt-6.1-sol": [
490
486
  "low",
491
487
  "medium",
@@ -585,14 +581,12 @@ const KNOWN_IMAGE_MODELS = /* @__PURE__ */ new Set([
585
581
  "nvidia/nemotron-3.5-super-vl",
586
582
  "mistral/mistral-large-4",
587
583
  "minimax/minimax-m3.1-flash",
588
- "minimax/minimax-m3.1-flash:free",
589
584
  "moonshotai/Kimi-K2.5",
590
585
  "moonshotai/Kimi-K2.6",
591
586
  "moonshotai/Kimi-K2.7-Code",
592
587
  "moonshotai/Kimi-K2.7-Code-Highspeed",
593
588
  "moonshotai/Kimi-K3",
594
589
  "ornith/ornith-1.5-122b",
595
- "ornith/ornith-1.5-122b:free",
596
590
  "sakana/fugu-ultra",
597
591
  "stepfun/Step-3.7-Flash",
598
592
  "stepfun/Step-5-Preview",
@@ -601,7 +595,6 @@ const KNOWN_IMAGE_MODELS = /* @__PURE__ */ new Set([
601
595
  "xai/grok-4.5",
602
596
  "xai/grok-4.6",
603
597
  "xai/grok-4.7",
604
- "xiaomi/mimo-v2.5",
605
598
  "xiaomi/mimo-v2.6-flash",
606
599
  "xiaomi/mimo-v2.6-pro",
607
600
  "xiaomi/mimo-v2.6-pro-ultraspeed",
@@ -753,8 +746,7 @@ const KNOWN_THINKING_MODELS = /* @__PURE__ */ new Set([
753
746
  "thinkingmachines/inkling-small",
754
747
  "poolside/laguna-s-2.1-free",
755
748
  "meituan/LongCat-2.0",
756
- "ornith/ornith-1.5-122b",
757
- "ornith/ornith-1.5-122b:free"
749
+ "ornith/ornith-1.5-122b"
758
750
  ]);
759
751
  /**
760
752
  * Catalog models the Provider API serves ONLY through `/provider/v1/messages`
@@ -886,7 +878,6 @@ const MODEL_OUTPUT_TOKEN_LIMITS = /* @__PURE__ */ new Map([
886
878
  ["meta/muse-spark-1.3-contributor", 131072],
887
879
  ["meta/muse-wonder-1.0", 131072],
888
880
  ["minimax/minimax-m3.1-flash", 524288],
889
- ["minimax/minimax-m3.1-flash:free", 524288],
890
881
  ["MiniMaxAI/MiniMax-M2.5", 131072],
891
882
  ["MiniMaxAI/MiniMax-M2.7", 131072],
892
883
  ["MiniMaxAI/MiniMax-M3", 524288],
@@ -912,11 +903,10 @@ const MODEL_OUTPUT_TOKEN_LIMITS = /* @__PURE__ */ new Map([
912
903
  ["stepfun/Step-5-Preview", 65536],
913
904
  ["tencent/hy3-paid", 128e3],
914
905
  ["thinkingmachines/inkling", 65536],
906
+ ["thinkingmachines/inkling-small", 65536],
915
907
  ["xai/grok-4.5", 5e5],
916
908
  ["xai/grok-4.6", 5e5],
917
909
  ["xai/grok-4.7", 5e5],
918
- ["xiaomi/mimo-v2.5", 131072],
919
- ["xiaomi/mimo-v2.5-pro", 131072],
920
910
  ["xiaomi/mimo-v2.6-flash", 131072],
921
911
  ["xiaomi/mimo-v2.6-pro", 131072],
922
912
  ["xiaomi/mimo-v2.6-pro-ultraspeed", 131072],
@@ -933,7 +923,7 @@ const MODEL_OUTPUT_TOKEN_LIMITS = /* @__PURE__ */ new Map([
933
923
  * `/docs/plans/max` and `/docs/resources/pricing-limits`). Each plan's model
934
924
  * list is a superset of the one below it: Go ⊂ GOAT ⊂ Pro ⊂ Provider/Max.
935
925
  * Models absent from every plan list (Claude Opus/Fable, Fugu Ultra) are
936
- * Provider-tier. Re-verified at command-code@1.86.3 (2026-10-21) against the
926
+ * Provider-tier. Re-verified at command-code@1.87.1 (2026-10-22) against the
937
927
  * live `?view=client` catalog: 104 ids, still a strict superset chain. Mistral
938
928
  * Large 4
939
929
  * (1.75.0) was the only addition at the 1.77.0 check; the 1.78.0/1.79.0 pair
@@ -944,7 +934,8 @@ const MODEL_OUTPUT_TOKEN_LIMITS = /* @__PURE__ */ new Map([
944
934
  * Super VL and the free Cat Jam preview at Go, and drops Ling 3.0 Flash Sante,
945
935
  * which left the live catalog. Every other
946
936
  * tier is unchanged. The 1.86.1 sync (2026-10-21) adds only the Ornith 1.5 122B
947
- * launch pair at Go.
937
+ * launch pair at Go; the 1.87.1 check (2026-10-22) adds no model and moves no
938
+ * tier.
948
939
  * The only removals since 1.49.0 are the two retired stealth previews (Pixel
949
940
  * Canary at 1.73.1, Space Bunny Alpha at 1.74.3), Ling 3.0 Flash Sante
950
941
  * (2026-10-16) and the retired Cat Jam preview (2026-10-20). Per-entry tags
@@ -988,7 +979,6 @@ const KNOWN_PLANS = {
988
979
  "meta/muse-spark-open": "go",
989
980
  "mistral/mistral-large-4": "go",
990
981
  "minimax/minimax-m3.1-flash": "go",
991
- "minimax/minimax-m3.1-flash:free": "go",
992
982
  "moonshotai/Kimi-K2.5": "go",
993
983
  "moonshotai/Kimi-K2.6": "go",
994
984
  "moonshotai/Kimi-K2.7-Code": "go",
@@ -997,7 +987,6 @@ const KNOWN_PLANS = {
997
987
  "nvidia/nemotron-3-ultra-550b-a55b": "go",
998
988
  "nvidia/nemotron-3.5-super-vl": "go",
999
989
  "ornith/ornith-1.5-122b": "go",
1000
- "ornith/ornith-1.5-122b:free": "go",
1001
990
  "poolside/laguna-s-2.1-free": "go",
1002
991
  "reflection/beam:free": "go",
1003
992
  "stepfun/Step-3.5-Flash": "go",
@@ -1009,8 +998,6 @@ const KNOWN_PLANS = {
1009
998
  "thinkingmachines/inkling": "go",
1010
999
  "thinkingmachines/inkling-small": "go",
1011
1000
  "xai/grok-4.5": "go",
1012
- "xiaomi/mimo-v2.5": "go",
1013
- "xiaomi/mimo-v2.5-pro": "go",
1014
1001
  "xiaomi/mimo-v2.6-flash": "go",
1015
1002
  "xiaomi/mimo-v2.6-pro": "go",
1016
1003
  "z-ai/glm-5.3-flash": "go",
@@ -1189,13 +1176,6 @@ function modelVisibleForAnyAccount(modelId, accounts) {
1189
1176
  }
1190
1177
  const KNOWN_DEALS = {
1191
1178
  "MiniMaxAI/MiniMax-M3": { label: "50% off" },
1192
- "minimax/minimax-m3.1-flash:free": {
1193
- label: "FREE",
1194
- free: true,
1195
- expiresAt: "2026-10-22T10:45:00Z"
1196
- },
1197
- "xiaomi/mimo-v2.5-pro": { label: "99% off" },
1198
- "xiaomi/mimo-v2.5": { label: "98% off" },
1199
1179
  "poolside/laguna-s-2.1-free": {
1200
1180
  label: "FREE",
1201
1181
  free: true
@@ -1207,11 +1187,6 @@ const KNOWN_DEALS = {
1207
1187
  "stealth/glyph-cluster:free": {
1208
1188
  label: "FREE",
1209
1189
  free: true
1210
- },
1211
- "ornith/ornith-1.5-122b:free": {
1212
- label: "FREE",
1213
- free: true,
1214
- expiresAt: "2026-10-22T06:00:00Z"
1215
1190
  }
1216
1191
  };
1217
1192
  /**
@@ -1649,8 +1624,8 @@ const MODEL_PRICE_ROWS = [
1649
1624
  ],
1650
1625
  allowance: {
1651
1626
  go: 10,
1652
- goat: 100,
1653
- pro: 110
1627
+ goat: 80,
1628
+ pro: 90
1654
1629
  }
1655
1630
  },
1656
1631
  {
@@ -2299,42 +2274,6 @@ const MODEL_PRICE_ROWS = [
2299
2274
  pro: 60
2300
2275
  }
2301
2276
  },
2302
- {
2303
- id: "mimo-v2.5",
2304
- rates: [
2305
- .14,
2306
- .28,
2307
- .0028
2308
- ],
2309
- listRates: [
2310
- .8,
2311
- 4,
2312
- .16
2313
- ],
2314
- allowance: {
2315
- go: 6,
2316
- goat: 30,
2317
- pro: 40
2318
- }
2319
- },
2320
- {
2321
- id: "mimo-v2.5-pro",
2322
- rates: [
2323
- .435,
2324
- .87,
2325
- .0036
2326
- ],
2327
- listRates: [
2328
- 2,
2329
- 6,
2330
- .4
2331
- ],
2332
- allowance: {
2333
- go: 6,
2334
- goat: 20,
2335
- pro: 30
2336
- }
2337
- },
2338
2277
  {
2339
2278
  id: "mimo-v2.6-flash",
2340
2279
  rates: [
@@ -2439,9 +2378,9 @@ const MODEL_PRICE_ROWS = [
2439
2378
  .14
2440
2379
  ],
2441
2380
  allowance: {
2442
- go: 10,
2443
- goat: 40,
2444
- pro: 50
2381
+ go: 6,
2382
+ goat: 20,
2383
+ pro: 30
2445
2384
  }
2446
2385
  },
2447
2386
  {
@@ -6483,7 +6422,7 @@ var GatewayFacts = class {
6483
6422
  * per-request options thunk and an API-key resolver from the plugin entry
6484
6423
  * (src/index.ts), so a settings change reaches the very next request.
6485
6424
  */
6486
- const COMMAND_CODE_CLI_VERSION = "1.86.3";
6425
+ const COMMAND_CODE_CLI_VERSION = "1.87.3";
6487
6426
  const DEFAULT_API_BASE = "https://api.commandcode.ai";
6488
6427
  /**
6489
6428
  * The output budget this bundle asks for, and the ceiling it will never exceed.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mars-sea/dsh-commandcode-provider",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
4
4
  "description": "Unofficial DeepSeek Harness LLM provider plugin for Command Code, ported from pi-commandcode-provider (MIT). Registers the 'commandcode' provider route with a Models-page card and live model catalog.",
5
5
  "icon": "./icon.svg",
6
6
  "type": "module",