mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-04 09:13:08 +00:00
refactor: simplify getPhaseModelWithOverrides calls per code review
Address code review feedback on PR #629: - Make settingsService parameter optional in getPhaseModelWithOverrides - Function now handles undefined settingsService gracefully by returning defaults - Remove redundant ternary checks in 4 call sites: - apps/server/src/routes/context/routes/describe-file.ts - apps/server/src/routes/context/routes/describe-image.ts - apps/server/src/routes/worktree/routes/generate-commit-message.ts - apps/server/src/services/auto-mode-service.ts - Remove unused DEFAULT_PHASE_MODELS imports where applicable
This commit is contained in:
@@ -15,6 +15,7 @@ import type {
|
|||||||
PhaseModelEntry,
|
PhaseModelEntry,
|
||||||
Credentials,
|
Credentials,
|
||||||
} from '@automaker/types';
|
} from '@automaker/types';
|
||||||
|
import { DEFAULT_PHASE_MODELS } from '@automaker/types';
|
||||||
import {
|
import {
|
||||||
mergeAutoModePrompts,
|
mergeAutoModePrompts,
|
||||||
mergeAgentPrompts,
|
mergeAgentPrompts,
|
||||||
@@ -502,17 +503,28 @@ export interface PhaseModelWithOverridesResult {
|
|||||||
* Also resolves the provider if the phase model has a providerId.
|
* Also resolves the provider if the phase model has a providerId.
|
||||||
*
|
*
|
||||||
* @param phase - The phase key (e.g., 'enhancementModel', 'specGenerationModel')
|
* @param phase - The phase key (e.g., 'enhancementModel', 'specGenerationModel')
|
||||||
* @param settingsService - Settings service instance
|
* @param settingsService - Optional settings service instance (returns defaults if undefined)
|
||||||
* @param projectPath - Optional project path for checking overrides
|
* @param projectPath - Optional project path for checking overrides
|
||||||
* @param logPrefix - Prefix for log messages
|
* @param logPrefix - Prefix for log messages
|
||||||
* @returns Promise resolving to phase model with provider info
|
* @returns Promise resolving to phase model with provider info
|
||||||
*/
|
*/
|
||||||
export async function getPhaseModelWithOverrides(
|
export async function getPhaseModelWithOverrides(
|
||||||
phase: PhaseModelKey,
|
phase: PhaseModelKey,
|
||||||
settingsService: SettingsService,
|
settingsService?: SettingsService | null,
|
||||||
projectPath?: string,
|
projectPath?: string,
|
||||||
logPrefix = '[SettingsHelper]'
|
logPrefix = '[SettingsHelper]'
|
||||||
): Promise<PhaseModelWithOverridesResult> {
|
): Promise<PhaseModelWithOverridesResult> {
|
||||||
|
// Handle undefined settingsService gracefully
|
||||||
|
if (!settingsService) {
|
||||||
|
logger.info(`${logPrefix} SettingsService not available, using default for ${phase}`);
|
||||||
|
return {
|
||||||
|
phaseModel: DEFAULT_PHASE_MODELS[phase] || { model: 'sonnet' },
|
||||||
|
isProjectOverride: false,
|
||||||
|
provider: undefined,
|
||||||
|
credentials: undefined,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const globalSettings = await settingsService.getGlobalSettings();
|
const globalSettings = await settingsService.getGlobalSettings();
|
||||||
const credentials = await settingsService.getCredentials();
|
const credentials = await settingsService.getCredentials();
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
import type { Request, Response } from 'express';
|
import type { Request, Response } from 'express';
|
||||||
import { createLogger } from '@automaker/utils';
|
import { createLogger } from '@automaker/utils';
|
||||||
import { DEFAULT_PHASE_MODELS } from '@automaker/types';
|
|
||||||
import { PathNotAllowedError } from '@automaker/platform';
|
import { PathNotAllowedError } from '@automaker/platform';
|
||||||
import { resolvePhaseModel } from '@automaker/model-resolver';
|
import { resolvePhaseModel } from '@automaker/model-resolver';
|
||||||
import { simpleQuery } from '../../../providers/simple-query-service.js';
|
import { simpleQuery } from '../../../providers/simple-query-service.js';
|
||||||
@@ -161,18 +160,12 @@ ${contentToAnalyze}`;
|
|||||||
phaseModel: phaseModelEntry,
|
phaseModel: phaseModelEntry,
|
||||||
provider,
|
provider,
|
||||||
credentials,
|
credentials,
|
||||||
} = settingsService
|
} = await getPhaseModelWithOverrides(
|
||||||
? await getPhaseModelWithOverrides(
|
'fileDescriptionModel',
|
||||||
'fileDescriptionModel',
|
settingsService,
|
||||||
settingsService,
|
cwd,
|
||||||
cwd,
|
'[DescribeFile]'
|
||||||
'[DescribeFile]'
|
);
|
||||||
)
|
|
||||||
: {
|
|
||||||
phaseModel: DEFAULT_PHASE_MODELS.fileDescriptionModel,
|
|
||||||
provider: undefined,
|
|
||||||
credentials: undefined,
|
|
||||||
};
|
|
||||||
const { model, thinkingLevel } = resolvePhaseModel(phaseModelEntry);
|
const { model, thinkingLevel } = resolvePhaseModel(phaseModelEntry);
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
import type { Request, Response } from 'express';
|
import type { Request, Response } from 'express';
|
||||||
import { createLogger, readImageAsBase64 } from '@automaker/utils';
|
import { createLogger, readImageAsBase64 } from '@automaker/utils';
|
||||||
import { DEFAULT_PHASE_MODELS, isCursorModel } from '@automaker/types';
|
import { isCursorModel } from '@automaker/types';
|
||||||
import { resolvePhaseModel } from '@automaker/model-resolver';
|
import { resolvePhaseModel } from '@automaker/model-resolver';
|
||||||
import { simpleQuery } from '../../../providers/simple-query-service.js';
|
import { simpleQuery } from '../../../providers/simple-query-service.js';
|
||||||
import * as secureFs from '../../../lib/secure-fs.js';
|
import * as secureFs from '../../../lib/secure-fs.js';
|
||||||
@@ -279,18 +279,12 @@ export function createDescribeImageHandler(
|
|||||||
phaseModel: phaseModelEntry,
|
phaseModel: phaseModelEntry,
|
||||||
provider,
|
provider,
|
||||||
credentials,
|
credentials,
|
||||||
} = settingsService
|
} = await getPhaseModelWithOverrides(
|
||||||
? await getPhaseModelWithOverrides(
|
'imageDescriptionModel',
|
||||||
'imageDescriptionModel',
|
settingsService,
|
||||||
settingsService,
|
cwd,
|
||||||
cwd,
|
'[DescribeImage]'
|
||||||
'[DescribeImage]'
|
);
|
||||||
)
|
|
||||||
: {
|
|
||||||
phaseModel: DEFAULT_PHASE_MODELS.imageDescriptionModel,
|
|
||||||
provider: undefined,
|
|
||||||
credentials: undefined,
|
|
||||||
};
|
|
||||||
const { model, thinkingLevel } = resolvePhaseModel(phaseModelEntry);
|
const { model, thinkingLevel } = resolvePhaseModel(phaseModelEntry);
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { promisify } from 'util';
|
|||||||
import { existsSync } from 'fs';
|
import { existsSync } from 'fs';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import { createLogger } from '@automaker/utils';
|
import { createLogger } from '@automaker/utils';
|
||||||
import { DEFAULT_PHASE_MODELS, isCursorModel, stripProviderPrefix } from '@automaker/types';
|
import { isCursorModel, stripProviderPrefix } from '@automaker/types';
|
||||||
import { resolvePhaseModel } from '@automaker/model-resolver';
|
import { resolvePhaseModel } from '@automaker/model-resolver';
|
||||||
import { mergeCommitMessagePrompts } from '@automaker/prompts';
|
import { mergeCommitMessagePrompts } from '@automaker/prompts';
|
||||||
import { ProviderFactory } from '../../../providers/provider-factory.js';
|
import { ProviderFactory } from '../../../providers/provider-factory.js';
|
||||||
@@ -162,18 +162,12 @@ export function createGenerateCommitMessageHandler(
|
|||||||
phaseModel: phaseModelEntry,
|
phaseModel: phaseModelEntry,
|
||||||
provider: claudeCompatibleProvider,
|
provider: claudeCompatibleProvider,
|
||||||
credentials,
|
credentials,
|
||||||
} = settingsService
|
} = await getPhaseModelWithOverrides(
|
||||||
? await getPhaseModelWithOverrides(
|
'commitMessageModel',
|
||||||
'commitMessageModel',
|
settingsService,
|
||||||
settingsService,
|
worktreePath,
|
||||||
worktreePath,
|
'[GenerateCommitMessage]'
|
||||||
'[GenerateCommitMessage]'
|
);
|
||||||
)
|
|
||||||
: {
|
|
||||||
phaseModel: DEFAULT_PHASE_MODELS.commitMessageModel,
|
|
||||||
provider: undefined,
|
|
||||||
credentials: undefined,
|
|
||||||
};
|
|
||||||
const { model } = resolvePhaseModel(phaseModelEntry);
|
const { model } = resolvePhaseModel(phaseModelEntry);
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|||||||
@@ -2318,18 +2318,12 @@ Format your response as a structured markdown document.`;
|
|||||||
phaseModel: phaseModelEntry,
|
phaseModel: phaseModelEntry,
|
||||||
provider: analysisClaudeProvider,
|
provider: analysisClaudeProvider,
|
||||||
credentials,
|
credentials,
|
||||||
} = this.settingsService
|
} = await getPhaseModelWithOverrides(
|
||||||
? await getPhaseModelWithOverrides(
|
'projectAnalysisModel',
|
||||||
'projectAnalysisModel',
|
this.settingsService,
|
||||||
this.settingsService,
|
projectPath,
|
||||||
projectPath,
|
'[AutoMode]'
|
||||||
'[AutoMode]'
|
);
|
||||||
)
|
|
||||||
: {
|
|
||||||
phaseModel: DEFAULT_PHASE_MODELS.projectAnalysisModel,
|
|
||||||
provider: undefined,
|
|
||||||
credentials: undefined,
|
|
||||||
};
|
|
||||||
const { model: analysisModel, thinkingLevel: analysisThinkingLevel } =
|
const { model: analysisModel, thinkingLevel: analysisThinkingLevel } =
|
||||||
resolvePhaseModel(phaseModelEntry);
|
resolvePhaseModel(phaseModelEntry);
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|||||||
Reference in New Issue
Block a user