/** Generate a task ID like "task-2026-04-21-a3f9k2" */ export declare function shortId(): string; export type TaskStatus = 'todo' | 'in-progress' | 'done'; export interface Task { id?: string; status: TaskStatus; text: string; completedDate?: string; /** 1-based line number in the file */ line: number; /** * Workspace-relative paths to attachment files embedded in the task text. * Populated at parse time from markdown links that point inside * `.autodev/messages/attachments/`. Ready to use — no regex scanning needed. */ attachments?: string[]; } /** Parse TODO.md into an ordered list of Tasks. */ export declare function parseTodo(filePath: string): Task[]; export declare function parseTodoContent(content: string): Task[]; /** Return the first todo task (not in-progress), or null if none pending. */ export declare function pickNextTask(tasks: Task[]): Task | null; export declare function countRemaining(tasks: Task[]): number; export declare function markInProgress(filePath: string, task: Task): void; /** Reset a [~] in-progress task back to [ ] todo. */ export declare function resetToTodo(filePath: string, task: Task): void; /** Reset ALL [~] in-progress tasks back to [ ] todo. */ export declare function resetAllInProgress(filePath: string): void; export declare function markDone(filePath: string, task: Task): void; /** Append a new task line to the ## Todo section (at the bottom, before the next heading). */ export declare function appendTask(filePath: string, text: string, id?: string): string; /** * Move all completed `[x]` lines from `todoPath` into * `/DONE.md`, grouped under a dated heading. * * - The original `[x]` lines (and any immediately-following indented subtask * lines that belong to them) are removed from `TODO.md`. * - `DONE.md` is created if it does not exist; entries are appended * so history is never lost. * - Returns the number of top-level `[x]` lines moved. */ export declare function pruneTodoToArchive(todoPath: string, workspaceRoot: string): number;