import type { Task } from './db' export type TaskStatus = Task['status'] function hasAssignee(assignedTo: string | null | undefined): boolean { return Boolean(assignedTo && assignedTo.trim()) } /** * Keep task state coherent when a task is created with an assignee. * If caller asks for `inbox` but also sets `assigned_to`, normalize to `assigned`. */ export function normalizeTaskCreateStatus( requestedStatus: TaskStatus | undefined, assignedTo: string | undefined ): TaskStatus { const status = requestedStatus ?? 'inbox' if (status === 'inbox' && hasAssignee(assignedTo)) return 'assigned' return status } /** * Auto-adjust status for assignment-only updates when caller does not * explicitly request a status transition. */ export function normalizeTaskUpdateStatus(args: { currentStatus: TaskStatus requestedStatus: TaskStatus | undefined assignedTo: string | null | undefined assignedToProvided: boolean }): TaskStatus | undefined { const { currentStatus, requestedStatus, assignedTo, assignedToProvided } = args if (requestedStatus !== undefined) return requestedStatus if (!assignedToProvided) return undefined if (hasAssignee(assignedTo) && currentStatus === 'inbox') return 'assigned' if (!hasAssignee(assignedTo) && currentStatus === 'assigned') return 'inbox' return undefined }