UNPKG

n8n

Version:

n8n Workflow Automation Tool

81 lines (80 loc) 4.49 kB
import type { InstanceAiErrorEvent, InstanceAiEvent } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; import type { User } from '@n8n/db'; import { type InstanceAiTraceContext, type ManagedBackgroundTask, type PatchableThreadMemory, type RunStateRegistry, type TerminalResponseDecision, type TerminalResponseStatus, type WorkSummary } from '@n8n/instance-ai'; import type { Telemetry } from '../../telemetry'; import type { InProcessEventBus } from './event-bus/in-process-event-bus'; import type { DbSnapshotStorage } from './storage/db-snapshot-storage'; import type { SuspendedThreadPersistenceService } from './suspended-thread-persistence.service'; import type { InstanceAiTracingService, MessageTraceFinalization } from './tracing/instance-ai-tracing.service'; type InstanceAiErrorCode = NonNullable<InstanceAiErrorEvent['payload']['code']>; export type InstanceAiTerminalOutcomeEventBus = Pick<InProcessEventBus, 'publish'> & { getEventsForRun(threadId: string, runId: string): InstanceAiEvent[] | Promise<InstanceAiEvent[]>; getEventsForRuns(threadId: string, runIds: string[]): InstanceAiEvent[] | Promise<InstanceAiEvent[]>; }; export type InstanceAiTerminalOutcomeSnapshotStorage = Pick<DbSnapshotStorage, 'getLatest' | 'save' | 'updateLast'>; export type InstanceAiTerminalOutcomeTelemetry = Pick<Telemetry, 'track'>; export type InstanceAiTerminalOutcomeRunState = Pick<RunStateRegistry<User>, 'getRunIdsForMessageGroup' | 'cancelThread'>; export type InstanceAiTerminalOutcomeSuspendedThreads = Pick<SuspendedThreadPersistenceService, 'dropPendingConfirmationsForThread'>; export type InstanceAiTerminalOutcomeTracing = Pick<InstanceAiTracingService, 'finalizeRunTracing' | 'buildMessageTraceMetadata'>; export interface InstanceAiTerminalOutcomeServiceOptions { eventBus: InstanceAiTerminalOutcomeEventBus; durableLog: boolean; dbSnapshotStorage: InstanceAiTerminalOutcomeSnapshotStorage; agentMemory: PatchableThreadMemory; telemetry: InstanceAiTerminalOutcomeTelemetry; logger: Logger; runState: InstanceAiTerminalOutcomeRunState; suspendedThreads: InstanceAiTerminalOutcomeSuspendedThreads; tracing: InstanceAiTerminalOutcomeTracing; publishRunFinish: (threadId: string, runId: string, status: 'completed' | 'cancelled' | 'errored', reason?: string) => void; saveAgentTreeSnapshot: (threadId: string, runId: string, snapshotStorage: DbSnapshotStorage) => Promise<void>; } export declare class InstanceAiTerminalOutcomeService { private readonly pendingTerminalOutcomes; private terminalOutcomeStorage?; private readonly eventBus; private readonly durableLog; private readonly dbSnapshotStorage; private readonly agentMemory; private readonly telemetry; private readonly logger; private readonly runState; private readonly suspendedThreads; private readonly tracing; private readonly publishRunFinish; private readonly saveAgentTreeSnapshot; constructor(options: InstanceAiTerminalOutcomeServiceOptions); evaluateTerminalResponse(threadId: string, runId: string, status: Exclude<TerminalResponseStatus, 'waiting'>, options?: { messageGroupId?: string; correlationId?: string; workSummary?: WorkSummary; errorMessage?: string; errorCode?: InstanceAiErrorCode; suppressCompletedFallback?: boolean; }): Promise<TerminalResponseDecision | undefined>; evaluateWaitingResponse(threadId: string, runId: string, confirmationEvent: Extract<InstanceAiEvent, { type: 'confirmation-request'; }> | undefined, options?: { messageGroupId?: string; correlationId?: string; }): Promise<TerminalResponseDecision | undefined>; private getTerminalGuardEvents; private handleTerminalResponseDecision; private createTerminalOutcomeStorage; finishInvalidConfirmationRun(args: { threadId: string; runId: string; abortController: AbortController; snapshotStorage: DbSnapshotStorage; tracing?: InstanceAiTraceContext; }): Promise<MessageTraceFinalization>; private buildBackgroundTerminalOutcome; replayUndeliveredTerminalOutcomes(threadId: string, options?: { delivery?: 'snapshot' | 'event'; }): Promise<void>; private persistTerminalOutcomeLineToSnapshot; private publishTerminalOutcomeLine; recordBackgroundTerminalOutcome(task: ManagedBackgroundTask): Promise<void>; } export {};