From c344f3f0abc2fae6f9b3afee5ef365c72d20416a Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Sat, 24 Oct 2026 15:44:18 -0700 Subject: [PATCH] fix(source-control): drop Kimi flags Kimi Code rejects (--quiet, --thinking) (#33285) Kimi Code (the current `kimi`) rejects --quiet/--thinking/--no-thinking; send only --prompt [--model]. Fixes #14771. Supersedes #14790. Co-authored-by: BingZ <11211020+bbingz@users.noreply.github.com> --- src/shared/commit-message-agent-spec.test.ts | 44 +++++++------------ .../commit-message-agent-specs-secondary.ts | 18 ++------ 2 files changed, 19 insertions(+), 43 deletions(-) diff --git a/src/shared/commit-message-agent-spec.test.ts b/src/shared/commit-message-agent-spec.test.ts index b5880aab3aa..d24387144cc 100644 --- a/src/shared/commit-message-agent-spec.test.ts +++ b/src/shared/commit-message-agent-spec.test.ts @@ -53,25 +53,22 @@ describe('COMMIT_MESSAGE_AGENT_SPECS', () => { expect(COMMIT_MESSAGE_AGENT_SPECS.pi?.defaultModelId).toBe('default') }) - it('uses --prompt (not Claude --print) for Kimi non-interactive generation', () => { - // Why: kimi-code 0.31+ rejects --print; non-interactive mode is --prompt/-p (#11669). + it('passes only flags Kimi Code accepts for non-interactive generation', () => { + // Why: Kimi Code rejects --print/--quiet/--thinking/--no-thinking as unknown options (#11669, #14771). const spec = COMMIT_MESSAGE_AGENT_SPECS.kimi - expect(spec).toBeDefined() - expect(spec!.promptDelivery).toBe('argv') - const args = spec!.buildArgs({ - prompt: 'Name a branch for adding login', - model: 'kimi-code/kimi-for-coding', - thinkingLevel: 'on' - }) - expect(args).toContain('--prompt') - expect(args).not.toContain('--print') - // Why: with argv delivery the prompt is the value of --prompt. - const promptIndex = args.indexOf('--prompt') - expect(promptIndex).toBeGreaterThanOrEqual(0) - expect(args[promptIndex + 1]).toBe('Name a branch for adding login') - expect(args).toContain('--quiet') - expect(args).toContain('--thinking') - expect(args).toEqual(expect.arrayContaining(['--model', 'kimi-code/kimi-for-coding'])) + expect(spec?.promptDelivery).toBe('argv') + expect( + spec?.buildArgs({ + prompt: 'Name a branch for adding login', + model: 'kimi-code/kimi-for-coding', + thinkingLevel: 'on' + }) + ).toEqual([ + '--prompt', + 'Name a branch for adding login', + '--model', + 'kimi-code/kimi-for-coding' + ]) }) it('uses Muse exec for non-interactive Source Control AI generation', () => { @@ -101,17 +98,6 @@ describe('COMMIT_MESSAGE_AGENT_SPECS', () => { ]) }) - it('maps Kimi thinking off and omission to distinct argv', () => { - const spec = COMMIT_MESSAGE_AGENT_SPECS.kimi! - const offArgs = spec.buildArgs({ prompt: 'PROMPT', model: 'default', thinkingLevel: 'off' }) - const defaultArgs = spec.buildArgs({ prompt: 'PROMPT', model: 'default' }) - - expect(offArgs).toContain('--no-thinking') - expect(offArgs).not.toContain('--thinking') - expect(defaultArgs).not.toContain('--thinking') - expect(defaultArgs).not.toContain('--no-thinking') - }) - it('omits Kimi --model for the config default and an empty model', () => { const spec = COMMIT_MESSAGE_AGENT_SPECS.kimi! diff --git a/src/shared/commit-message-agent-specs-secondary.ts b/src/shared/commit-message-agent-specs-secondary.ts index a07d7e9f2c5..751b7c37605 100644 --- a/src/shared/commit-message-agent-specs-secondary.ts +++ b/src/shared/commit-message-agent-specs-secondary.ts @@ -84,16 +84,11 @@ export function buildSecondaryCommitMessageAgentSpecs({ // Why: kimi-code accepts the generation prompt only via --prompt/-p (Claude's // --print is rejected). Deliver on argv so --prompt receives the text (#11669). promptDelivery: 'argv', - buildArgs: ({ prompt, model, thinkingLevel }) => [ + // Why: Kimi Code has no --quiet/--thinking/--no-thinking; -p alone is headless (#14771). + buildArgs: ({ prompt, model }) => [ '--prompt', prompt, - '--quiet', - ...(model && model !== 'default' ? ['--model', model] : []), - ...(thinkingLevel === 'on' - ? ['--thinking'] - : thinkingLevel === 'off' - ? ['--no-thinking'] - : []) + ...(model && model !== 'default' ? ['--model', model] : []) ], modelSource: 'static', models: [ @@ -102,12 +97,7 @@ export function buildSecondaryCommitMessageAgentSpecs({ // Why: Kimi resolves its managed model by provider/model; bare model // names are rejected by the CLI with "LLM not set". id: 'kimi-code/kimi-for-coding', - label: 'Kimi K2.6', - thinkingLevels: [ - { id: 'on', label: 'On' }, - { id: 'off', label: 'Off' } - ], - defaultThinkingLevel: 'on' + label: 'Kimi K2.6' } ], defaultModelId: 'default'