Codex の際にブランチ名のサマリ処理に問題があったのを修正

This commit is contained in:
nrslib 2026-02-04 13:40:57 +09:00
parent 8e509e13c6
commit c4ebbdb6a6
2 changed files with 23 additions and 21 deletions

View File

@ -38,13 +38,13 @@ const mockProvider = {
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks(); vi.clearAllMocks();
mockGetProvider.mockReturnValue(mockProvider); mockGetProvider.mockReturnValue(mockProvider);
mockLoadGlobalConfig.mockReturnValue({ mockLoadGlobalConfig.mockReturnValue({
language: 'ja', language: 'ja',
defaultPiece: 'default', defaultPiece: 'default',
logLevel: 'info', logLevel: 'info',
provider: 'claude', provider: 'claude',
model: 'haiku', model: undefined,
}); });
}); });
describe('summarizeTaskName', () => { describe('summarizeTaskName', () => {
@ -63,16 +63,15 @@ describe('summarizeTaskName', () => {
// Then // Then
expect(result).toBe('add-auth'); expect(result).toBe('add-auth');
expect(mockGetProvider).toHaveBeenCalledWith('claude'); expect(mockGetProvider).toHaveBeenCalledWith('claude');
expect(mockProviderCall).toHaveBeenCalledWith( expect(mockProviderCall).toHaveBeenCalledWith(
'summarizer', 'summarizer',
'long task name for testing', 'long task name for testing',
expect.objectContaining({ expect.objectContaining({
cwd: '/project', cwd: '/project',
model: 'haiku', allowedTools: [],
allowedTools: [], })
}) );
); });
});
it('should return AI-generated slug for English task name', async () => { it('should return AI-generated slug for English task name', async () => {
// Given // Given

View File

@ -64,15 +64,18 @@ export class TaskSummarizer {
const globalConfig = loadGlobalConfig(); const globalConfig = loadGlobalConfig();
const providerType = (globalConfig.provider as ProviderType) ?? 'claude'; const providerType = (globalConfig.provider as ProviderType) ?? 'claude';
const model = options.model ?? globalConfig.model ?? 'haiku'; const model = options.model ?? globalConfig.model;
const provider = getProvider(providerType); const provider = getProvider(providerType);
const response = await provider.call('summarizer', taskName, { const callOptions: SummarizeOptions & { systemPrompt: string; allowedTools: [] } = {
cwd: options.cwd, cwd: options.cwd,
model,
systemPrompt: loadTemplate('score_slug_system_prompt', 'en'), systemPrompt: loadTemplate('score_slug_system_prompt', 'en'),
allowedTools: [], allowedTools: [],
}); };
if (model) {
callOptions.model = model;
}
const response = await provider.call('summarizer', taskName, callOptions);
const slug = sanitizeSlug(response.content); const slug = sanitizeSlug(response.content);
log.info('Task name summarized', { original: taskName, slug }); log.info('Task name summarized', { original: taskName, slug });