From 69f13283a2d2600c80aedabd909b05dcb4b371c8 Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Mon, 23 Feb 2026 15:18:32 +0900 Subject: [PATCH] fix: movement provider override precedence in AgentRunner --- src/__tests__/option-resolution-order.test.ts | 10 +++++----- src/agents/runner.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/__tests__/option-resolution-order.test.ts b/src/__tests__/option-resolution-order.test.ts index bc90bfc..2ffba87 100644 --- a/src/__tests__/option-resolution-order.test.ts +++ b/src/__tests__/option-resolution-order.test.ts @@ -62,7 +62,7 @@ describe('option resolution order', () => { loadTemplateMock.mockReturnValue('template'); }); - it('should resolve provider in order: CLI > Config(project??global) > stepProvider > default', async () => { + it('should resolve provider in order: CLI > stepProvider > Config(project??global) > default', async () => { // Given loadConfigMock.mockReturnValue({ project: { provider: 'opencode' }, @@ -79,14 +79,14 @@ describe('option resolution order', () => { // Then expect(getProviderMock).toHaveBeenLastCalledWith('codex'); - // When: CLI 指定なし(project provider が有効: resolveConfigValues は project.provider ?? global.provider を返す) + // When: CLI 指定なし(stepProvider が優先される) await runAgent(undefined, 'task', { cwd: '/repo', stepProvider: 'claude', }); // Then - expect(getProviderMock).toHaveBeenLastCalledWith('opencode'); + expect(getProviderMock).toHaveBeenLastCalledWith('claude'); // When: project なし → resolveConfigValues は global.provider を返す(フラットマージ) loadConfigMock.mockReturnValue({ @@ -98,8 +98,8 @@ describe('option resolution order', () => { stepProvider: 'claude', }); - // Then: resolveConfigValues returns 'mock' (global fallback), so stepProvider is not reached - expect(getProviderMock).toHaveBeenLastCalledWith('mock'); + // Then: stepProvider が global fallback より優先される + expect(getProviderMock).toHaveBeenLastCalledWith('claude'); // When: stepProvider もなし → 同様に global.provider await runAgent(undefined, 'task', { cwd: '/repo' }); diff --git a/src/agents/runner.ts b/src/agents/runner.ts index e71ac9a..43c2e32 100644 --- a/src/agents/runner.ts +++ b/src/agents/runner.ts @@ -29,9 +29,9 @@ export class AgentRunner { agentConfig?: CustomAgentConfig, ): ProviderType { if (options?.provider) return options.provider; + if (options?.stepProvider) return options.stepProvider; const config = resolveConfigValues(cwd, ['provider']); if (config.provider) return config.provider; - if (options?.stepProvider) return options.stepProvider; if (agentConfig?.provider) return agentConfig.provider; return 'claude'; }