import type { Context, TodoItem } from '@wrongstack/core/agent'; import { type PlanItem } from '@wrongstack/core/storage'; import type { TaskItem } from '@wrongstack/core/utils'; import { type KanbanBoard, type KanbanColumn, type KanbanTask } from '@wrongstack/kanban'; import { type SessionKanbanSourceUpdate } from './session-kanban-sync.js'; export { PLAN_STATUS_TO_TASK, planFileToSerializedGraph, taskFileToSerializedGraph, todoListToSerializedGraph, } from './session-kanban-graph.js'; export { blockingTitles, orderTasksForTodos, type SessionKanbanSourceUpdate, todosNeedingSessionMirror, } from './session-kanban-sync.js'; export declare const SESSION_KANBAN_COLUMNS: KanbanColumn[]; export declare function ensureSessionKanbanBoard(projectRoot: string | undefined, sessionId: string): Promise; export declare function cleanupSessionKanbanBoard(projectRoot: string | undefined, sessionId: string): Promise; export declare function cleanupSessionKanbanBoardIfEmpty(projectRoot: string | undefined, sessionId: string): Promise; export declare function cleanupEmptySessionKanbanBoards(projectRoot: string | undefined, activeSessionId?: string): Promise; export declare function takeSessionMirrorFailure(projectRoot: string | undefined, sessionId: string): string | undefined; export declare function projectSessionTodosToKanban(projectRoot: string | undefined, todos: readonly TodoItem[], sessionId: string): Promise; export declare function projectSessionTasksToKanban(projectRoot: string | undefined, tasks: readonly TaskItem[], sessionId: string): Promise; export declare function projectSessionPlanToKanban(projectRoot: string | undefined, items: readonly PlanItem[], sessionId: string): Promise; /** * Waits for background work started so far to finish. Background work can * start more background work (the mirror pump re-queues itself), so this * drains in passes until a full pass adds nothing; the pass cap keeps a * pathological re-queue loop from hanging a caller forever. */ export declare function settleSessionKanbanBackgroundWork(maxPasses?: number): Promise; export declare function mirrorSessionTodosToKanban(projectRoot: string | undefined, todos: readonly TodoItem[], sessionId: string): void; export declare function mirrorSessionTasksToKanban(projectRoot: string | undefined, tasks: readonly TaskItem[], sessionId: string): void; export declare function mirrorSessionPlanToKanban(projectRoot: string | undefined, items: readonly PlanItem[], sessionId: string): void; export declare function attachSessionKanbanMirror(context: Context): () => void; export declare function rebindSessionKanbanTask(context: Context): Promise<{ boardId: string; taskId: string; } | null>; export declare function sessionKanbanDegradation(): string | undefined; export declare function hydrateSessionKanban(context: Context): Promise; export declare function applySessionKanbanBoardToTodos(context: Context, board: KanbanBoard): TodoItem[]; export declare function applyManagedKanbanBoardToTodos(context: Context, board: KanbanBoard, sourceTodos?: readonly TodoItem[]): TodoItem[]; export declare function applySessionKanbanTaskToSource(context: Context, task: KanbanTask, options?: { remove?: boolean | undefined; }): Promise; //# sourceMappingURL=session-kanban.d.ts.map