UNPKG

n8n

Version:

n8n Workflow Automation Tool

77 lines (76 loc) 3.74 kB
import { AgentIntegrationConfig, type AgentIntegrationSettings, type AgentIntegrationStatusResponse } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { GlobalConfig } from '@n8n/config'; import type { Channel, Thread, UserInfo } from 'chat'; import { InstanceSettings } from 'n8n-core'; import { CredentialsFinderService } from '../../../credentials/credentials-finder.service'; import { CredentialsService } from '../../../credentials/credentials.service'; import { Publisher } from '../../../scaling/pubsub/publisher.service'; import type { PubSubCommandMap } from '../../../scaling/pubsub/pubsub.event-map'; import { UrlService } from '../../../services/url.service'; import { ChatIntegrationRegistry } from './agent-chat-integration'; import type { Agent } from '../entities/agent.entity'; import { AgentRepository } from '../repositories/agent.repository'; type WebhookHandler = (request: Request, options?: { waitUntil?: (task: Promise<unknown>) => void; }) => Promise<Response>; export interface ChatInstance { initialize(): Promise<void>; shutdown(): Promise<void>; webhooks: Record<string, WebhookHandler>; onNewMention: (handler: unknown) => void; onSubscribedMessage: (handler: unknown) => void; onAction: (handler: unknown) => void; getAdapter(name: string): unknown; openDM(user: string): Promise<Thread>; thread(threadId: string): Thread; channel(channelId: string): Channel; getUser(user: string): Promise<UserInfo | null>; } interface ConnectOptions { skipExternalHooks?: boolean; settings?: AgentIntegrationSettings; } interface DisconnectOptions { skipExternalHooks?: boolean; } export declare class ChatIntegrationService { private readonly logger; private readonly agentRepository; private readonly credentialsService; private readonly credentialsFinderService; private readonly urlService; private readonly integrationRegistry; private readonly instanceSettings; private readonly publisher; private readonly globalConfig; private readonly connections; constructor(logger: Logger, agentRepository: AgentRepository, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, urlService: UrlService, integrationRegistry: ChatIntegrationRegistry, instanceSettings: InstanceSettings, publisher: Publisher, globalConfig: GlobalConfig); broadcastIntegrationChange(agentId: string, integration: AgentIntegrationConfig, action: 'connect' | 'disconnect'): Promise<void>; private connectionKey; private connectionTypeFromKey; connect(agentId: string, integration: AgentIntegrationConfig, userId: string, projectId: string, options?: ConnectOptions): Promise<void>; disconnect(agentId: string, integration?: { credentialId: string; type: string; }, options?: DisconnectOptions): Promise<void>; disconnectAll(): Promise<void>; disconnectLeaderOnlyIntegrations(): Promise<void>; syncToConfig(agent: Agent, previous: AgentIntegrationConfig[], next: AgentIntegrationConfig[]): Promise<void>; getStatus(agentId: string): AgentIntegrationStatusResponse & { connections: number; }; getChatInstance(agentId: string, integration?: { type: string; credentialId: string; }): ChatInstance | undefined; getWebhookHandler(agentId: string, platform: string): WebhookHandler | undefined; reconnectAll(): Promise<void>; handleIntegrationChanged(payload: PubSubCommandMap['agent-chat-integration-changed']): Promise<void>; private disconnectOne; private resolveUser; private decryptCredential; private buildWebhookUrl; private connectOptionsFor; } export {};