import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; import { Type } from "typebox"; import type { ProjectSummary, TaskComment, TaskDetail, TaskId, TaskPriority, TaskStatus } from "../domain/task"; import type { ActorService } from "../services/actor-service"; import type { AddTaskCommentInput, CreateTaskInput, DeleteTaskResult, MoveTaskResult, TaskService, UpdateTaskInput } from "../services/task-service"; import type { ProjectService } from "../services/project-service"; interface TaskCreateToolParams { title: string; projectId: string; description?: string; labels?: string[]; } interface TaskUpdateToolParams { taskId: TaskId; title?: string; status?: TaskStatus; priority?: TaskPriority; description?: string; labels?: string[]; removeLabels?: string[]; assigneeActorIds?: string[]; addAssigneeActorIds?: string[]; removeAssigneeActorIds?: string[]; } interface TaskCommentCreateToolParams { taskId: TaskId; content: string; } interface TaskCreateToolDetails { kind: "task_create"; input: CreateTaskInput; task: TaskDetail; } interface TaskUpdateToolDetails { kind: "task_update"; input: UpdateTaskInput; task: TaskDetail; } interface TaskCommentCreateToolDetails { kind: "task_comment_create"; taskId: TaskId; comment: TaskComment; } interface TaskDeleteToolParams { taskId: string; } interface TaskDeleteToolDetails { kind: "task_delete"; taskId: TaskId; found: boolean; deleted: boolean; result?: DeleteTaskResult; } interface TaskMoveToolParams { taskId: string; projectId: string; } interface TaskMoveToolDetails { kind: "task_move"; sourceTaskId: TaskId; found: boolean; moved: boolean; result?: MoveTaskResult; } interface TaskMutationToolDependencies { getTaskService: () => Promise; getActorService?: () => Promise; getProjectService?: () => Promise; } declare const createTaskCreateToolDefinition: ({ getTaskService }: TaskMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ title: Type.TString; projectId: Type.TString; description: Type.TOptional; labels: Type.TOptional>; }>; execute(_toolCallId: string, params: TaskCreateToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: TaskCreateToolDetails; }>; }; declare const createTaskUpdateToolDefinition: ({ getTaskService, getActorService, getProjectService, }: TaskMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ taskId: Type.TString; title: Type.TOptional; status: Type.TOptional>; priority: Type.TOptional>; description: Type.TOptional; labels: Type.TOptional>; removeLabels: Type.TOptional>; assigneeActorIds: Type.TOptional>; addAssigneeActorIds: Type.TOptional>; removeAssigneeActorIds: Type.TOptional>; }>; execute(_toolCallId: string, params: TaskUpdateToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: TaskUpdateToolDetails; }>; }; declare const createTaskCommentCreateToolDefinition: ({ getTaskService, }: TaskMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ taskId: Type.TString; content: Type.TString; }>; execute(_toolCallId: string, params: TaskCommentCreateToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: TaskCommentCreateToolDetails; }>; }; declare const createTaskDeleteToolDefinition: ({ getTaskService }: TaskMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ taskId: Type.TString; }>; execute(_toolCallId: string, params: TaskDeleteToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: TaskDeleteToolDetails; }>; }; declare const createTaskMoveToolDefinition: ({ getTaskService }: TaskMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ taskId: Type.TString; projectId: Type.TString; }>; execute(_toolCallId: string, params: TaskMoveToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: TaskMoveToolDetails; }>; }; declare const registerTaskMutationTools: (pi: Pick, dependencies: TaskMutationToolDependencies) => void; declare const normalizeCreateTaskInput: (params: TaskCreateToolParams) => CreateTaskInput; declare const resolveCreateTaskInput: (taskService: TaskService, params: TaskCreateToolParams) => Promise; declare const resolveProjectForTaskCreate: (taskService: TaskService, projectRef: string) => Promise; declare const normalizeUpdateTaskInput: (params: TaskUpdateToolParams) => UpdateTaskInput; interface ResolveUpdateTaskInputDependencies { actorService?: ActorService; projectService?: ProjectService; } declare const resolveUpdateTaskInput: (taskService: TaskService, params: TaskUpdateToolParams, dependencies?: ResolveUpdateTaskInputDependencies) => Promise; declare const normalizeTaskCommentInput: (params: TaskCommentCreateToolParams) => AddTaskCommentInput; export type { TaskCommentCreateToolDetails, TaskCreateToolDetails, TaskDeleteToolDetails, TaskMoveToolDetails, TaskMutationToolDependencies, TaskUpdateToolDetails, }; export { createTaskCommentCreateToolDefinition, createTaskCreateToolDefinition, createTaskDeleteToolDefinition, createTaskMoveToolDefinition, createTaskUpdateToolDefinition, normalizeCreateTaskInput, normalizeTaskCommentInput, normalizeUpdateTaskInput, registerTaskMutationTools, resolveUpdateTaskInput, resolveCreateTaskInput, resolveProjectForTaskCreate, };