From 1ca659d9e917e94d276fb337a545baf182a8e243 Mon Sep 17 00:00:00 2001 From: Dotta Date: Thu, 16 Jul 2026 14:14:01 +0000 Subject: [PATCH] fix(recovery): stabilize delegated reuse response Co-Authored-By: Paperclip --- server/src/__tests__/issue-recovery-actions.test.ts | 4 ++++ server/src/routes/issues.ts | 13 ++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/server/src/__tests__/issue-recovery-actions.test.ts b/server/src/__tests__/issue-recovery-actions.test.ts index 68b495f055c..39d7ad2508c 100644 --- a/server/src/__tests__/issue-recovery-actions.test.ts +++ b/server/src/__tests__/issue-recovery-actions.test.ts @@ -1441,6 +1441,10 @@ describeEmbeddedPostgres("issue recovery actions", () => { expect(second.body).toMatchObject({ reused: true, + issue: { + id: sourceIssueId, + activeRecoveryAction: null, + }, recoveryIssue: { id: first.body.recoveryIssue.id, }, diff --git a/server/src/routes/issues.ts b/server/src/routes/issues.ts index 24997223a0f..4195ed6fbfe 100644 --- a/server/src/routes/issues.ts +++ b/server/src/routes/issues.ts @@ -4347,11 +4347,7 @@ export function issueRoutes( return false; } - async function resolveDelegatedRecoveryTargetAgentId(companyId: string, target: "ceo") { - if (target !== "ceo") { - throw unprocessable("Unsupported delegated recovery target"); - } - + async function resolveDelegatedRecoveryTargetAgentId(companyId: string) { const ceoCandidates = await db .select({ id: agents.id, @@ -5753,7 +5749,10 @@ export function issueRoutes( const recoveryIssue = await svc.getById(resolvedAction.recoveryIssueId); if (recoveryIssue && recoveryIssue.companyId === existing.companyId) { res.json({ - issue: existing, + issue: { + ...existing, + activeRecoveryAction: null, + }, recoveryIssue, recoveryAction: resolvedAction, reused: true, @@ -5778,7 +5777,7 @@ export function issueRoutes( } const actor = getActorInfo(req); - const assigneeAgentId = await resolveDelegatedRecoveryTargetAgentId(existing.companyId, target); + const assigneeAgentId = await resolveDelegatedRecoveryTargetAgentId(existing.companyId); await assertCanAssignTasks(req, existing.companyId, { projectId: await resolveAssignmentProjectId({ companyId: existing.companyId,