@mastra/inngest 0.0.0-transpile-packages-20250724123433 → 0.0.0-transpile-packages-20250731152758

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["inngestServe","event","startedAt","stepRes","step","result"],"mappings":"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","file":"index.js","sourcesContent":["import { randomUUID } from 'crypto';\nimport type { ReadableStream } from 'node:stream/web';\nimport { subscribe } from '@inngest/realtime';\nimport type { Agent, Mastra, ToolExecutionContext, WorkflowRun, WorkflowRuns } from '@mastra/core';\nimport { RuntimeContext } from '@mastra/core/di';\nimport { Tool, ToolStream } from '@mastra/core/tools';\nimport { Workflow, Run, DefaultExecutionEngine } from '@mastra/core/workflows';\nimport type {\n ExecuteFunction,\n ExecutionContext,\n ExecutionEngine,\n ExecutionGraph,\n Step,\n WorkflowConfig,\n StepFlowEntry,\n StepResult,\n WorkflowResult,\n SerializedStepFlowEntry,\n StepFailure,\n Emitter,\n WatchEvent,\n StreamEvent,\n ChunkType,\n} from '@mastra/core/workflows';\nimport { EMITTER_SYMBOL } from '@mastra/core/workflows/_constants';\nimport type { Span } from '@opentelemetry/api';\nimport type { Inngest, BaseContext } from 'inngest';\nimport { serve as inngestServe } from 'inngest/hono';\nimport { z } from 'zod';\n\nexport type InngestEngineType = {\n step: any;\n};\n\nexport function serve({ mastra, inngest }: { mastra: Mastra; inngest: Inngest }): ReturnType<typeof inngestServe> {\n const wfs = mastra.getWorkflows();\n const functions = Array.from(\n new Set(\n Object.values(wfs).flatMap(wf => {\n if (wf instanceof InngestWorkflow) {\n wf.__registerMastra(mastra);\n return wf.getFunctions();\n }\n return [];\n }),\n ),\n );\n return inngestServe({\n client: inngest,\n functions,\n });\n}\n\nexport class InngestRun<\n TEngineType = InngestEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n> extends Run<TEngineType, TSteps, TInput, TOutput> {\n private inngest: Inngest;\n serializedStepGraph: SerializedStepFlowEntry[];\n #mastra: Mastra;\n\n constructor(\n params: {\n workflowId: string;\n runId: string;\n executionEngine: ExecutionEngine;\n executionGraph: ExecutionGraph;\n serializedStepGraph: SerializedStepFlowEntry[];\n mastra?: Mastra;\n retryConfig?: {\n attempts?: number;\n delay?: number;\n };\n cleanup?: () => void;\n },\n inngest: Inngest,\n ) {\n super(params);\n this.inngest = inngest;\n this.serializedStepGraph = params.serializedStepGraph;\n this.#mastra = params.mastra!;\n }\n\n async getRuns(eventId: string) {\n const response = await fetch(`${this.inngest.apiBaseUrl ?? 'https://api.inngest.com'}/v1/events/${eventId}/runs`, {\n headers: {\n Authorization: `Bearer ${process.env.INNGEST_SIGNING_KEY}`,\n },\n });\n const json = await response.json();\n return (json as any).data;\n }\n\n async getRunOutput(eventId: string) {\n let runs = await this.getRuns(eventId);\n\n while (runs?.[0]?.status !== 'Completed' || runs?.[0]?.event_id !== eventId) {\n await new Promise(resolve => setTimeout(resolve, 1000));\n runs = await this.getRuns(eventId);\n if (runs?.[0]?.status === 'Failed') {\n console.log('run', runs?.[0]);\n throw new Error(`Function run ${runs?.[0]?.status}`);\n } else if (runs?.[0]?.status === 'Cancelled') {\n const snapshot = await this.#mastra?.storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n return { output: { result: { steps: snapshot?.context, status: 'canceled' } } };\n }\n }\n return runs?.[0];\n }\n\n async sendEvent(event: string, data: any) {\n await this.inngest.send({\n name: `user-event-${event}`,\n data,\n });\n }\n\n async cancel() {\n await this.inngest.send({\n name: `cancel.workflow.${this.workflowId}`,\n data: {\n runId: this.runId,\n },\n });\n\n const snapshot = await this.#mastra?.storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n if (snapshot) {\n await this.#mastra?.storage?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n snapshot: {\n ...snapshot,\n status: 'canceled' as any,\n },\n });\n }\n }\n\n async start({\n inputData,\n }: {\n inputData?: z.infer<TInput>;\n runtimeContext?: RuntimeContext;\n }): Promise<WorkflowResult<TOutput, TSteps>> {\n await this.#mastra.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n snapshot: {\n runId: this.runId,\n serializedStepGraph: this.serializedStepGraph,\n value: {},\n context: {} as any,\n activePaths: [],\n suspendedPaths: {},\n timestamp: Date.now(),\n status: 'running',\n },\n });\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n inputData,\n runId: this.runId,\n },\n });\n\n const eventId = eventOutput.ids[0];\n if (!eventId) {\n throw new Error('Event ID is not set');\n }\n const runOutput = await this.getRunOutput(eventId);\n const result = runOutput?.output?.result;\n if (result.status === 'failed') {\n result.error = new Error(result.error);\n }\n\n if (result.status !== 'suspended') {\n this.cleanup?.();\n }\n return result;\n }\n\n async resume<TResumeSchema extends z.ZodType<any>>(params: {\n resumeData?: z.infer<TResumeSchema>;\n step:\n | Step<string, any, any, TResumeSchema, any>\n | [...Step<string, any, any, any, any>[], Step<string, any, any, TResumeSchema, any>]\n | string\n | string[];\n runtimeContext?: RuntimeContext;\n }): Promise<WorkflowResult<TOutput, TSteps>> {\n const p = this._resume(params).then(result => {\n if (result.status !== 'suspended') {\n this.closeStreamAction?.().catch(() => {});\n }\n\n return result;\n });\n\n this.executionResults = p;\n return p;\n }\n\n async _resume<TResumeSchema extends z.ZodType<any>>(params: {\n resumeData?: z.infer<TResumeSchema>;\n step:\n | Step<string, any, any, TResumeSchema, any>\n | [...Step<string, any, any, any, any>[], Step<string, any, any, TResumeSchema, any>]\n | string\n | string[];\n runtimeContext?: RuntimeContext;\n }): Promise<WorkflowResult<TOutput, TSteps>> {\n const steps: string[] = (Array.isArray(params.step) ? params.step : [params.step]).map(step =>\n typeof step === 'string' ? step : step?.id,\n );\n const snapshot = await this.#mastra?.storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n inputData: params.resumeData,\n runId: this.runId,\n workflowId: this.workflowId,\n stepResults: snapshot?.context as any,\n resume: {\n steps,\n stepResults: snapshot?.context as any,\n resumePayload: params.resumeData,\n // @ts-ignore\n resumePath: snapshot?.suspendedPaths?.[steps?.[0]] as any,\n },\n },\n });\n\n const eventId = eventOutput.ids[0];\n if (!eventId) {\n throw new Error('Event ID is not set');\n }\n const runOutput = await this.getRunOutput(eventId);\n const result = runOutput?.output?.result;\n if (result.status === 'failed') {\n result.error = new Error(result.error);\n }\n return result;\n }\n\n watch(cb: (event: WatchEvent) => void, type: 'watch' | 'watch-v2' = 'watch'): () => void {\n let active = true;\n const streamPromise = subscribe(\n {\n channel: `workflow:${this.workflowId}:${this.runId}`,\n topics: [type],\n app: this.inngest,\n },\n (message: any) => {\n if (active) {\n cb(message.data);\n }\n },\n );\n\n return () => {\n active = false;\n streamPromise\n .then(async (stream: Awaited<typeof streamPromise>) => {\n return stream.cancel();\n })\n .catch(err => {\n console.error(err);\n });\n };\n }\n\n stream({ inputData, runtimeContext }: { inputData?: z.infer<TInput>; runtimeContext?: RuntimeContext } = {}): {\n stream: ReadableStream<StreamEvent>;\n getWorkflowState: () => Promise<WorkflowResult<TOutput, TSteps>>;\n } {\n const { readable, writable } = new TransformStream<StreamEvent, StreamEvent>();\n\n const writer = writable.getWriter();\n const unwatch = this.watch(async event => {\n try {\n // watch-v2 events are data stream events, so we need to cast them to the correct type\n await writer.write(event as any);\n } catch {}\n }, 'watch-v2');\n\n this.closeStreamAction = async () => {\n unwatch();\n\n try {\n await writer.close();\n } catch (err) {\n console.error('Error closing stream:', err);\n } finally {\n writer.releaseLock();\n }\n };\n\n this.executionResults = this.start({ inputData, runtimeContext }).then(result => {\n if (result.status !== 'suspended') {\n this.closeStreamAction?.().catch(() => {});\n }\n\n return result;\n });\n\n return {\n stream: readable as ReadableStream<StreamEvent>,\n getWorkflowState: () => this.executionResults!,\n };\n }\n}\n\nexport class InngestWorkflow<\n TEngineType = InngestEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TWorkflowId extends string = string,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TPrevSchema extends z.ZodType<any> = TInput,\n> extends Workflow<TEngineType, TSteps, TWorkflowId, TInput, TOutput, TPrevSchema> {\n #mastra: Mastra;\n public inngest: Inngest;\n\n private function: ReturnType<Inngest['createFunction']> | undefined;\n\n constructor(params: WorkflowConfig<TWorkflowId, TInput, TOutput, TSteps>, inngest: Inngest) {\n super(params);\n this.#mastra = params.mastra!;\n this.inngest = inngest;\n }\n\n async getWorkflowRuns(args?: {\n fromDate?: Date;\n toDate?: Date;\n limit?: number;\n offset?: number;\n resourceId?: string;\n }) {\n const storage = this.#mastra?.getStorage();\n if (!storage) {\n this.logger.debug('Cannot get workflow runs. Mastra engine is not initialized');\n return { runs: [], total: 0 };\n }\n\n return storage.getWorkflowRuns({ workflowName: this.id, ...(args ?? {}) }) as unknown as WorkflowRuns;\n }\n\n async getWorkflowRunById(runId: string): Promise<WorkflowRun | null> {\n const storage = this.#mastra?.getStorage();\n if (!storage) {\n this.logger.debug('Cannot get workflow runs. Mastra engine is not initialized');\n //returning in memory run if no storage is initialized\n return this.runs.get(runId)\n ? ({ ...this.runs.get(runId), workflowName: this.id } as unknown as WorkflowRun)\n : null;\n }\n const run = (await storage.getWorkflowRunById({ runId, workflowName: this.id })) as unknown as WorkflowRun;\n\n return (\n run ??\n (this.runs.get(runId) ? ({ ...this.runs.get(runId), workflowName: this.id } as unknown as WorkflowRun) : null)\n );\n }\n\n async getWorkflowRunExecutionResult(runId: string): Promise<WatchEvent['payload']['workflowState'] | null> {\n const storage = this.#mastra?.getStorage();\n if (!storage) {\n this.logger.debug('Cannot get workflow run execution result. Mastra storage is not initialized');\n return null;\n }\n\n const run = await storage.getWorkflowRunById({ runId, workflowName: this.id });\n\n if (!run?.snapshot) {\n return null;\n }\n\n if (typeof run.snapshot === 'string') {\n return null;\n }\n\n return {\n status: run.snapshot.status,\n result: run.snapshot.result,\n error: run.snapshot.error,\n payload: run.snapshot.context?.input,\n steps: run.snapshot.context as any,\n };\n }\n\n __registerMastra(mastra: Mastra) {\n this.#mastra = mastra;\n this.executionEngine.__registerMastra(mastra);\n const updateNested = (step: StepFlowEntry) => {\n if (\n (step.type === 'step' || step.type === 'loop' || step.type === 'foreach') &&\n step.step instanceof InngestWorkflow\n ) {\n step.step.__registerMastra(mastra);\n } else if (step.type === 'parallel' || step.type === 'conditional') {\n for (const subStep of step.steps) {\n updateNested(subStep);\n }\n }\n };\n\n if (this.executionGraph.steps.length) {\n for (const step of this.executionGraph.steps) {\n updateNested(step);\n }\n }\n }\n\n createRun(options?: { runId?: string }): Run<TEngineType, TSteps, TInput, TOutput> {\n const runIdToUse = options?.runId || randomUUID();\n\n // Return a new Run instance with object parameters\n const run: Run<TEngineType, TSteps, TInput, TOutput> =\n this.runs.get(runIdToUse) ??\n new InngestRun(\n {\n workflowId: this.id,\n runId: runIdToUse,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n mastra: this.#mastra,\n retryConfig: this.retryConfig,\n cleanup: () => this.runs.delete(runIdToUse),\n },\n this.inngest,\n );\n\n this.runs.set(runIdToUse, run);\n return run;\n }\n\n async createRunAsync(options?: { runId?: string }): Promise<Run<TEngineType, TSteps, TInput, TOutput>> {\n const runIdToUse = options?.runId || randomUUID();\n\n // Return a new Run instance with object parameters\n const run: Run<TEngineType, TSteps, TInput, TOutput> =\n this.runs.get(runIdToUse) ??\n new InngestRun(\n {\n workflowId: this.id,\n runId: runIdToUse,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n mastra: this.#mastra,\n retryConfig: this.retryConfig,\n cleanup: () => this.runs.delete(runIdToUse),\n },\n this.inngest,\n );\n\n this.runs.set(runIdToUse, run);\n\n const workflowSnapshotInStorage = await this.getWorkflowRunExecutionResult(runIdToUse);\n\n if (!workflowSnapshotInStorage) {\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.id,\n runId: runIdToUse,\n snapshot: {\n runId: runIdToUse,\n status: 'pending',\n value: {},\n context: {},\n activePaths: [],\n serializedStepGraph: this.serializedStepGraph,\n suspendedPaths: {},\n result: undefined,\n error: undefined,\n // @ts-ignore\n timestamp: Date.now(),\n },\n });\n }\n\n return run;\n }\n\n getFunction() {\n if (this.function) {\n return this.function;\n }\n this.function = this.inngest.createFunction(\n {\n id: `workflow.${this.id}`,\n // @ts-ignore\n retries: this.retryConfig?.attempts ?? 0,\n cancelOn: [{ event: `cancel.workflow.${this.id}` }],\n },\n { event: `workflow.${this.id}` },\n async ({ event, step, attempt, publish }) => {\n let { inputData, runId, resume } = event.data;\n\n if (!runId) {\n runId = await step.run(`workflow.${this.id}.runIdGen`, async () => {\n return randomUUID();\n });\n }\n\n const emitter = {\n emit: async (event: string, data: any) => {\n if (!publish) {\n return;\n }\n\n try {\n await publish({\n channel: `workflow:${this.id}:${runId}`,\n topic: event,\n data,\n });\n } catch (err: any) {\n this.logger.error('Error emitting event: ' + (err?.stack ?? err?.message ?? err));\n }\n },\n on: (_event: string, _callback: (data: any) => void) => {\n // no-op\n },\n off: (_event: string, _callback: (data: any) => void) => {\n // no-op\n },\n once: (_event: string, _callback: (data: any) => void) => {\n // no-op\n },\n };\n\n const engine = new InngestExecutionEngine(this.#mastra, step, attempt);\n const result = await engine.execute<z.infer<TInput>, WorkflowResult<TOutput, TSteps>>({\n workflowId: this.id,\n runId,\n graph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n input: inputData,\n emitter,\n retryConfig: this.retryConfig,\n runtimeContext: new RuntimeContext(), // TODO\n resume,\n abortController: new AbortController(),\n });\n\n return { result, runId };\n },\n );\n return this.function;\n }\n\n getNestedFunctions(steps: StepFlowEntry[]): ReturnType<Inngest['createFunction']>[] {\n return steps.flatMap(step => {\n if (step.type === 'step' || step.type === 'loop' || step.type === 'foreach') {\n if (step.step instanceof InngestWorkflow) {\n return [step.step.getFunction(), ...step.step.getNestedFunctions(step.step.executionGraph.steps)];\n }\n return [];\n } else if (step.type === 'parallel' || step.type === 'conditional') {\n return this.getNestedFunctions(step.steps);\n }\n\n return [];\n });\n }\n\n getFunctions() {\n return [this.getFunction(), ...this.getNestedFunctions(this.executionGraph.steps)];\n }\n}\n\nfunction isAgent(params: any): params is Agent<any, any, any> {\n return params?.component === 'AGENT';\n}\n\nfunction isTool(params: any): params is Tool<any, any, any> {\n return params instanceof Tool;\n}\n\nexport function createStep<\n TStepId extends string,\n TStepInput extends z.ZodType<any>,\n TStepOutput extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(params: {\n id: TStepId;\n description?: string;\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n resumeSchema?: TResumeSchema;\n suspendSchema?: TSuspendSchema;\n execute: ExecuteFunction<\n z.infer<TStepInput>,\n z.infer<TStepOutput>,\n z.infer<TResumeSchema>,\n z.infer<TSuspendSchema>,\n InngestEngineType\n >;\n}): Step<TStepId, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType>;\n\nexport function createStep<\n TStepId extends string,\n TStepInput extends z.ZodObject<{ prompt: z.ZodString }>,\n TStepOutput extends z.ZodObject<{ text: z.ZodString }>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(\n agent: Agent<TStepId, any, any>,\n): Step<TStepId, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType>;\n\nexport function createStep<\n TSchemaIn extends z.ZodType<any>,\n TSchemaOut extends z.ZodType<any>,\n TContext extends ToolExecutionContext<TSchemaIn>,\n>(\n tool: Tool<TSchemaIn, TSchemaOut, TContext> & {\n inputSchema: TSchemaIn;\n outputSchema: TSchemaOut;\n execute: (context: TContext) => Promise<any>;\n },\n): Step<string, TSchemaIn, TSchemaOut, z.ZodType<any>, z.ZodType<any>, InngestEngineType>;\nexport function createStep<\n TStepId extends string,\n TStepInput extends z.ZodType<any>,\n TStepOutput extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(\n params:\n | {\n id: TStepId;\n description?: string;\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n resumeSchema?: TResumeSchema;\n suspendSchema?: TSuspendSchema;\n execute: ExecuteFunction<\n z.infer<TStepInput>,\n z.infer<TStepOutput>,\n z.infer<TResumeSchema>,\n z.infer<TSuspendSchema>,\n InngestEngineType\n >;\n }\n | Agent<any, any, any>\n | (Tool<TStepInput, TStepOutput, any> & {\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n execute: (context: ToolExecutionContext<TStepInput>) => Promise<any>;\n }),\n): Step<TStepId, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType> {\n if (isAgent(params)) {\n return {\n id: params.name,\n // @ts-ignore\n inputSchema: z.object({\n prompt: z.string(),\n // resourceId: z.string().optional(),\n // threadId: z.string().optional(),\n }),\n // @ts-ignore\n outputSchema: z.object({\n text: z.string(),\n }),\n execute: async ({ inputData, [EMITTER_SYMBOL]: emitter, runtimeContext, abortSignal, abort }) => {\n let streamPromise = {} as {\n promise: Promise<string>;\n resolve: (value: string) => void;\n reject: (reason?: any) => void;\n };\n\n streamPromise.promise = new Promise((resolve, reject) => {\n streamPromise.resolve = resolve;\n streamPromise.reject = reject;\n });\n const toolData = {\n name: params.name,\n args: inputData,\n };\n await emitter.emit('watch-v2', {\n type: 'tool-call-streaming-start',\n ...toolData,\n });\n const { fullStream } = await params.stream(inputData.prompt, {\n // resourceId: inputData.resourceId,\n // threadId: inputData.threadId,\n runtimeContext,\n onFinish: result => {\n streamPromise.resolve(result.text);\n },\n abortSignal,\n });\n\n if (abortSignal.aborted) {\n return abort();\n }\n\n for await (const chunk of fullStream) {\n switch (chunk.type) {\n case 'text-delta':\n await emitter.emit('watch-v2', {\n type: 'tool-call-delta',\n ...toolData,\n argsTextDelta: chunk.textDelta,\n });\n break;\n\n case 'step-start':\n case 'step-finish':\n case 'finish':\n break;\n\n case 'tool-call':\n case 'tool-result':\n case 'tool-call-streaming-start':\n case 'tool-call-delta':\n case 'source':\n case 'file':\n default:\n await emitter.emit('watch-v2', chunk);\n break;\n }\n }\n\n return {\n text: await streamPromise.promise,\n };\n },\n };\n }\n\n if (isTool(params)) {\n if (!params.inputSchema || !params.outputSchema) {\n throw new Error('Tool must have input and output schemas defined');\n }\n\n return {\n // TODO: tool probably should have strong id type\n // @ts-ignore\n id: params.id,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n execute: async ({ inputData, mastra, runtimeContext }) => {\n return params.execute({\n context: inputData,\n mastra,\n runtimeContext,\n });\n },\n };\n }\n\n return {\n id: params.id,\n description: params.description,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n resumeSchema: params.resumeSchema,\n suspendSchema: params.suspendSchema,\n execute: params.execute,\n };\n}\n\nexport function init(inngest: Inngest) {\n return {\n createWorkflow<\n TWorkflowId extends string = string,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TSteps extends Step<string, any, any, any, any, InngestEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n InngestEngineType\n >[],\n >(params: WorkflowConfig<TWorkflowId, TInput, TOutput, TSteps>) {\n return new InngestWorkflow<InngestEngineType, TSteps, TWorkflowId, TInput, TOutput, TInput>(params, inngest);\n },\n createStep,\n cloneStep<TStepId extends string>(\n step: Step<string, any, any, any, any, InngestEngineType>,\n opts: { id: TStepId },\n ): Step<TStepId, any, any, any, any, InngestEngineType> {\n return {\n id: opts.id,\n description: step.description,\n inputSchema: step.inputSchema,\n outputSchema: step.outputSchema,\n execute: step.execute,\n };\n },\n cloneWorkflow<\n TWorkflowId extends string = string,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TSteps extends Step<string, any, any, any, any, InngestEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n InngestEngineType\n >[],\n TPrevSchema extends z.ZodType<any> = TInput,\n >(\n workflow: Workflow<InngestEngineType, TSteps, string, TInput, TOutput, TPrevSchema>,\n opts: { id: TWorkflowId },\n ): Workflow<InngestEngineType, TSteps, TWorkflowId, TInput, TOutput, TPrevSchema> {\n const wf: Workflow<InngestEngineType, TSteps, TWorkflowId, TInput, TOutput, TPrevSchema> = new Workflow({\n id: opts.id,\n inputSchema: workflow.inputSchema,\n outputSchema: workflow.outputSchema,\n steps: workflow.stepDefs,\n mastra: workflow.mastra,\n });\n\n wf.setStepFlow(workflow.stepGraph);\n wf.commit();\n return wf;\n },\n };\n}\n\nexport class InngestExecutionEngine extends DefaultExecutionEngine {\n private inngestStep: BaseContext<Inngest>['step'];\n private inngestAttempts: number;\n\n constructor(mastra: Mastra, inngestStep: BaseContext<Inngest>['step'], inngestAttempts: number = 0) {\n super({ mastra });\n this.inngestStep = inngestStep;\n this.inngestAttempts = inngestAttempts;\n }\n\n async execute<TInput, TOutput>(params: {\n workflowId: string;\n runId: string;\n graph: ExecutionGraph;\n serializedStepGraph: SerializedStepFlowEntry[];\n input?: TInput;\n resume?: {\n // TODO: add execute path\n steps: string[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumePayload: any;\n resumePath: number[];\n };\n emitter: Emitter;\n retryConfig?: {\n attempts?: number;\n delay?: number;\n };\n runtimeContext: RuntimeContext;\n abortController: AbortController;\n }): Promise<TOutput> {\n await params.emitter.emit('watch-v2', {\n type: 'start',\n payload: { runId: params.runId },\n });\n\n const result = await super.execute<TInput, TOutput>(params);\n\n await params.emitter.emit('watch-v2', {\n type: 'finish',\n payload: { runId: params.runId },\n });\n\n return result;\n }\n\n protected async fmtReturnValue<TOutput>(\n executionSpan: Span | undefined,\n emitter: Emitter,\n stepResults: Record<string, StepResult<any, any, any, any>>,\n lastOutput: StepResult<any, any, any, any>,\n error?: Error | string,\n ): Promise<TOutput> {\n const base: any = {\n status: lastOutput.status,\n steps: stepResults,\n };\n if (lastOutput.status === 'success') {\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n workflowState: {\n status: lastOutput.status,\n steps: stepResults,\n result: lastOutput.output,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n base.result = lastOutput.output;\n } else if (lastOutput.status === 'failed') {\n base.error =\n error instanceof Error\n ? (error?.stack ?? error.message)\n : lastOutput?.error instanceof Error\n ? lastOutput.error.message\n : (lastOutput.error ?? error ?? 'Unknown error');\n\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n workflowState: {\n status: lastOutput.status,\n steps: stepResults,\n result: null,\n error: base.error,\n },\n },\n eventTimestamp: Date.now(),\n });\n } else if (lastOutput.status === 'suspended') {\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n workflowState: {\n status: lastOutput.status,\n steps: stepResults,\n result: null,\n error: null,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n const suspendedStepIds = Object.entries(stepResults).flatMap(([stepId, stepResult]) => {\n if (stepResult?.status === 'suspended') {\n const nestedPath = stepResult?.payload?.__workflow_meta?.path;\n return nestedPath ? [[stepId, ...nestedPath]] : [[stepId]];\n }\n\n return [];\n });\n base.suspended = suspendedStepIds;\n }\n\n executionSpan?.end();\n return base as TOutput;\n }\n\n async superExecuteStep({\n workflowId,\n runId,\n step,\n stepResults,\n executionContext,\n resume,\n prevOutput,\n emitter,\n abortController,\n runtimeContext,\n writableStream,\n }: {\n workflowId: string;\n runId: string;\n step: Step<string, any, any>;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n executionContext: ExecutionContext;\n resume?: {\n steps: string[];\n resumePayload: any;\n };\n prevOutput: any;\n emitter: Emitter;\n abortController: AbortController;\n runtimeContext: RuntimeContext;\n writableStream?: WritableStream<ChunkType>;\n }): Promise<StepResult<any, any, any, any>> {\n return super.executeStep({\n workflowId,\n runId,\n step,\n stepResults,\n executionContext,\n resume,\n prevOutput,\n emitter,\n abortController,\n runtimeContext,\n writableStream,\n });\n }\n\n // async executeSleep({ id, duration }: { id: string; duration: number }): Promise<void> {\n // await this.inngestStep.sleep(id, duration);\n // }\n\n async executeSleep({\n workflowId,\n runId,\n entry,\n prevOutput,\n stepResults,\n emitter,\n abortController,\n runtimeContext,\n writableStream,\n }: {\n workflowId: string;\n runId: string;\n serializedStepGraph: SerializedStepFlowEntry[];\n entry: {\n type: 'sleep';\n id: string;\n duration?: number;\n fn?: ExecuteFunction<any, any, any, any, InngestEngineType>;\n };\n prevStep: StepFlowEntry;\n prevOutput: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resume?: {\n steps: string[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumePayload: any;\n resumePath: number[];\n };\n executionContext: ExecutionContext;\n emitter: Emitter;\n abortController: AbortController;\n runtimeContext: RuntimeContext;\n writableStream?: WritableStream<ChunkType>;\n }): Promise<void> {\n let { duration, fn } = entry;\n\n if (fn) {\n const stepCallId = randomUUID();\n duration = await this.inngestStep.run(`workflow.${workflowId}.sleep.${entry.id}`, async () => {\n return await fn({\n runId,\n workflowId,\n mastra: this.mastra!,\n runtimeContext,\n inputData: prevOutput,\n runCount: -1,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n if (!step?.id) {\n return null;\n }\n\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n\n // TODO: this function shouldn't have suspend probably?\n suspend: async (_suspendPayload: any): Promise<any> => {},\n bail: () => {},\n abort: () => {\n abortController?.abort();\n },\n [EMITTER_SYMBOL]: emitter,\n engine: { step: this.inngestStep },\n abortSignal: abortController?.signal,\n writer: new ToolStream(\n {\n prefix: 'step',\n callId: stepCallId,\n name: 'sleep',\n runId,\n },\n writableStream,\n ),\n });\n });\n }\n\n await this.inngestStep.sleep(entry.id, !duration || duration < 0 ? 0 : duration);\n }\n\n async executeSleepUntil({\n workflowId,\n runId,\n entry,\n prevOutput,\n stepResults,\n emitter,\n abortController,\n runtimeContext,\n writableStream,\n }: {\n workflowId: string;\n runId: string;\n serializedStepGraph: SerializedStepFlowEntry[];\n entry: {\n type: 'sleepUntil';\n id: string;\n date?: Date;\n fn?: ExecuteFunction<any, any, any, any, InngestEngineType>;\n };\n prevStep: StepFlowEntry;\n prevOutput: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resume?: {\n steps: string[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumePayload: any;\n resumePath: number[];\n };\n executionContext: ExecutionContext;\n emitter: Emitter;\n abortController: AbortController;\n runtimeContext: RuntimeContext;\n writableStream?: WritableStream<ChunkType>;\n }): Promise<void> {\n let { date, fn } = entry;\n\n if (fn) {\n date = await this.inngestStep.run(`workflow.${workflowId}.sleepUntil.${entry.id}`, async () => {\n const stepCallId = randomUUID();\n return await fn({\n runId,\n workflowId,\n mastra: this.mastra!,\n runtimeContext,\n inputData: prevOutput,\n runCount: -1,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n if (!step?.id) {\n return null;\n }\n\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n\n // TODO: this function shouldn't have suspend probably?\n suspend: async (_suspendPayload: any): Promise<any> => {},\n bail: () => {},\n abort: () => {\n abortController?.abort();\n },\n [EMITTER_SYMBOL]: emitter,\n engine: { step: this.inngestStep },\n abortSignal: abortController?.signal,\n writer: new ToolStream(\n {\n prefix: 'step',\n callId: stepCallId,\n name: 'sleep',\n runId,\n },\n writableStream,\n ),\n });\n });\n }\n\n if (!(date instanceof Date)) {\n return;\n }\n\n await this.inngestStep.sleepUntil(entry.id, date);\n }\n\n async executeWaitForEvent({ event, timeout }: { event: string; timeout?: number }): Promise<any> {\n const eventData = await this.inngestStep.waitForEvent(`user-event-${event}`, {\n event: `user-event-${event}`,\n timeout: timeout ?? 5e3,\n });\n\n if (eventData === null) {\n throw 'Timeout waiting for event';\n }\n\n return eventData?.data;\n }\n\n async executeStep({\n step,\n stepResults,\n executionContext,\n resume,\n prevOutput,\n emitter,\n abortController,\n runtimeContext,\n writableStream,\n }: {\n step: Step<string, any, any>;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n executionContext: ExecutionContext;\n resume?: {\n steps: string[];\n resumePayload: any;\n runId?: string;\n };\n prevOutput: any;\n emitter: Emitter;\n abortController: AbortController;\n runtimeContext: RuntimeContext;\n writableStream?: WritableStream<ChunkType>;\n }): Promise<StepResult<any, any, any, any>> {\n const startedAt = await this.inngestStep.run(\n `workflow.${executionContext.workflowId}.run.${executionContext.runId}.step.${step.id}.running_ev`,\n async () => {\n const startedAt = Date.now();\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n currentStep: {\n id: step.id,\n status: 'running',\n },\n workflowState: {\n status: 'running',\n steps: {\n ...stepResults,\n [step.id]: {\n status: 'running',\n },\n },\n result: null,\n error: null,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n await emitter.emit('watch-v2', {\n type: 'step-start',\n payload: {\n id: step.id,\n status: 'running',\n payload: prevOutput,\n startedAt,\n },\n });\n\n return startedAt;\n },\n );\n\n if (step instanceof InngestWorkflow) {\n const isResume = !!resume?.steps?.length;\n let result: WorkflowResult<any, any>;\n let runId: string;\n if (isResume) {\n // @ts-ignore\n runId = stepResults[resume?.steps?.[0]]?.payload?.__workflow_meta?.runId ?? randomUUID();\n\n const snapshot: any = await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: step.id,\n runId: runId,\n });\n\n const invokeResp = (await this.inngestStep.invoke(`workflow.${executionContext.workflowId}.step.${step.id}`, {\n function: step.getFunction(),\n data: {\n inputData: prevOutput,\n runId: runId,\n resume: {\n runId: runId,\n steps: resume.steps.slice(1),\n stepResults: snapshot?.context as any,\n resumePayload: resume.resumePayload,\n // @ts-ignore\n resumePath: snapshot?.suspendedPaths?.[resume.steps?.[1]] as any,\n },\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n } else {\n const invokeResp = (await this.inngestStep.invoke(`workflow.${executionContext.workflowId}.step.${step.id}`, {\n function: step.getFunction(),\n data: {\n inputData: prevOutput,\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n }\n\n const res = await this.inngestStep.run(\n `workflow.${executionContext.workflowId}.step.${step.id}.nestedwf-results`,\n async () => {\n if (result.status === 'failed') {\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n currentStep: {\n id: step.id,\n status: 'failed',\n error: result?.error,\n },\n workflowState: {\n status: 'running',\n steps: stepResults,\n result: null,\n error: null,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n await emitter.emit('watch-v2', {\n type: 'step-result',\n payload: {\n id: step.id,\n status: 'failed',\n error: result?.error,\n payload: prevOutput,\n },\n });\n\n return { executionContext, result: { status: 'failed', error: result?.error } };\n } else if (result.status === 'suspended') {\n const suspendedSteps = Object.entries(result.steps).filter(([_stepName, stepResult]) => {\n const stepRes: StepResult<any, any, any, any> = stepResult as StepResult<any, any, any, any>;\n return stepRes?.status === 'suspended';\n });\n\n for (const [stepName, stepResult] of suspendedSteps) {\n // @ts-ignore\n const suspendPath: string[] = [stepName, ...(stepResult?.payload?.__workflow_meta?.path ?? [])];\n executionContext.suspendedPaths[step.id] = executionContext.executionPath;\n\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n currentStep: {\n id: step.id,\n status: 'suspended',\n payload: { ...(stepResult as any)?.payload, __workflow_meta: { runId: runId, path: suspendPath } },\n },\n workflowState: {\n status: 'running',\n steps: stepResults,\n result: null,\n error: null,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n await emitter.emit('watch-v2', {\n type: 'step-suspended',\n payload: {\n id: step.id,\n status: 'suspended',\n },\n });\n\n return {\n executionContext,\n result: {\n status: 'suspended',\n payload: { ...(stepResult as any)?.payload, __workflow_meta: { runId: runId, path: suspendPath } },\n },\n };\n }\n\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n currentStep: {\n id: step.id,\n status: 'suspended',\n payload: {},\n },\n workflowState: {\n status: 'running',\n steps: stepResults,\n result: null,\n error: null,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n return {\n executionContext,\n result: {\n status: 'suspended',\n payload: {},\n },\n };\n }\n\n // is success\n\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n currentStep: {\n id: step.id,\n status: 'success',\n output: result?.result,\n },\n workflowState: {\n status: 'running',\n steps: stepResults,\n result: null,\n error: null,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n await emitter.emit('watch-v2', {\n type: 'step-result',\n payload: {\n id: step.id,\n status: 'success',\n output: result?.result,\n },\n });\n\n await emitter.emit('watch-v2', {\n type: 'step-finish',\n payload: {\n id: step.id,\n metadata: {},\n },\n });\n\n return { executionContext, result: { status: 'success', output: result?.result } };\n },\n );\n\n Object.assign(executionContext, res.executionContext);\n return res.result as StepResult<any, any, any, any>;\n }\n\n const stepRes = await this.inngestStep.run(`workflow.${executionContext.workflowId}.step.${step.id}`, async () => {\n let execResults: any;\n let suspended: { payload: any } | undefined;\n let bailed: { payload: any } | undefined;\n\n try {\n const result = await step.execute({\n runId: executionContext.runId,\n mastra: this.mastra!,\n runtimeContext,\n writableStream,\n inputData: prevOutput,\n resumeData: resume?.steps[0] === step.id ? resume?.resumePayload : undefined,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n suspend: async (suspendPayload: any) => {\n executionContext.suspendedPaths[step.id] = executionContext.executionPath;\n suspended = { payload: suspendPayload };\n },\n bail: (result: any) => {\n bailed = { payload: result };\n },\n resume: {\n steps: resume?.steps?.slice(1) || [],\n resumePayload: resume?.resumePayload,\n // @ts-ignore\n runId: stepResults[step.id]?.payload?.__workflow_meta?.runId,\n },\n [EMITTER_SYMBOL]: emitter,\n engine: {\n step: this.inngestStep,\n },\n abortSignal: abortController.signal,\n });\n const endedAt = Date.now();\n\n execResults = {\n status: 'success',\n output: result,\n startedAt,\n endedAt,\n payload: prevOutput,\n resumedAt: resume?.steps[0] === step.id ? startedAt : undefined,\n resumePayload: resume?.steps[0] === step.id ? resume?.resumePayload : undefined,\n };\n } catch (e) {\n execResults = {\n status: 'failed',\n payload: prevOutput,\n error: e instanceof Error ? e.message : String(e),\n endedAt: Date.now(),\n startedAt,\n resumedAt: resume?.steps[0] === step.id ? startedAt : undefined,\n resumePayload: resume?.steps[0] === step.id ? resume?.resumePayload : undefined,\n };\n }\n\n if (suspended) {\n execResults = {\n status: 'suspended',\n suspendedPayload: suspended.payload,\n payload: prevOutput,\n suspendedAt: Date.now(),\n startedAt,\n resumedAt: resume?.steps[0] === step.id ? startedAt : undefined,\n resumePayload: resume?.steps[0] === step.id ? resume?.resumePayload : undefined,\n };\n } else if (bailed) {\n execResults = { status: 'bailed', output: bailed.payload, payload: prevOutput, endedAt: Date.now(), startedAt };\n }\n\n if (execResults.status === 'failed') {\n if (executionContext.retryConfig.attempts > 0 && this.inngestAttempts < executionContext.retryConfig.attempts) {\n throw execResults.error;\n }\n }\n\n await emitter.emit('watch', {\n type: 'watch',\n payload: {\n currentStep: {\n id: step.id,\n ...execResults,\n },\n workflowState: {\n status: 'running',\n steps: { ...stepResults, [step.id]: execResults },\n result: null,\n error: null,\n },\n },\n eventTimestamp: Date.now(),\n });\n\n if (execResults.status === 'suspended') {\n await emitter.emit('watch-v2', {\n type: 'step-suspended',\n payload: {\n id: step.id,\n ...execResults,\n },\n });\n } else {\n await emitter.emit('watch-v2', {\n type: 'step-result',\n payload: {\n id: step.id,\n ...execResults,\n },\n });\n\n await emitter.emit('watch-v2', {\n type: 'step-finish',\n payload: {\n id: step.id,\n metadata: {},\n },\n });\n }\n\n return { result: execResults, executionContext, stepResults };\n });\n\n // @ts-ignore\n Object.assign(executionContext.suspendedPaths, stepRes.executionContext.suspendedPaths);\n // @ts-ignore\n Object.assign(stepResults, stepRes.stepResults);\n\n // @ts-ignore\n return stepRes.result;\n }\n\n async persistStepUpdate({\n workflowId,\n runId,\n stepResults,\n executionContext,\n serializedStepGraph,\n workflowStatus,\n result,\n error,\n }: {\n workflowId: string;\n runId: string;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n serializedStepGraph: SerializedStepFlowEntry[];\n executionContext: ExecutionContext;\n workflowStatus: 'success' | 'failed' | 'suspended' | 'running';\n result?: Record<string, any>;\n error?: string | Error;\n runtimeContext: RuntimeContext;\n }) {\n await this.inngestStep.run(\n `workflow.${workflowId}.run.${runId}.path.${JSON.stringify(executionContext.executionPath)}.stepUpdate`,\n async () => {\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: workflowId,\n runId,\n snapshot: {\n runId,\n value: {},\n context: stepResults as any,\n activePaths: [],\n suspendedPaths: executionContext.suspendedPaths,\n serializedStepGraph,\n status: workflowStatus,\n result,\n error,\n // @ts-ignore\n timestamp: Date.now(),\n },\n });\n },\n );\n }\n\n async executeConditional({\n workflowId,\n runId,\n entry,\n prevOutput,\n prevStep,\n stepResults,\n serializedStepGraph,\n resume,\n executionContext,\n emitter,\n abortController,\n runtimeContext,\n writableStream,\n }: {\n workflowId: string;\n runId: string;\n entry: {\n type: 'conditional';\n steps: StepFlowEntry[];\n conditions: ExecuteFunction<any, any, any, any, InngestEngineType>[];\n };\n prevStep: StepFlowEntry;\n serializedStepGraph: SerializedStepFlowEntry[];\n prevOutput: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resume?: {\n steps: string[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumePayload: any;\n resumePath: number[];\n };\n executionContext: ExecutionContext;\n emitter: Emitter;\n abortController: AbortController;\n runtimeContext: RuntimeContext;\n writableStream?: WritableStream<ChunkType>;\n }): Promise<StepResult<any, any, any, any>> {\n let execResults: any;\n const truthyIndexes = (\n await Promise.all(\n entry.conditions.map((cond, index) =>\n this.inngestStep.run(`workflow.${workflowId}.conditional.${index}`, async () => {\n try {\n const result = await cond({\n runId,\n workflowId,\n mastra: this.mastra!,\n runtimeContext,\n runCount: -1,\n inputData: prevOutput,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n if (!step?.id) {\n return null;\n }\n\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n\n // TODO: this function shouldn't have suspend probably?\n suspend: async (_suspendPayload: any) => {},\n bail: () => {},\n abort: () => {\n abortController.abort();\n },\n [EMITTER_SYMBOL]: emitter,\n engine: {\n step: this.inngestStep,\n },\n abortSignal: abortController.signal,\n writer: new ToolStream(\n {\n prefix: 'step',\n callId: randomUUID(),\n name: 'conditional',\n runId,\n },\n writableStream,\n ),\n });\n return result ? index : null;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e: unknown) {\n return null;\n }\n }),\n ),\n )\n ).filter((index: any): index is number => index !== null);\n\n const stepsToRun = entry.steps.filter((_, index) => truthyIndexes.includes(index));\n const results: { result: StepResult<any, any, any, any> }[] = await Promise.all(\n stepsToRun.map((step, index) =>\n this.executeEntry({\n workflowId,\n runId,\n entry: step,\n prevStep,\n stepResults,\n resume,\n serializedStepGraph,\n executionContext: {\n workflowId,\n runId,\n executionPath: [...executionContext.executionPath, index],\n suspendedPaths: executionContext.suspendedPaths,\n retryConfig: executionContext.retryConfig,\n executionSpan: executionContext.executionSpan,\n },\n emitter,\n abortController,\n runtimeContext,\n writableStream,\n }),\n ),\n );\n const hasFailed = results.find(result => result.result.status === 'failed') as {\n result: StepFailure<any, any, any>;\n };\n const hasSuspended = results.find(result => result.result.status === 'suspended');\n if (hasFailed) {\n execResults = { status: 'failed', error: hasFailed.result.error };\n } else if (hasSuspended) {\n execResults = { status: 'suspended', payload: hasSuspended.result.suspendPayload };\n } else {\n execResults = {\n status: 'success',\n output: results.reduce((acc: Record<string, any>, result, index) => {\n if (result.result.status === 'success') {\n // @ts-ignore\n acc[stepsToRun[index]!.step.id] = result.output;\n }\n\n return acc;\n }, {}),\n };\n }\n\n return execResults;\n }\n}\n"]}
@@ -2,7 +2,7 @@ version: '3'
2
2
 
3
3
  services:
4
4
  inngest:
5
- image: inngest/inngest:v1.8.2
5
+ image: inngest/inngest:v1.10.0
6
6
  command: inngest dev -p 4000 -u http://host.docker.internal:4001/inngest/api --poll-interval=1
7
7
  ports:
8
8
  - '4000:4000'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/inngest",
3
- "version": "0.0.0-transpile-packages-20250724123433",
3
+ "version": "0.0.0-transpile-packages-20250731152758",
4
4
  "description": "Mastra Inngest integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -21,33 +21,33 @@
21
21
  "dependencies": {
22
22
  "@inngest/realtime": "^0.3.1",
23
23
  "@opentelemetry/api": "^1.9.0",
24
- "inngest": "^3.40.0",
24
+ "inngest": "^3.40.1",
25
25
  "zod": "^3.25.67"
26
26
  },
27
27
  "devDependencies": {
28
28
  "inngest-cli": "1.8.2",
29
29
  "@ai-sdk/openai": "^1.3.22",
30
- "@hono/node-server": "^1.14.4",
30
+ "@hono/node-server": "^1.17.1",
31
31
  "@microsoft/api-extractor": "^7.52.8",
32
32
  "@types/node": "^20.19.0",
33
33
  "ai": "^4.3.16",
34
34
  "eslint": "^9.30.1",
35
35
  "execa": "^9.6.0",
36
36
  "get-port": "7.1.0",
37
- "hono": "^4.8.4",
37
+ "hono": "^4.8.9",
38
38
  "tsup": "^8.5.0",
39
39
  "typescript": "^5.8.3",
40
40
  "vitest": "^3.2.4",
41
- "@mastra/core": "0.0.0-transpile-packages-20250724123433",
42
- "@mastra/libsql": "0.0.0-transpile-packages-20250724123433",
43
- "@internal/lint": "0.0.0-transpile-packages-20250724123433",
44
- "@mastra/deployer": "0.0.0-transpile-packages-20250724123433"
41
+ "@internal/lint": "0.0.0-transpile-packages-20250731152758",
42
+ "@mastra/libsql": "0.0.0-transpile-packages-20250731152758",
43
+ "@mastra/deployer": "0.0.0-transpile-packages-20250731152758",
44
+ "@mastra/core": "0.0.0-transpile-packages-20250731152758"
45
45
  },
46
46
  "peerDependencies": {
47
- "@mastra/core": "0.0.0-transpile-packages-20250724123433"
47
+ "@mastra/core": "0.0.0-transpile-packages-20250731152758"
48
48
  },
49
49
  "scripts": {
50
- "build": "tsup src/index.ts --format esm,cjs --experimental-dts --clean --treeshake=smallest --splitting",
50
+ "build": "tsup --silent --config tsup.config.ts",
51
51
  "build:watch": "pnpm build --watch",
52
52
  "test": "docker-compose up -d && vitest run --no-isolate --bail=1 --retry=1 && docker-compose down",
53
53
  "lint": "eslint ."
package/src/index.test.ts CHANGED
@@ -4258,6 +4258,124 @@ describe('MastraInngestWorkflow', () => {
4258
4258
 
4259
4259
  expect(promptAgentAction).toHaveBeenCalledTimes(2);
4260
4260
  });
4261
+
4262
+ it('should handle consecutive nested workflows with suspend/resume', async ctx => {
4263
+ const inngest = new Inngest({
4264
+ id: 'mastra',
4265
+ baseUrl: `http://localhost:${(ctx as any).inngestPort}`,
4266
+ middleware: [realtimeMiddleware()],
4267
+ });
4268
+
4269
+ const { createWorkflow, createStep } = init(inngest);
4270
+
4271
+ const step1 = vi.fn().mockImplementation(async ({ resumeData, suspend }) => {
4272
+ if (!resumeData?.suspect) {
4273
+ return await suspend({ message: 'What is the suspect?' });
4274
+ }
4275
+ return { suspect: resumeData.suspect };
4276
+ });
4277
+ const step1Definition = createStep({
4278
+ id: 'step-1',
4279
+ inputSchema: z.object({ suspect: z.string() }),
4280
+ outputSchema: z.object({ suspect: z.string() }),
4281
+ suspendSchema: z.object({ message: z.string() }),
4282
+ resumeSchema: z.object({ suspect: z.string() }),
4283
+ execute: step1,
4284
+ });
4285
+
4286
+ const step2 = vi.fn().mockImplementation(async ({ resumeData, suspend }) => {
4287
+ if (!resumeData?.suspect) {
4288
+ return await suspend({ message: 'What is the second suspect?' });
4289
+ }
4290
+ return { suspect: resumeData.suspect };
4291
+ });
4292
+ const step2Definition = createStep({
4293
+ id: 'step-2',
4294
+ inputSchema: z.object({ suspect: z.string() }),
4295
+ outputSchema: z.object({ suspect: z.string() }),
4296
+ suspendSchema: z.object({ message: z.string() }),
4297
+ resumeSchema: z.object({ suspect: z.string() }),
4298
+ execute: step2,
4299
+ });
4300
+
4301
+ const subWorkflow1 = createWorkflow({
4302
+ id: 'sub-workflow-1',
4303
+ inputSchema: z.object({ suspect: z.string() }),
4304
+ outputSchema: z.object({ suspect: z.string() }),
4305
+ })
4306
+ .then(step1Definition)
4307
+ .commit();
4308
+
4309
+ const subWorkflow2 = createWorkflow({
4310
+ id: 'sub-workflow-2',
4311
+ inputSchema: z.object({ suspect: z.string() }),
4312
+ outputSchema: z.object({ suspect: z.string() }),
4313
+ })
4314
+ .then(step2Definition)
4315
+ .commit();
4316
+
4317
+ const mainWorkflow = createWorkflow({
4318
+ id: 'main-workflow',
4319
+ inputSchema: z.object({ suspect: z.string() }),
4320
+ outputSchema: z.object({ suspect: z.string() }),
4321
+ })
4322
+ .then(subWorkflow1)
4323
+ .then(subWorkflow2)
4324
+ .commit();
4325
+
4326
+ const mastra = new Mastra({
4327
+ logger: false,
4328
+ storage: new DefaultStorage({
4329
+ url: ':memory:',
4330
+ }),
4331
+ workflows: { mainWorkflow },
4332
+ server: {
4333
+ apiRoutes: [
4334
+ {
4335
+ path: '/inngest/api',
4336
+ method: 'ALL',
4337
+ createHandler: async ({ mastra }) => inngestServe({ mastra, inngest }),
4338
+ },
4339
+ ],
4340
+ },
4341
+ });
4342
+
4343
+ const app = await createHonoServer(mastra);
4344
+
4345
+ const srv = (globServer = serve({
4346
+ fetch: app.fetch,
4347
+ port: (ctx as any).handlerPort,
4348
+ }));
4349
+ await resetInngest();
4350
+
4351
+ const run = await mainWorkflow.createRunAsync();
4352
+
4353
+ const initialResult = await run.start({ inputData: { suspect: 'initial-suspect' } });
4354
+ expect(initialResult.status).toBe('suspended');
4355
+
4356
+ const firstResumeResult = await run.resume({
4357
+ step: ['sub-workflow-1', 'step-1'],
4358
+ resumeData: { suspect: 'first-suspect' },
4359
+ });
4360
+ expect(firstResumeResult.status).toBe('suspended');
4361
+
4362
+ const secondResumeResult = await run.resume({
4363
+ step: ['sub-workflow-2', 'step-2'],
4364
+ resumeData: { suspect: 'second-suspect' },
4365
+ });
4366
+
4367
+ expect(step1).toHaveBeenCalledTimes(2);
4368
+ expect(step2).toHaveBeenCalledTimes(2);
4369
+ expect(secondResumeResult.status).toBe('success');
4370
+ expect(secondResumeResult.steps['sub-workflow-1']).toMatchObject({
4371
+ status: 'success',
4372
+ });
4373
+ expect(secondResumeResult.steps['sub-workflow-2']).toMatchObject({
4374
+ status: 'success',
4375
+ });
4376
+
4377
+ srv.close();
4378
+ });
4261
4379
  });
4262
4380
 
4263
4381
  describe('Accessing Mastra', () => {
package/src/index.ts CHANGED
@@ -3,7 +3,7 @@ import type { ReadableStream } from 'node:stream/web';
3
3
  import { subscribe } from '@inngest/realtime';
4
4
  import type { Agent, Mastra, ToolExecutionContext, WorkflowRun, WorkflowRuns } from '@mastra/core';
5
5
  import { RuntimeContext } from '@mastra/core/di';
6
- import { Tool } from '@mastra/core/tools';
6
+ import { Tool, ToolStream } from '@mastra/core/tools';
7
7
  import { Workflow, Run, DefaultExecutionEngine } from '@mastra/core/workflows';
8
8
  import type {
9
9
  ExecuteFunction,
@@ -20,6 +20,7 @@ import type {
20
20
  Emitter,
21
21
  WatchEvent,
22
22
  StreamEvent,
23
+ ChunkType,
23
24
  } from '@mastra/core/workflows';
24
25
  import { EMITTER_SYMBOL } from '@mastra/core/workflows/_constants';
25
26
  import type { Span } from '@opentelemetry/api';
@@ -969,6 +970,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
969
970
  emitter,
970
971
  abortController,
971
972
  runtimeContext,
973
+ writableStream,
972
974
  }: {
973
975
  workflowId: string;
974
976
  runId: string;
@@ -983,6 +985,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
983
985
  emitter: Emitter;
984
986
  abortController: AbortController;
985
987
  runtimeContext: RuntimeContext;
988
+ writableStream?: WritableStream<ChunkType>;
986
989
  }): Promise<StepResult<any, any, any, any>> {
987
990
  return super.executeStep({
988
991
  workflowId,
@@ -995,6 +998,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
995
998
  emitter,
996
999
  abortController,
997
1000
  runtimeContext,
1001
+ writableStream,
998
1002
  });
999
1003
  }
1000
1004
 
@@ -1011,6 +1015,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1011
1015
  emitter,
1012
1016
  abortController,
1013
1017
  runtimeContext,
1018
+ writableStream,
1014
1019
  }: {
1015
1020
  workflowId: string;
1016
1021
  runId: string;
@@ -1034,10 +1039,12 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1034
1039
  emitter: Emitter;
1035
1040
  abortController: AbortController;
1036
1041
  runtimeContext: RuntimeContext;
1042
+ writableStream?: WritableStream<ChunkType>;
1037
1043
  }): Promise<void> {
1038
1044
  let { duration, fn } = entry;
1039
1045
 
1040
1046
  if (fn) {
1047
+ const stepCallId = randomUUID();
1041
1048
  duration = await this.inngestStep.run(`workflow.${workflowId}.sleep.${entry.id}`, async () => {
1042
1049
  return await fn({
1043
1050
  runId,
@@ -1069,6 +1076,15 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1069
1076
  [EMITTER_SYMBOL]: emitter,
1070
1077
  engine: { step: this.inngestStep },
1071
1078
  abortSignal: abortController?.signal,
1079
+ writer: new ToolStream(
1080
+ {
1081
+ prefix: 'step',
1082
+ callId: stepCallId,
1083
+ name: 'sleep',
1084
+ runId,
1085
+ },
1086
+ writableStream,
1087
+ ),
1072
1088
  });
1073
1089
  });
1074
1090
  }
@@ -1085,6 +1101,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1085
1101
  emitter,
1086
1102
  abortController,
1087
1103
  runtimeContext,
1104
+ writableStream,
1088
1105
  }: {
1089
1106
  workflowId: string;
1090
1107
  runId: string;
@@ -1108,11 +1125,13 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1108
1125
  emitter: Emitter;
1109
1126
  abortController: AbortController;
1110
1127
  runtimeContext: RuntimeContext;
1128
+ writableStream?: WritableStream<ChunkType>;
1111
1129
  }): Promise<void> {
1112
1130
  let { date, fn } = entry;
1113
1131
 
1114
1132
  if (fn) {
1115
1133
  date = await this.inngestStep.run(`workflow.${workflowId}.sleepUntil.${entry.id}`, async () => {
1134
+ const stepCallId = randomUUID();
1116
1135
  return await fn({
1117
1136
  runId,
1118
1137
  workflowId,
@@ -1143,6 +1162,15 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1143
1162
  [EMITTER_SYMBOL]: emitter,
1144
1163
  engine: { step: this.inngestStep },
1145
1164
  abortSignal: abortController?.signal,
1165
+ writer: new ToolStream(
1166
+ {
1167
+ prefix: 'step',
1168
+ callId: stepCallId,
1169
+ name: 'sleep',
1170
+ runId,
1171
+ },
1172
+ writableStream,
1173
+ ),
1146
1174
  });
1147
1175
  });
1148
1176
  }
@@ -1176,6 +1204,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1176
1204
  emitter,
1177
1205
  abortController,
1178
1206
  runtimeContext,
1207
+ writableStream,
1179
1208
  }: {
1180
1209
  step: Step<string, any, any>;
1181
1210
  stepResults: Record<string, StepResult<any, any, any, any>>;
@@ -1189,6 +1218,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1189
1218
  emitter: Emitter;
1190
1219
  abortController: AbortController;
1191
1220
  runtimeContext: RuntimeContext;
1221
+ writableStream?: WritableStream<ChunkType>;
1192
1222
  }): Promise<StepResult<any, any, any, any>> {
1193
1223
  const startedAt = await this.inngestStep.run(
1194
1224
  `workflow.${executionContext.workflowId}.run.${executionContext.runId}.step.${step.id}.running_ev`,
@@ -1432,6 +1462,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1432
1462
  runId: executionContext.runId,
1433
1463
  mastra: this.mastra!,
1434
1464
  runtimeContext,
1465
+ writableStream,
1435
1466
  inputData: prevOutput,
1436
1467
  resumeData: resume?.steps[0] === step.id ? resume?.resumePayload : undefined,
1437
1468
  getInitData: () => stepResults?.input as any,
@@ -1617,6 +1648,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1617
1648
  emitter,
1618
1649
  abortController,
1619
1650
  runtimeContext,
1651
+ writableStream,
1620
1652
  }: {
1621
1653
  workflowId: string;
1622
1654
  runId: string;
@@ -1639,6 +1671,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1639
1671
  emitter: Emitter;
1640
1672
  abortController: AbortController;
1641
1673
  runtimeContext: RuntimeContext;
1674
+ writableStream?: WritableStream<ChunkType>;
1642
1675
  }): Promise<StepResult<any, any, any, any>> {
1643
1676
  let execResults: any;
1644
1677
  const truthyIndexes = (
@@ -1678,6 +1711,15 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1678
1711
  step: this.inngestStep,
1679
1712
  },
1680
1713
  abortSignal: abortController.signal,
1714
+ writer: new ToolStream(
1715
+ {
1716
+ prefix: 'step',
1717
+ callId: randomUUID(),
1718
+ name: 'conditional',
1719
+ runId,
1720
+ },
1721
+ writableStream,
1722
+ ),
1681
1723
  });
1682
1724
  return result ? index : null;
1683
1725
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1711,6 +1753,7 @@ export class InngestExecutionEngine extends DefaultExecutionEngine {
1711
1753
  emitter,
1712
1754
  abortController,
1713
1755
  runtimeContext,
1756
+ writableStream,
1714
1757
  }),
1715
1758
  ),
1716
1759
  );
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": ["./tsconfig.json", "../../tsconfig.build.json"],
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src"
6
+ },
7
+ "include": ["src/**/*"],
8
+ "exclude": ["node_modules", "**/*.test.ts", "src/**/*.mock.ts"]
9
+ }
package/tsconfig.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "extends": "../../tsconfig.node.json",
3
- "include": ["src/**/*"],
3
+ "include": ["src/**/*", "tsup.config.ts"],
4
4
  "exclude": ["node_modules", "**/*.test.ts"]
5
5
  }
package/tsup.config.ts ADDED
@@ -0,0 +1,22 @@
1
+ import { spawn } from 'child_process';
2
+ import { promisify } from 'util';
3
+ import { defineConfig } from 'tsup';
4
+
5
+ const exec = promisify(spawn);
6
+
7
+ export default defineConfig({
8
+ entry: ['src/index.ts'],
9
+ format: ['esm', 'cjs'],
10
+ clean: true,
11
+ dts: false,
12
+ splitting: true,
13
+ treeshake: {
14
+ preset: 'smallest',
15
+ },
16
+ sourcemap: true,
17
+ onSuccess: async () => {
18
+ await exec('pnpm', ['tsc', '-p', 'tsconfig.build.json'], {
19
+ stdio: 'inherit',
20
+ });
21
+ },
22
+ });