@mastra/temporal 0.6.0-alpha.0 → 0.6.0-alpha.1

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.cjs CHANGED
@@ -3,8 +3,17 @@ const require_utils = require("./utils-BVE1AkTt.cjs");
3
3
  let _mastra_core_workflows = require("@mastra/core/workflows");
4
4
  let timers_promises = require("timers/promises");
5
5
  let _mastra_core_di = require("@mastra/core/di");
6
+ let _mastra_core_error = require("@mastra/core/error");
6
7
  let _temporalio_client = require("@temporalio/client");
7
8
  // src/run.ts
9
+ function toFailureDetails(error) {
10
+ if (!(error instanceof _temporalio_client.WorkflowFailedError) || !(error.cause instanceof _temporalio_client.ApplicationFailure)) return;
11
+ const details = error.cause.details?.[0];
12
+ return details?.error && details.steps ? details : void 0;
13
+ }
14
+ function toError(error) {
15
+ return (0, _mastra_core_error.getErrorFromUnknown)(error, { serializeStack: false });
16
+ }
8
17
  var TemporalWorkflowStatusUnknownError = class extends Error {
9
18
  constructor(runId, cause, afterResumeSignal = false) {
10
19
  super(afterResumeSignal ? `Unable to determine Temporal workflow status for run "${runId}" after sending a resume signal. The signal may have been delivered; do not retry resume() blindly.` : `Unable to determine Temporal workflow status for run "${runId}".`, { cause });
@@ -82,7 +91,7 @@ var TemporalRun = class extends _mastra_core_workflows.Run {
82
91
  if (previousSuspension !== void 0 && isSuspendedStepResult(previousStep) && previousStep.suspendedAt === previousSuspension.suspendedAt) continue;
83
92
  const suspended = {
84
93
  ...status,
85
- steps: normalizeStepResults(status.steps)
94
+ steps: toStepResults(status.input, status.steps)
86
95
  };
87
96
  await this.invokeLifecycleCallbacks(suspended, requestContext);
88
97
  return suspended;
@@ -95,7 +104,7 @@ var TemporalRun = class extends _mastra_core_workflows.Run {
95
104
  return {
96
105
  ...output,
97
106
  ...input !== void 0 && { input },
98
- steps: normalizeStepResults(output.steps)
107
+ steps: toStepResults(input !== void 0 ? input : output.input, output.steps)
99
108
  };
100
109
  } catch (error) {
101
110
  if (error instanceof _temporalio_client.WorkflowFailedError && error.cause instanceof _temporalio_client.CancelledFailure) return {
@@ -104,6 +113,23 @@ var TemporalRun = class extends _mastra_core_workflows.Run {
104
113
  state: initialState,
105
114
  steps: {}
106
115
  };
116
+ const failure = toFailureDetails(error);
117
+ if (failure) {
118
+ const steps = toStepResults(input, failure.steps);
119
+ return failure.tripwire ? {
120
+ status: "tripwire",
121
+ input,
122
+ tripwire: failure.tripwire,
123
+ state: initialState,
124
+ steps
125
+ } : {
126
+ status: "failed",
127
+ input,
128
+ error: toError(failure.error),
129
+ state: initialState,
130
+ steps
131
+ };
132
+ }
107
133
  return this.failedResult(input, initialState, error);
108
134
  }
109
135
  }
@@ -113,7 +139,7 @@ var TemporalRun = class extends _mastra_core_workflows.Run {
113
139
  input,
114
140
  error: error instanceof Error ? error : new Error(String(error)),
115
141
  state: initialState,
116
- steps: {}
142
+ steps: toStepResults(input, {})
117
143
  };
118
144
  }
119
145
  invokeStartCallback(input, initialState, requestContext) {
@@ -131,6 +157,7 @@ var TemporalRun = class extends _mastra_core_workflows.Run {
131
157
  status: result.status,
132
158
  result: result.status === "success" ? result.result : void 0,
133
159
  error: result.status === "failed" ? result.error : void 0,
160
+ tripwire: result.status === "tripwire" ? result.tripwire : void 0,
134
161
  steps: result.steps,
135
162
  runId: this.runId,
136
163
  workflowId: this.workflowId,
@@ -226,6 +253,14 @@ function normalizeStepResult(value) {
226
253
  endedAt: 0
227
254
  };
228
255
  const record = value;
256
+ if (record.__temporalStepResult === true && record.status === "failed") return {
257
+ status: "failed",
258
+ payload: record.payload,
259
+ error: toError(record.error),
260
+ ...record.tripwire !== void 0 && { tripwire: record.tripwire },
261
+ startedAt: record.startedAt,
262
+ endedAt: record.endedAt
263
+ };
229
264
  if (record.__temporalStepResult === true && record.status === "suspended" && typeof record.suspendedAt === "number") return {
230
265
  status: "suspended",
231
266
  payload: record.payload,
@@ -248,6 +283,12 @@ function normalizeStepResult(value) {
248
283
  endedAt: 0
249
284
  };
250
285
  }
286
+ function toStepResults(input, steps) {
287
+ return {
288
+ input,
289
+ ...normalizeStepResults(steps)
290
+ };
291
+ }
251
292
  function normalizeStepResults(steps) {
252
293
  if (!steps || typeof steps !== "object") return {};
253
294
  return Object.fromEntries(Object.entries(steps).map(([id, value]) => [id, normalizeStepResult(value)]));
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["Run","RequestContext","WorkflowExecutionAlreadyStartedError","toWorkflowType","delay","WorkflowFailedError","CancelledFailure","Workflow"],"sources":["../src/run.ts","../src/workflow.ts"],"sourcesContent":["import { setTimeout as delay } from 'node:timers/promises';\nimport { RequestContext } from '@mastra/core/di';\nimport { Run } from '@mastra/core/workflows';\nimport type { Step, WorkflowResult, WorkflowRunStartOptions } from '@mastra/core/workflows';\nimport { CancelledFailure, WorkflowExecutionAlreadyStartedError, WorkflowFailedError } from '@temporalio/client';\nimport type { Client, WorkflowHandle } from '@temporalio/client';\nimport type { TemporalEngineType } from './types';\nimport { toWorkflowType } from './utils';\n\ntype TemporalRunStartArgs<TState, TInput, TRequestContext> = {\n inputData?: TInput;\n initialState?: TState;\n requestContext?: RequestContext<TRequestContext>;\n} & WorkflowRunStartOptions;\n\nexport class TemporalWorkflowStatusUnknownError extends Error {\n constructor(runId: string, cause: unknown, afterResumeSignal = false) {\n super(\n afterResumeSignal\n ? `Unable to determine Temporal workflow status for run \"${runId}\" after sending a resume signal. The signal may have been delivered; do not retry resume() blindly.`\n : `Unable to determine Temporal workflow status for run \"${runId}\".`,\n { cause },\n );\n this.name = 'TemporalWorkflowStatusUnknownError';\n }\n}\n\nexport class TemporalRun<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext> {\n private readonly client: Client;\n private readonly taskQueue: string;\n\n constructor(\n params: ConstructorParameters<typeof Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>[0],\n temporalParams: {\n client: Client;\n taskQueue: string;\n },\n ) {\n super(params);\n\n this.client = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n }\n\n async start(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n const result = this.failedResult(input, initialState, error);\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(result, requestContext);\n }\n return result;\n }\n\n return this.awaitResultOrSuspended(handle, input, initialState, requestContext);\n }\n\n private dispatch(\n args: TemporalRunStartArgs<TState, TInput, TRequestContext>,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowHandle> {\n return this.client.workflow.start(toWorkflowType(this.workflowId), {\n taskQueue: this.taskQueue,\n workflowId: this.runId,\n args: [\n {\n inputData: input,\n initialState,\n requestContext: Object.fromEntries(requestContext.entries()),\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions: args.outputOptions,\n tracingOptions: args.tracingOptions,\n perStep: args.perStep,\n validateInputs: this.validateInputs,\n },\n ],\n });\n }\n\n private async awaitResult(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const result = await this.resolveResult(handle, input, initialState);\n await this.invokeLifecycleCallbacks(result, requestContext);\n return result;\n }\n\n private async queryStatus(handle: WorkflowHandle, afterResumeSignal = false): Promise<unknown> {\n if (typeof handle.query !== 'function') {\n return undefined;\n }\n\n try {\n return await handle.query('mastra.status');\n } catch (error) {\n throw new TemporalWorkflowStatusUnknownError(this.runId, error, afterResumeSignal);\n }\n }\n\n private async awaitResultOrSuspended(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n previousSuspension?: { stepId: string; suspendedAt?: number },\n afterResumeSignal = false,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const terminal = this.resolveResult(handle, input, initialState);\n\n while (true) {\n const result = await Promise.race([\n terminal.then(result => ({ type: 'terminal' as const, result })),\n delay(100).then(() => ({ type: 'poll' as const })),\n ]);\n\n if (result.type === 'terminal') {\n await this.invokeLifecycleCallbacks(result.result, requestContext);\n return result.result;\n }\n\n const status = await this.queryStatus(handle, afterResumeSignal);\n if (isSuspendedWorkflowResult(status)) {\n const previousStep = previousSuspension ? status.steps[previousSuspension.stepId] : undefined;\n const isPreviousSuspension =\n previousSuspension !== undefined &&\n isSuspendedStepResult(previousStep) &&\n previousStep.suspendedAt === previousSuspension.suspendedAt;\n if (isPreviousSuspension) {\n continue;\n }\n\n const suspended = {\n ...status,\n steps: normalizeStepResults(status.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n await this.invokeLifecycleCallbacks(suspended, requestContext);\n return suspended;\n }\n }\n }\n\n private async resolveResult(handle: WorkflowHandle, input: unknown, initialState: unknown) {\n try {\n // The generated Temporal workflow returns the execution result ({ status, result, state, steps }).\n const output = (await handle.result()) as WorkflowResult<TState, TInput, TOutput, TSteps>;\n return {\n ...output,\n ...(input !== undefined && { input: input as TInput }),\n steps: normalizeStepResults(output.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n } catch (error) {\n if (error instanceof WorkflowFailedError && error.cause instanceof CancelledFailure) {\n return {\n status: 'canceled',\n input: input as TInput,\n state: initialState,\n steps: {},\n } as unknown as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n return this.failedResult(input, initialState, error);\n }\n }\n\n private failedResult(input: unknown, initialState: unknown, error: unknown) {\n return {\n status: 'failed',\n input: input as TInput,\n error: error instanceof Error ? error : new Error(String(error)),\n state: initialState,\n steps: {},\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n // Lifecycle hooks are closures that cannot run inside the deterministic Temporal workflow\n // sandbox, so they run here in the process that started the run, using core hook semantics.\n private invokeStartCallback(input: unknown, initialState: unknown, requestContext: RequestContext) {\n return this.executionEngine.invokeStartCallback({\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n getInitData: () => input,\n requestContext,\n state: (initialState ?? {}) as Record<string, any>,\n });\n }\n\n private invokeLifecycleCallbacks(\n result: WorkflowResult<TState, TInput, TOutput, TSteps>,\n requestContext: RequestContext,\n ) {\n return this.executionEngine.invokeLifecycleCallbacks({\n status: result.status,\n result: result.status === 'success' ? result.result : undefined,\n error: result.status === 'failed' ? result.error : undefined,\n steps: result.steps,\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n input: result.input,\n requestContext,\n state: (result.state ?? {}) as Record<string, any>,\n });\n }\n\n private async resumePayload(params: {\n step?:\n | Step<string, any, any, any, any, any, TemporalEngineType, any>\n | Step<string, any, any, any, any, any, TemporalEngineType, any>[]\n | string\n | string[];\n label?: string;\n resumeData?: unknown;\n }) {\n const step = Array.isArray(params.step) ? params.step.at(-1) : params.step;\n const stepId = typeof step === 'string' ? step : step?.id;\n const resumeData = await this._validateResumeData(\n params.resumeData,\n stepId ? this.workflowSteps[stepId] : undefined,\n );\n\n return {\n ...(stepId !== undefined && { step: stepId }),\n ...(params.label !== undefined && { label: params.label }),\n resumeData,\n };\n }\n\n async cancel() {\n await this.client.workflow.getHandle(this.runId).cancel();\n await super.cancel();\n }\n\n private unsupported(method: string): never {\n throw new Error(`@mastra/temporal does not support ${method}() yet. Use start() or startAsync() instead.`);\n }\n\n override stream(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['stream']>\n ): never {\n return this.unsupported('stream');\n }\n\n override streamLegacy(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['streamLegacy']>\n ): never {\n return this.unsupported('streamLegacy');\n }\n\n override resumeStream(..._args: unknown[]): never {\n return this.unsupported('resumeStream');\n }\n\n override async resume<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n await this._validateRequestContext(params.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (params.requestContext ?? new RequestContext()) as RequestContext;\n const handle = this.client.workflow.getHandle(this.runId);\n const payload = await this.resumePayload(params);\n const status = await this.queryStatus(handle);\n const stepId = isSuspendedWorkflowResult(status)\n ? (payload.step ??\n (payload.label ? status.resumeLabels?.[payload.label]?.stepId : undefined) ??\n (status.suspended?.length === 1 && status.suspended[0]?.length === 1 ? status.suspended[0][0] : undefined))\n : undefined;\n const previousStep = stepId && isSuspendedWorkflowResult(status) ? status.steps[stepId] : undefined;\n const previousSuspension =\n stepId && isSuspendedStepResult(previousStep) ? { stepId, suspendedAt: previousStep.suspendedAt } : undefined;\n await handle.signal('mastra.resume', payload);\n return this.awaitResultOrSuspended(handle, undefined, undefined, requestContext, previousSuspension, true);\n }\n\n override async resumeAsync<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n const handle = this.client.workflow.getHandle(this.runId);\n await handle.signal('mastra.resume', await this.resumePayload(params));\n return { runId: this.runId };\n }\n\n override restart(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['restart']>\n ): never {\n return this.unsupported('restart');\n }\n\n override timeTravel(..._args: unknown[]): never {\n return this.unsupported('timeTravel');\n }\n\n override timeTravelStream(..._args: unknown[]): never {\n return this.unsupported('timeTravelStream');\n }\n\n async startAsync(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(this.failedResult(input, initialState, error), requestContext);\n }\n throw error;\n }\n\n const { onFinish, onError } = this.executionEngine.options;\n if (onFinish || onError) {\n // Like core startAsync(), terminal hooks fire in the background from this process.\n // They are best-effort: if this process exits before the run ends, they do not fire.\n void this.awaitResult(handle, input, initialState, requestContext);\n }\n\n return { runId: this.runId };\n }\n}\n\nfunction isSuspendedWorkflowResult(value: unknown): value is {\n status: 'suspended';\n steps: Record<string, unknown>;\n suspended?: string[][];\n resumeLabels?: Record<string, { stepId: string }>;\n} {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { status?: unknown }).status === 'suspended' &&\n typeof (value as { steps?: unknown }).steps === 'object' &&\n (value as { steps?: unknown }).steps !== null\n );\n}\n\nfunction isSuspendedStepResult(value: unknown): value is { status: 'suspended'; suspendedAt?: number } {\n return typeof value === 'object' && value !== null && (value as { status?: unknown }).status === 'suspended';\n}\n\n// The worker only records successful steps; a failed run rejects handle.result() instead.\nfunction normalizeStepResult(value: unknown): unknown {\n if (typeof value !== 'object' || value === null) {\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n }\n\n const record = value as Record<string, unknown>;\n if (record.__temporalStepResult === true && record.status === 'suspended' && typeof record.suspendedAt === 'number') {\n return {\n status: 'suspended',\n payload: record.payload,\n suspendPayload: record.suspendPayload,\n suspendedAt: record.suspendedAt,\n };\n }\n\n if (\n record.__temporalStepResult === true &&\n record.status === 'success' &&\n typeof record.startedAt === 'number' &&\n typeof record.endedAt === 'number'\n ) {\n return {\n status: 'success',\n payload: record.payload,\n output: record.output,\n ...(record.suspendPayload !== undefined && { suspendPayload: record.suspendPayload }),\n ...(record.resumeData !== undefined && { resumeData: record.resumeData }),\n startedAt: record.startedAt,\n endedAt: record.endedAt,\n };\n }\n\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n}\n\n// Workers built before step results used the core StepResult shape return raw step outputs.\nfunction normalizeStepResults<T>(steps: T): T {\n if (!steps || typeof steps !== 'object') {\n return {} as T;\n }\n return Object.fromEntries(Object.entries(steps).map(([id, value]) => [id, normalizeStepResult(value)])) as T;\n}\n","import { Workflow, createStep } from '@mastra/core/workflows';\nimport type { Step, WorkflowConfig } from '@mastra/core/workflows';\nimport type { Client } from '@temporalio/client';\nimport type { ActivityOptions } from '@temporalio/workflow';\nimport { TemporalRun } from './run';\nimport type { TemporalEngineType } from './types';\n\nexport type TemporalWorkflowParams = {\n client: Client;\n taskQueue: string;\n startToCloseTimeout?: string;\n retry?: ActivityOptions['retry'];\n};\n\nexport class TemporalWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TPrevSchema = TInput,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Workflow<TemporalEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema, TRequestContext> {\n private readonly temporalClient: Client;\n readonly taskQueue: string;\n readonly startToCloseTimeout: string;\n\n constructor(\n params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporalParams: TemporalWorkflowParams,\n ) {\n super(params);\n\n this.engineType = 'temporal';\n this.temporalClient = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n this.startToCloseTimeout = temporalParams.startToCloseTimeout ?? '1 minute';\n }\n\n async createRun(options?: { runId?: string; resourceId?: string; disableScorers?: boolean }) {\n const runId = options?.runId ?? crypto.randomUUID();\n const run = new TemporalRun<TSteps, TState, TInput, TOutput, TRequestContext>(\n {\n workflowId: this.id,\n runId,\n resourceId: options?.resourceId,\n stateSchema: this.stateSchema,\n inputSchema: this.inputSchema,\n requestContextSchema: this.requestContextSchema,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n mastra: this.mastra,\n retryConfig: this.retryConfig,\n serializedStepGraph: this.serializedStepGraph,\n disableScorers: options?.disableScorers,\n tracingPolicy: this.options.tracingPolicy,\n workflowSteps: this.steps,\n validateInputs: this.options.validateInputs,\n workflowEngineType: this.engineType,\n cleanup: undefined,\n },\n {\n client: this.temporalClient,\n taskQueue: this.taskQueue,\n },\n );\n\n this.runs.set(runId, run);\n return run;\n }\n}\n\nexport function createWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n>(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporal: TemporalWorkflowParams,\n) {\n return new TemporalWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TInput, TRequestContext>(config, temporal);\n}\n\nexport function init(temporalParams: TemporalWorkflowParams) {\n return {\n createWorkflow: <\n TWorkflowId extends string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TSteps extends Step[] = Step[],\n TRequestContext extends Record<string, any> | unknown = unknown,\n >(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n ) => createWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TRequestContext>(config, temporalParams),\n createStep,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["WorkflowFailedError","ApplicationFailure","getErrorFromUnknown","Run","RequestContext","WorkflowExecutionAlreadyStartedError","toWorkflowType","delay","CancelledFailure","Workflow"],"sources":["../src/run.ts","../src/workflow.ts"],"sourcesContent":["import { setTimeout as delay } from 'node:timers/promises';\nimport { RequestContext } from '@mastra/core/di';\nimport { getErrorFromUnknown } from '@mastra/core/error';\nimport { Run } from '@mastra/core/workflows';\nimport type { Step, WorkflowResult, WorkflowRunStartOptions } from '@mastra/core/workflows';\nimport {\n ApplicationFailure,\n CancelledFailure,\n WorkflowExecutionAlreadyStartedError,\n WorkflowFailedError,\n} from '@temporalio/client';\nimport type { Client, WorkflowHandle } from '@temporalio/client';\nimport type { WorkflowFailureDetails } from './transforms/temporal-workflow-runtime';\nimport type { TemporalEngineType } from './types';\nimport { toWorkflowType } from './utils';\n\n// Runs failed by a Worker that predates these details return undefined.\nfunction toFailureDetails(error: unknown): WorkflowFailureDetails | undefined {\n if (!(error instanceof WorkflowFailedError) || !(error.cause instanceof ApplicationFailure)) {\n return undefined;\n }\n\n const details = error.cause.details?.[0] as Partial<WorkflowFailureDetails> | undefined;\n return details?.error && details.steps ? (details as WorkflowFailureDetails) : undefined;\n}\n\nfunction toError(error: WorkflowFailureDetails['error']): Error {\n return getErrorFromUnknown(error, { serializeStack: false });\n}\n\ntype TemporalRunStartArgs<TState, TInput, TRequestContext> = {\n inputData?: TInput;\n initialState?: TState;\n requestContext?: RequestContext<TRequestContext>;\n} & WorkflowRunStartOptions;\n\nexport class TemporalWorkflowStatusUnknownError extends Error {\n constructor(runId: string, cause: unknown, afterResumeSignal = false) {\n super(\n afterResumeSignal\n ? `Unable to determine Temporal workflow status for run \"${runId}\" after sending a resume signal. The signal may have been delivered; do not retry resume() blindly.`\n : `Unable to determine Temporal workflow status for run \"${runId}\".`,\n { cause },\n );\n this.name = 'TemporalWorkflowStatusUnknownError';\n }\n}\n\nexport class TemporalRun<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext> {\n private readonly client: Client;\n private readonly taskQueue: string;\n\n constructor(\n params: ConstructorParameters<typeof Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>[0],\n temporalParams: {\n client: Client;\n taskQueue: string;\n },\n ) {\n super(params);\n\n this.client = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n }\n\n async start(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n const result = this.failedResult(input, initialState, error);\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(result, requestContext);\n }\n return result;\n }\n\n return this.awaitResultOrSuspended(handle, input, initialState, requestContext);\n }\n\n private dispatch(\n args: TemporalRunStartArgs<TState, TInput, TRequestContext>,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowHandle> {\n return this.client.workflow.start(toWorkflowType(this.workflowId), {\n taskQueue: this.taskQueue,\n workflowId: this.runId,\n args: [\n {\n inputData: input,\n initialState,\n requestContext: Object.fromEntries(requestContext.entries()),\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions: args.outputOptions,\n tracingOptions: args.tracingOptions,\n perStep: args.perStep,\n validateInputs: this.validateInputs,\n },\n ],\n });\n }\n\n private async awaitResult(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const result = await this.resolveResult(handle, input, initialState);\n await this.invokeLifecycleCallbacks(result, requestContext);\n return result;\n }\n\n private async queryStatus(handle: WorkflowHandle, afterResumeSignal = false): Promise<unknown> {\n if (typeof handle.query !== 'function') {\n return undefined;\n }\n\n try {\n return await handle.query('mastra.status');\n } catch (error) {\n throw new TemporalWorkflowStatusUnknownError(this.runId, error, afterResumeSignal);\n }\n }\n\n private async awaitResultOrSuspended(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n previousSuspension?: { stepId: string; suspendedAt?: number },\n afterResumeSignal = false,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const terminal = this.resolveResult(handle, input, initialState);\n\n while (true) {\n const result = await Promise.race([\n terminal.then(result => ({ type: 'terminal' as const, result })),\n delay(100).then(() => ({ type: 'poll' as const })),\n ]);\n\n if (result.type === 'terminal') {\n await this.invokeLifecycleCallbacks(result.result, requestContext);\n return result.result;\n }\n\n const status = await this.queryStatus(handle, afterResumeSignal);\n if (isSuspendedWorkflowResult(status)) {\n const previousStep = previousSuspension ? status.steps[previousSuspension.stepId] : undefined;\n const isPreviousSuspension =\n previousSuspension !== undefined &&\n isSuspendedStepResult(previousStep) &&\n previousStep.suspendedAt === previousSuspension.suspendedAt;\n if (isPreviousSuspension) {\n continue;\n }\n\n const suspended = {\n ...status,\n steps: toStepResults(status.input, status.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n await this.invokeLifecycleCallbacks(suspended, requestContext);\n return suspended;\n }\n }\n }\n\n private async resolveResult(handle: WorkflowHandle, input: unknown, initialState: unknown) {\n try {\n // The generated Temporal workflow returns the execution result ({ status, result, state, steps }).\n const output = (await handle.result()) as WorkflowResult<TState, TInput, TOutput, TSteps>;\n return {\n ...output,\n ...(input !== undefined && { input: input as TInput }),\n steps: toStepResults(input !== undefined ? input : output.input, output.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n } catch (error) {\n if (error instanceof WorkflowFailedError && error.cause instanceof CancelledFailure) {\n return {\n status: 'canceled',\n input: input as TInput,\n state: initialState,\n steps: {},\n } as unknown as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n const failure = toFailureDetails(error);\n\n if (failure) {\n const steps = toStepResults(input, failure.steps);\n return (\n failure.tripwire\n ? { status: 'tripwire', input, tripwire: failure.tripwire, state: initialState, steps }\n : { status: 'failed', input, error: toError(failure.error), state: initialState, steps }\n ) as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n return this.failedResult(input, initialState, error);\n }\n }\n\n private failedResult(input: unknown, initialState: unknown, error: unknown) {\n return {\n status: 'failed',\n input: input as TInput,\n error: error instanceof Error ? error : new Error(String(error)),\n state: initialState,\n steps: toStepResults(input, {}),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n // Lifecycle hooks are closures that cannot run inside the deterministic Temporal workflow\n // sandbox, so they run here in the process that started the run, using core hook semantics.\n private invokeStartCallback(input: unknown, initialState: unknown, requestContext: RequestContext) {\n return this.executionEngine.invokeStartCallback({\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n getInitData: () => input,\n requestContext,\n state: (initialState ?? {}) as Record<string, any>,\n });\n }\n\n private invokeLifecycleCallbacks(\n result: WorkflowResult<TState, TInput, TOutput, TSteps>,\n requestContext: RequestContext,\n ) {\n return this.executionEngine.invokeLifecycleCallbacks({\n status: result.status,\n result: result.status === 'success' ? result.result : undefined,\n error: result.status === 'failed' ? result.error : undefined,\n tripwire: result.status === 'tripwire' ? result.tripwire : undefined,\n steps: result.steps,\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n input: result.input,\n requestContext,\n state: (result.state ?? {}) as Record<string, any>,\n });\n }\n\n private async resumePayload(params: {\n step?:\n | Step<string, any, any, any, any, any, TemporalEngineType, any>\n | Step<string, any, any, any, any, any, TemporalEngineType, any>[]\n | string\n | string[];\n label?: string;\n resumeData?: unknown;\n }) {\n const step = Array.isArray(params.step) ? params.step.at(-1) : params.step;\n const stepId = typeof step === 'string' ? step : step?.id;\n const resumeData = await this._validateResumeData(\n params.resumeData,\n stepId ? this.workflowSteps[stepId] : undefined,\n );\n\n return {\n ...(stepId !== undefined && { step: stepId }),\n ...(params.label !== undefined && { label: params.label }),\n resumeData,\n };\n }\n\n async cancel() {\n await this.client.workflow.getHandle(this.runId).cancel();\n await super.cancel();\n }\n\n private unsupported(method: string): never {\n throw new Error(`@mastra/temporal does not support ${method}() yet. Use start() or startAsync() instead.`);\n }\n\n override stream(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['stream']>\n ): never {\n return this.unsupported('stream');\n }\n\n override streamLegacy(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['streamLegacy']>\n ): never {\n return this.unsupported('streamLegacy');\n }\n\n override resumeStream(..._args: unknown[]): never {\n return this.unsupported('resumeStream');\n }\n\n override async resume<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n await this._validateRequestContext(params.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (params.requestContext ?? new RequestContext()) as RequestContext;\n const handle = this.client.workflow.getHandle(this.runId);\n const payload = await this.resumePayload(params);\n const status = await this.queryStatus(handle);\n const stepId = isSuspendedWorkflowResult(status)\n ? (payload.step ??\n (payload.label ? status.resumeLabels?.[payload.label]?.stepId : undefined) ??\n (status.suspended?.length === 1 && status.suspended[0]?.length === 1 ? status.suspended[0][0] : undefined))\n : undefined;\n const previousStep = stepId && isSuspendedWorkflowResult(status) ? status.steps[stepId] : undefined;\n const previousSuspension =\n stepId && isSuspendedStepResult(previousStep) ? { stepId, suspendedAt: previousStep.suspendedAt } : undefined;\n await handle.signal('mastra.resume', payload);\n return this.awaitResultOrSuspended(handle, undefined, undefined, requestContext, previousSuspension, true);\n }\n\n override async resumeAsync<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n const handle = this.client.workflow.getHandle(this.runId);\n await handle.signal('mastra.resume', await this.resumePayload(params));\n return { runId: this.runId };\n }\n\n override restart(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['restart']>\n ): never {\n return this.unsupported('restart');\n }\n\n override timeTravel(..._args: unknown[]): never {\n return this.unsupported('timeTravel');\n }\n\n override timeTravelStream(..._args: unknown[]): never {\n return this.unsupported('timeTravelStream');\n }\n\n async startAsync(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(this.failedResult(input, initialState, error), requestContext);\n }\n throw error;\n }\n\n const { onFinish, onError } = this.executionEngine.options;\n if (onFinish || onError) {\n // Like core startAsync(), terminal hooks fire in the background from this process.\n // They are best-effort: if this process exits before the run ends, they do not fire.\n void this.awaitResult(handle, input, initialState, requestContext);\n }\n\n return { runId: this.runId };\n }\n}\n\nfunction isSuspendedWorkflowResult(value: unknown): value is {\n status: 'suspended';\n input?: unknown;\n steps: Record<string, unknown>;\n suspended?: string[][];\n resumeLabels?: Record<string, { stepId: string }>;\n} {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { status?: unknown }).status === 'suspended' &&\n typeof (value as { steps?: unknown }).steps === 'object' &&\n (value as { steps?: unknown }).steps !== null\n );\n}\n\nfunction isSuspendedStepResult(value: unknown): value is { status: 'suspended'; suspendedAt?: number } {\n return typeof value === 'object' && value !== null && (value as { status?: unknown }).status === 'suspended';\n}\n\n// Failed step records arrive in the failure details of a failed run, not in handle.result().\nfunction normalizeStepResult(value: unknown): unknown {\n if (typeof value !== 'object' || value === null) {\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n }\n\n const record = value as Record<string, unknown>;\n if (record.__temporalStepResult === true && record.status === 'failed') {\n return {\n status: 'failed',\n payload: record.payload,\n error: toError(record.error as WorkflowFailureDetails['error']),\n ...(record.tripwire !== undefined && { tripwire: record.tripwire }),\n startedAt: record.startedAt,\n endedAt: record.endedAt,\n };\n }\n\n if (record.__temporalStepResult === true && record.status === 'suspended' && typeof record.suspendedAt === 'number') {\n return {\n status: 'suspended',\n payload: record.payload,\n suspendPayload: record.suspendPayload,\n suspendedAt: record.suspendedAt,\n };\n }\n\n if (\n record.__temporalStepResult === true &&\n record.status === 'success' &&\n typeof record.startedAt === 'number' &&\n typeof record.endedAt === 'number'\n ) {\n return {\n status: 'success',\n payload: record.payload,\n output: record.output,\n ...(record.suspendPayload !== undefined && { suspendPayload: record.suspendPayload }),\n ...(record.resumeData !== undefined && { resumeData: record.resumeData }),\n startedAt: record.startedAt,\n endedAt: record.endedAt,\n };\n }\n\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n}\n\n// Like a local run, the step records start with the workflow input under `input`.\nfunction toStepResults<T>(input: unknown, steps: T): T {\n return { input, ...normalizeStepResults(steps) } as T;\n}\n\n// Workers built before step results used the core StepResult shape return raw step outputs.\nfunction normalizeStepResults<T>(steps: T): T {\n if (!steps || typeof steps !== 'object') {\n return {} as T;\n }\n return Object.fromEntries(Object.entries(steps).map(([id, value]) => [id, normalizeStepResult(value)])) as T;\n}\n","import { Workflow, createStep } from '@mastra/core/workflows';\nimport type { Step, WorkflowConfig } from '@mastra/core/workflows';\nimport type { Client } from '@temporalio/client';\nimport type { ActivityOptions } from '@temporalio/workflow';\nimport { TemporalRun } from './run';\nimport type { TemporalEngineType } from './types';\n\nexport type TemporalWorkflowParams = {\n client: Client;\n taskQueue: string;\n startToCloseTimeout?: string;\n retry?: ActivityOptions['retry'];\n};\n\nexport class TemporalWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TPrevSchema = TInput,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Workflow<TemporalEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema, TRequestContext> {\n private readonly temporalClient: Client;\n readonly taskQueue: string;\n readonly startToCloseTimeout: string;\n\n constructor(\n params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporalParams: TemporalWorkflowParams,\n ) {\n super(params);\n\n this.engineType = 'temporal';\n this.temporalClient = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n this.startToCloseTimeout = temporalParams.startToCloseTimeout ?? '1 minute';\n }\n\n async createRun(options?: { runId?: string; resourceId?: string; disableScorers?: boolean }) {\n const runId = options?.runId ?? crypto.randomUUID();\n const run = new TemporalRun<TSteps, TState, TInput, TOutput, TRequestContext>(\n {\n workflowId: this.id,\n runId,\n resourceId: options?.resourceId,\n stateSchema: this.stateSchema,\n inputSchema: this.inputSchema,\n requestContextSchema: this.requestContextSchema,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n mastra: this.mastra,\n retryConfig: this.retryConfig,\n serializedStepGraph: this.serializedStepGraph,\n disableScorers: options?.disableScorers,\n tracingPolicy: this.options.tracingPolicy,\n workflowSteps: this.steps,\n validateInputs: this.options.validateInputs,\n workflowEngineType: this.engineType,\n cleanup: undefined,\n },\n {\n client: this.temporalClient,\n taskQueue: this.taskQueue,\n },\n );\n\n this.runs.set(runId, run);\n return run;\n }\n}\n\nexport function createWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n>(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporal: TemporalWorkflowParams,\n) {\n return new TemporalWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TInput, TRequestContext>(config, temporal);\n}\n\nexport function init(temporalParams: TemporalWorkflowParams) {\n return {\n createWorkflow: <\n TWorkflowId extends string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TSteps extends Step[] = Step[],\n TRequestContext extends Record<string, any> | unknown = unknown,\n >(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n ) => createWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TRequestContext>(config, temporalParams),\n createStep,\n };\n}\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,8 +2,17 @@ import { t as toWorkflowType } from "./utils-R6cB86BM.js";
2
2
  import { Run, Workflow, createStep } from "@mastra/core/workflows";
3
3
  import { setTimeout } from "timers/promises";
4
4
  import { RequestContext } from "@mastra/core/di";
5
- import { CancelledFailure, WorkflowExecutionAlreadyStartedError, WorkflowFailedError } from "@temporalio/client";
5
+ import { getErrorFromUnknown } from "@mastra/core/error";
6
+ import { ApplicationFailure, CancelledFailure, WorkflowExecutionAlreadyStartedError, WorkflowFailedError } from "@temporalio/client";
6
7
  // src/run.ts
8
+ function toFailureDetails(error) {
9
+ if (!(error instanceof WorkflowFailedError) || !(error.cause instanceof ApplicationFailure)) return;
10
+ const details = error.cause.details?.[0];
11
+ return details?.error && details.steps ? details : void 0;
12
+ }
13
+ function toError(error) {
14
+ return getErrorFromUnknown(error, { serializeStack: false });
15
+ }
7
16
  var TemporalWorkflowStatusUnknownError = class extends Error {
8
17
  constructor(runId, cause, afterResumeSignal = false) {
9
18
  super(afterResumeSignal ? `Unable to determine Temporal workflow status for run "${runId}" after sending a resume signal. The signal may have been delivered; do not retry resume() blindly.` : `Unable to determine Temporal workflow status for run "${runId}".`, { cause });
@@ -81,7 +90,7 @@ var TemporalRun = class extends Run {
81
90
  if (previousSuspension !== void 0 && isSuspendedStepResult(previousStep) && previousStep.suspendedAt === previousSuspension.suspendedAt) continue;
82
91
  const suspended = {
83
92
  ...status,
84
- steps: normalizeStepResults(status.steps)
93
+ steps: toStepResults(status.input, status.steps)
85
94
  };
86
95
  await this.invokeLifecycleCallbacks(suspended, requestContext);
87
96
  return suspended;
@@ -94,7 +103,7 @@ var TemporalRun = class extends Run {
94
103
  return {
95
104
  ...output,
96
105
  ...input !== void 0 && { input },
97
- steps: normalizeStepResults(output.steps)
106
+ steps: toStepResults(input !== void 0 ? input : output.input, output.steps)
98
107
  };
99
108
  } catch (error) {
100
109
  if (error instanceof WorkflowFailedError && error.cause instanceof CancelledFailure) return {
@@ -103,6 +112,23 @@ var TemporalRun = class extends Run {
103
112
  state: initialState,
104
113
  steps: {}
105
114
  };
115
+ const failure = toFailureDetails(error);
116
+ if (failure) {
117
+ const steps = toStepResults(input, failure.steps);
118
+ return failure.tripwire ? {
119
+ status: "tripwire",
120
+ input,
121
+ tripwire: failure.tripwire,
122
+ state: initialState,
123
+ steps
124
+ } : {
125
+ status: "failed",
126
+ input,
127
+ error: toError(failure.error),
128
+ state: initialState,
129
+ steps
130
+ };
131
+ }
106
132
  return this.failedResult(input, initialState, error);
107
133
  }
108
134
  }
@@ -112,7 +138,7 @@ var TemporalRun = class extends Run {
112
138
  input,
113
139
  error: error instanceof Error ? error : new Error(String(error)),
114
140
  state: initialState,
115
- steps: {}
141
+ steps: toStepResults(input, {})
116
142
  };
117
143
  }
118
144
  invokeStartCallback(input, initialState, requestContext) {
@@ -130,6 +156,7 @@ var TemporalRun = class extends Run {
130
156
  status: result.status,
131
157
  result: result.status === "success" ? result.result : void 0,
132
158
  error: result.status === "failed" ? result.error : void 0,
159
+ tripwire: result.status === "tripwire" ? result.tripwire : void 0,
133
160
  steps: result.steps,
134
161
  runId: this.runId,
135
162
  workflowId: this.workflowId,
@@ -225,6 +252,14 @@ function normalizeStepResult(value) {
225
252
  endedAt: 0
226
253
  };
227
254
  const record = value;
255
+ if (record.__temporalStepResult === true && record.status === "failed") return {
256
+ status: "failed",
257
+ payload: record.payload,
258
+ error: toError(record.error),
259
+ ...record.tripwire !== void 0 && { tripwire: record.tripwire },
260
+ startedAt: record.startedAt,
261
+ endedAt: record.endedAt
262
+ };
228
263
  if (record.__temporalStepResult === true && record.status === "suspended" && typeof record.suspendedAt === "number") return {
229
264
  status: "suspended",
230
265
  payload: record.payload,
@@ -247,6 +282,12 @@ function normalizeStepResult(value) {
247
282
  endedAt: 0
248
283
  };
249
284
  }
285
+ function toStepResults(input, steps) {
286
+ return {
287
+ input,
288
+ ...normalizeStepResults(steps)
289
+ };
290
+ }
250
291
  function normalizeStepResults(steps) {
251
292
  if (!steps || typeof steps !== "object") return {};
252
293
  return Object.fromEntries(Object.entries(steps).map(([id, value]) => [id, normalizeStepResult(value)]));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["delay"],"sources":["../src/run.ts","../src/workflow.ts"],"sourcesContent":["import { setTimeout as delay } from 'node:timers/promises';\nimport { RequestContext } from '@mastra/core/di';\nimport { Run } from '@mastra/core/workflows';\nimport type { Step, WorkflowResult, WorkflowRunStartOptions } from '@mastra/core/workflows';\nimport { CancelledFailure, WorkflowExecutionAlreadyStartedError, WorkflowFailedError } from '@temporalio/client';\nimport type { Client, WorkflowHandle } from '@temporalio/client';\nimport type { TemporalEngineType } from './types';\nimport { toWorkflowType } from './utils';\n\ntype TemporalRunStartArgs<TState, TInput, TRequestContext> = {\n inputData?: TInput;\n initialState?: TState;\n requestContext?: RequestContext<TRequestContext>;\n} & WorkflowRunStartOptions;\n\nexport class TemporalWorkflowStatusUnknownError extends Error {\n constructor(runId: string, cause: unknown, afterResumeSignal = false) {\n super(\n afterResumeSignal\n ? `Unable to determine Temporal workflow status for run \"${runId}\" after sending a resume signal. The signal may have been delivered; do not retry resume() blindly.`\n : `Unable to determine Temporal workflow status for run \"${runId}\".`,\n { cause },\n );\n this.name = 'TemporalWorkflowStatusUnknownError';\n }\n}\n\nexport class TemporalRun<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext> {\n private readonly client: Client;\n private readonly taskQueue: string;\n\n constructor(\n params: ConstructorParameters<typeof Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>[0],\n temporalParams: {\n client: Client;\n taskQueue: string;\n },\n ) {\n super(params);\n\n this.client = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n }\n\n async start(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n const result = this.failedResult(input, initialState, error);\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(result, requestContext);\n }\n return result;\n }\n\n return this.awaitResultOrSuspended(handle, input, initialState, requestContext);\n }\n\n private dispatch(\n args: TemporalRunStartArgs<TState, TInput, TRequestContext>,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowHandle> {\n return this.client.workflow.start(toWorkflowType(this.workflowId), {\n taskQueue: this.taskQueue,\n workflowId: this.runId,\n args: [\n {\n inputData: input,\n initialState,\n requestContext: Object.fromEntries(requestContext.entries()),\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions: args.outputOptions,\n tracingOptions: args.tracingOptions,\n perStep: args.perStep,\n validateInputs: this.validateInputs,\n },\n ],\n });\n }\n\n private async awaitResult(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const result = await this.resolveResult(handle, input, initialState);\n await this.invokeLifecycleCallbacks(result, requestContext);\n return result;\n }\n\n private async queryStatus(handle: WorkflowHandle, afterResumeSignal = false): Promise<unknown> {\n if (typeof handle.query !== 'function') {\n return undefined;\n }\n\n try {\n return await handle.query('mastra.status');\n } catch (error) {\n throw new TemporalWorkflowStatusUnknownError(this.runId, error, afterResumeSignal);\n }\n }\n\n private async awaitResultOrSuspended(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n previousSuspension?: { stepId: string; suspendedAt?: number },\n afterResumeSignal = false,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const terminal = this.resolveResult(handle, input, initialState);\n\n while (true) {\n const result = await Promise.race([\n terminal.then(result => ({ type: 'terminal' as const, result })),\n delay(100).then(() => ({ type: 'poll' as const })),\n ]);\n\n if (result.type === 'terminal') {\n await this.invokeLifecycleCallbacks(result.result, requestContext);\n return result.result;\n }\n\n const status = await this.queryStatus(handle, afterResumeSignal);\n if (isSuspendedWorkflowResult(status)) {\n const previousStep = previousSuspension ? status.steps[previousSuspension.stepId] : undefined;\n const isPreviousSuspension =\n previousSuspension !== undefined &&\n isSuspendedStepResult(previousStep) &&\n previousStep.suspendedAt === previousSuspension.suspendedAt;\n if (isPreviousSuspension) {\n continue;\n }\n\n const suspended = {\n ...status,\n steps: normalizeStepResults(status.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n await this.invokeLifecycleCallbacks(suspended, requestContext);\n return suspended;\n }\n }\n }\n\n private async resolveResult(handle: WorkflowHandle, input: unknown, initialState: unknown) {\n try {\n // The generated Temporal workflow returns the execution result ({ status, result, state, steps }).\n const output = (await handle.result()) as WorkflowResult<TState, TInput, TOutput, TSteps>;\n return {\n ...output,\n ...(input !== undefined && { input: input as TInput }),\n steps: normalizeStepResults(output.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n } catch (error) {\n if (error instanceof WorkflowFailedError && error.cause instanceof CancelledFailure) {\n return {\n status: 'canceled',\n input: input as TInput,\n state: initialState,\n steps: {},\n } as unknown as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n return this.failedResult(input, initialState, error);\n }\n }\n\n private failedResult(input: unknown, initialState: unknown, error: unknown) {\n return {\n status: 'failed',\n input: input as TInput,\n error: error instanceof Error ? error : new Error(String(error)),\n state: initialState,\n steps: {},\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n // Lifecycle hooks are closures that cannot run inside the deterministic Temporal workflow\n // sandbox, so they run here in the process that started the run, using core hook semantics.\n private invokeStartCallback(input: unknown, initialState: unknown, requestContext: RequestContext) {\n return this.executionEngine.invokeStartCallback({\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n getInitData: () => input,\n requestContext,\n state: (initialState ?? {}) as Record<string, any>,\n });\n }\n\n private invokeLifecycleCallbacks(\n result: WorkflowResult<TState, TInput, TOutput, TSteps>,\n requestContext: RequestContext,\n ) {\n return this.executionEngine.invokeLifecycleCallbacks({\n status: result.status,\n result: result.status === 'success' ? result.result : undefined,\n error: result.status === 'failed' ? result.error : undefined,\n steps: result.steps,\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n input: result.input,\n requestContext,\n state: (result.state ?? {}) as Record<string, any>,\n });\n }\n\n private async resumePayload(params: {\n step?:\n | Step<string, any, any, any, any, any, TemporalEngineType, any>\n | Step<string, any, any, any, any, any, TemporalEngineType, any>[]\n | string\n | string[];\n label?: string;\n resumeData?: unknown;\n }) {\n const step = Array.isArray(params.step) ? params.step.at(-1) : params.step;\n const stepId = typeof step === 'string' ? step : step?.id;\n const resumeData = await this._validateResumeData(\n params.resumeData,\n stepId ? this.workflowSteps[stepId] : undefined,\n );\n\n return {\n ...(stepId !== undefined && { step: stepId }),\n ...(params.label !== undefined && { label: params.label }),\n resumeData,\n };\n }\n\n async cancel() {\n await this.client.workflow.getHandle(this.runId).cancel();\n await super.cancel();\n }\n\n private unsupported(method: string): never {\n throw new Error(`@mastra/temporal does not support ${method}() yet. Use start() or startAsync() instead.`);\n }\n\n override stream(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['stream']>\n ): never {\n return this.unsupported('stream');\n }\n\n override streamLegacy(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['streamLegacy']>\n ): never {\n return this.unsupported('streamLegacy');\n }\n\n override resumeStream(..._args: unknown[]): never {\n return this.unsupported('resumeStream');\n }\n\n override async resume<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n await this._validateRequestContext(params.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (params.requestContext ?? new RequestContext()) as RequestContext;\n const handle = this.client.workflow.getHandle(this.runId);\n const payload = await this.resumePayload(params);\n const status = await this.queryStatus(handle);\n const stepId = isSuspendedWorkflowResult(status)\n ? (payload.step ??\n (payload.label ? status.resumeLabels?.[payload.label]?.stepId : undefined) ??\n (status.suspended?.length === 1 && status.suspended[0]?.length === 1 ? status.suspended[0][0] : undefined))\n : undefined;\n const previousStep = stepId && isSuspendedWorkflowResult(status) ? status.steps[stepId] : undefined;\n const previousSuspension =\n stepId && isSuspendedStepResult(previousStep) ? { stepId, suspendedAt: previousStep.suspendedAt } : undefined;\n await handle.signal('mastra.resume', payload);\n return this.awaitResultOrSuspended(handle, undefined, undefined, requestContext, previousSuspension, true);\n }\n\n override async resumeAsync<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n const handle = this.client.workflow.getHandle(this.runId);\n await handle.signal('mastra.resume', await this.resumePayload(params));\n return { runId: this.runId };\n }\n\n override restart(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['restart']>\n ): never {\n return this.unsupported('restart');\n }\n\n override timeTravel(..._args: unknown[]): never {\n return this.unsupported('timeTravel');\n }\n\n override timeTravelStream(..._args: unknown[]): never {\n return this.unsupported('timeTravelStream');\n }\n\n async startAsync(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(this.failedResult(input, initialState, error), requestContext);\n }\n throw error;\n }\n\n const { onFinish, onError } = this.executionEngine.options;\n if (onFinish || onError) {\n // Like core startAsync(), terminal hooks fire in the background from this process.\n // They are best-effort: if this process exits before the run ends, they do not fire.\n void this.awaitResult(handle, input, initialState, requestContext);\n }\n\n return { runId: this.runId };\n }\n}\n\nfunction isSuspendedWorkflowResult(value: unknown): value is {\n status: 'suspended';\n steps: Record<string, unknown>;\n suspended?: string[][];\n resumeLabels?: Record<string, { stepId: string }>;\n} {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { status?: unknown }).status === 'suspended' &&\n typeof (value as { steps?: unknown }).steps === 'object' &&\n (value as { steps?: unknown }).steps !== null\n );\n}\n\nfunction isSuspendedStepResult(value: unknown): value is { status: 'suspended'; suspendedAt?: number } {\n return typeof value === 'object' && value !== null && (value as { status?: unknown }).status === 'suspended';\n}\n\n// The worker only records successful steps; a failed run rejects handle.result() instead.\nfunction normalizeStepResult(value: unknown): unknown {\n if (typeof value !== 'object' || value === null) {\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n }\n\n const record = value as Record<string, unknown>;\n if (record.__temporalStepResult === true && record.status === 'suspended' && typeof record.suspendedAt === 'number') {\n return {\n status: 'suspended',\n payload: record.payload,\n suspendPayload: record.suspendPayload,\n suspendedAt: record.suspendedAt,\n };\n }\n\n if (\n record.__temporalStepResult === true &&\n record.status === 'success' &&\n typeof record.startedAt === 'number' &&\n typeof record.endedAt === 'number'\n ) {\n return {\n status: 'success',\n payload: record.payload,\n output: record.output,\n ...(record.suspendPayload !== undefined && { suspendPayload: record.suspendPayload }),\n ...(record.resumeData !== undefined && { resumeData: record.resumeData }),\n startedAt: record.startedAt,\n endedAt: record.endedAt,\n };\n }\n\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n}\n\n// Workers built before step results used the core StepResult shape return raw step outputs.\nfunction normalizeStepResults<T>(steps: T): T {\n if (!steps || typeof steps !== 'object') {\n return {} as T;\n }\n return Object.fromEntries(Object.entries(steps).map(([id, value]) => [id, normalizeStepResult(value)])) as T;\n}\n","import { Workflow, createStep } from '@mastra/core/workflows';\nimport type { Step, WorkflowConfig } from '@mastra/core/workflows';\nimport type { Client } from '@temporalio/client';\nimport type { ActivityOptions } from '@temporalio/workflow';\nimport { TemporalRun } from './run';\nimport type { TemporalEngineType } from './types';\n\nexport type TemporalWorkflowParams = {\n client: Client;\n taskQueue: string;\n startToCloseTimeout?: string;\n retry?: ActivityOptions['retry'];\n};\n\nexport class TemporalWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TPrevSchema = TInput,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Workflow<TemporalEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema, TRequestContext> {\n private readonly temporalClient: Client;\n readonly taskQueue: string;\n readonly startToCloseTimeout: string;\n\n constructor(\n params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporalParams: TemporalWorkflowParams,\n ) {\n super(params);\n\n this.engineType = 'temporal';\n this.temporalClient = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n this.startToCloseTimeout = temporalParams.startToCloseTimeout ?? '1 minute';\n }\n\n async createRun(options?: { runId?: string; resourceId?: string; disableScorers?: boolean }) {\n const runId = options?.runId ?? crypto.randomUUID();\n const run = new TemporalRun<TSteps, TState, TInput, TOutput, TRequestContext>(\n {\n workflowId: this.id,\n runId,\n resourceId: options?.resourceId,\n stateSchema: this.stateSchema,\n inputSchema: this.inputSchema,\n requestContextSchema: this.requestContextSchema,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n mastra: this.mastra,\n retryConfig: this.retryConfig,\n serializedStepGraph: this.serializedStepGraph,\n disableScorers: options?.disableScorers,\n tracingPolicy: this.options.tracingPolicy,\n workflowSteps: this.steps,\n validateInputs: this.options.validateInputs,\n workflowEngineType: this.engineType,\n cleanup: undefined,\n },\n {\n client: this.temporalClient,\n taskQueue: this.taskQueue,\n },\n );\n\n this.runs.set(runId, run);\n return run;\n }\n}\n\nexport function createWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n>(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporal: TemporalWorkflowParams,\n) {\n return new TemporalWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TInput, TRequestContext>(config, temporal);\n}\n\nexport function init(temporalParams: TemporalWorkflowParams) {\n return {\n createWorkflow: <\n TWorkflowId extends string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TSteps extends Step[] = Step[],\n TRequestContext extends Record<string, any> | unknown = unknown,\n >(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n ) => createWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TRequestContext>(config, temporalParams),\n createStep,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["delay"],"sources":["../src/run.ts","../src/workflow.ts"],"sourcesContent":["import { setTimeout as delay } from 'node:timers/promises';\nimport { RequestContext } from '@mastra/core/di';\nimport { getErrorFromUnknown } from '@mastra/core/error';\nimport { Run } from '@mastra/core/workflows';\nimport type { Step, WorkflowResult, WorkflowRunStartOptions } from '@mastra/core/workflows';\nimport {\n ApplicationFailure,\n CancelledFailure,\n WorkflowExecutionAlreadyStartedError,\n WorkflowFailedError,\n} from '@temporalio/client';\nimport type { Client, WorkflowHandle } from '@temporalio/client';\nimport type { WorkflowFailureDetails } from './transforms/temporal-workflow-runtime';\nimport type { TemporalEngineType } from './types';\nimport { toWorkflowType } from './utils';\n\n// Runs failed by a Worker that predates these details return undefined.\nfunction toFailureDetails(error: unknown): WorkflowFailureDetails | undefined {\n if (!(error instanceof WorkflowFailedError) || !(error.cause instanceof ApplicationFailure)) {\n return undefined;\n }\n\n const details = error.cause.details?.[0] as Partial<WorkflowFailureDetails> | undefined;\n return details?.error && details.steps ? (details as WorkflowFailureDetails) : undefined;\n}\n\nfunction toError(error: WorkflowFailureDetails['error']): Error {\n return getErrorFromUnknown(error, { serializeStack: false });\n}\n\ntype TemporalRunStartArgs<TState, TInput, TRequestContext> = {\n inputData?: TInput;\n initialState?: TState;\n requestContext?: RequestContext<TRequestContext>;\n} & WorkflowRunStartOptions;\n\nexport class TemporalWorkflowStatusUnknownError extends Error {\n constructor(runId: string, cause: unknown, afterResumeSignal = false) {\n super(\n afterResumeSignal\n ? `Unable to determine Temporal workflow status for run \"${runId}\" after sending a resume signal. The signal may have been delivered; do not retry resume() blindly.`\n : `Unable to determine Temporal workflow status for run \"${runId}\".`,\n { cause },\n );\n this.name = 'TemporalWorkflowStatusUnknownError';\n }\n}\n\nexport class TemporalRun<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext> {\n private readonly client: Client;\n private readonly taskQueue: string;\n\n constructor(\n params: ConstructorParameters<typeof Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>[0],\n temporalParams: {\n client: Client;\n taskQueue: string;\n },\n ) {\n super(params);\n\n this.client = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n }\n\n async start(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n const result = this.failedResult(input, initialState, error);\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(result, requestContext);\n }\n return result;\n }\n\n return this.awaitResultOrSuspended(handle, input, initialState, requestContext);\n }\n\n private dispatch(\n args: TemporalRunStartArgs<TState, TInput, TRequestContext>,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowHandle> {\n return this.client.workflow.start(toWorkflowType(this.workflowId), {\n taskQueue: this.taskQueue,\n workflowId: this.runId,\n args: [\n {\n inputData: input,\n initialState,\n requestContext: Object.fromEntries(requestContext.entries()),\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions: args.outputOptions,\n tracingOptions: args.tracingOptions,\n perStep: args.perStep,\n validateInputs: this.validateInputs,\n },\n ],\n });\n }\n\n private async awaitResult(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const result = await this.resolveResult(handle, input, initialState);\n await this.invokeLifecycleCallbacks(result, requestContext);\n return result;\n }\n\n private async queryStatus(handle: WorkflowHandle, afterResumeSignal = false): Promise<unknown> {\n if (typeof handle.query !== 'function') {\n return undefined;\n }\n\n try {\n return await handle.query('mastra.status');\n } catch (error) {\n throw new TemporalWorkflowStatusUnknownError(this.runId, error, afterResumeSignal);\n }\n }\n\n private async awaitResultOrSuspended(\n handle: WorkflowHandle,\n input: unknown,\n initialState: unknown,\n requestContext: RequestContext,\n previousSuspension?: { stepId: string; suspendedAt?: number },\n afterResumeSignal = false,\n ): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n const terminal = this.resolveResult(handle, input, initialState);\n\n while (true) {\n const result = await Promise.race([\n terminal.then(result => ({ type: 'terminal' as const, result })),\n delay(100).then(() => ({ type: 'poll' as const })),\n ]);\n\n if (result.type === 'terminal') {\n await this.invokeLifecycleCallbacks(result.result, requestContext);\n return result.result;\n }\n\n const status = await this.queryStatus(handle, afterResumeSignal);\n if (isSuspendedWorkflowResult(status)) {\n const previousStep = previousSuspension ? status.steps[previousSuspension.stepId] : undefined;\n const isPreviousSuspension =\n previousSuspension !== undefined &&\n isSuspendedStepResult(previousStep) &&\n previousStep.suspendedAt === previousSuspension.suspendedAt;\n if (isPreviousSuspension) {\n continue;\n }\n\n const suspended = {\n ...status,\n steps: toStepResults(status.input, status.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n await this.invokeLifecycleCallbacks(suspended, requestContext);\n return suspended;\n }\n }\n }\n\n private async resolveResult(handle: WorkflowHandle, input: unknown, initialState: unknown) {\n try {\n // The generated Temporal workflow returns the execution result ({ status, result, state, steps }).\n const output = (await handle.result()) as WorkflowResult<TState, TInput, TOutput, TSteps>;\n return {\n ...output,\n ...(input !== undefined && { input: input as TInput }),\n steps: toStepResults(input !== undefined ? input : output.input, output.steps),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n } catch (error) {\n if (error instanceof WorkflowFailedError && error.cause instanceof CancelledFailure) {\n return {\n status: 'canceled',\n input: input as TInput,\n state: initialState,\n steps: {},\n } as unknown as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n const failure = toFailureDetails(error);\n\n if (failure) {\n const steps = toStepResults(input, failure.steps);\n return (\n failure.tripwire\n ? { status: 'tripwire', input, tripwire: failure.tripwire, state: initialState, steps }\n : { status: 'failed', input, error: toError(failure.error), state: initialState, steps }\n ) as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n return this.failedResult(input, initialState, error);\n }\n }\n\n private failedResult(input: unknown, initialState: unknown, error: unknown) {\n return {\n status: 'failed',\n input: input as TInput,\n error: error instanceof Error ? error : new Error(String(error)),\n state: initialState,\n steps: toStepResults(input, {}),\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n\n // Lifecycle hooks are closures that cannot run inside the deterministic Temporal workflow\n // sandbox, so they run here in the process that started the run, using core hook semantics.\n private invokeStartCallback(input: unknown, initialState: unknown, requestContext: RequestContext) {\n return this.executionEngine.invokeStartCallback({\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n getInitData: () => input,\n requestContext,\n state: (initialState ?? {}) as Record<string, any>,\n });\n }\n\n private invokeLifecycleCallbacks(\n result: WorkflowResult<TState, TInput, TOutput, TSteps>,\n requestContext: RequestContext,\n ) {\n return this.executionEngine.invokeLifecycleCallbacks({\n status: result.status,\n result: result.status === 'success' ? result.result : undefined,\n error: result.status === 'failed' ? result.error : undefined,\n tripwire: result.status === 'tripwire' ? result.tripwire : undefined,\n steps: result.steps,\n runId: this.runId,\n workflowId: this.workflowId,\n resourceId: this.resourceId,\n input: result.input,\n requestContext,\n state: (result.state ?? {}) as Record<string, any>,\n });\n }\n\n private async resumePayload(params: {\n step?:\n | Step<string, any, any, any, any, any, TemporalEngineType, any>\n | Step<string, any, any, any, any, any, TemporalEngineType, any>[]\n | string\n | string[];\n label?: string;\n resumeData?: unknown;\n }) {\n const step = Array.isArray(params.step) ? params.step.at(-1) : params.step;\n const stepId = typeof step === 'string' ? step : step?.id;\n const resumeData = await this._validateResumeData(\n params.resumeData,\n stepId ? this.workflowSteps[stepId] : undefined,\n );\n\n return {\n ...(stepId !== undefined && { step: stepId }),\n ...(params.label !== undefined && { label: params.label }),\n resumeData,\n };\n }\n\n async cancel() {\n await this.client.workflow.getHandle(this.runId).cancel();\n await super.cancel();\n }\n\n private unsupported(method: string): never {\n throw new Error(`@mastra/temporal does not support ${method}() yet. Use start() or startAsync() instead.`);\n }\n\n override stream(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['stream']>\n ): never {\n return this.unsupported('stream');\n }\n\n override streamLegacy(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['streamLegacy']>\n ): never {\n return this.unsupported('streamLegacy');\n }\n\n override resumeStream(..._args: unknown[]): never {\n return this.unsupported('resumeStream');\n }\n\n override async resume<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n await this._validateRequestContext(params.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (params.requestContext ?? new RequestContext()) as RequestContext;\n const handle = this.client.workflow.getHandle(this.runId);\n const payload = await this.resumePayload(params);\n const status = await this.queryStatus(handle);\n const stepId = isSuspendedWorkflowResult(status)\n ? (payload.step ??\n (payload.label ? status.resumeLabels?.[payload.label]?.stepId : undefined) ??\n (status.suspended?.length === 1 && status.suspended[0]?.length === 1 ? status.suspended[0][0] : undefined))\n : undefined;\n const previousStep = stepId && isSuspendedWorkflowResult(status) ? status.steps[stepId] : undefined;\n const previousSuspension =\n stepId && isSuspendedStepResult(previousStep) ? { stepId, suspendedAt: previousStep.suspendedAt } : undefined;\n await handle.signal('mastra.resume', payload);\n return this.awaitResultOrSuspended(handle, undefined, undefined, requestContext, previousSuspension, true);\n }\n\n override async resumeAsync<TResume>(params: {\n resumeData?: TResume;\n step?:\n | Step<string, any, any, any, TResume, any, TemporalEngineType, any>\n | [\n ...Step<string, any, any, any, any, any, TemporalEngineType, any>[],\n Step<string, any, any, any, TResume, any, TemporalEngineType, any>,\n ]\n | string\n | string[];\n label?: string;\n requestContext?: RequestContext<TRequestContext>;\n retryCount?: number;\n tracingOptions?: any;\n outputWriter?: any;\n outputOptions?: {\n includeState?: boolean;\n includeResumeLabels?: boolean;\n };\n forEachIndex?: number;\n perStep?: boolean;\n actor?: any;\n }) {\n const handle = this.client.workflow.getHandle(this.runId);\n await handle.signal('mastra.resume', await this.resumePayload(params));\n return { runId: this.runId };\n }\n\n override restart(\n ..._args: Parameters<Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>['restart']>\n ): never {\n return this.unsupported('restart');\n }\n\n override timeTravel(..._args: unknown[]): never {\n return this.unsupported('timeTravel');\n }\n\n override timeTravelStream(..._args: unknown[]): never {\n return this.unsupported('timeTravelStream');\n }\n\n async startAsync(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n const requestContext = (args.requestContext ?? new RequestContext()) as RequestContext;\n await this.invokeStartCallback(input, initialState, requestContext);\n\n let handle: WorkflowHandle;\n try {\n handle = await this.dispatch(args, input, initialState, requestContext);\n } catch (error) {\n if (!(error instanceof WorkflowExecutionAlreadyStartedError)) {\n await this.invokeLifecycleCallbacks(this.failedResult(input, initialState, error), requestContext);\n }\n throw error;\n }\n\n const { onFinish, onError } = this.executionEngine.options;\n if (onFinish || onError) {\n // Like core startAsync(), terminal hooks fire in the background from this process.\n // They are best-effort: if this process exits before the run ends, they do not fire.\n void this.awaitResult(handle, input, initialState, requestContext);\n }\n\n return { runId: this.runId };\n }\n}\n\nfunction isSuspendedWorkflowResult(value: unknown): value is {\n status: 'suspended';\n input?: unknown;\n steps: Record<string, unknown>;\n suspended?: string[][];\n resumeLabels?: Record<string, { stepId: string }>;\n} {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { status?: unknown }).status === 'suspended' &&\n typeof (value as { steps?: unknown }).steps === 'object' &&\n (value as { steps?: unknown }).steps !== null\n );\n}\n\nfunction isSuspendedStepResult(value: unknown): value is { status: 'suspended'; suspendedAt?: number } {\n return typeof value === 'object' && value !== null && (value as { status?: unknown }).status === 'suspended';\n}\n\n// Failed step records arrive in the failure details of a failed run, not in handle.result().\nfunction normalizeStepResult(value: unknown): unknown {\n if (typeof value !== 'object' || value === null) {\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n }\n\n const record = value as Record<string, unknown>;\n if (record.__temporalStepResult === true && record.status === 'failed') {\n return {\n status: 'failed',\n payload: record.payload,\n error: toError(record.error as WorkflowFailureDetails['error']),\n ...(record.tripwire !== undefined && { tripwire: record.tripwire }),\n startedAt: record.startedAt,\n endedAt: record.endedAt,\n };\n }\n\n if (record.__temporalStepResult === true && record.status === 'suspended' && typeof record.suspendedAt === 'number') {\n return {\n status: 'suspended',\n payload: record.payload,\n suspendPayload: record.suspendPayload,\n suspendedAt: record.suspendedAt,\n };\n }\n\n if (\n record.__temporalStepResult === true &&\n record.status === 'success' &&\n typeof record.startedAt === 'number' &&\n typeof record.endedAt === 'number'\n ) {\n return {\n status: 'success',\n payload: record.payload,\n output: record.output,\n ...(record.suspendPayload !== undefined && { suspendPayload: record.suspendPayload }),\n ...(record.resumeData !== undefined && { resumeData: record.resumeData }),\n startedAt: record.startedAt,\n endedAt: record.endedAt,\n };\n }\n\n return { status: 'success', output: value, startedAt: 0, endedAt: 0 };\n}\n\n// Like a local run, the step records start with the workflow input under `input`.\nfunction toStepResults<T>(input: unknown, steps: T): T {\n return { input, ...normalizeStepResults(steps) } as T;\n}\n\n// Workers built before step results used the core StepResult shape return raw step outputs.\nfunction normalizeStepResults<T>(steps: T): T {\n if (!steps || typeof steps !== 'object') {\n return {} as T;\n }\n return Object.fromEntries(Object.entries(steps).map(([id, value]) => [id, normalizeStepResult(value)])) as T;\n}\n","import { Workflow, createStep } from '@mastra/core/workflows';\nimport type { Step, WorkflowConfig } from '@mastra/core/workflows';\nimport type { Client } from '@temporalio/client';\nimport type { ActivityOptions } from '@temporalio/workflow';\nimport { TemporalRun } from './run';\nimport type { TemporalEngineType } from './types';\n\nexport type TemporalWorkflowParams = {\n client: Client;\n taskQueue: string;\n startToCloseTimeout?: string;\n retry?: ActivityOptions['retry'];\n};\n\nexport class TemporalWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TPrevSchema = TInput,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Workflow<TemporalEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema, TRequestContext> {\n private readonly temporalClient: Client;\n readonly taskQueue: string;\n readonly startToCloseTimeout: string;\n\n constructor(\n params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporalParams: TemporalWorkflowParams,\n ) {\n super(params);\n\n this.engineType = 'temporal';\n this.temporalClient = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n this.startToCloseTimeout = temporalParams.startToCloseTimeout ?? '1 minute';\n }\n\n async createRun(options?: { runId?: string; resourceId?: string; disableScorers?: boolean }) {\n const runId = options?.runId ?? crypto.randomUUID();\n const run = new TemporalRun<TSteps, TState, TInput, TOutput, TRequestContext>(\n {\n workflowId: this.id,\n runId,\n resourceId: options?.resourceId,\n stateSchema: this.stateSchema,\n inputSchema: this.inputSchema,\n requestContextSchema: this.requestContextSchema,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n mastra: this.mastra,\n retryConfig: this.retryConfig,\n serializedStepGraph: this.serializedStepGraph,\n disableScorers: options?.disableScorers,\n tracingPolicy: this.options.tracingPolicy,\n workflowSteps: this.steps,\n validateInputs: this.options.validateInputs,\n workflowEngineType: this.engineType,\n cleanup: undefined,\n },\n {\n client: this.temporalClient,\n taskQueue: this.taskQueue,\n },\n );\n\n this.runs.set(runId, run);\n return run;\n }\n}\n\nexport function createWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n>(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporal: TemporalWorkflowParams,\n) {\n return new TemporalWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TInput, TRequestContext>(config, temporal);\n}\n\nexport function init(temporalParams: TemporalWorkflowParams) {\n return {\n createWorkflow: <\n TWorkflowId extends string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TSteps extends Step[] = Step[],\n TRequestContext extends Record<string, any> | unknown = unknown,\n >(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n ) => createWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TRequestContext>(config, temporalParams),\n createStep,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA+EtE,qBAAa,YAAa,YAAW,YAAY;;IAO7C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJ9B,IAAI,SAAY;IAEhB,YACmB,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAsB,EAClD;IAeJ;;OAEG;IACG,QAAQ,CAAC,EACb,SAAS,EACT,WAA2B,GAC5B,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAE5D;IA4ED,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG;QAEnD,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC9C,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;KACzC,CAaA;IAEK,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBpE;CACF"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA6HtE,qBAAa,YAAa,YAAW,YAAY;;IAO7C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJ9B,IAAI,SAAY;IAEhB,YACmB,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAsB,EAClD;IAeJ;;OAEG;IACG,QAAQ,CAAC,EACb,SAAS,EACT,WAA2B,GAC5B,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAE5D;IA6ED,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG;QAEnD,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC9C,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;KACzC,CAaA;IAEK,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBpE;CACF"}
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}