fix(pi): inherit default model and api key for embedded agent

This commit is contained in:
William Valentin
2026-02-23 22:06:42 -08:00
parent e8204f5d42
commit 1dfa6ce2b4
3 changed files with 78 additions and 3 deletions
+30
View File
@@ -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,
});