n8n
Version:
n8n Workflow Automation Tool
135 lines (134 loc) • 4.67 kB
TypeScript
import { type CredentialProvider, type StreamChunk } from '@n8n/agents';
import { type ApprovalSuspendPayload } from '@n8n/agents/tool';
import type { User } from '@n8n/db';
import { UserError } from 'n8n-workflow';
import { z } from 'zod';
import type { StoredAttachmentRef } from './agent-chat-attachment.service';
import { AgentExecutionOrchestratorService } from './agent-execution-orchestrator.service';
import { AgentExecutionService } from './agent-execution.service';
import { AgentValidationService } from './agent-validation.service';
import { N8NCheckpointStorage } from './integrations/n8n-checkpoint-storage';
interface PrepareDraftRunInput {
agentId: string;
projectId: string;
sessionId?: string;
credentialProvider: CredentialProvider;
}
export type PrepareDraftRunResult = {
status: 'ready';
sessionId: string;
} | {
status: 'session_not_found';
} | {
status: 'agent_misconfigured';
missing: string[];
};
interface StreamDraftRunInput {
agentId: string;
projectId: string;
message: string;
user: User;
sessionId: string;
attachments?: StoredAttachmentRef[];
source?: string;
onExecutionRecorded?: (executionId: string) => void;
abortSignal?: AbortSignal;
}
interface ExecuteDraftRunInput extends PrepareDraftRunInput {
message: string;
user: User;
source?: string;
abortSignal?: AbortSignal;
}
interface ResumeDraftRunInput {
agentId: string;
projectId: string;
sessionId: string;
runId: string;
toolCallId: string;
resumeData: unknown;
user: User;
source?: string;
response: string;
abortSignal?: AbortSignal;
}
export declare const agentTestRunContinuationSchema: z.ZodObject<{
runId: z.ZodString;
toolCallId: z.ZodString;
sessionId: z.ZodString;
response: z.ZodString;
}, "strict", z.ZodTypeAny, {
runId: string;
toolCallId: string;
sessionId: string;
response: string;
}, {
runId: string;
toolCallId: string;
sessionId: string;
response: string;
}>;
export type AgentTestRunContinuation = z.infer<typeof agentTestRunContinuationSchema>;
export interface AgentTestRunSuspension {
runId: string;
toolCallId: string;
toolName: string;
input?: unknown;
suspendPayload?: unknown;
resumeSchema?: unknown;
}
export interface AgentTestRunApproval extends ApprovalSuspendPayload {
continuation: AgentTestRunContinuation;
}
export type AgentTestRunResult = {
status: 'completed';
response: string;
sessionId: string;
executionId?: string;
} | {
status: 'suspended';
response: string;
sessionId: string;
executionId?: string;
suspensions: AgentTestRunSuspension[];
} | {
status: 'session_not_found';
} | {
status: 'agent_misconfigured';
missing: string[];
};
export declare class InvalidAgentTestRunCheckpointError extends UserError {
readonly code = "invalid_checkpoint";
constructor();
}
export declare function parseStandardApprovalSuspension(suspension: AgentTestRunSuspension): ApprovalSuspendPayload | undefined;
export declare function collectStandardApprovals(result: Extract<AgentTestRunResult, {
status: 'suspended';
}>): AgentTestRunApproval[] | undefined;
export declare class AgentTestRunService {
private readonly agentExecutionService;
private readonly agentValidationService;
private readonly agentExecutionOrchestratorService;
private readonly n8nCheckpointStorage;
constructor(agentExecutionService: AgentExecutionService, agentValidationService: AgentValidationService, agentExecutionOrchestratorService: AgentExecutionOrchestratorService, n8nCheckpointStorage: N8NCheckpointStorage);
prepareDraftRun({ agentId, projectId, sessionId, credentialProvider, }: PrepareDraftRunInput): Promise<PrepareDraftRunResult>;
streamDraftRun({ agentId, projectId, message, user, sessionId, attachments, source, onExecutionRecorded, abortSignal, }: StreamDraftRunInput): AsyncGenerator<StreamChunk>;
executeDraftRun(input: ExecuteDraftRunInput): Promise<AgentTestRunResult>;
resumeDraftRun(input: ResumeDraftRunInput): Promise<AgentTestRunResult>;
resumeDraftApproval(input: {
agentId: string;
projectId: string;
continuation: unknown;
approved: boolean;
user: User;
source?: string;
abortSignal?: AbortSignal;
}): Promise<AgentTestRunResult>;
cancelSuspendedRuns({ agentId, suspensions, userId, }: {
agentId: string;
suspensions: Array<Pick<AgentTestRunSuspension, 'runId'>>;
userId: string;
}): Promise<boolean>;
private collectDraftRun;
}
export {};