UNPKG

n8n

Version:

n8n Workflow Automation Tool

106 lines (105 loc) 3.8 kB
import type { AgentIntegrationConfig, N8N_CHAT_INTEGRATION_TYPE } from '@n8n/api-types'; import type { z } from 'zod'; import type { IntegrationErrorCode } from './integration-error-codes'; export type IntegrationMessageTarget = { type: 'thread'; threadId: string; channelId?: string; userId?: string; } | { type: 'channel'; channelId: string; threadId?: string; } | { type: 'dm'; userId: string; threadId?: string; }; export interface IntegrationMessageContext { integrationConnectionId: string; platform: string; target: IntegrationMessageTarget; messageId?: string; interactingUserId?: string; agentUserId?: string; subject?: IntegrationMessageSubject; updatedAt: string; } export interface IntegrationMessageSubject { type: string; id: string; title?: string; description?: string; url?: string; status?: string; labels?: string[]; assignee?: IntegrationSubjectPerson; author?: IntegrationSubjectPerson; } export interface IntegrationSubjectPerson { id: string; name: string; } export type IntegrationToolConnectionSource = AgentIntegrationConfig | { type: typeof N8N_CHAT_INTEGRATION_TYPE; credentialId?: undefined; }; export type IntegrationContextQuery = 'get_current_message_context' | 'get_current_subject' | 'get_current_user' | 'get_current_channel_info' | 'get_user' | 'get_channel_info' | 'search_users' | 'search_channels' | 'get_team' | 'search_teams' | 'get_project' | 'search_projects' | 'search_labels' | 'search_issue_states' | 'get_issue' | 'search_issues'; export type IntegrationAction = 'respond' | 'send_dm' | 'send_channel_message' | 'add_reaction' | 'create_issue' | 'update_issue' | 'create_comment'; export interface IntegrationToolOperationDefinition<Name extends string = string> { name: Name; inputSchema: z.ZodType; description: string; } export type IntegrationContextQueryDefinition = IntegrationToolOperationDefinition<IntegrationContextQuery>; export type IntegrationActionDefinition = IntegrationToolOperationDefinition<IntegrationAction>; export interface IntegrationToolConnectionDescriptor { agentId?: string; integration: IntegrationToolConnectionSource; integrationConnectionId: string; contextToolName: string; actionToolName: string; contextQueries: IntegrationContextQuery[]; actions: IntegrationAction[]; contextToolDefinitions: IntegrationContextQueryDefinition[]; actionToolDefinitions: IntegrationActionDefinition[]; contextToolGuidance?: string[]; actionToolGuidance?: string[]; } export interface IntegrationMessageContextStore { getLatest(threadId: string): Promise<IntegrationMessageContext | null>; setLatest(threadId: string, resourceId: string, context: IntegrationMessageContext): Promise<void>; } export interface IntegrationContextQueryExecutor { execute(params: { descriptor: IntegrationToolConnectionDescriptor; query: IntegrationContextQuery; input: Record<string, unknown>; persistence?: { threadId: string; resourceId: string; }; }): Promise<unknown>; } export interface IntegrationActionExecutor { execute(params: { descriptor: IntegrationToolConnectionDescriptor; action: IntegrationAction; input: Record<string, unknown>; awaitResponse: boolean; runId?: string; toolCallId?: string; currentMessageContext?: IntegrationMessageContext; }): Promise<IntegrationActionResult>; } export type IntegrationActionResult = { ok: true; messageContext?: IntegrationMessageContext; [key: string]: unknown; } | { ok: false; error: { code: IntegrationErrorCode; message: string; }; };