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); + }); +});