import fm from "front-matter"; import * as yaml from "js-yaml"; import { Task, TaskPriority, TaskStatus } from "@/model/task"; function toISO(value: unknown): string { if (value instanceof Date) return value.toISOString(); if (typeof value === "string") return value; return new Date().toISOString(); } export function parseTaskFile(content: string): Task { const parsed = fm>(content); const data = parsed.attributes; return { id: data.id as string, title: data.title as string, description: parsed.body.trim(), status: (data.status as TaskStatus) ?? "todo", priority: (data.priority as TaskPriority) ?? "medium", tags: (data.tags as string[]) ?? [], assignee: (data.assignee as string) ?? "", created: toISO(data.created), updated: toISO(data.updated), }; } export function serializeTask(task: Task): string { const frontmatter: Record = { id: task.id, title: task.title, status: task.status, priority: task.priority, tags: task.tags, assignee: task.assignee, created: task.created, updated: task.updated, }; const yamlStr = yaml.dump(frontmatter).trim(); return `---\n${yamlStr}\n---\n${task.description}`; }