mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-10 03:08:10 +02:00
fix: renew explicit continuation authorization for bounded retries (#14987)
Preserve exact user-authorized continuation receipts across bounded retries and retain the task claim through owned retry admission. Stop, reassignment, superseding input, and active cleanup continue to block unsafe continuation. Validation: exact-head Greptile 5/5, passing CI, no unresolved review threads, and a clean merge. Detailed verification and limitations are recorded in the pull request. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
7498705642
commit
2e67ea8dc7
11 files changed
+639
-16
No files matched your search
@@ -1196,6 +1196,18 @@ export function createPostgresWakeQueueAdapter(db: Db, deps: WakeQueuePostgresAd
|
||||
|
||||
const locked: LockedIssueExecution = { primaryIssue: toIssueSnapshot(issueRow), run: runSnapshot, recoveryOnly };
|
||||
const result = await fn(locked, { host: buildHost(tx, deps), transaction: buildTransaction(tx, deps, db, run) });
|
||||
// Explicit retry admission requires the exact source's task claim.
|
||||
// Preserve it only when the existing queue-first recovery policy
|
||||
// requests that retry. The clear/restore stays inside this task lock.
|
||||
if (run.runtimeMode === "legacy" && ["failed", "timed_out"].includes(run.status) &&
|
||||
run.contextSnapshot?.explicitUserContinuation && issueRow.executionRunId === run.id &&
|
||||
result.postCommitEffects.some(effect => effect.kind === "conversation_retry_requested" && effect.runId === run.id)) {
|
||||
await tx.update(issues).set({ executionRunId: run.id,
|
||||
executionAgentNameKey: issueRow.executionAgentNameKey,
|
||||
executionLockedAt: issueRow.executionLockedAt,
|
||||
}).where(and(eq(issues.companyId, input.companyId), eq(issues.id, issueRow.id),
|
||||
sql`${issues.executionRunId} is null`));
|
||||
}
|
||||
return { ...result, run: runSnapshot };
|
||||
});
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user