@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 +44 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +45 -4
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/temporal-workflow-runtime.mjs +116 -17
- package/dist/transforms/temporal-workflow-runtime.d.mts +2 -2
- package/dist/transforms/temporal-workflow-runtime.d.mts.map +1 -1
- package/dist/worker.cjs +44 -4
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.js +45 -5
- package/dist/worker.js.map +1 -1
- package/package.json +3 -3
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:
|
|
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:
|
|
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)]));
|
package/dist/index.cjs.map
CHANGED
|
@@ -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":";;;;;;;;AAiBA,SAAS,iBAAiB,OAAoD;CAC5E,IAAI,EAAE,iBAAiBA,mBAAAA,wBAAwB,EAAE,MAAM,iBAAiBC,mBAAAA,qBACtE;CAGF,MAAM,UAAU,MAAM,MAAM,UAAU;CACtC,OAAO,SAAS,SAAS,QAAQ,QAAS,UAAqC,KAAA;AACjF;AAEA,SAAS,QAAQ,OAA+C;CAC9D,QAAA,GAAOC,mBAAAA,oBAAAA,CAAoB,OAAO,EAAE,gBAAgB,MAAM,CAAC;AAC7D;AAQA,IAAa,qCAAb,cAAwD,MAAM;CAC5D,YAAY,OAAe,OAAgB,oBAAoB,OAAO;EACpE,MACE,oBACI,yDAAyD,MAAM,uGAC/D,yDAAyD,MAAM,KACnE,EAAE,MAAM,CACV;EACA,KAAK,OAAO;CACd;AACF;AAEA,IAAa,cAAb,cAcUC,uBAAAA,IAA0E;CAClF;CACA;CAEA,YACE,QACA,gBAIA;EACA,MAAM,MAAM;EAEZ,KAAK,SAAS,eAAe;EAC7B,KAAK,YAAY,eAAe;CAClC;CAEA,MAAM,MAAM,OAA8D,CAAC,GAAG;EAC5E,MAAM,QAAQ,MAAM,KAAK,eAAe,KAAK,SAAS;EACtD,MAAM,eAAe,MAAM,KAAK,sBAAsB,KAAK,YAAY;EACvE,MAAM,KAAK,wBAAwB,KAAK,cAAqD;EAC7F,MAAM,iBAAkB,KAAK,kBAAkB,IAAIC,gBAAAA,eAAe;EAClE,MAAM,KAAK,oBAAoB,OAAO,cAAc,cAAc;EAElE,IAAI;EACJ,IAAI;GACF,SAAS,MAAM,KAAK,SAAS,MAAM,OAAO,cAAc,cAAc;EACxE,SAAS,OAAO;GACd,MAAM,SAAS,KAAK,aAAa,OAAO,cAAc,KAAK;GAC3D,IAAI,EAAE,iBAAiBC,mBAAAA,uCACrB,MAAM,KAAK,yBAAyB,QAAQ,cAAc;GAE5D,OAAO;EACT;EAEA,OAAO,KAAK,uBAAuB,QAAQ,OAAO,cAAc,cAAc;CAChF;CAEA,SACE,MACA,OACA,cACA,gBACyB;EACzB,OAAO,KAAK,OAAO,SAAS,MAAMC,cAAAA,eAAe,KAAK,UAAU,GAAG;GACjE,WAAW,KAAK;GAChB,YAAY,KAAK;GACjB,MAAM,CACJ;IACE,WAAW;IACX;IACA,gBAAgB,OAAO,YAAY,eAAe,QAAQ,CAAC;IAC3D,OAAO,KAAK;IACZ,YAAY,KAAK;IACjB,eAAe,KAAK;IACpB,gBAAgB,KAAK;IACrB,SAAS,KAAK;IACd,gBAAgB,KAAK;GACvB,CACF;EACF,CAAC;CACH;CAEA,MAAc,YACZ,QACA,OACA,cACA,gBAC0D;EAC1D,MAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,OAAO,YAAY;EACnE,MAAM,KAAK,yBAAyB,QAAQ,cAAc;EAC1D,OAAO;CACT;CAEA,MAAc,YAAY,QAAwB,oBAAoB,OAAyB;EAC7F,IAAI,OAAO,OAAO,UAAU,YAC1B;EAGF,IAAI;GACF,OAAO,MAAM,OAAO,MAAM,eAAe;EAC3C,SAAS,OAAO;GACd,MAAM,IAAI,mCAAmC,KAAK,OAAO,OAAO,iBAAiB;EACnF;CACF;CAEA,MAAc,uBACZ,QACA,OACA,cACA,gBACA,oBACA,oBAAoB,OACsC;EAC1D,MAAM,WAAW,KAAK,cAAc,QAAQ,OAAO,YAAY;EAE/D,OAAO,MAAM;GACX,MAAM,SAAS,MAAM,QAAQ,KAAK,CAChC,SAAS,MAAK,YAAW;IAAE,MAAM;IAAqB;GAAO,EAAE,IAAA,GAC/DC,gBAAAA,WAAAA,CAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,OAAgB,EAAE,CACnD,CAAC;GAED,IAAI,OAAO,SAAS,YAAY;IAC9B,MAAM,KAAK,yBAAyB,OAAO,QAAQ,cAAc;IACjE,OAAO,OAAO;GAChB;GAEA,MAAM,SAAS,MAAM,KAAK,YAAY,QAAQ,iBAAiB;GAC/D,IAAI,0BAA0B,MAAM,GAAG;IACrC,MAAM,eAAe,qBAAqB,OAAO,MAAM,mBAAmB,UAAU,KAAA;IAKpF,IAHE,uBAAuB,KAAA,KACvB,sBAAsB,YAAY,KAClC,aAAa,gBAAgB,mBAAmB,aAEhD;IAGF,MAAM,YAAY;KAChB,GAAG;KACH,OAAO,cAAc,OAAO,OAAO,OAAO,KAAK;IACjD;IACA,MAAM,KAAK,yBAAyB,WAAW,cAAc;IAC7D,OAAO;GACT;EACF;CACF;CAEA,MAAc,cAAc,QAAwB,OAAgB,cAAuB;EACzF,IAAI;GAEF,MAAM,SAAU,MAAM,OAAO,OAAO;GACpC,OAAO;IACL,GAAG;IACH,GAAI,UAAU,KAAA,KAAa,EAAS,MAAgB;IACpD,OAAO,cAAc,UAAU,KAAA,IAAY,QAAQ,OAAO,OAAO,OAAO,KAAK;GAC/E;EACF,SAAS,OAAO;GACd,IAAI,iBAAiBP,mBAAAA,uBAAuB,MAAM,iBAAiBQ,mBAAAA,kBACjE,OAAO;IACL,QAAQ;IACD;IACP,OAAO;IACP,OAAO,CAAC;GACV;GAGF,MAAM,UAAU,iBAAiB,KAAK;GAEtC,IAAI,SAAS;IACX,MAAM,QAAQ,cAAc,OAAO,QAAQ,KAAK;IAChD,OACE,QAAQ,WACJ;KAAE,QAAQ;KAAY;KAAO,UAAU,QAAQ;KAAU,OAAO;KAAc;IAAM,IACpF;KAAE,QAAQ;KAAU;KAAO,OAAO,QAAQ,QAAQ,KAAK;KAAG,OAAO;KAAc;IAAM;GAE7F;GAEA,OAAO,KAAK,aAAa,OAAO,cAAc,KAAK;EACrD;CACF;CAEA,aAAqB,OAAgB,cAAuB,OAAgB;EAC1E,OAAO;GACL,QAAQ;GACD;GACP,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;GAC/D,OAAO;GACP,OAAO,cAAc,OAAO,CAAC,CAAC;EAChC;CACF;CAIA,oBAA4B,OAAgB,cAAuB,gBAAgC;EACjG,OAAO,KAAK,gBAAgB,oBAAoB;GAC9C,OAAO,KAAK;GACZ,YAAY,KAAK;GACjB,YAAY,KAAK;GACjB,mBAAmB;GACnB;GACA,OAAQ,gBAAgB,CAAC;EAC3B,CAAC;CACH;CAEA,yBACE,QACA,gBACA;EACA,OAAO,KAAK,gBAAgB,yBAAyB;GACnD,QAAQ,OAAO;GACf,QAAQ,OAAO,WAAW,YAAY,OAAO,SAAS,KAAA;GACtD,OAAO,OAAO,WAAW,WAAW,OAAO,QAAQ,KAAA;GACnD,UAAU,OAAO,WAAW,aAAa,OAAO,WAAW,KAAA;GAC3D,OAAO,OAAO;GACd,OAAO,KAAK;GACZ,YAAY,KAAK;GACjB,YAAY,KAAK;GACjB,OAAO,OAAO;GACd;GACA,OAAQ,OAAO,SAAS,CAAC;EAC3B,CAAC;CACH;CAEA,MAAc,cAAc,QAQzB;EACD,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,IAAI,OAAO,KAAK,GAAG,EAAE,IAAI,OAAO;EACtE,MAAM,SAAS,OAAO,SAAS,WAAW,OAAO,MAAM;EACvD,MAAM,aAAa,MAAM,KAAK,oBAC5B,OAAO,YACP,SAAS,KAAK,cAAc,UAAU,KAAA,CACxC;EAEA,OAAO;GACL,GAAI,WAAW,KAAA,KAAa,EAAE,MAAM,OAAO;GAC3C,GAAI,OAAO,UAAU,KAAA,KAAa,EAAE,OAAO,OAAO,MAAM;GACxD;EACF;CACF;CAEA,MAAM,SAAS;EACb,MAAM,KAAK,OAAO,SAAS,UAAU,KAAK,KAAK,CAAC,CAAC,OAAO;EACxD,MAAM,MAAM,OAAO;CACrB;CAEA,YAAoB,QAAuB;EACzC,MAAM,IAAI,MAAM,qCAAqC,OAAO,6CAA6C;CAC3G;CAEA,OACE,GAAG,OACI;EACP,OAAO,KAAK,YAAY,QAAQ;CAClC;CAEA,aACE,GAAG,OACI;EACP,OAAO,KAAK,YAAY,cAAc;CACxC;CAEA,aAAsB,GAAG,OAAyB;EAChD,OAAO,KAAK,YAAY,cAAc;CACxC;CAEA,MAAe,OAAgB,QAsB5B;EACD,MAAM,KAAK,wBAAwB,OAAO,cAAqD;EAC/F,MAAM,iBAAkB,OAAO,kBAAkB,IAAIJ,gBAAAA,eAAe;EACpE,MAAM,SAAS,KAAK,OAAO,SAAS,UAAU,KAAK,KAAK;EACxD,MAAM,UAAU,MAAM,KAAK,cAAc,MAAM;EAC/C,MAAM,SAAS,MAAM,KAAK,YAAY,MAAM;EAC5C,MAAM,SAAS,0BAA0B,MAAM,IAC1C,QAAQ,SACR,QAAQ,QAAQ,OAAO,eAAe,QAAQ,MAAM,EAAE,SAAS,KAAA,OAC/D,OAAO,WAAW,WAAW,KAAK,OAAO,UAAU,EAAE,EAAE,WAAW,IAAI,OAAO,UAAU,EAAE,CAAC,KAAK,KAAA,KAChG,KAAA;EACJ,MAAM,eAAe,UAAU,0BAA0B,MAAM,IAAI,OAAO,MAAM,UAAU,KAAA;EAC1F,MAAM,qBACJ,UAAU,sBAAsB,YAAY,IAAI;GAAE;GAAQ,aAAa,aAAa;EAAY,IAAI,KAAA;EACtG,MAAM,OAAO,OAAO,iBAAiB,OAAO;EAC5C,OAAO,KAAK,uBAAuB,QAAQ,KAAA,GAAW,KAAA,GAAW,gBAAgB,oBAAoB,IAAI;CAC3G;CAEA,MAAe,YAAqB,QAsBjC;EAED,MADe,KAAK,OAAO,SAAS,UAAU,KAAK,KACxC,CAAC,CAAC,OAAO,iBAAiB,MAAM,KAAK,cAAc,MAAM,CAAC;EACrE,OAAO,EAAE,OAAO,KAAK,MAAM;CAC7B;CAEA,QACE,GAAG,OACI;EACP,OAAO,KAAK,YAAY,SAAS;CACnC;CAEA,WAAoB,GAAG,OAAyB;EAC9C,OAAO,KAAK,YAAY,YAAY;CACtC;CAEA,iBAA0B,GAAG,OAAyB;EACpD,OAAO,KAAK,YAAY,kBAAkB;CAC5C;CAEA,MAAM,WAAW,OAA8D,CAAC,GAAG;EACjF,MAAM,QAAQ,MAAM,KAAK,eAAe,KAAK,SAAS;EACtD,MAAM,eAAe,MAAM,KAAK,sBAAsB,KAAK,YAAY;EACvE,MAAM,KAAK,wBAAwB,KAAK,cAAqD;EAC7F,MAAM,iBAAkB,KAAK,kBAAkB,IAAIA,gBAAAA,eAAe;EAClE,MAAM,KAAK,oBAAoB,OAAO,cAAc,cAAc;EAElE,IAAI;EACJ,IAAI;GACF,SAAS,MAAM,KAAK,SAAS,MAAM,OAAO,cAAc,cAAc;EACxE,SAAS,OAAO;GACd,IAAI,EAAE,iBAAiBC,mBAAAA,uCACrB,MAAM,KAAK,yBAAyB,KAAK,aAAa,OAAO,cAAc,KAAK,GAAG,cAAc;GAEnG,MAAM;EACR;EAEA,MAAM,EAAE,UAAU,YAAY,KAAK,gBAAgB;EACnD,IAAI,YAAY,SAGd,KAAU,YAAY,QAAQ,OAAO,cAAc,cAAc;EAGnE,OAAO,EAAE,OAAO,KAAK,MAAM;CAC7B;AACF;AAEA,SAAS,0BAA0B,OAMjC;CACA,OACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA+B,WAAW,eAC3C,OAAQ,MAA8B,UAAU,YAC/C,MAA8B,UAAU;AAE7C;AAEA,SAAS,sBAAsB,OAAwE;CACrG,OAAO,OAAO,UAAU,YAAY,UAAU,QAAS,MAA+B,WAAW;AACnG;AAGA,SAAS,oBAAoB,OAAyB;CACpD,IAAI,OAAO,UAAU,YAAY,UAAU,MACzC,OAAO;EAAE,QAAQ;EAAW,QAAQ;EAAO,WAAW;EAAG,SAAS;CAAE;CAGtE,MAAM,SAAS;CACf,IAAI,OAAO,yBAAyB,QAAQ,OAAO,WAAW,UAC5D,OAAO;EACL,QAAQ;EACR,SAAS,OAAO;EAChB,OAAO,QAAQ,OAAO,KAAwC;EAC9D,GAAI,OAAO,aAAa,KAAA,KAAa,EAAE,UAAU,OAAO,SAAS;EACjE,WAAW,OAAO;EAClB,SAAS,OAAO;CAClB;CAGF,IAAI,OAAO,yBAAyB,QAAQ,OAAO,WAAW,eAAe,OAAO,OAAO,gBAAgB,UACzG,OAAO;EACL,QAAQ;EACR,SAAS,OAAO;EAChB,gBAAgB,OAAO;EACvB,aAAa,OAAO;CACtB;CAGF,IACE,OAAO,yBAAyB,QAChC,OAAO,WAAW,aAClB,OAAO,OAAO,cAAc,YAC5B,OAAO,OAAO,YAAY,UAE1B,OAAO;EACL,QAAQ;EACR,SAAS,OAAO;EAChB,QAAQ,OAAO;EACf,GAAI,OAAO,mBAAmB,KAAA,KAAa,EAAE,gBAAgB,OAAO,eAAe;EACnF,GAAI,OAAO,eAAe,KAAA,KAAa,EAAE,YAAY,OAAO,WAAW;EACvE,WAAW,OAAO;EAClB,SAAS,OAAO;CAClB;CAGF,OAAO;EAAE,QAAQ;EAAW,QAAQ;EAAO,WAAW;EAAG,SAAS;CAAE;AACtE;AAGA,SAAS,cAAiB,OAAgB,OAAa;CACrD,OAAO;EAAE;EAAO,GAAG,qBAAqB,KAAK;CAAE;AACjD;AAGA,SAAS,qBAAwB,OAAa;CAC5C,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO,CAAC;CAEV,OAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,oBAAoB,KAAK,CAAC,CAAC,CAAC;AACxG;;ACxeA,IAAa,mBAAb,cAgBUI,uBAAAA,SAAyG;CACjH;CACA;CACA;CAEA,YACE,QACA,gBACA;EACA,MAAM,MAAM;EAEZ,KAAK,aAAa;EAClB,KAAK,iBAAiB,eAAe;EACrC,KAAK,YAAY,eAAe;EAChC,KAAK,sBAAsB,eAAe,uBAAuB;CACnE;CAEA,MAAM,UAAU,SAA6E;EAC3F,MAAM,QAAQ,SAAS,SAAS,OAAO,WAAW;EAClD,MAAM,MAAM,IAAI,YACd;GACE,YAAY,KAAK;GACjB;GACA,YAAY,SAAS;GACrB,aAAa,KAAK;GAClB,aAAa,KAAK;GAClB,sBAAsB,KAAK;GAC3B,iBAAiB,KAAK;GACtB,gBAAgB,KAAK;GACrB,QAAQ,KAAK;GACb,aAAa,KAAK;GAClB,qBAAqB,KAAK;GAC1B,gBAAgB,SAAS;GACzB,eAAe,KAAK,QAAQ;GAC5B,eAAe,KAAK;GACpB,gBAAgB,KAAK,QAAQ;GAC7B,oBAAoB,KAAK;GACzB,SAAS,KAAA;EACX,GACA;GACE,QAAQ,KAAK;GACb,WAAW,KAAK;EAClB,CACF;EAEA,KAAK,KAAK,IAAI,OAAO,GAAG;EACxB,OAAO;CACT;AACF;AAEA,SAAgB,eAgBd,QACA,UACA;CACA,OAAO,IAAI,iBAAwF,QAAQ,QAAQ;AACrH;AAEA,SAAgB,KAAK,gBAAwC;CAC3D,OAAO;EACL,iBAQE,WACG,eAA8E,QAAQ,cAAc;EACzG,YAAA,uBAAA;CACF;AACF"}
|
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 {
|
|
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:
|
|
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:
|
|
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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"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -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;
|
|
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":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|