@workflow/world-local 4.0.1-beta.6 → 4.1.0-beta.28
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/config.d.ts +15 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +35 -9
- package/dist/config.js.map +1 -1
- package/dist/fs.d.ts +13 -0
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +109 -14
- package/dist/fs.js.map +1 -1
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -9
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +91 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +263 -0
- package/dist/init.js.map +1 -0
- package/dist/queue.d.ts +2 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +83 -40
- package/dist/queue.js.map +1 -1
- package/dist/storage/events-storage.d.ts +7 -0
- package/dist/storage/events-storage.d.ts.map +1 -0
- package/dist/storage/events-storage.js +527 -0
- package/dist/storage/events-storage.js.map +1 -0
- package/dist/storage/filters.d.ts +26 -0
- package/dist/storage/filters.d.ts.map +1 -0
- package/dist/storage/filters.js +43 -0
- package/dist/storage/filters.js.map +1 -0
- package/dist/storage/helpers.d.ts +14 -0
- package/dist/storage/helpers.d.ts.map +1 -0
- package/dist/storage/helpers.js +34 -0
- package/dist/storage/helpers.js.map +1 -0
- package/dist/storage/hooks-storage.d.ts +12 -0
- package/dist/storage/hooks-storage.d.ts.map +1 -0
- package/dist/storage/hooks-storage.js +89 -0
- package/dist/storage/hooks-storage.js.map +1 -0
- package/dist/storage/index.d.ts +10 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +20 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/legacy.d.ts +13 -0
- package/dist/storage/legacy.d.ts.map +1 -0
- package/dist/storage/legacy.js +73 -0
- package/dist/storage/legacy.js.map +1 -0
- package/dist/storage/runs-storage.d.ts +7 -0
- package/dist/storage/runs-storage.d.ts.map +1 -0
- package/dist/storage/runs-storage.js +59 -0
- package/dist/storage/runs-storage.js.map +1 -0
- package/dist/storage/steps-storage.d.ts +7 -0
- package/dist/storage/steps-storage.d.ts.map +1 -0
- package/dist/storage/steps-storage.js +58 -0
- package/dist/storage/steps-storage.js.map +1 -0
- package/dist/storage.d.ts +9 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +10 -421
- package/dist/storage.js.map +1 -1
- package/dist/streamer.d.ts +1 -1
- package/dist/streamer.d.ts.map +1 -1
- package/dist/streamer.js +103 -20
- package/dist/streamer.js.map +1 -1
- package/dist/test-helpers.d.ts +43 -0
- package/dist/test-helpers.d.ts.map +1 -0
- package/dist/test-helpers.js +89 -0
- package/dist/test-helpers.js.map +1 -0
- package/package.json +10 -9
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { RunNotSupportedError, WorkflowAPIError } from '@workflow/errors';
|
|
3
|
+
import { EventSchema, HookSchema, isLegacySpecVersion, requiresNewerWorld, SPEC_VERSION_CURRENT, StepSchema, WorkflowRunSchema, } from '@workflow/world';
|
|
4
|
+
import { DEFAULT_RESOLVE_DATA_OPTION } from '../config.js';
|
|
5
|
+
import { deleteJSON, listJSONFiles, paginatedFileSystemQuery, readJSON, writeJSON, } from '../fs.js';
|
|
6
|
+
import { filterEventData } from './filters.js';
|
|
7
|
+
import { getObjectCreatedAt, monotonicUlid } from './helpers.js';
|
|
8
|
+
import { deleteAllHooksForRun } from './hooks-storage.js';
|
|
9
|
+
import { handleLegacyEvent } from './legacy.js';
|
|
10
|
+
/**
|
|
11
|
+
* Creates the events storage implementation using the filesystem.
|
|
12
|
+
* Implements the Storage['events'] interface with create, list, and listByCorrelationId operations.
|
|
13
|
+
*/
|
|
14
|
+
export function createEventsStorage(basedir) {
|
|
15
|
+
return {
|
|
16
|
+
async create(runId, data, params) {
|
|
17
|
+
const eventId = `evnt_${monotonicUlid()}`;
|
|
18
|
+
const now = new Date();
|
|
19
|
+
// For run_created events, generate runId server-side if null or empty
|
|
20
|
+
let effectiveRunId;
|
|
21
|
+
if (data.eventType === 'run_created' && (!runId || runId === '')) {
|
|
22
|
+
effectiveRunId = `wrun_${monotonicUlid()}`;
|
|
23
|
+
}
|
|
24
|
+
else if (!runId) {
|
|
25
|
+
throw new Error('runId is required for non-run_created events');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
effectiveRunId = runId;
|
|
29
|
+
}
|
|
30
|
+
// specVersion is always sent by the runtime, but we provide a fallback for safety
|
|
31
|
+
const effectiveSpecVersion = data.specVersion ?? SPEC_VERSION_CURRENT;
|
|
32
|
+
// Helper to check if run is in terminal state
|
|
33
|
+
const isRunTerminal = (status) => ['completed', 'failed', 'cancelled'].includes(status);
|
|
34
|
+
// Helper to check if step is in terminal state
|
|
35
|
+
const isStepTerminal = (status) => ['completed', 'failed'].includes(status);
|
|
36
|
+
// Get current run state for validation (if not creating a new run)
|
|
37
|
+
// Skip run validation for step_completed and step_retrying - they only operate
|
|
38
|
+
// on running steps, and running steps are always allowed to modify regardless
|
|
39
|
+
// of run state. This optimization saves filesystem reads per step event.
|
|
40
|
+
let currentRun = null;
|
|
41
|
+
const skipRunValidationEvents = ['step_completed', 'step_retrying'];
|
|
42
|
+
if (data.eventType !== 'run_created' &&
|
|
43
|
+
!skipRunValidationEvents.includes(data.eventType)) {
|
|
44
|
+
const runPath = path.join(basedir, 'runs', `${effectiveRunId}.json`);
|
|
45
|
+
currentRun = await readJSON(runPath, WorkflowRunSchema);
|
|
46
|
+
}
|
|
47
|
+
// ============================================================
|
|
48
|
+
// VERSION COMPATIBILITY: Check run spec version
|
|
49
|
+
// ============================================================
|
|
50
|
+
// For events that have fetched the run, check version compatibility.
|
|
51
|
+
// Skip for run_created (no existing run) and runtime events (step_completed, step_retrying).
|
|
52
|
+
if (currentRun) {
|
|
53
|
+
// Check if run requires a newer world version
|
|
54
|
+
if (requiresNewerWorld(currentRun.specVersion)) {
|
|
55
|
+
throw new RunNotSupportedError(currentRun.specVersion, SPEC_VERSION_CURRENT);
|
|
56
|
+
}
|
|
57
|
+
// Route to legacy handler for pre-event-sourcing runs
|
|
58
|
+
if (isLegacySpecVersion(currentRun.specVersion)) {
|
|
59
|
+
return handleLegacyEvent(basedir, effectiveRunId, data, currentRun, params);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// ============================================================
|
|
63
|
+
// VALIDATION: Terminal state and event ordering checks
|
|
64
|
+
// ============================================================
|
|
65
|
+
// Run terminal state validation
|
|
66
|
+
if (currentRun && isRunTerminal(currentRun.status)) {
|
|
67
|
+
const runTerminalEvents = [
|
|
68
|
+
'run_started',
|
|
69
|
+
'run_completed',
|
|
70
|
+
'run_failed',
|
|
71
|
+
];
|
|
72
|
+
// Idempotent operation: run_cancelled on already cancelled run is allowed
|
|
73
|
+
if (data.eventType === 'run_cancelled' &&
|
|
74
|
+
currentRun.status === 'cancelled') {
|
|
75
|
+
// Return existing state (idempotent)
|
|
76
|
+
const event = {
|
|
77
|
+
...data,
|
|
78
|
+
runId: effectiveRunId,
|
|
79
|
+
eventId,
|
|
80
|
+
createdAt: now,
|
|
81
|
+
specVersion: effectiveSpecVersion,
|
|
82
|
+
};
|
|
83
|
+
const compositeKey = `${effectiveRunId}-${eventId}`;
|
|
84
|
+
const eventPath = path.join(basedir, 'events', `${compositeKey}.json`);
|
|
85
|
+
await writeJSON(eventPath, event);
|
|
86
|
+
const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
|
|
87
|
+
return {
|
|
88
|
+
event: filterEventData(event, resolveData),
|
|
89
|
+
run: currentRun,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// Run state transitions are not allowed on terminal runs
|
|
93
|
+
if (runTerminalEvents.includes(data.eventType) ||
|
|
94
|
+
data.eventType === 'run_cancelled') {
|
|
95
|
+
throw new WorkflowAPIError(`Cannot transition run from terminal state "${currentRun.status}"`, { status: 410 });
|
|
96
|
+
}
|
|
97
|
+
// Creating new entities on terminal runs is not allowed
|
|
98
|
+
if (data.eventType === 'step_created' ||
|
|
99
|
+
data.eventType === 'hook_created') {
|
|
100
|
+
throw new WorkflowAPIError(`Cannot create new entities on run in terminal state "${currentRun.status}"`, { status: 410 });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Step-related event validation (ordering and terminal state)
|
|
104
|
+
// Store existingStep so we can reuse it later (avoid double read)
|
|
105
|
+
let validatedStep = null;
|
|
106
|
+
const stepEvents = [
|
|
107
|
+
'step_started',
|
|
108
|
+
'step_completed',
|
|
109
|
+
'step_failed',
|
|
110
|
+
'step_retrying',
|
|
111
|
+
];
|
|
112
|
+
if (stepEvents.includes(data.eventType) && data.correlationId) {
|
|
113
|
+
const stepCompositeKey = `${effectiveRunId}-${data.correlationId}`;
|
|
114
|
+
const stepPath = path.join(basedir, 'steps', `${stepCompositeKey}.json`);
|
|
115
|
+
validatedStep = await readJSON(stepPath, StepSchema);
|
|
116
|
+
// Event ordering: step must exist before these events
|
|
117
|
+
if (!validatedStep) {
|
|
118
|
+
throw new WorkflowAPIError(`Step "${data.correlationId}" not found`, {
|
|
119
|
+
status: 404,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// Step terminal state validation
|
|
123
|
+
if (isStepTerminal(validatedStep.status)) {
|
|
124
|
+
throw new WorkflowAPIError(`Cannot modify step in terminal state "${validatedStep.status}"`, { status: 410 });
|
|
125
|
+
}
|
|
126
|
+
// On terminal runs: only allow completing/failing in-progress steps
|
|
127
|
+
if (currentRun && isRunTerminal(currentRun.status)) {
|
|
128
|
+
if (validatedStep.status !== 'running') {
|
|
129
|
+
throw new WorkflowAPIError(`Cannot modify non-running step on run in terminal state "${currentRun.status}"`, { status: 410 });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Hook-related event validation (ordering)
|
|
134
|
+
const hookEventsRequiringExistence = ['hook_disposed', 'hook_received'];
|
|
135
|
+
if (hookEventsRequiringExistence.includes(data.eventType) &&
|
|
136
|
+
data.correlationId) {
|
|
137
|
+
const hookPath = path.join(basedir, 'hooks', `${data.correlationId}.json`);
|
|
138
|
+
const existingHook = await readJSON(hookPath, HookSchema);
|
|
139
|
+
if (!existingHook) {
|
|
140
|
+
throw new WorkflowAPIError(`Hook "${data.correlationId}" not found`, {
|
|
141
|
+
status: 404,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const event = {
|
|
146
|
+
...data,
|
|
147
|
+
runId: effectiveRunId,
|
|
148
|
+
eventId,
|
|
149
|
+
createdAt: now,
|
|
150
|
+
specVersion: effectiveSpecVersion,
|
|
151
|
+
};
|
|
152
|
+
// Track entity created/updated for EventResult
|
|
153
|
+
let run;
|
|
154
|
+
let step;
|
|
155
|
+
let hook;
|
|
156
|
+
// Create/update entity based on event type (event-sourced architecture)
|
|
157
|
+
// Run lifecycle events
|
|
158
|
+
if (data.eventType === 'run_created' && 'eventData' in data) {
|
|
159
|
+
const runData = data.eventData;
|
|
160
|
+
run = {
|
|
161
|
+
runId: effectiveRunId,
|
|
162
|
+
deploymentId: runData.deploymentId,
|
|
163
|
+
status: 'pending',
|
|
164
|
+
workflowName: runData.workflowName,
|
|
165
|
+
// Propagate specVersion from the event to the run entity
|
|
166
|
+
specVersion: effectiveSpecVersion,
|
|
167
|
+
executionContext: runData.executionContext,
|
|
168
|
+
input: runData.input,
|
|
169
|
+
output: undefined,
|
|
170
|
+
error: undefined,
|
|
171
|
+
startedAt: undefined,
|
|
172
|
+
completedAt: undefined,
|
|
173
|
+
createdAt: now,
|
|
174
|
+
updatedAt: now,
|
|
175
|
+
};
|
|
176
|
+
const runPath = path.join(basedir, 'runs', `${effectiveRunId}.json`);
|
|
177
|
+
await writeJSON(runPath, run);
|
|
178
|
+
}
|
|
179
|
+
else if (data.eventType === 'run_started') {
|
|
180
|
+
// Reuse currentRun from validation (already read above)
|
|
181
|
+
if (currentRun) {
|
|
182
|
+
const runPath = path.join(basedir, 'runs', `${effectiveRunId}.json`);
|
|
183
|
+
run = {
|
|
184
|
+
runId: currentRun.runId,
|
|
185
|
+
deploymentId: currentRun.deploymentId,
|
|
186
|
+
workflowName: currentRun.workflowName,
|
|
187
|
+
specVersion: currentRun.specVersion,
|
|
188
|
+
executionContext: currentRun.executionContext,
|
|
189
|
+
input: currentRun.input,
|
|
190
|
+
createdAt: currentRun.createdAt,
|
|
191
|
+
expiredAt: currentRun.expiredAt,
|
|
192
|
+
status: 'running',
|
|
193
|
+
output: undefined,
|
|
194
|
+
error: undefined,
|
|
195
|
+
completedAt: undefined,
|
|
196
|
+
startedAt: currentRun.startedAt ?? now,
|
|
197
|
+
updatedAt: now,
|
|
198
|
+
};
|
|
199
|
+
await writeJSON(runPath, run, { overwrite: true });
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else if (data.eventType === 'run_completed' && 'eventData' in data) {
|
|
203
|
+
const completedData = data.eventData;
|
|
204
|
+
// Reuse currentRun from validation (already read above)
|
|
205
|
+
if (currentRun) {
|
|
206
|
+
const runPath = path.join(basedir, 'runs', `${effectiveRunId}.json`);
|
|
207
|
+
run = {
|
|
208
|
+
runId: currentRun.runId,
|
|
209
|
+
deploymentId: currentRun.deploymentId,
|
|
210
|
+
workflowName: currentRun.workflowName,
|
|
211
|
+
specVersion: currentRun.specVersion,
|
|
212
|
+
executionContext: currentRun.executionContext,
|
|
213
|
+
input: currentRun.input,
|
|
214
|
+
createdAt: currentRun.createdAt,
|
|
215
|
+
expiredAt: currentRun.expiredAt,
|
|
216
|
+
startedAt: currentRun.startedAt,
|
|
217
|
+
status: 'completed',
|
|
218
|
+
output: completedData.output,
|
|
219
|
+
error: undefined,
|
|
220
|
+
completedAt: now,
|
|
221
|
+
updatedAt: now,
|
|
222
|
+
};
|
|
223
|
+
await writeJSON(runPath, run, { overwrite: true });
|
|
224
|
+
await deleteAllHooksForRun(basedir, effectiveRunId);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else if (data.eventType === 'run_failed' && 'eventData' in data) {
|
|
228
|
+
const failedData = data.eventData;
|
|
229
|
+
// Reuse currentRun from validation (already read above)
|
|
230
|
+
if (currentRun) {
|
|
231
|
+
const runPath = path.join(basedir, 'runs', `${effectiveRunId}.json`);
|
|
232
|
+
run = {
|
|
233
|
+
runId: currentRun.runId,
|
|
234
|
+
deploymentId: currentRun.deploymentId,
|
|
235
|
+
workflowName: currentRun.workflowName,
|
|
236
|
+
specVersion: currentRun.specVersion,
|
|
237
|
+
executionContext: currentRun.executionContext,
|
|
238
|
+
input: currentRun.input,
|
|
239
|
+
createdAt: currentRun.createdAt,
|
|
240
|
+
expiredAt: currentRun.expiredAt,
|
|
241
|
+
startedAt: currentRun.startedAt,
|
|
242
|
+
status: 'failed',
|
|
243
|
+
output: undefined,
|
|
244
|
+
error: {
|
|
245
|
+
message: typeof failedData.error === 'string'
|
|
246
|
+
? failedData.error
|
|
247
|
+
: (failedData.error?.message ?? 'Unknown error'),
|
|
248
|
+
stack: failedData.error?.stack,
|
|
249
|
+
code: failedData.errorCode,
|
|
250
|
+
},
|
|
251
|
+
completedAt: now,
|
|
252
|
+
updatedAt: now,
|
|
253
|
+
};
|
|
254
|
+
await writeJSON(runPath, run, { overwrite: true });
|
|
255
|
+
await deleteAllHooksForRun(basedir, effectiveRunId);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else if (data.eventType === 'run_cancelled') {
|
|
259
|
+
// Reuse currentRun from validation (already read above)
|
|
260
|
+
if (currentRun) {
|
|
261
|
+
const runPath = path.join(basedir, 'runs', `${effectiveRunId}.json`);
|
|
262
|
+
run = {
|
|
263
|
+
runId: currentRun.runId,
|
|
264
|
+
deploymentId: currentRun.deploymentId,
|
|
265
|
+
workflowName: currentRun.workflowName,
|
|
266
|
+
specVersion: currentRun.specVersion,
|
|
267
|
+
executionContext: currentRun.executionContext,
|
|
268
|
+
input: currentRun.input,
|
|
269
|
+
createdAt: currentRun.createdAt,
|
|
270
|
+
expiredAt: currentRun.expiredAt,
|
|
271
|
+
startedAt: currentRun.startedAt,
|
|
272
|
+
status: 'cancelled',
|
|
273
|
+
output: undefined,
|
|
274
|
+
error: undefined,
|
|
275
|
+
completedAt: now,
|
|
276
|
+
updatedAt: now,
|
|
277
|
+
};
|
|
278
|
+
await writeJSON(runPath, run, { overwrite: true });
|
|
279
|
+
await deleteAllHooksForRun(basedir, effectiveRunId);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
else if (
|
|
283
|
+
// Step lifecycle events
|
|
284
|
+
data.eventType === 'step_created' &&
|
|
285
|
+
'eventData' in data) {
|
|
286
|
+
// step_created: Creates step entity with status 'pending', attempt=0, createdAt set
|
|
287
|
+
const stepData = data.eventData;
|
|
288
|
+
step = {
|
|
289
|
+
runId: effectiveRunId,
|
|
290
|
+
stepId: data.correlationId,
|
|
291
|
+
stepName: stepData.stepName,
|
|
292
|
+
status: 'pending',
|
|
293
|
+
input: stepData.input,
|
|
294
|
+
output: undefined,
|
|
295
|
+
error: undefined,
|
|
296
|
+
attempt: 0,
|
|
297
|
+
startedAt: undefined,
|
|
298
|
+
completedAt: undefined,
|
|
299
|
+
createdAt: now,
|
|
300
|
+
updatedAt: now,
|
|
301
|
+
// Propagate specVersion from the event to the step entity
|
|
302
|
+
specVersion: effectiveSpecVersion,
|
|
303
|
+
};
|
|
304
|
+
const stepCompositeKey = `${effectiveRunId}-${data.correlationId}`;
|
|
305
|
+
const stepPath = path.join(basedir, 'steps', `${stepCompositeKey}.json`);
|
|
306
|
+
await writeJSON(stepPath, step);
|
|
307
|
+
}
|
|
308
|
+
else if (data.eventType === 'step_started') {
|
|
309
|
+
// step_started: Increments attempt, sets status to 'running'
|
|
310
|
+
// Sets startedAt only on the first start (not updated on retries)
|
|
311
|
+
// Reuse validatedStep from validation (already read above)
|
|
312
|
+
if (validatedStep) {
|
|
313
|
+
const stepCompositeKey = `${effectiveRunId}-${data.correlationId}`;
|
|
314
|
+
const stepPath = path.join(basedir, 'steps', `${stepCompositeKey}.json`);
|
|
315
|
+
step = {
|
|
316
|
+
...validatedStep,
|
|
317
|
+
status: 'running',
|
|
318
|
+
// Only set startedAt on the first start
|
|
319
|
+
startedAt: validatedStep.startedAt ?? now,
|
|
320
|
+
// Increment attempt counter on every start
|
|
321
|
+
attempt: validatedStep.attempt + 1,
|
|
322
|
+
updatedAt: now,
|
|
323
|
+
};
|
|
324
|
+
await writeJSON(stepPath, step, { overwrite: true });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
else if (data.eventType === 'step_completed' && 'eventData' in data) {
|
|
328
|
+
// step_completed: Terminal state with output
|
|
329
|
+
// Reuse validatedStep from validation (already read above)
|
|
330
|
+
const completedData = data.eventData;
|
|
331
|
+
if (validatedStep) {
|
|
332
|
+
const stepCompositeKey = `${effectiveRunId}-${data.correlationId}`;
|
|
333
|
+
const stepPath = path.join(basedir, 'steps', `${stepCompositeKey}.json`);
|
|
334
|
+
step = {
|
|
335
|
+
...validatedStep,
|
|
336
|
+
status: 'completed',
|
|
337
|
+
output: completedData.result,
|
|
338
|
+
completedAt: now,
|
|
339
|
+
updatedAt: now,
|
|
340
|
+
};
|
|
341
|
+
await writeJSON(stepPath, step, { overwrite: true });
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
else if (data.eventType === 'step_failed' && 'eventData' in data) {
|
|
345
|
+
// step_failed: Terminal state with error
|
|
346
|
+
// Reuse validatedStep from validation (already read above)
|
|
347
|
+
const failedData = data.eventData;
|
|
348
|
+
if (validatedStep) {
|
|
349
|
+
const stepCompositeKey = `${effectiveRunId}-${data.correlationId}`;
|
|
350
|
+
const stepPath = path.join(basedir, 'steps', `${stepCompositeKey}.json`);
|
|
351
|
+
const error = {
|
|
352
|
+
message: typeof failedData.error === 'string'
|
|
353
|
+
? failedData.error
|
|
354
|
+
: (failedData.error?.message ?? 'Unknown error'),
|
|
355
|
+
stack: failedData.stack,
|
|
356
|
+
};
|
|
357
|
+
step = {
|
|
358
|
+
...validatedStep,
|
|
359
|
+
status: 'failed',
|
|
360
|
+
error,
|
|
361
|
+
completedAt: now,
|
|
362
|
+
updatedAt: now,
|
|
363
|
+
};
|
|
364
|
+
await writeJSON(stepPath, step, { overwrite: true });
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
else if (data.eventType === 'step_retrying' && 'eventData' in data) {
|
|
368
|
+
// step_retrying: Sets status back to 'pending', records error
|
|
369
|
+
// Reuse validatedStep from validation (already read above)
|
|
370
|
+
const retryData = data.eventData;
|
|
371
|
+
if (validatedStep) {
|
|
372
|
+
const stepCompositeKey = `${effectiveRunId}-${data.correlationId}`;
|
|
373
|
+
const stepPath = path.join(basedir, 'steps', `${stepCompositeKey}.json`);
|
|
374
|
+
step = {
|
|
375
|
+
...validatedStep,
|
|
376
|
+
status: 'pending',
|
|
377
|
+
error: {
|
|
378
|
+
message: typeof retryData.error === 'string'
|
|
379
|
+
? retryData.error
|
|
380
|
+
: (retryData.error?.message ?? 'Unknown error'),
|
|
381
|
+
stack: retryData.stack,
|
|
382
|
+
},
|
|
383
|
+
retryAfter: retryData.retryAfter,
|
|
384
|
+
updatedAt: now,
|
|
385
|
+
};
|
|
386
|
+
await writeJSON(stepPath, step, { overwrite: true });
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
else if (
|
|
390
|
+
// Hook lifecycle events
|
|
391
|
+
data.eventType === 'hook_created' &&
|
|
392
|
+
'eventData' in data) {
|
|
393
|
+
const hookData = data.eventData;
|
|
394
|
+
// Check for duplicate token before creating hook
|
|
395
|
+
const hooksDir = path.join(basedir, 'hooks');
|
|
396
|
+
const hookFiles = await listJSONFiles(hooksDir);
|
|
397
|
+
let hasConflict = false;
|
|
398
|
+
for (const file of hookFiles) {
|
|
399
|
+
const existingHookPath = path.join(hooksDir, `${file}.json`);
|
|
400
|
+
const existingHook = await readJSON(existingHookPath, HookSchema);
|
|
401
|
+
if (existingHook && existingHook.token === hookData.token) {
|
|
402
|
+
hasConflict = true;
|
|
403
|
+
break;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if (hasConflict) {
|
|
407
|
+
// Create hook_conflict event instead of hook_created
|
|
408
|
+
// This allows the workflow to continue and fail gracefully when the hook is awaited
|
|
409
|
+
const conflictEvent = {
|
|
410
|
+
eventType: 'hook_conflict',
|
|
411
|
+
correlationId: data.correlationId,
|
|
412
|
+
eventData: {
|
|
413
|
+
token: hookData.token,
|
|
414
|
+
},
|
|
415
|
+
runId: effectiveRunId,
|
|
416
|
+
eventId,
|
|
417
|
+
createdAt: now,
|
|
418
|
+
specVersion: effectiveSpecVersion,
|
|
419
|
+
};
|
|
420
|
+
// Store the conflict event
|
|
421
|
+
const compositeKey = `${effectiveRunId}-${eventId}`;
|
|
422
|
+
const eventPath = path.join(basedir, 'events', `${compositeKey}.json`);
|
|
423
|
+
await writeJSON(eventPath, conflictEvent);
|
|
424
|
+
const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
|
|
425
|
+
const filteredEvent = filterEventData(conflictEvent, resolveData);
|
|
426
|
+
// Return EventResult with conflict event (no hook entity created)
|
|
427
|
+
return {
|
|
428
|
+
event: filteredEvent,
|
|
429
|
+
run,
|
|
430
|
+
step,
|
|
431
|
+
hook: undefined,
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
hook = {
|
|
435
|
+
runId: effectiveRunId,
|
|
436
|
+
hookId: data.correlationId,
|
|
437
|
+
token: hookData.token,
|
|
438
|
+
metadata: hookData.metadata,
|
|
439
|
+
ownerId: 'local-owner',
|
|
440
|
+
projectId: 'local-project',
|
|
441
|
+
environment: 'local',
|
|
442
|
+
createdAt: now,
|
|
443
|
+
// Propagate specVersion from the event to the hook entity
|
|
444
|
+
specVersion: effectiveSpecVersion,
|
|
445
|
+
};
|
|
446
|
+
const hookPath = path.join(basedir, 'hooks', `${data.correlationId}.json`);
|
|
447
|
+
await writeJSON(hookPath, hook);
|
|
448
|
+
}
|
|
449
|
+
else if (data.eventType === 'hook_disposed') {
|
|
450
|
+
// Delete the hook when disposed
|
|
451
|
+
const hookPath = path.join(basedir, 'hooks', `${data.correlationId}.json`);
|
|
452
|
+
await deleteJSON(hookPath);
|
|
453
|
+
}
|
|
454
|
+
// Note: hook_received events are stored in the event log but don't
|
|
455
|
+
// modify the Hook entity (which doesn't have a payload field)
|
|
456
|
+
// Store event using composite key {runId}-{eventId}
|
|
457
|
+
const compositeKey = `${effectiveRunId}-${eventId}`;
|
|
458
|
+
const eventPath = path.join(basedir, 'events', `${compositeKey}.json`);
|
|
459
|
+
await writeJSON(eventPath, event);
|
|
460
|
+
const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
|
|
461
|
+
const filteredEvent = filterEventData(event, resolveData);
|
|
462
|
+
// Return EventResult with event and any created/updated entity
|
|
463
|
+
return {
|
|
464
|
+
event: filteredEvent,
|
|
465
|
+
run,
|
|
466
|
+
step,
|
|
467
|
+
hook,
|
|
468
|
+
};
|
|
469
|
+
},
|
|
470
|
+
async list(params) {
|
|
471
|
+
const { runId } = params;
|
|
472
|
+
const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
|
|
473
|
+
const result = await paginatedFileSystemQuery({
|
|
474
|
+
directory: path.join(basedir, 'events'),
|
|
475
|
+
schema: EventSchema,
|
|
476
|
+
filePrefix: `${runId}-`,
|
|
477
|
+
// Events in chronological order (oldest first) by default,
|
|
478
|
+
// different from the default for other list calls.
|
|
479
|
+
sortOrder: params.pagination?.sortOrder ?? 'asc',
|
|
480
|
+
limit: params.pagination?.limit,
|
|
481
|
+
cursor: params.pagination?.cursor,
|
|
482
|
+
getCreatedAt: getObjectCreatedAt('evnt'),
|
|
483
|
+
getId: (event) => event.eventId,
|
|
484
|
+
});
|
|
485
|
+
// If resolveData is "none", remove eventData from events
|
|
486
|
+
if (resolveData === 'none') {
|
|
487
|
+
return {
|
|
488
|
+
...result,
|
|
489
|
+
data: result.data.map((event) => {
|
|
490
|
+
const { eventData: _eventData, ...rest } = event;
|
|
491
|
+
return rest;
|
|
492
|
+
}),
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
return result;
|
|
496
|
+
},
|
|
497
|
+
async listByCorrelationId(params) {
|
|
498
|
+
const correlationId = params.correlationId;
|
|
499
|
+
const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
|
|
500
|
+
const result = await paginatedFileSystemQuery({
|
|
501
|
+
directory: path.join(basedir, 'events'),
|
|
502
|
+
schema: EventSchema,
|
|
503
|
+
// No filePrefix - search all events
|
|
504
|
+
filter: (event) => event.correlationId === correlationId,
|
|
505
|
+
// Events in chronological order (oldest first) by default,
|
|
506
|
+
// different from the default for other list calls.
|
|
507
|
+
sortOrder: params.pagination?.sortOrder ?? 'asc',
|
|
508
|
+
limit: params.pagination?.limit,
|
|
509
|
+
cursor: params.pagination?.cursor,
|
|
510
|
+
getCreatedAt: getObjectCreatedAt('evnt'),
|
|
511
|
+
getId: (event) => event.eventId,
|
|
512
|
+
});
|
|
513
|
+
// If resolveData is "none", remove eventData from events
|
|
514
|
+
if (resolveData === 'none') {
|
|
515
|
+
return {
|
|
516
|
+
...result,
|
|
517
|
+
data: result.data.map((event) => {
|
|
518
|
+
const { eventData: _eventData, ...rest } = event;
|
|
519
|
+
return rest;
|
|
520
|
+
}),
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
return result;
|
|
524
|
+
},
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
//# sourceMappingURL=events-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-storage.js","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Event, Hook, Step, StepWithoutData, WorkflowRun, WorkflowRunWithoutData } from '@workflow/world';
|
|
2
|
+
/**
|
|
3
|
+
* Filter run data based on resolveData setting.
|
|
4
|
+
* When resolveData is 'none', strips input/output to reduce payload size.
|
|
5
|
+
*/
|
|
6
|
+
export declare function filterRunData(run: WorkflowRun, resolveData: 'none'): WorkflowRunWithoutData;
|
|
7
|
+
export declare function filterRunData(run: WorkflowRun, resolveData: 'all'): WorkflowRun;
|
|
8
|
+
export declare function filterRunData(run: WorkflowRun, resolveData: 'none' | 'all'): WorkflowRun | WorkflowRunWithoutData;
|
|
9
|
+
/**
|
|
10
|
+
* Filter step data based on resolveData setting.
|
|
11
|
+
* When resolveData is 'none', strips input/output to reduce payload size.
|
|
12
|
+
*/
|
|
13
|
+
export declare function filterStepData(step: Step, resolveData: 'none'): StepWithoutData;
|
|
14
|
+
export declare function filterStepData(step: Step, resolveData: 'all'): Step;
|
|
15
|
+
export declare function filterStepData(step: Step, resolveData: 'none' | 'all'): Step | StepWithoutData;
|
|
16
|
+
/**
|
|
17
|
+
* Filter event data based on resolveData setting.
|
|
18
|
+
* When resolveData is 'none', strips eventData to reduce payload size.
|
|
19
|
+
*/
|
|
20
|
+
export declare function filterEventData(event: Event, resolveData: 'none' | 'all'): Event;
|
|
21
|
+
/**
|
|
22
|
+
* Filter hook data based on resolveData setting.
|
|
23
|
+
* When resolveData is 'none', strips metadata to reduce payload size.
|
|
24
|
+
*/
|
|
25
|
+
export declare function filterHookData(hook: Hook, resolveData: 'none' | 'all'): Hook;
|
|
26
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/storage/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,WAAW,EACX,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,GAClB,sBAAsB,CAAC;AAC1B,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,KAAK,GACjB,WAAW,CAAC;AACf,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,GAAG,KAAK,GAC1B,WAAW,GAAG,sBAAsB,CAAC;AAexC;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,eAAe,CAAC;AACnB,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;AACrE,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAAG,KAAK,GAC1B,IAAI,GAAG,eAAe,CAAC;AAe1B;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,GAAG,KAAK,GAC1B,KAAK,CAMP;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAM5E"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function filterRunData(run, resolveData) {
|
|
2
|
+
if (resolveData === 'none') {
|
|
3
|
+
return {
|
|
4
|
+
...run,
|
|
5
|
+
input: undefined,
|
|
6
|
+
output: undefined,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
return run;
|
|
10
|
+
}
|
|
11
|
+
export function filterStepData(step, resolveData) {
|
|
12
|
+
if (resolveData === 'none') {
|
|
13
|
+
return {
|
|
14
|
+
...step,
|
|
15
|
+
input: undefined,
|
|
16
|
+
output: undefined,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return step;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Filter event data based on resolveData setting.
|
|
23
|
+
* When resolveData is 'none', strips eventData to reduce payload size.
|
|
24
|
+
*/
|
|
25
|
+
export function filterEventData(event, resolveData) {
|
|
26
|
+
if (resolveData === 'none') {
|
|
27
|
+
const { eventData: _eventData, ...rest } = event;
|
|
28
|
+
return rest;
|
|
29
|
+
}
|
|
30
|
+
return event;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Filter hook data based on resolveData setting.
|
|
34
|
+
* When resolveData is 'none', strips metadata to reduce payload size.
|
|
35
|
+
*/
|
|
36
|
+
export function filterHookData(hook, resolveData) {
|
|
37
|
+
if (resolveData === 'none') {
|
|
38
|
+
const { metadata: _metadata, ...rest } = hook;
|
|
39
|
+
return rest;
|
|
40
|
+
}
|
|
41
|
+
return hook;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/storage/filters.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,aAAa,CAC3B,GAAgB,EAChB,WAA2B;IAE3B,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,GAAG;YACN,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;SACQ,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAeD,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,WAA2B;IAE3B,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;SACC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAY,EACZ,WAA2B;IAE3B,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,KAAY,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAU,EAAE,WAA2B;IACpE,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,IAAW,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a monotonic ULID factory that ensures ULIDs are always increasing
|
|
3
|
+
* even when generated within the same millisecond.
|
|
4
|
+
*/
|
|
5
|
+
export declare const monotonicUlid: import("ulid").ULIDFactory;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a function to extract createdAt date from a filename based on ULID.
|
|
8
|
+
* Used for efficient pagination without reading file contents.
|
|
9
|
+
*
|
|
10
|
+
* @param idPrefix - The prefix to strip from filenames (e.g., 'wrun', 'evnt', 'step')
|
|
11
|
+
* @returns A function that extracts Date from filename, or null if not extractable
|
|
12
|
+
*/
|
|
13
|
+
export declare const getObjectCreatedAt: (idPrefix: string) => (filename: string) => Date | null;
|
|
14
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/storage/helpers.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,aAAa,4BAAwC,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC5B,UAAU,MAAM,MAChB,UAAU,MAAM,KAAG,IAAI,GAAG,IAqB1B,CAAC"}
|