From 99330390943052e533de2d33f0f865af8bec8c3e Mon Sep 17 00:00:00 2001 From: Matt Van Horn Date: Sat, 7 Mar 2026 16:04:28 -0800 Subject: [PATCH] fix(server): auto-deduplicate agent names on creation instead of rejecting Replace assertCompanyShortnameAvailable with deduplicateAgentName in the create path so duplicate names get auto-suffixed (e.g. Engineer 2) instead of throwing a conflict error. Fixes #232 Co-Authored-By: Claude Opus 4.6 --- server/src/services/agents.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/src/services/agents.ts b/server/src/services/agents.ts index 817a9e7b..fa65c7e4 100644 --- a/server/src/services/agents.ts +++ b/server/src/services/agents.ts @@ -341,13 +341,17 @@ export function agentService(db: Db) { await ensureManager(companyId, data.reportsTo); } - await assertCompanyShortnameAvailable(companyId, data.name); + const existingAgents = await db + .select({ id: agents.id, name: agents.name, status: agents.status }) + .from(agents) + .where(eq(agents.companyId, companyId)); + const uniqueName = deduplicateAgentName(data.name, existingAgents); const role = data.role ?? "general"; const normalizedPermissions = normalizeAgentPermissions(data.permissions, role); const created = await db .insert(agents) - .values({ ...data, companyId, role, permissions: normalizedPermissions }) + .values({ ...data, name: uniqueName, companyId, role, permissions: normalizedPermissions }) .returning() .then((rows) => rows[0]);