@mastra/core
Version:
69 lines • 2.73 kB
TypeScript
import { MastraError } from '../../error/index.js';
import type { TargetType } from '../../storage/types.js';
import type { ItemWithScores } from './types.js';
export type ExperimentJsonValue = null | boolean | number | string | ExperimentJsonValue[] | {
[key: string]: ExperimentJsonValue;
};
export interface ExperimentEventBase {
version: 1;
experimentId: string;
sequence: number;
timestamp: string;
target: {
type: TargetType | 'task';
id: string;
};
}
export interface ExperimentRunStartedEvent extends ExperimentEventBase {
type: 'experiment.run.started';
status: 'running';
datasetId: string | null;
datasetVersion: number | null;
totalItems: number;
}
export interface ExperimentItemCompletedEvent extends ExperimentEventBase {
type: 'experiment.item.completed';
itemIndex: number;
itemId: string;
itemVersion: number;
status: 'succeeded' | 'failed';
input: ExperimentJsonValue;
output: ExperimentJsonValue;
groundTruth: ExperimentJsonValue;
error: ExperimentJsonValue;
persistenceError: ExperimentJsonValue;
scores: ExperimentJsonValue;
toolMockReport: ExperimentJsonValue;
retryCount: number;
startedAt: string;
completedAt: string;
traceId: string | null;
}
export interface ExperimentRunFinishedEvent extends ExperimentEventBase {
type: 'experiment.run.finished';
status: 'completed' | 'failed';
outcome: 'completed' | 'failed' | 'cancelled';
error: ExperimentJsonValue;
totalItems: number;
succeededCount: number;
failedCount: number;
skippedCount: number;
persistenceFailures: number;
completedWithErrors: boolean;
startedAt: string;
completedAt: string;
}
export type ExperimentEvent = ExperimentRunStartedEvent | ExperimentItemCompletedEvent | ExperimentRunFinishedEvent;
export type ExperimentEventObserver = (event: ExperimentEvent) => void | Promise<void>;
type EventInput = ExperimentEvent extends infer Event ? Event extends ExperimentEvent ? Omit<Event, 'version' | 'sequence' | 'timestamp'> : never : never;
export declare class ExperimentEventDispatcher {
#private;
readonly abortController: AbortController;
get failure(): MastraError | undefined;
constructor(experimentId: string, observer: ExperimentEventObserver);
emit(input: EventInput): Promise<void>;
}
export declare function toExperimentJsonValue(value: unknown, seen?: WeakSet<object>): ExperimentJsonValue;
export declare function createItemCompletedEvent(base: Pick<ExperimentEventBase, 'experimentId' | 'target'>, itemIndex: number, result: ItemWithScores, traceId: string | null): EventInput;
export {};
//# sourceMappingURL=events.d.ts.map