From 03ab5e07c3ba5602de67eef99776e8621c87103c Mon Sep 17 00:00:00 2001 From: Dotta Date: Thu, 9 Jul 2026 19:12:36 +0000 Subject: [PATCH] Preserve built-in agent adapter config on reconcile Co-Authored-By: Paperclip --- server/src/__tests__/built-in-agents.test.ts | 7 +++++++ server/src/services/built-in-agents.ts | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/server/src/__tests__/built-in-agents.test.ts b/server/src/__tests__/built-in-agents.test.ts index 336bb207ac2..b206d5037bf 100644 --- a/server/src/__tests__/built-in-agents.test.ts +++ b/server/src/__tests__/built-in-agents.test.ts @@ -163,6 +163,13 @@ describeEmbeddedPostgres("built-in agents", () => { adapterConfig: { model: "gpt-5.4" }, }); + const reconciled = await svc.ensure(companyId, "briefs"); + expect(reconciled.status).toBe("ready"); + expect(reconciled.agent).toMatchObject({ + adapterType: "codex_local", + adapterConfig: { model: "gpt-5.4" }, + }); + const rows = await db.select().from(agents).where(eq(agents.companyId, companyId)); expect(rows).toHaveLength(1); }); diff --git a/server/src/services/built-in-agents.ts b/server/src/services/built-in-agents.ts index a530183a9f6..258d5f5aa65 100644 --- a/server/src/services/built-in-agents.ts +++ b/server/src/services/built-in-agents.ts @@ -1307,8 +1307,16 @@ export function builtInAgentService(db: Db) { async function ensure(companyId: string, key: string, input: BuiltInAgentProvisionInput = {}) { const definition = requireBuiltInAgentDefinition(key); await ensureCompany(companyId); - const resolvedInput = await defaultProvisionInput(companyId, definition, input); const existing = await findSingleAgent(companyId, definition); + const preserveExistingAdapter = Boolean( + existing + && input.adapterType === undefined + && input.adapterConfig === undefined + && hasCompleteAdapterConfig(existing.adapterType, existing.adapterConfig), + ); + const resolvedInput = preserveExistingAdapter + ? input + : await defaultProvisionInput(companyId, definition, input); if (existing) { const patch: Partial = { metadata: builtInMetadata(definition, existing.metadata),