n8n
Version:
n8n Workflow Automation Tool
83 lines (82 loc) • 2.08 kB
TypeScript
import { type StreamChunk } from '@n8n/agents';
import type { ToolRegistry } from './tool-registry';
export interface RecordedUsage {
promptTokens: number;
completionTokens: number;
totalTokens: number;
}
export interface RecordedToolCall {
name: string;
input: unknown;
output: unknown;
}
export type TimelineEvent = {
type: 'text';
content: string;
timestamp: number;
endTime?: number;
} | {
type: 'tool-call';
kind: 'tool' | 'workflow' | 'node';
name: string;
toolCallId: string;
input: unknown;
output: unknown;
startTime: number;
endTime: number;
success: boolean;
workflowId?: string;
workflowName?: string;
workflowExecutionId?: string;
triggerType?: string;
nodeType?: string;
nodeTypeVersion?: number;
nodeDisplayName?: string;
nodeParameters?: Record<string, unknown>;
} | {
type: 'working-memory';
content: string;
timestamp: number;
} | {
type: 'suspension';
toolName: string;
toolCallId: string;
timestamp: number;
};
export interface MessageRecord {
assistantResponse: string;
model: string | null;
finishReason: string;
usage: RecordedUsage | null;
totalCost: number | null;
toolCalls: RecordedToolCall[];
timeline: TimelineEvent[];
startTime: number;
duration: number;
error: string | null;
workingMemory: string | null;
}
export declare class ExecutionRecorder {
private readonly registry;
constructor(registry?: ToolRegistry);
private textParts;
private textBuffer;
private model;
private finishReason;
private usage;
private totalCost;
private toolCalls;
private timeline;
private textStartTime;
private _suspended;
private error;
private workingMemory;
private readonly startTime;
record(chunk: StreamChunk): void;
get suspended(): boolean;
getMessageRecord(): MessageRecord;
private flushTextBuffer;
private recordWorkingMemoryUpdate;
private recordToolCall;
private recordToolResult;
}