@proompteng/temporal-bun-sdk 0.1.0 → 0.3.0
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/README.md +98 -2
- package/dist/src/client/serialization.d.ts +30 -1
- package/dist/src/client/serialization.d.ts.map +1 -1
- package/dist/src/client/serialization.js +76 -3
- package/dist/src/client/serialization.js.map +1 -1
- package/dist/src/client/types.d.ts +26 -0
- package/dist/src/client/types.d.ts.map +1 -1
- package/dist/src/client.d.ts +10 -2
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +243 -1
- package/dist/src/client.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/proto/temporal/api/activity/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/batch/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/command/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/common/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/command_type_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/common_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts +7 -1
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js +8 -2
- package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/namespace_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/query_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/reset_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/schedule_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/update_pb.js +1 -1
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js +1 -1
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/export/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/failure/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/filter/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/history/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/nexus/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js +1 -1
- package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.js +1 -1
- package/dist/src/proto/temporal/api/protocol/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/query/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/replication/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/rules/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.js +1 -1
- package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.js +1 -1
- package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/update/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/version/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/worker/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js +1 -1
- package/dist/src/worker/concurrency.d.ts +8 -0
- package/dist/src/worker/concurrency.d.ts.map +1 -1
- package/dist/src/worker/concurrency.js +5 -9
- package/dist/src/worker/concurrency.js.map +1 -1
- package/dist/src/worker/runtime.d.ts.map +1 -1
- package/dist/src/worker/runtime.js +303 -29
- package/dist/src/worker/runtime.js.map +1 -1
- package/dist/src/worker/update-protocol.d.ts +33 -0
- package/dist/src/worker/update-protocol.d.ts.map +1 -0
- package/dist/src/worker/update-protocol.js +228 -0
- package/dist/src/worker/update-protocol.js.map +1 -0
- package/dist/src/workflow/context.d.ts +52 -1
- package/dist/src/workflow/context.d.ts.map +1 -1
- package/dist/src/workflow/context.js +212 -2
- package/dist/src/workflow/context.js.map +1 -1
- package/dist/src/workflow/definition.d.ts +29 -3
- package/dist/src/workflow/definition.d.ts.map +1 -1
- package/dist/src/workflow/definition.js +30 -4
- package/dist/src/workflow/definition.js.map +1 -1
- package/dist/src/workflow/determinism.d.ts +59 -0
- package/dist/src/workflow/determinism.d.ts.map +1 -1
- package/dist/src/workflow/determinism.js +76 -1
- package/dist/src/workflow/determinism.js.map +1 -1
- package/dist/src/workflow/errors.d.ts +3 -0
- package/dist/src/workflow/errors.d.ts.map +1 -1
- package/dist/src/workflow/errors.js +6 -0
- package/dist/src/workflow/errors.js.map +1 -1
- package/dist/src/workflow/executor.d.ts +53 -0
- package/dist/src/workflow/executor.d.ts.map +1 -1
- package/dist/src/workflow/executor.js +237 -6
- package/dist/src/workflow/executor.js.map +1 -1
- package/dist/src/workflow/inbound.d.ts +84 -0
- package/dist/src/workflow/inbound.d.ts.map +1 -0
- package/dist/src/workflow/inbound.js +65 -0
- package/dist/src/workflow/inbound.js.map +1 -0
- package/dist/src/workflow/index.d.ts +1 -0
- package/dist/src/workflow/index.d.ts.map +1 -1
- package/dist/src/workflow/index.js +1 -0
- package/dist/src/workflow/index.js.map +1 -1
- package/dist/src/workflow/replay.d.ts +24 -2
- package/dist/src/workflow/replay.d.ts.map +1 -1
- package/dist/src/workflow/replay.js +459 -14
- package/dist/src/workflow/replay.js.map +1 -1
- package/dist/src/workflows/index.d.ts +1 -1
- package/dist/src/workflows/index.d.ts.map +1 -1
- package/package.json +6 -1
- package/dist/bin/start-worker.js +0 -3
- package/dist/bin/temporal-bun.js +0 -3
- package/dist/src/build_id_preflight.d.ts +0 -7
- package/dist/src/build_id_preflight.d.ts.map +0 -1
- package/dist/src/build_id_preflight.js +0 -123
- package/dist/src/build_id_preflight.js.map +0 -1
- package/dist/src/client/serialization.test.d.ts +0 -2
- package/dist/src/client/serialization.test.d.ts.map +0 -1
- package/dist/src/client/serialization.test.js +0 -251
- package/dist/src/client/serialization.test.js.map +0 -1
- package/dist/src/core-bridge/client.d.ts +0 -36
- package/dist/src/core-bridge/client.d.ts.map +0 -1
- package/dist/src/core-bridge/client.js +0 -111
- package/dist/src/core-bridge/client.js.map +0 -1
- package/dist/src/core-bridge/index.d.ts +0 -4
- package/dist/src/core-bridge/index.d.ts.map +0 -1
- package/dist/src/core-bridge/index.js +0 -4
- package/dist/src/core-bridge/index.js.map +0 -1
- package/dist/src/core-bridge/runtime.d.ts +0 -20
- package/dist/src/core-bridge/runtime.d.ts.map +0 -1
- package/dist/src/core-bridge/runtime.js +0 -62
- package/dist/src/core-bridge/runtime.js.map +0 -1
- package/dist/src/core-bridge/runtime.test.d.ts +0 -2
- package/dist/src/core-bridge/runtime.test.d.ts.map +0 -1
- package/dist/src/core-bridge/runtime.test.js +0 -68
- package/dist/src/core-bridge/runtime.test.js.map +0 -1
- package/dist/src/internal/core-bridge/native.d.ts +0 -176
- package/dist/src/internal/core-bridge/native.d.ts.map +0 -1
- package/dist/src/internal/core-bridge/native.js +0 -1208
- package/dist/src/internal/core-bridge/native.js.map +0 -1
- package/dist/src/telemetry/runtime.d.ts +0 -5
- package/dist/src/telemetry/runtime.d.ts.map +0 -1
- package/dist/src/telemetry/runtime.js +0 -94
- package/dist/src/telemetry/runtime.js.map +0 -1
- package/dist/src/workflow/runtime/bootstrap.d.ts +0 -15
- package/dist/src/workflow/runtime/bootstrap.d.ts.map +0 -1
- package/dist/src/workflow/runtime/bootstrap.js +0 -124
- package/dist/src/workflow/runtime/bootstrap.js.map +0 -1
- package/dist/src/workflow/runtime/engine.d.ts +0 -21
- package/dist/src/workflow/runtime/engine.d.ts.map +0 -1
- package/dist/src/workflow/runtime/engine.js +0 -73
- package/dist/src/workflow/runtime/engine.js.map +0 -1
- package/dist/src/workflow/runtime/environment.d.ts +0 -29
- package/dist/src/workflow/runtime/environment.d.ts.map +0 -1
- package/dist/src/workflow/runtime/environment.js +0 -298
- package/dist/src/workflow/runtime/environment.js.map +0 -1
- package/dist/src/workflow/runtime/index.d.ts +0 -7
- package/dist/src/workflow/runtime/index.d.ts.map +0 -1
- package/dist/src/workflow/runtime/index.js +0 -4
- package/dist/src/workflow/runtime/index.js.map +0 -1
- package/dist/src/workflow/runtime/info.d.ts +0 -5
- package/dist/src/workflow/runtime/info.d.ts.map +0 -1
- package/dist/src/workflow/runtime/info.js +0 -22
- package/dist/src/workflow/runtime/info.js.map +0 -1
- package/dist/src/workflow/runtime/replay.d.ts +0 -26
- package/dist/src/workflow/runtime/replay.d.ts.map +0 -1
- package/dist/src/workflow/runtime/replay.js +0 -254
- package/dist/src/workflow/runtime/replay.js.map +0 -1
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import { resolve, sep } from 'node:path';
|
|
2
|
-
import { pathToFileURL } from 'node:url';
|
|
3
|
-
import { decodeSearchAttributes, decodeTypedSearchAttributes, } from '@temporalio/common/lib/converter/payload-search-attributes';
|
|
4
|
-
import { coresdk } from '@temporalio/proto';
|
|
5
|
-
import { createDefaultDataConverter, decodePayloadMapToValues, decodePayloadsToValues, encodeErrorToFailure, failureToError, } from '../../common/payloads';
|
|
6
|
-
import { ensureWorkflowRuntimeBootstrap, setWorkflowDataConverter, withTemporalGlobals } from './bootstrap';
|
|
7
|
-
import { convertParentWorkflowInfo, convertRootWorkflowInfo } from './info';
|
|
8
|
-
const SOURCE_MAP_STUB = Object.freeze({
|
|
9
|
-
version: '3',
|
|
10
|
-
file: '',
|
|
11
|
-
sources: [],
|
|
12
|
-
names: [],
|
|
13
|
-
mappings: '',
|
|
14
|
-
});
|
|
15
|
-
const makeModuleSpecifier = (absolutePath, runId) => {
|
|
16
|
-
const url = pathToFileURL(absolutePath);
|
|
17
|
-
// Use run identifier to avoid module cache collisions between workflow instances.
|
|
18
|
-
url.searchParams.set('run', runId);
|
|
19
|
-
return url.href;
|
|
20
|
-
};
|
|
21
|
-
const toArray = (value) => Array.from(value);
|
|
22
|
-
const flushMicrotasks = async () => {
|
|
23
|
-
await Promise.resolve();
|
|
24
|
-
};
|
|
25
|
-
export class WorkflowEnvironment {
|
|
26
|
-
#runId;
|
|
27
|
-
#info;
|
|
28
|
-
#randomnessSeed;
|
|
29
|
-
#registeredActivityNames;
|
|
30
|
-
#showStackTraceSources;
|
|
31
|
-
#workflowsModuleSpecifier;
|
|
32
|
-
#interceptors;
|
|
33
|
-
#dataConverter;
|
|
34
|
-
#disposed = false;
|
|
35
|
-
#workflowModule = null;
|
|
36
|
-
#interceptorsCache = null;
|
|
37
|
-
#workflowModuleApi = null;
|
|
38
|
-
#globalAttributes = null;
|
|
39
|
-
#activator = null;
|
|
40
|
-
constructor(options) {
|
|
41
|
-
ensureWorkflowRuntimeBootstrap();
|
|
42
|
-
this.#runId = options.info.runId;
|
|
43
|
-
this.#info = options.info;
|
|
44
|
-
this.#randomnessSeed = toArray(options.randomnessSeed);
|
|
45
|
-
this.#registeredActivityNames = options.registeredActivityNames;
|
|
46
|
-
this.#showStackTraceSources = options.showStackTraceSources;
|
|
47
|
-
this.#workflowsModuleSpecifier = makeModuleSpecifier(resolve(options.workflowsPath), options.info.runId);
|
|
48
|
-
this.#interceptors = Array.isArray(options.interceptors) ? [...options.interceptors] : [];
|
|
49
|
-
this.#dataConverter = options.dataConverter ?? createDefaultDataConverter();
|
|
50
|
-
}
|
|
51
|
-
static async create(options) {
|
|
52
|
-
const environment = new WorkflowEnvironment(options);
|
|
53
|
-
await environment.#initializeRuntime(options.now);
|
|
54
|
-
return environment;
|
|
55
|
-
}
|
|
56
|
-
get runId() {
|
|
57
|
-
return this.#runId;
|
|
58
|
-
}
|
|
59
|
-
async processActivation(activation) {
|
|
60
|
-
if (this.#disposed) {
|
|
61
|
-
throw new Error(`Workflow environment for run ${this.#runId} has been disposed`);
|
|
62
|
-
}
|
|
63
|
-
try {
|
|
64
|
-
const api = this.#workflowModuleApi ?? failWorkflowModuleNotLoaded(this.#runId);
|
|
65
|
-
this.#restoreWorkflowActivator();
|
|
66
|
-
await withTemporalGlobals({
|
|
67
|
-
importWorkflows: () => this.#workflowModule ?? failWorkflowModuleNotLoaded(this.#runId),
|
|
68
|
-
importInterceptors: () => this.#interceptorsCache ?? [],
|
|
69
|
-
}, async () => {
|
|
70
|
-
api.activate(activation);
|
|
71
|
-
await flushMicrotasks();
|
|
72
|
-
api.tryUnblockConditions?.();
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
const failure = await encodeErrorToFailure(this.#dataConverter, error instanceof Error ? error : new Error(String(error)));
|
|
77
|
-
const completion = coresdk.workflow_completion.WorkflowActivationCompletion.create({
|
|
78
|
-
runId: activation.runId,
|
|
79
|
-
failed: coresdk.workflow_completion.Failure.create({ failure }),
|
|
80
|
-
});
|
|
81
|
-
return { completion };
|
|
82
|
-
}
|
|
83
|
-
const api = this.#workflowModuleApi ?? failWorkflowModuleNotLoaded(this.#runId);
|
|
84
|
-
const activationCompletion = api.concludeActivation();
|
|
85
|
-
const commands = activationCompletion.successful?.commands ?? [];
|
|
86
|
-
const completion = coresdk.workflow_completion.WorkflowActivationCompletion.create({
|
|
87
|
-
runId: activation.runId,
|
|
88
|
-
successful: coresdk.workflow_completion.Success.create({
|
|
89
|
-
commands,
|
|
90
|
-
usedInternalFlags: activationCompletion.successful?.usedInternalFlags ?? [],
|
|
91
|
-
versioningBehavior: activationCompletion.successful?.versioningBehavior,
|
|
92
|
-
}),
|
|
93
|
-
});
|
|
94
|
-
return { completion };
|
|
95
|
-
}
|
|
96
|
-
dispose() {
|
|
97
|
-
if (this.#disposed) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
this.#disposed = true;
|
|
101
|
-
void withTemporalGlobals({
|
|
102
|
-
importWorkflows: () => this.#workflowModule ?? failWorkflowModuleNotLoaded(this.#runId),
|
|
103
|
-
importInterceptors: () => this.#interceptorsCache ?? [],
|
|
104
|
-
}, async () => {
|
|
105
|
-
const api = this.#workflowModuleApi ?? failWorkflowModuleNotLoaded(this.#runId);
|
|
106
|
-
api.dispose();
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
async #initializeRuntime(now) {
|
|
110
|
-
const workflowsModule = await import(this.#workflowsModuleSpecifier);
|
|
111
|
-
this.#workflowModule = workflowsModule;
|
|
112
|
-
const workflowApi = await import('@temporalio/workflow/lib/worker-interface.js');
|
|
113
|
-
const updateScope = await import('@temporalio/workflow/lib/update-scope.js');
|
|
114
|
-
patchAsyncLocalStoragePrototype(updateScope.AsyncLocalStorage?.prototype);
|
|
115
|
-
const cancellationScope = await import('@temporalio/workflow/lib/cancellation-scope.js');
|
|
116
|
-
patchAsyncLocalStoragePrototype(cancellationScope.AsyncLocalStorage?.prototype);
|
|
117
|
-
this.#workflowModuleApi = workflowApi;
|
|
118
|
-
if (this.#interceptors.length > 0) {
|
|
119
|
-
this.#interceptorsCache = await Promise.all(this.#interceptors.map(async (specifier) => await import(resolveInterceptorSpecifier(specifier))));
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
this.#interceptorsCache = [];
|
|
123
|
-
}
|
|
124
|
-
const timeSource = () => BigInt(Date.now()) * 1000n;
|
|
125
|
-
await withTemporalGlobals({
|
|
126
|
-
importWorkflows: () => workflowsModule,
|
|
127
|
-
importInterceptors: () => this.#interceptorsCache ?? [],
|
|
128
|
-
}, async () => {
|
|
129
|
-
setWorkflowDataConverter(this.#dataConverter);
|
|
130
|
-
workflowApi.initRuntime({
|
|
131
|
-
info: this.#info,
|
|
132
|
-
randomnessSeed: this.#randomnessSeed,
|
|
133
|
-
now,
|
|
134
|
-
showStackTraceSources: this.#showStackTraceSources,
|
|
135
|
-
sourceMap: SOURCE_MAP_STUB,
|
|
136
|
-
registeredActivityNames: this.#registeredActivityNames,
|
|
137
|
-
getTimeOfDay: timeSource,
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
const globalAttributes = (await import('@temporalio/workflow/lib/global-attributes.js'));
|
|
141
|
-
this.#globalAttributes = globalAttributes;
|
|
142
|
-
const activator = globalAttributes.maybeGetActivatorUntyped?.();
|
|
143
|
-
if (!activator) {
|
|
144
|
-
throw new Error('Workflow runtime failed to initialize activator for workflow environment');
|
|
145
|
-
}
|
|
146
|
-
this.#activator = activator;
|
|
147
|
-
}
|
|
148
|
-
#restoreWorkflowActivator() {
|
|
149
|
-
if (!this.#activator || !this.#globalAttributes?.setActivatorUntyped) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
this.#globalAttributes.setActivatorUntyped(this.#activator);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
const resolveInterceptorSpecifier = (specifier) => {
|
|
156
|
-
if (specifier.startsWith('file://') || specifier.startsWith('/') || /^[A-Za-z]:\\/.test(specifier)) {
|
|
157
|
-
return specifier;
|
|
158
|
-
}
|
|
159
|
-
const segments = specifier.split(/[\\/]/);
|
|
160
|
-
const resolved = resolve(process.cwd(), ...segments);
|
|
161
|
-
if (sep === '\\') {
|
|
162
|
-
return pathToFileURL(resolved).href;
|
|
163
|
-
}
|
|
164
|
-
return pathToFileURL(resolved).href;
|
|
165
|
-
};
|
|
166
|
-
export const buildWorkflowInfo = async (init, activation, runtime, dataConverter) => {
|
|
167
|
-
if (!init.workflowId || !init.workflowType) {
|
|
168
|
-
throw new TypeError('InitializeWorkflow activation is missing required workflow identifiers');
|
|
169
|
-
}
|
|
170
|
-
const searchAttributes = init.searchAttributes?.indexedFields ?? {};
|
|
171
|
-
const memoFields = init.memo?.fields;
|
|
172
|
-
const memo = await decodeMemoFields(memoFields, dataConverter);
|
|
173
|
-
const lastResult = await decodeLastResult(init.lastCompletionResult, dataConverter);
|
|
174
|
-
const lastFailure = init.continuedFailure ? await failureToError(dataConverter, init.continuedFailure) : undefined;
|
|
175
|
-
const info = {
|
|
176
|
-
workflowId: init.workflowId,
|
|
177
|
-
runId: activation.runId,
|
|
178
|
-
workflowType: init.workflowType,
|
|
179
|
-
searchAttributes: decodeSearchAttributes(searchAttributes),
|
|
180
|
-
typedSearchAttributes: decodeTypedSearchAttributes(searchAttributes),
|
|
181
|
-
memo,
|
|
182
|
-
parent: init.parentWorkflowInfo ? convertParentWorkflowInfo(init.parentWorkflowInfo) : undefined,
|
|
183
|
-
root: init.rootWorkflow ? convertRootWorkflowInfo(init.rootWorkflow) : undefined,
|
|
184
|
-
taskQueue: runtime.taskQueue,
|
|
185
|
-
namespace: runtime.namespace,
|
|
186
|
-
firstExecutionRunId: init.firstExecutionRunId ?? activation.runId,
|
|
187
|
-
continuedFromExecutionRunId: init.continuedFromExecutionRunId ?? undefined,
|
|
188
|
-
startTime: timestampToDate(init.startTime) ?? new Date(),
|
|
189
|
-
runStartTime: timestampToDate(activation.timestamp) ?? new Date(),
|
|
190
|
-
executionTimeoutMs: durationToMs(init.workflowExecutionTimeout),
|
|
191
|
-
executionExpirationTime: timestampToDate(init.workflowExecutionExpirationTime),
|
|
192
|
-
runTimeoutMs: durationToMs(init.workflowRunTimeout),
|
|
193
|
-
taskTimeoutMs: durationToMsRequired(init.workflowTaskTimeout, 'workflowTaskTimeout'),
|
|
194
|
-
retryPolicy: undefined,
|
|
195
|
-
attempt: init.attempt ?? 1,
|
|
196
|
-
cronSchedule: init.cronSchedule ?? undefined,
|
|
197
|
-
cronScheduleToScheduleInterval: durationToMs(init.cronScheduleToScheduleInterval),
|
|
198
|
-
historyLength: activation.historyLength ?? 0,
|
|
199
|
-
historySize: activation.historySizeBytes?.toNumber?.() ?? 0,
|
|
200
|
-
continueAsNewSuggested: activation.continueAsNewSuggested ?? false,
|
|
201
|
-
currentBuildId: activation.deploymentVersionForCurrentTask?.buildId,
|
|
202
|
-
currentDeploymentVersion: convertDeploymentVersion(activation.deploymentVersionForCurrentTask),
|
|
203
|
-
unsafe: {
|
|
204
|
-
now: () => Date.now(),
|
|
205
|
-
isReplaying: activation.isReplaying ?? false,
|
|
206
|
-
},
|
|
207
|
-
priority: undefined,
|
|
208
|
-
lastResult,
|
|
209
|
-
lastFailure,
|
|
210
|
-
};
|
|
211
|
-
return info;
|
|
212
|
-
};
|
|
213
|
-
const convertDeploymentVersion = (version) => {
|
|
214
|
-
if (!version?.buildId || !version.deploymentName) {
|
|
215
|
-
return undefined;
|
|
216
|
-
}
|
|
217
|
-
return {
|
|
218
|
-
buildId: version.buildId,
|
|
219
|
-
deploymentName: version.deploymentName,
|
|
220
|
-
};
|
|
221
|
-
};
|
|
222
|
-
const decodeMemoFields = async (fields, converter) => {
|
|
223
|
-
if (!fields) {
|
|
224
|
-
return {};
|
|
225
|
-
}
|
|
226
|
-
const decoded = await decodePayloadMapToValues(converter, fields);
|
|
227
|
-
return decoded ?? {};
|
|
228
|
-
};
|
|
229
|
-
const decodeLastResult = async (payloads, converter) => {
|
|
230
|
-
const list = payloads?.payloads;
|
|
231
|
-
if (!list || list.length === 0) {
|
|
232
|
-
return undefined;
|
|
233
|
-
}
|
|
234
|
-
const values = await decodePayloadsToValues(converter, list);
|
|
235
|
-
if (!values.length) {
|
|
236
|
-
return undefined;
|
|
237
|
-
}
|
|
238
|
-
return values[0];
|
|
239
|
-
};
|
|
240
|
-
const timestampToDate = (timestamp) => {
|
|
241
|
-
if (!timestamp) {
|
|
242
|
-
return undefined;
|
|
243
|
-
}
|
|
244
|
-
const seconds = toNumber(timestamp.seconds);
|
|
245
|
-
const millis = seconds * 1000 + Math.floor((timestamp.nanos ?? 0) / 1_000_000);
|
|
246
|
-
return new Date(millis);
|
|
247
|
-
};
|
|
248
|
-
const durationToMs = (duration) => {
|
|
249
|
-
if (!duration) {
|
|
250
|
-
return undefined;
|
|
251
|
-
}
|
|
252
|
-
const seconds = toNumber(duration.seconds);
|
|
253
|
-
return seconds * 1000 + Math.floor((duration.nanos ?? 0) / 1_000_000);
|
|
254
|
-
};
|
|
255
|
-
const durationToMsRequired = (duration, label) => {
|
|
256
|
-
const ms = durationToMs(duration);
|
|
257
|
-
if (ms === undefined) {
|
|
258
|
-
throw new Error(`${label} must be provided`);
|
|
259
|
-
}
|
|
260
|
-
return ms;
|
|
261
|
-
};
|
|
262
|
-
const toNumber = (value) => {
|
|
263
|
-
if (value === null || value === undefined) {
|
|
264
|
-
return 0;
|
|
265
|
-
}
|
|
266
|
-
if (typeof value === 'number') {
|
|
267
|
-
return value;
|
|
268
|
-
}
|
|
269
|
-
if (typeof value === 'string') {
|
|
270
|
-
return Number(value);
|
|
271
|
-
}
|
|
272
|
-
return value.toNumber();
|
|
273
|
-
};
|
|
274
|
-
const failWorkflowModuleNotLoaded = (runId) => {
|
|
275
|
-
throw new Error(`Workflow module was not initialized for workflow run ${runId}`);
|
|
276
|
-
};
|
|
277
|
-
const patchAsyncLocalStoragePrototype = (proto) => {
|
|
278
|
-
if (!proto || typeof proto.getStore === 'function') {
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
proto.run = function run(value, fn) {
|
|
282
|
-
const previous = this._current;
|
|
283
|
-
this._current = value;
|
|
284
|
-
try {
|
|
285
|
-
return fn();
|
|
286
|
-
}
|
|
287
|
-
finally {
|
|
288
|
-
this._current = previous;
|
|
289
|
-
}
|
|
290
|
-
};
|
|
291
|
-
proto.getStore = function getStore() {
|
|
292
|
-
return this._current;
|
|
293
|
-
};
|
|
294
|
-
proto.disable = function disable() {
|
|
295
|
-
this._current = undefined;
|
|
296
|
-
};
|
|
297
|
-
};
|
|
298
|
-
//# sourceMappingURL=environment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/workflow/runtime/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export type { WorkflowEngineOptions, WorkflowTaskContext } from './engine';
|
|
2
|
-
export { WorkflowEngine } from './engine';
|
|
3
|
-
export type { WorkflowActivationResult } from './environment';
|
|
4
|
-
export { WorkflowEnvironment } from './environment';
|
|
5
|
-
export type { ReplayHistoryInput, ReplayHistoryIterable, ReplayOptions } from './replay';
|
|
6
|
-
export { runReplayHistories, runReplayHistory } from './replay';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/workflow/runtime/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,YAAY,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/workflow/runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { coresdk, temporal } from '@temporalio/proto';
|
|
2
|
-
import type { ParentWorkflowInfo, RootWorkflowInfo } from '@temporalio/workflow';
|
|
3
|
-
export declare const convertParentWorkflowInfo: (parent: coresdk.common.INamespacedWorkflowExecution | null | undefined) => ParentWorkflowInfo | undefined;
|
|
4
|
-
export declare const convertRootWorkflowInfo: (root: temporal.api.common.v1.IWorkflowExecution | null | undefined) => RootWorkflowInfo | undefined;
|
|
5
|
-
//# sourceMappingURL=info.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../src/workflow/runtime/info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGhF,eAAO,MAAM,yBAAyB,GACpC,QAAQ,OAAO,CAAC,MAAM,CAAC,4BAA4B,GAAG,IAAI,GAAG,SAAS,KACrE,kBAAkB,GAAG,SAWvB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAkB,GAAG,IAAI,GAAG,SAAS,KACjE,gBAAgB,GAAG,SAWrB,CAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { IllegalStateError } from '@temporalio/workflow';
|
|
2
|
-
export const convertParentWorkflowInfo = (parent) => {
|
|
3
|
-
if (!parent) {
|
|
4
|
-
return undefined;
|
|
5
|
-
}
|
|
6
|
-
const { workflowId, runId, namespace } = parent;
|
|
7
|
-
if (!workflowId || !runId || !namespace) {
|
|
8
|
-
throw new IllegalStateError('Parent workflow execution is missing required fields');
|
|
9
|
-
}
|
|
10
|
-
return { workflowId, runId, namespace };
|
|
11
|
-
};
|
|
12
|
-
export const convertRootWorkflowInfo = (root) => {
|
|
13
|
-
if (!root) {
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
const { workflowId, runId } = root;
|
|
17
|
-
if (!workflowId || !runId) {
|
|
18
|
-
throw new IllegalStateError('Root workflow execution is missing required fields');
|
|
19
|
-
}
|
|
20
|
-
return { workflowId, runId };
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=info.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../src/workflow/runtime/info.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAAsE,EACtC,EAAE;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAC/C,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,IAAI,iBAAiB,CAAC,sDAAsD,CAAC,CAAA;IACrF,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAAkE,EACpC,EAAE;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IAClC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,iBAAiB,CAAC,oDAAoD,CAAC,CAAA;IACnF,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;AAC9B,CAAC,CAAA"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Buffer } from 'node:buffer';
|
|
2
|
-
import { temporal } from '@temporalio/proto';
|
|
3
|
-
import { type DataConverter } from '../../common/payloads';
|
|
4
|
-
import { type Runtime } from '../../core-bridge/runtime';
|
|
5
|
-
import { type WorkflowEngineOptions } from './engine';
|
|
6
|
-
type HistoryRecord = Record<string, unknown>;
|
|
7
|
-
type HistoryLike = temporal.api.history.v1.IHistory | HistoryRecord | string | Buffer | Uint8Array;
|
|
8
|
-
export interface ReplayHistoryInput {
|
|
9
|
-
history: HistoryLike;
|
|
10
|
-
workflowId?: string;
|
|
11
|
-
runId?: string;
|
|
12
|
-
namespace?: string;
|
|
13
|
-
taskQueue?: string;
|
|
14
|
-
}
|
|
15
|
-
export interface ReplayOptions extends Pick<WorkflowEngineOptions, 'workflowsPath' | 'showStackTraceSources' | 'interceptors'> {
|
|
16
|
-
runtime?: Runtime;
|
|
17
|
-
dataConverter?: DataConverter;
|
|
18
|
-
namespace?: string;
|
|
19
|
-
taskQueue?: string;
|
|
20
|
-
identity?: string;
|
|
21
|
-
}
|
|
22
|
-
export type ReplayHistoryIterable = Iterable<ReplayHistoryInput> | AsyncIterable<ReplayHistoryInput>;
|
|
23
|
-
export declare const runReplayHistory: (options: ReplayOptions & ReplayHistoryInput) => Promise<void>;
|
|
24
|
-
export declare const runReplayHistories: (options: ReplayOptions, histories: ReplayHistoryIterable) => Promise<void>;
|
|
25
|
-
export {};
|
|
26
|
-
//# sourceMappingURL=replay.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../../src/workflow/runtime/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAA8B,KAAK,aAAa,EAAkB,MAAM,uBAAuB,CAAA;AACtG,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAOvE,OAAO,EAAkB,KAAK,qBAAqB,EAA4B,MAAM,UAAU,CAAA;AAM/F,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE5C,KAAK,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;AAElG,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,qBAAqB,EAAE,eAAe,GAAG,uBAAuB,GAAG,cAAc,CAAC;IAC/F,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAA;AASpG,eAAO,MAAM,gBAAgB,GAAU,SAAS,aAAa,GAAG,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAWhG,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,aAAa,EAAE,WAAW,qBAAqB,KAAG,OAAO,CAAC,IAAI,CA+B/G,CAAA"}
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
import { Buffer } from 'node:buffer';
|
|
2
|
-
import { coresdk, temporal } from '@temporalio/proto';
|
|
3
|
-
import { createDefaultDataConverter, failureToError } from '../../common/payloads';
|
|
4
|
-
import { createRuntime } from '../../core-bridge/runtime';
|
|
5
|
-
import { NativeBridgeError, native, } from '../../internal/core-bridge/native';
|
|
6
|
-
import { WorkflowEngine } from './engine';
|
|
7
|
-
const DEFAULT_NAMESPACE = 'default';
|
|
8
|
-
const DEFAULT_TASK_QUEUE = 'temporal-bun-replay';
|
|
9
|
-
const DEFAULT_IDENTITY_PREFIX = 'temporal-bun-replay';
|
|
10
|
-
export const runReplayHistory = async (options) => {
|
|
11
|
-
const { history, workflowId, runId, namespace, taskQueue, ...rest } = options;
|
|
12
|
-
await runReplayHistories(rest, [
|
|
13
|
-
{
|
|
14
|
-
history,
|
|
15
|
-
workflowId,
|
|
16
|
-
runId,
|
|
17
|
-
namespace,
|
|
18
|
-
taskQueue,
|
|
19
|
-
},
|
|
20
|
-
]);
|
|
21
|
-
};
|
|
22
|
-
export const runReplayHistories = async (options, histories) => {
|
|
23
|
-
if (!options.workflowsPath) {
|
|
24
|
-
throw new Error('Replay requires a workflowsPath that points to the workflow bundle entry point');
|
|
25
|
-
}
|
|
26
|
-
if (native.bridgeVariant !== 'zig') {
|
|
27
|
-
throw new NativeBridgeError('Deterministic replay requires the Zig bridge. Build it with "pnpm --filter @proompteng/temporal-bun-sdk run build:native:zig" and set TEMPORAL_BUN_SDK_USE_ZIG=1.');
|
|
28
|
-
}
|
|
29
|
-
const runtime = options.runtime ?? createRuntime();
|
|
30
|
-
const ownsRuntime = options.runtime == null;
|
|
31
|
-
const nativeRuntime = runtime.nativeHandle;
|
|
32
|
-
const identity = buildIdentity(options.identity);
|
|
33
|
-
const historiesIterator = toAsyncIterable(histories);
|
|
34
|
-
try {
|
|
35
|
-
for await (const item of historiesIterator) {
|
|
36
|
-
await replaySingleHistory({
|
|
37
|
-
options,
|
|
38
|
-
runtime: nativeRuntime,
|
|
39
|
-
identity,
|
|
40
|
-
history: item,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
finally {
|
|
45
|
-
if (ownsRuntime) {
|
|
46
|
-
await runtime.shutdown();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
const replaySingleHistory = async ({ options, runtime, identity, history, }) => {
|
|
51
|
-
const normalized = normalizeHistory(history);
|
|
52
|
-
const namespace = (history.namespace ?? options.namespace ?? DEFAULT_NAMESPACE).trim();
|
|
53
|
-
if (!namespace) {
|
|
54
|
-
throw new NativeBridgeError('Replay namespace must be a non-empty string');
|
|
55
|
-
}
|
|
56
|
-
const taskQueue = (history.taskQueue ?? options.taskQueue ?? normalized.taskQueue ?? DEFAULT_TASK_QUEUE).trim();
|
|
57
|
-
if (!taskQueue) {
|
|
58
|
-
throw new NativeBridgeError('Replay taskQueue must be provided either via options or embedded history metadata');
|
|
59
|
-
}
|
|
60
|
-
const workflowId = (history.workflowId ?? normalized.workflowId).trim();
|
|
61
|
-
if (!workflowId) {
|
|
62
|
-
throw new NativeBridgeError('Workflow history is missing a workflowId; provide one via options.workflowId');
|
|
63
|
-
}
|
|
64
|
-
const dataConverter = options.dataConverter ?? createDefaultDataConverter();
|
|
65
|
-
const engine = new WorkflowEngine({
|
|
66
|
-
workflowsPath: options.workflowsPath,
|
|
67
|
-
showStackTraceSources: options.showStackTraceSources,
|
|
68
|
-
interceptors: options.interceptors,
|
|
69
|
-
dataConverter,
|
|
70
|
-
});
|
|
71
|
-
const replayWorker = native.createReplayWorker(runtime, {
|
|
72
|
-
namespace,
|
|
73
|
-
taskQueue,
|
|
74
|
-
identity,
|
|
75
|
-
});
|
|
76
|
-
try {
|
|
77
|
-
native.pushReplayHistory(replayWorker, workflowId, normalized.buffer);
|
|
78
|
-
await drainReplay({
|
|
79
|
-
engine,
|
|
80
|
-
replayWorker,
|
|
81
|
-
context: {
|
|
82
|
-
namespace,
|
|
83
|
-
taskQueue,
|
|
84
|
-
},
|
|
85
|
-
dataConverter,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
finally {
|
|
89
|
-
engine.shutdown();
|
|
90
|
-
native.destroyReplayWorker(replayWorker);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
const drainReplay = async ({ engine, replayWorker, context, dataConverter, }) => {
|
|
94
|
-
for (;;) {
|
|
95
|
-
let payload;
|
|
96
|
-
try {
|
|
97
|
-
payload = await native.worker.pollWorkflowTask(replayWorker.worker);
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
throw augmentReplayError(error);
|
|
101
|
-
}
|
|
102
|
-
if (!payload || payload.length === 0) {
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
let activation;
|
|
106
|
-
try {
|
|
107
|
-
activation = coresdk.workflow_activation.WorkflowActivation.decode(payload);
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
throw new Error(`Failed to decode workflow activation during replay: ${error.message}`);
|
|
111
|
-
}
|
|
112
|
-
let completionBytes = null;
|
|
113
|
-
let failureError;
|
|
114
|
-
try {
|
|
115
|
-
const result = await engine.processWorkflowActivation(activation, context);
|
|
116
|
-
completionBytes = coresdk.workflow_completion.WorkflowActivationCompletion.encode(result.completion).finish();
|
|
117
|
-
if (result.completion.failed?.failure) {
|
|
118
|
-
failureError =
|
|
119
|
-
(await failureToError(dataConverter, result.completion.failed.failure)) ??
|
|
120
|
-
new Error('Workflow replay failed with a nondeterministic result');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
// Convert thrown application error into failure response and send to core to keep the worker consistent.
|
|
125
|
-
const failureCompletion = coresdk.workflow_completion.WorkflowActivationCompletion.create({
|
|
126
|
-
runId: activation.runId,
|
|
127
|
-
failed: coresdk.workflow_completion.Failure.create({
|
|
128
|
-
failure: temporal.api.failure.v1.Failure.create({
|
|
129
|
-
message: error instanceof Error ? error.message : String(error),
|
|
130
|
-
}),
|
|
131
|
-
}),
|
|
132
|
-
});
|
|
133
|
-
const failureBytes = coresdk.workflow_completion.WorkflowActivationCompletion.encode(failureCompletion).finish();
|
|
134
|
-
native.worker.completeWorkflowTask(replayWorker.worker, failureBytes);
|
|
135
|
-
throw error;
|
|
136
|
-
}
|
|
137
|
-
if (!completionBytes) {
|
|
138
|
-
throw new Error('Replay worker did not produce a workflow completion payload');
|
|
139
|
-
}
|
|
140
|
-
native.worker.completeWorkflowTask(replayWorker.worker, completionBytes);
|
|
141
|
-
if (failureError) {
|
|
142
|
-
throw failureError;
|
|
143
|
-
}
|
|
144
|
-
if (hasRemoveFromCacheJob(activation)) {
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
const normalizeHistory = (input) => {
|
|
150
|
-
const bufferAndJson = toHistoryJson(input.history);
|
|
151
|
-
const { json, buffer } = bufferAndJson;
|
|
152
|
-
const historyRecord = json;
|
|
153
|
-
const started = findWorkflowExecutionStarted(historyRecord);
|
|
154
|
-
const workflowId = input.workflowId ??
|
|
155
|
-
started?.workflowExecution?.workflowId?.toString() ??
|
|
156
|
-
started?.workflowId ??
|
|
157
|
-
historyRecord.workflowExecution?.workflowId?.toString();
|
|
158
|
-
if (!workflowId || workflowId.length === 0) {
|
|
159
|
-
throw new NativeBridgeError('Unable to determine workflowId from replay history; provide one via options.workflowId');
|
|
160
|
-
}
|
|
161
|
-
const runId = input.runId ??
|
|
162
|
-
started?.originalExecutionRunId ??
|
|
163
|
-
started?.workflowExecution?.runId?.toString() ??
|
|
164
|
-
historyRecord.workflowExecution?.runId?.toString();
|
|
165
|
-
const taskQueue = input.taskQueue ?? extractTaskQueue(started);
|
|
166
|
-
return {
|
|
167
|
-
buffer,
|
|
168
|
-
workflowId,
|
|
169
|
-
runId,
|
|
170
|
-
taskQueue,
|
|
171
|
-
};
|
|
172
|
-
};
|
|
173
|
-
const toHistoryJson = (history) => {
|
|
174
|
-
if (typeof history === 'string') {
|
|
175
|
-
const buffer = Buffer.from(history, 'utf8');
|
|
176
|
-
return { json: parseHistoryJson(buffer), buffer };
|
|
177
|
-
}
|
|
178
|
-
if (Buffer.isBuffer(history) || history instanceof Uint8Array) {
|
|
179
|
-
const buffer = Buffer.isBuffer(history) ? history : Buffer.from(history);
|
|
180
|
-
return { json: parseHistoryJson(buffer), buffer };
|
|
181
|
-
}
|
|
182
|
-
if (typeof history === 'object' && history !== null && 'events' in history) {
|
|
183
|
-
const jsonString = JSON.stringify(history);
|
|
184
|
-
const buffer = Buffer.from(jsonString, 'utf8');
|
|
185
|
-
return { json: JSON.parse(jsonString), buffer };
|
|
186
|
-
}
|
|
187
|
-
throw new TypeError('Unsupported history input. Provide a JSON string, Uint8Array, Buffer, or history object.');
|
|
188
|
-
};
|
|
189
|
-
const parseHistoryJson = (buffer) => {
|
|
190
|
-
try {
|
|
191
|
-
return JSON.parse(buffer.toString('utf8'));
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
throw new Error(`Workflow history must be valid JSON: ${error.message}`);
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
const findWorkflowExecutionStarted = (history) => {
|
|
198
|
-
const events = history.events ?? [];
|
|
199
|
-
for (const event of events) {
|
|
200
|
-
const attrs = event.workflowExecutionStartedEventAttributes;
|
|
201
|
-
if (attrs) {
|
|
202
|
-
return attrs;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
return undefined;
|
|
206
|
-
};
|
|
207
|
-
const extractTaskQueue = (attrs) => {
|
|
208
|
-
const taskQueue = attrs?.taskQueue;
|
|
209
|
-
if (!taskQueue) {
|
|
210
|
-
return undefined;
|
|
211
|
-
}
|
|
212
|
-
if (typeof taskQueue === 'string') {
|
|
213
|
-
return taskQueue;
|
|
214
|
-
}
|
|
215
|
-
if (typeof taskQueue === 'object') {
|
|
216
|
-
const record = taskQueue;
|
|
217
|
-
const name = record.name ?? record.taskQueue;
|
|
218
|
-
return typeof name === 'string' ? name : undefined;
|
|
219
|
-
}
|
|
220
|
-
return undefined;
|
|
221
|
-
};
|
|
222
|
-
const hasRemoveFromCacheJob = (activation) => {
|
|
223
|
-
return Boolean(activation.jobs?.some((job) => job.removeFromCache != null));
|
|
224
|
-
};
|
|
225
|
-
const toAsyncIterable = (input) => {
|
|
226
|
-
if (Symbol.asyncIterator in input) {
|
|
227
|
-
return input;
|
|
228
|
-
}
|
|
229
|
-
const iterable = input;
|
|
230
|
-
return (async function* () {
|
|
231
|
-
for (const item of iterable) {
|
|
232
|
-
yield item;
|
|
233
|
-
}
|
|
234
|
-
})();
|
|
235
|
-
};
|
|
236
|
-
const buildIdentity = (identity) => {
|
|
237
|
-
const base = identity?.trim() ?? '';
|
|
238
|
-
if (base.length > 0) {
|
|
239
|
-
return base;
|
|
240
|
-
}
|
|
241
|
-
return `${DEFAULT_IDENTITY_PREFIX}-${process.pid}`;
|
|
242
|
-
};
|
|
243
|
-
const augmentReplayError = (error) => {
|
|
244
|
-
if (error instanceof NativeBridgeError) {
|
|
245
|
-
return new NativeBridgeError({
|
|
246
|
-
code: error.code,
|
|
247
|
-
message: `Workflow replay failed: ${error.message}`,
|
|
248
|
-
details: error.details,
|
|
249
|
-
raw: error.raw,
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
return error;
|
|
253
|
-
};
|
|
254
|
-
//# sourceMappingURL=replay.js.map
|