import type { WorkReceipt, WorkReceiptBatchClaimCommand, WorkReceiptBatchCompleteCommand, WorkReceiptBatchFailCommand, WorkReceiptBatchHeartbeatCommand, WorkReceiptClaim, WorkReceiptCommand, WorkReceiptFailureKind, WorkReceiptGetCommand, } from './work-receipts'; import type { ToolExecutionFailureV1 } from '../tool-execution-error'; export type WorkReceiptBatchGetCommand = { playName: string; keys: string[]; }; export type WorkReceiptCompleteCommand = WorkReceiptCommand & { output: unknown; }; export type WorkReceiptFailCommand = WorkReceiptCommand & { error: string; errorPayload?: ToolExecutionFailureV1 | null; failureKind?: WorkReceiptFailureKind | null; }; export type WorkReceiptReleaseCommand = WorkReceiptCommand; export type WorkReceiptSkipCommand = WorkReceiptCommand & { output?: unknown | null; }; export type ProviderRequestStatus = | 'pending' | 'running' | 'completed' | 'failed'; export type ProviderRequestRecord = { key: string; status: ProviderRequestStatus; receiptKey: string; providerIdempotencyKey: string; runId: string; provider: string; operation: string; method: string; endpoint: string; bodyHash: string; output?: unknown; error?: string | null; createdAt?: string | null; updatedAt?: string | null; }; export type ProviderRequestClaim = | { disposition: 'claimed'; record: ProviderRequestRecord; } | { disposition: 'reused'; record: ProviderRequestRecord; } | { disposition: 'running'; record: ProviderRequestRecord; } | { disposition: 'failed'; record: ProviderRequestRecord; }; export type ProviderRequestClaimCommand = { key: string; receiptKey: string; providerIdempotencyKey: string; runId: string; provider: string; operation: string; method: string; endpoint: string; bodyHash: string; }; export type ProviderRequestCompleteCommand = { key: string; runId: string; output?: unknown; }; export type ProviderRequestFailCommand = { key: string; runId: string; error: string; }; export interface ExecutionLedgerStore { getReceipt(input: WorkReceiptGetCommand): Promise; getReceipts( input: WorkReceiptBatchGetCommand, ): Promise>; claimReceipt(input: WorkReceiptCommand): Promise; claimReceipts( input: WorkReceiptBatchClaimCommand, ): Promise; completeReceipt( input: WorkReceiptCompleteCommand, ): Promise; completeReceipts( input: WorkReceiptBatchCompleteCommand, ): Promise>; failReceipt(input: WorkReceiptFailCommand): Promise; failReceipts( input: WorkReceiptBatchFailCommand, ): Promise>; releaseReceipt(input: WorkReceiptReleaseCommand): Promise; skipReceipt(input: WorkReceiptSkipCommand): Promise; heartbeatReceipts( input: WorkReceiptBatchHeartbeatCommand, ): Promise>; claimProviderRequest( input: ProviderRequestClaimCommand, ): Promise; completeProviderRequest( input: ProviderRequestCompleteCommand, ): Promise; failProviderRequest( input: ProviderRequestFailCommand, ): Promise; }