@mastra/inngest 0.0.0-message-list-update-20250715150321 → 0.0.0-new-scorer-api-20250801075530

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.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,135 @@
1
1
  # @mastra/inngest
2
2
 
3
- ## 0.0.0-message-list-update-20250715150321
3
+ ## 0.0.0-new-scorer-api-20250801075530
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [c6f12c7]
8
+ - @mastra/core@0.0.0-new-scorer-api-20250801075530
9
+
10
+ ## 0.11.8
11
+
12
+ ### Patch Changes
13
+
14
+ - 7257912: dependencies updates:
15
+ - Updated dependency [`inngest@^3.40.1` ↗︎](https://www.npmjs.com/package/inngest/v/3.40.1) (from `^3.40.0`, in `dependencies`)
16
+ - Updated dependencies [33dcb07]
17
+ - Updated dependencies [d0d9500]
18
+ - Updated dependencies [d30b1a0]
19
+ - Updated dependencies [bff87f7]
20
+ - Updated dependencies [b4a8df0]
21
+ - @mastra/core@0.12.1
22
+
23
+ ## 0.11.8-alpha.0
24
+
25
+ ### Patch Changes
26
+
27
+ - 7257912: dependencies updates:
28
+ - Updated dependency [`inngest@^3.40.1` ↗︎](https://www.npmjs.com/package/inngest/v/3.40.1) (from `^3.40.0`, in `dependencies`)
29
+ - Updated dependencies [33dcb07]
30
+ - Updated dependencies [d30b1a0]
31
+ - Updated dependencies [bff87f7]
32
+ - Updated dependencies [b4a8df0]
33
+ - @mastra/core@0.12.1-alpha.0
34
+
35
+ ## 0.11.7
36
+
37
+ ### Patch Changes
38
+
39
+ - f42c4c2: update peer deps for packages to latest core range
40
+ - Updated dependencies [510e2c8]
41
+ - Updated dependencies [2f72fb2]
42
+ - Updated dependencies [27cc97a]
43
+ - Updated dependencies [3f89307]
44
+ - Updated dependencies [9eda7d4]
45
+ - Updated dependencies [9d49408]
46
+ - Updated dependencies [41daa63]
47
+ - Updated dependencies [ad0a58b]
48
+ - Updated dependencies [254a36b]
49
+ - Updated dependencies [2ecf658]
50
+ - Updated dependencies [7a7754f]
51
+ - Updated dependencies [fc92d80]
52
+ - Updated dependencies [e0f73c6]
53
+ - Updated dependencies [0b89602]
54
+ - Updated dependencies [4d37822]
55
+ - Updated dependencies [23a6a7c]
56
+ - Updated dependencies [cda801d]
57
+ - Updated dependencies [a77c823]
58
+ - Updated dependencies [ff9c125]
59
+ - Updated dependencies [09bca64]
60
+ - Updated dependencies [b8efbb9]
61
+ - Updated dependencies [71466e7]
62
+ - Updated dependencies [0c99fbe]
63
+ - @mastra/core@0.12.0
64
+
65
+ ## 0.11.7-alpha.0
66
+
67
+ ### Patch Changes
68
+
69
+ - f42c4c2: update peer deps for packages to latest core range
70
+ - @mastra/core@0.12.0-alpha.5
71
+
72
+ ## 0.11.6
73
+
74
+ ### Patch Changes
75
+
76
+ - ce088f5: Update all peerdeps to latest core
77
+ - @mastra/core@0.11.1
78
+
79
+ ## 0.11.5
80
+
81
+ ### Patch Changes
82
+
83
+ - a723d69: Pass workflowId through
84
+ - Updated dependencies [f248d53]
85
+ - Updated dependencies [2affc57]
86
+ - Updated dependencies [66e13e3]
87
+ - Updated dependencies [edd9482]
88
+ - Updated dependencies [18344d7]
89
+ - Updated dependencies [9d372c2]
90
+ - Updated dependencies [40c2525]
91
+ - Updated dependencies [e473f27]
92
+ - Updated dependencies [032cb66]
93
+ - Updated dependencies [703ac71]
94
+ - Updated dependencies [a723d69]
95
+ - Updated dependencies [7827943]
96
+ - Updated dependencies [5889a31]
97
+ - Updated dependencies [bf1e7e7]
98
+ - Updated dependencies [65e3395]
99
+ - Updated dependencies [4933192]
100
+ - Updated dependencies [d1c77a4]
101
+ - Updated dependencies [bea9dd1]
102
+ - Updated dependencies [dcd4802]
103
+ - Updated dependencies [cbddd18]
104
+ - Updated dependencies [7ba91fa]
105
+ - @mastra/core@0.11.0
106
+
107
+ ## 0.11.5-alpha.0
108
+
109
+ ### Patch Changes
110
+
111
+ - a723d69: Pass workflowId through
112
+ - Updated dependencies [f248d53]
113
+ - Updated dependencies [2affc57]
114
+ - Updated dependencies [66e13e3]
115
+ - Updated dependencies [edd9482]
116
+ - Updated dependencies [18344d7]
117
+ - Updated dependencies [9d372c2]
118
+ - Updated dependencies [40c2525]
119
+ - Updated dependencies [e473f27]
120
+ - Updated dependencies [032cb66]
121
+ - Updated dependencies [703ac71]
122
+ - Updated dependencies [a723d69]
123
+ - Updated dependencies [5889a31]
124
+ - Updated dependencies [65e3395]
125
+ - Updated dependencies [4933192]
126
+ - Updated dependencies [d1c77a4]
127
+ - Updated dependencies [bea9dd1]
128
+ - Updated dependencies [dcd4802]
129
+ - Updated dependencies [7ba91fa]
130
+ - @mastra/core@0.11.0-alpha.2
131
+
132
+ ## 0.11.4
4
133
 
5
134
  ### Patch Changes
6
135
 
@@ -9,16 +138,29 @@
9
138
  - Updated dependencies [db5cc15]
10
139
  - Updated dependencies [2ba5b76]
11
140
  - Updated dependencies [5237998]
141
+ - Updated dependencies [c3a30de]
12
142
  - Updated dependencies [37c1acd]
13
143
  - Updated dependencies [1aa60b1]
14
144
  - Updated dependencies [89ec9d4]
15
145
  - Updated dependencies [cf3a184]
16
- - Updated dependencies [3759392]
146
+ - Updated dependencies [d6bfd60]
17
147
  - Updated dependencies [626b0f4]
18
148
  - Updated dependencies [c22a91f]
19
149
  - Updated dependencies [f7403ab]
20
150
  - Updated dependencies [6c89d7f]
21
- - @mastra/core@0.0.0-message-list-update-20250715150321
151
+ - @mastra/core@0.10.15
152
+
153
+ ## 0.11.4-alpha.0
154
+
155
+ ### Patch Changes
156
+
157
+ - 0b56518: Ensure removed runtimeContext values are not saved in snapshot
158
+ - Updated dependencies [0b56518]
159
+ - Updated dependencies [2ba5b76]
160
+ - Updated dependencies [c3a30de]
161
+ - Updated dependencies [cf3a184]
162
+ - Updated dependencies [d6bfd60]
163
+ - @mastra/core@0.10.15-alpha.1
22
164
 
23
165
  ## 0.11.3
24
166
 
package/dist/index.cjs CHANGED
@@ -155,6 +155,7 @@ var InngestRun = class extends workflows.Run {
155
155
  data: {
156
156
  inputData: params.resumeData,
157
157
  runId: this.runId,
158
+ workflowId: this.workflowId,
158
159
  stepResults: snapshot?.context,
159
160
  resume: {
160
161
  steps,
@@ -650,7 +651,8 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
650
651
  prevOutput,
651
652
  emitter,
652
653
  abortController,
653
- runtimeContext
654
+ runtimeContext,
655
+ writableStream
654
656
  }) {
655
657
  return super.executeStep({
656
658
  workflowId,
@@ -662,7 +664,8 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
662
664
  prevOutput,
663
665
  emitter,
664
666
  abortController,
665
- runtimeContext
667
+ runtimeContext,
668
+ writableStream
666
669
  });
667
670
  }
668
671
  // async executeSleep({ id, duration }: { id: string; duration: number }): Promise<void> {
@@ -676,13 +679,16 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
676
679
  stepResults,
677
680
  emitter,
678
681
  abortController,
679
- runtimeContext
682
+ runtimeContext,
683
+ writableStream
680
684
  }) {
681
685
  let { duration, fn } = entry;
682
686
  if (fn) {
687
+ const stepCallId = crypto.randomUUID();
683
688
  duration = await this.inngestStep.run(`workflow.${workflowId}.sleep.${entry.id}`, async () => {
684
689
  return await fn({
685
690
  runId,
691
+ workflowId,
686
692
  mastra: this.mastra,
687
693
  runtimeContext,
688
694
  inputData: prevOutput,
@@ -708,7 +714,16 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
708
714
  },
709
715
  [_constants.EMITTER_SYMBOL]: emitter,
710
716
  engine: { step: this.inngestStep },
711
- abortSignal: abortController?.signal
717
+ abortSignal: abortController?.signal,
718
+ writer: new tools.ToolStream(
719
+ {
720
+ prefix: "step",
721
+ callId: stepCallId,
722
+ name: "sleep",
723
+ runId
724
+ },
725
+ writableStream
726
+ )
712
727
  });
713
728
  });
714
729
  }
@@ -722,13 +737,16 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
722
737
  stepResults,
723
738
  emitter,
724
739
  abortController,
725
- runtimeContext
740
+ runtimeContext,
741
+ writableStream
726
742
  }) {
727
743
  let { date, fn } = entry;
728
744
  if (fn) {
729
745
  date = await this.inngestStep.run(`workflow.${workflowId}.sleepUntil.${entry.id}`, async () => {
746
+ const stepCallId = crypto.randomUUID();
730
747
  return await fn({
731
748
  runId,
749
+ workflowId,
732
750
  mastra: this.mastra,
733
751
  runtimeContext,
734
752
  inputData: prevOutput,
@@ -754,7 +772,16 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
754
772
  },
755
773
  [_constants.EMITTER_SYMBOL]: emitter,
756
774
  engine: { step: this.inngestStep },
757
- abortSignal: abortController?.signal
775
+ abortSignal: abortController?.signal,
776
+ writer: new tools.ToolStream(
777
+ {
778
+ prefix: "step",
779
+ callId: stepCallId,
780
+ name: "sleep",
781
+ runId
782
+ },
783
+ writableStream
784
+ )
758
785
  });
759
786
  });
760
787
  }
@@ -781,7 +808,8 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
781
808
  prevOutput,
782
809
  emitter,
783
810
  abortController,
784
- runtimeContext
811
+ runtimeContext,
812
+ writableStream
785
813
  }) {
786
814
  const startedAt = await this.inngestStep.run(
787
815
  `workflow.${executionContext.workflowId}.run.${executionContext.runId}.step.${step.id}.running_ev`,
@@ -1000,6 +1028,7 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
1000
1028
  runId: executionContext.runId,
1001
1029
  mastra: this.mastra,
1002
1030
  runtimeContext,
1031
+ writableStream,
1003
1032
  inputData: prevOutput,
1004
1033
  resumeData: resume?.steps[0] === step.id ? resume?.resumePayload : void 0,
1005
1034
  getInitData: () => stepResults?.input,
@@ -1159,7 +1188,8 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
1159
1188
  executionContext,
1160
1189
  emitter,
1161
1190
  abortController,
1162
- runtimeContext
1191
+ runtimeContext,
1192
+ writableStream
1163
1193
  }) {
1164
1194
  let execResults;
1165
1195
  const truthyIndexes = (await Promise.all(
@@ -1168,6 +1198,7 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
1168
1198
  try {
1169
1199
  const result = await cond({
1170
1200
  runId,
1201
+ workflowId,
1171
1202
  mastra: this.mastra,
1172
1203
  runtimeContext,
1173
1204
  runCount: -1,
@@ -1195,7 +1226,16 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
1195
1226
  engine: {
1196
1227
  step: this.inngestStep
1197
1228
  },
1198
- abortSignal: abortController.signal
1229
+ abortSignal: abortController.signal,
1230
+ writer: new tools.ToolStream(
1231
+ {
1232
+ prefix: "step",
1233
+ callId: crypto.randomUUID(),
1234
+ name: "conditional",
1235
+ runId
1236
+ },
1237
+ writableStream
1238
+ )
1199
1239
  });
1200
1240
  return result ? index : null;
1201
1241
  } catch (e) {
@@ -1225,7 +1265,8 @@ var InngestExecutionEngine = class extends workflows.DefaultExecutionEngine {
1225
1265
  },
1226
1266
  emitter,
1227
1267
  abortController,
1228
- runtimeContext
1268
+ runtimeContext,
1269
+ writableStream
1229
1270
  })
1230
1271
  )
1231
1272
  );
@@ -1256,3 +1297,5 @@ exports.InngestWorkflow = InngestWorkflow;
1256
1297
  exports.createStep = createStep;
1257
1298
  exports.init = init;
1258
1299
  exports.serve = serve;
1300
+ //# sourceMappingURL=index.cjs.map
1301
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["inngestServe","Run","subscribe","Workflow","randomUUID","event","RuntimeContext","Tool","z","EMITTER_SYMBOL","DefaultExecutionEngine","ToolStream","startedAt","stepRes","step","result"],"mappings":"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","file":"index.cjs","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"]}