interface ResolveEscalationParams {
    assertClaim?: string;
    id: string;
    metadata?: Record<string, unknown>;
    namespace?: string;
    resolvedBy?: ResolvedByIdentity;
    resolverPayload?: Record<string, unknown>;
}

Properties

assertClaim?: string

When provided, the resolve additionally asserts — inside the same guarded UPDATE — that no claim LOCK stands against this assignee. A claim is a lock only while its TTL window (assigned_until) is active; the assert blocks exactly two states: a live window held by a different assignee (claimed-by-other), and this assignee's own lapsed window (claim-expired — stale work; re-claim to resolve). Unclaimed rows, durable pre-assignments (assigned_to with no window), and rows whose window lapsed under a different assignee resolve normally. Closes the claim-race window for interactive claim-then-resolve flows.

id: string
metadata?: Record<string, unknown>

Merged (not replaced) into the resolved row's metadata in the same atomic UPDATE — and only on the winning resolve. Records "what actually happened" into the GIN-indexed (@>-queryable) surface alongside the creation metadata. Distinct from resolverPayload, which is delivered to the waiting workflow as condition()'s return value and is not GIN-indexed.

namespace?: string
resolvedBy?: ResolvedByIdentity

Resolver identity, delivered to the waiting workflow under the reserved $resolution signal key (see EscalationResolution). Never written to the stored resolver_payload.

resolverPayload?: Record<string, unknown>