@workflow/world-testing 4.0.1-beta.4 → 4.0.1-beta.41

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 (57) hide show
  1. package/LICENSE.md +201 -21
  2. package/dist/.well-known/workflow/v1/flow.d.ts +3 -0
  3. package/dist/.well-known/workflow/v1/flow.d.ts.map +1 -0
  4. package/dist/.well-known/workflow/v1/flow.js +47978 -0
  5. package/dist/.well-known/workflow/v1/flow.js.map +1 -0
  6. package/dist/.well-known/workflow/v1/manifest.json +331 -0
  7. package/dist/.well-known/workflow/v1/step.d.ts +3 -0
  8. package/dist/.well-known/workflow/v1/step.d.ts.map +1 -0
  9. package/dist/.well-known/workflow/v1/step.js +44774 -0
  10. package/dist/.well-known/workflow/v1/step.js.map +1 -0
  11. package/dist/src/addition.d.mts.map +1 -1
  12. package/dist/src/addition.mjs +5 -1
  13. package/dist/src/addition.mjs.map +1 -1
  14. package/dist/src/errors.d.mts +2 -0
  15. package/dist/src/errors.d.mts.map +1 -0
  16. package/dist/src/errors.mjs +31 -0
  17. package/dist/src/errors.mjs.map +1 -0
  18. package/dist/src/hooks.d.mts +2 -0
  19. package/dist/src/hooks.d.mts.map +1 -0
  20. package/dist/src/hooks.mjs +74 -0
  21. package/dist/src/hooks.mjs.map +1 -0
  22. package/dist/src/idempotency.mjs +2 -2
  23. package/dist/src/idempotency.mjs.map +1 -1
  24. package/dist/src/index.d.mts.map +1 -1
  25. package/dist/src/index.mjs +6 -0
  26. package/dist/src/index.mjs.map +1 -1
  27. package/dist/src/jsonlines.d.mts +2 -0
  28. package/dist/src/jsonlines.d.mts.map +1 -0
  29. package/dist/src/jsonlines.mjs +32 -0
  30. package/dist/src/jsonlines.mjs.map +1 -0
  31. package/dist/src/null-byte.d.mts +2 -0
  32. package/dist/src/null-byte.d.mts.map +1 -0
  33. package/dist/src/null-byte.mjs +20 -0
  34. package/dist/src/null-byte.mjs.map +1 -0
  35. package/dist/src/server.mjs +12 -4
  36. package/dist/src/server.mjs.map +1 -1
  37. package/dist/src/util.d.mts +55 -10
  38. package/dist/src/util.d.mts.map +1 -1
  39. package/dist/src/util.mjs +30 -7
  40. package/dist/src/util.mjs.map +1 -1
  41. package/dist/workflows/hooks.d.ts +17 -0
  42. package/dist/workflows/hooks.d.ts.map +1 -0
  43. package/dist/workflows/hooks.js +70 -0
  44. package/dist/workflows/hooks.js.map +1 -0
  45. package/package.json +14 -11
  46. package/.turbo/turbo-build.log +0 -15
  47. package/CHANGELOG.md +0 -58
  48. package/src/addition.mts +0 -27
  49. package/src/idempotency.mts +0 -30
  50. package/src/index.mts +0 -7
  51. package/src/server.mts +0 -104
  52. package/src/util.mts +0 -99
  53. package/test/embedded.test.ts +0 -3
  54. package/tsconfig.json +0 -11
  55. package/turbo.json +0 -13
  56. package/workflows/addition.ts +0 -16
  57. package/workflows/noop.ts +0 -37
@@ -1 +1 @@
1
- {"version":3,"file":"addition.d.mts","sourceRoot":"","sources":["../../src/addition.mts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,QAuBrC"}
1
+ {"version":3,"file":"addition.d.mts","sourceRoot":"","sources":["../../src/addition.mts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,QA0BrC"}
@@ -1,20 +1,24 @@
1
1
  import { expect, test, vi } from 'vitest';
2
+ import { hydrateWorkflowReturnValue } from 'workflow/internal/serialization';
2
3
  import { createFetcher, startServer } from './util.mjs';
3
4
  export function addition(world) {
4
5
  test('runs an addition', { timeout: 12_000 }, async () => {
5
6
  const server = await startServer({ world }).then(createFetcher);
6
7
  const result = await server.invoke('workflows/addition.ts', 'addition', [1, 2]);
7
8
  expect(result.runId).toMatch(/^wrun_.+/);
8
- await vi.waitFor(async () => {
9
+ const run = await vi.waitFor(async () => {
9
10
  const run = await server.getRun(result.runId);
10
11
  expect(run).toMatchObject({
11
12
  status: 'completed',
12
13
  output: [3],
13
14
  });
15
+ return run;
14
16
  }, {
15
17
  interval: 200,
16
18
  timeout: 10_000,
17
19
  });
20
+ const output = await hydrateWorkflowReturnValue(run.output, [], run.runId);
21
+ expect(output).toEqual(3);
18
22
  });
19
23
  }
20
24
  //# sourceMappingURL=addition.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"addition.mjs","sourceRoot":"","sources":["../../src/addition.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,uBAAuB,EACvB,UAAU,EACV,CAAC,CAAC,EAAE,CAAC,CAAC,CACP,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,OAAO,CACd,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAsB;gBAC7C,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,CAAC,CAAC,CAAC;aACZ,CAAC,CAAC;QACL,CAAC,EACD;YACE,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"addition.mjs","sourceRoot":"","sources":["../../src/addition.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,uBAAuB,EACvB,UAAU,EACV,CAAC,CAAC,EAAE,CAAC,CAAC,CACP,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAsB;gBAC7C,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,CAAC,CAAC,CAAC;aACZ,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,EACD;YACE,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function errors(world: string): void;
2
+ //# sourceMappingURL=errors.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.mts","sourceRoot":"","sources":["../../src/errors.mts"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,QAiCnC"}
@@ -0,0 +1,31 @@
1
+ import { expect, test, vi } from 'vitest';
2
+ import { hydrateWorkflowReturnValue } from 'workflow/internal/serialization';
3
+ import { createFetcher, startServer } from './util.mjs';
4
+ export function errors(world) {
5
+ test('retriable and fatal errors', { timeout: 59_000 }, async () => {
6
+ const server = await startServer({ world }).then(createFetcher);
7
+ const result = await server.invoke('workflows/retriable-and-fatal.ts', 'retryableAndFatalErrorWorkflow', []);
8
+ expect(result.runId).toMatch(/^wrun_.+/);
9
+ const run = await vi.waitFor(async () => {
10
+ const run = await server.getRun(result.runId);
11
+ expect(run).toMatchObject({
12
+ status: 'completed',
13
+ });
14
+ return run;
15
+ }, {
16
+ interval: 200,
17
+ timeout: 50_000,
18
+ });
19
+ const output = await hydrateWorkflowReturnValue(run.output, [], run.runId);
20
+ expect(output).toEqual({
21
+ gotFatalError: true,
22
+ retryableResult: {
23
+ attempt: 2,
24
+ duration: expect.any(Number),
25
+ stepStartedAt: expect.any(Date),
26
+ },
27
+ });
28
+ expect(output.retryableResult.duration).toBeGreaterThanOrEqual(2000);
29
+ });
30
+ }
31
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../../src/errors.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,IAAI,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,kCAAkC,EAClC,gCAAgC,EAChC,EAAE,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAsB;gBAC7C,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,EACD;YACE,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE;gBACf,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC5B,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;aAChC;SACF,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function hooks(world: string): void;
2
+ //# sourceMappingURL=hooks.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.mts","sourceRoot":"","sources":["../../src/hooks.mts"],"names":[],"mappings":"AAMA,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,QAkFlC"}
@@ -0,0 +1,74 @@
1
+ import { expect, test, vi } from 'vitest';
2
+ import { hydrateWorkflowReturnValue } from 'workflow/internal/serialization';
3
+ import { jsonlines } from './jsonlines.mjs';
4
+ import { createFetcher, startServer } from './util.mjs';
5
+ export function hooks(world) {
6
+ test('hooks', { timeout: 60_000 }, async () => {
7
+ const server = await startServer({ world }).then(createFetcher);
8
+ const token = Date.now().toString(36);
9
+ const customData = `my-custom-data-${token}`;
10
+ const result = await server.invoke('workflows/hooks.ts', 'collectWithHook', [token, customData]);
11
+ expect(result.runId).toMatch(/^wrun_.+/);
12
+ const readable = await server.getReadable(result.runId);
13
+ const events = jsonlines(readable);
14
+ const hookCreated = Promise.withResolvers();
15
+ const hookResumedEvents = [];
16
+ (async () => {
17
+ for await (const obj of events) {
18
+ if (obj?.event === 'hookCreated') {
19
+ hookCreated.resolve();
20
+ continue;
21
+ }
22
+ if (obj?.event === 'hookResumed') {
23
+ hookResumedEvents.push(obj.payload);
24
+ continue;
25
+ }
26
+ console.log('unhandled event', obj);
27
+ }
28
+ })().catch(() => {
29
+ // ignore errors for reading stream
30
+ });
31
+ await hookCreated.promise;
32
+ (async () => {
33
+ await server.resumeHook(token, {
34
+ data: 'first payload',
35
+ });
36
+ await server.resumeHook(token, {
37
+ data: 'second payload',
38
+ });
39
+ await server.resumeHook(token, {
40
+ data: 'third payload',
41
+ done: true,
42
+ });
43
+ })();
44
+ const run = await vi.waitFor(async () => {
45
+ const run = await server.getRun(result.runId);
46
+ expect(run).toMatchObject({
47
+ status: 'completed',
48
+ });
49
+ return run;
50
+ }, {
51
+ interval: 200,
52
+ timeout: 59_000,
53
+ });
54
+ const output = await hydrateWorkflowReturnValue(run.output, [], run.runId);
55
+ expect(output).toEqual({
56
+ collected: [
57
+ {
58
+ data: 'first payload',
59
+ metadata: { customData },
60
+ },
61
+ {
62
+ data: 'second payload',
63
+ metadata: { customData },
64
+ },
65
+ {
66
+ data: 'third payload',
67
+ metadata: { customData },
68
+ done: true,
69
+ },
70
+ ],
71
+ });
72
+ });
73
+ }
74
+ //# sourceMappingURL=hooks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.mjs","sourceRoot":"","sources":["../../src/hooks.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,kBAAkB,KAAK,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,oBAAoB,EACpB,iBAAiB,EACjB,CAAC,KAAK,EAAE,UAAU,CAAC,CACpB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QAClD,MAAM,iBAAiB,GAAG,EAAe,CAAC;QAE1C,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBAC/B,IAAI,GAAG,EAAE,KAAK,KAAK,aAAa,EAAE,CAAC;oBACjC,WAAW,CAAC,OAAO,EAAE,CAAC;oBACtB,SAAS;gBACX,CAAC;gBAED,IAAI,GAAG,EAAE,KAAK,KAAK,aAAa,EAAE,CAAC;oBACjC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACpC,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YACd,mCAAmC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,OAAO,CAAC;QAE1B,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,MAAM,CAAC,UAAU,CAAc,KAAK,EAAE;gBAC1C,IAAI,EAAE,eAAe;aACtB,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAc,KAAK,EAAE;gBAC1C,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAc,KAAK,EAAE;gBAC1C,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAsB;gBAC7C,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,EACD;YACE,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,EAAE,UAAU,EAAE;iBACzB;gBACD;oBACE,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,EAAE,UAAU,EAAE;iBACzB;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,EAAE,UAAU,EAAE;oBACxB,IAAI,EAAE,IAAI;iBACX;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -16,9 +16,9 @@ export function idempotency(world) {
16
16
  interval: 200,
17
17
  timeout: 59_000,
18
18
  });
19
- const output = await hydrateWorkflowReturnValue(run.output, [], globalThis);
19
+ const output = await hydrateWorkflowReturnValue(run.output, [], run.runId);
20
20
  expect(output).toEqual({
21
- numbers: Array.from({ length: 110 }, () => expect.any(Number)),
21
+ numbers: Array.from({ length: 20 }, () => expect.any(Number)),
22
22
  });
23
23
  });
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"idempotency.mjs","sourceRoot":"","sources":["../../src/idempotency.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAsB;gBAC7C,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,EACD;YACE,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QAE5E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"idempotency.mjs","sourceRoot":"","sources":["../../src/idempotency.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAsB;gBAC7C,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,EACD;YACE,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,QAG9C"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,QAM9C"}
@@ -1,7 +1,13 @@
1
1
  import { addition } from './addition.mjs';
2
+ import { errors } from './errors.mjs';
3
+ import { hooks } from './hooks.mjs';
2
4
  import { idempotency } from './idempotency.mjs';
5
+ import { nullByte } from './null-byte.mjs';
3
6
  export function createTestSuite(pkgName) {
4
7
  addition(pkgName);
5
8
  idempotency(pkgName);
9
+ hooks(pkgName);
10
+ nullByte(pkgName);
11
+ errors(pkgName);
6
12
  }
7
13
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClB,WAAW,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClB,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,KAAK,CAAC,OAAO,CAAC,CAAC;IACf,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function jsonlines(readable: ReadableStream<Uint8Array>): AsyncGenerator<any, void, unknown>;
2
+ //# sourceMappingURL=jsonlines.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonlines.d.mts","sourceRoot":"","sources":["../../src/jsonlines.mts"],"names":[],"mappings":"AAAA,wBAAuB,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,sCAiCpE"}
@@ -0,0 +1,32 @@
1
+ export async function* jsonlines(readable) {
2
+ const decoder = new TextDecoder();
3
+ const reader = readable.getReader();
4
+ let buffer = '';
5
+ const bufferedLines = () => {
6
+ const lines = buffer.split('\n');
7
+ buffer = lines.pop() || '';
8
+ return lines;
9
+ };
10
+ async function* bufferedObjects() {
11
+ const lines = bufferedLines();
12
+ for (const line of lines) {
13
+ try {
14
+ yield JSON.parse(line);
15
+ }
16
+ catch { }
17
+ }
18
+ }
19
+ while (true) {
20
+ const read = await reader.read();
21
+ if (read.value) {
22
+ const text = decoder.decode(read.value, { stream: true });
23
+ buffer += text;
24
+ yield* bufferedObjects();
25
+ }
26
+ if (read.done) {
27
+ break;
28
+ }
29
+ }
30
+ yield* bufferedObjects();
31
+ }
32
+ //# sourceMappingURL=jsonlines.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonlines.mjs","sourceRoot":"","sources":["../../src/jsonlines.mts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,CAAC,QAAoC;IACnE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,SAAS,CAAC,CAAC,eAAe;QAC7B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,IAAI,CAAC;YACf,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM;QACR,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function nullByte(world: string): void;
2
+ //# sourceMappingURL=null-byte.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-byte.d.mts","sourceRoot":"","sources":["../../src/null-byte.mts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,QAuBrC"}
@@ -0,0 +1,20 @@
1
+ import { expect, test, vi } from 'vitest';
2
+ import { createFetcher, startServer } from './util.mjs';
3
+ export function nullByte(world) {
4
+ test('supports null bytes in step results', { timeout: 12_000 }, async () => {
5
+ const server = await startServer({ world }).then(createFetcher);
6
+ const result = await server.invoke('workflows/null-byte.ts', 'nullByteWorkflow', []);
7
+ expect(result.runId).toMatch(/^wrun_.+/);
8
+ await vi.waitFor(async () => {
9
+ const run = await server.getRun(result.runId);
10
+ expect(run).toMatchObject({
11
+ status: 'completed',
12
+ output: ['null byte \0'],
13
+ });
14
+ }, {
15
+ interval: 200,
16
+ timeout: 10_000,
17
+ });
18
+ });
19
+ }
20
+ //# sourceMappingURL=null-byte.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-byte.mjs","sourceRoot":"","sources":["../../src/null-byte.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,CAAC,qCAAqC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,wBAAwB,EACxB,kBAAkB,EAClB,EAAE,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,OAAO,CACd,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAsB;gBAC7C,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,CAAC,cAAc,CAAC;aACzB,CAAC,CAAC;QACL,CAAC,EACD;YACE,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,MAAM;SAChB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import fs from 'node:fs';
2
2
  import { serve } from '@hono/node-server';
3
3
  import { Hono } from 'hono';
4
- import { getRun, start } from 'workflow/api';
4
+ import { getHookByToken, getRun, resumeHook, start } from 'workflow/api';
5
5
  import { getWorld } from 'workflow/runtime';
6
6
  import * as z from 'zod';
7
7
  import flow from '../.well-known/workflow/v1/flow.js';
8
- import manifest from '../.well-known/workflow/v1/manifest.debug.json' with {
8
+ import manifest from '../.well-known/workflow/v1/manifest.json' with {
9
9
  type: 'json'
10
10
  };
11
11
  import step from '../.well-known/workflow/v1/step.js';
@@ -15,14 +15,14 @@ if (!process.env.WORKFLOW_TARGET_WORLD) {
15
15
  }
16
16
  const Invoke = z
17
17
  .object({
18
- file: z.literal(Object.keys(manifest.workflows)),
18
+ file: z.enum(Object.keys(manifest.workflows)),
19
19
  workflow: z.string(),
20
20
  args: z.unknown().array().default([]),
21
21
  })
22
22
  .transform((obj) => {
23
23
  const file = obj.file;
24
24
  const workflow = z
25
- .literal(Object.keys(manifest.workflows[file]))
25
+ .enum(Object.keys(manifest.workflows[file]))
26
26
  .parse(obj.workflow);
27
27
  return {
28
28
  args: obj.args,
@@ -41,6 +41,14 @@ const app = new Hono()
41
41
  const json = await ctx.req.json().then(Invoke.parse);
42
42
  const handler = await start(json.workflow, json.args);
43
43
  return ctx.json({ runId: handler.runId });
44
+ })
45
+ .post('/hooks/:token', async (ctx) => {
46
+ const hook = await getHookByToken(ctx.req.param('token'));
47
+ const { runId } = await resumeHook(hook.token, {
48
+ ...(await ctx.req.json()),
49
+ metadata: hook.metadata,
50
+ });
51
+ return ctx.json({ runId, hookId: hook.hookId });
44
52
  })
45
53
  .get('/runs/:runId', async (ctx) => {
46
54
  return ctx.json(await getWorld().runs.get(ctx.req.param('runId')));
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","sourceRoot":"","sources":["../../src/server.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.mjs","sourceRoot":"","sources":["../../src/server.mts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import type { TypedHook } from 'workflow';
1
2
  import * as z from 'zod';
2
- import type manifest from '../.well-known/workflow/v1/manifest.debug.json';
3
+ import type manifest from '../.well-known/workflow/v1/manifest.json';
3
4
  export declare const Control: z.ZodObject<{
4
5
  state: z.ZodLiteral<"listening">;
5
6
  info: z.ZodObject<{
@@ -9,10 +10,6 @@ export declare const Control: z.ZodObject<{
9
10
  type Control = z.infer<typeof Control>;
10
11
  type Files = keyof typeof manifest.workflows;
11
12
  type Workflows<F extends Files> = keyof (typeof manifest.workflows)[F];
12
- export declare const Worlds: {
13
- embedded: string;
14
- postgres: string;
15
- };
16
13
  export declare function startServer(opts: {
17
14
  world: string;
18
15
  }): Promise<{
@@ -28,18 +25,66 @@ export declare function createFetcher(control: Control): {
28
25
  getRun(id: string): Promise<{
29
26
  runId: string;
30
27
  deploymentId: string;
31
- status: "pending" | "running" | "completed" | "failed" | "paused" | "cancelled";
32
28
  workflowName: string;
33
29
  input: any[];
34
30
  createdAt: Date;
35
31
  updatedAt: Date;
32
+ status: "pending" | "running" | "paused";
33
+ output: undefined;
34
+ error: undefined;
35
+ completedAt: undefined;
36
+ executionContext?: Record<string, any> | undefined;
37
+ expiredAt?: Date | undefined;
38
+ startedAt?: Date | undefined;
39
+ } | {
40
+ runId: string;
41
+ deploymentId: string;
42
+ workflowName: string;
43
+ input: any[];
44
+ createdAt: Date;
45
+ updatedAt: Date;
46
+ status: "cancelled";
47
+ output: undefined;
48
+ error: undefined;
49
+ completedAt: Date;
50
+ executionContext?: Record<string, any> | undefined;
51
+ expiredAt?: Date | undefined;
52
+ startedAt?: Date | undefined;
53
+ } | {
54
+ runId: string;
55
+ deploymentId: string;
56
+ workflowName: string;
57
+ input: any[];
58
+ createdAt: Date;
59
+ updatedAt: Date;
60
+ status: "completed";
61
+ output: any;
62
+ error: undefined;
63
+ completedAt: Date;
64
+ executionContext?: Record<string, any> | undefined;
65
+ expiredAt?: Date | undefined;
66
+ startedAt?: Date | undefined;
67
+ } | {
68
+ runId: string;
69
+ deploymentId: string;
70
+ workflowName: string;
71
+ input: any[];
72
+ createdAt: Date;
73
+ updatedAt: Date;
74
+ status: "failed";
75
+ output: undefined;
76
+ error: {
77
+ message: string;
78
+ stack?: string | undefined;
79
+ code?: string | undefined;
80
+ };
81
+ completedAt: Date;
36
82
  executionContext?: Record<string, any> | undefined;
37
- output?: any;
38
- error?: string | undefined;
39
- errorCode?: string | undefined;
83
+ expiredAt?: Date | undefined;
40
84
  startedAt?: Date | undefined;
41
- completedAt?: Date | undefined;
42
85
  }>;
86
+ getReadable(id: string): Promise<ReadableStream<Uint8Array>>;
87
+ resumeHook<T extends TypedHook<any, any>>(token: string, payload: Omit<NoInfer<TypedHook.Input<T>>, "metadata">): Promise<void>;
43
88
  };
44
89
  export {};
45
90
  //# sourceMappingURL=util.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.mts","sourceRoot":"","sources":["../../src/util.mts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,gDAAgD,CAAC;AAE3E,eAAO,MAAM,OAAO;;;;;iBAKlB,CAAC;AACH,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAEvC,KAAK,KAAK,GAAG,MAAM,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC7C,KAAK,SAAS,CAAC,CAAC,SAAS,KAAK,IAAI,MAAM,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GA4CxD;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO;WAE7B,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,QAC5C,CAAC,YACG,CAAC,QACL,OAAO,EAAE;;;eAYA,MAAM;;;;;;;;;;;;;;;EAQ1B"}
1
+ {"version":3,"file":"util.d.mts","sourceRoot":"","sources":["../../src/util.mts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,0CAA0C,CAAC;AAErE,eAAO,MAAM,OAAO;;;;;iBAKlB,CAAC;AACH,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAEvC,KAAK,KAAK,GAAG,MAAM,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC7C,KAAK,SAAS,CAAC,CAAC,SAAS,KAAK,IAAI,MAAM,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GA4CxD;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO;WAE7B,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,QAC5C,CAAC,YACG,CAAC,QACL,OAAO,EAAE;;;eAeA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAOD,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;eAcjD,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SACrC,MAAM,WACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;EAoB3D"}
package/dist/src/util.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  import cp from 'node:child_process';
2
2
  import { existsSync } from 'node:fs';
3
+ import { fileURLToPath } from 'node:url';
3
4
  import { WorkflowRunSchema } from '@workflow/world';
4
5
  import chalk from 'chalk';
5
6
  import jsonlines from 'jsonlines';
@@ -11,16 +12,12 @@ export const Control = z.object({
11
12
  port: z.number(),
12
13
  }),
13
14
  });
14
- export const Worlds = {
15
- embedded: 'embedded',
16
- postgres: '@workflow/world-postgres',
17
- };
18
15
  export async function startServer(opts) {
19
- let serverPath = new URL('./server.mts', import.meta.url).pathname;
16
+ let serverPath = new URL('./server.mts', import.meta.url);
20
17
  if (!existsSync(serverPath)) {
21
- serverPath = new URL('./server.mjs', import.meta.url).pathname;
18
+ serverPath = new URL('./server.mjs', import.meta.url);
22
19
  }
23
- const proc = cp.spawn('node', [serverPath], {
20
+ const proc = cp.spawn('node', [fileURLToPath(serverPath)], {
24
21
  stdio: ['ignore', 'pipe', 'pipe', 'pipe'],
25
22
  env: {
26
23
  ...process.env,
@@ -65,6 +62,9 @@ export function createFetcher(control) {
65
62
  body: JSON.stringify({ file, workflow, args }),
66
63
  });
67
64
  const data = await x.json().then(Invoke.parse);
65
+ onTestFailed(() => {
66
+ console.error('Workflow run:', data.runId);
67
+ });
68
68
  return data;
69
69
  },
70
70
  async getRun(id) {
@@ -72,6 +72,29 @@ export function createFetcher(control) {
72
72
  const data = await x.json();
73
73
  return WorkflowRunSchema.parseAsync(data);
74
74
  },
75
+ async getReadable(id) {
76
+ const x = await fetch(`http://localhost:${control.info.port}/runs/${encodeURIComponent(id)}/readable`);
77
+ if (!x.ok) {
78
+ throw new Error(`Failed to get readable stream: ${x.status} ${x.statusText}`);
79
+ }
80
+ if (!x.body) {
81
+ throw new Error('No body in response');
82
+ }
83
+ return x.body;
84
+ },
85
+ async resumeHook(token, payload) {
86
+ const res = await fetch(`http://localhost:${control.info.port}/hooks/${token}`, {
87
+ method: 'POST',
88
+ headers: {
89
+ 'content-type': 'application/json',
90
+ },
91
+ body: JSON.stringify(payload),
92
+ });
93
+ res.arrayBuffer().catch(() => { }); // Drain the body to avoid resource leaks
94
+ if (!res.ok) {
95
+ throw new Error(`Failed to resume hook: ${res.status} ${res.statusText}`);
96
+ }
97
+ },
75
98
  };
76
99
  }
77
100
  //# sourceMappingURL=util.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.mjs","sourceRoot":"","sources":["../../src/util.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.mjs","sourceRoot":"","sources":["../../src/util.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC;CACH,CAAC,CAAC;AAMH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAuB;IACvD,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE;QACzD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QACzC,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,qBAAqB,EAAE,IAAI,CAAC,KAAK;YACjC,UAAU,EAAE,GAAG;SAChB;KACF,CAAC,CAAC;IACH,cAAc,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,EAAgD,CAAC;IAC/D,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;YACtC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IAErC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;QACL,KAAK,CAAC,MAAM,CACV,IAAO,EACP,QAAW,EACX,IAAe;YAEf,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE;gBACpE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,YAAY,CAAC,GAAG,EAAE;gBAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,EAAU;YACrB,MAAM,CAAC,GAAG,MAAM,KAAK,CACnB,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,kBAAkB,CAAC,EAAE,CAAC,EAAE,CACvE,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,EAAU;YAC1B,MAAM,CAAC,GAAG,MAAM,KAAK,CACnB,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,kBAAkB,CAAC,EAAE,CAAC,WAAW,CAChF,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,kCAAkC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAC7D,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,UAAU,CACd,KAAa,EACb,OAAsD;YAEtD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,KAAK,EAAE,EACtD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CACF,CAAC;YACF,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,yCAAyC;YAC5E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,0BAA0B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ export declare const Hook: import("workflow", { with: { "resolution-mode": "import" } }).TypedHook<{
2
+ data: string;
3
+ metadata: unknown;
4
+ done?: boolean | undefined;
5
+ }, {
6
+ data: string;
7
+ metadata: unknown;
8
+ done?: boolean | undefined;
9
+ }>;
10
+ export declare function collectWithHook(token: string, customData: string): Promise<{
11
+ collected: {
12
+ data: string;
13
+ metadata: unknown;
14
+ done?: boolean | undefined;
15
+ }[];
16
+ }>;
17
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../workflows/hooks.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI;;;;;;;;EAMf,CAAC;AAEH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;;;;;;GActE"}