import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; import type { Task, TaskStatus } from "../models/task.ts"; export type TaskStatusMap = { open: string; closed: string; inProgress?: string; } & Partial, string>>; export interface TaskUpdate { title?: string; description?: string; status?: TaskStatus; priority?: string; taskType?: string; dueAt?: string; } export interface CreateTaskInput extends TaskUpdate { title: string; } export interface TaskAdapter { readonly id: string; readonly statusMap: TaskStatusMap; readonly taskTypes: string[]; readonly priorities: string[]; readonly priorityHotkeys?: Record; invalidateCache?(): void; list(): Promise; show(ref: string): Promise; update(ref: string, update: TaskUpdate): Promise; create(input: CreateTaskInput): Promise; } export interface TaskAdapterInitializer { readonly id: string; isApplicable(): boolean; initialize(pi: ExtensionAPI): TaskAdapter; }