diff --git a/AGENTS.md b/AGENTS.md index ea75476..72e4c32 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -36,9 +36,9 @@ Current honest state: validated curated default, with installer-managed `limit.output = 8192` for Kilo `7.2.0` compatibility - the managed GonkaGate provider config now writes the validated - chat-completions catalog, currently Kimi K2.6 plus Qwen3 235B A22B Instruct - 2507 FP8, so Kilo's OpenCode-style `/models` picker can switch between - validated GonkaGate models + chat-completions catalog, currently Kimi K2.6, Qwen3 235B A22B Instruct + 2507 FP8, and MiniMax M2.7, so Kilo's OpenCode-style `/models` picker can + switch between validated GonkaGate models - Kilo detection now accepts `@kilocode/cli >=7.2.0` without pre-blocking future Kilo releases, while the audited compatibility baseline remains `@kilocode/cli@7.2.0` @@ -136,8 +136,8 @@ These are implementation facts today: orchestration - `src/constants/models.ts` now exposes Kimi K2.6 as the recommended validated production default plus the validated Qwen3 235B A22B Instruct 2507 FP8 - catalog entry, each with installer-managed `limit.output = 8192` in the - written Kilo provider config + and MiniMax M2.7 catalog entries, each with installer-managed + `limit.output = 8192` in the written Kilo provider config - `docs/specs/kilo-setup-prd/spec.md` is the copied Kilo setup PRD - `docs/release-readiness.md` records the current production-readiness audit - `.github/workflows/release-please.yml` and `.github/workflows/publish.yml` diff --git a/CHANGELOG.md b/CHANGELOG.md index a9760f6..5a42442 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - Wrote the validated GonkaGate chat-completions catalog into the managed provider config so Kilo's OpenCode-style `/models` picker can switch between - Kimi K2.6 and Qwen3 235B A22B Instruct 2507 FP8. + Kimi K2.6, Qwen3 235B A22B Instruct 2507 FP8, and MiniMax M2.7. - Accepted Kilo versions at or above `@kilocode/cli >=7.2.0` instead of pre-blocking future Kilo releases with the previous `7.2.0`-only gate. - Kept local verification blockers and mismatches visible in rollback output diff --git a/README.md b/README.md index 2375d53..a4b0afd 100644 --- a/README.md +++ b/README.md @@ -75,8 +75,9 @@ Current public baseline: - curated default: `moonshotai/Kimi-K2.6` - managed validated catalog for Kilo's OpenCode-style `/models` picker: - `moonshotai/Kimi-K2.6` and - `qwen/qwen3-235b-a22b-instruct-2507-fp8` + `moonshotai/Kimi-K2.6`, + `qwen/qwen3-235b-a22b-instruct-2507-fp8`, and + `minimaxai/minimax-m2.7` - installer-managed `limit.output = 8192` for Kilo compatibility - no native Windows production claim yet @@ -207,8 +208,9 @@ This repository intentionally stays narrow today: - current curated default: `moonshotai/Kimi-K2.6` - validated GonkaGate models exposed to Kilo's `/models` picker: - `moonshotai/Kimi-K2.6` and - `qwen/qwen3-235b-a22b-instruct-2507-fp8` + `moonshotai/Kimi-K2.6`, + `qwen/qwen3-235b-a22b-instruct-2507-fp8`, and + `minimaxai/minimax-m2.7` - real-path Kilo verification is not the production default - native Windows production support is not claimed yet - future Kilo releases are not pre-blocked by version, but observed diff --git a/docs/README.md b/docs/README.md index 2f3eaea..07e8deb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,6 +24,7 @@ Current contract documents: This repository ships the Kilo installer runtime with a validated curated GonkaGate chat-completions catalog, Kimi K2.6 as the recommended default, -installer-managed `limit.output = 8192` for Kilo compatibility, and a minimum -accepted Kilo floor of `@kilocode/cli >=7.2.0` without a preset upper version -bound. +MiniMax M2.7 and Qwen3 235B A22B Instruct 2507 FP8 as additional validated +catalog entries, installer-managed `limit.output = 8192` for Kilo +compatibility, and a minimum accepted Kilo floor of `@kilocode/cli >=7.2.0` +without a preset upper version bound. diff --git a/docs/gonkagate-x-kilo.md b/docs/gonkagate-x-kilo.md index 20eea7f..5121748 100644 --- a/docs/gonkagate-x-kilo.md +++ b/docs/gonkagate-x-kilo.md @@ -131,9 +131,11 @@ Right now the public default is deliberately small: - minimum Kilo floor: `@kilocode/cli >=7.2.0` - recommended validated model: `moonshotai/Kimi-K2.6` - validated catalog exposed to Kilo's OpenCode-style `/models` picker: - `moonshotai/Kimi-K2.6` and - `qwen/qwen3-235b-a22b-instruct-2507-fp8` -- managed limits: `limit.context = 262144`, `limit.output = 8192` + `moonshotai/Kimi-K2.6`, + `qwen/qwen3-235b-a22b-instruct-2507-fp8`, and + `minimaxai/minimax-m2.7` +- managed limits: `limit.output = 8192` for all validated entries; + `limit.context = 262144` for Kimi/Qwen and `204800` for MiniMax We are treating model support as a curated list, not as a vague "it probably works" promise. diff --git a/docs/how-it-works.md b/docs/how-it-works.md index 53d57e6..4fac58a 100644 --- a/docs/how-it-works.md +++ b/docs/how-it-works.md @@ -33,9 +33,10 @@ Current public limit: `moonshotai/Kimi-K2.6` with `limit.context = 262144` and `limit.output = 8192` - the written provider config includes the validated chat-completions model - catalog, currently `moonshotai/Kimi-K2.6` and - `qwen/qwen3-235b-a22b-instruct-2507-fp8`, so Kilo's OpenCode-style - `/models` picker can switch between validated GonkaGate models + catalog, currently `moonshotai/Kimi-K2.6`, + `qwen/qwen3-235b-a22b-instruct-2507-fp8`, and + `minimaxai/minimax-m2.7`, so Kilo's OpenCode-style `/models` picker can + switch between validated GonkaGate models - broader model claims still require additional proof before models should be added to the validated catalog diff --git a/docs/release-readiness.md b/docs/release-readiness.md index e1555f2..030126d 100644 --- a/docs/release-readiness.md +++ b/docs/release-readiness.md @@ -20,10 +20,12 @@ docs, and tests for these facts: - curated public default: `moonshotai/Kimi-K2.6` - validated provider catalog exposed to Kilo's OpenCode-style `/models` picker: - `moonshotai/Kimi-K2.6` and - `qwen/qwen3-235b-a22b-instruct-2507-fp8` + `moonshotai/Kimi-K2.6`, + `qwen/qwen3-235b-a22b-instruct-2507-fp8`, and + `minimaxai/minimax-m2.7` - curated model limits for the validated catalog: - `limit.context = 262144`; `limit.output = 8192` + `limit.output = 8192` for all validated entries; `limit.context = 262144` + for Kimi/Qwen and `204800` for MiniMax - managed secret path: `~/.gonkagate/kilo/api-key` - project scope stays secret-free and still depends on a compatible user-level `provider.gonkagate` definition on each machine @@ -46,6 +48,10 @@ Moonshot metadata checked on 2026-04-29: - the April 14, 2026 Kilo compatibility spike captured `qwen/qwen3-235b-a22b-instruct-2507-fp8` as a validated chat-completions model with a 262K context window and `maxTokens` 8192 +- NVIDIA NIM metadata checked on 2026-05-29 lists + `minimaxai/minimax-m2.7` as MiniMax M2.7 with a 204,800 input context + length; the package keeps the same installer-managed `limit.output = 8192` + compatibility clamp for this catalog entry - npm registry metadata checked on 2026-04-29 showed `@kilocode/cli` patch releases in the `7.2.x` line, including `7.2.14`, with both `kilo` and `kilocode` binaries still exposed by the wrapper package @@ -76,4 +82,5 @@ repository-only pass: Those items do not change the current package contract: the publishable surface remains the minimum Kilo `7.2.0` floor without an upper version bound, the validated GonkaGate chat-completions catalog with Kimi as the recommended -default, and the current non-Windows verification policy documented above. +default, Qwen3 and MiniMax as additional validated entries, and the current +non-Windows verification policy documented above. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 02e6dd0..93c9c85 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -17,14 +17,15 @@ If you see a config error mentioning you are likely running a stale build that predates the required Kilo 7.2.0 output-limit fix. -## Why Does `/models` Show Only One GonkaGate Model? +## Why Does `/models` Show Too Few GonkaGate Models? Current builds write the validated GonkaGate chat-completions catalog into `provider.gonkagate.models`, so Kilo's OpenCode-style `/models` picker should -show both `moonshotai/Kimi-K2.6` and -`qwen/qwen3-235b-a22b-instruct-2507-fp8`. +show `moonshotai/Kimi-K2.6`, +`qwen/qwen3-235b-a22b-instruct-2507-fp8`, and +`minimaxai/minimax-m2.7`. -If `/models` still shows only one GonkaGate model, rerun the installer from a +If `/models` still shows fewer GonkaGate models, rerun the installer from a current build so the user-level `provider.gonkagate` definition is refreshed. Also check for a higher-precedence Kilo layer such as project config, `KILO_CONFIG`, `KILO_CONFIG_DIR`, or `KILO_CONFIG_CONTENT` defining its own diff --git a/docs/user-guide.md b/docs/user-guide.md index 2990dd4..7eb553b 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -26,9 +26,11 @@ Today the public package is intentionally narrow: - current curated default: `moonshotai/Kimi-K2.6` - validated GonkaGate catalog for Kilo's OpenCode-style `/models` picker: - `moonshotai/Kimi-K2.6` and - `qwen/qwen3-235b-a22b-instruct-2507-fp8` -- managed model limits: `limit.context = 262144`, `limit.output = 8192` + `moonshotai/Kimi-K2.6`, + `qwen/qwen3-235b-a22b-instruct-2507-fp8`, and + `minimaxai/minimax-m2.7` +- managed model limits: `limit.output = 8192` for all validated entries; + `limit.context = 262144` for Kimi/Qwen and `204800` for MiniMax - no native Windows production claim yet ## Before You Run It diff --git a/src/constants/models.ts b/src/constants/models.ts index 23d2ea0..1ebf5c6 100644 --- a/src/constants/models.ts +++ b/src/constants/models.ts @@ -117,6 +117,24 @@ export const CURATED_MODEL_REGISTRY = Object.freeze({ transport: "chat_completions", validationStatus: "validated", }, + "minimax-m2.7": { + adapterPackage: "@ai-sdk/openai-compatible", + displayName: "MiniMax M2.7", + limits: { + context: 204800, + output: 8192, + }, + modelId: "minimaxai/minimax-m2.7", + recommended: false, + runtimeCompatibility: { + notes: [ + "NVIDIA NIM metadata lists minimaxai/minimax-m2.7 as MiniMax M2.7 with a 204,800 input context length.", + "The installer writes limit.output = 8192 as the existing conservative Kilo 7.2.0 compatibility clamp for validated catalog entries.", + ], + }, + transport: "chat_completions", + validationStatus: "validated", + }, } as const satisfies CuratedModelRegistry); function toCuratedModelRecord< diff --git a/src/install/README.md b/src/install/README.md index 705752b..cc1c04f 100644 --- a/src/install/README.md +++ b/src/install/README.md @@ -20,6 +20,6 @@ Start here: durable/current-session Kilo proof path with redacted diagnostics The current stock runtime ships a validated curated Kimi K2.6 default plus the -validated Qwen3 235B A22B Instruct 2507 FP8 catalog entry. Keep Kilo-specific -behavior here and do not import OpenCode env vars or config targets as runtime -defaults. +validated Qwen3 235B A22B Instruct 2507 FP8 and MiniMax M2.7 catalog entries. +Keep Kilo-specific behavior here and do not import OpenCode env vars or config +targets as runtime defaults. diff --git a/test/install/models.test.ts b/test/install/models.test.ts index c708695..f1b26b5 100644 --- a/test/install/models.test.ts +++ b/test/install/models.test.ts @@ -17,6 +17,7 @@ test("the default curated model is the shipped validated Kimi public default", ( assert.deepEqual(getValidatedModelKeys(), [ "kimi-k2.6", "qwen3-235b-a22b-instruct-2507-fp8", + "minimax-m2.7", ]); assert.equal(getRecommendedProductionDefaultModel()?.key, "kimi-k2.6"); }); diff --git a/test/package-contract.test.ts b/test/package-contract.test.ts index 512f95c..bb0c39d 100644 --- a/test/package-contract.test.ts +++ b/test/package-contract.test.ts @@ -134,7 +134,8 @@ test("constants use Kilo-specific defaults and leave OpenCode env vars out", () test("curated model registry exposes Kimi as the shipped validated default", () => { const kimi = CURATED_MODEL_REGISTRY["kimi-k2.6"]; - const model = CURATED_MODEL_REGISTRY["qwen3-235b-a22b-instruct-2507-fp8"]; + const qwen = CURATED_MODEL_REGISTRY["qwen3-235b-a22b-instruct-2507-fp8"]; + const minimax = CURATED_MODEL_REGISTRY["minimax-m2.7"]; assert.equal(kimi.adapterPackage, "@ai-sdk/openai-compatible"); assert.deepEqual(kimi.limits, { context: 262144, output: 8192 }); @@ -143,27 +144,38 @@ test("curated model registry exposes Kimi as the shipped validated default", () assert.equal(kimi.transport, "chat_completions"); assert.equal(kimi.validationStatus, "validated"); - assert.equal(model.adapterPackage, "@ai-sdk/openai-compatible"); - assert.equal(model.limits?.context, 262144); - assert.equal(model.limits?.output, 8192); - assert.equal(model.modelId, "qwen/qwen3-235b-a22b-instruct-2507-fp8"); - assert.equal(model.recommended, false); - assert.equal(model.transport, "chat_completions"); - assert.equal(model.validationStatus, "validated"); + assert.equal(qwen.adapterPackage, "@ai-sdk/openai-compatible"); + assert.equal(qwen.limits?.context, 262144); + assert.equal(qwen.limits?.output, 8192); + assert.equal(qwen.modelId, "qwen/qwen3-235b-a22b-instruct-2507-fp8"); + assert.equal(qwen.recommended, false); + assert.equal(qwen.transport, "chat_completions"); + assert.equal(qwen.validationStatus, "validated"); + + assert.equal(minimax.adapterPackage, "@ai-sdk/openai-compatible"); + assert.equal(minimax.limits?.context, 204800); + assert.equal(minimax.limits?.output, 8192); + assert.equal(minimax.modelId, "minimaxai/minimax-m2.7"); + assert.equal(minimax.recommended, false); + assert.equal(minimax.transport, "chat_completions"); + assert.equal(minimax.validationStatus, "validated"); assert.deepEqual(getValidatedModelKeys(), [ "kimi-k2.6", "qwen3-235b-a22b-instruct-2507-fp8", + "minimax-m2.7", ]); assert.equal(getRecommendedProductionDefaultModel()?.key, "kimi-k2.6"); }); -test("managed provider config includes the required Kilo output token limit", () => { +test("managed provider config includes the required Kilo model limits", () => { const providerConfig = buildManagedProviderConfig("kimi-k2.6") as { models: Record; }; assert.equal(providerConfig.models["kimi-k2.6"]?.limit?.context, 262144); assert.equal(providerConfig.models["kimi-k2.6"]?.limit?.output, 8192); + assert.equal(providerConfig.models["minimax-m2.7"]?.limit?.context, 204800); + assert.equal(providerConfig.models["minimax-m2.7"]?.limit?.output, 8192); }); test("managed provider config exposes the validated catalog for model switching", () => { @@ -174,10 +186,16 @@ test("managed provider config exposes the validated catalog for model switching" assert.deepEqual(Object.keys(providerConfig.models), [ "kimi-k2.6", "qwen3-235b-a22b-instruct-2507-fp8", + "minimax-m2.7", ]); assert.equal(providerConfig.models["kimi-k2.6"]?.id, "moonshotai/Kimi-K2.6"); assert.equal( providerConfig.models["qwen3-235b-a22b-instruct-2507-fp8"]?.id, "qwen/qwen3-235b-a22b-instruct-2507-fp8", ); + assert.equal( + providerConfig.models["minimax-m2.7"]?.id, + "minimaxai/minimax-m2.7", + ); + assert.equal(providerConfig.models["minimax-m2.7"]?.name, "MiniMax M2.7"); });