UNPKG

@n8n-plus/n8n-plus

Version:

n8n Workflow Automation Tool (plus edition)

68 lines (67 loc) 3.44 kB
import { AgentCredentialIntegrationConfig, type AgentIntegrationSettings, type AgentIntegrationStatusResponse } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { GlobalConfig } from '@n8n/config'; 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>; interface ChatInstance { initialize(): Promise<void>; shutdown(): Promise<void>; webhooks: Record<string, WebhookHandler>; onNewMention: (handler: unknown) => void; onSubscribedMessage: (handler: unknown) => void; onAction: (handler: unknown) => void; } 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: AgentCredentialIntegrationConfig, action: 'connect' | 'disconnect'): Promise<void>; private connectionKey; private connectionTypeFromKey; connect(agentId: string, integration: AgentCredentialIntegrationConfig, 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: AgentCredentialIntegrationConfig[], next: AgentCredentialIntegrationConfig[]): Promise<void>; getStatus(agentId: string): AgentIntegrationStatusResponse & { connections: number; }; getChatInstance(agentId: 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 {};