From d008c83ec910bdc2089cfc5735efb862b6825a76 Mon Sep 17 00:00:00 2001 From: Viktorplus <36795799+viktorplus@users.noreply.github.com> Date: Sat, 6 Jun 2026 13:21:34 +0200 Subject: [PATCH] feat(01-02): add Kimi runtime name policy - Register canonical kimi in runtime alias manifest and fallback policy - Add focused canonicalization coverage without extra aliases --- .../bin/shared/runtime-aliases.manifest.json | 3 +++ src/runtime-name-policy.cts | 1 + tests/runtime-name-policy.test.cjs | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 tests/runtime-name-policy.test.cjs diff --git a/gsd-core/bin/shared/runtime-aliases.manifest.json b/gsd-core/bin/shared/runtime-aliases.manifest.json index 2af00c148..3192f64ce 100644 --- a/gsd-core/bin/shared/runtime-aliases.manifest.json +++ b/gsd-core/bin/shared/runtime-aliases.manifest.json @@ -64,6 +64,9 @@ "hermes-agent", "hermes-cli" ], + "kimi": [ + "kimi" + ], "codebuddy": [ "codebuddy", "codebuddy-cli" diff --git a/src/runtime-name-policy.cts b/src/runtime-name-policy.cts index 199515482..68cb1a850 100644 --- a/src/runtime-name-policy.cts +++ b/src/runtime-name-policy.cts @@ -28,6 +28,7 @@ const FALLBACK_ALIASES: Readonly> = { trae: ['trae', 'trae-cli'], qwen: ['qwen', 'qwen-code', 'qwen-cli'], hermes: ['hermes', 'hermes-agent', 'hermes-cli'], + kimi: ['kimi'], codebuddy: ['codebuddy', 'codebuddy-cli'], cline: ['cline', 'cline-cli'], }; diff --git a/tests/runtime-name-policy.test.cjs b/tests/runtime-name-policy.test.cjs new file mode 100644 index 000000000..abc6ee11d --- /dev/null +++ b/tests/runtime-name-policy.test.cjs @@ -0,0 +1,20 @@ +'use strict'; + +const { describe, test } = require('node:test'); +const assert = require('node:assert/strict'); +const path = require('node:path'); + +const ROOT = path.join(__dirname, '..'); +const { + canonicalizeRuntimeName, + resolveRuntimeNameFromCandidates, +} = require(path.join(ROOT, 'gsd-core', 'bin', 'lib', 'runtime-name-policy.cjs')); + +describe('runtime-name-policy canonical runtime ids', () => { + test('canonicalizes Kimi without adding extra aliases', () => { + assert.strictEqual(canonicalizeRuntimeName('kimi'), 'kimi'); + assert.strictEqual(canonicalizeRuntimeName(' KIMI '), 'kimi'); + assert.strictEqual(resolveRuntimeNameFromCandidates('', null, 'kimi'), 'kimi'); + assert.strictEqual(canonicalizeRuntimeName('kimi-cli'), null); + }); +});