@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.
Files changed (65) hide show
  1. package/dist/config.d.ts +15 -4
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +35 -9
  4. package/dist/config.js.map +1 -1
  5. package/dist/fs.d.ts +13 -0
  6. package/dist/fs.d.ts.map +1 -1
  7. package/dist/fs.js +109 -14
  8. package/dist/fs.js.map +1 -1
  9. package/dist/index.d.ts +10 -7
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +21 -9
  12. package/dist/index.js.map +1 -1
  13. package/dist/init.d.ts +91 -0
  14. package/dist/init.d.ts.map +1 -0
  15. package/dist/init.js +263 -0
  16. package/dist/init.js.map +1 -0
  17. package/dist/queue.d.ts +2 -1
  18. package/dist/queue.d.ts.map +1 -1
  19. package/dist/queue.js +83 -40
  20. package/dist/queue.js.map +1 -1
  21. package/dist/storage/events-storage.d.ts +7 -0
  22. package/dist/storage/events-storage.d.ts.map +1 -0
  23. package/dist/storage/events-storage.js +527 -0
  24. package/dist/storage/events-storage.js.map +1 -0
  25. package/dist/storage/filters.d.ts +26 -0
  26. package/dist/storage/filters.d.ts.map +1 -0
  27. package/dist/storage/filters.js +43 -0
  28. package/dist/storage/filters.js.map +1 -0
  29. package/dist/storage/helpers.d.ts +14 -0
  30. package/dist/storage/helpers.d.ts.map +1 -0
  31. package/dist/storage/helpers.js +34 -0
  32. package/dist/storage/helpers.js.map +1 -0
  33. package/dist/storage/hooks-storage.d.ts +12 -0
  34. package/dist/storage/hooks-storage.d.ts.map +1 -0
  35. package/dist/storage/hooks-storage.js +89 -0
  36. package/dist/storage/hooks-storage.js.map +1 -0
  37. package/dist/storage/index.d.ts +10 -0
  38. package/dist/storage/index.d.ts.map +1 -0
  39. package/dist/storage/index.js +20 -0
  40. package/dist/storage/index.js.map +1 -0
  41. package/dist/storage/legacy.d.ts +13 -0
  42. package/dist/storage/legacy.d.ts.map +1 -0
  43. package/dist/storage/legacy.js +73 -0
  44. package/dist/storage/legacy.js.map +1 -0
  45. package/dist/storage/runs-storage.d.ts +7 -0
  46. package/dist/storage/runs-storage.d.ts.map +1 -0
  47. package/dist/storage/runs-storage.js +59 -0
  48. package/dist/storage/runs-storage.js.map +1 -0
  49. package/dist/storage/steps-storage.d.ts +7 -0
  50. package/dist/storage/steps-storage.d.ts.map +1 -0
  51. package/dist/storage/steps-storage.js +58 -0
  52. package/dist/storage/steps-storage.js.map +1 -0
  53. package/dist/storage.d.ts +9 -2
  54. package/dist/storage.d.ts.map +1 -1
  55. package/dist/storage.js +10 -421
  56. package/dist/storage.js.map +1 -1
  57. package/dist/streamer.d.ts +1 -1
  58. package/dist/streamer.d.ts.map +1 -1
  59. package/dist/streamer.js +103 -20
  60. package/dist/streamer.js.map +1 -1
  61. package/dist/test-helpers.d.ts +43 -0
  62. package/dist/test-helpers.d.ts.map +1 -0
  63. package/dist/test-helpers.js +89 -0
  64. package/dist/test-helpers.js.map +1 -0
  65. package/package.json +10 -9
package/dist/storage.js CHANGED
@@ -1,422 +1,11 @@
1
- import path from 'node:path';
2
- import { WorkflowRunNotFoundError } from '@workflow/errors';
3
- import { EventSchema, HookSchema, StepSchema, WorkflowRunSchema, } from '@workflow/world';
4
- import { monotonicFactory } from 'ulid';
5
- import { DEFAULT_RESOLVE_DATA_OPTION } from './config.js';
6
- import { deleteJSON, listJSONFiles, paginatedFileSystemQuery, readJSON, ulidToDate, writeJSON, } from './fs.js';
7
- // Create a monotonic ULID factory that ensures ULIDs are always increasing
8
- // even when generated within the same millisecond
9
- const monotonicUlid = monotonicFactory(() => Math.random());
10
- // Helper functions to filter data based on resolveData setting
11
- function filterRunData(run, resolveData) {
12
- if (resolveData === 'none') {
13
- return {
14
- ...run,
15
- input: [],
16
- output: undefined,
17
- };
18
- }
19
- return run;
20
- }
21
- function filterStepData(step, resolveData) {
22
- if (resolveData === 'none') {
23
- return {
24
- ...step,
25
- input: [],
26
- output: undefined,
27
- };
28
- }
29
- return step;
30
- }
31
- function filterEventData(event, resolveData) {
32
- if (resolveData === 'none') {
33
- const { eventData: _eventData, ...rest } = event;
34
- return rest;
35
- }
36
- return event;
37
- }
38
- function filterHookData(hook, resolveData) {
39
- if (resolveData === 'none') {
40
- const { metadata: _metadata, ...rest } = hook;
41
- return rest;
42
- }
43
- return hook;
44
- }
45
- const getObjectCreatedAt = (idPrefix) => (filename) => {
46
- const replaceRegex = new RegExp(`^${idPrefix}_`, 'g');
47
- const dashIndex = filename.indexOf('-');
48
- if (dashIndex === -1) {
49
- // No dash - extract ULID from the filename (e.g., wrun_ULID.json, evnt_ULID.json)
50
- const ulid = filename.replace(/\.json$/, '').replace(replaceRegex, '');
51
- return ulidToDate(ulid);
52
- }
53
- // For composite keys like {runId}-{stepId}, extract from the appropriate part
54
- if (idPrefix === 'step') {
55
- // For steps: wrun_ULID-step_123.json - extract from the runId part
56
- const runId = filename.substring(0, dashIndex);
57
- const ulid = runId.replace(/^wrun_/, '');
58
- return ulidToDate(ulid);
59
- }
60
- // For events: wrun_ULID-evnt_ULID.json - extract from the eventId part
61
- const id = filename.substring(dashIndex + 1).replace(/\.json$/, '');
62
- const ulid = id.replace(replaceRegex, '');
63
- return ulidToDate(ulid);
64
- };
65
- export function createStorage(basedir) {
66
- return {
67
- runs: {
68
- async create(data) {
69
- const runId = `wrun_${monotonicUlid()}`;
70
- const now = new Date();
71
- const result = {
72
- runId,
73
- deploymentId: data.deploymentId,
74
- status: 'pending',
75
- workflowName: data.workflowName,
76
- executionContext: data.executionContext,
77
- input: data.input || [],
78
- output: undefined,
79
- error: undefined,
80
- errorCode: undefined,
81
- startedAt: undefined,
82
- completedAt: undefined,
83
- createdAt: now,
84
- updatedAt: now,
85
- };
86
- const runPath = path.join(basedir, 'runs', `${runId}.json`);
87
- await writeJSON(runPath, result);
88
- return result;
89
- },
90
- async get(id, params) {
91
- const runPath = path.join(basedir, 'runs', `${id}.json`);
92
- const run = await readJSON(runPath, WorkflowRunSchema);
93
- if (!run) {
94
- throw new WorkflowRunNotFoundError(id);
95
- }
96
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
97
- return filterRunData(run, resolveData);
98
- },
99
- async update(id, data) {
100
- const runPath = path.join(basedir, 'runs', `${id}.json`);
101
- const run = await readJSON(runPath, WorkflowRunSchema);
102
- if (!run) {
103
- throw new WorkflowRunNotFoundError(id);
104
- }
105
- const now = new Date();
106
- const updatedRun = {
107
- ...run,
108
- ...data,
109
- updatedAt: now,
110
- };
111
- // Only set startedAt the first time the run transitions to 'running'
112
- if (data.status === 'running' && !updatedRun.startedAt) {
113
- updatedRun.startedAt = now;
114
- }
115
- if (data.status === 'completed' ||
116
- data.status === 'failed' ||
117
- data.status === 'cancelled') {
118
- updatedRun.completedAt = now;
119
- }
120
- await writeJSON(runPath, updatedRun, { overwrite: true });
121
- return updatedRun;
122
- },
123
- async list(params) {
124
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
125
- const result = await paginatedFileSystemQuery({
126
- directory: path.join(basedir, 'runs'),
127
- schema: WorkflowRunSchema,
128
- filter: (run) => {
129
- if (params?.workflowName &&
130
- run.workflowName !== params.workflowName) {
131
- return false;
132
- }
133
- if (params?.status && run.status !== params.status) {
134
- return false;
135
- }
136
- return true;
137
- },
138
- sortOrder: params?.pagination?.sortOrder ?? 'desc',
139
- limit: params?.pagination?.limit,
140
- cursor: params?.pagination?.cursor,
141
- getCreatedAt: getObjectCreatedAt('wrun'),
142
- getId: (run) => run.runId,
143
- });
144
- // If resolveData is "none", replace input/output with empty data
145
- if (resolveData === 'none') {
146
- return {
147
- ...result,
148
- data: result.data.map((run) => ({
149
- ...run,
150
- input: [],
151
- output: undefined,
152
- })),
153
- };
154
- }
155
- return result;
156
- },
157
- async cancel(id, params) {
158
- const run = await this.update(id, { status: 'cancelled' });
159
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
160
- return filterRunData(run, resolveData);
161
- },
162
- async pause(id, params) {
163
- const run = await this.update(id, { status: 'paused' });
164
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
165
- return filterRunData(run, resolveData);
166
- },
167
- async resume(id, params) {
168
- const run = await this.update(id, { status: 'running' });
169
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
170
- return filterRunData(run, resolveData);
171
- },
172
- },
173
- steps: {
174
- async create(runId, data) {
175
- const now = new Date();
176
- const result = {
177
- runId,
178
- stepId: data.stepId,
179
- stepName: data.stepName,
180
- status: 'pending',
181
- input: data.input,
182
- output: undefined,
183
- error: undefined,
184
- errorCode: undefined,
185
- attempt: 0,
186
- startedAt: undefined,
187
- completedAt: undefined,
188
- createdAt: now,
189
- updatedAt: now,
190
- };
191
- const compositeKey = `${runId}-${data.stepId}`;
192
- const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
193
- await writeJSON(stepPath, result);
194
- return result;
195
- },
196
- async get(runId, stepId, params) {
197
- if (!runId) {
198
- const fileIds = await listJSONFiles(path.join(basedir, 'steps'));
199
- const fileId = fileIds.find((fileId) => fileId.endsWith(`-${stepId}`));
200
- if (!fileId) {
201
- throw new Error(`Step ${stepId} not found`);
202
- }
203
- runId = fileId.split('-')[0];
204
- }
205
- const compositeKey = `${runId}-${stepId}`;
206
- const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
207
- const step = await readJSON(stepPath, StepSchema);
208
- if (!step) {
209
- throw new Error(`Step ${stepId} in run ${runId} not found`);
210
- }
211
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
212
- return filterStepData(step, resolveData);
213
- },
214
- async update(runId, stepId, data) {
215
- const compositeKey = `${runId}-${stepId}`;
216
- const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
217
- const step = await readJSON(stepPath, StepSchema);
218
- if (!step) {
219
- throw new Error(`Step ${stepId} in run ${runId} not found`);
220
- }
221
- const now = new Date();
222
- const updatedStep = {
223
- ...step,
224
- ...data,
225
- updatedAt: now,
226
- };
227
- // Only set startedAt the first time the step transitions to 'running'
228
- if (data.status === 'running' && !updatedStep.startedAt) {
229
- updatedStep.startedAt = now;
230
- }
231
- if (data.status === 'completed' || data.status === 'failed') {
232
- updatedStep.completedAt = now;
233
- }
234
- await writeJSON(stepPath, updatedStep, { overwrite: true });
235
- return updatedStep;
236
- },
237
- async list(params) {
238
- const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
239
- const result = await paginatedFileSystemQuery({
240
- directory: path.join(basedir, 'steps'),
241
- schema: StepSchema,
242
- filePrefix: `${params.runId}-`,
243
- sortOrder: params.pagination?.sortOrder ?? 'desc',
244
- limit: params.pagination?.limit,
245
- cursor: params.pagination?.cursor,
246
- getCreatedAt: getObjectCreatedAt('step'),
247
- getId: (step) => step.stepId,
248
- });
249
- // If resolveData is "none", replace input/output with empty data
250
- if (resolveData === 'none') {
251
- return {
252
- ...result,
253
- data: result.data.map((step) => ({
254
- ...step,
255
- input: [],
256
- output: undefined,
257
- })),
258
- };
259
- }
260
- return result;
261
- },
262
- },
263
- // Events - filesystem-backed storage
264
- events: {
265
- async create(runId, data, params) {
266
- const eventId = `evnt_${monotonicUlid()}`;
267
- const now = new Date();
268
- const result = {
269
- ...data,
270
- runId,
271
- eventId,
272
- createdAt: now,
273
- };
274
- // Store event using composite key {runId}-{eventId}
275
- const compositeKey = `${runId}-${eventId}`;
276
- const eventPath = path.join(basedir, 'events', `${compositeKey}.json`);
277
- await writeJSON(eventPath, result);
278
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
279
- return filterEventData(result, resolveData);
280
- },
281
- async list(params) {
282
- const { runId } = params;
283
- const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
284
- const result = await paginatedFileSystemQuery({
285
- directory: path.join(basedir, 'events'),
286
- schema: EventSchema,
287
- filePrefix: `${runId}-`,
288
- // Events in chronological order (oldest first) by default,
289
- // different from the default for other list calls.
290
- sortOrder: params.pagination?.sortOrder ?? 'asc',
291
- limit: params.pagination?.limit,
292
- cursor: params.pagination?.cursor,
293
- getCreatedAt: getObjectCreatedAt('evnt'),
294
- getId: (event) => event.eventId,
295
- });
296
- // If resolveData is "none", remove eventData from events
297
- if (resolveData === 'none') {
298
- return {
299
- ...result,
300
- data: result.data.map((event) => {
301
- const { eventData: _eventData, ...rest } = event;
302
- return rest;
303
- }),
304
- };
305
- }
306
- return result;
307
- },
308
- async listByCorrelationId(params) {
309
- const correlationId = params.correlationId;
310
- const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
311
- const result = await paginatedFileSystemQuery({
312
- directory: path.join(basedir, 'events'),
313
- schema: EventSchema,
314
- // No filePrefix - search all events
315
- filter: (event) => event.correlationId === correlationId,
316
- // Events in chronological order (oldest first) by default,
317
- // different from the default for other list calls.
318
- sortOrder: params.pagination?.sortOrder ?? 'asc',
319
- limit: params.pagination?.limit,
320
- cursor: params.pagination?.cursor,
321
- getCreatedAt: getObjectCreatedAt('evnt'),
322
- getId: (event) => event.eventId,
323
- });
324
- // If resolveData is "none", remove eventData from events
325
- if (resolveData === 'none') {
326
- return {
327
- ...result,
328
- data: result.data.map((event) => {
329
- const { eventData: _eventData, ...rest } = event;
330
- return rest;
331
- }),
332
- };
333
- }
334
- return result;
335
- },
336
- },
337
- // Hooks
338
- hooks: {
339
- async create(runId, data) {
340
- const now = new Date();
341
- const result = {
342
- runId,
343
- hookId: data.hookId,
344
- token: data.token,
345
- metadata: data.metadata,
346
- ownerId: 'embedded-owner',
347
- projectId: 'embedded-project',
348
- environment: 'embedded',
349
- createdAt: now,
350
- };
351
- const hookPath = path.join(basedir, 'hooks', `${data.hookId}.json`);
352
- await writeJSON(hookPath, result);
353
- return result;
354
- },
355
- async get(hookId, params) {
356
- const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
357
- // Try webhook schema first (which includes response), fall back to HookSchema
358
- const hook = await readJSON(hookPath, HookSchema);
359
- if (!hook) {
360
- throw new Error(`Hook ${hookId} not found`);
361
- }
362
- const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
363
- return filterHookData(hook, resolveData);
364
- },
365
- async getByToken(token) {
366
- // Need to search through all hooks to find one with matching token
367
- const hooksDir = path.join(basedir, 'hooks');
368
- const files = await listJSONFiles(hooksDir);
369
- for (const file of files) {
370
- const hookPath = path.join(hooksDir, `${file}.json`);
371
- const hook = await readJSON(hookPath, HookSchema);
372
- if (hook && hook.token === token) {
373
- return hook;
374
- }
375
- }
376
- throw new Error(`Hook with token ${token} not found`);
377
- },
378
- async list(params) {
379
- const hooksDir = path.join(basedir, 'hooks');
380
- const resolveData = params.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
381
- const result = await paginatedFileSystemQuery({
382
- directory: hooksDir,
383
- schema: HookSchema,
384
- sortOrder: params.pagination?.sortOrder,
385
- limit: params.pagination?.limit,
386
- cursor: params.pagination?.cursor,
387
- filePrefix: undefined, // Hooks don't have ULIDs, so we can't optimize by filename
388
- filter: (hook) => {
389
- // Filter by runId if provided
390
- if (params.runId && hook.runId !== params.runId) {
391
- return false;
392
- }
393
- return true;
394
- },
395
- getCreatedAt: () => {
396
- // Hook files don't have ULID timestamps in filename
397
- // We need to read the file to get createdAt, but that's inefficient
398
- // So we return the hook's createdAt directly (item.createdAt will be used for sorting)
399
- // Return a dummy date to pass the null check, actual sorting uses item.createdAt
400
- return new Date(0);
401
- },
402
- getId: (hook) => hook.hookId,
403
- });
404
- // Transform the data after pagination
405
- return {
406
- ...result,
407
- data: result.data.map((hook) => filterHookData(hook, resolveData)),
408
- };
409
- },
410
- async dispose(hookId) {
411
- const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
412
- const hook = await readJSON(hookPath, HookSchema);
413
- if (!hook) {
414
- throw new Error(`Hook ${hookId} not found`);
415
- }
416
- await deleteJSON(hookPath);
417
- return hook;
418
- },
419
- },
420
- };
421
- }
1
+ /**
2
+ * Filesystem-based storage implementation for workflow data.
3
+ *
4
+ * This module provides a complete Storage implementation that persists
5
+ * workflow runs, steps, events, and hooks to the local filesystem.
6
+ *
7
+ * @module
8
+ */
9
+ // Re-export from the modular storage implementation
10
+ export { createStorage } from './storage/index.js';
422
11
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oDAAoD;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -13,7 +13,7 @@ export interface Chunk {
13
13
  export declare function serializeChunk(chunk: Chunk): Buffer<ArrayBuffer>;
14
14
  export declare function deserializeChunk(serialized: Buffer): {
15
15
  eof: boolean;
16
- chunk: Buffer<ArrayBufferLike>;
16
+ chunk: Buffer<ArrayBuffer>;
17
17
  };
18
18
  export declare function createStreamer(basedir: string): Streamer;
19
19
  //# sourceMappingURL=streamer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQhD;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,uBAG1C;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM;;;EAIlD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAyKxD"}
1
+ {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAchD;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,uBAG1C;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM;;;EAKlD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAgRxD"}