import type { CanonicalTaskIdentity, TaskAggregateEventV1, TaskDefinitionV1, TaskRuntimeSnapshotV2 } from '@devflow-tools/sdk'; export interface TaskAggregateRecord { identity: CanonicalTaskIdentity; revision: number; definitionHash: string; activationSnapshotHash: string; lastEventSequence: number; snapshot: TaskRuntimeSnapshotV2; updatedAt: number; } export interface TaskOutboxRecord { operationId: string; eventId: string; projectRoot: string; sessionId: string; turnId: string; revision: number; kind: string; payload: Record; state: 'pending' | 'leased' | 'completed' | 'dead_letter'; leaseOwner?: string; leaseExpiresAt?: number; fencingToken: number; attempts: number; createdAt: number; updatedAt: number; } export interface AppendTaskAggregateInput { definition?: TaskDefinitionV1; event: TaskAggregateEventV1; snapshot: TaskRuntimeSnapshotV2; outbox?: { operationId: string; kind: string; payload: Record; }; } export interface AppendTaskAggregateResult { event: TaskAggregateEventV1; snapshot: TaskRuntimeSnapshotV2; replayed: boolean; } export interface LeaseTaskOutboxInput { projectRoot: string; owner: string; limit: number; leaseMs: number; now?: number; }