import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent"; import type { ProjectSummary, TaskDetail, TaskFilter, TaskId, TaskPriority, TaskStatus, TaskSummary } from "../domain/task"; import type { HabitService } from "../services/habit-service"; import type { TaskService } from "../services/task-service"; import type { TaskBrowseFilterState } from "../services/task-browse-filter-store"; import { type TaskDetailActionKind } from "../ui/components/task-detail"; import { type TaskBrowseFilterContextController } from "./task-browse-filter-context"; declare const DEFAULT_TASK_BROWSE_FILTER_STATE: TaskBrowseFilterState; interface LoadedTasksResult { status: "loaded"; tasks: TaskSummary[]; } interface CancelledTasksResult { status: "cancelled"; } interface ErrorTasksResult { status: "error"; message: string; } type TaskBrowseLoadResult = LoadedTasksResult | CancelledTasksResult | ErrorTasksResult; type SelectTaskProjectResult = { status: "selected"; project: ProjectSummary; } | { status: "cancelled"; } | { status: "unavailable"; }; interface TaskAuthoringDraft { title: string; description: string | null; projectName: string; } interface TaskAuthoringResult { title: string; description: string | null; } type EditTaskBrowseFiltersResult = { status: "saved"; filterState: TaskBrowseFilterState; } | { status: "cancelled"; }; type TaskBrowseViewResult = { status: "selected"; taskId: TaskId; } | { status: "change-filters"; } | { status: "clear-filters"; } | { status: "closed"; }; type EmptyTaskBrowseAction = "change-filters" | "clear-filters" | "close"; export interface ResolveDefaultProjectResult { projectId: string; projectName: string; } export interface RegisterCommandDependencies { getTaskService?: () => Promise; getHabitService?: () => Promise; resolveDefaultProject?: (taskService: TaskService) => Promise; getCurrentTaskId?: () => TaskId | null; clearCurrentTask?: (ctx: ExtensionCommandContext) => Promise; promptTaskTitle?: (ctx: ExtensionCommandContext) => Promise; selectTaskProject?: (ctx: ExtensionCommandContext, taskService: TaskService) => Promise; editTaskExplanation?: (ctx: ExtensionCommandContext, taskTitle: string) => Promise; confirmTaskAuthoring?: (ctx: ExtensionCommandContext, draft: TaskAuthoringDraft) => Promise; requestTaskAuthoringAssistance?: (ctx: ExtensionCommandContext, draft: TaskAuthoringDraft) => Promise; taskBrowseFilterController?: TaskBrowseFilterContextController; editTaskBrowseFilters?: (ctx: ExtensionCommandContext, taskService: TaskService, currentState: TaskBrowseFilterState) => Promise; loadTasks?: (ctx: ExtensionCommandContext, taskService: TaskService, filter: TaskFilter, filterSummary: string) => Promise; showTaskBrowseView?: (ctx: ExtensionCommandContext, tasks: TaskSummary[], filterState: TaskBrowseFilterState) => Promise; showEmptyState?: (ctx: ExtensionCommandContext, filterState: TaskBrowseFilterState) => Promise; setCurrentTask?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; showTaskDetailView?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; selectTaskStatus?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; selectTaskPriority?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; editTaskComment?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; openTaskDetail?: (ctx: ExtensionCommandContext, taskService: TaskService, taskId: TaskId) => Promise; } declare const createTasksCommandHandler: (dependencies?: RegisterCommandDependencies) => ((args: string, ctx: ExtensionCommandContext) => Promise); declare const createTaskCommandHandler: (dependencies?: RegisterCommandDependencies) => ((args: string, ctx: ExtensionCommandContext) => Promise); declare const createTaskClearCommandHandler: (dependencies?: RegisterCommandDependencies) => ((args: string, ctx: ExtensionCommandContext) => Promise); declare const createTaskNewCommandHandler: (dependencies?: RegisterCommandDependencies) => ((args: string, ctx: ExtensionCommandContext) => Promise); declare const createHabitsCommandHandler: (dependencies?: RegisterCommandDependencies) => ((args: string, ctx: ExtensionCommandContext) => Promise); declare const registerCommands: (pi: ExtensionAPI, dependencies?: RegisterCommandDependencies) => void; declare const loadTasksWithLoader: (ctx: ExtensionCommandContext, taskService: TaskService, filter: TaskFilter, filterSummary: string) => Promise; declare const showTaskBrowseFilterMode: (ctx: ExtensionCommandContext, taskService: TaskService, currentState: TaskBrowseFilterState) => Promise; declare const selectTaskBrowseViewAction: (ctx: ExtensionCommandContext, tasks: TaskSummary[], filterState: TaskBrowseFilterState) => Promise; declare const showEmptyTasksState: (ctx: ExtensionCommandContext, filterState: TaskBrowseFilterState) => Promise; declare const createSavedTaskBrowseFilterState: (overrides?: Partial) => TaskBrowseFilterState; declare const createTaskFilterFromBrowseState: (filterState: TaskBrowseFilterState) => TaskFilter; declare const formatTaskBrowseFilterSummary: (filterState: TaskBrowseFilterState) => string; interface OpenTaskDetailDependencies { setCurrentTask: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; showTaskDetailView?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; selectTaskStatus?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; selectTaskPriority?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; editTaskComment?: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; } declare const openSelectedTaskDetail: (ctx: ExtensionCommandContext, taskService: TaskService, taskId: TaskId, dependencies: OpenTaskDetailDependencies) => Promise; declare const openTaskDetailHub: (ctx: ExtensionCommandContext, taskService: TaskService, taskId: TaskId, dependencies: OpenTaskDetailDependencies) => Promise; declare const selectTaskDetailAction: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; declare const selectTaskStatusFromList: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; declare const selectTaskPriorityFromList: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; declare const editTaskComment: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise; declare const syncCurrentTaskIfFocused: (ctx: ExtensionCommandContext, task: TaskDetail, setCurrentTask: (ctx: ExtensionCommandContext, task: TaskDetail) => Promise) => Promise; declare const resolveRequestedTaskId: (args: string, currentTaskId: TaskId | null) => TaskId | null; declare const resolveDefaultTaskBrowseFilterState: (taskService: TaskService, resolveDefaultProject: (taskService: TaskService) => Promise) => Promise; declare const resolveDefaultProjectFromRepo: (taskService: TaskService, repoContextService?: import("../services/repo-context").RepoContextService) => Promise; declare const matchProjectByName: (projects: ProjectSummary[], candidateName: string) => ProjectSummary | null; declare const formatTasksCommandError: (error: unknown, prefix: string) => string; export { createHabitsCommandHandler, createTaskClearCommandHandler, createTaskCommandHandler, createTaskNewCommandHandler, createTasksCommandHandler, createSavedTaskBrowseFilterState, createTaskFilterFromBrowseState, DEFAULT_TASK_BROWSE_FILTER_STATE, editTaskComment, formatTaskBrowseFilterSummary, formatTasksCommandError, loadTasksWithLoader, matchProjectByName, openSelectedTaskDetail, openTaskDetailHub, registerCommands, resolveDefaultProjectFromRepo, resolveDefaultTaskBrowseFilterState, resolveRequestedTaskId, selectTaskBrowseViewAction, selectTaskDetailAction, selectTaskPriorityFromList, selectTaskStatusFromList, showEmptyTasksState, showTaskBrowseFilterMode, syncCurrentTaskIfFocused, };