@mastra/inngest 1.0.0-beta.4 → 1.0.0-beta.6

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/dist/index.js CHANGED
@@ -3,9 +3,9 @@ import { DefaultExecutionEngine, createTimeTravelExecutionParams, Run, Workflow
3
3
  import { EMITTER_SYMBOL, STREAM_FORMAT_SYMBOL } from '@mastra/core/workflows/_constants';
4
4
  import { z } from 'zod';
5
5
  import { randomUUID } from 'crypto';
6
- import { ReadableStream, WritableStream } from 'stream/web';
7
6
  import { RequestContext } from '@mastra/core/di';
8
7
  import { RetryAfterError, NonRetriableError } from 'inngest';
8
+ import { ReadableStream } from 'stream/web';
9
9
  import { subscribe } from '@inngest/realtime';
10
10
  import { ChunkFrom, WorkflowRunOutput } from '@mastra/core/stream';
11
11
  import { serve as serve$1 } from 'inngest/hono';
@@ -265,6 +265,23 @@ var InngestExecutionEngine = class extends DefaultExecutionEngine {
265
265
  payload: {}
266
266
  }
267
267
  };
268
+ } else if (result.status === "tripwire") {
269
+ await emitter.emit("watch", {
270
+ type: "workflow-step-result",
271
+ payload: {
272
+ id: step.id,
273
+ status: "tripwire",
274
+ error: result?.tripwire?.reason,
275
+ payload: prevOutput
276
+ }
277
+ });
278
+ return {
279
+ executionContext,
280
+ result: {
281
+ status: "tripwire",
282
+ tripwire: result?.tripwire
283
+ }
284
+ };
268
285
  }
269
286
  await emitter.emit("watch", {
270
287
  type: "workflow-step-result",
@@ -953,12 +970,10 @@ var InngestWorkflow = class _InngestWorkflow extends Workflow {
953
970
  abortController: new AbortController(),
954
971
  // currentSpan: undefined, // TODO: Pass actual parent Span from workflow execution context
955
972
  outputOptions,
956
- writableStream: new WritableStream({
957
- write(chunk) {
958
- void emitter.emit("watch", chunk).catch(() => {
959
- });
960
- }
961
- })
973
+ outputWriter: async (chunk) => {
974
+ void emitter.emit("watch", chunk).catch(() => {
975
+ });
976
+ }
962
977
  });
963
978
  await step.run(`workflow.${this.id}.finalize`, async () => {
964
979
  if (result.status === "failed") {
@@ -1033,6 +1048,7 @@ function createStep(params, agentOptions) {
1033
1048
  return params;
1034
1049
  }
1035
1050
  if (isAgent(params)) {
1051
+ const outputSchema = agentOptions?.structuredOutput?.schema ?? z.object({ text: z.string() });
1036
1052
  return {
1037
1053
  id: params.name,
1038
1054
  description: params.getDescription(),
@@ -1041,9 +1057,7 @@ function createStep(params, agentOptions) {
1041
1057
  // resourceId: z.string().optional(),
1042
1058
  // threadId: z.string().optional(),
1043
1059
  }),
1044
- outputSchema: z.object({
1045
- text: z.string()
1046
- }),
1060
+ outputSchema,
1047
1061
  execute: async ({
1048
1062
  inputData,
1049
1063
  [EMITTER_SYMBOL]: emitter,
@@ -1059,6 +1073,7 @@ function createStep(params, agentOptions) {
1059
1073
  streamPromise.resolve = resolve;
1060
1074
  streamPromise.reject = reject;
1061
1075
  });
1076
+ let structuredResult = null;
1062
1077
  const toolData = {
1063
1078
  name: params.name,
1064
1079
  args: inputData
@@ -1072,6 +1087,10 @@ function createStep(params, agentOptions) {
1072
1087
  requestContext,
1073
1088
  tracingContext,
1074
1089
  onFinish: (result) => {
1090
+ const resultWithObject = result;
1091
+ if (agentOptions?.structuredOutput?.schema && resultWithObject.object) {
1092
+ structuredResult = resultWithObject.object;
1093
+ }
1075
1094
  streamPromise.resolve(result.text);
1076
1095
  void agentOptions?.onFinish?.(result);
1077
1096
  },
@@ -1084,6 +1103,10 @@ function createStep(params, agentOptions) {
1084
1103
  requestContext,
1085
1104
  tracingContext,
1086
1105
  onFinish: (result) => {
1106
+ const resultWithObject = result;
1107
+ if (agentOptions?.structuredOutput?.schema && resultWithObject.object) {
1108
+ structuredResult = resultWithObject.object;
1109
+ }
1087
1110
  streamPromise.resolve(result.text);
1088
1111
  void agentOptions?.onFinish?.(result);
1089
1112
  },
@@ -1117,6 +1140,9 @@ function createStep(params, agentOptions) {
1117
1140
  if (abortSignal.aborted) {
1118
1141
  return abort();
1119
1142
  }
1143
+ if (structuredResult !== null) {
1144
+ return structuredResult;
1145
+ }
1120
1146
  return {
1121
1147
  text: await streamPromise.promise
1122
1148
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/execution-engine.ts","../src/run.ts","../src/workflow.ts","../src/serve.ts","../src/types.ts","../src/index.ts"],"names":["createTimeTravelExecutionParams","randomUUID","event","inngestServe","Workflow"],"mappings":";;;;;;;;;;;;;AAiBO,IAAM,sBAAA,GAAN,cAAqC,sBAAA,CAAuB;AAAA,EACzD,WAAA;AAAA,EACA,eAAA;AAAA,EAER,WAAA,CACE,MAAA,EACA,WAAA,EACA,eAAA,GAA0B,GAC1B,OAAA,EACA;AACA,IAAA,KAAA,CAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA;AACzB,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASU,iBAAA,CAAkB,OAAmC,UAAA,EAAoD;AACjH,IAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,MAAA,OAAO,KAAA,CAAM,SAAS,KAAA,CAAM,OAAA;AAAA,IAC9B;AACA,IAAA,MAAM,cAAe,UAAA,EAAgD,KAAA;AACrE,IAAA,IAAI,uBAAuB,KAAA,EAAO;AAChC,MAAA,OAAO,WAAA,CAAY,OAAA;AAAA,IACrB;AACA,IAAA,OAAO,eAAgB,KAAA,IAAoB,eAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,IAAA,EAAoC;AACvD,IAAA,OAAO,IAAA,YAAgB,eAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,mCAAA,GAA+C;AAC7C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAA,CACJ,MAAA,EACA,OAAA,EACA,MAAA,EAO+G;AAC/G,IAAA,IAAI;AAEF,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,oBAAA,CAAqB,MAAA,EAAQ,SAAS,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,CAAA;AACvF,MAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAO;AAAA,IAC5B,SAAS,CAAA,EAAG;AAEV,MAAA,MAAM,QAAS,CAAA,EAAW,KAAA;AAC1B,MAAA,IAAI,KAAA,EAAO,WAAW,QAAA,EAAU;AAC9B,QAAA,MAAA,CAAO,UAAU,KAAA,CAAM;AAAA,UACrB,KAAA,EAAO,CAAA;AAAA,UACP,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AAAS,SAChC,CAAA;AACD,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,EAAM;AAAA,MACnC;AAGA,MAAA,MAAM,eAAe,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,OAAO,CAAC,CAAA;AAC9D,MAAA,MAAA,CAAO,UAAU,KAAA,CAAM;AAAA,QACrB,KAAA,EAAO,CAAA;AAAA,QACP,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA;AAAS,OAChC,CAAA;AACD,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO;AAAA,UACL,MAAA,EAAQ,QAAA;AAAA,UACR,KAAA,EAAO,UAAU,YAAY,CAAA,CAAA;AAAA,UAC7B,OAAA,EAAS,KAAK,GAAA;AAAI;AACpB,OACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAA,CAAqB,QAAA,EAAkB,OAAA,EAAiB,UAAA,EAAmC;AAC/F,IAAA,MAAM,IAAA,CAAK,WAAA,CAAY,KAAA,CAAM,CAAA,SAAA,EAAY,UAAU,CAAA,OAAA,EAAU,OAAO,CAAA,CAAA,EAAI,QAAA,GAAW,CAAA,GAAI,CAAA,GAAI,QAAQ,CAAA;AAAA,EACrG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,qBAAA,CAAsB,IAAA,EAAY,YAAA,EAAsB,UAAA,EAAmC;AAC/F,IAAA,MAAM,IAAA,CAAK,YAAY,UAAA,CAAW,CAAA,SAAA,EAAY,UAAU,CAAA,YAAA,EAAe,YAAY,IAAI,IAAI,CAAA;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAA,CACJ,WAAA,EACA,WAAA,EACA,WAAA,EACY;AACZ,IAAA,OAAO,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,YAAY;AACnD,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,WAAA,EAAY;AAAA,MAC3B,SAAS,CAAA,EAAG;AACV,QAAA,IAAI,WAAA,EAAa;AAEf,UAAA,MAAM,eAAe,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,OAAO,CAAC,CAAA;AAC9D,UAAA,MAAM,IAAI,eAAA,CAAgB,YAAA,EAAc,WAAA,CAAY,KAAA,EAAO;AAAA,YACzD,KAAA,EAAO;AAAA,cACL,MAAA,EAAQ,QAAA;AAAA,cACR,KAAA,EAAO,UAAU,YAAY,CAAA,CAAA;AAAA,cAC7B,OAAA,EAAS,KAAK,GAAA;AAAI;AACpB,WACD,CAAA;AAAA,QACH;AACA,QAAA,MAAM,CAAA;AAAA,MACR;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAA,GAAwC;AACtC,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,WAAA,EAAY;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAoB,MAAA,EAcyB;AAEjD,IAAA,IAAI,EAAE,MAAA,CAAO,IAAA,YAAgB,eAAA,CAAA,EAAkB;AAC7C,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,gBAAA,EAAkB,MAAA,EAAQ,YAAY,UAAA,EAAY,SAAA,EAAW,OAAA,EAAS,SAAA,EAAU,GACzG,MAAA;AAEF,IAAA,MAAM,QAAA,GAAW,CAAC,CAAC,MAAA,EAAQ,KAAA,EAAO,MAAA;AAClC,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI,KAAA;AAEJ,IAAA,MAAM,YAAA,GAAe,CAAC,EAAE,UAAA,IAAc,UAAA,CAAW,KAAA,EAAO,MAAA,GAAS,CAAA,IAAK,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,KAAM,IAAA,CAAK,EAAA,CAAA;AAEnG,IAAA,IAAI;AACF,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,KAAA,GAAQ,WAAA,CAAY,MAAA,EAAQ,KAAA,GAAQ,CAAC,CAAA,IAAK,EAAE,CAAA,EAAG,cAAA,EAAgB,eAAA,EAAiB,KAAA,IAAS,UAAA,EAAW;AACpG,QAAA,MAAM,WAAgB,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,IAAc,oBAAA,CAAqB;AAAA,UAC1E,cAAc,IAAA,CAAK,EAAA;AAAA,UACnB;AAAA,SACD,CAAA;AAED,QAAA,MAAM,UAAA,GAAc,MAAM,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,CAAA,SAAA,EAAY,gBAAA,CAAiB,UAAU,CAAA,MAAA,EAAS,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI;AAAA,UAC3G,QAAA,EAAU,KAAK,WAAA,EAAY;AAAA,UAC3B,IAAA,EAAM;AAAA,YACJ,SAAA;AAAA,YACA,YAAA,EAAc,gBAAA,CAAiB,KAAA,IAAS,QAAA,EAAU,SAAS,EAAC;AAAA,YAC5D,KAAA;AAAA,YACA,MAAA,EAAQ;AAAA,cACN,KAAA;AAAA,cACA,KAAA,EAAO,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAC3B,aAAa,QAAA,EAAU,OAAA;AAAA,cACvB,eAAe,MAAA,CAAO,aAAA;AAAA,cACtB,UAAA,EAAY,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,GAAK,QAAA,EAAU,cAAA,GAAiB,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAC,CAAA,GAAY;AAAA,aAC3F;AAAA,YACA,aAAA,EAAe,EAAE,YAAA,EAAc,IAAA;AAAK;AACtC,SACD,CAAA;AACD,QAAA,MAAA,GAAS,UAAA,CAAW,MAAA;AACpB,QAAA,KAAA,GAAQ,UAAA,CAAW,KAAA;AACnB,QAAA,gBAAA,CAAiB,KAAA,GAAQ,WAAW,MAAA,CAAO,KAAA;AAAA,MAC7C,WAAW,YAAA,EAAc;AACvB,QAAA,MAAM,WAAiB,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,IAAc,oBAAA,CAAqB;AAAA,UAC3E,cAAc,IAAA,CAAK,EAAA;AAAA,UACnB,OAAO,gBAAA,CAAiB;AAAA,SACzB,CAAA,IAAM,EAAE,OAAA,EAAS,EAAC,EAAE;AACrB,QAAA,MAAM,mBAAmB,+BAAA,CAAgC;AAAA,UACvD,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UAC/B,WAAW,UAAA,CAAW,SAAA;AAAA,UACtB,YAAY,UAAA,CAAW,UAAA;AAAA,UACvB,SAAU,UAAA,CAAW,iBAAA,GAAoB,IAAA,CAAK,EAAE,KAAK,EAAC;AAAA,UACtD,kBAAA,EAAqB,UAAA,CAAW,iBAAA,IAAqB,EAAC;AAAA,UACtD,QAAA;AAAA,UACA,KAAA,EAAO,KAAK,mBAAA;AAAoB,SACjC,CAAA;AACD,QAAA,MAAM,UAAA,GAAc,MAAM,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,CAAA,SAAA,EAAY,gBAAA,CAAiB,UAAU,CAAA,MAAA,EAAS,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI;AAAA,UAC3G,QAAA,EAAU,KAAK,WAAA,EAAY;AAAA,UAC3B,IAAA,EAAM;AAAA,YACJ,UAAA,EAAY,gBAAA;AAAA,YACZ,YAAA,EAAc,gBAAA,CAAiB,KAAA,IAAS,EAAC;AAAA,YACzC,OAAO,gBAAA,CAAiB,KAAA;AAAA,YACxB,aAAA,EAAe,EAAE,YAAA,EAAc,IAAA;AAAK;AACtC,SACD,CAAA;AACD,QAAA,MAAA,GAAS,UAAA,CAAW,MAAA;AACpB,QAAA,KAAA,GAAQ,UAAA,CAAW,KAAA;AACnB,QAAA,gBAAA,CAAiB,KAAA,GAAQ,WAAW,MAAA,CAAO,KAAA;AAAA,MAC7C,CAAA,MAAO;AACL,QAAA,MAAM,UAAA,GAAc,MAAM,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,CAAA,SAAA,EAAY,gBAAA,CAAiB,UAAU,CAAA,MAAA,EAAS,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI;AAAA,UAC3G,QAAA,EAAU,KAAK,WAAA,EAAY;AAAA,UAC3B,IAAA,EAAM;AAAA,YACJ,SAAA;AAAA,YACA,YAAA,EAAc,gBAAA,CAAiB,KAAA,IAAS,EAAC;AAAA,YACzC,aAAA,EAAe,EAAE,YAAA,EAAc,IAAA;AAAK;AACtC,SACD,CAAA;AACD,QAAA,MAAA,GAAS,UAAA,CAAW,MAAA;AACpB,QAAA,KAAA,GAAQ,UAAA,CAAW,KAAA;AACnB,QAAA,gBAAA,CAAiB,KAAA,GAAQ,WAAW,MAAA,CAAO,KAAA;AAAA,MAC7C;AAAA,IACF,SAAS,CAAA,EAAG;AAGV,MAAA,MAAM,aAAc,CAAA,EAAW,KAAA;AAG/B,MAAA,IAAI,UAAA,IAAc,OAAO,UAAA,KAAe,QAAA,EAAU;AAChD,QAAA,MAAA,GAAS,UAAA;AAET,QAAA,KAAA,GAAQ,UAAA,CAAW,SAAS,UAAA,EAAW;AAAA,MACzC,CAAA,MAAO;AAEL,QAAA,KAAA,GAAQ,UAAA,EAAW;AACnB,QAAA,MAAA,GAAS;AAAA,UACP,MAAA,EAAQ,QAAA;AAAA,UACR,KAAA,EAAO,aAAa,KAAA,GAAQ,CAAA,GAAI,IAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,UACnD,OAAO,EAAC;AAAA,UACR,KAAA,EAAO;AAAA,SACT;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,WAAA,CAAY,GAAA;AAAA,MACjC,CAAA,SAAA,EAAY,gBAAA,CAAiB,UAAU,CAAA,MAAA,EAAS,KAAK,EAAE,CAAA,iBAAA,CAAA;AAAA,MACvD,YAAY;AACV,QAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,UAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,YAC1B,IAAA,EAAM,sBAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,IAAI,IAAA,CAAK,EAAA;AAAA,cACT,MAAA,EAAQ,QAAA;AAAA,cACR,OAAO,MAAA,EAAQ,KAAA;AAAA,cACf,OAAA,EAAS;AAAA;AACX,WACD,CAAA;AAED,UAAA,OAAO,EAAE,kBAAkB,MAAA,EAAQ,EAAE,QAAQ,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAM,EAAE;AAAA,QAChF,CAAA,MAAA,IAAW,MAAA,CAAO,MAAA,KAAW,WAAA,EAAa;AACxC,UAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,SAAA,EAAW,UAAU,CAAA,KAAM;AACtF,YAAA,MAAM,OAAA,GAA0C,UAAA;AAChD,YAAA,OAAO,SAAS,MAAA,KAAW,WAAA;AAAA,UAC7B,CAAC,CAAA;AAED,UAAA,KAAA,MAAW,CAAC,QAAA,EAAU,UAAU,CAAA,IAAK,cAAA,EAAgB;AACnD,YAAA,MAAM,WAAA,GAAwB,CAAC,QAAA,EAAU,GAAI,YAAY,cAAA,EAAgB,eAAA,EAAiB,IAAA,IAAQ,EAAG,CAAA;AACrG,YAAA,gBAAA,CAAiB,cAAA,CAAe,IAAA,CAAK,EAAE,CAAA,GAAI,gBAAA,CAAiB,aAAA;AAE5D,YAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,cAC1B,IAAA,EAAM,yBAAA;AAAA,cACN,OAAA,EAAS;AAAA,gBACP,IAAI,IAAA,CAAK,EAAA;AAAA,gBACT,MAAA,EAAQ;AAAA;AACV,aACD,CAAA;AAED,YAAA,OAAO;AAAA,cACL,gBAAA;AAAA,cACA,MAAA,EAAQ;AAAA,gBACN,MAAA,EAAQ,WAAA;AAAA,gBACR,SAAS,UAAA,CAAW,OAAA;AAAA,gBACpB,cAAA,EAAgB;AAAA,kBACd,GAAI,UAAA,EAAoB,cAAA;AAAA,kBACxB,eAAA,EAAiB,EAAE,KAAA,EAAc,IAAA,EAAM,WAAA;AAAY;AACrD;AACF,aACF;AAAA,UACF;AAEA,UAAA,OAAO;AAAA,YACL,gBAAA;AAAA,YACA,MAAA,EAAQ;AAAA,cACN,MAAA,EAAQ,WAAA;AAAA,cACR,SAAS;AAAC;AACZ,WACF;AAAA,QACF;AAEA,QAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,UAC1B,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,MAAA,EAAQ,SAAA;AAAA,YACR,QAAQ,MAAA,EAAQ;AAAA;AAClB,SACD,CAAA;AAED,QAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,UAC1B,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,UAAU;AAAC;AACb,SACD,CAAA;AAED,QAAA,OAAO,EAAE,kBAAkB,MAAA,EAAQ,EAAE,QAAQ,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO,EAAE;AAAA,MACnF;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,MAAA,CAAO,gBAAA,EAAkB,GAAA,CAAI,gBAAgB,CAAA;AACpD,IAAA,OAAO;AAAA,MACL,GAAG,GAAA,CAAI,MAAA;AAAA,MACP,SAAA;AAAA,MACA,OAAA,EAAS,KAAK,GAAA,EAAI;AAAA,MAClB,OAAA,EAAS,SAAA;AAAA,MACT,WAAW,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,KAAM,IAAA,CAAK,KAAK,SAAA,GAAY,MAAA;AAAA,MACtD,aAAA,EAAe,QAAQ,KAAA,CAAM,CAAC,MAAM,IAAA,CAAK,EAAA,GAAK,QAAQ,aAAA,GAAgB;AAAA,KACxE;AAAA,EACF;AACF;AC7VO,IAAM,UAAA,GAAN,cAMG,GAAA,CAAkD;AAAA,EAClD,OAAA;AAAA,EACR,mBAAA;AAAA,EACA,OAAA;AAAA,EAEA,WAAA,CACE,QAiBA,OAAA,EACA;AACA,IAAA,KAAA,CAAM,MAAM,CAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,sBAAsB,MAAA,CAAO,mBAAA;AAClC,IAAA,IAAA,CAAK,UAAU,MAAA,CAAO,MAAA;AAAA,EACxB;AAAA,EAEA,MAAM,QAAQ,OAAA,EAAiB;AAC7B,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,QAAQ,UAAA,IAAc,yBAAyB,CAAA,WAAA,EAAc,OAAO,CAAA,KAAA,CAAA,EAAS;AAAA,MAChH,OAAA,EAAS;AAAA,QACP,aAAA,EAAe,CAAA,OAAA,EAAU,OAAA,CAAQ,GAAA,CAAI,mBAAmB,CAAA;AAAA;AAC1D,KACD,CAAA;AACD,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,OAAQ,IAAA,CAAa,IAAA;AAAA,EACvB;AAAA,EAEA,MAAM,aAAa,OAAA,EAAiB;AAClC,IAAA,IAAI,IAAA,GAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AACrC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,UAAA,EAAW;AAEzC,IAAA,OAAO,IAAA,GAAO,CAAC,CAAA,EAAG,MAAA,KAAW,eAAe,IAAA,GAAO,CAAC,CAAA,EAAG,QAAA,KAAa,OAAA,EAAS;AAC3E,MAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,UAAA,CAAW,OAAA,EAAS,GAAI,CAAC,CAAA;AACtD,MAAA,IAAA,GAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAEjC,MAAA,IAAI,IAAA,GAAO,CAAC,CAAA,EAAG,MAAA,KAAW,QAAA,EAAU;AAClC,QAAA,MAAM,QAAA,GAAW,MAAM,OAAA,EAAS,oBAAA,CAAqB;AAAA,UACnD,cAAc,IAAA,CAAK,UAAA;AAAA,UACnB,OAAO,IAAA,CAAK;AAAA,SACb,CAAA;AACD,QAAA,OAAO;AAAA,UACL,MAAA,EAAQ,EAAE,MAAA,EAAQ,EAAE,OAAO,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAU,OAAO,IAAA,GAAO,CAAC,CAAA,EAAG,MAAA,EAAQ,SAAQ;AAAE,SACtG;AAAA,MACF;AAEA,MAAA,IAAI,IAAA,GAAO,CAAC,CAAA,EAAG,MAAA,KAAW,WAAA,EAAa;AACrC,QAAA,MAAM,QAAA,GAAW,MAAM,OAAA,EAAS,oBAAA,CAAqB;AAAA,UACnD,cAAc,IAAA,CAAK,UAAA;AAAA,UACnB,OAAO,IAAA,CAAK;AAAA,SACb,CAAA;AACD,QAAA,OAAO,EAAE,MAAA,EAAQ,EAAE,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAW,EAAE,EAAE;AAAA,MAChF;AAAA,IACF;AACA,IAAA,OAAO,OAAO,CAAC,CAAA;AAAA,EACjB;AAAA,EAEA,MAAM,MAAA,GAAS;AACb,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,UAAA,EAAW;AAEzC,IAAA,MAAM,IAAA,CAAK,QAAQ,IAAA,CAAK;AAAA,MACtB,IAAA,EAAM,CAAA,gBAAA,EAAmB,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,MACxC,IAAA,EAAM;AAAA,QACJ,OAAO,IAAA,CAAK;AAAA;AACd,KACD,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,EAAS,oBAAA,CAAqB;AAAA,MACnD,cAAc,IAAA,CAAK,UAAA;AAAA,MACnB,OAAO,IAAA,CAAK;AAAA,KACb,CAAA;AACD,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,SAAS,uBAAA,CAAwB;AAAA,QACrC,cAAc,IAAA,CAAK,UAAA;AAAA,QACnB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,QAAA,EAAU;AAAA,UACR,GAAG,QAAA;AAAA,UACH,MAAA,EAAQ,UAAA;AAAA,UACR,OAAO,QAAA,CAAS;AAAA;AAClB,OACD,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,MAAA,EASiD;AAC3D,IAAA,OAAO,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,MAAA,CAAO;AAAA,IACX,SAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,EAU6D;AAC3D,IAAA,MAAM,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAW,EAAG,uBAAA,CAAwB;AAAA,MACvD,cAAc,IAAA,CAAK,UAAA;AAAA,MACnB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,QAAA,EAAU;AAAA,QACR,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,qBAAqB,IAAA,CAAK,mBAAA;AAAA,QAC1B,MAAA,EAAQ,SAAA;AAAA,QACR,OAAO,EAAC;AAAA,QACR,SAAS,EAAC;AAAA,QACV,aAAa,EAAC;AAAA,QACd,gBAAgB,EAAC;AAAA,QACjB,iBAAiB,EAAC;AAAA,QAClB,cAAc,EAAC;AAAA,QACf,cAAc,EAAC;AAAA,QACf,SAAA,EAAW,KAAK,GAAA;AAAI;AACtB,KACD,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,cAAA,CAAe,SAAS,CAAA;AAC1D,IAAA,MAAM,oBAAoB,MAAM,IAAA,CAAK,qBAAA,CAAsB,YAAA,IAAgB,EAAE,CAAA;AAE7E,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK;AAAA,MAC1C,IAAA,EAAM,CAAA,SAAA,EAAY,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,MACjC,IAAA,EAAM;AAAA,QACJ,SAAA,EAAW,cAAA;AAAA,QACX,YAAA,EAAc,iBAAA;AAAA,QACd,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,aAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA,EAAgB,iBAAiB,MAAA,CAAO,WAAA,CAAY,eAAe,OAAA,EAAS,IAAI;AAAC;AACnF,KACD,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA;AACjC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AACA,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,WAAW,MAAA,EAAQ,MAAA;AAElC,IAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,MAAA,MAAA,CAAO,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,IACvC;AAEA,IAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,MAAA,IAAA,CAAK,OAAA,IAAU;AAAA,IACjB;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,OAA6C,MAAA,EAQU;AAC3D,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,CAAE,KAAK,CAAA,MAAA,KAAU;AAC5C,MAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,QAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MAC3C;AAEA,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,gBAAA,GAAmB,CAAA;AACxB,IAAA,OAAO,CAAA;AAAA,EACT;AAAA,EAEA,MAAM,QAA8C,MAAA,EAQS;AAC3D,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,UAAA,EAAW;AAEzC,IAAA,IAAI,QAAkB,EAAC;AACvB,IAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACnC,MAAA,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,KAAA,GAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,GAAI,OAAO,IAAA,GAAO,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG,GAAA;AAAA,QAAI,CAAA,IAAA,KACrE,OAAO,IAAA,KAAS,QAAA,GAAW,OAAO,IAAA,EAAM;AAAA,OAC1C;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,EAAS,oBAAA,CAAqB;AAAA,MACnD,cAAc,IAAA,CAAK,UAAA;AAAA,MACnB,OAAO,IAAA,CAAK;AAAA,KACb,CAAA;AAED,IAAA,MAAM,gBAAgB,IAAA,CAAK,aAAA,CAAc,KAAA,GAAQ,CAAC,KAAK,EAAE,CAAA;AAEzD,IAAA,MAAM,kBAAkB,MAAM,IAAA,CAAK,mBAAA,CAAoB,MAAA,CAAO,YAAY,aAAa,CAAA;AAGvF,IAAA,MAAM,uBAAA,GAA2B,QAAA,EAAkB,cAAA,IAAkB,EAAC;AACtE,IAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,cAAA,GAAiB,MAAA,CAAO,WAAA,CAAY,OAAO,cAAA,CAAe,OAAA,EAAS,CAAA,GAAI,EAAC;AACzG,IAAA,MAAM,oBAAA,GAAuB,EAAE,GAAG,uBAAA,EAAyB,GAAG,iBAAA,EAAkB;AAEhF,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK;AAAA,MAC1C,IAAA,EAAM,CAAA,SAAA,EAAY,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,MACjC,IAAA,EAAM;AAAA,QACJ,SAAA,EAAW,eAAA;AAAA,QACX,YAAA,EAAc,QAAA,EAAU,KAAA,IAAS,EAAC;AAAA,QAClC,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,aAAa,QAAA,EAAU,OAAA;AAAA,QACvB,MAAA,EAAQ;AAAA,UACN,KAAA;AAAA,UACA,aAAa,QAAA,EAAU,OAAA;AAAA,UACvB,aAAA,EAAe,eAAA;AAAA,UACf,UAAA,EAAY,QAAQ,CAAC,CAAA,GAAK,UAAU,cAAA,GAAiB,KAAA,GAAQ,CAAC,CAAC,CAAA,GAAY;AAAA,SAC7E;AAAA,QACA,cAAA,EAAgB;AAAA;AAClB,KACD,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA;AACjC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AACA,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,WAAW,MAAA,EAAQ,MAAA;AAClC,IAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,MAAA,MAAA,CAAO,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,IACvC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,WAAgD,MAAA,EAiBO;AAC3D,IAAA,MAAM,IAAI,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA,CAAE,KAAK,CAAA,MAAA,KAAU;AAChD,MAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,QAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MAC3C;AAEA,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,gBAAA,GAAmB,CAAA;AACxB,IAAA,OAAO,CAAA;AAAA,EACT;AAAA,EAEA,MAAM,YAAiD,MAAA,EAiBM;AAC3D,IAAA,IAAI,CAAC,MAAA,CAAO,IAAA,IAAS,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,IAAK,MAAA,CAAO,IAAA,EAAM,MAAA,KAAW,CAAA,EAAI;AAC7E,MAAA,MAAM,IAAI,MAAM,6DAA6D,CAAA;AAAA,IAC/E;AAEA,IAAA,IAAI,QAAkB,EAAC;AACvB,IAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACnC,MAAA,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,KAAA,GAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,GAAI,OAAO,IAAA,GAAO,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG,GAAA;AAAA,QAAI,CAAA,IAAA,KACrE,OAAO,IAAA,KAAS,QAAA,GAAW,OAAO,IAAA,EAAM;AAAA,OAC1C;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,IACnD;AAEA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,UAAA,EAAW;AAEzC,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,EAAS,oBAAA,CAAqB;AAAA,MACnD,cAAc,IAAA,CAAK,UAAA;AAAA,MACnB,OAAO,IAAA,CAAK;AAAA,KACb,CAAA;AAED,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,SAAS,uBAAA,CAAwB;AAAA,QACrC,cAAc,IAAA,CAAK,UAAA;AAAA,QACnB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,QAAA,EAAU;AAAA,UACR,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,qBAAqB,IAAA,CAAK,mBAAA;AAAA,UAC1B,MAAA,EAAQ,SAAA;AAAA,UACR,OAAO,EAAC;AAAA,UACR,SAAS,EAAC;AAAA,UACV,aAAa,EAAC;AAAA,UACd,gBAAgB,EAAC;AAAA,UACjB,iBAAiB,EAAC;AAAA,UAClB,cAAc,EAAC;AAAA,UACf,cAAc,EAAC;AAAA,UACf,SAAA,EAAW,KAAK,GAAA;AAAI;AACtB,OACD,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,QAAA,EAAU,WAAW,SAAA,EAAW;AAClC,MAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,IAC1E;AAEA,IAAA,IAAI,iBAAiB,MAAA,CAAO,SAAA;AAE5B,IAAA,IAAI,cAAA,IAAkB,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG;AACxC,MAAA,cAAA,GAAiB,MAAM,IAAA,CAAK,4BAAA,CAA6B,MAAA,CAAO,SAAA,EAAW,KAAK,aAAA,CAAc,KAAA,CAAM,CAAC,CAAE,CAAE,CAAA;AAAA,IAC3G;AAEA,IAAA,MAAM,iBAAiBA,+BAAAA,CAAgC;AAAA,MACrD,KAAA;AAAA,MACA,SAAA,EAAW,cAAA;AAAA,MACX,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,oBAAoB,MAAA,CAAO,kBAAA;AAAA,MAC3B,QAAA,EAAW,QAAA,IAAY,EAAE,OAAA,EAAS,EAAC,EAAE;AAAA,MACrC,OAAO,IAAA,CAAK,cAAA;AAAA,MACZ,cAAc,MAAA,CAAO;AAAA,KACtB,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK;AAAA,MAC1C,IAAA,EAAM,CAAA,SAAA,EAAY,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,MACjC,IAAA,EAAM;AAAA,QACJ,cAAc,cAAA,CAAe,KAAA;AAAA,QAC7B,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,aAAa,cAAA,CAAe,WAAA;AAAA,QAC5B,UAAA,EAAY,cAAA;AAAA,QACZ,gBAAgB,MAAA,CAAO,cAAA;AAAA,QACvB,eAAe,MAAA,CAAO,aAAA;AAAA,QACtB,cAAA,EAAgB,MAAA,CAAO,cAAA,GAAiB,MAAA,CAAO,WAAA,CAAY,OAAO,cAAA,CAAe,OAAA,EAAS,CAAA,GAAI;AAAC;AACjG,KACD,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA;AACjC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AACA,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,WAAW,MAAA,EAAQ,MAAA;AAClC,IAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,MAAA,MAAA,CAAO,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,IACvC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,EAAA,EAAsD;AAC1D,IAAA,IAAI,MAAA,GAAS,IAAA;AACb,IAAA,MAAM,aAAA,GAAgB,SAAA;AAAA,MACpB;AAAA,QACE,SAAS,CAAA,SAAA,EAAY,IAAA,CAAK,UAAU,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,CAAA;AAAA,QAClD,MAAA,EAAQ,CAAC,OAAO,CAAA;AAAA,QAChB,KAAK,IAAA,CAAK;AAAA,OACZ;AAAA,MACA,CAAC,OAAA,KAAiB;AAChB,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,EAAA,CAAG,QAAQ,IAAI,CAAA;AAAA,QACjB;AAAA,MACF;AAAA,KACF;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,GAAS,KAAA;AACT,MAAA,aAAA,CACG,IAAA,CAAK,OAAO,MAAA,KAA0C;AACrD,QAAA,OAAO,OAAO,MAAA,EAAO;AAAA,MACvB,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,GAAA,KAAO;AACZ,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACnB,CAAC,CAAA;AAAA,IACL,CAAA;AAAA,EACF;AAAA,EAEA,aAAa,EAAE,SAAA,EAAW,cAAA,EAAe,GAAsE,EAAC,EAG9G;AACA,IAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAS,GAAI,IAAI,eAAA,EAA0C;AAE7E,IAAA,MAAM,MAAA,GAAS,SAAS,SAAA,EAAU;AAClC,IAAA,KAAK,OAAO,KAAA,CAAM;AAAA;AAAA,MAEhB,IAAA,EAAM,OAAA;AAAA;AAAA,MAEN,OAAA,EAAS,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA;AAAM,KAC9B,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAM,KAAA,KAAS;AACxC,MAAA,IAAI;AACF,QAAA,MAAM,CAAA,GAAS;AAAA,UACb,GAAG,KAAA;AAAA,UACH,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,aAAa,EAAE;AAAA,SAC1C;AAEA,QAAA,IAAI,CAAA,CAAE,SAAS,aAAA,EAAe;AAC5B,UAAA,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE,OAAA,CAAQ,MAAA,CAAO,IAAA;AAC1B,UAAA,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAA,CAAQ,MAAA,CAAO,OAAA;AAAA,QAC/B;AAEA,QAAA,MAAM,MAAA,CAAO,MAAM,CAAQ,CAAA;AAAA,MAC7B,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IACX,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,oBAAoB,YAAY;AACnC,MAAA,MAAM,OAAO,KAAA,CAAM;AAAA,QACjB,IAAA,EAAM,QAAA;AAAA;AAAA,QAEN,OAAA,EAAS,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA;AAAM,OAC9B,CAAA;AACD,MAAA,OAAA,EAAQ;AAER,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,KAAA,EAAM;AAAA,MACrB,SAAS,GAAA,EAAK;AACZ,QAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,GAAG,CAAA;AAAA,MAC5C,CAAA,SAAE;AACA,QAAA,MAAA,CAAO,WAAA,EAAY;AAAA,MACrB;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA,CAAK,MAAA,CAAO,EAAE,SAAA,EAAW,cAAA,EAAgB,MAAA,EAAQ,QAAA,EAAU,CAAA,CAAE,IAAA,CAAK,CAAA,MAAA,KAAU;AAClG,MAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,QAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MAC3C;AAEA,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,QAAA;AAAA,MACR,gBAAA,EAAkB,MAAM,IAAA,CAAK;AAAA,KAC/B;AAAA,EACF;AAAA,EAEA,MAAA,CAAO;AAAA,IACL,SAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,YAAA;AAAA,IACA;AAAA,GACF,GAWI,EAAC,EAAkF;AACrF,IAAA,IAAI,IAAA,CAAK,iBAAA,IAAqB,IAAA,CAAK,YAAA,EAAc;AAC/C,MAAA,OAAO,IAAA,CAAK,YAAA;AAAA,IACd;AAEA,IAAA,IAAA,CAAK,oBAAoB,YAAY;AAAA,IAAC,CAAA;AAEtC,IAAA,MAAM,IAAA,GAAO,IAAA;AACb,IAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAAoC;AAAA,MACrD,MAAM,MAAM,UAAA,EAAY;AAGtB,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAO,EAAE,MAAM,IAAA,GAAO,SAAA,CAAU,QAAA,EAAU,OAAA,EAAQ,KAAM;AACjF,UAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,YACjB,IAAA;AAAA,YACA,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,IAAA;AAAA,YACA,OAAA,EAAS;AAAA,cACP,UAAW,OAAA,EAAuC,EAAA;AAAA,cAClD,GAAG;AAAA;AACL,WACsB,CAAA;AAAA,QAC1B,CAAC,CAAA;AAED,QAAA,IAAA,CAAK,oBAAoB,YAAY;AACnC,UAAA,OAAA,EAAQ;AAER,UAAA,IAAI;AACF,YAAA,MAAM,WAAW,KAAA,EAAM;AAAA,UACzB,SAAS,GAAA,EAAK;AACZ,YAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,GAAG,CAAA;AAAA,UAC5C;AAAA,QACF,CAAA;AAEA,QAAA,MAAM,uBAAA,GAA0B,KAAK,MAAA,CAAO;AAAA,UAC1C,SAAA;AAAA,UACA,cAAA;AAAA;AAAA,UAEA,YAAA;AAAA,UACA,cAAA;AAAA,UACA,aAAA;AAAA,UACA,MAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,IAAI,gBAAA;AACJ,QAAA,IAAI;AACF,UAAA,gBAAA,GAAmB,MAAM,uBAAA;AAEzB,UAAA,IAAI,cAAA,EAAgB;AAGlB,YAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,YAAC,CAAC,CAAA;AAAA,UAC3C,CAAA,MAAA,IAAW,gBAAA,CAAiB,MAAA,KAAW,WAAA,EAAa;AAClD,YAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,YAAC,CAAC,CAAA;AAAA,UAC3C;AACA,UAAA,IAAI,KAAK,YAAA,EAAc;AACrB,YAAA,IAAA,CAAK,YAAA,CAAa,aAAA;AAAA,cAChB;AAAA,aACF;AAAA,UACF;AAAA,QACF,SAAS,GAAA,EAAK;AACZ,UAAA,IAAA,CAAK,YAAA,EAAc,cAAc,GAAuB,CAAA;AACxD,UAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,UAAC,CAAC,CAAA;AAAA,QAC3C;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,YAAA,GAAe,IAAI,iBAAA,CAAmE;AAAA,MACzF,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA,EAEA,WAAA,CACE,IAAA,GAWI,EAAC,EAC0E;AAC/E,IAAA,OAAO,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA,EACzB;AAAA,EAEA,gBAAA,CAAsD;AAAA,IACpD,SAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF,EAoBG;AACD,IAAA,IAAA,CAAK,oBAAoB,YAAY;AAAA,IAAC,CAAA;AAEtC,IAAA,MAAM,IAAA,GAAO,IAAA;AACb,IAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAAoC;AAAA,MACrD,MAAM,MAAM,UAAA,EAAY;AAGtB,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAO,EAAE,MAAM,IAAA,GAAO,SAAA,CAAU,QAAA,EAAU,OAAA,EAAQ,KAAM;AACjF,UAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,YACjB,IAAA;AAAA,YACA,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,IAAA;AAAA,YACA,OAAA,EAAS;AAAA,cACP,UAAW,OAAA,EAAuC,EAAA;AAAA,cAClD,GAAG;AAAA;AACL,WACsB,CAAA;AAAA,QAC1B,CAAC,CAAA;AAED,QAAA,IAAA,CAAK,oBAAoB,YAAY;AACnC,UAAA,OAAA,EAAQ;AAER,UAAA,IAAI;AACF,YAAA,UAAA,CAAW,KAAA,EAAM;AAAA,UACnB,SAAS,GAAA,EAAK;AACZ,YAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,GAAG,CAAA;AAAA,UAC5C;AAAA,QACF,CAAA;AACA,QAAA,MAAM,uBAAA,GAA0B,KAAK,WAAA,CAAY;AAAA,UAC/C,SAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA,kBAAA;AAAA,UACA,UAAA;AAAA,UACA,YAAA;AAAA,UACA,cAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAA,CAAK,gBAAA,GAAmB,uBAAA;AAExB,QAAA,IAAI,gBAAA;AACJ,QAAA,IAAI;AACF,UAAA,gBAAA,GAAmB,MAAM,uBAAA;AACzB,UAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,UAAC,CAAC,CAAA;AAEzC,UAAA,IAAI,KAAK,YAAA,EAAc;AACrB,YAAA,IAAA,CAAK,YAAA,CAAa,cAAc,gBAAgB,CAAA;AAAA,UAClD;AAAA,QACF,SAAS,GAAA,EAAK;AACZ,UAAA,IAAA,CAAK,YAAA,EAAc,cAAc,GAAuB,CAAA;AACxD,UAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,UAAC,CAAC,CAAA;AAAA,QAC3C;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,YAAA,GAAe,IAAI,iBAAA,CAAmE;AAAA,MACzF,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AACF;;;ACpsBO,IAAM,eAAA,GAAN,MAAM,gBAAA,SAQH,QAAA,CAAiF;AAAA,EACzF,OAAA;AAAA,EACO,OAAA;AAAA,EAEC,QAAA;AAAA,EACS,iBAAA;AAAA,EAEjB,WAAA,CAAY,QAA6E,OAAA,EAAkB;AACzG,IAAA,MAAM,EAAE,aAAa,SAAA,EAAW,QAAA,EAAU,UAAU,QAAA,EAAU,GAAG,gBAAe,GAAI,MAAA;AAEpF,IAAA,KAAA,CAAM,cAA8E,CAAA;AAEpF,IAAA,IAAA,CAAK,UAAA,GAAa,SAAA;AAElB,IAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,OAAA,CAAQ,EAAE,WAAA,EAAa,WAAW,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,CAAA,CAAE,MAAA;AAAA,MAClG,CAAC,CAAC,CAAA,EAAG,KAAK,MAAM,KAAA,KAAU;AAAA,KAC5B;AAEA,IAAA,IAAA,CAAK,oBAAoB,kBAAA,CAAmB,MAAA,GAAS,IAAI,MAAA,CAAO,WAAA,CAAY,kBAAkB,CAAA,GAAI,MAAA;AAElG,IAAA,IAAA,CAAK,UAAU,MAAA,CAAO,MAAA;AACtB,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AAAA,EAEA,MAAM,iBAAiB,IAAA,EAMpB;AACD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,UAAA,EAAW;AACzC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,4DAA4D,CAAA;AAC9E,MAAA,OAAO,EAAE,IAAA,EAAM,EAAC,EAAG,OAAO,CAAA,EAAE;AAAA,IAC9B;AAEA,IAAA,OAAO,OAAA,CAAQ,gBAAA,CAAiB,EAAE,YAAA,EAAc,IAAA,CAAK,IAAI,GAAI,IAAA,IAAQ,EAAC,EAAI,CAAA;AAAA,EAC5E;AAAA,EAEA,MAAM,mBAAmB,KAAA,EAA4C;AACnE,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,UAAA,EAAW;AACzC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,4DAA4D,CAAA;AAE9E,MAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAK,IACrB,EAAE,GAAG,IAAA,CAAK,IAAA,CAAK,IAAI,KAAK,CAAA,EAAG,YAAA,EAAc,IAAA,CAAK,IAAG,GAClD,IAAA;AAAA,IACN;AACA,IAAA,MAAM,GAAA,GAAO,MAAM,OAAA,CAAQ,kBAAA,CAAmB,EAAE,KAAA,EAAO,YAAA,EAAc,IAAA,CAAK,EAAA,EAAI,CAAA;AAE9E,IAAA,OACE,QACC,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAK,IAAK,EAAE,GAAG,IAAA,CAAK,IAAA,CAAK,IAAI,KAAK,CAAA,EAAG,YAAA,EAAc,IAAA,CAAK,IAAG,GAA+B,IAAA,CAAA;AAAA,EAE7G;AAAA,EAEA,iBAAiB,MAAA,EAAgB;AAC/B,IAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,IAAA,IAAA,CAAK,eAAA,CAAgB,iBAAiB,MAAM,CAAA;AAC5C,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAwB;AAC5C,MAAA,IAAA,CACG,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,SAAA,KAC/D,IAAA,CAAK,IAAA,YAAgB,gBAAA,EACrB;AACA,QAAA,IAAA,CAAK,IAAA,CAAK,iBAAiB,MAAM,CAAA;AAAA,MACnC,WAAW,IAAA,CAAK,IAAA,KAAS,UAAA,IAAc,IAAA,CAAK,SAAS,aAAA,EAAe;AAClE,QAAA,KAAA,MAAW,OAAA,IAAW,KAAK,KAAA,EAAO;AAChC,UAAA,YAAA,CAAa,OAAO,CAAA;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,IAAA,CAAK,cAAA,CAAe,KAAA,CAAM,MAAA,EAAQ;AACpC,MAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,cAAA,CAAe,KAAA,EAAO;AAC5C,QAAA,YAAA,CAAa,IAAI,CAAA;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,OAAA,EAG+C;AAC7D,IAAA,MAAM,UAAA,GAAa,OAAA,EAAS,KAAA,IAASC,UAAAA,EAAW;AAGhD,IAAA,MAAM,MACJ,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,UAAU,KACxB,IAAI,UAAA;AAAA,MACF;AAAA,QACE,YAAY,IAAA,CAAK,EAAA;AAAA,QACjB,KAAA,EAAO,UAAA;AAAA,QACP,YAAY,OAAA,EAAS,UAAA;AAAA,QACrB,iBAAiB,IAAA,CAAK,eAAA;AAAA,QACtB,gBAAgB,IAAA,CAAK,cAAA;AAAA,QACrB,qBAAqB,IAAA,CAAK,mBAAA;AAAA,QAC1B,QAAQ,IAAA,CAAK,OAAA;AAAA,QACb,aAAa,IAAA,CAAK,WAAA;AAAA,QAClB,OAAA,EAAS,MAAM,IAAA,CAAK,IAAA,CAAK,OAAO,UAAU,CAAA;AAAA,QAC1C,eAAe,IAAA,CAAK,KAAA;AAAA,QACpB,oBAAoB,IAAA,CAAK,UAAA;AAAA,QACzB,cAAA,EAAgB,KAAK,OAAA,CAAQ;AAAA,OAC/B;AAAA,MACA,IAAA,CAAK;AAAA,KACP;AAEF,IAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,GAAG,CAAA;AAE7B,IAAA,MAAM,qBAAA,GAAwB,IAAA,CAAK,OAAA,CAAQ,qBAAA,CAAsB;AAAA,MAC/D,gBAAgB,GAAA,CAAI,iBAAA;AAAA,MACpB,aAAa;AAAC,KACf,CAAA;AAED,IAAA,MAAM,yBAAA,GAA4B,MAAM,IAAA,CAAK,6BAAA,CAA8B,YAAY,KAAK,CAAA;AAE5F,IAAA,IAAI,CAAC,6BAA6B,qBAAA,EAAuB;AACvD,MAAA,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,EAAW,EAAG,uBAAA,CAAwB;AAAA,QACvD,cAAc,IAAA,CAAK,EAAA;AAAA,QACnB,KAAA,EAAO,UAAA;AAAA,QACP,YAAY,OAAA,EAAS,UAAA;AAAA,QACrB,QAAA,EAAU;AAAA,UACR,KAAA,EAAO,UAAA;AAAA,UACP,MAAA,EAAQ,SAAA;AAAA,UACR,OAAO,EAAC;AAAA,UACR,SAAS,EAAC;AAAA,UACV,aAAa,EAAC;AAAA,UACd,iBAAiB,EAAC;AAAA,UAClB,cAAc,EAAC;AAAA,UACf,qBAAqB,IAAA,CAAK,mBAAA;AAAA,UAC1B,gBAAgB,EAAC;AAAA,UACjB,cAAc,EAAC;AAAA,UACf,MAAA,EAAQ,MAAA;AAAA,UACR,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAW,KAAK,GAAA;AAAI;AACtB,OACD,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAEA,WAAA,GAAc;AACZ,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,OAAO,IAAA,CAAK,QAAA;AAAA,IACd;AACA,IAAA,IAAA,CAAK,QAAA,GAAW,KAAK,OAAA,CAAQ,cAAA;AAAA,MAC3B;AAAA,QACE,EAAA,EAAI,CAAA,SAAA,EAAY,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,QACvB,SAAS,IAAA,CAAK,GAAA,CAAI,KAAK,WAAA,EAAa,QAAA,IAAY,GAAG,EAAE,CAAA;AAAA,QAsBrD,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,mBAAmB,IAAA,CAAK,EAAE,IAAI,CAAA;AAAA;AAAA,QAElD,GAAG,IAAA,CAAK;AAAA,OACV;AAAA,MACA,EAAE,KAAA,EAAO,CAAA,SAAA,EAAY,IAAA,CAAK,EAAE,CAAA,CAAA,EAAG;AAAA,MAC/B,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,OAAA,EAAS,SAAQ,KAAM;AAC3C,QAAA,IAAI,EAAE,SAAA,EAAW,YAAA,EAAc,KAAA,EAAO,UAAA,EAAY,QAAQ,aAAA,EAAe,MAAA,EAAQ,UAAA,EAAW,GAAI,KAAA,CAAM,IAAA;AAEtG,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA,KAAA,GAAQ,MAAM,IAAA,CAAK,GAAA,CAAI,YAAY,IAAA,CAAK,EAAE,aAAa,YAAY;AACjE,YAAA,OAAOA,UAAAA,EAAW;AAAA,UACpB,CAAC,CAAA;AAAA,QACH;AAEA,QAAA,MAAM,OAAA,GAAU;AAAA,UACd,IAAA,EAAM,OAAOC,MAAAA,EAAe,IAAA,KAAc;AACxC,YAAA,IAAI,CAAC,OAAA,EAAS;AACZ,cAAA;AAAA,YACF;AAEA,YAAA,IAAI;AACF,cAAA,MAAM,OAAA,CAAQ;AAAA,gBACZ,OAAA,EAAS,CAAA,SAAA,EAAY,IAAA,CAAK,EAAE,IAAI,KAAK,CAAA,CAAA;AAAA,gBACrC,KAAA,EAAOA,MAAAA;AAAA,gBACP;AAAA,eACD,CAAA;AAAA,YACH,SAAS,GAAA,EAAU;AACjB,cAAA,IAAA,CAAK,OAAO,KAAA,CAAM,wBAAA,IAA4B,KAAK,KAAA,IAAS,GAAA,EAAK,WAAW,GAAA,CAAI,CAAA;AAAA,YAClF;AAAA,UACF,CAAA;AAAA,UACA,EAAA,EAAI,CAAC,MAAA,EAAgB,SAAA,KAAmC;AAAA,UAExD,CAAA;AAAA,UACA,GAAA,EAAK,CAAC,MAAA,EAAgB,SAAA,KAAmC;AAAA,UAEzD,CAAA;AAAA,UACA,IAAA,EAAM,CAAC,MAAA,EAAgB,SAAA,KAAmC;AAAA,UAE1D;AAAA,SACF;AAEA,QAAA,MAAM,MAAA,GAAS,IAAI,sBAAA,CAAuB,IAAA,CAAK,SAAS,IAAA,EAAM,OAAA,EAAS,KAAK,OAAO,CAAA;AACnF,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,OAAA,CAI1B;AAAA,UACA,YAAY,IAAA,CAAK,EAAA;AAAA,UACjB,KAAA;AAAA,UACA,UAAA;AAAA,UACA,OAAO,IAAA,CAAK,cAAA;AAAA,UACZ,qBAAqB,IAAA,CAAK,mBAAA;AAAA,UAC1B,KAAA,EAAO,SAAA;AAAA,UACP,YAAA;AAAA,UACA,OAAA;AAAA,UACA,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,cAAA,EAAgB,IAAI,cAAA,CAAe,MAAA,CAAO,OAAA,CAAQ,MAAM,IAAA,CAAK,cAAA,IAAkB,EAAE,CAAC,CAAA;AAAA,UAClF,MAAA;AAAA,UACA,UAAA;AAAA,UACA,MAAA;AAAA,UACA,eAAA,EAAiB,IAAI,eAAA,EAAgB;AAAA;AAAA,UAErC,aAAA;AAAA,UACA,cAAA,EAAgB,IAAI,cAAA,CAAoC;AAAA,YACtD,MAAM,KAAA,EAAO;AACX,cAAA,KAAK,QAAQ,IAAA,CAAK,OAAA,EAAS,KAAK,CAAA,CAAE,MAAM,MAAM;AAAA,cAAC,CAAC,CAAA;AAAA,YAClD;AAAA,WACD;AAAA,SACF,CAAA;AAID,QAAA,MAAM,KAAK,GAAA,CAAI,CAAA,SAAA,EAAY,IAAA,CAAK,EAAE,aAAa,YAAY;AACzD,UAAA,IAAI,MAAA,CAAO,WAAW,QAAA,EAAU;AAC9B,YAAA,MAAM,IAAI,kBAAkB,CAAA,eAAA,CAAA,EAAmB;AAAA,cAC7C,KAAA,EAAO;AAAA,aACR,CAAA;AAAA,UACH;AACA,UAAA,OAAO,MAAA;AAAA,QACT,CAAC,CAAA;AAED,QAAA,OAAO,EAAE,QAAQ,KAAA,EAAM;AAAA,MACzB;AAAA,KACF;AACA,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEA,mBAAmB,KAAA,EAAiE;AAClF,IAAA,OAAO,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAQ;AAC3B,MAAA,IAAI,IAAA,CAAK,SAAS,MAAA,IAAU,IAAA,CAAK,SAAS,MAAA,IAAU,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3E,QAAA,IAAI,IAAA,CAAK,gBAAgB,gBAAA,EAAiB;AACxC,UAAA,OAAO,CAAC,IAAA,CAAK,IAAA,CAAK,WAAA,EAAY,EAAG,GAAG,IAAA,CAAK,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA,QAClG;AACA,QAAA,OAAO,EAAC;AAAA,MACV,WAAW,IAAA,CAAK,IAAA,KAAS,UAAA,IAAc,IAAA,CAAK,SAAS,aAAA,EAAe;AAClE,QAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,KAAK,CAAA;AAAA,MAC3C;AAEA,MAAA,OAAO,EAAC;AAAA,IACV,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,YAAA,GAAe;AACb,IAAA,OAAO,CAAC,IAAA,CAAK,WAAA,EAAY,EAAG,GAAG,KAAK,kBAAA,CAAmB,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA,EACnF;AACF;AC5SO,SAAS,KAAA,CAAM;AAAA,EACpB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,EAAW,gBAAgB,EAAC;AAAA,EAC5B;AACF,CAAA,EAQoC;AAClC,EAAA,MAAM,GAAA,GAAM,OAAO,aAAA,EAAc;AACjC,EAAA,MAAM,oBAAoB,KAAA,CAAM,IAAA;AAAA,IAC9B,IAAI,GAAA;AAAA,MACF,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA,CAAE,QAAQ,CAAA,EAAA,KAAM;AAC/B,QAAA,IAAI,cAAc,eAAA,EAAiB;AACjC,UAAA,EAAA,CAAG,iBAAiB,MAAM,CAAA;AAC1B,UAAA,OAAO,GAAG,YAAA,EAAa;AAAA,QACzB;AACA,QAAA,OAAO,EAAC;AAAA,MACV,CAAC;AAAA;AACH,GACF;AAEA,EAAA,OAAOC,OAAA,CAAa;AAAA,IAClB,GAAG,eAAA;AAAA,IACH,MAAA,EAAQ,OAAA;AAAA,IACR,SAAA,EAAW,CAAC,GAAG,iBAAA,EAAmB,GAAG,aAAa;AAAA,GACnD,CAAA;AACH;;;ACVO,IAAM,mBAAA,GAAmD;;;ACThE,SAAS,QAAQ,MAAA,EAAwC;AACvD,EAAA,OAAO,QAAQ,SAAA,KAAc,OAAA;AAC/B;AAEA,SAAS,OAAO,MAAA,EAA4C;AAC1D,EAAA,OAAO,MAAA,YAAkB,IAAA;AAC3B;AAEA,SAAS,kBAAkB,MAAA,EAAwC;AACjE,EAAA,OAAO,MAAA,YAAkB,eAAA;AAC3B;AAiCO,SAAS,UAAA,CAQd,QAIA,YAAA,EACkG;AAGlG,EAAA,IAAI,iBAAA,CAAkB,MAAM,CAAA,EAAG;AAC7B,IAAA,OAAO,MAAA;AAAA,EAST;AAEA,EAAA,IAAI,OAAA,CAAQ,MAAM,CAAA,EAAG;AACnB,IAAA,OAAO;AAAA,MACL,IAAI,MAAA,CAAO,IAAA;AAAA,MACX,WAAA,EAAa,OAAO,cAAA,EAAe;AAAA,MACnC,WAAA,EAAa,EAAE,MAAA,CAAO;AAAA,QACpB,MAAA,EAAQ,EAAE,MAAA;AAAO;AAAA;AAAA,OAGlB,CAAA;AAAA,MACD,YAAA,EAAc,EAAE,MAAA,CAAO;AAAA,QACrB,IAAA,EAAM,EAAE,MAAA;AAAO,OAChB,CAAA;AAAA,MACD,SAAS,OAAO;AAAA,QACd,SAAA;AAAA,QACA,CAAC,cAAA,GAAiB,OAAA;AAAA,QAClB,CAAC,oBAAA,GAAuB,YAAA;AAAA,QACxB,cAAA;AAAA,QACA,cAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF,KAAM;AACJ,QAAA,IAAI,gBAAgB,EAAC;AAMrB,QAAA,aAAA,CAAc,OAAA,GAAU,IAAI,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AACvD,UAAA,aAAA,CAAc,OAAA,GAAU,OAAA;AACxB,UAAA,aAAA,CAAc,MAAA,GAAS,MAAA;AAAA,QACzB,CAAC,CAAA;AACD,QAAA,MAAM,QAAA,GAAW;AAAA,UACf,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM;AAAA,SACR;AAEA,QAAA,IAAI,MAAA;AAEJ,QAAA,IAAA,CAAK,MAAM,MAAA,CAAO,QAAA,EAAS,EAAG,yBAAyB,IAAA,EAAM;AAC3D,UAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,MAAA,CAAO,YAAA,CAAa,UAAU,MAAA,EAAQ;AAAA,YACjE,GAAI,gBAAgB,EAAC;AAAA;AAAA;AAAA,YAGrB,cAAA;AAAA,YACA,cAAA;AAAA,YACA,UAAU,CAAA,MAAA,KAAU;AAClB,cAAA,aAAA,CAAc,OAAA,CAAQ,OAAO,IAAI,CAAA;AACjC,cAAA,KAAK,YAAA,EAAc,WAAW,MAAM,CAAA;AAAA,YACtC,CAAA;AAAA,YACA;AAAA,WACD,CAAA;AACD,UAAA,MAAA,GAAS,UAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,MAAA,CAAO,UAAU,MAAA,EAAQ;AAAA,YACxD,GAAI,gBAAgB,EAAC;AAAA,YACrB,cAAA;AAAA,YACA,cAAA;AAAA,YACA,UAAU,CAAA,MAAA,KAAU;AAClB,cAAA,aAAA,CAAc,OAAA,CAAQ,OAAO,IAAI,CAAA;AACjC,cAAA,KAAK,YAAA,EAAc,WAAW,MAAM,CAAA;AAAA,YACtC,CAAA;AAAA,YACA;AAAA,WACD,CAAA;AAED,UAAA,MAAA,GAAS,WAAA,CAAY,UAAA;AAAA,QACvB;AAEA,QAAA,IAAI,iBAAiB,QAAA,EAAU;AAC7B,UAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,YAC1B,IAAA,EAAM,2BAAA;AAAA,YACN,GAAI,YAAY;AAAC,WAClB,CAAA;AACD,UAAA,WAAA,MAAiB,SAAS,MAAA,EAAQ;AAChC,YAAA,IAAI,KAAA,CAAM,SAAS,YAAA,EAAc;AAC/B,cAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,gBAC1B,IAAA,EAAM,iBAAA;AAAA,gBACN,GAAI,YAAY,EAAC;AAAA,gBACjB,eAAe,KAAA,CAAM;AAAA,eACtB,CAAA;AAAA,YACH;AAAA,UACF;AACA,UAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,YAC1B,IAAA,EAAM,4BAAA;AAAA,YACN,GAAI,YAAY;AAAC,WAClB,CAAA;AAAA,QACH,CAAA,MAAO;AACL,UAAA,WAAA,MAAiB,SAAS,MAAA,EAAQ;AAChC,YAAA,MAAM,MAAA,CAAO,MAAM,KAAY,CAAA;AAAA,UACjC;AAAA,QACF;AAEA,QAAA,IAAI,YAAY,OAAA,EAAS;AACvB,UAAA,OAAO,KAAA,EAAM;AAAA,QACf;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAM,aAAA,CAAc;AAAA,SAC5B;AAAA,MACF,CAAA;AAAA,MACA,WAAW,MAAA,CAAO;AAAA,KACpB;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,MAAM,CAAA,EAAG;AAClB,IAAA,IAAI,CAAC,MAAA,CAAO,WAAA,IAAe,CAAC,OAAO,YAAA,EAAc;AAC/C,MAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,IACnE;AAEA,IAAA,OAAO;AAAA;AAAA,MAEL,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,eAAe,MAAA,CAAO,aAAA;AAAA,MACtB,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,SAAS,OAAO;AAAA,QACd,SAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF,KAAM;AAEJ,QAAA,MAAM,WAAA,GAAc;AAAA,UAClB,MAAA;AAAA,UACA,cAAA;AAAA,UACA,cAAA;AAAA,UACA,QAAA,EAAU;AAAA,YACR,KAAA;AAAA,YACA,UAAA;AAAA,YACA,OAAA;AAAA,YACA,UAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA;AACF,SACF;AACA,QAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAW,WAAW,CAAA;AAAA,MAC9C,CAAA;AAAA,MACA,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,IAAI,MAAA,CAAO,EAAA;AAAA,IACX,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,SAAS,MAAA,CAAO;AAAA,GAClB;AACF;AAEO,SAAS,KAAK,OAAA,EAAkB;AACrC,EAAA,OAAO;AAAA,IACL,eAcE,MAAA,EAA6E;AAC7E,MAAA,OAAO,IAAI,eAAA;AAAA,QACT,MAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,CACE,MACA,IAAA,EAC2D;AAC3D,MAAA,OAAO;AAAA,QACL,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,aAAa,IAAA,CAAK,WAAA;AAAA,QAClB,aAAa,IAAA,CAAK,WAAA;AAAA,QAClB,cAAc,IAAA,CAAK,YAAA;AAAA,QACnB,cAAc,IAAA,CAAK,YAAA;AAAA,QACnB,eAAe,IAAA,CAAK,aAAA;AAAA,QACpB,aAAa,IAAA,CAAK,WAAA;AAAA,QAClB,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,WAAW,IAAA,CAAK;AAAA,OAClB;AAAA,IACF,CAAA;AAAA,IACA,aAAA,CAgBE,UACA,IAAA,EACwF;AACxF,MAAA,MAAM,EAAA,GAA6F,IAAIC,QAAAA,CAAS;AAAA,QAC9G,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,aAAa,QAAA,CAAS,WAAA;AAAA,QACtB,cAAc,QAAA,CAAS,YAAA;AAAA,QACvB,OAAO,QAAA,CAAS,QAAA;AAAA,QAChB,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,SAAS,QAAA,CAAS;AAAA,OACnB,CAAA;AAED,MAAA,EAAA,CAAG,WAAA,CAAY,SAAS,SAAS,CAAA;AACjC,MAAA,EAAA,CAAG,MAAA,EAAO;AACV,MAAA,OAAO,EAAA;AAAA,IACT;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { DefaultExecutionEngine, createTimeTravelExecutionParams } from '@mastra/core/workflows';\nimport type {\n ExecutionContext,\n Step,\n StepResult,\n StepFailure,\n Emitter,\n ExecutionEngineOptions,\n TimeTravelExecutionParams,\n WorkflowResult,\n} from '@mastra/core/workflows';\nimport { RetryAfterError } from 'inngest';\nimport type { Inngest, BaseContext } from 'inngest';\nimport { InngestWorkflow } from './workflow';\n\nexport class InngestExecutionEngine extends DefaultExecutionEngine {\n private inngestStep: BaseContext<Inngest>['step'];\n private inngestAttempts: number;\n\n constructor(\n mastra: Mastra,\n inngestStep: BaseContext<Inngest>['step'],\n inngestAttempts: number = 0,\n options: ExecutionEngineOptions,\n ) {\n super({ mastra, options });\n this.inngestStep = inngestStep;\n this.inngestAttempts = inngestAttempts;\n }\n\n // =============================================================================\n // Hook Overrides\n // =============================================================================\n\n /**\n * Format errors with stack traces for better debugging in Inngest\n */\n protected formatResultError(error: Error | string | undefined, lastOutput: StepResult<any, any, any, any>): string {\n if (error instanceof Error) {\n return error.stack ?? error.message;\n }\n const outputError = (lastOutput as StepFailure<any, any, any, any>)?.error;\n if (outputError instanceof Error) {\n return outputError.message;\n }\n return outputError ?? (error as string) ?? 'Unknown error';\n }\n\n /**\n * Detect InngestWorkflow instances for special nested workflow handling\n */\n isNestedWorkflowStep(step: Step<any, any, any>): boolean {\n return step instanceof InngestWorkflow;\n }\n\n /**\n * Inngest requires requestContext serialization for memoization.\n * When steps are replayed, the original function doesn't re-execute,\n * so requestContext modifications must be captured and restored.\n */\n requiresDurableContextSerialization(): boolean {\n return true;\n }\n\n /**\n * Execute a step with retry logic for Inngest.\n * Retries are handled via step-level retry (RetryAfterError thrown INSIDE step.run()).\n * After retries exhausted, error propagates here and we return a failed result.\n */\n async executeStepWithRetry<T>(\n stepId: string,\n runStep: () => Promise<T>,\n params: {\n retries: number;\n delay: number;\n stepSpan?: any;\n workflowId: string;\n runId: string;\n },\n ): Promise<{ ok: true; result: T } | { ok: false; error: { status: 'failed'; error: string; endedAt: number } }> {\n try {\n // Pass retry config to wrapDurableOperation so RetryAfterError is thrown INSIDE step.run()\n const result = await this.wrapDurableOperation(stepId, runStep, { delay: params.delay });\n return { ok: true, result };\n } catch (e) {\n // After step-level retries exhausted, extract failure from error cause\n const cause = (e as any)?.cause;\n if (cause?.status === 'failed') {\n params.stepSpan?.error({\n error: e,\n attributes: { status: 'failed' },\n });\n return { ok: false, error: cause };\n }\n\n // Fallback for other errors\n const errorMessage = e instanceof Error ? e.message : String(e);\n params.stepSpan?.error({\n error: e,\n attributes: { status: 'failed' },\n });\n return {\n ok: false,\n error: {\n status: 'failed',\n error: `Error: ${errorMessage}`,\n endedAt: Date.now(),\n },\n };\n }\n }\n\n /**\n * Use Inngest's sleep primitive for durability\n */\n async executeSleepDuration(duration: number, sleepId: string, workflowId: string): Promise<void> {\n await this.inngestStep.sleep(`workflow.${workflowId}.sleep.${sleepId}`, duration < 0 ? 0 : duration);\n }\n\n /**\n * Use Inngest's sleepUntil primitive for durability\n */\n async executeSleepUntilDate(date: Date, sleepUntilId: string, workflowId: string): Promise<void> {\n await this.inngestStep.sleepUntil(`workflow.${workflowId}.sleepUntil.${sleepUntilId}`, date);\n }\n\n /**\n * Wrap durable operations in Inngest step.run() for durability.\n * If retryConfig is provided, throws RetryAfterError INSIDE step.run() to trigger\n * Inngest's step-level retry mechanism (not function-level retry).\n */\n async wrapDurableOperation<T>(\n operationId: string,\n operationFn: () => Promise<T>,\n retryConfig?: { delay: number },\n ): Promise<T> {\n return this.inngestStep.run(operationId, async () => {\n try {\n return await operationFn();\n } catch (e) {\n if (retryConfig) {\n // Throw RetryAfterError INSIDE step.run() to trigger step-level retry\n const errorMessage = e instanceof Error ? e.message : String(e);\n throw new RetryAfterError(errorMessage, retryConfig.delay, {\n cause: {\n status: 'failed',\n error: `Error: ${errorMessage}`,\n endedAt: Date.now(),\n },\n });\n }\n throw e; // Re-throw if no retry config\n }\n }) as Promise<T>;\n }\n\n /**\n * Provide Inngest step primitive in engine context\n */\n getEngineContext(): Record<string, any> {\n return { step: this.inngestStep };\n }\n\n /**\n * Execute nested InngestWorkflow using inngestStep.invoke() for durability.\n * This MUST be called directly (not inside step.run()) due to Inngest constraints.\n */\n async executeWorkflowStep(params: {\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 timeTravel?: TimeTravelExecutionParams;\n prevOutput: any;\n inputData: any;\n emitter: Emitter;\n startedAt: number;\n }): Promise<StepResult<any, any, any, any> | null> {\n // Only handle InngestWorkflow instances\n if (!(params.step instanceof InngestWorkflow)) {\n return null;\n }\n\n const { step, stepResults, executionContext, resume, timeTravel, prevOutput, inputData, emitter, startedAt } =\n params;\n\n const isResume = !!resume?.steps?.length;\n let result: WorkflowResult<any, any, any, any>;\n let runId: string;\n\n const isTimeTravel = !!(timeTravel && timeTravel.steps?.length > 1 && timeTravel.steps[0] === step.id);\n\n try {\n if (isResume) {\n runId = stepResults[resume?.steps?.[0] ?? '']?.suspendPayload?.__workflow_meta?.runId ?? randomUUID();\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,\n initialState: executionContext.state ?? snapshot?.value ?? {},\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 resumePath: resume.steps?.[1] ? (snapshot?.suspendedPaths?.[resume.steps?.[1]] as any) : undefined,\n },\n outputOptions: { includeState: true },\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n executionContext.state = invokeResp.result.state;\n } else if (isTimeTravel) {\n const snapshot: any = (await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: step.id,\n runId: executionContext.runId,\n })) ?? { context: {} };\n const timeTravelParams = createTimeTravelExecutionParams({\n steps: timeTravel.steps.slice(1),\n inputData: timeTravel.inputData,\n resumeData: timeTravel.resumeData,\n context: (timeTravel.nestedStepResults?.[step.id] ?? {}) as any,\n nestedStepsContext: (timeTravel.nestedStepResults ?? {}) as any,\n snapshot,\n graph: step.buildExecutionGraph(),\n });\n const invokeResp = (await this.inngestStep.invoke(`workflow.${executionContext.workflowId}.step.${step.id}`, {\n function: step.getFunction(),\n data: {\n timeTravel: timeTravelParams,\n initialState: executionContext.state ?? {},\n runId: executionContext.runId,\n outputOptions: { includeState: true },\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n executionContext.state = invokeResp.result.state;\n } else {\n const invokeResp = (await this.inngestStep.invoke(`workflow.${executionContext.workflowId}.step.${step.id}`, {\n function: step.getFunction(),\n data: {\n inputData,\n initialState: executionContext.state ?? {},\n outputOptions: { includeState: true },\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n executionContext.state = invokeResp.result.state;\n }\n } catch (e) {\n // Nested workflow threw an error (likely from finalization step)\n // The error cause should contain the workflow result with runId\n const errorCause = (e as any)?.cause;\n\n // Try to extract runId from error cause or generate new one\n if (errorCause && typeof errorCause === 'object') {\n result = errorCause as WorkflowResult<any, any, any, any>;\n // The runId might be in the result's steps metadata\n runId = errorCause.runId || randomUUID();\n } else {\n // Fallback: if we can't get the result from error, construct a basic failed result\n runId = randomUUID();\n result = {\n status: 'failed',\n error: e instanceof Error ? e : new Error(String(e)),\n steps: {},\n input: inputData,\n } as WorkflowResult<any, any, any, any>;\n }\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: 'workflow-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 const suspendPath: string[] = [stepName, ...(stepResult?.suspendPayload?.__workflow_meta?.path ?? [])];\n executionContext.suspendedPaths[step.id] = executionContext.executionPath;\n\n await emitter.emit('watch', {\n type: 'workflow-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.payload,\n suspendPayload: {\n ...(stepResult as any)?.suspendPayload,\n __workflow_meta: { runId: runId, path: suspendPath },\n },\n },\n };\n }\n\n return {\n executionContext,\n result: {\n status: 'suspended',\n payload: {},\n },\n };\n }\n\n await emitter.emit('watch', {\n type: 'workflow-step-result',\n payload: {\n id: step.id,\n status: 'success',\n output: result?.result,\n },\n });\n\n await emitter.emit('watch', {\n type: 'workflow-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 {\n ...res.result,\n startedAt,\n endedAt: Date.now(),\n payload: inputData,\n resumedAt: resume?.steps[0] === step.id ? startedAt : undefined,\n resumePayload: resume?.steps[0] === step.id ? resume?.resumePayload : undefined,\n } as StepResult<any, any, any, any>;\n }\n}\n","import { ReadableStream } from 'node:stream/web';\nimport { subscribe } from '@inngest/realtime';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { TracingContext, TracingOptions } from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { WorkflowRunOutput, ChunkFrom } from '@mastra/core/stream';\nimport { createTimeTravelExecutionParams, Run } from '@mastra/core/workflows';\nimport type {\n ExecutionEngine,\n ExecutionGraph,\n SerializedStepFlowEntry,\n Step,\n StepWithComponent,\n StreamEvent,\n TimeTravelContext,\n WorkflowEngineType,\n WorkflowResult,\n WorkflowStreamEvent,\n} from '@mastra/core/workflows';\nimport type { Inngest } from 'inngest';\nimport type z from 'zod';\nimport type { InngestEngineType } from './types';\n\nexport class InngestRun<\n TEngineType = InngestEngineType,\n TSteps extends Step<string, any, any, any, any, any, any>[] = Step<string, any, any, any, any, any, any>[],\n TState extends z.ZodObject<any> = z.ZodObject<any>,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n> extends Run<TEngineType, TSteps, TState, TInput, TOutput> {\n private inngest: Inngest;\n serializedStepGraph: SerializedStepFlowEntry[];\n #mastra: Mastra;\n\n constructor(\n params: {\n workflowId: string;\n runId: string;\n resourceId?: 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 workflowSteps: Record<string, StepWithComponent>;\n workflowEngineType: WorkflowEngineType;\n validateInputs?: boolean;\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 const storage = this.#mastra?.getStorage();\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\n if (runs?.[0]?.status === 'Failed') {\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n return {\n output: { result: { steps: snapshot?.context, status: 'failed', error: runs?.[0]?.output?.message } },\n };\n }\n\n if (runs?.[0]?.status === 'Cancelled') {\n const snapshot = await 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 cancel() {\n const storage = this.#mastra?.getStorage();\n\n await this.inngest.send({\n name: `cancel.workflow.${this.workflowId}`,\n data: {\n runId: this.runId,\n },\n });\n\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n if (snapshot) {\n await storage?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n resourceId: this.resourceId,\n snapshot: {\n ...snapshot,\n status: 'canceled' as any,\n value: snapshot.value,\n },\n });\n }\n }\n\n async start(params: {\n inputData?: z.infer<TInput>;\n requestContext?: RequestContext;\n initialState?: z.infer<TState>;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n return this._start(params);\n }\n\n async _start({\n inputData,\n initialState,\n outputOptions,\n tracingOptions,\n format,\n requestContext,\n }: {\n inputData?: z.infer<TInput>;\n requestContext?: RequestContext;\n initialState?: z.infer<TState>;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n format?: 'legacy' | 'vnext' | undefined;\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n await this.#mastra.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n resourceId: this.resourceId,\n snapshot: {\n runId: this.runId,\n serializedStepGraph: this.serializedStepGraph,\n status: 'running',\n value: {},\n context: {} as any,\n activePaths: [],\n suspendedPaths: {},\n activeStepsPath: {},\n resumeLabels: {},\n waitingPaths: {},\n timestamp: Date.now(),\n },\n });\n\n const inputDataToUse = await this._validateInput(inputData);\n const initialStateToUse = await this._validateInitialState(initialState ?? {});\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n inputData: inputDataToUse,\n initialState: initialStateToUse,\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions,\n tracingOptions,\n format,\n requestContext: requestContext ? Object.fromEntries(requestContext.entries()) : {},\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\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 requestContext?: RequestContext;\n }): Promise<WorkflowResult<TState, TInput, 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 requestContext?: RequestContext;\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const storage = this.#mastra?.getStorage();\n\n let steps: string[] = [];\n if (typeof params.step === 'string') {\n steps = params.step.split('.');\n } else {\n steps = (Array.isArray(params.step) ? params.step : [params.step]).map(step =>\n typeof step === 'string' ? step : step?.id,\n );\n }\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n\n const suspendedStep = this.workflowSteps[steps?.[0] ?? ''];\n\n const resumeDataToUse = await this._validateResumeData(params.resumeData, suspendedStep);\n\n // Merge persisted requestContext from snapshot with any new values from params\n const persistedRequestContext = (snapshot as any)?.requestContext ?? {};\n const newRequestContext = params.requestContext ? Object.fromEntries(params.requestContext.entries()) : {};\n const mergedRequestContext = { ...persistedRequestContext, ...newRequestContext };\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n inputData: resumeDataToUse,\n initialState: snapshot?.value ?? {},\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: resumeDataToUse,\n resumePath: steps?.[0] ? (snapshot?.suspendedPaths?.[steps?.[0]] as any) : undefined,\n },\n requestContext: mergedRequestContext,\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 async timeTravel<TInputSchema extends z.ZodType<any>>(params: {\n inputData?: z.infer<TInputSchema>;\n resumeData?: any;\n initialState?: z.infer<TState>;\n step:\n | Step<string, any, TInputSchema, any, any>\n | [...Step<string, any, any, any, any>[], Step<string, any, TInputSchema, any, any>]\n | string\n | string[];\n context?: TimeTravelContext<any, any, any, any>;\n nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const p = this._timeTravel(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 _timeTravel<TInputSchema extends z.ZodType<any>>(params: {\n inputData?: z.infer<TInputSchema>;\n resumeData?: any;\n initialState?: z.infer<TState>;\n step:\n | Step<string, any, TInputSchema, any, any>\n | [...Step<string, any, any, any, any>[], Step<string, any, TInputSchema, any, any>]\n | string\n | string[];\n context?: TimeTravelContext<any, any, any, any>;\n nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n if (!params.step || (Array.isArray(params.step) && params.step?.length === 0)) {\n throw new Error('Step is required and must be a valid step or array of steps');\n }\n\n let steps: string[] = [];\n if (typeof params.step === 'string') {\n steps = params.step.split('.');\n } else {\n steps = (Array.isArray(params.step) ? params.step : [params.step]).map(step =>\n typeof step === 'string' ? step : step?.id,\n );\n }\n\n if (steps.length === 0) {\n throw new Error('No steps provided to timeTravel');\n }\n\n const storage = this.#mastra?.getStorage();\n\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n\n if (!snapshot) {\n await storage?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n resourceId: this.resourceId,\n snapshot: {\n runId: this.runId,\n serializedStepGraph: this.serializedStepGraph,\n status: 'pending',\n value: {},\n context: {} as any,\n activePaths: [],\n suspendedPaths: {},\n activeStepsPath: {},\n resumeLabels: {},\n waitingPaths: {},\n timestamp: Date.now(),\n },\n });\n }\n\n if (snapshot?.status === 'running') {\n throw new Error('This workflow run is still running, cannot time travel');\n }\n\n let inputDataToUse = params.inputData;\n\n if (inputDataToUse && steps.length === 1) {\n inputDataToUse = await this._validateTimetravelInputData(params.inputData, this.workflowSteps[steps[0]!]!);\n }\n\n const timeTravelData = createTimeTravelExecutionParams({\n steps,\n inputData: inputDataToUse,\n resumeData: params.resumeData,\n context: params.context,\n nestedStepsContext: params.nestedStepsContext,\n snapshot: (snapshot ?? { context: {} }) as any,\n graph: this.executionGraph,\n initialState: params.initialState,\n });\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n initialState: timeTravelData.state,\n runId: this.runId,\n workflowId: this.workflowId,\n stepResults: timeTravelData.stepResults,\n timeTravel: timeTravelData,\n tracingOptions: params.tracingOptions,\n outputOptions: params.outputOptions,\n requestContext: params.requestContext ? Object.fromEntries(params.requestContext.entries()) : {},\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: WorkflowStreamEvent) => void): () => void {\n let active = true;\n const streamPromise = subscribe(\n {\n channel: `workflow:${this.workflowId}:${this.runId}`,\n topics: ['watch'],\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 streamLegacy({ inputData, requestContext }: { inputData?: z.infer<TInput>; requestContext?: RequestContext } = {}): {\n stream: ReadableStream<StreamEvent>;\n getWorkflowState: () => Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>;\n } {\n const { readable, writable } = new TransformStream<StreamEvent, StreamEvent>();\n\n const writer = writable.getWriter();\n void writer.write({\n // @ts-ignore\n type: 'start',\n // @ts-ignore\n payload: { runId: this.runId },\n });\n\n const unwatch = this.watch(async event => {\n try {\n const e: any = {\n ...event,\n type: event.type.replace('workflow-', ''),\n };\n\n if (e.type === 'step-output') {\n e.type = e.payload.output.type;\n e.payload = e.payload.output.payload;\n }\n // watch events are data stream events, so we need to cast them to the correct type\n await writer.write(e as any);\n } catch {}\n });\n\n this.closeStreamAction = async () => {\n await writer.write({\n type: 'finish',\n // @ts-ignore\n payload: { runId: this.runId },\n });\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, requestContext, format: 'legacy' }).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 stream({\n inputData,\n requestContext,\n tracingOptions,\n closeOnSuspend = true,\n initialState,\n outputOptions,\n }: {\n inputData?: z.input<TInput>;\n requestContext?: RequestContext;\n tracingContext?: TracingContext;\n tracingOptions?: TracingOptions;\n closeOnSuspend?: boolean;\n initialState?: z.input<TState>;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n } = {}): ReturnType<Run<InngestEngineType, TSteps, TState, TInput, TOutput>['stream']> {\n if (this.closeStreamAction && this.streamOutput) {\n return this.streamOutput;\n }\n\n this.closeStreamAction = async () => {};\n\n const self = this;\n const stream = new ReadableStream<WorkflowStreamEvent>({\n async start(controller) {\n // TODO: fix this, watch doesn't have a type\n // @ts-ignore\n const unwatch = self.watch(async ({ type, from = ChunkFrom.WORKFLOW, payload }) => {\n controller.enqueue({\n type,\n runId: self.runId,\n from,\n payload: {\n stepName: (payload as unknown as { id: string })?.id,\n ...payload,\n },\n } as WorkflowStreamEvent);\n });\n\n self.closeStreamAction = async () => {\n unwatch();\n\n try {\n await controller.close();\n } catch (err) {\n console.error('Error closing stream:', err);\n }\n };\n\n const executionResultsPromise = self._start({\n inputData,\n requestContext,\n // tracingContext, // We are not able to pass a reference to a span here, what to do?\n initialState,\n tracingOptions,\n outputOptions,\n format: 'vnext',\n });\n let executionResults;\n try {\n executionResults = await executionResultsPromise;\n\n if (closeOnSuspend) {\n // always close stream, even if the workflow is suspended\n // this will trigger a finish event with workflow status set to suspended\n self.closeStreamAction?.().catch(() => {});\n } else if (executionResults.status !== 'suspended') {\n self.closeStreamAction?.().catch(() => {});\n }\n if (self.streamOutput) {\n self.streamOutput.updateResults(\n executionResults as unknown as WorkflowResult<TState, TInput, TOutput, TSteps>,\n );\n }\n } catch (err) {\n self.streamOutput?.rejectResults(err as unknown as Error);\n self.closeStreamAction?.().catch(() => {});\n }\n },\n });\n\n this.streamOutput = new WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>({\n runId: this.runId,\n workflowId: this.workflowId,\n stream,\n });\n\n return this.streamOutput;\n }\n\n streamVNext(\n args: {\n inputData?: z.input<TInput>;\n requestContext?: RequestContext;\n tracingContext?: TracingContext;\n tracingOptions?: TracingOptions;\n closeOnSuspend?: boolean;\n initialState?: z.input<TState>;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n } = {},\n ): ReturnType<Run<InngestEngineType, TSteps, TState, TInput, TOutput>['stream']> {\n return this.stream(args);\n }\n\n timeTravelStream<TInputSchema extends z.ZodType<any>>({\n inputData,\n resumeData,\n initialState,\n step,\n context,\n nestedStepsContext,\n requestContext,\n tracingOptions,\n outputOptions,\n }: {\n inputData?: z.input<TInputSchema>;\n initialState?: z.input<TState>;\n resumeData?: any;\n step:\n | Step<string, any, TInputSchema, any, any, any, TEngineType>\n | [\n ...Step<string, any, any, any, any, any, TEngineType>[],\n Step<string, any, TInputSchema, any, any, any, TEngineType>,\n ]\n | string\n | string[];\n context?: TimeTravelContext<any, any, any, any>;\n nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }) {\n this.closeStreamAction = async () => {};\n\n const self = this;\n const stream = new ReadableStream<WorkflowStreamEvent>({\n async start(controller) {\n // TODO: fix this, watch doesn't have a type\n // @ts-ignore\n const unwatch = self.watch(async ({ type, from = ChunkFrom.WORKFLOW, payload }) => {\n controller.enqueue({\n type,\n runId: self.runId,\n from,\n payload: {\n stepName: (payload as unknown as { id: string })?.id,\n ...payload,\n },\n } as WorkflowStreamEvent);\n });\n\n self.closeStreamAction = async () => {\n unwatch();\n\n try {\n controller.close();\n } catch (err) {\n console.error('Error closing stream:', err);\n }\n };\n const executionResultsPromise = self._timeTravel({\n inputData,\n step,\n context,\n nestedStepsContext,\n resumeData,\n initialState,\n requestContext,\n tracingOptions,\n outputOptions,\n });\n\n self.executionResults = executionResultsPromise;\n\n let executionResults;\n try {\n executionResults = await executionResultsPromise;\n self.closeStreamAction?.().catch(() => {});\n\n if (self.streamOutput) {\n self.streamOutput.updateResults(executionResults);\n }\n } catch (err) {\n self.streamOutput?.rejectResults(err as unknown as Error);\n self.closeStreamAction?.().catch(() => {});\n }\n },\n });\n\n this.streamOutput = new WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>({\n runId: this.runId,\n workflowId: this.workflowId,\n stream,\n });\n\n return this.streamOutput;\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport { WritableStream } from 'node:stream/web';\nimport { RequestContext } from '@mastra/core/di';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { WorkflowRun, WorkflowRuns } from '@mastra/core/storage';\nimport { Workflow } from '@mastra/core/workflows';\nimport type {\n Step,\n WorkflowConfig,\n StepFlowEntry,\n WorkflowResult,\n WorkflowStreamEvent,\n Run,\n} from '@mastra/core/workflows';\nimport { NonRetriableError } from 'inngest';\nimport type { Inngest } from 'inngest';\nimport type { z } from 'zod';\nimport { InngestExecutionEngine } from './execution-engine';\nimport { InngestRun } from './run';\nimport type { InngestEngineType, InngestFlowControlConfig, InngestWorkflowConfig } from './types';\n\nexport class InngestWorkflow<\n TEngineType = InngestEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\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, TState, TInput, TOutput, TPrevSchema> {\n #mastra: Mastra;\n public inngest: Inngest;\n\n private function: ReturnType<Inngest['createFunction']> | undefined;\n private readonly flowControlConfig?: InngestFlowControlConfig;\n\n constructor(params: InngestWorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>, inngest: Inngest) {\n const { concurrency, rateLimit, throttle, debounce, priority, ...workflowParams } = params;\n\n super(workflowParams as WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>);\n\n this.engineType = 'inngest';\n\n const flowControlEntries = Object.entries({ concurrency, rateLimit, throttle, debounce, priority }).filter(\n ([_, value]) => value !== undefined,\n );\n\n this.flowControlConfig = flowControlEntries.length > 0 ? Object.fromEntries(flowControlEntries) : undefined;\n\n this.#mastra = params.mastra!;\n this.inngest = inngest;\n }\n\n async listWorkflowRuns(args?: {\n fromDate?: Date;\n toDate?: Date;\n perPage?: number | false;\n page?: 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.listWorkflowRuns({ 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 __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 async createRun(options?: {\n runId?: string;\n resourceId?: string;\n }): Promise<Run<TEngineType, TSteps, TState, TInput, TOutput>> {\n const runIdToUse = options?.runId || randomUUID();\n\n // Return a new Run instance with object parameters\n const run: Run<TEngineType, TSteps, TState, TInput, TOutput> =\n this.runs.get(runIdToUse) ??\n new InngestRun(\n {\n workflowId: this.id,\n runId: runIdToUse,\n resourceId: options?.resourceId,\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 workflowSteps: this.steps,\n workflowEngineType: this.engineType,\n validateInputs: this.options.validateInputs,\n },\n this.inngest,\n );\n\n this.runs.set(runIdToUse, run);\n\n const shouldPersistSnapshot = this.options.shouldPersistSnapshot({\n workflowStatus: run.workflowRunStatus,\n stepResults: {},\n });\n\n const workflowSnapshotInStorage = await this.getWorkflowRunExecutionResult(runIdToUse, false);\n\n if (!workflowSnapshotInStorage && shouldPersistSnapshot) {\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.id,\n runId: runIdToUse,\n resourceId: options?.resourceId,\n snapshot: {\n runId: runIdToUse,\n status: 'pending',\n value: {},\n context: {},\n activePaths: [],\n activeStepsPath: {},\n waitingPaths: {},\n serializedStepGraph: this.serializedStepGraph,\n suspendedPaths: {},\n resumeLabels: {},\n result: undefined,\n error: undefined,\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 retries: Math.min(this.retryConfig?.attempts ?? 0, 20) as\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | 16\n | 17\n | 18\n | 19\n | 20,\n cancelOn: [{ event: `cancel.workflow.${this.id}` }],\n // Spread flow control configuration\n ...this.flowControlConfig,\n },\n { event: `workflow.${this.id}` },\n async ({ event, step, attempt, publish }) => {\n let { inputData, initialState, runId, resourceId, resume, outputOptions, format, timeTravel } = 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, this.options);\n const result = await engine.execute<\n z.infer<TState>,\n z.infer<TInput>,\n WorkflowResult<TState, TInput, TOutput, TSteps>\n >({\n workflowId: this.id,\n runId,\n resourceId,\n graph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n input: inputData,\n initialState,\n emitter,\n retryConfig: this.retryConfig,\n requestContext: new RequestContext(Object.entries(event.data.requestContext ?? {})),\n resume,\n timeTravel,\n format,\n abortController: new AbortController(),\n // currentSpan: undefined, // TODO: Pass actual parent Span from workflow execution context\n outputOptions,\n writableStream: new WritableStream<WorkflowStreamEvent>({\n write(chunk) {\n void emitter.emit('watch', chunk).catch(() => {});\n },\n }),\n });\n\n // Final step to check workflow status and throw NonRetriableError if failed\n // This is needed to ensure that the Inngest workflow run is marked as failed instead of success\n await step.run(`workflow.${this.id}.finalize`, async () => {\n if (result.status === 'failed') {\n throw new NonRetriableError(`Workflow failed`, {\n cause: result,\n });\n }\n return result;\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","import type { Mastra } from '@mastra/core/mastra';\nimport type { Inngest, InngestFunction, RegisterOptions } from 'inngest';\nimport { serve as inngestServe } from 'inngest/hono';\nimport { InngestWorkflow } from './workflow';\n\nexport function serve({\n mastra,\n inngest,\n functions: userFunctions = [],\n registerOptions,\n}: {\n mastra: Mastra;\n inngest: Inngest;\n /**\n * Optional array of additional functions to serve and register with Inngest.\n */\n functions?: InngestFunction.Like[];\n registerOptions?: RegisterOptions;\n}): ReturnType<typeof inngestServe> {\n const wfs = mastra.listWorkflows();\n const workflowFunctions = 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\n return inngestServe({\n ...registerOptions,\n client: inngest,\n functions: [...workflowFunctions, ...userFunctions],\n });\n}\n","import type { Step, WorkflowConfig } from '@mastra/core/workflows';\nimport type { Inngest } from 'inngest';\nimport type z from 'zod';\n\n// Extract Inngest's native flow control configuration types\nexport type InngestCreateFunctionConfig = Parameters<Inngest['createFunction']>[0];\n\n// Extract specific flow control properties (excluding batching)\nexport type InngestFlowControlConfig = Pick<\n InngestCreateFunctionConfig,\n 'concurrency' | 'rateLimit' | 'throttle' | 'debounce' | 'priority'\n>;\n\n// Union type for Inngest workflows with flow control\nexport type InngestWorkflowConfig<\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\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, any>[] = Step<string, any, any, any, any, any>[],\n> = WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps> & InngestFlowControlConfig;\n\n// Compile-time compatibility assertion\nexport type _AssertInngestCompatibility =\n InngestFlowControlConfig extends Pick<Parameters<Inngest['createFunction']>[0], keyof InngestFlowControlConfig>\n ? true\n : never;\nexport const _compatibilityCheck: _AssertInngestCompatibility = true;\n\nexport type InngestEngineType = {\n step: any;\n};\n","import type { ReadableStream } from 'node:stream/web';\nimport type { Agent } from '@mastra/core/agent';\nimport type { ToolExecutionContext } from '@mastra/core/tools';\nimport { Tool } from '@mastra/core/tools';\nimport type { Step, AgentStepOptions, StepParams, ToolStep } from '@mastra/core/workflows';\nimport { Workflow } from '@mastra/core/workflows';\nimport { EMITTER_SYMBOL, STREAM_FORMAT_SYMBOL } from '@mastra/core/workflows/_constants';\nimport type { Inngest } from 'inngest';\nimport { z } from 'zod';\nimport type { InngestEngineType, InngestWorkflowConfig } from './types';\nimport { InngestWorkflow } from './workflow';\n\nexport * from './workflow';\nexport * from './execution-engine';\nexport * from './run';\nexport * from './serve';\nexport * from './types';\n\nfunction isAgent(params: any): params is Agent<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\nfunction isInngestWorkflow(params: any): params is InngestWorkflow {\n return params instanceof InngestWorkflow;\n}\n\nexport function createStep<\n TStepId extends string,\n TState extends z.ZodObject<any>,\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: StepParams<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema>,\n): Step<TStepId, TState, 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>,\n agentOptions?: AgentStepOptions,\n): Step<TStepId, any, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType>;\n\nexport function createStep<\n TSchemaIn extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSchemaOut extends z.ZodType<any>,\n TContext extends ToolExecutionContext<TSuspendSchema, TResumeSchema>,\n>(\n tool: ToolStep<TSchemaIn, TSuspendSchema, TResumeSchema, TSchemaOut, TContext>,\n): Step<string, any, TSchemaIn, TSchemaOut, z.ZodType<any>, z.ZodType<any>, InngestEngineType>;\nexport function createStep<\n TStepId extends string,\n TState extends z.ZodObject<any>,\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 | StepParams<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema>\n | Agent<any, any>\n | ToolStep<TStepInput, TSuspendSchema, TResumeSchema, TStepOutput, any>,\n agentOptions?: AgentStepOptions,\n): Step<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType> {\n // Issue #9965: Preserve InngestWorkflow identity when passed to createStep\n // This ensures nested workflows in foreach are properly detected by isNestedWorkflowStep()\n if (isInngestWorkflow(params)) {\n return params as unknown as Step<\n TStepId,\n TState,\n TStepInput,\n TStepOutput,\n TResumeSchema,\n TSuspendSchema,\n InngestEngineType\n >;\n }\n\n if (isAgent(params)) {\n return {\n id: params.name as TStepId,\n description: params.getDescription(),\n inputSchema: z.object({\n prompt: z.string(),\n // resourceId: z.string().optional(),\n // threadId: z.string().optional(),\n }) as unknown as TStepInput,\n outputSchema: z.object({\n text: z.string(),\n }) as unknown as TStepOutput,\n execute: async ({\n inputData,\n [EMITTER_SYMBOL]: emitter,\n [STREAM_FORMAT_SYMBOL]: streamFormat,\n requestContext,\n tracingContext,\n abortSignal,\n abort,\n writer,\n }) => {\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\n let stream: ReadableStream<any>;\n\n if ((await params.getModel()).specificationVersion === 'v1') {\n const { fullStream } = await params.streamLegacy(inputData.prompt, {\n ...(agentOptions ?? {}),\n // resourceId: inputData.resourceId,\n // threadId: inputData.threadId,\n requestContext,\n tracingContext,\n onFinish: result => {\n streamPromise.resolve(result.text);\n void agentOptions?.onFinish?.(result);\n },\n abortSignal,\n });\n stream = fullStream as any;\n } else {\n const modelOutput = await params.stream(inputData.prompt, {\n ...(agentOptions ?? {}),\n requestContext,\n tracingContext,\n onFinish: result => {\n streamPromise.resolve(result.text);\n void agentOptions?.onFinish?.(result);\n },\n abortSignal,\n });\n\n stream = modelOutput.fullStream;\n }\n\n if (streamFormat === 'legacy') {\n await emitter.emit('watch', {\n type: 'tool-call-streaming-start',\n ...(toolData ?? {}),\n });\n for await (const chunk of stream) {\n if (chunk.type === 'text-delta') {\n await emitter.emit('watch', {\n type: 'tool-call-delta',\n ...(toolData ?? {}),\n argsTextDelta: chunk.textDelta,\n });\n }\n }\n await emitter.emit('watch', {\n type: 'tool-call-streaming-finish',\n ...(toolData ?? {}),\n });\n } else {\n for await (const chunk of stream) {\n await writer.write(chunk as any);\n }\n }\n\n if (abortSignal.aborted) {\n return abort();\n }\n\n return {\n text: await streamPromise.promise,\n };\n },\n component: params.component,\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 id: params.id as unknown as TStepId,\n description: params.description,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n suspendSchema: params.suspendSchema,\n resumeSchema: params.resumeSchema,\n execute: async ({\n inputData,\n mastra,\n requestContext,\n tracingContext,\n suspend,\n resumeData,\n runId,\n workflowId,\n state,\n setState,\n }) => {\n // BREAKING CHANGE v1.0: Pass raw input as first arg, context as second\n const toolContext = {\n mastra,\n requestContext,\n tracingContext,\n workflow: {\n runId,\n resumeData,\n suspend,\n workflowId,\n state,\n setState,\n },\n };\n return params.execute(inputData, toolContext);\n },\n component: 'TOOL',\n };\n }\n\n return {\n id: params.id as TStepId,\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 TState extends z.ZodObject<any> = z.ZodObject<any>,\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, any, InngestEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n any,\n InngestEngineType\n >[],\n >(params: InngestWorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>) {\n return new InngestWorkflow<InngestEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TInput>(\n params,\n inngest,\n );\n },\n createStep,\n cloneStep<TStepId extends string>(\n step: Step<TStepId, any, any, any, any, any, InngestEngineType>,\n opts: { id: TStepId },\n ): Step<TStepId, any, any, any, any, any, InngestEngineType> {\n return {\n id: opts.id,\n description: step.description,\n inputSchema: step.inputSchema,\n outputSchema: step.outputSchema,\n resumeSchema: step.resumeSchema,\n suspendSchema: step.suspendSchema,\n stateSchema: step.stateSchema,\n execute: step.execute,\n retries: step.retries,\n scorers: step.scorers,\n component: step.component,\n };\n },\n cloneWorkflow<\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\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, any, InngestEngineType>[] = Step<\n string,\n any,\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, TState, TInput, TOutput, TPrevSchema>,\n opts: { id: TWorkflowId },\n ): Workflow<InngestEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema> {\n const wf: Workflow<InngestEngineType, TSteps, TWorkflowId, TState, 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 options: workflow.options,\n });\n\n wf.setStepFlow(workflow.stepGraph);\n wf.commit();\n return wf;\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/execution-engine.ts","../src/run.ts","../src/workflow.ts","../src/serve.ts","../src/types.ts","../src/index.ts"],"names":["createTimeTravelExecutionParams","randomUUID","event","inngestServe","Workflow"],"mappings":"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","file":"index.js","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { DefaultExecutionEngine, createTimeTravelExecutionParams } from '@mastra/core/workflows';\nimport type {\n ExecutionContext,\n Step,\n StepResult,\n StepFailure,\n Emitter,\n ExecutionEngineOptions,\n TimeTravelExecutionParams,\n WorkflowResult,\n} from '@mastra/core/workflows';\nimport { RetryAfterError } from 'inngest';\nimport type { Inngest, BaseContext } from 'inngest';\nimport { InngestWorkflow } from './workflow';\n\nexport class InngestExecutionEngine extends DefaultExecutionEngine {\n private inngestStep: BaseContext<Inngest>['step'];\n private inngestAttempts: number;\n\n constructor(\n mastra: Mastra,\n inngestStep: BaseContext<Inngest>['step'],\n inngestAttempts: number = 0,\n options: ExecutionEngineOptions,\n ) {\n super({ mastra, options });\n this.inngestStep = inngestStep;\n this.inngestAttempts = inngestAttempts;\n }\n\n // =============================================================================\n // Hook Overrides\n // =============================================================================\n\n /**\n * Format errors with stack traces for better debugging in Inngest\n */\n protected formatResultError(error: Error | string | undefined, lastOutput: StepResult<any, any, any, any>): string {\n if (error instanceof Error) {\n return error.stack ?? error.message;\n }\n const outputError = (lastOutput as StepFailure<any, any, any, any>)?.error;\n if (outputError instanceof Error) {\n return outputError.message;\n }\n return outputError ?? (error as string) ?? 'Unknown error';\n }\n\n /**\n * Detect InngestWorkflow instances for special nested workflow handling\n */\n isNestedWorkflowStep(step: Step<any, any, any>): boolean {\n return step instanceof InngestWorkflow;\n }\n\n /**\n * Inngest requires requestContext serialization for memoization.\n * When steps are replayed, the original function doesn't re-execute,\n * so requestContext modifications must be captured and restored.\n */\n requiresDurableContextSerialization(): boolean {\n return true;\n }\n\n /**\n * Execute a step with retry logic for Inngest.\n * Retries are handled via step-level retry (RetryAfterError thrown INSIDE step.run()).\n * After retries exhausted, error propagates here and we return a failed result.\n */\n async executeStepWithRetry<T>(\n stepId: string,\n runStep: () => Promise<T>,\n params: {\n retries: number;\n delay: number;\n stepSpan?: any;\n workflowId: string;\n runId: string;\n },\n ): Promise<{ ok: true; result: T } | { ok: false; error: { status: 'failed'; error: string; endedAt: number } }> {\n try {\n // Pass retry config to wrapDurableOperation so RetryAfterError is thrown INSIDE step.run()\n const result = await this.wrapDurableOperation(stepId, runStep, { delay: params.delay });\n return { ok: true, result };\n } catch (e) {\n // After step-level retries exhausted, extract failure from error cause\n const cause = (e as any)?.cause;\n if (cause?.status === 'failed') {\n params.stepSpan?.error({\n error: e,\n attributes: { status: 'failed' },\n });\n return { ok: false, error: cause };\n }\n\n // Fallback for other errors\n const errorMessage = e instanceof Error ? e.message : String(e);\n params.stepSpan?.error({\n error: e,\n attributes: { status: 'failed' },\n });\n return {\n ok: false,\n error: {\n status: 'failed',\n error: `Error: ${errorMessage}`,\n endedAt: Date.now(),\n },\n };\n }\n }\n\n /**\n * Use Inngest's sleep primitive for durability\n */\n async executeSleepDuration(duration: number, sleepId: string, workflowId: string): Promise<void> {\n await this.inngestStep.sleep(`workflow.${workflowId}.sleep.${sleepId}`, duration < 0 ? 0 : duration);\n }\n\n /**\n * Use Inngest's sleepUntil primitive for durability\n */\n async executeSleepUntilDate(date: Date, sleepUntilId: string, workflowId: string): Promise<void> {\n await this.inngestStep.sleepUntil(`workflow.${workflowId}.sleepUntil.${sleepUntilId}`, date);\n }\n\n /**\n * Wrap durable operations in Inngest step.run() for durability.\n * If retryConfig is provided, throws RetryAfterError INSIDE step.run() to trigger\n * Inngest's step-level retry mechanism (not function-level retry).\n */\n async wrapDurableOperation<T>(\n operationId: string,\n operationFn: () => Promise<T>,\n retryConfig?: { delay: number },\n ): Promise<T> {\n return this.inngestStep.run(operationId, async () => {\n try {\n return await operationFn();\n } catch (e) {\n if (retryConfig) {\n // Throw RetryAfterError INSIDE step.run() to trigger step-level retry\n const errorMessage = e instanceof Error ? e.message : String(e);\n throw new RetryAfterError(errorMessage, retryConfig.delay, {\n cause: {\n status: 'failed',\n error: `Error: ${errorMessage}`,\n endedAt: Date.now(),\n },\n });\n }\n throw e; // Re-throw if no retry config\n }\n }) as Promise<T>;\n }\n\n /**\n * Provide Inngest step primitive in engine context\n */\n getEngineContext(): Record<string, any> {\n return { step: this.inngestStep };\n }\n\n /**\n * Execute nested InngestWorkflow using inngestStep.invoke() for durability.\n * This MUST be called directly (not inside step.run()) due to Inngest constraints.\n */\n async executeWorkflowStep(params: {\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 timeTravel?: TimeTravelExecutionParams;\n prevOutput: any;\n inputData: any;\n emitter: Emitter;\n startedAt: number;\n }): Promise<StepResult<any, any, any, any> | null> {\n // Only handle InngestWorkflow instances\n if (!(params.step instanceof InngestWorkflow)) {\n return null;\n }\n\n const { step, stepResults, executionContext, resume, timeTravel, prevOutput, inputData, emitter, startedAt } =\n params;\n\n const isResume = !!resume?.steps?.length;\n let result: WorkflowResult<any, any, any, any>;\n let runId: string;\n\n const isTimeTravel = !!(timeTravel && timeTravel.steps?.length > 1 && timeTravel.steps[0] === step.id);\n\n try {\n if (isResume) {\n runId = stepResults[resume?.steps?.[0] ?? '']?.suspendPayload?.__workflow_meta?.runId ?? randomUUID();\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,\n initialState: executionContext.state ?? snapshot?.value ?? {},\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 resumePath: resume.steps?.[1] ? (snapshot?.suspendedPaths?.[resume.steps?.[1]] as any) : undefined,\n },\n outputOptions: { includeState: true },\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n executionContext.state = invokeResp.result.state;\n } else if (isTimeTravel) {\n const snapshot: any = (await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: step.id,\n runId: executionContext.runId,\n })) ?? { context: {} };\n const timeTravelParams = createTimeTravelExecutionParams({\n steps: timeTravel.steps.slice(1),\n inputData: timeTravel.inputData,\n resumeData: timeTravel.resumeData,\n context: (timeTravel.nestedStepResults?.[step.id] ?? {}) as any,\n nestedStepsContext: (timeTravel.nestedStepResults ?? {}) as any,\n snapshot,\n graph: step.buildExecutionGraph(),\n });\n const invokeResp = (await this.inngestStep.invoke(`workflow.${executionContext.workflowId}.step.${step.id}`, {\n function: step.getFunction(),\n data: {\n timeTravel: timeTravelParams,\n initialState: executionContext.state ?? {},\n runId: executionContext.runId,\n outputOptions: { includeState: true },\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n executionContext.state = invokeResp.result.state;\n } else {\n const invokeResp = (await this.inngestStep.invoke(`workflow.${executionContext.workflowId}.step.${step.id}`, {\n function: step.getFunction(),\n data: {\n inputData,\n initialState: executionContext.state ?? {},\n outputOptions: { includeState: true },\n },\n })) as any;\n result = invokeResp.result;\n runId = invokeResp.runId;\n executionContext.state = invokeResp.result.state;\n }\n } catch (e) {\n // Nested workflow threw an error (likely from finalization step)\n // The error cause should contain the workflow result with runId\n const errorCause = (e as any)?.cause;\n\n // Try to extract runId from error cause or generate new one\n if (errorCause && typeof errorCause === 'object') {\n result = errorCause as WorkflowResult<any, any, any, any>;\n // The runId might be in the result's steps metadata\n runId = errorCause.runId || randomUUID();\n } else {\n // Fallback: if we can't get the result from error, construct a basic failed result\n runId = randomUUID();\n result = {\n status: 'failed',\n error: e instanceof Error ? e : new Error(String(e)),\n steps: {},\n input: inputData,\n } as WorkflowResult<any, any, any, any>;\n }\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: 'workflow-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 const suspendPath: string[] = [stepName, ...(stepResult?.suspendPayload?.__workflow_meta?.path ?? [])];\n executionContext.suspendedPaths[step.id] = executionContext.executionPath;\n\n await emitter.emit('watch', {\n type: 'workflow-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.payload,\n suspendPayload: {\n ...(stepResult as any)?.suspendPayload,\n __workflow_meta: { runId: runId, path: suspendPath },\n },\n },\n };\n }\n\n return {\n executionContext,\n result: {\n status: 'suspended',\n payload: {},\n },\n };\n } else if (result.status === 'tripwire') {\n await emitter.emit('watch', {\n type: 'workflow-step-result',\n payload: {\n id: step.id,\n status: 'tripwire',\n error: result?.tripwire?.reason,\n payload: prevOutput,\n },\n });\n\n return {\n executionContext,\n result: {\n status: 'tripwire',\n tripwire: result?.tripwire,\n },\n };\n }\n\n // Status is 'success'\n await emitter.emit('watch', {\n type: 'workflow-step-result',\n payload: {\n id: step.id,\n status: 'success',\n output: result?.result,\n },\n });\n\n await emitter.emit('watch', {\n type: 'workflow-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 {\n ...res.result,\n startedAt,\n endedAt: Date.now(),\n payload: inputData,\n resumedAt: resume?.steps[0] === step.id ? startedAt : undefined,\n resumePayload: resume?.steps[0] === step.id ? resume?.resumePayload : undefined,\n } as StepResult<any, any, any, any>;\n }\n}\n","import { ReadableStream } from 'node:stream/web';\nimport { subscribe } from '@inngest/realtime';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { TracingContext, TracingOptions } from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { WorkflowRunOutput, ChunkFrom } from '@mastra/core/stream';\nimport { createTimeTravelExecutionParams, Run } from '@mastra/core/workflows';\nimport type {\n ExecutionEngine,\n ExecutionGraph,\n SerializedStepFlowEntry,\n Step,\n StepWithComponent,\n StreamEvent,\n TimeTravelContext,\n WorkflowEngineType,\n WorkflowResult,\n WorkflowStreamEvent,\n} from '@mastra/core/workflows';\nimport type { Inngest } from 'inngest';\nimport type z from 'zod';\nimport type { InngestEngineType } from './types';\n\nexport class InngestRun<\n TEngineType = InngestEngineType,\n TSteps extends Step<string, any, any, any, any, any, any>[] = Step<string, any, any, any, any, any, any>[],\n TState extends z.ZodObject<any> = z.ZodObject<any>,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n> extends Run<TEngineType, TSteps, TState, TInput, TOutput> {\n private inngest: Inngest;\n serializedStepGraph: SerializedStepFlowEntry[];\n #mastra: Mastra;\n\n constructor(\n params: {\n workflowId: string;\n runId: string;\n resourceId?: 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 workflowSteps: Record<string, StepWithComponent>;\n workflowEngineType: WorkflowEngineType;\n validateInputs?: boolean;\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 const storage = this.#mastra?.getStorage();\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\n if (runs?.[0]?.status === 'Failed') {\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n return {\n output: { result: { steps: snapshot?.context, status: 'failed', error: runs?.[0]?.output?.message } },\n };\n }\n\n if (runs?.[0]?.status === 'Cancelled') {\n const snapshot = await 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 cancel() {\n const storage = this.#mastra?.getStorage();\n\n await this.inngest.send({\n name: `cancel.workflow.${this.workflowId}`,\n data: {\n runId: this.runId,\n },\n });\n\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n if (snapshot) {\n await storage?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n resourceId: this.resourceId,\n snapshot: {\n ...snapshot,\n status: 'canceled' as any,\n value: snapshot.value,\n },\n });\n }\n }\n\n async start(params: {\n inputData?: z.infer<TInput>;\n requestContext?: RequestContext;\n initialState?: z.infer<TState>;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n return this._start(params);\n }\n\n async _start({\n inputData,\n initialState,\n outputOptions,\n tracingOptions,\n format,\n requestContext,\n }: {\n inputData?: z.infer<TInput>;\n requestContext?: RequestContext;\n initialState?: z.infer<TState>;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n format?: 'legacy' | 'vnext' | undefined;\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n await this.#mastra.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n resourceId: this.resourceId,\n snapshot: {\n runId: this.runId,\n serializedStepGraph: this.serializedStepGraph,\n status: 'running',\n value: {},\n context: {} as any,\n activePaths: [],\n suspendedPaths: {},\n activeStepsPath: {},\n resumeLabels: {},\n waitingPaths: {},\n timestamp: Date.now(),\n },\n });\n\n const inputDataToUse = await this._validateInput(inputData);\n const initialStateToUse = await this._validateInitialState(initialState ?? {});\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n inputData: inputDataToUse,\n initialState: initialStateToUse,\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions,\n tracingOptions,\n format,\n requestContext: requestContext ? Object.fromEntries(requestContext.entries()) : {},\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\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 requestContext?: RequestContext;\n }): Promise<WorkflowResult<TState, TInput, 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 requestContext?: RequestContext;\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const storage = this.#mastra?.getStorage();\n\n let steps: string[] = [];\n if (typeof params.step === 'string') {\n steps = params.step.split('.');\n } else {\n steps = (Array.isArray(params.step) ? params.step : [params.step]).map(step =>\n typeof step === 'string' ? step : step?.id,\n );\n }\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n\n const suspendedStep = this.workflowSteps[steps?.[0] ?? ''];\n\n const resumeDataToUse = await this._validateResumeData(params.resumeData, suspendedStep);\n\n // Merge persisted requestContext from snapshot with any new values from params\n const persistedRequestContext = (snapshot as any)?.requestContext ?? {};\n const newRequestContext = params.requestContext ? Object.fromEntries(params.requestContext.entries()) : {};\n const mergedRequestContext = { ...persistedRequestContext, ...newRequestContext };\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n inputData: resumeDataToUse,\n initialState: snapshot?.value ?? {},\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: resumeDataToUse,\n resumePath: steps?.[0] ? (snapshot?.suspendedPaths?.[steps?.[0]] as any) : undefined,\n },\n requestContext: mergedRequestContext,\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 async timeTravel<TInputSchema extends z.ZodType<any>>(params: {\n inputData?: z.infer<TInputSchema>;\n resumeData?: any;\n initialState?: z.infer<TState>;\n step:\n | Step<string, any, TInputSchema, any, any>\n | [...Step<string, any, any, any, any>[], Step<string, any, TInputSchema, any, any>]\n | string\n | string[];\n context?: TimeTravelContext<any, any, any, any>;\n nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const p = this._timeTravel(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 _timeTravel<TInputSchema extends z.ZodType<any>>(params: {\n inputData?: z.infer<TInputSchema>;\n resumeData?: any;\n initialState?: z.infer<TState>;\n step:\n | Step<string, any, TInputSchema, any, any>\n | [...Step<string, any, any, any, any>[], Step<string, any, TInputSchema, any, any>]\n | string\n | string[];\n context?: TimeTravelContext<any, any, any, any>;\n nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n if (!params.step || (Array.isArray(params.step) && params.step?.length === 0)) {\n throw new Error('Step is required and must be a valid step or array of steps');\n }\n\n let steps: string[] = [];\n if (typeof params.step === 'string') {\n steps = params.step.split('.');\n } else {\n steps = (Array.isArray(params.step) ? params.step : [params.step]).map(step =>\n typeof step === 'string' ? step : step?.id,\n );\n }\n\n if (steps.length === 0) {\n throw new Error('No steps provided to timeTravel');\n }\n\n const storage = this.#mastra?.getStorage();\n\n const snapshot = await storage?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n\n if (!snapshot) {\n await storage?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n resourceId: this.resourceId,\n snapshot: {\n runId: this.runId,\n serializedStepGraph: this.serializedStepGraph,\n status: 'pending',\n value: {},\n context: {} as any,\n activePaths: [],\n suspendedPaths: {},\n activeStepsPath: {},\n resumeLabels: {},\n waitingPaths: {},\n timestamp: Date.now(),\n },\n });\n }\n\n if (snapshot?.status === 'running') {\n throw new Error('This workflow run is still running, cannot time travel');\n }\n\n let inputDataToUse = params.inputData;\n\n if (inputDataToUse && steps.length === 1) {\n inputDataToUse = await this._validateTimetravelInputData(params.inputData, this.workflowSteps[steps[0]!]!);\n }\n\n const timeTravelData = createTimeTravelExecutionParams({\n steps,\n inputData: inputDataToUse,\n resumeData: params.resumeData,\n context: params.context,\n nestedStepsContext: params.nestedStepsContext,\n snapshot: (snapshot ?? { context: {} }) as any,\n graph: this.executionGraph,\n initialState: params.initialState,\n });\n\n const eventOutput = await this.inngest.send({\n name: `workflow.${this.workflowId}`,\n data: {\n initialState: timeTravelData.state,\n runId: this.runId,\n workflowId: this.workflowId,\n stepResults: timeTravelData.stepResults,\n timeTravel: timeTravelData,\n tracingOptions: params.tracingOptions,\n outputOptions: params.outputOptions,\n requestContext: params.requestContext ? Object.fromEntries(params.requestContext.entries()) : {},\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: WorkflowStreamEvent) => void): () => void {\n let active = true;\n const streamPromise = subscribe(\n {\n channel: `workflow:${this.workflowId}:${this.runId}`,\n topics: ['watch'],\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 streamLegacy({ inputData, requestContext }: { inputData?: z.infer<TInput>; requestContext?: RequestContext } = {}): {\n stream: ReadableStream<StreamEvent>;\n getWorkflowState: () => Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>;\n } {\n const { readable, writable } = new TransformStream<StreamEvent, StreamEvent>();\n\n const writer = writable.getWriter();\n void writer.write({\n // @ts-ignore\n type: 'start',\n // @ts-ignore\n payload: { runId: this.runId },\n });\n\n const unwatch = this.watch(async event => {\n try {\n const e: any = {\n ...event,\n type: event.type.replace('workflow-', ''),\n };\n\n if (e.type === 'step-output') {\n e.type = e.payload.output.type;\n e.payload = e.payload.output.payload;\n }\n // watch events are data stream events, so we need to cast them to the correct type\n await writer.write(e as any);\n } catch {}\n });\n\n this.closeStreamAction = async () => {\n await writer.write({\n type: 'finish',\n // @ts-ignore\n payload: { runId: this.runId },\n });\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, requestContext, format: 'legacy' }).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 stream({\n inputData,\n requestContext,\n tracingOptions,\n closeOnSuspend = true,\n initialState,\n outputOptions,\n }: {\n inputData?: z.input<TInput>;\n requestContext?: RequestContext;\n tracingContext?: TracingContext;\n tracingOptions?: TracingOptions;\n closeOnSuspend?: boolean;\n initialState?: z.input<TState>;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n } = {}): ReturnType<Run<InngestEngineType, TSteps, TState, TInput, TOutput>['stream']> {\n if (this.closeStreamAction && this.streamOutput) {\n return this.streamOutput;\n }\n\n this.closeStreamAction = async () => {};\n\n const self = this;\n const stream = new ReadableStream<WorkflowStreamEvent>({\n async start(controller) {\n // TODO: fix this, watch doesn't have a type\n // @ts-ignore\n const unwatch = self.watch(async ({ type, from = ChunkFrom.WORKFLOW, payload }) => {\n controller.enqueue({\n type,\n runId: self.runId,\n from,\n payload: {\n stepName: (payload as unknown as { id: string })?.id,\n ...payload,\n },\n } as WorkflowStreamEvent);\n });\n\n self.closeStreamAction = async () => {\n unwatch();\n\n try {\n await controller.close();\n } catch (err) {\n console.error('Error closing stream:', err);\n }\n };\n\n const executionResultsPromise = self._start({\n inputData,\n requestContext,\n // tracingContext, // We are not able to pass a reference to a span here, what to do?\n initialState,\n tracingOptions,\n outputOptions,\n format: 'vnext',\n });\n let executionResults;\n try {\n executionResults = await executionResultsPromise;\n\n if (closeOnSuspend) {\n // always close stream, even if the workflow is suspended\n // this will trigger a finish event with workflow status set to suspended\n self.closeStreamAction?.().catch(() => {});\n } else if (executionResults.status !== 'suspended') {\n self.closeStreamAction?.().catch(() => {});\n }\n if (self.streamOutput) {\n self.streamOutput.updateResults(\n executionResults as unknown as WorkflowResult<TState, TInput, TOutput, TSteps>,\n );\n }\n } catch (err) {\n self.streamOutput?.rejectResults(err as unknown as Error);\n self.closeStreamAction?.().catch(() => {});\n }\n },\n });\n\n this.streamOutput = new WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>({\n runId: this.runId,\n workflowId: this.workflowId,\n stream,\n });\n\n return this.streamOutput;\n }\n\n streamVNext(\n args: {\n inputData?: z.input<TInput>;\n requestContext?: RequestContext;\n tracingContext?: TracingContext;\n tracingOptions?: TracingOptions;\n closeOnSuspend?: boolean;\n initialState?: z.input<TState>;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n } = {},\n ): ReturnType<Run<InngestEngineType, TSteps, TState, TInput, TOutput>['stream']> {\n return this.stream(args);\n }\n\n timeTravelStream<TInputSchema extends z.ZodType<any>>({\n inputData,\n resumeData,\n initialState,\n step,\n context,\n nestedStepsContext,\n requestContext,\n tracingOptions,\n outputOptions,\n }: {\n inputData?: z.input<TInputSchema>;\n initialState?: z.input<TState>;\n resumeData?: any;\n step:\n | Step<string, any, TInputSchema, any, any, any, TEngineType>\n | [\n ...Step<string, any, any, any, any, any, TEngineType>[],\n Step<string, any, TInputSchema, any, any, any, TEngineType>,\n ]\n | string\n | string[];\n context?: TimeTravelContext<any, any, any, any>;\n nestedStepsContext?: Record<string, TimeTravelContext<any, any, any, any>>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n }) {\n this.closeStreamAction = async () => {};\n\n const self = this;\n const stream = new ReadableStream<WorkflowStreamEvent>({\n async start(controller) {\n // TODO: fix this, watch doesn't have a type\n // @ts-ignore\n const unwatch = self.watch(async ({ type, from = ChunkFrom.WORKFLOW, payload }) => {\n controller.enqueue({\n type,\n runId: self.runId,\n from,\n payload: {\n stepName: (payload as unknown as { id: string })?.id,\n ...payload,\n },\n } as WorkflowStreamEvent);\n });\n\n self.closeStreamAction = async () => {\n unwatch();\n\n try {\n controller.close();\n } catch (err) {\n console.error('Error closing stream:', err);\n }\n };\n const executionResultsPromise = self._timeTravel({\n inputData,\n step,\n context,\n nestedStepsContext,\n resumeData,\n initialState,\n requestContext,\n tracingOptions,\n outputOptions,\n });\n\n self.executionResults = executionResultsPromise;\n\n let executionResults;\n try {\n executionResults = await executionResultsPromise;\n self.closeStreamAction?.().catch(() => {});\n\n if (self.streamOutput) {\n self.streamOutput.updateResults(executionResults);\n }\n } catch (err) {\n self.streamOutput?.rejectResults(err as unknown as Error);\n self.closeStreamAction?.().catch(() => {});\n }\n },\n });\n\n this.streamOutput = new WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>({\n runId: this.runId,\n workflowId: this.workflowId,\n stream,\n });\n\n return this.streamOutput;\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport { RequestContext } from '@mastra/core/di';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { WorkflowRun, WorkflowRuns } from '@mastra/core/storage';\nimport { Workflow } from '@mastra/core/workflows';\nimport type {\n Step,\n WorkflowConfig,\n StepFlowEntry,\n WorkflowResult,\n WorkflowStreamEvent,\n Run,\n} from '@mastra/core/workflows';\nimport { NonRetriableError } from 'inngest';\nimport type { Inngest } from 'inngest';\nimport type { z } from 'zod';\nimport { InngestExecutionEngine } from './execution-engine';\nimport { InngestRun } from './run';\nimport type { InngestEngineType, InngestFlowControlConfig, InngestWorkflowConfig } from './types';\n\nexport class InngestWorkflow<\n TEngineType = InngestEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\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, TState, TInput, TOutput, TPrevSchema> {\n #mastra: Mastra;\n public inngest: Inngest;\n\n private function: ReturnType<Inngest['createFunction']> | undefined;\n private readonly flowControlConfig?: InngestFlowControlConfig;\n\n constructor(params: InngestWorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>, inngest: Inngest) {\n const { concurrency, rateLimit, throttle, debounce, priority, ...workflowParams } = params;\n\n super(workflowParams as WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>);\n\n this.engineType = 'inngest';\n\n const flowControlEntries = Object.entries({ concurrency, rateLimit, throttle, debounce, priority }).filter(\n ([_, value]) => value !== undefined,\n );\n\n this.flowControlConfig = flowControlEntries.length > 0 ? Object.fromEntries(flowControlEntries) : undefined;\n\n this.#mastra = params.mastra!;\n this.inngest = inngest;\n }\n\n async listWorkflowRuns(args?: {\n fromDate?: Date;\n toDate?: Date;\n perPage?: number | false;\n page?: 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.listWorkflowRuns({ 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 __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 async createRun(options?: {\n runId?: string;\n resourceId?: string;\n }): Promise<Run<TEngineType, TSteps, TState, TInput, TOutput>> {\n const runIdToUse = options?.runId || randomUUID();\n\n // Return a new Run instance with object parameters\n const run: Run<TEngineType, TSteps, TState, TInput, TOutput> =\n this.runs.get(runIdToUse) ??\n new InngestRun(\n {\n workflowId: this.id,\n runId: runIdToUse,\n resourceId: options?.resourceId,\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 workflowSteps: this.steps,\n workflowEngineType: this.engineType,\n validateInputs: this.options.validateInputs,\n },\n this.inngest,\n );\n\n this.runs.set(runIdToUse, run);\n\n const shouldPersistSnapshot = this.options.shouldPersistSnapshot({\n workflowStatus: run.workflowRunStatus,\n stepResults: {},\n });\n\n const workflowSnapshotInStorage = await this.getWorkflowRunExecutionResult(runIdToUse, false);\n\n if (!workflowSnapshotInStorage && shouldPersistSnapshot) {\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.id,\n runId: runIdToUse,\n resourceId: options?.resourceId,\n snapshot: {\n runId: runIdToUse,\n status: 'pending',\n value: {},\n context: {},\n activePaths: [],\n activeStepsPath: {},\n waitingPaths: {},\n serializedStepGraph: this.serializedStepGraph,\n suspendedPaths: {},\n resumeLabels: {},\n result: undefined,\n error: undefined,\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 retries: Math.min(this.retryConfig?.attempts ?? 0, 20) as\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | 16\n | 17\n | 18\n | 19\n | 20,\n cancelOn: [{ event: `cancel.workflow.${this.id}` }],\n // Spread flow control configuration\n ...this.flowControlConfig,\n },\n { event: `workflow.${this.id}` },\n async ({ event, step, attempt, publish }) => {\n let { inputData, initialState, runId, resourceId, resume, outputOptions, format, timeTravel } = 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, this.options);\n const result = await engine.execute<\n z.infer<TState>,\n z.infer<TInput>,\n WorkflowResult<TState, TInput, TOutput, TSteps>\n >({\n workflowId: this.id,\n runId,\n resourceId,\n graph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n input: inputData,\n initialState,\n emitter,\n retryConfig: this.retryConfig,\n requestContext: new RequestContext(Object.entries(event.data.requestContext ?? {})),\n resume,\n timeTravel,\n format,\n abortController: new AbortController(),\n // currentSpan: undefined, // TODO: Pass actual parent Span from workflow execution context\n outputOptions,\n outputWriter: async (chunk: WorkflowStreamEvent) => {\n void emitter.emit('watch', chunk).catch(() => {});\n },\n });\n\n // Final step to check workflow status and throw NonRetriableError if failed\n // This is needed to ensure that the Inngest workflow run is marked as failed instead of success\n await step.run(`workflow.${this.id}.finalize`, async () => {\n if (result.status === 'failed') {\n throw new NonRetriableError(`Workflow failed`, {\n cause: result,\n });\n }\n return result;\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","import type { Mastra } from '@mastra/core/mastra';\nimport type { Inngest, InngestFunction, RegisterOptions } from 'inngest';\nimport { serve as inngestServe } from 'inngest/hono';\nimport { InngestWorkflow } from './workflow';\n\nexport function serve({\n mastra,\n inngest,\n functions: userFunctions = [],\n registerOptions,\n}: {\n mastra: Mastra;\n inngest: Inngest;\n /**\n * Optional array of additional functions to serve and register with Inngest.\n */\n functions?: InngestFunction.Like[];\n registerOptions?: RegisterOptions;\n}): ReturnType<typeof inngestServe> {\n const wfs = mastra.listWorkflows();\n const workflowFunctions = 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\n return inngestServe({\n ...registerOptions,\n client: inngest,\n functions: [...workflowFunctions, ...userFunctions],\n });\n}\n","import type { Step, WorkflowConfig } from '@mastra/core/workflows';\nimport type { Inngest } from 'inngest';\nimport type z from 'zod';\n\n// Extract Inngest's native flow control configuration types\nexport type InngestCreateFunctionConfig = Parameters<Inngest['createFunction']>[0];\n\n// Extract specific flow control properties (excluding batching)\nexport type InngestFlowControlConfig = Pick<\n InngestCreateFunctionConfig,\n 'concurrency' | 'rateLimit' | 'throttle' | 'debounce' | 'priority'\n>;\n\n// Union type for Inngest workflows with flow control\nexport type InngestWorkflowConfig<\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\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, any>[] = Step<string, any, any, any, any, any>[],\n> = WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps> & InngestFlowControlConfig;\n\n// Compile-time compatibility assertion\nexport type _AssertInngestCompatibility =\n InngestFlowControlConfig extends Pick<Parameters<Inngest['createFunction']>[0], keyof InngestFlowControlConfig>\n ? true\n : never;\nexport const _compatibilityCheck: _AssertInngestCompatibility = true;\n\nexport type InngestEngineType = {\n step: any;\n};\n","import type { ReadableStream } from 'node:stream/web';\nimport type { Agent } from '@mastra/core/agent';\nimport type { ToolExecutionContext } from '@mastra/core/tools';\nimport { Tool } from '@mastra/core/tools';\nimport type { Step, AgentStepOptions, StepParams, ToolStep } from '@mastra/core/workflows';\nimport { Workflow } from '@mastra/core/workflows';\nimport { EMITTER_SYMBOL, STREAM_FORMAT_SYMBOL } from '@mastra/core/workflows/_constants';\nimport type { Inngest } from 'inngest';\nimport { z } from 'zod';\nimport type { InngestEngineType, InngestWorkflowConfig } from './types';\nimport { InngestWorkflow } from './workflow';\n\nexport * from './workflow';\nexport * from './execution-engine';\nexport * from './run';\nexport * from './serve';\nexport * from './types';\n\nfunction isAgent(params: any): params is Agent<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\nfunction isInngestWorkflow(params: any): params is InngestWorkflow {\n return params instanceof InngestWorkflow;\n}\n\nexport function createStep<\n TStepId extends string,\n TState extends z.ZodObject<any>,\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: StepParams<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema>,\n): Step<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType>;\n\n// Overload for agent WITH structured output schema\nexport function createStep<TStepId extends string, TStepOutput extends z.ZodType<any>>(\n agent: Agent<TStepId, any>,\n agentOptions: AgentStepOptions<TStepOutput> & { structuredOutput: { schema: TStepOutput } },\n): Step<\n TStepId,\n any,\n z.ZodObject<{ prompt: z.ZodString }>,\n TStepOutput,\n z.ZodType<any>,\n z.ZodType<any>,\n InngestEngineType\n>;\n\n// Overload for agent WITHOUT structured output (default { text: string })\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>,\n agentOptions?: AgentStepOptions,\n): Step<TStepId, any, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType>;\n\nexport function createStep<\n TSchemaIn extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSchemaOut extends z.ZodType<any>,\n TContext extends ToolExecutionContext<TSuspendSchema, TResumeSchema>,\n>(\n tool: ToolStep<TSchemaIn, TSuspendSchema, TResumeSchema, TSchemaOut, TContext>,\n): Step<string, any, TSchemaIn, TSchemaOut, z.ZodType<any>, z.ZodType<any>, InngestEngineType>;\nexport function createStep<\n TStepId extends string,\n TState extends z.ZodObject<any>,\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 | StepParams<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema>\n | Agent<any, any>\n | ToolStep<TStepInput, TSuspendSchema, TResumeSchema, TStepOutput, any>,\n agentOptions?: AgentStepOptions,\n): Step<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, InngestEngineType> {\n // Issue #9965: Preserve InngestWorkflow identity when passed to createStep\n // This ensures nested workflows in foreach are properly detected by isNestedWorkflowStep()\n if (isInngestWorkflow(params)) {\n return params as unknown as Step<\n TStepId,\n TState,\n TStepInput,\n TStepOutput,\n TResumeSchema,\n TSuspendSchema,\n InngestEngineType\n >;\n }\n\n if (isAgent(params)) {\n // Determine output schema based on structuredOutput option\n const outputSchema = agentOptions?.structuredOutput?.schema ?? z.object({ text: z.string() });\n\n return {\n id: params.name as TStepId,\n description: params.getDescription(),\n inputSchema: z.object({\n prompt: z.string(),\n // resourceId: z.string().optional(),\n // threadId: z.string().optional(),\n }) as unknown as TStepInput,\n outputSchema: outputSchema as unknown as TStepOutput,\n execute: async ({\n inputData,\n [EMITTER_SYMBOL]: emitter,\n [STREAM_FORMAT_SYMBOL]: streamFormat,\n requestContext,\n tracingContext,\n abortSignal,\n abort,\n writer,\n }) => {\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\n // Track structured output result\n let structuredResult: any = null;\n\n const toolData = {\n name: params.name,\n args: inputData,\n };\n\n let stream: ReadableStream<any>;\n\n if ((await params.getModel()).specificationVersion === 'v1') {\n const { fullStream } = await params.streamLegacy(inputData.prompt, {\n ...(agentOptions ?? {}),\n // resourceId: inputData.resourceId,\n // threadId: inputData.threadId,\n requestContext,\n tracingContext,\n onFinish: result => {\n // Capture structured output if available\n const resultWithObject = result as typeof result & { object?: unknown };\n if (agentOptions?.structuredOutput?.schema && resultWithObject.object) {\n structuredResult = resultWithObject.object;\n }\n streamPromise.resolve(result.text);\n void agentOptions?.onFinish?.(result);\n },\n abortSignal,\n });\n stream = fullStream as any;\n } else {\n const modelOutput = await params.stream(inputData.prompt, {\n ...(agentOptions ?? {}),\n requestContext,\n tracingContext,\n onFinish: result => {\n // Capture structured output if available\n const resultWithObject = result as typeof result & { object?: unknown };\n if (agentOptions?.structuredOutput?.schema && resultWithObject.object) {\n structuredResult = resultWithObject.object;\n }\n streamPromise.resolve(result.text);\n void agentOptions?.onFinish?.(result);\n },\n abortSignal,\n });\n\n stream = modelOutput.fullStream;\n }\n\n if (streamFormat === 'legacy') {\n await emitter.emit('watch', {\n type: 'tool-call-streaming-start',\n ...(toolData ?? {}),\n });\n for await (const chunk of stream) {\n if (chunk.type === 'text-delta') {\n await emitter.emit('watch', {\n type: 'tool-call-delta',\n ...(toolData ?? {}),\n argsTextDelta: chunk.textDelta,\n });\n }\n }\n await emitter.emit('watch', {\n type: 'tool-call-streaming-finish',\n ...(toolData ?? {}),\n });\n } else {\n for await (const chunk of stream) {\n await writer.write(chunk as any);\n }\n }\n\n if (abortSignal.aborted) {\n return abort();\n }\n\n // Return structured output if available, otherwise default text\n if (structuredResult !== null) {\n return structuredResult;\n }\n return {\n text: await streamPromise.promise,\n };\n },\n component: params.component,\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 id: params.id as unknown as TStepId,\n description: params.description,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n suspendSchema: params.suspendSchema,\n resumeSchema: params.resumeSchema,\n execute: async ({\n inputData,\n mastra,\n requestContext,\n tracingContext,\n suspend,\n resumeData,\n runId,\n workflowId,\n state,\n setState,\n }) => {\n // BREAKING CHANGE v1.0: Pass raw input as first arg, context as second\n const toolContext = {\n mastra,\n requestContext,\n tracingContext,\n workflow: {\n runId,\n resumeData,\n suspend,\n workflowId,\n state,\n setState,\n },\n };\n return params.execute(inputData, toolContext);\n },\n component: 'TOOL',\n };\n }\n\n return {\n id: params.id as TStepId,\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 TState extends z.ZodObject<any> = z.ZodObject<any>,\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, any, InngestEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n any,\n InngestEngineType\n >[],\n >(params: InngestWorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>) {\n return new InngestWorkflow<InngestEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TInput>(\n params,\n inngest,\n );\n },\n createStep,\n cloneStep<TStepId extends string>(\n step: Step<TStepId, any, any, any, any, any, InngestEngineType>,\n opts: { id: TStepId },\n ): Step<TStepId, any, any, any, any, any, InngestEngineType> {\n return {\n id: opts.id,\n description: step.description,\n inputSchema: step.inputSchema,\n outputSchema: step.outputSchema,\n resumeSchema: step.resumeSchema,\n suspendSchema: step.suspendSchema,\n stateSchema: step.stateSchema,\n execute: step.execute,\n retries: step.retries,\n scorers: step.scorers,\n component: step.component,\n };\n },\n cloneWorkflow<\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\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, any, InngestEngineType>[] = Step<\n string,\n any,\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, TState, TInput, TOutput, TPrevSchema>,\n opts: { id: TWorkflowId },\n ): Workflow<InngestEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema> {\n const wf: Workflow<InngestEngineType, TSteps, TWorkflowId, TState, 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 options: workflow.options,\n });\n\n wf.setStepFlow(workflow.stepGraph);\n wf.commit();\n return wf;\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EACV,IAAI,EAEJ,aAAa,EAGb,GAAG,EACJ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EAAE,iBAAiB,EAA4B,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElG,qBAAa,eAAe,CAC1B,WAAW,GAAG,iBAAiB,EAC/B,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAClE,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,MAAM,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAClD,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAC9C,OAAO,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAC/C,WAAW,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAC3C,SAAQ,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC;;IAEjF,OAAO,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA2B;gBAElD,MAAM,EAAE,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO;IAiBnG,gBAAgB,CAAC,IAAI,CAAC,EAAE;QAC5B,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,MAAM,CAAC,EAAE,IAAI,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAUK,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiBpE,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAuBzB,SAAS,CAAC,OAAO,CAAC,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IA2D9D,WAAW;;;;;;;;;;;IAoHX,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAenF,YAAY;;;;;;;;;;;CAGb"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EACV,IAAI,EAEJ,aAAa,EAGb,GAAG,EACJ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EAAE,iBAAiB,EAA4B,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElG,qBAAa,eAAe,CAC1B,WAAW,GAAG,iBAAiB,EAC/B,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAClE,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,MAAM,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAClD,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAC9C,OAAO,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAC/C,WAAW,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAC3C,SAAQ,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC;;IAEjF,OAAO,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA2B;gBAElD,MAAM,EAAE,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO;IAiBnG,gBAAgB,CAAC,IAAI,CAAC,EAAE;QAC5B,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,MAAM,CAAC,EAAE,IAAI,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAUK,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiBpE,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAuBzB,SAAS,CAAC,OAAO,CAAC,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IA2D9D,WAAW;;;;;;;;;;;IAkHX,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAenF,YAAY;;;;;;;;;;;CAGb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/inngest",
3
- "version": "1.0.0-beta.4",
3
+ "version": "1.0.0-beta.6",
4
4
  "description": "Mastra Inngest integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -44,10 +44,10 @@
44
44
  "typescript": "^5.8.3",
45
45
  "vitest": "4.0.12",
46
46
  "@internal/lint": "0.0.53",
47
+ "@mastra/core": "1.0.0-beta.11",
47
48
  "@internal/types-builder": "0.0.28",
48
- "@mastra/core": "1.0.0-beta.6",
49
- "@mastra/libsql": "1.0.0-beta.3",
50
- "@mastra/deployer": "1.0.0-beta.6"
49
+ "@mastra/deployer": "1.0.0-beta.11",
50
+ "@mastra/libsql": "1.0.0-beta.7"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "@mastra/core": ">=1.0.0-0 <2.0.0-0",