diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a93027..716278a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- Added curated model support for `kimi-k2.6` -> `moonshotai/Kimi-K2.6` in the installer model picker and docs. - Made local alias package bootstrap publish without npm provenance because provenance requires a supported CI/OIDC provider. - Made alias package publishing skip cleanly until `@gonkagate/claude-code-setup` is bootstrapped on npm, with an explicit override for the first package publish. - Added `@gonkagate/claude-code-setup` as a setup-style alias for the existing Claude Code installer. diff --git a/README.md b/README.md index 558ba38..e525d0d 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,12 @@ You need: - Node.js 18+ - a GonkaGate API key -## Supported Model +## Supported Models -Current public Claude Code model in the curated registry: +Current public Claude Code models in the curated registry: - `qwen3-235b` -> `qwen/qwen3-235b-a22b-instruct-2507-fp8` +- `kimi-k2.6` -> `moonshotai/Kimi-K2.6` (default) ## What It Does diff --git a/docs/how-it-works.md b/docs/how-it-works.md index 0860f27..81e63f4 100644 --- a/docs/how-it-works.md +++ b/docs/how-it-works.md @@ -12,9 +12,10 @@ These values are intentionally fixed by the installer: - Auth variable: `ANTHROPIC_AUTH_TOKEN` - Model selection comes only from a curated in-repo allowlist -Today the curated public Claude Code model registry contains one supported entry: +Today the curated public Claude Code model registry contains: -- `qwen3-235b` -> `qwen/qwen3-235b-a22b-instruct-2507-fp8` (default, current only option) +- `qwen3-235b` -> `qwen/qwen3-235b-a22b-instruct-2507-fp8` +- `kimi-k2.6` -> `moonshotai/Kimi-K2.6` (default) Users provide only: diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 9f5683c..22ec710 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -14,9 +14,10 @@ The installer writes Claude Code settings, but an existing direct login can stil This installer writes the selected model from its curated GonkaGate-supported registry. -Today that curated list contains one option: +Today that curated list contains: - `qwen3-235b` -> `qwen/qwen3-235b-a22b-instruct-2507-fp8` +- `kimi-k2.6` -> `moonshotai/Kimi-K2.6` (default) If that model is unavailable, the likely cause is a backend deployment or model availability mismatch. This installer does not expose custom base URL or arbitrary custom model overrides, so the right next step is GonkaGate support or the backend troubleshooting docs in `gonka-proxy`. diff --git a/src/constants/models.ts b/src/constants/models.ts index c0cec64..d306a4c 100644 --- a/src/constants/models.ts +++ b/src/constants/models.ts @@ -12,6 +12,13 @@ const curatedModelRegistry = [ displayName: "Qwen 3 235B Instruct", modelId: "qwen/qwen3-235b-a22b-instruct-2507-fp8", description: "Current GonkaGate public Claude Code model.", + isDefault: false + }, + { + key: "kimi-k2.6", + displayName: "MoonshotAI Kimi K2.6", + modelId: "moonshotai/Kimi-K2.6", + description: "GonkaGate public Claude Code model.", isDefault: true } ] as const satisfies readonly SupportedModelDefinition[]; diff --git a/src/install/prompts.ts b/src/install/prompts.ts index fa384f4..15c98d5 100644 --- a/src/install/prompts.ts +++ b/src/install/prompts.ts @@ -126,7 +126,7 @@ export function buildModelPromptConfig( value: model.key, name: model.displayName, short: model.key, - description: model.description ? `${model.description} Model ID: ${model.modelId}` : `Model ID: ${model.modelId}` + description: `${model.description ? `${model.description} ` : ""}Model ID: ${model.modelId}` })), pageSize: Math.min(models.length, 8), loop: false, diff --git a/test/install.test.ts b/test/install.test.ts index 02cdf5b..e3ca6a3 100644 --- a/test/install.test.ts +++ b/test/install.test.ts @@ -14,7 +14,7 @@ import { buildModelPromptConfig, buildTrackedLocalSettingsPromptConfig, promptFo import { validateApiKey } from "../src/install/validate-api-key.js"; import { writeSettings } from "../src/install/write-settings.js"; import { CLAUDE_SETTINGS_SCHEMA_URL, GONKAGATE_BASE_URL } from "../src/constants/gateway.js"; -import { DEFAULT_MODEL, DEFAULT_MODEL_KEY } from "../src/constants/models.js"; +import { DEFAULT_MODEL, DEFAULT_MODEL_KEY, requireSupportedModel } from "../src/constants/models.js"; test("mergeSettingsWithGonkaEnv preserves unrelated settings and updates gateway env", () => { const merged = mergeSettingsWithGonkaEnv( @@ -81,6 +81,12 @@ test("parseArgs accepts supported --model values and rejects unsupported ones", assert.throws(() => parseCliOptions(["--model", "not-supported"], silentOutput), /Allowed choices are/); }); +test("supported model registry includes kimi-k2.6", () => { + const model = requireSupportedModel("kimi-k2.6"); + + assert.equal(model.modelId, "moonshotai/Kimi-K2.6"); +}); + test("loadSettings rejects invalid JSON instead of overwriting it", async () => { const directory = await mkdtemp(path.join(tmpdir(), "gonkagate-invalid-json-")); const filePath = path.join(directory, "settings.json");