fix(server): preserve adapter-agnostic keys when changing adapter type
When the adapter type changes via PATCH, the server only preserved instruction bundle keys (instructionsBundleMode, etc.) from the existing config. Adapter-agnostic keys like env, cwd, timeoutSec, graceSec, promptTemplate, and bootstrapPromptTemplate were silently dropped if the PATCH payload didn't explicitly include them. This caused env var data loss when adapter type was changed via the UI or API without sending the full existing adapterConfig. The fix preserves these adapter-agnostic keys from the existing config before applying the instruction bundle preservation, matching the UI's behavior in AgentConfigForm.handleSave. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
06cf00129f
commit
ce8d9eb323
1 changed files with 12 additions and 0 deletions
|
|
@ -1772,6 +1772,18 @@ export function agentRoutes(db: Db) {
|
|||
rawEffectiveAdapterConfig = { ...existingAdapterConfig, ...requestedAdapterConfig };
|
||||
}
|
||||
if (changingAdapterType) {
|
||||
// Preserve adapter-agnostic keys (env, cwd, etc.) from the existing config
|
||||
// when the adapter type changes. Without this, a PATCH that includes
|
||||
// adapterConfig but omits these keys would silently drop them.
|
||||
const ADAPTER_AGNOSTIC_KEYS = [
|
||||
"env", "cwd", "timeoutSec", "graceSec",
|
||||
"promptTemplate", "bootstrapPromptTemplate",
|
||||
] as const;
|
||||
for (const key of ADAPTER_AGNOSTIC_KEYS) {
|
||||
if (rawEffectiveAdapterConfig[key] === undefined && existingAdapterConfig[key] !== undefined) {
|
||||
rawEffectiveAdapterConfig = { ...rawEffectiveAdapterConfig, [key]: existingAdapterConfig[key] };
|
||||
}
|
||||
}
|
||||
rawEffectiveAdapterConfig = preserveInstructionsBundleConfig(
|
||||
existingAdapterConfig,
|
||||
rawEffectiveAdapterConfig,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue