mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-20 12:11:28 -07:00
27 lines
981 B
TypeScript
27 lines
981 B
TypeScript
import type { AiConfig, AiFeatureConfig } from '../types';
|
|
|
|
function trimToOverride(value: string | undefined): string | undefined {
|
|
if (typeof value !== 'string') return undefined;
|
|
const trimmed = value.trim();
|
|
return trimmed.length > 0 ? trimmed : undefined;
|
|
}
|
|
|
|
export function mergeAiConfig(
|
|
sharedConfig: AiConfig | undefined,
|
|
featureConfig?: AiFeatureConfig | boolean | null,
|
|
): AiConfig {
|
|
const overrides = featureConfig && typeof featureConfig === 'object' ? featureConfig : undefined;
|
|
const modelOverride = trimToOverride(overrides?.model);
|
|
const systemPromptOverride = trimToOverride(overrides?.systemPrompt);
|
|
|
|
return {
|
|
enabled: sharedConfig?.enabled,
|
|
apiKey: sharedConfig?.apiKey,
|
|
apiKeyCommand: sharedConfig?.apiKeyCommand,
|
|
baseUrl: sharedConfig?.baseUrl,
|
|
model: modelOverride ?? sharedConfig?.model,
|
|
systemPrompt: systemPromptOverride ?? sharedConfig?.systemPrompt,
|
|
requestTimeoutMs: sharedConfig?.requestTimeoutMs,
|
|
};
|
|
}
|