@workflow/world-local 4.0.1-beta.7 → 4.1.0-beta.29

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 (73) 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 +108 -13
  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/instrumentObject.d.ts +8 -0
  18. package/dist/instrumentObject.d.ts.map +1 -0
  19. package/dist/instrumentObject.js +66 -0
  20. package/dist/instrumentObject.js.map +1 -0
  21. package/dist/queue.d.ts +2 -1
  22. package/dist/queue.d.ts.map +1 -1
  23. package/dist/queue.js +84 -40
  24. package/dist/queue.js.map +1 -1
  25. package/dist/storage/events-storage.d.ts +7 -0
  26. package/dist/storage/events-storage.d.ts.map +1 -0
  27. package/dist/storage/events-storage.js +540 -0
  28. package/dist/storage/events-storage.js.map +1 -0
  29. package/dist/storage/filters.d.ts +26 -0
  30. package/dist/storage/filters.d.ts.map +1 -0
  31. package/dist/storage/filters.js +43 -0
  32. package/dist/storage/filters.js.map +1 -0
  33. package/dist/storage/helpers.d.ts +14 -0
  34. package/dist/storage/helpers.d.ts.map +1 -0
  35. package/dist/storage/helpers.js +34 -0
  36. package/dist/storage/helpers.js.map +1 -0
  37. package/dist/storage/hooks-storage.d.ts +12 -0
  38. package/dist/storage/hooks-storage.d.ts.map +1 -0
  39. package/dist/storage/hooks-storage.js +89 -0
  40. package/dist/storage/hooks-storage.js.map +1 -0
  41. package/dist/storage/index.d.ts +12 -0
  42. package/dist/storage/index.d.ts.map +1 -0
  43. package/dist/storage/index.js +32 -0
  44. package/dist/storage/index.js.map +1 -0
  45. package/dist/storage/legacy.d.ts +13 -0
  46. package/dist/storage/legacy.d.ts.map +1 -0
  47. package/dist/storage/legacy.js +73 -0
  48. package/dist/storage/legacy.js.map +1 -0
  49. package/dist/storage/runs-storage.d.ts +7 -0
  50. package/dist/storage/runs-storage.d.ts.map +1 -0
  51. package/dist/storage/runs-storage.js +59 -0
  52. package/dist/storage/runs-storage.js.map +1 -0
  53. package/dist/storage/steps-storage.d.ts +7 -0
  54. package/dist/storage/steps-storage.d.ts.map +1 -0
  55. package/dist/storage/steps-storage.js +58 -0
  56. package/dist/storage/steps-storage.js.map +1 -0
  57. package/dist/storage.d.ts +9 -2
  58. package/dist/storage.d.ts.map +1 -1
  59. package/dist/storage.js +8 -437
  60. package/dist/storage.js.map +1 -1
  61. package/dist/streamer.d.ts +1 -1
  62. package/dist/streamer.d.ts.map +1 -1
  63. package/dist/streamer.js +146 -22
  64. package/dist/streamer.js.map +1 -1
  65. package/dist/telemetry.d.ts +28 -0
  66. package/dist/telemetry.d.ts.map +1 -0
  67. package/dist/telemetry.js +71 -0
  68. package/dist/telemetry.js.map +1 -0
  69. package/dist/test-helpers.d.ts +43 -0
  70. package/dist/test-helpers.d.ts.map +1 -0
  71. package/dist/test-helpers.js +89 -0
  72. package/dist/test-helpers.js.map +1 -0
  73. package/package.json +10 -9
package/dist/storage.js CHANGED
@@ -1,440 +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
1
  /**
66
- * Creates a hooks storage implementation using the filesystem.
67
- * Implements the Storage['hooks'] interface with hook CRUD operations.
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
68
8
  */
69
- function createHooksStorage(basedir) {
70
- // Helper function to find a hook by token (shared between create and getByToken)
71
- async function findHookByToken(token) {
72
- const hooksDir = path.join(basedir, 'hooks');
73
- const files = await listJSONFiles(hooksDir);
74
- for (const file of files) {
75
- const hookPath = path.join(hooksDir, `${file}.json`);
76
- const hook = await readJSON(hookPath, HookSchema);
77
- if (hook && hook.token === token) {
78
- return hook;
79
- }
80
- }
81
- return null;
82
- }
83
- async function create(runId, data) {
84
- // Check if a hook with the same token already exists
85
- // Token uniqueness is enforced globally per embedded environment
86
- const existingHook = await findHookByToken(data.token);
87
- if (existingHook) {
88
- throw new Error(`Hook with token ${data.token} already exists for this project`);
89
- }
90
- const now = new Date();
91
- const result = {
92
- runId,
93
- hookId: data.hookId,
94
- token: data.token,
95
- metadata: data.metadata,
96
- ownerId: 'embedded-owner',
97
- projectId: 'embedded-project',
98
- environment: 'embedded',
99
- createdAt: now,
100
- };
101
- const hookPath = path.join(basedir, 'hooks', `${data.hookId}.json`);
102
- await writeJSON(hookPath, result);
103
- return result;
104
- }
105
- async function get(hookId, params) {
106
- const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
107
- const hook = await readJSON(hookPath, HookSchema);
108
- if (!hook) {
109
- throw new Error(`Hook ${hookId} not found`);
110
- }
111
- const resolveData = params?.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
112
- return filterHookData(hook, resolveData);
113
- }
114
- async function getByToken(token) {
115
- const hook = await findHookByToken(token);
116
- if (!hook) {
117
- throw new Error(`Hook with token ${token} not found`);
118
- }
119
- return hook;
120
- }
121
- async function list(params) {
122
- const hooksDir = path.join(basedir, 'hooks');
123
- const resolveData = params.resolveData || DEFAULT_RESOLVE_DATA_OPTION;
124
- const result = await paginatedFileSystemQuery({
125
- directory: hooksDir,
126
- schema: HookSchema,
127
- sortOrder: params.pagination?.sortOrder,
128
- limit: params.pagination?.limit,
129
- cursor: params.pagination?.cursor,
130
- filePrefix: undefined, // Hooks don't have ULIDs, so we can't optimize by filename
131
- filter: (hook) => {
132
- // Filter by runId if provided
133
- if (params.runId && hook.runId !== params.runId) {
134
- return false;
135
- }
136
- return true;
137
- },
138
- getCreatedAt: () => {
139
- // Hook files don't have ULID timestamps in filename
140
- // We need to read the file to get createdAt, but that's inefficient
141
- // So we return the hook's createdAt directly (item.createdAt will be used for sorting)
142
- // Return a dummy date to pass the null check, actual sorting uses item.createdAt
143
- return new Date(0);
144
- },
145
- getId: (hook) => hook.hookId,
146
- });
147
- // Transform the data after pagination
148
- return {
149
- ...result,
150
- data: result.data.map((hook) => filterHookData(hook, resolveData)),
151
- };
152
- }
153
- async function dispose(hookId) {
154
- const hookPath = path.join(basedir, 'hooks', `${hookId}.json`);
155
- const hook = await readJSON(hookPath, HookSchema);
156
- if (!hook) {
157
- throw new Error(`Hook ${hookId} not found`);
158
- }
159
- await deleteJSON(hookPath);
160
- return hook;
161
- }
162
- return { create, get, getByToken, list, dispose };
163
- }
164
- export function createStorage(basedir) {
165
- return {
166
- runs: {
167
- async create(data) {
168
- const runId = `wrun_${monotonicUlid()}`;
169
- const now = new Date();
170
- const result = {
171
- runId,
172
- deploymentId: data.deploymentId,
173
- status: 'pending',
174
- workflowName: data.workflowName,
175
- executionContext: data.executionContext,
176
- input: data.input || [],
177
- output: undefined,
178
- error: undefined,
179
- errorCode: undefined,
180
- startedAt: undefined,
181
- completedAt: undefined,
182
- createdAt: now,
183
- updatedAt: now,
184
- };
185
- const runPath = path.join(basedir, 'runs', `${runId}.json`);
186
- await writeJSON(runPath, result);
187
- return result;
188
- },
189
- async get(id, params) {
190
- const runPath = path.join(basedir, 'runs', `${id}.json`);
191
- const run = await readJSON(runPath, WorkflowRunSchema);
192
- if (!run) {
193
- throw new WorkflowRunNotFoundError(id);
194
- }
195
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
196
- return filterRunData(run, resolveData);
197
- },
198
- async update(id, data) {
199
- const runPath = path.join(basedir, 'runs', `${id}.json`);
200
- const run = await readJSON(runPath, WorkflowRunSchema);
201
- if (!run) {
202
- throw new WorkflowRunNotFoundError(id);
203
- }
204
- const now = new Date();
205
- const updatedRun = {
206
- ...run,
207
- ...data,
208
- updatedAt: now,
209
- };
210
- // Only set startedAt the first time the run transitions to 'running'
211
- if (data.status === 'running' && !updatedRun.startedAt) {
212
- updatedRun.startedAt = now;
213
- }
214
- if (data.status === 'completed' ||
215
- data.status === 'failed' ||
216
- data.status === 'cancelled') {
217
- updatedRun.completedAt = now;
218
- }
219
- await writeJSON(runPath, updatedRun, { overwrite: true });
220
- return updatedRun;
221
- },
222
- async list(params) {
223
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
224
- const result = await paginatedFileSystemQuery({
225
- directory: path.join(basedir, 'runs'),
226
- schema: WorkflowRunSchema,
227
- filter: (run) => {
228
- if (params?.workflowName &&
229
- run.workflowName !== params.workflowName) {
230
- return false;
231
- }
232
- if (params?.status && run.status !== params.status) {
233
- return false;
234
- }
235
- return true;
236
- },
237
- sortOrder: params?.pagination?.sortOrder ?? 'desc',
238
- limit: params?.pagination?.limit,
239
- cursor: params?.pagination?.cursor,
240
- getCreatedAt: getObjectCreatedAt('wrun'),
241
- getId: (run) => run.runId,
242
- });
243
- // If resolveData is "none", replace input/output with empty data
244
- if (resolveData === 'none') {
245
- return {
246
- ...result,
247
- data: result.data.map((run) => ({
248
- ...run,
249
- input: [],
250
- output: undefined,
251
- })),
252
- };
253
- }
254
- return result;
255
- },
256
- async cancel(id, params) {
257
- const run = await this.update(id, { status: 'cancelled' });
258
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
259
- return filterRunData(run, resolveData);
260
- },
261
- async pause(id, params) {
262
- const run = await this.update(id, { status: 'paused' });
263
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
264
- return filterRunData(run, resolveData);
265
- },
266
- async resume(id, params) {
267
- const run = await this.update(id, { status: 'running' });
268
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
269
- return filterRunData(run, resolveData);
270
- },
271
- },
272
- steps: {
273
- async create(runId, data) {
274
- const now = new Date();
275
- const result = {
276
- runId,
277
- stepId: data.stepId,
278
- stepName: data.stepName,
279
- status: 'pending',
280
- input: data.input,
281
- output: undefined,
282
- error: undefined,
283
- errorCode: undefined,
284
- attempt: 0,
285
- startedAt: undefined,
286
- completedAt: undefined,
287
- createdAt: now,
288
- updatedAt: now,
289
- };
290
- const compositeKey = `${runId}-${data.stepId}`;
291
- const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
292
- await writeJSON(stepPath, result);
293
- return result;
294
- },
295
- async get(runId, stepId, params) {
296
- if (!runId) {
297
- const fileIds = await listJSONFiles(path.join(basedir, 'steps'));
298
- const fileId = fileIds.find((fileId) => fileId.endsWith(`-${stepId}`));
299
- if (!fileId) {
300
- throw new Error(`Step ${stepId} not found`);
301
- }
302
- runId = fileId.split('-')[0];
303
- }
304
- const compositeKey = `${runId}-${stepId}`;
305
- const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
306
- const step = await readJSON(stepPath, StepSchema);
307
- if (!step) {
308
- throw new Error(`Step ${stepId} in run ${runId} not found`);
309
- }
310
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
311
- return filterStepData(step, resolveData);
312
- },
313
- async update(runId, stepId, data) {
314
- const compositeKey = `${runId}-${stepId}`;
315
- const stepPath = path.join(basedir, 'steps', `${compositeKey}.json`);
316
- const step = await readJSON(stepPath, StepSchema);
317
- if (!step) {
318
- throw new Error(`Step ${stepId} in run ${runId} not found`);
319
- }
320
- const now = new Date();
321
- const updatedStep = {
322
- ...step,
323
- ...data,
324
- updatedAt: now,
325
- };
326
- // Only set startedAt the first time the step transitions to 'running'
327
- if (data.status === 'running' && !updatedStep.startedAt) {
328
- updatedStep.startedAt = now;
329
- }
330
- if (data.status === 'completed' || data.status === 'failed') {
331
- updatedStep.completedAt = now;
332
- }
333
- await writeJSON(stepPath, updatedStep, { overwrite: true });
334
- return updatedStep;
335
- },
336
- async list(params) {
337
- const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
338
- const result = await paginatedFileSystemQuery({
339
- directory: path.join(basedir, 'steps'),
340
- schema: StepSchema,
341
- filePrefix: `${params.runId}-`,
342
- sortOrder: params.pagination?.sortOrder ?? 'desc',
343
- limit: params.pagination?.limit,
344
- cursor: params.pagination?.cursor,
345
- getCreatedAt: getObjectCreatedAt('step'),
346
- getId: (step) => step.stepId,
347
- });
348
- // If resolveData is "none", replace input/output with empty data
349
- if (resolveData === 'none') {
350
- return {
351
- ...result,
352
- data: result.data.map((step) => ({
353
- ...step,
354
- input: [],
355
- output: undefined,
356
- })),
357
- };
358
- }
359
- return result;
360
- },
361
- },
362
- // Events - filesystem-backed storage
363
- events: {
364
- async create(runId, data, params) {
365
- const eventId = `evnt_${monotonicUlid()}`;
366
- const now = new Date();
367
- const result = {
368
- ...data,
369
- runId,
370
- eventId,
371
- createdAt: now,
372
- };
373
- // Store event using composite key {runId}-{eventId}
374
- const compositeKey = `${runId}-${eventId}`;
375
- const eventPath = path.join(basedir, 'events', `${compositeKey}.json`);
376
- await writeJSON(eventPath, result);
377
- const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
378
- return filterEventData(result, resolveData);
379
- },
380
- async list(params) {
381
- const { runId } = params;
382
- const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
383
- const result = await paginatedFileSystemQuery({
384
- directory: path.join(basedir, 'events'),
385
- schema: EventSchema,
386
- filePrefix: `${runId}-`,
387
- // Events in chronological order (oldest first) by default,
388
- // different from the default for other list calls.
389
- sortOrder: params.pagination?.sortOrder ?? 'asc',
390
- limit: params.pagination?.limit,
391
- cursor: params.pagination?.cursor,
392
- getCreatedAt: getObjectCreatedAt('evnt'),
393
- getId: (event) => event.eventId,
394
- });
395
- // If resolveData is "none", remove eventData from events
396
- if (resolveData === 'none') {
397
- return {
398
- ...result,
399
- data: result.data.map((event) => {
400
- const { eventData: _eventData, ...rest } = event;
401
- return rest;
402
- }),
403
- };
404
- }
405
- return result;
406
- },
407
- async listByCorrelationId(params) {
408
- const correlationId = params.correlationId;
409
- const resolveData = params.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
410
- const result = await paginatedFileSystemQuery({
411
- directory: path.join(basedir, 'events'),
412
- schema: EventSchema,
413
- // No filePrefix - search all events
414
- filter: (event) => event.correlationId === correlationId,
415
- // Events in chronological order (oldest first) by default,
416
- // different from the default for other list calls.
417
- sortOrder: params.pagination?.sortOrder ?? 'asc',
418
- limit: params.pagination?.limit,
419
- cursor: params.pagination?.cursor,
420
- getCreatedAt: getObjectCreatedAt('evnt'),
421
- getId: (event) => event.eventId,
422
- });
423
- // If resolveData is "none", remove eventData from events
424
- if (resolveData === 'none') {
425
- return {
426
- ...result,
427
- data: result.data.map((event) => {
428
- const { eventData: _eventData, ...rest } = event;
429
- return rest;
430
- }),
431
- };
432
- }
433
- return result;
434
- },
435
- },
436
- // Hooks
437
- hooks: createHooksStorage(basedir),
438
- };
439
- }
9
+ // Re-export from the modular storage implementation
10
+ export { createStorage } from './storage/index.js';
440
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,CA8UxD"}