UNPKG

@mastra/core

Version:

Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.

671 lines • 38.3 kB
import { ReadableStream } from 'node:stream/web'; import type { MastraPrimitives } from '../action/index.js'; import { Agent } from '../agent/agent.js'; import type { AgentExecutionOptions } from '../agent/agent.types.js'; import type { SubAgent } from '../agent/subagent.js'; import type { AgentStreamOptions } from '../agent/types.js'; import { MastraBase } from '../base.js'; import { RequestContext } from '../di/index.js'; import type { MastraScorers } from '../evals/index.js'; import type { PubSub } from '../events/pubsub.js'; import type { IMastraLogger } from '../logger/index.js'; import type { Mastra } from '../mastra/index.js'; import type { ObservabilityContext, TracingOptions, TracingPolicy } from '../observability/index.js'; import type { Processor } from '../processors/index.js'; import { ProcessorStepOutputSchema, ProcessorStepInputSchema } from '../processors/step-schema.js'; import type { InferPublicSchema, InferStandardSchemaOutput, PublicSchema, StandardSchemaWithJSON } from '../schema/index.js'; import type { StorageListWorkflowRunsInput } from '../storage/index.js'; import { WorkflowRunOutput } from '../stream/RunOutput.js'; import { Tool } from '../tools/tool.js'; import type { ToolExecutionContext } from '../tools/types.js'; import type { DynamicArgument } from '../types/index.js'; import { PUBSUB_SYMBOL } from './constants.js'; import type { ExecutionEngine, ExecutionGraph } from './execution-engine.js'; import type { ConditionFunction, ExecuteFunction, InnerOutput, LoopConditionFunction, Step, SuspendOptions } from './step.js'; import type { DefaultEngineType, DynamicMapping, ExtractSchemaFromStep, ExtractSchemaType, PathsToStringProps, SerializedStepFlowEntry, StepFlowEntry, StepResult, StepsRecord, StepWithComponent, StreamEvent, SubsetOf, TimeTravelContext, WorkflowConfig, WorkflowEngineType, WorkflowOptions, WorkflowResult, WorkflowType, WorkflowRunStatus, WorkflowState, WorkflowStateField, WorkflowStreamEvent, StepParams, OutputWriter, StepMetadata, WorkflowRunStartOptions } from './types.js'; export type AgentStepOptions<TOUTPUT> = Omit<AgentExecutionOptions<TOUTPUT> & AgentStreamOptions, 'format' | 'tracingContext' | 'requestContext' | 'abortSignal' | 'context' | 'onStepFinish' | 'output' | 'experimental_output' | 'resourceId' | 'threadId' | 'scorers'>; export declare function mapVariable<TStep extends Step<string, any, any, any, any, any>>({ step, path, }: { step: TStep; path: PathsToStringProps<ExtractSchemaType<ExtractSchemaFromStep<TStep, 'outputSchema'>>> | '.'; }): { step: TStep; path: PathsToStringProps<ExtractSchemaType<ExtractSchemaFromStep<TStep, 'outputSchema'>>> | '.'; }; export declare function mapVariable<TWorkflow extends AnyWorkflow>({ initData: TWorkflow, path, }: { initData: TWorkflow; path: PathsToStringProps<ExtractSchemaType<ExtractSchemaFromStep<TWorkflow, 'inputSchema'>>> | '.'; }): { initData: TWorkflow; path: PathsToStringProps<ExtractSchemaType<ExtractSchemaFromStep<TWorkflow, 'inputSchema'>>> | '.'; }; /** * Creates a step from explicit params (IMPORTANT: FIRST overload for best error messages when using .then in workflows) * @param params Configuration parameters for the step * @param params.id Unique identifier for the step * @param params.description Optional description of what the step does * @param params.inputSchema Zod schema defining the input structure * @param params.outputSchema Zod schema defining the output structure * @param params.execute Function that performs the step's operations * @returns A Step object that can be added to the workflow */ export declare function createStep<TStepId extends string, TStateSchema extends PublicSchema | undefined, TInputSchema extends PublicSchema, TOutputSchema extends PublicSchema, TResumeSchema extends PublicSchema | undefined = undefined, TSuspendSchema extends PublicSchema | undefined = undefined, TRequestContextSchema extends PublicSchema | undefined = undefined>(params: StepParams<TStepId, TStateSchema, TInputSchema, TOutputSchema, TResumeSchema, TSuspendSchema, TRequestContextSchema>): Step<TStepId, TStateSchema extends PublicSchema ? InferPublicSchema<TStateSchema> : unknown, InferPublicSchema<TInputSchema>, InferPublicSchema<TOutputSchema>, TResumeSchema extends PublicSchema ? InferPublicSchema<TResumeSchema> : unknown, TSuspendSchema extends PublicSchema ? InferPublicSchema<TSuspendSchema> : unknown, DefaultEngineType, TRequestContextSchema extends PublicSchema ? InferPublicSchema<TRequestContextSchema> : unknown>; /** * Creates a step from an agent (defaults to { text: string } output) */ export declare function createStep<TStepId extends string>(agent: SubAgent<TStepId, any> | Agent<TStepId, any>, agentOptions?: Omit<AgentStepOptions<{ text: string; }>, 'structuredOutput'> & { structuredOutput?: never; retries?: number; scorers?: DynamicArgument<MastraScorers>; }): Step<TStepId, unknown, { prompt: string; }, { text: string; }, unknown, unknown, DefaultEngineType>; /** * Creates a step from an agent with structured output */ export declare function createStep<TStepId extends string, TStepOutput>(agent: SubAgent<TStepId, any> | Agent<TStepId, any>, agentOptions: Omit<AgentStepOptions<TStepOutput>, 'structuredOutput'> & { structuredOutput: { schema: StandardSchemaWithJSON<TStepOutput>; }; retries?: number; scorers?: DynamicArgument<MastraScorers>; metadata?: StepMetadata; }): Step<TStepId, unknown, { prompt: string; }, TStepOutput, unknown, unknown, DefaultEngineType>; /** * Creates a step from a tool */ export declare function createStep<TSchemaIn, TSchemaOut, TSuspend, TResume, TContext extends ToolExecutionContext<TSuspend, TResume, any>, TId extends string, TRequestContext extends Record<string, any> | unknown = unknown>(tool: Tool<TSchemaIn, TSchemaOut, TSuspend, TResume, TContext, TId, TRequestContext>, toolOptions?: { retries?: number; scorers?: DynamicArgument<MastraScorers>; metadata?: StepMetadata; }): Step<TId, unknown, TSchemaIn, TSchemaOut, TSuspend, TResume, DefaultEngineType, TRequestContext>; /** * Creates a step from a Processor - wraps a Processor as a workflow step * Note: We require at least one processor method to distinguish from StepParams */ export declare function createStep<TProcessorId extends string>(processor: (Processor<TProcessorId> & { processInput: Function; }) | (Processor<TProcessorId> & { processInputStream: Function; }) | (Processor<TProcessorId> & { processInputStep: Function; }) | (Processor<TProcessorId> & { processOutputStream: Function; }) | (Processor<TProcessorId> & { processOutputResult: Function; }) | (Processor<TProcessorId> & { processOutputStep: Function; })): Step<`processor:${TProcessorId}`, unknown, InferPublicSchema<typeof ProcessorStepInputSchema>, InferPublicSchema<typeof ProcessorStepOutputSchema>, unknown, unknown, DefaultEngineType>; /** * IMPORTANT: Fallback overload - provides better error messages when StepParams doesn't match * This should be LAST and will show clearer errors about what's wrong * This is a copy of first one, KEEP THIS IN SYNC! */ export declare function createStep<TStepId extends string, TStateSchema extends PublicSchema | undefined, TInputSchema extends PublicSchema, TOutputSchema extends PublicSchema, TResumeSchema extends PublicSchema | undefined = undefined, TSuspendSchema extends PublicSchema | undefined = undefined, TRequestContextSchema extends PublicSchema | undefined = undefined>(params: StepParams<TStepId, TStateSchema, TInputSchema, TOutputSchema, TResumeSchema, TSuspendSchema, TRequestContextSchema>): Step<TStepId, TStateSchema extends PublicSchema ? InferPublicSchema<TStateSchema> : unknown, InferPublicSchema<TInputSchema>, InferPublicSchema<TOutputSchema>, TResumeSchema extends PublicSchema ? InferPublicSchema<TResumeSchema> : unknown, TSuspendSchema extends PublicSchema ? InferPublicSchema<TSuspendSchema> : unknown, DefaultEngineType, TRequestContextSchema extends PublicSchema ? InferPublicSchema<TRequestContextSchema> : unknown>; export declare function cloneStep<TStepId extends string>(step: Step<string, any, any, any, any, any, DefaultEngineType>, opts: { id: TStepId; }): Step<TStepId, any, any, any, any, any, DefaultEngineType>; /** * Type guard to check if an object is a Processor. * A Processor must have an 'id' property and at least one processor method. */ export declare function isProcessor(obj: unknown): obj is Processor; /** * A Workflow with all type parameters erased. * Use this instead of manually specifying `Workflow<any, any, ...>` so that * adding or removing type parameters only requires updating one place. */ export type AnyWorkflow = Workflow<any, any, any, any, any, any, any, any>; /** * Registration slot for the evented `createWorkflow` factory. * * The evented module registers itself here at module-load time. We use a * registration slot rather than a static import because `evented/workflow.ts` * already imports `Workflow` from this module, and a reverse static import * would create an init-time cycle that leaves `Workflow` undefined when * `class EventedWorkflow extends Workflow` evaluates. * * Any caller that needs schedule promotion must ensure the evented module is * loaded — typically by importing from `@mastra/core/workflows` (which * re-exports `./evented`) or by an explicit `import '@mastra/core/workflows/evented'`. */ type EventedCreateWorkflowFn = (params: WorkflowConfig<any, any, any, any, any, any>) => Workflow<any, any, any, any, any, any, any, any>; /** @internal Called once by the evented module at load time. */ export declare function __registerEventedCreateWorkflow(fn: EventedCreateWorkflowFn): void; export declare function createWorkflow<TWorkflowId extends string = string, TState = unknown, TInput = unknown, TOutput = unknown, TSteps extends Step<string, any, any, any, any, any, DefaultEngineType>[] = Step[], TRequestContext extends Record<string, any> | unknown = unknown>(params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>): Workflow<DefaultEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TInput, TRequestContext>; export declare function cloneWorkflow<TWorkflowId extends string = string, TState = unknown, TInput = unknown, TOutput = unknown, TSteps extends Step<string, any, any, any, any, any, DefaultEngineType>[] = Step<string, any, any, any, any, any, DefaultEngineType>[], TPrevSchema = TInput>(workflow: Workflow<DefaultEngineType, TSteps, string, TState, TInput, TOutput, TPrevSchema>, opts: { id: TWorkflowId; }): Workflow<DefaultEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema>; export declare class Workflow<TEngineType = DefaultEngineType, TSteps extends Step<string, any, any, any, any, any, TEngineType, any>[] = Step<string, unknown, unknown, unknown, unknown, unknown, TEngineType>[], TWorkflowId extends string = string, TState = unknown, TInput = unknown, TOutput = unknown, TPrevSchema = TInput, TRequestContext extends Record<string, any> | unknown = unknown> extends MastraBase implements Step<TWorkflowId, TState, TInput, TOutput | undefined, any, any, DefaultEngineType, TRequestContext> { #private; id: TWorkflowId; description?: string | undefined; inputSchema: StandardSchemaWithJSON<TInput>; outputSchema: StandardSchemaWithJSON<TOutput>; stateSchema?: StandardSchemaWithJSON<TState>; requestContextSchema?: StandardSchemaWithJSON<TRequestContext>; steps: Record<string, StepWithComponent>; stepDefs?: TSteps; engineType: WorkflowEngineType; /** Type of workflow - 'processor' for processor workflows, 'default' otherwise */ type: WorkflowType; committed: boolean; protected stepFlow: StepFlowEntry<TEngineType>[]; protected serializedStepFlow: SerializedStepFlowEntry[]; protected executionEngine: ExecutionEngine; protected executionGraph: ExecutionGraph; retryConfig: { attempts?: number; delay?: number; }; constructor({ mastra, id, inputSchema, outputSchema, stateSchema, requestContextSchema, description, executionEngine, retryConfig, steps, options, type, }: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>); get runs(): Map<string, Run<TEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>; get mastra(): Mastra<Record<string, Agent<any, import("../agent").ToolsInput, undefined, unknown>>, Record<string, AnyWorkflow>, Record<string, import("../vector").MastraVector<any>>, Record<string, import("../tts").MastraTTS>, IMastraLogger, Record<string, import("../mcp").MCPServerBase<any>>, Record<string, import("../evals").MastraScorer<any, any, any, any>>, Record<string, import("../tools").ToolAction<any, any, any, any, any, any, unknown>>, Record<string, Processor<any, unknown>>, Record<string, import("../memory").MastraMemory>, Record<string, import("../channels").ChannelProvider>> | undefined; get options(): Omit<WorkflowOptions, "validateInputs" | "shouldPersistSnapshot"> & Required<Pick<WorkflowOptions, "validateInputs" | "shouldPersistSnapshot">>; __registerMastra(mastra: Mastra): void; __registerPrimitives(p: MastraPrimitives): void; __setLogger(logger: IMastraLogger): void; setStepFlow(stepFlow: StepFlowEntry<TEngineType>[]): void; /** * Adds a step to the workflow * @param step The step to add to the workflow * @returns The workflow instance for chaining * * The step's inputSchema must be satisfied by the previous step's output (or workflow input for first step). * This means: TPrevSchema must be assignable to TStepInput */ then<TStepId extends string, TStepState, TStepInput, TSchemaOut>(step: Step<TStepId, unknown extends TStepState ? TStepState : SubsetOf<TStepState, TState>, TPrevSchema extends TStepInput ? TStepInput : TPrevSchema, TSchemaOut, any, any, TEngineType, any>): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TSchemaOut, TRequestContext>; /** * Adds a sleep step to the workflow * @param duration The duration to sleep for * @returns The workflow instance for chaining */ sleep(duration: number | ExecuteFunction<TState, TPrevSchema, number, any, any, TEngineType>): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema, TRequestContext>; /** * Adds a sleep until step to the workflow * @param date The date to sleep until * @returns The workflow instance for chaining */ sleepUntil(date: Date | ExecuteFunction<TState, TPrevSchema, Date, any, any, TEngineType>): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema, TRequestContext>; /** * @deprecated waitForEvent has been removed. Please use suspend/resume instead. */ waitForEvent<TStepState, TStepInputSchema extends TPrevSchema, TStepId extends string, TSchemaOut>(_event: string, _step: Step<TStepId, SubsetOf<TStepState, TState>, TStepInputSchema, TSchemaOut, any, any, TEngineType>, _opts?: { timeout?: number; }): void; map(mappingConfig: { [k: string]: { step: Step<string, any, any, any, any, any, TEngineType, any> | Step<string, any, any, any, any, any, TEngineType, any>[]; path: string; } | { value: any; schema: PublicSchema<any>; } | { initData: Workflow<TEngineType, any, any, any, any, any, any>; path: string; } | { requestContextPath: string; schema: PublicSchema<any>; } | DynamicMapping<TPrevSchema, any>; } | ExecuteFunction<TState, TPrevSchema, any, any, any, TEngineType>, stepOptions?: { id?: string | null; }): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, any, TRequestContext>; parallel<TParallelSteps extends readonly Step<string, any, TPrevSchema, any, any, any, TEngineType, any>[]>(steps: TParallelSteps & { [K in keyof TParallelSteps]: TParallelSteps[K] extends Step<string, infer S, TPrevSchema, infer O, any, // Don't infer TResume - causes issues with heterogeneous tuples any, // Don't infer TSuspend - causes issues with heterogeneous tuples TEngineType> ? Step<string, SubsetOf<S, TState>, TPrevSchema, O, any, any, TEngineType> : `Error: Expected Step with state schema that is a subset of workflow state`; }): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, { [K in keyof StepsRecord<TParallelSteps>]: InferStandardSchemaOutput<StepsRecord<TParallelSteps>[K]["outputSchema"]>; }, TRequestContext>; branch<TBranchSteps extends Array<[ ConditionFunction<TState, TPrevSchema, any, any, any, TEngineType>, Step<string, any, TPrevSchema, any, any, any, TEngineType, any> ]>>(steps: TBranchSteps): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, { [K in keyof StepsRecord<{ [K_1 in keyof TBranchSteps]: TBranchSteps[K_1][1]; }[number][]>]?: InferStandardSchemaOutput<StepsRecord<{ [K_1 in keyof TBranchSteps]: TBranchSteps[K_1][1]; }[number][]>[K]["outputSchema"]>; }, TRequestContext>; dowhile<TStepState, TStepInputSchema extends TPrevSchema, TStepId extends string, TSchemaOut, TStepRC>(step: Step<TStepId, SubsetOf<TStepState, TState>, TStepInputSchema, TSchemaOut, any, any, TEngineType, unknown extends TStepRC ? unknown : TRequestContext>, condition: LoopConditionFunction<TState, TSchemaOut, any, any, any, TEngineType>): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TSchemaOut, TRequestContext>; dountil<TStepState, TStepInputSchema extends TPrevSchema, TStepId extends string, TSchemaOut, TStepRC>(step: Step<TStepId, SubsetOf<TStepState, TState>, TStepInputSchema, TSchemaOut, any, any, TEngineType, unknown extends TStepRC ? unknown : TRequestContext>, condition: LoopConditionFunction<TState, TSchemaOut, any, any, any, TEngineType>): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TSchemaOut, TRequestContext>; foreach<TPrevIsArray extends TPrevSchema extends any[] ? true : false, TStepState, TStepInputSchema extends TPrevSchema extends (infer TElement)[] ? TElement : never, TStepId extends string, TSchemaOut, TStepRC>(step: TPrevIsArray extends true ? Step<TStepId, SubsetOf<TStepState, TState>, TStepInputSchema, TSchemaOut, any, any, TEngineType, unknown extends TStepRC ? unknown : TRequestContext> : 'Previous step must return an array type', opts?: { concurrency: number; }): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TSchemaOut[], TRequestContext>; /** * Builds the execution graph for this workflow * @returns The execution graph that can be used to execute the workflow */ buildExecutionGraph(): ExecutionGraph; /** * Finalizes the workflow definition and prepares it for execution * This method should be called after all steps have been added to the workflow * @returns A built workflow instance ready for execution */ commit(): Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TOutput, TRequestContext>; get stepGraph(): StepFlowEntry<TEngineType>[]; get serializedStepGraph(): SerializedStepFlowEntry[]; /** * Creates a new workflow run instance and stores a snapshot of the workflow in the storage * @param options Optional configuration for the run * @param options.runId Optional custom run ID, defaults to a random UUID * @param options.resourceId Optional resource ID to associate with this run * @param options.disableScorers Optional flag to disable scorers for this run * @returns A Run instance that can be used to execute the workflow */ createRun(options?: { runId?: string; resourceId?: string; disableScorers?: boolean; /** Optional pubsub instance for streaming events. If not provided, a new EventEmitterPubSub is created. */ pubsub?: PubSub; }): Promise<Run<TEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>; listScorers({ requestContext, }?: { requestContext?: RequestContext; }): Promise<MastraScorers>; execute({ runId, resourceId, inputData, resumeData, state, setState, suspend, restart, resume, timeTravel, [PUBSUB_SYMBOL]: pubsub, mastra, requestContext, abort, abortSignal, retryCount, outputWriter, validateInputs, perStep, engine: _engine, bail: _bail, ...rest }: { runId?: string; resourceId?: string; inputData: TInput; resumeData?: unknown; state: TState; setState: (state: TState) => Promise<void>; suspend: (suspendPayload: any, suspendOptions?: SuspendOptions) => InnerOutput | Promise<InnerOutput>; restart?: boolean; timeTravel?: { inputData?: TInput; steps: string[]; nestedStepResults?: Record<string, Record<string, StepResult<any, any, any, any>>>; resumeData?: any; }; resume?: { steps: string[]; resumePayload: any; runId?: string; label?: string; forEachIndex?: number; }; [PUBSUB_SYMBOL]: PubSub; mastra: Mastra; requestContext?: RequestContext<TRequestContext>; engine: DefaultEngineType; abortSignal: AbortSignal; bail: (result: any) => any; abort: () => any; retryCount?: number; outputWriter?: OutputWriter; validateInputs?: boolean; perStep?: boolean; } & Partial<ObservabilityContext>): Promise<TOutput | undefined>; listWorkflowRuns(args?: StorageListWorkflowRunsInput): Promise<import("../storage").WorkflowRuns>; listActiveWorkflowRuns(): Promise<{ runs: import("../storage").WorkflowRun[]; total: number; }>; restartAllActiveWorkflowRuns(): Promise<void>; deleteWorkflowRunById(runId: string): Promise<void>; protected getWorkflowRunSteps({ runId, workflowId }: { runId: string; workflowId: string; }): Promise<Record<string, StepResult<any, any, any, any>>>; /** * Get a workflow run by ID with processed execution state and metadata. * * @param runId - The unique identifier of the workflow run * @param options - Configuration options for the result * @param options.withNestedWorkflows - Whether to include nested workflow steps (default: true) * @param options.fields - Specific fields to return (for performance optimization) * @returns The workflow run result with metadata and processed execution state, or null if not found */ getWorkflowRunById(runId: string, options?: { withNestedWorkflows?: boolean; fields?: WorkflowStateField[]; }): Promise<WorkflowState | null>; } /** * Represents a workflow run that can be executed */ export declare class Run<TEngineType = DefaultEngineType, TSteps extends Step<string, any, any, any, any, any, TEngineType, any>[] = Step<string, unknown, unknown, unknown, unknown, unknown, TEngineType>[], TState = unknown, TInput = unknown, TOutput = unknown, TRequestContext extends Record<string, any> | unknown = unknown> { #private; protected pubsub: PubSub; /** * Unique identifier for this workflow */ readonly workflowId: string; /** * Unique identifier for this run */ readonly runId: string; /** * Unique identifier for the resource this run is associated with */ readonly resourceId?: string; /** * Whether to disable scorers for this run */ readonly disableScorers?: boolean; /** * Options around how to trace this run */ readonly tracingPolicy?: TracingPolicy; /** * Options around how to trace this run */ readonly validateInputs?: boolean; /** * Internal state of the workflow run */ protected state: Record<string, any>; /** * The execution engine for this run */ executionEngine: ExecutionEngine; /** * The execution graph for this run */ executionGraph: ExecutionGraph; /** * The serialized step graph for this run */ serializedStepGraph: SerializedStepFlowEntry[]; /** * The steps for this workflow */ readonly workflowSteps: Record<string, StepWithComponent>; workflowRunStatus: WorkflowRunStatus; readonly workflowEngineType: WorkflowEngineType; get mastra(): Mastra<Record<string, Agent<any, import("../agent").ToolsInput, undefined, unknown>>, Record<string, AnyWorkflow>, Record<string, import("../vector").MastraVector<any>>, Record<string, import("../tts").MastraTTS>, IMastraLogger, Record<string, import("../mcp").MCPServerBase<any>>, Record<string, import("../evals").MastraScorer<any, any, any, any>>, Record<string, import("../tools").ToolAction<any, any, any, any, any, any, unknown>>, Record<string, Processor<any, unknown>>, Record<string, import("../memory").MastraMemory>, Record<string, import("../channels").ChannelProvider>> | undefined; streamOutput?: WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>; protected closeStreamAction?: () => Promise<void>; protected executionResults?: Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; protected stateSchema?: StandardSchemaWithJSON<TState>; protected inputSchema?: StandardSchemaWithJSON<TInput>; protected requestContextSchema?: StandardSchemaWithJSON<any>; protected cleanup?: () => void; protected retryConfig?: { attempts?: number; delay?: number; }; constructor(params: { workflowId: string; runId: string; resourceId?: string; stateSchema?: StandardSchemaWithJSON<TState>; inputSchema?: StandardSchemaWithJSON<TInput>; requestContextSchema?: StandardSchemaWithJSON<any>; executionEngine: ExecutionEngine; executionGraph: ExecutionGraph; mastra?: Mastra; retryConfig?: { attempts?: number; delay?: number; }; cleanup?: () => void; serializedStepGraph: SerializedStepFlowEntry[]; disableScorers?: boolean; tracingPolicy?: TracingPolicy; workflowSteps: Record<string, StepWithComponent>; validateInputs?: boolean; workflowEngineType: WorkflowEngineType; /** Optional pubsub instance. If not provided, a new EventEmitterPubSub is created. */ pubsub?: PubSub; }); get abortController(): AbortController; /** * Cancels the workflow execution. * This aborts any running execution and updates the workflow status to 'canceled' in storage. */ cancel(): Promise<void>; protected _validateInput(inputData?: TInput): Promise<TInput | undefined>; protected _validateInitialState(initialState?: TState): Promise<TState | undefined>; protected _validateRequestContext(requestContext?: RequestContext): Promise<void>; protected _validateResumeData<TResume>(resumeData: TResume, suspendedStep?: StepWithComponent): Promise<any>; protected _validateTimetravelInputData<TInput>(inputData: TInput, step: Step<string, any, TInput, any, any, any, TEngineType, any>): Promise<TInput>; protected _start({ inputData, initialState, requestContext, outputWriter, tracingOptions, format, outputOptions, perStep, ...rest }: (TInput extends unknown ? { inputData?: TInput; } : { inputData: TInput; }) & (TState extends unknown ? { initialState?: TState; } : { initialState: TState; }) & { requestContext?: RequestContext<TRequestContext>; outputWriter?: OutputWriter; tracingOptions?: TracingOptions; format?: 'legacy' | 'vnext' | undefined; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; perStep?: boolean; } & Partial<ObservabilityContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; /** * Starts the workflow execution with the provided input * @param input The input data for the workflow * @returns A promise that resolves to the workflow output */ start(args: (TInput extends unknown ? { inputData?: TInput; } : { inputData: TInput; }) & (TState extends unknown ? { initialState?: TState; } : { initialState: TState; }) & { requestContext?: RequestContext<TRequestContext>; } & WorkflowRunStartOptions): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; /** * Starts the workflow execution without waiting for completion (fire-and-forget). * Returns immediately with the runId. The workflow executes in the background. * Use this when you don't need to wait for the result or want to avoid polling failures. * @param args The input data and configuration for the workflow * @returns A promise that resolves immediately with the runId */ startAsync(args: (TInput extends unknown ? { inputData?: TInput; } : { inputData: TInput; }) & (TState extends unknown ? { initialState?: TState; } : { initialState: TState; }) & { requestContext?: RequestContext<TRequestContext>; } & WorkflowRunStartOptions): Promise<{ runId: string; }>; /** * Starts the workflow execution with the provided input as a stream * @param input The input data for the workflow * @returns A promise that resolves to the workflow output */ streamLegacy({ inputData, requestContext, onChunk, tracingOptions, ...rest }?: (TInput extends unknown ? { inputData?: TInput; } : { inputData: TInput; }) & { requestContext?: RequestContext<TRequestContext>; onChunk?: (chunk: StreamEvent) => Promise<unknown>; tracingOptions?: TracingOptions; } & Partial<ObservabilityContext>): { stream: ReadableStream<StreamEvent>; getWorkflowState: () => Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; }; /** * Observe the workflow stream * @returns A readable stream of the workflow events */ observeStreamLegacy(): { stream: ReadableStream<StreamEvent>; }; /** * Observe the workflow stream * @returns A readable stream of the workflow events */ observeStream(): ReadableStream<WorkflowStreamEvent>; /** * Starts the workflow execution with the provided input as a stream * @param input The input data for the workflow * @returns A promise that resolves to the workflow output */ stream({ inputData, requestContext, tracingOptions, closeOnSuspend, initialState, outputOptions, perStep, ...rest }: (TInput extends unknown ? { inputData?: TInput; } : { inputData: TInput; }) & (TState extends unknown ? { initialState?: TState; } : { initialState: TState; }) & { requestContext?: RequestContext<TRequestContext>; tracingOptions?: TracingOptions; closeOnSuspend?: boolean; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; perStep?: boolean; } & Partial<ObservabilityContext>): WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>; /** * Resumes the workflow execution with the provided input as a stream * @param input The input data for the workflow * @returns A promise that resolves to the workflow output */ resumeStream<TResume>({ step, resumeData, requestContext, tracingOptions, forEachIndex, outputOptions, perStep, ...rest }?: { resumeData?: TResume; step?: Step<string, any, any, any, TResume, any, TEngineType, any> | [ ...Step<string, any, any, any, any, any, TEngineType, any>[], Step<string, any, any, any, TResume, any, TEngineType, any> ] | string | string[]; requestContext?: RequestContext<TRequestContext>; tracingOptions?: TracingOptions; forEachIndex?: number; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; perStep?: boolean; } & Partial<ObservabilityContext>): WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>; /** * @internal */ watch(cb: (event: WorkflowStreamEvent) => void): () => void; /** * @internal */ watchAsync(cb: (event: WorkflowStreamEvent) => void): Promise<() => void>; resume<TResume>(params: { resumeData?: TResume; step?: Step<string, any, any, any, TResume, any, TEngineType, any> | [ ...Step<string, any, any, any, any, any, TEngineType, any>[], Step<string, any, any, any, TResume, any, TEngineType, any> ] | string | string[]; label?: string; requestContext?: RequestContext<TRequestContext>; retryCount?: number; tracingOptions?: TracingOptions; outputWriter?: OutputWriter; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; forEachIndex?: number; perStep?: boolean; } & Partial<ObservabilityContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; /** * Restarts the workflow execution that was previously active * @returns A promise that resolves to the workflow output */ restart(args?: { requestContext?: RequestContext<TRequestContext>; outputWriter?: OutputWriter; tracingOptions?: TracingOptions; } & Partial<ObservabilityContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; protected _resume<TResume>(params: { resumeData?: TResume; step?: Step<string, any, any, TResume, any, any, TEngineType, any> | [ ...Step<string, any, any, any, any, any, TEngineType, any>[], Step<string, any, any, TResume, any, any, TEngineType, any> ] | string | string[]; label?: string; requestContext?: RequestContext<TRequestContext>; retryCount?: number; tracingOptions?: TracingOptions; outputWriter?: OutputWriter; format?: 'legacy' | 'vnext' | undefined; isVNext?: boolean; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; forEachIndex?: number; perStep?: boolean; } & Partial<ObservabilityContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; protected _restart({ requestContext, outputWriter, tracingOptions, ...rest }: { requestContext?: RequestContext<TRequestContext>; outputWriter?: OutputWriter; tracingOptions?: TracingOptions; } & Partial<ObservabilityContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; protected _timeTravel<TInput>({ inputData, resumeData, initialState, step: stepParam, context, nestedStepsContext, requestContext, outputWriter, tracingOptions, outputOptions, perStep, ...rest }: { inputData?: TInput; resumeData?: any; initialState?: TState; step: Step<string, any, TInput, any, any, any, TEngineType, any> | [ ...Step<string, any, any, any, any, any, TEngineType, any>[], Step<string, any, TInput, any, any, any, TEngineType, any> ] | string | string[]; context?: TimeTravelContext<any, any, any, any>; nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>; requestContext?: RequestContext<TRequestContext>; outputWriter?: OutputWriter; tracingOptions?: TracingOptions; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; perStep?: boolean; } & Partial<ObservabilityContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; timeTravel<TInput>(args: { inputData?: TInput; resumeData?: any; initialState?: TState; step: Step<string, any, TInput, any, any, any, TEngineType, any> | [ ...Step<string, any, any, any, any, any, TEngineType, any>[], Step<string, any, TInput, any, any, any, TEngineType, any> ] | string | string[]; context?: TimeTravelContext<any, any, any, any>; nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>; requestContext?: RequestContext<TRequestContext>; outputWriter?: OutputWriter; tracingOptions?: TracingOptions; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; perStep?: boolean; } & Partial<ObservabilityContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>; timeTravelStream<TTravelInput>({ inputData, resumeData, initialState, step, context, nestedStepsContext, requestContext, tracingOptions, outputOptions, perStep, ...rest }: { inputData?: TTravelInput; initialState?: TState; resumeData?: any; step: Step<string, any, any, any, any, any, TEngineType, any> | [ ...Step<string, any, any, any, any, any, TEngineType, any>[], Step<string, any, any, any, any, any, TEngineType, any> ] | string | string[]; context?: TimeTravelContext<any, any, any, any>; nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>; requestContext?: RequestContext<TRequestContext>; tracingOptions?: TracingOptions; outputOptions?: { includeState?: boolean; includeResumeLabels?: boolean; }; perStep?: boolean; } & Partial<ObservabilityContext>): WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>; /** * @access private * @returns The execution results of the workflow run */ _getExecutionResults(): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> | undefined; } export {}; //# sourceMappingURL=workflow.d.ts.map