@thincoder/core 0.9.3 → 0.9.4

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
@@ -3,6 +3,19 @@
3
3
  All notable changes to the core package are documented here.
4
4
  Format: Keep a Changelog · 中文 · 号在发布时定(CalVer——见 `docs/RELEASE.md` §4)。
5
5
 
6
+ ## [0.9.4] — 2026-09-22
7
+
8
+ > 0.9.3 → 0.9.4(月内序号——发布时定号)
9
+
10
+ ### Added
11
+
12
+ - **MiMo V2.6 三款规格行**(`mimo-v2.6-pro` / `mimo-v2.6-flash` / `mimo-v2.6-pro-ultraspeed`——同日上架):此前缺行落兜底(128K / 32K / 无视觉),现按真机实测登记——1M 上下文 · 131_072 输出 · 思考默认开(`thinking.type`)· 全模态 · 自动缓存。
13
+
14
+ ### Changed
15
+
16
+ - **MiMo v2.5 两行存量对齐**(同日实测):`maxOutput` 128_000 → 131_072 + 补自动缓存登记;族头注与 `assistantToolCallMessage` 文书句按 2026-09-22 复测改写(原「缺字段 → 400」句已不可复现——回显策略保持保守不变)。
17
+ - **MiMo 预设改指**:`mimo` / `mimoplan` 默认模型 → `mimo-v2.6-pro`(v2.5 官网标注即将下线;Token Plan 端点同平台推断)。
18
+
6
19
  ## [0.9.3] — 2026-09-22
7
20
 
8
21
  > 0.9.2 → 0.9.3(月内序号——发布时定号)
@@ -21,8 +21,8 @@ export const PROVIDER_PRESETS = {
21
21
  "glm-code": { baseURL: "https://open.bigmodel.cn/api/coding/paas/v4", model: "glm-5.2", thinking: { type: "enabled" }, reasoningEffort: "max", maxTokens: 128000, desc: "Zhipu GLM Coding Plan (coding endpoint — same key as GLM; server-forced thinking)" },
22
22
  qwen: { baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1", model: "qwen3.7-max", reasoningEffort: "high", maxTokens: 131072, desc: "Qwen / Alibaba" },
23
23
  qwenplan: { baseURL: "https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1", model: "qwen3.7-max", reasoningEffort: "high", maxTokens: 131072, desc: "Qwen Token Plan (百炼套餐)" },
24
- mimo: { baseURL: "https://api.xiaomimimo.com/v1", model: "mimo-v2.5-pro", thinking: { type: "enabled" }, maxTokens: 131072, desc: "MiMo (Xiaomi)" },
25
- mimoplan: { baseURL: "https://token-plan-cn.xiaomimimo.com/v1", model: "mimo-v2.5-pro", thinking: { type: "enabled" }, maxTokens: 131072, desc: "MiMo Token Plan (小米套餐 — tp- keys; 与按量付费 sk- 密钥不通用)" },
24
+ mimo: { baseURL: "https://api.xiaomimimo.com/v1", model: "mimo-v2.6-pro", thinking: { type: "enabled" }, maxTokens: 131072, desc: "MiMo (Xiaomi)" },
25
+ mimoplan: { baseURL: "https://token-plan-cn.xiaomimimo.com/v1", model: "mimo-v2.6-pro", thinking: { type: "enabled" }, maxTokens: 131072, desc: "MiMo Token Plan (小米套餐 — tp- keys; 与按量付费 sk- 密钥不通用)" },
26
26
  minimax: { baseURL: "https://api.minimaxi.com/v1", model: "MiniMax-M3", thinking: { type: "adaptive" }, maxTokens: 128000, chatPath: "/text/chatcompletion_v2", desc: "MiniMax" },
27
27
  openai: { baseURL: "https://api.openai.com/v1", model: "gpt-4o", desc: "OpenAI" },
28
28
  claude: { baseURL: "https://api.anthropic.com/v1", model: "claude-sonnet-4", format: "anthropic", maxTokens: 8192, desc: "Claude (Anthropic)" },
package/model-specs.mjs CHANGED
@@ -113,11 +113,26 @@ const MODEL_SPECS = [
113
113
  ["qwen3.6-35b-a3b", { context: 1_000_000, maxOutput: 65_536, thinking: true, partialMode: true, multimodal: true, cacheMode: "none", thinkApi: "effort", reasoningEffortEnum: ["none", "minimal", "low", "medium", "high", "xhigh"], tempRange: [0, 2] }],
114
114
  // MiniMax series
115
115
  ["MiniMax-M3", { context: 1_000_000, maxOutput: 128_000, thinking: true, multimodal: true, cacheMode: "auto", thinkApi: "type", thinkEnabledValue: "adaptive", tempRange: [0, 2], noUsageStream: true }],
116
- // MiMo series (Xiaomi — OpenAI-compatible https://api.xiaomimimo.com/v1;
117
- // deep thinking via thinking.type, default ON; multi-turn tool calls MUST echo
118
- // reasoning_content back exactly like DeepSeek V4, else 400 on follow-ups)
119
- ["mimo-v2.5-pro", { context: 1_000_000, maxOutput: 128_000, thinking: true, thinkApi: "type", reasoningEcho: "required", tempRange: [0, 1.5] }],
120
- ["mimo-v2.5", { context: 1_000_000, maxOutput: 128_000, thinking: true, multimodal: true, thinkApi: "type", reasoningEcho: "required", tempRange: [0, 1.5] }],
116
+ // MiMo series (Xiaomi — OpenAI-compatible https://api.xiaomimimo.com/v1; deep thinking via
117
+ // thinking.type, default ON). Family echo policy stays conservative ("required" — tool rounds
118
+ // always echo); 2026-09-22 re-probe: value / missing field / empty string all 200 — the
119
+ // 2026-09-20 "must be passed back" 400 was NOT reproduced. v2.5 rows aligned 2026-09-22:
120
+ // maxOutput 131_072 = **校验级**; cacheMode "auto" = **实测** (2nd same-prefix round cached 18,816).
121
+ ["mimo-v2.5-pro", { context: 1_000_000, maxOutput: 131_072, thinking: true, cacheMode: "auto", thinkApi: "type", reasoningEcho: "required", tempRange: [0, 1.5] }],
122
+ ["mimo-v2.5", { context: 1_000_000, maxOutput: 131_072, thinking: true, multimodal: true, cacheMode: "auto", thinkApi: "type", reasoningEcho: "required", tempRange: [0, 1.5] }],
123
+ // MiMo V2.6 series (2026-09-22 launch — three independent rows, each probed individually).
124
+ // maxOutput 131_072 / tempRange [0, 1.5] = **校验级** (400 "at most 131072 completion tokens" /
125
+ // "temperature must be within [0, 1.5]", per model); thinking = **实测** (bare request carries
126
+ // reasoning_content; thinking.type disabled → rc gone ⇒ thinkApi "type" = measured face) and
127
+ // multimodal = **实测** (8×8 pure-red PNG, pro / flash answered "Red"); cacheMode "auto" = **实测**
128
+ // (cached_tokens 18,688). context 1_000_000 = **官方口径** (docs); reasoningEcho = **族沿用**.
129
+ ["mimo-v2.6-pro", { context: 1_000_000, maxOutput: 131_072, thinking: true, multimodal: true, cacheMode: "auto", thinkApi: "type", reasoningEcho: "required", tempRange: [0, 1.5] }],
130
+ // mimo-v2.6-flash: same row shape as pro — maxOutput 131_072 / tempRange [0, 1.5] = **校验级**,
131
+ // thinking / multimodal / cacheMode = **实测**, context = **官方口径**, reasoningEcho = **族沿用**.
132
+ ["mimo-v2.6-flash", { context: 1_000_000, maxOutput: 131_072, thinking: true, multimodal: true, cacheMode: "auto", thinkApi: "type", reasoningEcho: "required", tempRange: [0, 1.5] }],
133
+ // mimo-v2.6-pro-ultraspeed: same row shape — same grades as flash (**校验级** / **实测** /
134
+ // **官方口径** / **族沿用**); image answer at a 64-token budget was truncated — "Red" at 512.
135
+ ["mimo-v2.6-pro-ultraspeed", { context: 1_000_000, maxOutput: 131_072, thinking: true, multimodal: true, cacheMode: "auto", thinkApi: "type", reasoningEcho: "required", tempRange: [0, 1.5] }],
121
136
  ["minimax-m3", { context: 1_000_000, maxOutput: 128_000, thinking: true, multimodal: true, cacheMode: "auto", thinkApi: "type", thinkEnabledValue: "adaptive", tempRange: [0, 2], noUsageStream: true }],
122
137
  ["minimax-m1", { context: 256_000, maxOutput: 128_000, thinking: false, cacheMode: "auto", noUsageStream: true }],
123
138
  // Grok series (xAI — OpenAI-compatible)
@@ -254,8 +269,8 @@ export function providerSpec(provider) {
254
269
  *
255
270
  * `reasoningEcho:"required"` families (deepseek / kimi / mimo) MUST carry the reasoning echo on
256
271
  * every tool-call assistant message: the field is NEVER omitted — an absent/non-string
257
- * `response.reasoning` is echoed as `""` (live-shape probe 2026-09-20: missing field 400
258
- * "must be passed back"; empty string 200 with reasoning still returned). `optional` /
272
+ * `response.reasoning` is echoed as `""` (2026-09-22 re-probe: value / missing field / empty
273
+ * string all 200 — the 2026-09-20 "must be passed back" 400 was NOT reproduced). `optional` /
259
274
  * undeclared families (incl. DEFAULT_SPEC) never get the field (behavior byte-identical).
260
275
  *
261
276
  * Callers: thincoder-core/agent.mjs (main loop) · thincoder-core/advisor/loop.mjs (review
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thincoder/core",
3
- "version": "0.9.3",
3
+ "version": "0.9.4",
4
4
  "description": "ThinCoder shared core — shared mechanism modules + shared prompt content (CLI ↔ VS Code extension).",
5
5
  "keywords": [
6
6
  "ai",