fix(pi): inherit default model and api key for embedded agent
This commit is contained in:
@@ -44,11 +44,39 @@ import {
|
||||
type ExternalBackendName,
|
||||
} from '../backends/index.js';
|
||||
|
||||
function collectModelApiKeys(config: Config): Record<string, string> {
|
||||
const keys: Record<string, string> = {};
|
||||
const candidates = [
|
||||
config.models.default,
|
||||
config.models.fast,
|
||||
config.models.complex,
|
||||
config.models.local,
|
||||
...Object.values(config.models.local_providers ?? {}),
|
||||
];
|
||||
|
||||
for (const candidate of candidates) {
|
||||
if (!candidate?.provider || !candidate.api_key) {
|
||||
continue;
|
||||
}
|
||||
if (candidate.api_key.trim().length === 0) {
|
||||
continue;
|
||||
}
|
||||
keys[candidate.provider] = candidate.api_key;
|
||||
}
|
||||
|
||||
return keys;
|
||||
}
|
||||
|
||||
function defaultPiModelSpec(config: Config): string {
|
||||
return `${config.models.default.provider}:${config.models.default.model}`;
|
||||
}
|
||||
|
||||
export function createConfiguredExternalBackends(config: Config): {
|
||||
externalBackends: Partial<Record<ExternalBackendName, ExternalBackend>>;
|
||||
defaultName?: ExternalBackendName;
|
||||
} {
|
||||
const backends: Partial<Record<ExternalBackendName, ExternalBackend>> = {};
|
||||
const modelApiKeys = collectModelApiKeys(config);
|
||||
|
||||
if (config.backends.claude_code.enabled) {
|
||||
backends.claude_code = new ClaudeCodeBackend(
|
||||
@@ -82,6 +110,8 @@ export function createConfiguredExternalBackends(config: Config): {
|
||||
backends.pi_embedded = new PiEmbeddedBackend({
|
||||
timeoutMs: config.backends.pi_embedded.timeout_ms,
|
||||
model: config.backends.pi_embedded.model,
|
||||
defaultModelSpec: defaultPiModelSpec(config),
|
||||
getApiKey: (provider) => modelApiKeys[provider],
|
||||
systemPromptMode: config.backends.pi_embedded.system_prompt_mode,
|
||||
module: config.backends.pi_embedded.module,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user