import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; import { Type } from "typebox"; import type { ActorSummary } from "../domain/actor"; import type { ActorService } from "../services/actor-service"; import type { IntegrationBinding, IntegrationBindingActorMapping, IntegrationBindingFilter, IntegrationBindingStatus, ProjectIntegrationService } from "../services/project-integration-service"; import type { ProjectService } from "../services/project-service"; import type { TaskService } from "../services/task-service"; interface IntegrationToolDependencies { getProjectIntegrationService: () => Promise; getProjectService?: () => Promise; getTaskService?: () => Promise; getActorService?: () => Promise; } interface IntegrationListToolDetails { kind: "integration_list"; filter: IntegrationBindingFilter; bindings: IntegrationBinding[]; total: number; empty: boolean; } interface IntegrationShowToolDetails { kind: "integration_show"; bindingId: string; found: boolean; binding?: IntegrationBinding; status?: IntegrationBindingStatus | null; taskWarnings?: IntegrationTaskWarning[]; } interface IntegrationUpdateToolDetails { kind: "integration_update"; bindingId: string; binding: IntegrationBinding; } declare const createIntegrationListToolDefinition: ({ getProjectIntegrationService, getProjectService, }: IntegrationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; parameters: Type.TObject<{ provider: Type.TOptional; projectId: Type.TOptional; enabled: Type.TOptional; }>; execute(_toolCallId: string, params: IntegrationBindingFilter): Promise<{ content: { type: "text"; text: string; }[]; details: IntegrationListToolDetails; }>; }; declare const createIntegrationShowToolDefinition: ({ getProjectIntegrationService, getProjectService, getTaskService, getActorService, }: IntegrationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; parameters: Type.TObject<{ bindingId: Type.TString; }>; execute(_toolCallId: string, params: { bindingId: string; }): Promise<{ content: { type: "text"; text: string; }[]; details: IntegrationShowToolDetails; }>; }; declare const createIntegrationUpdateToolDefinition: ({ getProjectIntegrationService, getActorService, }: IntegrationToolDependencies) => { name: string; label: string; description: string; promptSnippet: string; parameters: Type.TObject<{ bindingId: Type.TString; strategy: Type.TOptional>; enabled: Type.TOptional; actorMappings: Type.TOptional; externalLogin: Type.TOptional; displayName: Type.TOptional; trusted: Type.TOptional; }>>>; trustActorIds: Type.TOptional>; untrustActorIds: Type.TOptional>; }>; execute(_toolCallId: string, params: { bindingId: string; strategy?: "bidirectional" | "pull" | "push" | "none"; enabled?: boolean; actorMappings?: IntegrationBindingActorMapping[]; trustActorIds?: string[]; untrustActorIds?: string[]; }): Promise<{ content: { type: "text"; text: string; }[]; details: IntegrationUpdateToolDetails; }>; }; declare const registerIntegrationTools: (pi: Pick, dependencies: IntegrationToolDependencies) => void; interface IntegrationTaskWarning { taskId: string; title: string; unmappedActorIds: string[]; unmappedAssigneeDisplayNames: string[]; } declare const formatIntegrationShowContent: (binding: IntegrationBinding, status: IntegrationBindingStatus | null, projectNameMap: Map, actors: ActorSummary[], taskWarnings: IntegrationTaskWarning[]) => string; export { createIntegrationListToolDefinition, createIntegrationShowToolDefinition, createIntegrationUpdateToolDefinition, formatIntegrationShowContent, registerIntegrationTools, };