(
value: unknown,
options: { allowLegacyMissingEvidence?: boolean } = {},
)
| 904 | } |
| 905 | |
| 906 | function isTaskLedgerEventTask( |
| 907 | value: unknown, |
| 908 | options: { allowLegacyMissingEvidence?: boolean } = {}, |
| 909 | ): value is TaskLedgerEventTaskSnapshot { |
| 910 | if (typeof value !== 'object' || value === null || Array.isArray(value)) return false; |
| 911 | const task = value as Partial<Task>; |
| 912 | if ( |
| 913 | !isSafeTaskId(task.id) || |
| 914 | !normalizeTaskSubject(task.subject).ok || |
| 915 | !isTaskStatus(task.status) || |
| 916 | typeof task.createdAt !== 'number' || |
| 917 | !Number.isFinite(task.createdAt) || |
| 918 | typeof task.updatedAt !== 'number' || |
| 919 | !Number.isFinite(task.updatedAt) || |
| 920 | (task.blockedReason !== undefined && |
| 921 | !normalizeTaskEvidenceText(task.blockedReason, 'blockedReason').ok) || |
| 922 | (task.failureReason !== undefined && |
| 923 | !normalizeTaskEvidenceText(task.failureReason, 'failureReason').ok) || |
| 924 | (task.completionEvidence !== undefined && |
| 925 | !normalizeTaskEvidenceText(task.completionEvidence, 'completionEvidence').ok) || |
| 926 | (task.resumeTrust !== undefined && !isResumeTrust(task.resumeTrust)) || |
| 927 | (task.key !== undefined && !isTaskKey(task.key)) || |
| 928 | (task.parentId !== undefined && !isSafeTaskId(task.parentId)) || |
| 929 | (task.owner !== undefined && !isTaskOwner(task.owner)) || |
| 930 | (task.endedAt !== undefined && |
| 931 | (typeof task.endedAt !== 'number' || !Number.isFinite(task.endedAt))) |
| 932 | ) { |
| 933 | return false; |
| 934 | } |
| 935 | if (options.allowLegacyMissingEvidence === true) return true; |
| 936 | return validateTaskEvidence({ |
| 937 | status: task.status, |
| 938 | blockedReason: task.blockedReason, |
| 939 | failureReason: task.failureReason, |
| 940 | completionEvidence: task.completionEvidence, |
| 941 | }).ok; |
| 942 | } |
| 943 | |
| 944 | export function isTaskOwner(value: unknown): value is TaskOwner { |
| 945 | if (typeof value !== 'object' || value === null || Array.isArray(value)) return false; |
no test coverage detected