import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; import { Type } from "typebox"; import type { ProjectSummary, TaskPriority } from "../domain/task"; import type { ActorService } from "../services/actor-service"; import type { CreateProjectInput, DeleteProjectResult, ProjectService, UpdateProjectInput } from "../services/project-service"; interface ProjectCreateToolParams { name: string; description?: string; priority?: TaskPriority; } interface ProjectUpdateToolParams { projectId: string; name?: string; description?: string; status?: ProjectSummary["status"]; priority?: TaskPriority; authorizedAssigneeActorIds?: string[]; addAuthorizedAssigneeActorIds?: string[]; removeAuthorizedAssigneeActorIds?: string[]; } interface ProjectDeleteToolParams { projectId: string; } interface ProjectCreateToolDetails { kind: "project_create"; input: CreateProjectInput; project: ProjectSummary; } interface ProjectUpdateToolDetails { kind: "project_update"; input: UpdateProjectInput; project: ProjectSummary; } interface ProjectDeleteToolDetails { kind: "project_delete"; projectId: string; found: boolean; deleted: boolean; project?: DeleteProjectResult; } interface ProjectMutationToolDependencies { getProjectService: () => Promise; getActorService?: () => Promise; } declare const createProjectCreateToolDefinition: ({ getProjectService, }: ProjectMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ name: Type.TString; description: Type.TOptional; priority: Type.TOptional>; }>; execute(_toolCallId: string, params: ProjectCreateToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: ProjectCreateToolDetails; }>; }; declare const createProjectUpdateToolDefinition: ({ getProjectService, getActorService, }: ProjectMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ projectId: Type.TString; name: Type.TOptional; description: Type.TOptional; status: Type.TOptional>; priority: Type.TOptional>; authorizedAssigneeActorIds: Type.TOptional>; addAuthorizedAssigneeActorIds: Type.TOptional>; removeAuthorizedAssigneeActorIds: Type.TOptional>; }>; execute(_toolCallId: string, params: ProjectUpdateToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: ProjectUpdateToolDetails; }>; }; declare const createProjectDeleteToolDefinition: ({ getProjectService, }: ProjectMutationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; promptGuidelines: string[]; parameters: Type.TObject<{ projectId: Type.TString; }>; execute(_toolCallId: string, params: ProjectDeleteToolParams): Promise<{ content: { type: "text"; text: string; }[]; details: ProjectDeleteToolDetails; }>; }; declare const registerProjectMutationTools: (pi: Pick, dependencies: ProjectMutationToolDependencies) => void; declare const normalizeCreateProjectInput: (params: ProjectCreateToolParams) => CreateProjectInput; declare const normalizeUpdateProjectInput: (params: ProjectUpdateToolParams) => UpdateProjectInput; export type { ProjectCreateToolDetails, ProjectMutationToolDependencies, ProjectUpdateToolDetails, ProjectDeleteToolDetails, }; export { createProjectCreateToolDefinition, createProjectDeleteToolDefinition, createProjectUpdateToolDefinition, normalizeCreateProjectInput, normalizeUpdateProjectInput, registerProjectMutationTools, };