@n8n-plus/n8n-plus
Version:
n8n Workflow Automation Tool (plus edition)
68 lines (67 loc) • 3.44 kB
TypeScript
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 {};