UNPKG

n8n

Version:

n8n Workflow Automation Tool

206 lines (205 loc) • 7.62 kB
import { Tool } from '@n8n/agents'; import { z } from 'zod'; import type { AgentIntegrationConfig } from '@n8n/api-types'; 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 interface IntegrationToolConnectionDescriptor { agentId?: string; integration: AgentIntegrationConfig; integrationConnectionId: string; contextToolName: string; actionToolName: string; contextQueries: IntegrationContextQuery[]; actions: IntegrationAction[]; } 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 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 type IntegrationActionResult = { ok: true; messageContext?: IntegrationMessageContext; [key: string]: unknown; } | { ok: false; error: { code: IntegrationErrorCode; message: string; }; }; export declare const DEFAULT_INTEGRATION_CONTEXT_QUERIES: IntegrationContextQuery[]; export declare const DEFAULT_INTEGRATION_ACTIONS: IntegrationAction[]; export declare function getIntegrationToolConnectionDescriptors(integrations: AgentIntegrationConfig[], agentId?: string, capabilitiesFor?: (integration: AgentIntegrationConfig) => { contextQueries?: IntegrationContextQuery[]; actions?: IntegrationAction[]; }): IntegrationToolConnectionDescriptor[]; export declare function buildIntegrationConnectionId(integration: Pick<AgentIntegrationConfig, 'type' | 'credentialId'>): string; export declare function createIntegrationContextTool(params: { descriptor: IntegrationToolConnectionDescriptor; messageContextStore: IntegrationMessageContextStore; queryExecutor: IntegrationContextQueryExecutor; }): Tool<z.ZodEffects<z.ZodObject<{ query: z.ZodOptional<z.ZodEnum<[IntegrationContextQuery, ...IntegrationContextQuery[]]>>; input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; queries: z.ZodOptional<z.ZodArray<z.ZodObject<{ query: z.ZodEnum<[IntegrationContextQuery, ...IntegrationContextQuery[]]>; input: z.ZodRecord<z.ZodString, z.ZodUnknown>; }, "strict", z.ZodTypeAny, { query: IntegrationContextQuery; input: Record<string, unknown>; }, { query: IntegrationContextQuery; input: Record<string, unknown>; }>, "many">>; }, "strict", z.ZodTypeAny, { query?: IntegrationContextQuery | undefined; input?: Record<string, unknown> | undefined; queries?: { query: IntegrationContextQuery; input: Record<string, unknown>; }[] | undefined; }, { query?: IntegrationContextQuery | undefined; input?: Record<string, unknown> | undefined; queries?: { query: IntegrationContextQuery; input: Record<string, unknown>; }[] | undefined; }>, { query?: IntegrationContextQuery | undefined; input?: Record<string, unknown> | undefined; queries?: { query: IntegrationContextQuery; input: Record<string, unknown>; }[] | undefined; }, { query?: IntegrationContextQuery | undefined; input?: Record<string, unknown> | undefined; queries?: { query: IntegrationContextQuery; input: Record<string, unknown>; }[] | undefined; }>, z.ZodTypeAny, undefined, undefined>; export declare function createIntegrationActionTool(params: { descriptor: IntegrationToolConnectionDescriptor; messageContextStore: IntegrationMessageContextStore; actionExecutor: IntegrationActionExecutor; }): Tool<z.ZodEffects<z.ZodObject<{ action: z.ZodOptional<z.ZodEnum<[IntegrationAction, ...IntegrationAction[]]>>; input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; actions: z.ZodOptional<z.ZodArray<z.ZodObject<{ action: z.ZodEnum<[IntegrationAction, ...IntegrationAction[]]>; input: z.ZodRecord<z.ZodString, z.ZodUnknown>; }, "strict", z.ZodTypeAny, { input: Record<string, unknown>; action: IntegrationAction; }, { input: Record<string, unknown>; action: IntegrationAction; }>, "many">>; }, "strict", z.ZodTypeAny, { input?: Record<string, unknown> | undefined; action?: IntegrationAction | undefined; actions?: { input: Record<string, unknown>; action: IntegrationAction; }[] | undefined; }, { input?: Record<string, unknown> | undefined; action?: IntegrationAction | undefined; actions?: { input: Record<string, unknown>; action: IntegrationAction; }[] | undefined; }>, { input?: Record<string, unknown> | undefined; action?: IntegrationAction | undefined; actions?: { input: Record<string, unknown>; action: IntegrationAction; }[] | undefined; }, { input?: Record<string, unknown> | undefined; action?: IntegrationAction | undefined; actions?: { input: Record<string, unknown>; action: IntegrationAction; }[] | undefined; }>, z.ZodTypeAny, z.ZodObject<{ type: z.ZodLiteral<"integration_action">; action: z.ZodString; integrationConnectionId: z.ZodString; messageContext: z.ZodUnknown; }, "strip", z.ZodTypeAny, { type: "integration_action"; action: string; integrationConnectionId: string; messageContext?: unknown; }, { type: "integration_action"; action: string; integrationConnectionId: string; messageContext?: unknown; }>, z.ZodRecord<z.ZodString, z.ZodUnknown>>;