@workflow/world-testing 4.1.13 → 4.1.14

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.
@@ -1 +1 @@
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAmBD,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"}
1
+ {"version":3,"file":"util.d.mts","sourceRoot":"","sources":["../../src/util.mts"],"names":[],"mappings":"AAYA,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;;;;;GA+ExD;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAmBD,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,10 @@
1
1
  import cp from 'node:child_process';
2
+ import { randomUUID } from 'node:crypto';
2
3
  import { existsSync } from 'node:fs';
4
+ import { rm } from 'node:fs/promises';
5
+ import { tmpdir } from 'node:os';
6
+ import { join } from 'node:path';
7
+ import { setTimeout } from 'node:timers/promises';
3
8
  import { fileURLToPath } from 'node:url';
4
9
  import { WorkflowRunSchema } from '@workflow/world';
5
10
  import chalk from 'chalk';
@@ -17,16 +22,47 @@ export async function startServer(opts) {
17
22
  if (!existsSync(serverPath)) {
18
23
  serverPath = new URL('./server.mjs', import.meta.url);
19
24
  }
25
+ // Give each spawned server its own data directory. The Local World's default
26
+ // (untagged) `.workflow-data` dir is otherwise shared by every concurrently
27
+ // running test file's server, and its startup recovery sweep re-enqueues
28
+ // every untagged run it finds — including runs still mid-flight in another
29
+ // test's server — dispatching them against the same on-disk event log and
30
+ // racing the run's actual owner into spurious `ReplayDivergenceError`s.
31
+ const dataDir = join(tmpdir(), `workflow-world-testing-${process.pid}-${randomUUID()}`);
20
32
  const proc = cp.spawn('node', [fileURLToPath(serverPath)], {
21
33
  stdio: ['ignore', 'pipe', 'pipe', 'pipe'],
22
34
  env: {
23
35
  ...process.env,
24
36
  WORKFLOW_TARGET_WORLD: opts.world,
25
37
  CONTROL_FD: '3',
38
+ WORKFLOW_LOCAL_DATA_DIR: dataDir,
26
39
  },
27
40
  });
28
- onTestFinished(() => {
29
- proc.kill();
41
+ onTestFinished(async () => {
42
+ // Wait for the child to actually exit before removing its data directory:
43
+ // `kill()` only requests termination, and on Windows `rm()` fails with
44
+ // EPERM/EBUSY while the server still holds file handles in `dataDir`.
45
+ if (proc.exitCode === null && proc.signalCode === null) {
46
+ const exited = new Promise((resolve) => {
47
+ proc.once('exit', () => resolve());
48
+ });
49
+ proc.kill();
50
+ // Bounded, so a child that refuses to die can't hang test teardown.
51
+ await Promise.race([
52
+ exited,
53
+ setTimeout(5_000, undefined, { ref: false }),
54
+ ]);
55
+ }
56
+ // Windows can hold the handles for a moment past exit, hence the retries.
57
+ // A leaked temp dir is not worth failing an otherwise passing test over.
58
+ await rm(dataDir, {
59
+ recursive: true,
60
+ force: true,
61
+ maxRetries: 10,
62
+ retryDelay: 100,
63
+ }).catch((err) => {
64
+ console.warn(`Failed to remove test data dir ${dataDir}:`, err);
65
+ });
30
66
  });
31
67
  const stdio = [];
32
68
  proc.stdout?.on('data', (chunk) => {
@@ -107,4 +143,4 @@ export function createFetcher(control) {
107
143
  },
108
144
  };
109
145
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sS0FBNkIsTUFBTSxPQUFPLENBQUM7QUFDbEQsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUd6QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDN0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDYixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtLQUNqQixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBTUgsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsSUFBdUI7SUFDdkQsSUFBSSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzVCLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFD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QyxXQUFXLENBQ2hGLENBQUM7WUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0NBQWtDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUM3RCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELEtBQUssQ0FBQyxVQUFVLENBQ2QsS0FBYSxFQUNiLE9BQXNEO1lBRXRELE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUNyQixvQkFBb0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQ3REO2dCQUNFLE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2lCQUNuQztnQkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7YUFDOUIsQ0FDRixDQUFDO1lBQ0YsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztZQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsMEJBQTBCLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUN6RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcCBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IFdvcmtmbG93UnVuU2NoZW1hIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsaywgeyB0eXBlIENoYWxrSW5zdGFuY2UgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQganNvbmxpbmVzIGZyb20gJ2pzb25saW5lcyc7XG5pbXBvcnQgeyBhc3NlcnQsIG9uVGVzdEZhaWxlZCwgb25UZXN0RmluaXNoZWQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHR5cGUgeyBUeXBlZEhvb2sgfSBmcm9tICd3b3JrZmxvdyc7XG5pbXBvcnQgKiBhcyB6IGZyb20gJ3pvZCc7XG5pbXBvcnQgdHlwZSBtYW5pZmVzdCBmcm9tICcuLi8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJztcblxuZXhwb3J0IGNvbnN0IENvbnRyb2wgPSB6Lm9iamVjdCh7XG4gIHN0YXRlOiB6LmxpdGVyYWwoJ2xpc3RlbmluZycpLFxuICBpbmZvOiB6Lm9iamVjdCh7XG4gICAgcG9ydDogei5udW1iZXIoKSxcbiAgfSksXG59KTtcbnR5cGUgQ29udHJvbCA9IHouaW5mZXI8dHlwZW9mIENvbnRyb2w+O1xuXG50eXBlIEZpbGVzID0ga2V5b2YgdHlwZW9mIG1hbmlmZXN0LndvcmtmbG93cztcbnR5cGUgV29ya2Zsb3dzPEYgZXh0ZW5kcyBGaWxlcz4gPSBrZXlvZiAodHlwZW9mIG1hbmlmZXN0LndvcmtmbG93cylbRl07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlcihvcHRzOiB7IHdvcmxkOiBzdHJpbmcgfSkge1xuICBsZXQgc2VydmVyUGF0aCA9IG5ldyBVUkwoJy4vc2VydmVyLm10cycsIGltcG9ydC5tZXRhLnVybCk7XG5cbiAgaWYgKCFleGlzdHNTeW5jKHNlcnZlclBhdGgpKSB7XG4gICAgc2VydmVyUGF0aCA9IG5ldyBVUkwoJy4vc2VydmVyLm1qcycsIGltcG9ydC5tZXRhLnVybCk7XG4gIH1cblxuICBjb25zdCBwcm9jID0gY3Auc3Bhd24oJ25vZGUnLCBbZmlsZVVSTFRvUGF0aChzZXJ2ZXJQYXRoKV0sIHtcbiAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICBlbnY6IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgV09SS0ZMT1dfVEFSR0VUX1dPUkxEOiBvcHRzLndvcmxkLFxuICAgICAgQ09OVFJPTF9GRDogJzMnLFxuICAgIH0sXG4gIH0pO1xuICBvblRlc3RGaW5pc2hlZCgoKSA9PiB7XG4gICAgcHJvYy5raWxsKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHN0ZGlvID0gW10gYXMgeyBzdHJlYW06IENoYWxrSW5zdGFuY2U7IGNodW5rOiBzdHJpbmcgfVtdO1xuICBwcm9jLnN0ZG91dD8ub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICBzdGRpby5wdXNoKHsgc3RyZWFtOiBjaGFsay53aGl0ZSwgY2h1bms6IGNodW5rLnRvU3RyaW5nKCkgfSk7XG4gIH0pO1xuICBwcm9jLnN0ZGVycj8ub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICBzdGRpby5wdXNoKHsgc3RyZWFtOiBjaGFsay5yZWQsIGNodW5rOiBjaHVuay50b1N0cmluZygpIH0pO1xuICB9KTtcblxuICBvblRlc3RGYWlsZWQoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCc9PT0gU0VSVkVSIFNURElPID09PScpO1xuICAgIGxldCBidWZmZXIgPSAnJztcbiAgICBmb3IgKGNvbnN0IHsgc3RyZWFtLCBjaHVuayB9IG9mIHN0ZGlvKSB7XG4gICAgICBidWZmZXIgKz0gc3RyZWFtLmludmVyc2UoY2h1bmspO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhidWZmZXIpO1xuICB9KTtcblxuICBjb25zdCBmZDMgPSBwcm9jLnN0ZGlvWzNdO1xuICBhc3NlcnQoZmQzLCAnZmQzIHNob3VsZCBiZSBkZWZpbmVkJyk7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBmZDMucGlwZShqc29ubGluZXMucGFyc2UoKSkpIHtcbiAgICByZXR1cm4gQ29udHJvbC5wYXJzZShjaHVuayk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1NlcnZlciBkaWQgbm90IHN0YXJ0IGNvcnJlY3RseScpO1xufVxuXG5jb25zdCBJbnZva2UgPSB6Lm9iamVjdCh7IHJ1bklkOiB6LmNvZXJjZS5zdHJpbmcoKSB9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZldGNoZXIoY29udHJvbDogQ29udHJvbCkge1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGludm9rZTxGIGV4dGVuZHMgRmlsZXMsIFcgZXh0ZW5kcyBXb3JrZmxvd3M8Rj4+KFxuICAgICAgZmlsZTogRixcbiAgICAgIHdvcmtmbG93OiBXLFxuICAgICAgYXJnczogdW5rbm93bltdXG4gICAgKSB7XG4gICAgICBjb25zdCB4ID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vaW52b2tlYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZmlsZSwgd29ya2Zsb3csIGFyZ3MgfSksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB4Lmpzb24oKS50aGVuKEludm9rZS5wYXJzZSk7XG4gICAgICBvblRlc3RGYWlsZWQoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdXb3JrZmxvdyBydW46JywgZGF0YS5ydW5JZCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG4gICAgYXN5bmMgZ2V0UnVuKGlkOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHggPSBhd2FpdCBmZXRjaChcbiAgICAgICAgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vcnVucy8ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCB4LnRleHQoKTtcbiAgICAgIC8vIEN1c3RvbSBKU09OIHJldml2ZXIgdG8gZGVjb2RlIGJhc2U2NCBiYWNrIHRvIFVpbnQ4QXJyYXlcbiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHRleHQsIChfa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgKHZhbHVlIGFzIGFueSkuX190eXBlID09PSAnVWludDhBcnJheScgJiZcbiAgICAgICAgICB0eXBlb2YgKHZhbHVlIGFzIGFueSkuZGF0YSA9PT0gJ3N0cmluZydcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKCh2YWx1ZSBhcyBhbnkpLmRhdGEsICdiYXNlNjQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gV29ya2Zsb3dSdW5TY2hlbWEucGFyc2VBc3luYyhkYXRhKTtcbiAgICB9LFxuICAgIGFzeW5jIGdldFJlYWRhYmxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+PiB7XG4gICAgICBjb25zdCB4ID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGBodHRwOi8vbG9jYWxob3N0OiR7Y29udHJvbC5pbmZvLnBvcnR9L3J1bnMvJHtlbmNvZGVVUklDb21wb25lbnQoaWQpfS9yZWFkYWJsZWBcbiAgICAgICk7XG4gICAgICBpZiAoIXgub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gZ2V0IHJlYWRhYmxlIHN0cmVhbTogJHt4LnN0YXR1c30gJHt4LnN0YXR1c1RleHR9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKCF4LmJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBib2R5IGluIHJlc3BvbnNlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4geC5ib2R5O1xuICAgIH0sXG4gICAgYXN5bmMgcmVzdW1lSG9vazxUIGV4dGVuZHMgVHlwZWRIb29rPGFueSwgYW55Pj4oXG4gICAgICB0b2tlbjogc3RyaW5nLFxuICAgICAgcGF5bG9hZDogT21pdDxOb0luZmVyPFR5cGVkSG9vay5JbnB1dDxUPj4sICdtZXRhZGF0YSc+XG4gICAgKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChcbiAgICAgICAgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vaG9va3MvJHt0b2tlbn1gLFxuICAgICAgICB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmVzLmFycmF5QnVmZmVyKCkuY2F0Y2goKCkgPT4ge30pOyAvLyBEcmFpbiB0aGUgYm9keSB0byBhdm9pZCByZXNvdXJjZSBsZWFrc1xuICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gcmVzdW1lIGhvb2s6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxLQUE2QixNQUFNLE9BQU8sQ0FBQztBQUNsRCxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlELE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBR3pCLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlCLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM3QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNiLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0tBQ2pCLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFNSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUF1QjtJQUN2RCxJQUFJLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FB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QyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUN6RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcCBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHJtIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgc2V0VGltZW91dCB9IGZyb20gJ25vZGU6dGltZXJzL3Byb21pc2VzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgeyBXb3JrZmxvd1J1blNjaGVtYSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgY2hhbGssIHsgdHlwZSBDaGFsa0luc3RhbmNlIH0gZnJvbSAnY2hhbGsnO1xuaW1wb3J0IGpzb25saW5lcyBmcm9tICdqc29ubGluZXMnO1xuaW1wb3J0IHsgYXNzZXJ0LCBvblRlc3RGYWlsZWQsIG9uVGVzdEZpbmlzaGVkIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB0eXBlIHsgVHlwZWRIb29rIH0gZnJvbSAnd29ya2Zsb3cnO1xuaW1wb3J0ICogYXMgeiBmcm9tICd6b2QnO1xuaW1wb3J0IHR5cGUgbWFuaWZlc3QgZnJvbSAnLi4vLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbic7XG5cbmV4cG9ydCBjb25zdCBDb250cm9sID0gei5vYmplY3Qoe1xuICBzdGF0ZTogei5saXRlcmFsKCdsaXN0ZW5pbmcnKSxcbiAgaW5mbzogei5vYmplY3Qoe1xuICAgIHBvcnQ6IHoubnVtYmVyKCksXG4gIH0pLFxufSk7XG50eXBlIENvbnRyb2wgPSB6LmluZmVyPHR5cGVvZiBDb250cm9sPjtcblxudHlwZSBGaWxlcyA9IGtleW9mIHR5cGVvZiBtYW5pZmVzdC53b3JrZmxvd3M7XG50eXBlIFdvcmtmbG93czxGIGV4dGVuZHMgRmlsZXM+ID0ga2V5b2YgKHR5cGVvZiBtYW5pZmVzdC53b3JrZmxvd3MpW0ZdO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIob3B0czogeyB3b3JsZDogc3RyaW5nIH0pIHtcbiAgbGV0IHNlcnZlclBhdGggPSBuZXcgVVJMKCcuL3NlcnZlci5tdHMnLCBpbXBvcnQubWV0YS51cmwpO1xuXG4gIGlmICghZXhpc3RzU3luYyhzZXJ2ZXJQYXRoKSkge1xuICAgIHNlcnZlclBhdGggPSBuZXcgVVJMKCcuL3NlcnZlci5tanMnLCBpbXBvcnQubWV0YS51cmwpO1xuICB9XG5cbiAgLy8gR2l2ZSBlYWNoIHNwYXduZWQgc2VydmVyIGl0cyBvd24gZGF0YSBkaXJlY3RvcnkuIFRoZSBMb2NhbCBXb3JsZCdzIGRlZmF1bHRcbiAgLy8gKHVudGFnZ2VkKSBgLndvcmtmbG93LWRhdGFgIGRpciBpcyBvdGhlcndpc2Ugc2hhcmVkIGJ5IGV2ZXJ5IGNvbmN1cnJlbnRseVxuICAvLyBydW5uaW5nIHRlc3QgZmlsZSdzIHNlcnZlciwgYW5kIGl0cyBzdGFydHVwIHJlY292ZXJ5IHN3ZWVwIHJlLWVucXVldWVzXG4gIC8vIGV2ZXJ5IHVudGFnZ2VkIHJ1biBpdCBmaW5kcyDigJQgaW5jbHVkaW5nIHJ1bnMgc3RpbGwgbWlkLWZsaWdodCBpbiBhbm90aGVyXG4gIC8vIHRlc3QncyBzZXJ2ZXIg4oCUIGRpc3BhdGNoaW5nIHRoZW0gYWdhaW5zdCB0aGUgc2FtZSBvbi1kaXNrIGV2ZW50IGxvZyBhbmRcbiAgLy8gcmFjaW5nIHRoZSBydW4ncyBhY3R1YWwgb3duZXIgaW50byBzcHVyaW91cyBgUmVwbGF5RGl2ZXJnZW5jZUVycm9yYHMuXG4gIGNvbnN0IGRhdGFEaXIgPSBqb2luKFxuICAgIHRtcGRpcigpLFxuICAgIGB3b3JrZmxvdy13b3JsZC10ZXN0aW5nLSR7cHJvY2Vzcy5waWR9LSR7cmFuZG9tVVVJRCgpfWBcbiAgKTtcblxuICBjb25zdCBwcm9jID0gY3Auc3Bhd24oJ25vZGUnLCBbZmlsZVVSTFRvUGF0aChzZXJ2ZXJQYXRoKV0sIHtcbiAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICBlbnY6IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgV09SS0ZMT1dfVEFSR0VUX1dPUkxEOiBvcHRzLndvcmxkLFxuICAgICAgQ09OVFJPTF9GRDogJzMnLFxuICAgICAgV09SS0ZMT1dfTE9DQUxfREFUQV9ESVI6IGRhdGFEaXIsXG4gICAgfSxcbiAgfSk7XG4gIG9uVGVzdEZpbmlzaGVkKGFzeW5jICgpID0+IHtcbiAgICAvLyBXYWl0IGZvciB0aGUgY2hpbGQgdG8gYWN0dWFsbHkgZXhpdCBiZWZvcmUgcmVtb3ZpbmcgaXRzIGRhdGEgZGlyZWN0b3J5OlxuICAgIC8vIGBraWxsKClgIG9ubHkgcmVxdWVzdHMgdGVybWluYXRpb24sIGFuZCBvbiBXaW5kb3dzIGBybSgpYCBmYWlscyB3aXRoXG4gICAgLy8gRVBFUk0vRUJVU1kgd2hpbGUgdGhlIHNlcnZlciBzdGlsbCBob2xkcyBmaWxlIGhhbmRsZXMgaW4gYGRhdGFEaXJgLlxuICAgIGlmIChwcm9jLmV4aXRDb2RlID09PSBudWxsICYmIHByb2Muc2lnbmFsQ29kZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZXhpdGVkID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgcHJvYy5vbmNlKCdleGl0JywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIH0pO1xuICAgICAgcHJvYy5raWxsKCk7XG4gICAgICAvLyBCb3VuZGVkLCBzbyBhIGNoaWxkIHRoYXQgcmVmdXNlcyB0byBkaWUgY2FuJ3QgaGFuZyB0ZXN0IHRlYXJkb3duLlxuICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZXhpdGVkLFxuICAgICAgICBzZXRUaW1lb3V0KDVfMDAwLCB1bmRlZmluZWQsIHsgcmVmOiBmYWxzZSB9KSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICAvLyBXaW5kb3dzIGNhbiBob2xkIHRoZSBoYW5kbGVzIGZvciBhIG1vbWVudCBwYXN0IGV4aXQsIGhlbmNlIHRoZSByZXRyaWVzLlxuICAgIC8vIEEgbGVha2VkIHRlbXAgZGlyIGlzIG5vdCB3b3J0aCBmYWlsaW5nIGFuIG90aGVyd2lzZSBwYXNzaW5nIHRlc3Qgb3Zlci5cbiAgICBhd2FpdCBybShkYXRhRGlyLCB7XG4gICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgIG1heFJldHJpZXM6IDEwLFxuICAgICAgcmV0cnlEZWxheTogMTAwLFxuICAgIH0pLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIHJlbW92ZSB0ZXN0IGRhdGEgZGlyICR7ZGF0YURpcn06YCwgZXJyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3Qgc3RkaW8gPSBbXSBhcyB7IHN0cmVhbTogQ2hhbGtJbnN0YW5jZTsgY2h1bms6IHN0cmluZyB9W107XG4gIHByb2Muc3Rkb3V0Py5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgIHN0ZGlvLnB1c2goeyBzdHJlYW06IGNoYWxrLndoaXRlLCBjaHVuazogY2h1bmsudG9TdHJpbmcoKSB9KTtcbiAgfSk7XG4gIHByb2Muc3RkZXJyPy5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgIHN0ZGlvLnB1c2goeyBzdHJlYW06IGNoYWxrLnJlZCwgY2h1bms6IGNodW5rLnRvU3RyaW5nKCkgfSk7XG4gIH0pO1xuXG4gIG9uVGVzdEZhaWxlZCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJz09PSBTRVJWRVIgU1RESU8gPT09Jyk7XG4gICAgbGV0IGJ1ZmZlciA9ICcnO1xuICAgIGZvciAoY29uc3QgeyBzdHJlYW0sIGNodW5rIH0gb2Ygc3RkaW8pIHtcbiAgICAgIGJ1ZmZlciArPSBzdHJlYW0uaW52ZXJzZShjaHVuayk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGJ1ZmZlcik7XG4gIH0pO1xuXG4gIGNvbnN0IGZkMyA9IHByb2Muc3RkaW9bM107XG4gIGFzc2VydChmZDMsICdmZDMgc2hvdWxkIGJlIGRlZmluZWQnKTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGZkMy5waXBlKGpzb25saW5lcy5wYXJzZSgpKSkge1xuICAgIHJldHVybiBDb250cm9sLnBhcnNlKGNodW5rKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignU2VydmVyIGRpZCBub3Qgc3RhcnQgY29ycmVjdGx5Jyk7XG59XG5cbmNvbnN0IEludm9rZSA9IHoub2JqZWN0KHsgcnVuSWQ6IHouY29lcmNlLnN0cmluZygpIH0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmV0Y2hlcihjb250cm9sOiBDb250cm9sKSB7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgaW52b2tlPEYgZXh0ZW5kcyBGaWxlcywgVyBleHRlbmRzIFdvcmtmbG93czxGPj4oXG4gICAgICBmaWxlOiBGLFxuICAgICAgd29ya2Zsb3c6IFcsXG4gICAgICBhcmdzOiB1bmtub3duW11cbiAgICApIHtcbiAgICAgIGNvbnN0IHggPSBhd2FpdCBmZXRjaChgaHR0cDovL2xvY2FsaG9zdDoke2NvbnRyb2wuaW5mby5wb3J0fS9pbnZva2VgLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBmaWxlLCB3b3JrZmxvdywgYXJncyB9KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHguanNvbigpLnRoZW4oSW52b2tlLnBhcnNlKTtcbiAgICAgIG9uVGVzdEZhaWxlZCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dvcmtmbG93IHJ1bjonLCBkYXRhLnJ1bklkKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSxcbiAgICBhc3luYyBnZXRSdW4oaWQ6IHN0cmluZykge1xuICAgICAgY29uc3QgeCA9IGF3YWl0IGZldGNoKFxuICAgICAgICBgaHR0cDovL2xvY2FsaG9zdDoke2NvbnRyb2wuaW5mby5wb3J0fS9ydW5zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gXG4gICAgICApO1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHgudGV4dCgpO1xuICAgICAgLy8gQ3VzdG9tIEpTT04gcmV2aXZlciB0byBkZWNvZGUgYmFzZTY0IGJhY2sgdG8gVWludDhBcnJheVxuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodGV4dCwgKF9rZXksIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAodmFsdWUgYXMgYW55KS5fX3R5cGUgPT09ICdVaW50OEFycmF5JyAmJlxuICAgICAgICAgIHR5cGVvZiAodmFsdWUgYXMgYW55KS5kYXRhID09PSAnc3RyaW5nJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oKHZhbHVlIGFzIGFueSkuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBXb3JrZmxvd1J1blNjaGVtYS5wYXJzZUFzeW5jKGRhdGEpO1xuICAgIH0sXG4gICAgYXN5bmMgZ2V0UmVhZGFibGUoaWQ6IHN0cmluZyk6IFByb21pc2U8UmVhZGFibGVTdHJlYW08VWludDhBcnJheT4+IHtcbiAgICAgIGNvbnN0IHggPSBhd2FpdCBmZXRjaChcbiAgICAgICAgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb250cm9sLmluZm8ucG9ydH0vcnVucy8ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9L3JlYWRhYmxlYFxuICAgICAgKTtcbiAgICAgIGlmICgheC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBnZXQgcmVhZGFibGUgc3RyZWFtOiAke3guc3RhdHVzfSAke3guc3RhdHVzVGV4dH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIXguYm9keSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJvZHkgaW4gcmVzcG9uc2UnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4LmJvZHk7XG4gICAgfSxcbiAgICBhc3luYyByZXN1bWVIb29rPFQgZXh0ZW5kcyBUeXBlZEhvb2s8YW55LCBhbnk+PihcbiAgICAgIHRva2VuOiBzdHJpbmcsXG4gICAgICBwYXlsb2FkOiBPbWl0PE5vSW5mZXI8VHlwZWRIb29rLklucHV0PFQ+PiwgJ21ldGFkYXRhJz5cbiAgICApIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKFxuICAgICAgICBgaHR0cDovL2xvY2FsaG9zdDoke2NvbnRyb2wuaW5mby5wb3J0fS9ob29rcy8ke3Rva2VufWAsXG4gICAgICAgIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICByZXMuYXJyYXlCdWZmZXIoKS5jYXRjaCgoKSA9PiB7fSk7IC8vIERyYWluIHRoZSBib2R5IHRvIGF2b2lkIHJlc291cmNlIGxlYWtzXG4gICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byByZXN1bWUgaG9vazogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/world-testing",
3
- "version": "4.1.13",
3
+ "version": "4.1.14",
4
4
  "description": "Testing utilities and World implementation for Workflow SDK",
5
5
  "main": "dist/src/index.mjs",
6
6
  "files": [
@@ -21,10 +21,10 @@
21
21
  "hono": "4.12.25",
22
22
  "jsonlines": "0.1.1",
23
23
  "zod": "~4.3.6",
24
- "@workflow/cli": "4.3.2",
25
- "@workflow/core": "4.6.2",
26
- "workflow": "4.6.2",
27
- "@workflow/world": "4.2.1"
24
+ "@workflow/cli": "4.3.3",
25
+ "@workflow/core": "4.7.0",
26
+ "workflow": "4.7.0",
27
+ "@workflow/world": "4.3.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "22.19.0",