@workflow/cli 5.0.0-beta.36 → 5.0.0-beta.38

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.
@@ -6,6 +6,50 @@ import { setupCliWorld } from './setup.js';
6
6
  import { getVercelDashboardUrl } from './vercel-api.js';
7
7
  export const getHostUrl = (webPort) => `http://localhost:${webPort}`;
8
8
  let httpServer = null;
9
+ /**
10
+ * Find embedded dashboards (e.g. a framework integration serving `/_workflow`)
11
+ * that are currently live for this project. Reads the best-effort registry and
12
+ * health-checks each entry, since stale entries are expected (a SIGKILL'd dev
13
+ * server can't clean up). Returns [] on any error — coordination is optional.
14
+ */
15
+ async function findLiveEmbeddedDashboards() {
16
+ let entries;
17
+ try {
18
+ const { readDashboardRegistry } = await import('@workflow/web/registry');
19
+ entries = readDashboardRegistry();
20
+ }
21
+ catch {
22
+ return [];
23
+ }
24
+ const live = [];
25
+ for (const entry of entries) {
26
+ if (!entry?.url)
27
+ continue;
28
+ // Best-effort PID liveness check (same-host dev servers).
29
+ if (typeof entry.pid === 'number') {
30
+ try {
31
+ process.kill(entry.pid, 0);
32
+ }
33
+ catch {
34
+ continue; // process gone
35
+ }
36
+ }
37
+ try {
38
+ const res = await fetch(entry.url, {
39
+ method: 'HEAD',
40
+ redirect: 'manual',
41
+ signal: AbortSignal.timeout(1500),
42
+ });
43
+ // Any non-5xx response means something is serving that route.
44
+ if (res.status < 500)
45
+ live.push(entry);
46
+ }
47
+ catch {
48
+ // unreachable — treat as dead
49
+ }
50
+ }
51
+ return live;
52
+ }
9
53
  /**
10
54
  * Check if a server is already listening on the given URL.
11
55
  */
@@ -101,6 +145,37 @@ export async function launchWebUI(resource, id, flags, _cliVersion) {
101
145
  return;
102
146
  }
103
147
  }
148
+ // Defer to an already-running embedded dashboard (e.g. a framework
149
+ // integration serving `/_workflow`) unless the user forces a standalone
150
+ // server. Avoids spinning up a redundant UI on :3456 when one is already up.
151
+ if (!flags.standalone) {
152
+ const live = await findLiveEmbeddedDashboards();
153
+ if (live.length === 1) {
154
+ const target = buildWebUIUrl(live[0].url, resource, id, flags);
155
+ logger.info(chalk.green(`An embedded workflow dashboard is already running at ${live[0].url}`));
156
+ if (disableBrowserOpen) {
157
+ logger.info(chalk.cyan(`Open it at: ${target}`));
158
+ return;
159
+ }
160
+ logger.info(chalk.cyan(`Opening ${target}`));
161
+ try {
162
+ await open(target);
163
+ }
164
+ catch (error) {
165
+ logger.error(`Failed to open browser: ${error}`);
166
+ logger.info(`Please open the link manually: ${target}`);
167
+ }
168
+ return;
169
+ }
170
+ if (live.length > 1) {
171
+ logger.info('Embedded workflow dashboards are already running at:');
172
+ for (const entry of live) {
173
+ logger.info(chalk.cyan(` - ${entry.url}`));
174
+ }
175
+ logger.info('Open the one you want, or pass --standalone to start a separate web UI.');
176
+ return;
177
+ }
178
+ }
104
179
  // Fall back to local web UI
105
180
  const webPort = flags.webPort ?? 3456;
106
181
  const hostUrl = getHostUrl(webPort);
@@ -190,4 +265,4 @@ export async function printDeepLink(resource, id, flags, version) {
190
265
  process.stdout.write(`${url}\n`);
191
266
  }
192
267
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L3dlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUM7QUFFN0UsSUFBSSxVQUFVLEdBQWtCLElBQUksQ0FBQztBQUVyQzs7R0FFRztBQUNILEtBQUssVUFBVSxlQUFlLENBQUMsT0FBZTtJQUM1QyxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRCxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILEtBQUssVUFBVSxjQUFjLENBQUMsT0FBZTtJQUMzQyxJQUFJLE1BQU0sZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJ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QUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsUUFBZ0IsRUFDaEIsRUFBc0IsRUFDdEIsS0FBMEIsRUFDMUIsT0FBZTtJQUVmLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEMsNkVBQTZFO0lBQzdFLHdFQUF3RTtJQUN4RSxpRUFBaUU7SUFDakUsTUFBTSxhQUFhLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXBFLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFbEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlcnZlciB9IGZyb20gJ25vZGU6aHR0cCc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IG9wZW4gZnJvbSAnb3Blbic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9jb25maWcvbG9nLmpzJztcbmltcG9ydCB7IGdldEVudlZhcnMgfSBmcm9tICcuL2Vudi5qcyc7XG5pbXBvcnQgeyBzZXR1cENsaVdvcmxkIH0gZnJvbSAnLi9zZXR1cC5qcyc7XG5pbXBvcnQgeyBnZXRWZXJjZWxEYXNoYm9hcmRVcmwgfSBmcm9tICcuL3ZlcmNlbC1hcGkuanMnO1xuXG5leHBvcnQgY29uc3QgZ2V0SG9zdFVybCA9ICh3ZWJQb3J0OiBudW1iZXIpID0+IGBodHRwOi8vbG9jYWxob3N0OiR7d2ViUG9ydH1gO1xuXG5sZXQgaHR0cFNlcnZlcjogU2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzZXJ2ZXIgaXMgYWxyZWFkeSBsaXN0ZW5pbmcgb24gdGhlIGdpdmVuIFVSTC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaXNTZXJ2ZXJSdW5uaW5nKGhvc3RVcmw6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaG9zdFVybCwgeyBtZXRob2Q6ICdIRUFEJyB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2Uub2s7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFN0YXJ0IHRoZSBAd29ya2Zsb3cvd2ViIHNlcnZlciBpbiB0aGUgY3VycmVudCBwcm9jZXNzLlxuICovXG5hc3luYyBmdW5jdGlvbiBzdGFydFdlYlNlcnZlcih3ZWJQb3J0OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGlzU2VydmVyUnVubmluZyhnZXRIb3N0VXJsKHdlYlBvcnQpKSkge1xuICAgIGxvZ2dlci5kZWJ1ZygnU2VydmVyIGlzIGFscmVhZHkgcnVubmluZycpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsb2dnZXIuaW5mbygnU3RhcnRpbmcgd2ViIFVJIHNlcnZlci4uLicpO1xuICAgIGNvbnN0IHsgc3RhcnRTZXJ2ZXIgfSA9IGF3YWl0IGltcG9ydCgnQHdvcmtmbG93L3dlYi9zZXJ2ZXInKTtcbiAgICBodHRwU2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIod2ViUG9ydCk7XG4gICAgbG9nZ2VyLnN1Y2Nlc3MoY2hhbGsuZ3JlZW4oYFdlYiBVSSBzZXJ2ZXIgc3RhcnRlZCBvbiBwb3J0ICR7d2ViUG9ydH1gKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gc3RhcnQgc2VydmVyOiAke2Vycm9yfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGZvciBvcGVuaW5nIHRoZSBsb2NhbCB3ZWIgVUkuXG4gKlxuICogVGhlIHdlYiBVSSByZWFkcyB3b3JsZCBjb25maWd1cmF0aW9uIGZyb20gc2VydmVyLXNpZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICogUXVlcnkgcGFyYW1zIGFyZSBvbmx5IHVzZWQgZm9yIGRlZXAtbGlua2luZyB0byBzcGVjaWZpYyByZXNvdXJjZXMgKHJlc291cmNlL2lkLCBydW5JZCwgZXRjLilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV2ViVUlVcmwoXG4gIGhvc3RVcmw6IHN0cmluZyxcbiAgcmVzb3VyY2U6IHN0cmluZyxcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcblxuICAvLyBEZWVwLWxpbmtpbmcgcGFyYW1zXG4gIHBhcmFtcy5zZXQoJ3Jlc291cmNlJywgcmVzb3VyY2UpO1xuICBpZiAoaWQpIHtcbiAgICBwYXJhbXMuc2V0KCdpZCcsIGlkKTtcbiAgfVxuXG4gIC8vIE9wdGlvbmFsIGRlZXAtbGlua2luZyB0byBzcGVjaWZpYyBydW4vc3RlcC9ob29rXG4gIGZvciAoY29uc3QgZmxhZ05hbWUgb2YgWydydW5JZCcsICdzdGVwSWQnLCAnaG9va0lkJ10gYXMgY29uc3QpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGZsYWdzW2ZsYWdOYW1lXTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICBwYXJhbXMuc2V0KGZsYWdOYW1lLCBTdHJpbmcodmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBxdWVyeVN0cmluZyA9IHBhcmFtcy50b1N0cmluZygpO1xuICByZXR1cm4gcXVlcnlTdHJpbmcgPyBgJHtob3N0VXJsfT8ke3F1ZXJ5U3RyaW5nfWAgOiBob3N0VXJsO1xufVxuXG4vKipcbiAqIExhdW5jaCB0aGUgd2ViIFVJIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uLlxuICogVGhpcyBzdGFydHMgdGhlIHNlcnZlciAoaWYgbm90IHJ1bm5pbmcpLCBvcGVucyB0aGUgYnJvd3NlciwgdGhlbiBrZWVwcyB0aGUgc2VydmVyIHJ1bm5pbmcuXG4gKlxuICogV29ybGQgY29uZmlndXJhdGlvbiBpcyBwYXNzZWQgdG8gdGhlIHdlYiBzZXJ2ZXIgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqIFRoZSB3ZWIgVUkgcmVhZHMgdGhlc2UgZnJvbSBwcm9jZXNzLmVudiBvbiB0aGUgc2VydmVyIHNpZGUsIG5vdCBmcm9tIHF1ZXJ5IHBhcmFtcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaFdlYlVJKFxuICByZXNvdXJjZTogc3RyaW5nLFxuICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBmbGFnczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgX2NsaVZlcnNpb246IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGVudlZhcnMgPSBnZXRFbnZWYXJzKCk7XG5cbiAgLy8gQ2hlY2sgaWYgYnJvd3NlciBvcGVuaW5nIGlzIGRpc2FibGVkIHZpYSBmbGFnIG9yIGVudmlyb25tZW50IHZhcmlhYmxlXG4gIGNvbnN0IGRpc2FibGVCcm93c2VyT3BlbiA9IGZsYWdzLm5vQnJvd3NlcjtcblxuICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgdHJ5IHRvIHVzZSB0aGUgVmVyY2VsIGRhc2hib2FyZFxuICBjb25zdCB2ZXJjZWxCYWNrZW5kTmFtZXMgPSBbJ3ZlcmNlbCcsICdAd29ya2Zsb3cvd29ybGQtdmVyY2VsJ107XG4gIGNvbnN0IGlzVmVyY2VsQmFja2VuZCA9IHZlcmNlbEJhY2tlbmROYW1lcy5pbmNsdWRlcyhcbiAgICBlbnZWYXJzLldPUktGTE9XX1RBUkdFVF9XT1JMRFxuICApO1xuICBjb25zdCB0ZWFtU2x1ZyA9IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU07XG4gIGNvbnN0IHByb2plY3ROYW1lID1cbiAgICBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9QUk9KRUNUX05BTUUgfHwgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVDtcblxuICAvLyBDaGVjayBpZiB1c2VyIHdhbnRzIGxvY2FsIFVJIHZpYSBmbGFnIG9yIGVudmlyb25tZW50IHZhcmlhYmxlXG4gIGNvbnN0IHVzZUxvY2FsVWkgPSBmbGFncy5sb2NhbFVpO1xuXG4gIGlmICghdXNlTG9jYWxVaSAmJiBpc1ZlcmNlbEJhY2tlbmQpIHtcbiAgICBsb2dnZXIuaW5mbyhcbiAgICAgICdJZiB5b3UgZG8gbm90IHdhbnQgdG8gdXNlIHRoZSBWZXJjZWwgZGFzaGJvYXJkLCB1c2UgdGhlIC0tbG9jYWxVaSBmbGFnIG9yIHNldCBXT1JLRkxPV19MT0NBTF9VST0xIGluIHlvdXIgZW52aXJvbm1lbnQgdmFyaWFibGVzLidcbiAgICApO1xuICB9XG4gIGlmIChpc1ZlcmNlbEJhY2tlbmQgJiYgdGVhbVNsdWcgJiYgcHJvamVjdE5hbWUgJiYgIXVzZUxvY2FsVWkpIHtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgQ2hlY2tpbmcgVmVyY2VsIGRhc2hib2FyZCBhdmFpbGFiaWxpdHkgZm9yIHRlYW06ICR7dGVhbVNsdWd9LCBwcm9qZWN0OiAke3Byb2plY3ROYW1lfWBcbiAgICApO1xuXG4gICAgY29uc3QgZGFzaGJvYXJkVXJsID0gZ2V0VmVyY2VsRGFzaGJvYXJkVXJsKFxuICAgICAgdGVhbVNsdWcsXG4gICAgICBwcm9qZWN0TmFtZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAgaWQsXG4gICAgICBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9FTlYgfHwgJ3Byb2R1Y3Rpb24nXG4gICAgKTtcblxuICAgIGlmIChkaXNhYmxlQnJvd3Nlck9wZW4pIHtcbiAgICAgIGxvZ2dlci5pbmZvKGNoYWxrLmN5YW4oYFZlcmNlbCBkYXNoYm9hcmQgVVJMOiAke2Rhc2hib2FyZFVybH1gKSk7XG4gICAgICBsb2dnZXIuaW5mbyhjaGFsay5jeWFuKCcoQnJvd3NlciBhdXRvLW9wZW4gZGlzYWJsZWQpJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvKFxuICAgICAgY2hhbGsuZ3JlZW4oYE9wZW5pbmcgVmVyY2VsIGRhc2hib2FyZCBmb3Igd29ya2Zsb3dzIGF0OiAke2Rhc2hib2FyZFVybH1gKVxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG9wZW4oZGFzaGJvYXJkVXJsKTtcbiAgICAgIHJldHVybjsgLy8gRXhpdCBlYXJseSBzaW5jZSB3ZSBvcGVuZWQgdGhlIGRhc2hib2FyZFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBvcGVuIGJyb3dzZXI6ICR7ZXJyb3J9YCk7XG4gICAgICBsb2dnZXIuaW5mbyhgUGxlYXNlIG9wZW4gdGhlIGxpbmsgbWFudWFsbHkuYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGxvY2FsIHdlYiBVSVxuICBjb25zdCB3ZWJQb3J0ID0gZmxhZ3Mud2ViUG9ydCA/PyAzNDU2O1xuICBjb25zdCBob3N0VXJsID0gZ2V0SG9zdFVybCh3ZWJQb3J0KTtcbiAgY29uc3QgdXJsID0gYnVpbGRXZWJVSVVybChob3N0VXJsLCByZXNvdXJjZSwgaWQsIGZsYWdzKTtcblxuICAvLyBDaGVjayBpZiBzZXJ2ZXIgaXMgYWxyZWFkeSBydW5uaW5nXG4gIGNvbnN0IGFscmVhZHlSdW5uaW5nID0gYXdhaXQgaXNTZXJ2ZXJSdW5uaW5nKGhvc3RVcmwpO1xuXG4gIGlmIChhbHJlYWR5UnVubmluZykge1xuICAgIGxvZ2dlci5pbmZvKFxuICAgICAgY2hhbGsuY3lhbihgV2ViIFVJIHNlcnZlciBpcyBhbHJlYWR5IHJ1bm5pbmcgb24gcG9ydCAke3dlYlBvcnR9LmApXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBTdGFydCB0aGUgc2VydmVyXG4gICAgY29uc3Qgc3RhcnRlZCA9IGF3YWl0IHN0YXJ0V2ViU2VydmVyKHdlYlBvcnQpO1xuICAgIGlmICghc3RhcnRlZCkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgd2ViIFVJIHNlcnZlcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9wZW4gYnJvd3NlclxuICBpZiAoZGlzYWJsZUJyb3dzZXJPcGVuKSB7XG4gICAgbG9nZ2VyLmluZm8oY2hhbGsuY3lhbihgV2ViIFVJIGF2YWlsYWJsZSBhdDogJHt1cmx9YCkpO1xuICAgIGxvZ2dlci5pbmZvKGNoYWxrLmN5YW4oJyhCcm93c2VyIGF1dG8tb3BlbiBkaXNhYmxlZCknKSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmluZm8oY2hhbGsuY3lhbihgT3BlbmluZyBicm93c2VyIHRvOiAke3VybH1gKSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG9wZW4odXJsKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gb3BlbiBicm93c2VyOiAke2Vycm9yfWApO1xuICAgICAgbG9nZ2VyLmluZm8oYFBsZWFzZSBvcGVuIHRoZSBsaW5rIG1hbnVhbGx5LmApO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHdlIHN0YXJ0ZWQgdGhlIHNlcnZlciwga2VlcCB0aGUgcHJvY2VzcyBydW5uaW5nXG4gIGlmICghYWxyZWFkeVJ1bm5pbmcgJiYgaHR0cFNlcnZlcikge1xuICAgIGxvZ2dlci5pbmZvKGNoYWxrLmN5YW4oJ1ByZXNzIEN0cmwrQyB0byBzdG9wIHRoZSB3ZWIgVUkgc2VydmVyIGFuZCBleGl0JykpO1xuXG4gICAgLy8gS2VlcCB0aGUgQ0xJIHByb2Nlc3MgYWxpdmUgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIGlmIChodHRwU2VydmVyKSB7XG4gICAgICAgIGh0dHBTZXJ2ZXIub24oJ2Nsb3NlJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBkZWVwLWxpbmsgVVJMIGZvciBhIHJlc291cmNlIHdpdGhvdXQgYW55IHNpZGUgZWZmZWN0cyAobm8gc2VydmVyLFxuICogbm8gYnJvd3NlcikuIFBpY2tzIHRoZSBWZXJjZWwgZGFzaGJvYXJkIGZvciBhIFZlcmNlbCBiYWNrZW5kICh1bmxlc3NcbiAqIGAtLWxvY2FsVWlgKSwgb3RoZXJ3aXNlIHRoZSBsb2NhbCB3ZWIgVUkgZGVlcCBsaW5rLlxuICpcbiAqIEFzc3VtZXMgZW52IHZhcnMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVzb2x2ZWQgKGUuZy4gdmlhIGBzZXR1cENsaVdvcmxkYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZERlZXBMaW5rVXJsKFxuICByZXNvdXJjZTogc3RyaW5nLFxuICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBmbGFnczogUmVjb3JkPHN0cmluZywgYW55PlxuKTogc3RyaW5nIHtcbiAgY29uc3QgZW52VmFycyA9IGdldEVudlZhcnMoKTtcblxuICBjb25zdCB2ZXJjZWxCYWNrZW5kTmFtZXMgPSBbJ3ZlcmNlbCcsICdAd29ya2Zsb3cvd29ybGQtdmVyY2VsJ107XG4gIGNvbnN0IGlzVmVyY2VsQmFja2VuZCA9IHZlcmNlbEJhY2tlbmROYW1lcy5pbmNsdWRlcyhcbiAgICBlbnZWYXJzLldPUktGTE9XX1RBUkdFVF9XT1JMRFxuICApO1xuICBjb25zdCB0ZWFtU2x1ZyA9IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU07XG4gIGNvbnN0IHByb2plY3ROYW1lID1cbiAgICBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9QUk9KRUNUX05BTUUgfHwgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVDtcblxuICAvLyBVc2UgdGhlIFZlcmNlbCBkYXNoYm9hcmQgd2hlbiB0YXJnZXRpbmcgVmVyY2VsIChhbmQgbm90IGZvcmNlZCBsb2NhbCkuXG4gIGlmIChpc1ZlcmNlbEJhY2tlbmQgJiYgIWZsYWdzLmxvY2FsVWkgJiYgdGVhbVNsdWcgJiYgcHJvamVjdE5hbWUpIHtcbiAgICByZXR1cm4gZ2V0VmVyY2VsRGFzaGJvYXJkVXJsKFxuICAgICAgdGVhbVNsdWcsXG4gICAgICBwcm9qZWN0TmFtZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAgaWQsXG4gICAgICBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9FTlYgfHwgJ3Byb2R1Y3Rpb24nXG4gICAgKTtcbiAgfVxuXG4gIC8vIEZhbGwgYmFjayB0byB0aGUgbG9jYWwgd2ViIFVJIGRlZXAgbGluay5cbiAgY29uc3Qgd2ViUG9ydCA9IGZsYWdzLndlYlBvcnQgPz8gMzQ1NjtcbiAgcmV0dXJuIGJ1aWxkV2ViVUlVcmwoZ2V0SG9zdFVybCh3ZWJQb3J0KSwgcmVzb3VyY2UsIGlkLCBmbGFncyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbmQgcHJpbnQgYSBzaGFyZWFibGUgZGVlcC1saW5rIFVSTCB0byBzdGRvdXQsIHRoZW4gcmV0dXJuIOKAlCB3aXRob3V0XG4gKiBvcGVuaW5nIGEgYnJvd3NlciBvciBzdGFydGluZyB0aGUgbG9jYWwgd2ViIHNlcnZlci4gSW50ZW5kZWQgZm9yIHNjcmlwdGluZ1xuICogYW5kIGFnZW50cyB0aGF0IG5lZWQgdGhlIGxpbmsgcmF0aGVyIHRoYW4gYSByZW5kZXJlZCBkYXNoYm9hcmQuXG4gKlxuICogSHVtYW4tcmVhZGFibGUgY2hhdHRlciAodGhlIHN0YXJ0dXAgYm94LCBpbmZvL2RlYnVnIGxvZ3MpIGlzIHJvdXRlZCB0byBzdGRlcnJcbiAqIHNvIHN0ZG91dCBjb250YWlucyBvbmx5IHRoZSBVUkwgKG9yIGB7IFwidXJsXCI6IFwiLi4uXCIgfWAgd2l0aCBgLS1qc29uYCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmludERlZXBMaW5rKFxuICByZXNvdXJjZTogc3RyaW5nLFxuICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBmbGFnczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgdmVyc2lvbjogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgd2FudHNKc29uID0gQm9vbGVhbihmbGFncy5qc29uKTtcblxuICAvLyBGb3JjZSBKU09OIGxvZ2dpbmcgbW9kZSBkdXJpbmcgc2V0dXAgc28gdGhlIHN0YXJ0dXAgYm94IGFuZCBhbnkgaW5mby9kZWJ1Z1xuICAvLyBsb2dzIGdvIHRvIHN0ZGVyciwga2VlcGluZyBzdGRvdXQgY2xlYW4gZm9yIHRoZSBVUkwuIFdlIHByaW50IHRoZSBVUkxcbiAgLy8gb3Vyc2VsdmVzIGJlbG93LCByZXNwZWN0aW5nIHRoZSB1c2VyJ3MgYWN0dWFsIGAtLWpzb25gIGNob2ljZS5cbiAgYXdhaXQgc2V0dXBDbGlXb3JsZCh7IC4uLmZsYWdzLCBqc29uOiB0cnVlIH0gYXMgYW55LCB2ZXJzaW9uLCB0cnVlKTtcblxuICBjb25zdCB1cmwgPSBidWlsZERlZXBMaW5rVXJsKHJlc291cmNlLCBpZCwgZmxhZ3MpO1xuXG4gIGlmICh3YW50c0pzb24pIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtKU09OLnN0cmluZ2lmeSh7IHVybCB9LCBudWxsLCAyKX1cXG5gKTtcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgJHt1cmx9XFxuYCk7XG4gIH1cbn1cbiJdfQ==
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L3dlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUM7QUFFN0UsSUFBSSxVQUFVLEdBQWtCLElBQUksQ0FBQztBQVVyQzs7Ozs7R0FLRztBQUNILEtBQUssVUFBVSwwQkFBMEI7SUFDdkMsSUFBSSxPQUFpQyxDQUFDO0lBQ3RDLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDekUsT0FBTyxHQUFHLHFCQUFxQixFQUE4QixDQUFDO0lBQ2hFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLElBQUksR0FBNkIsRUFBRSxDQUFDO0lBQzFDLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHO1lBQUUsU0FBUztRQUMxQiwwREFBMEQ7UUFDMUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENB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Q0FDNUMsQ0FBQztJQUNKLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7SUFDdEMsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsUUFBZ0IsRUFDaEIsRUFBc0IsRUFDdEIsS0FBMEIsRUFDMUIsT0FBZTtJQUVmLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEMsNkVBQTZFO0lBQzdFLHdFQUF3RTtJQUN4RSxpRUFBaUU7SUFDakUsTUFBTSxhQUFhLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXBFLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFbEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlcnZlciB9IGZyb20gJ25vZGU6aHR0cCc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IG9wZW4gZnJvbSAnb3Blbic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9jb25maWcvbG9nLmpzJztcbmltcG9ydCB7IGdldEVudlZhcnMgfSBmcm9tICcuL2Vudi5qcyc7XG5pbXBvcnQgeyBzZXR1cENsaVdvcmxkIH0gZnJvbSAnLi9zZXR1cC5qcyc7XG5pbXBvcnQgeyBnZXRWZXJjZWxEYXNoYm9hcmRVcmwgfSBmcm9tICcuL3ZlcmNlbC1hcGkuanMnO1xuXG5leHBvcnQgY29uc3QgZ2V0SG9zdFVybCA9ICh3ZWJQb3J0OiBudW1iZXIpID0+IGBodHRwOi8vbG9jYWxob3N0OiR7d2ViUG9ydH1gO1xuXG5sZXQgaHR0cFNlcnZlcjogU2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbmludGVyZmFjZSBEYXNoYm9hcmRSZWdpc3RyeUVudHJ5IHtcbiAgdXJsOiBzdHJpbmc7XG4gIGJhc2VuYW1lOiBzdHJpbmc7XG4gIHdvcmxkOiBzdHJpbmc7XG4gIHBpZDogbnVtYmVyO1xuICBzdGFydGVkQXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGaW5kIGVtYmVkZGVkIGRhc2hib2FyZHMgKGUuZy4gYSBmcmFtZXdvcmsgaW50ZWdyYXRpb24gc2VydmluZyBgL193b3JrZmxvd2ApXG4gKiB0aGF0IGFyZSBjdXJyZW50bHkgbGl2ZSBmb3IgdGhpcyBwcm9qZWN0LiBSZWFkcyB0aGUgYmVzdC1lZmZvcnQgcmVnaXN0cnkgYW5kXG4gKiBoZWFsdGgtY2hlY2tzIGVhY2ggZW50cnksIHNpbmNlIHN0YWxlIGVudHJpZXMgYXJlIGV4cGVjdGVkIChhIFNJR0tJTEwnZCBkZXZcbiAqIHNlcnZlciBjYW4ndCBjbGVhbiB1cCkuIFJldHVybnMgW10gb24gYW55IGVycm9yIOKAlCBjb29yZGluYXRpb24gaXMgb3B0aW9uYWwuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmRMaXZlRW1iZWRkZWREYXNoYm9hcmRzKCk6IFByb21pc2U8RGFzaGJvYXJkUmVnaXN0cnlFbnRyeVtdPiB7XG4gIGxldCBlbnRyaWVzOiBEYXNoYm9hcmRSZWdpc3RyeUVudHJ5W107XG4gIHRyeSB7XG4gICAgY29uc3QgeyByZWFkRGFzaGJvYXJkUmVnaXN0cnkgfSA9IGF3YWl0IGltcG9ydCgnQHdvcmtmbG93L3dlYi9yZWdpc3RyeScpO1xuICAgIGVudHJpZXMgPSByZWFkRGFzaGJvYXJkUmVnaXN0cnkoKSBhcyBEYXNoYm9hcmRSZWdpc3RyeUVudHJ5W107XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGxpdmU6IERhc2hib2FyZFJlZ2lzdHJ5RW50cnlbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBpZiAoIWVudHJ5Py51cmwpIGNvbnRpbnVlO1xuICAgIC8vIEJlc3QtZWZmb3J0IFBJRCBsaXZlbmVzcyBjaGVjayAoc2FtZS1ob3N0IGRldiBzZXJ2ZXJzKS5cbiAgICBpZiAodHlwZW9mIGVudHJ5LnBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHByb2Nlc3Mua2lsbChlbnRyeS5waWQsIDApO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGNvbnRpbnVlOyAvLyBwcm9jZXNzIGdvbmVcbiAgICAgIH1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGVudHJ5LnVybCwge1xuICAgICAgICBtZXRob2Q6ICdIRUFEJyxcbiAgICAgICAgcmVkaXJlY3Q6ICdtYW51YWwnLFxuICAgICAgICBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoMTUwMCksXG4gICAgICB9KTtcbiAgICAgIC8vIEFueSBub24tNXh4IHJlc3BvbnNlIG1lYW5zIHNvbWV0aGluZyBpcyBzZXJ2aW5nIHRoYXQgcm91dGUuXG4gICAgICBpZiAocmVzLnN0YXR1cyA8IDUwMCkgbGl2ZS5wdXNoKGVudHJ5KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHVucmVhY2hhYmxlIOKAlCB0cmVhdCBhcyBkZWFkXG4gICAgfVxuICB9XG4gIHJldHVybiBsaXZlO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIG9uIHRoZSBnaXZlbiBVUkwuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzU2VydmVyUnVubmluZyhob3N0VXJsOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGhvc3RVcmwsIHsgbWV0aG9kOiAnSEVBRCcgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLm9rO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBTdGFydCB0aGUgQHdvcmtmbG93L3dlYiBzZXJ2ZXIgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3RhcnRXZWJTZXJ2ZXIod2ViUG9ydDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBpc1NlcnZlclJ1bm5pbmcoZ2V0SG9zdFVybCh3ZWJQb3J0KSkpIHtcbiAgICBsb2dnZXIuZGVidWcoJ1NlcnZlciBpcyBhbHJlYWR5IHJ1bm5pbmcnKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgbG9nZ2VyLmluZm8oJ1N0YXJ0aW5nIHdlYiBVSSBzZXJ2ZXIuLi4nKTtcbiAgICBjb25zdCB7IHN0YXJ0U2VydmVyIH0gPSBhd2FpdCBpbXBvcnQoJ0B3b3JrZmxvdy93ZWIvc2VydmVyJyk7XG4gICAgaHR0cFNlcnZlciA9IGF3YWl0IHN0YXJ0U2VydmVyKHdlYlBvcnQpO1xuICAgIGxvZ2dlci5zdWNjZXNzKGNoYWxrLmdyZWVuKGBXZWIgVUkgc2VydmVyIHN0YXJ0ZWQgb24gcG9ydCAke3dlYlBvcnR9YCkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHN0YXJ0IHNlcnZlcjogJHtlcnJvcn1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIFVSTCBmb3Igb3BlbmluZyB0aGUgbG9jYWwgd2ViIFVJLlxuICpcbiAqIFRoZSB3ZWIgVUkgcmVhZHMgd29ybGQgY29uZmlndXJhdGlvbiBmcm9tIHNlcnZlci1zaWRlIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqIFF1ZXJ5IHBhcmFtcyBhcmUgb25seSB1c2VkIGZvciBkZWVwLWxpbmtpbmcgdG8gc3BlY2lmaWMgcmVzb3VyY2VzIChyZXNvdXJjZS9pZCwgcnVuSWQsIGV0Yy4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFdlYlVJVXJsKFxuICBob3N0VXJsOiBzdHJpbmcsXG4gIHJlc291cmNlOiBzdHJpbmcsXG4gIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgLy8gRGVlcC1saW5raW5nIHBhcmFtc1xuICBwYXJhbXMuc2V0KCdyZXNvdXJjZScsIHJlc291cmNlKTtcbiAgaWYgKGlkKSB7XG4gICAgcGFyYW1zLnNldCgnaWQnLCBpZCk7XG4gIH1cblxuICAvLyBPcHRpb25hbCBkZWVwLWxpbmtpbmcgdG8gc3BlY2lmaWMgcnVuL3N0ZXAvaG9va1xuICBmb3IgKGNvbnN0IGZsYWdOYW1lIG9mIFsncnVuSWQnLCAnc3RlcElkJywgJ2hvb2tJZCddIGFzIGNvbnN0KSB7XG4gICAgY29uc3QgdmFsdWUgPSBmbGFnc1tmbGFnTmFtZV07XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgcGFyYW1zLnNldChmbGFnTmFtZSwgU3RyaW5nKHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcXVlcnlTdHJpbmcgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgcmV0dXJuIHF1ZXJ5U3RyaW5nID8gYCR7aG9zdFVybH0/JHtxdWVyeVN0cmluZ31gIDogaG9zdFVybDtcbn1cblxuLyoqXG4gKiBMYXVuY2ggdGhlIHdlYiBVSSB3aXRoIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbi5cbiAqIFRoaXMgc3RhcnRzIHRoZSBzZXJ2ZXIgKGlmIG5vdCBydW5uaW5nKSwgb3BlbnMgdGhlIGJyb3dzZXIsIHRoZW4ga2VlcHMgdGhlIHNlcnZlciBydW5uaW5nLlxuICpcbiAqIFdvcmxkIGNvbmZpZ3VyYXRpb24gaXMgcGFzc2VkIHRvIHRoZSB3ZWIgc2VydmVyIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKiBUaGUgd2ViIFVJIHJlYWRzIHRoZXNlIGZyb20gcHJvY2Vzcy5lbnYgb24gdGhlIHNlcnZlciBzaWRlLCBub3QgZnJvbSBxdWVyeSBwYXJhbXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsYXVuY2hXZWJVSShcbiAgcmVzb3VyY2U6IHN0cmluZyxcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIF9jbGlWZXJzaW9uOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBlbnZWYXJzID0gZ2V0RW52VmFycygpO1xuXG4gIC8vIENoZWNrIGlmIGJyb3dzZXIgb3BlbmluZyBpcyBkaXNhYmxlZCB2aWEgZmxhZyBvciBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICBjb25zdCBkaXNhYmxlQnJvd3Nlck9wZW4gPSBmbGFncy5ub0Jyb3dzZXI7XG5cbiAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHRyeSB0byB1c2UgdGhlIFZlcmNlbCBkYXNoYm9hcmRcbiAgY29uc3QgdmVyY2VsQmFja2VuZE5hbWVzID0gWyd2ZXJjZWwnLCAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCddO1xuICBjb25zdCBpc1ZlcmNlbEJhY2tlbmQgPSB2ZXJjZWxCYWNrZW5kTmFtZXMuaW5jbHVkZXMoXG4gICAgZW52VmFycy5XT1JLRkxPV19UQVJHRVRfV09STERcbiAgKTtcbiAgY29uc3QgdGVhbVNsdWcgPSBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9URUFNO1xuICBjb25zdCBwcm9qZWN0TmFtZSA9XG4gICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVF9OQU1FIHx8IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1Q7XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciB3YW50cyBsb2NhbCBVSSB2aWEgZmxhZyBvciBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICBjb25zdCB1c2VMb2NhbFVpID0gZmxhZ3MubG9jYWxVaTtcblxuICBpZiAoIXVzZUxvY2FsVWkgJiYgaXNWZXJjZWxCYWNrZW5kKSB7XG4gICAgbG9nZ2VyLmluZm8oXG4gICAgICAnSWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSB0aGUgVmVyY2VsIGRhc2hib2FyZCwgdXNlIHRoZSAtLWxvY2FsVWkgZmxhZyBvciBzZXQgV09SS0ZMT1dfTE9DQUxfVUk9MSBpbiB5b3VyIGVudmlyb25tZW50IHZhcmlhYmxlcy4nXG4gICAgKTtcbiAgfVxuICBpZiAoaXNWZXJjZWxCYWNrZW5kICYmIHRlYW1TbHVnICYmIHByb2plY3ROYW1lICYmICF1c2VMb2NhbFVpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYENoZWNraW5nIFZlcmNlbCBkYXNoYm9hcmQgYXZhaWxhYmlsaXR5IGZvciB0ZWFtOiAke3RlYW1TbHVnfSwgcHJvamVjdDogJHtwcm9qZWN0TmFtZX1gXG4gICAgKTtcblxuICAgIGNvbnN0IGRhc2hib2FyZFVybCA9IGdldFZlcmNlbERhc2hib2FyZFVybChcbiAgICAgIHRlYW1TbHVnLFxuICAgICAgcHJvamVjdE5hbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGlkLFxuICAgICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfRU5WIHx8ICdwcm9kdWN0aW9uJ1xuICAgICk7XG5cbiAgICBpZiAoZGlzYWJsZUJyb3dzZXJPcGVuKSB7XG4gICAgICBsb2dnZXIuaW5mbyhjaGFsay5jeWFuKGBWZXJjZWwgZGFzaGJvYXJkIFVSTDogJHtkYXNoYm9hcmRVcmx9YCkpO1xuICAgICAgbG9nZ2VyLmluZm8oY2hhbGsuY3lhbignKEJyb3dzZXIgYXV0by1vcGVuIGRpc2FibGVkKScpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2dnZXIuaW5mbyhcbiAgICAgIGNoYWxrLmdyZWVuKGBPcGVuaW5nIFZlcmNlbCBkYXNoYm9hcmQgZm9yIHdvcmtmbG93cyBhdDogJHtkYXNoYm9hcmRVcmx9YClcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBvcGVuKGRhc2hib2FyZFVybCk7XG4gICAgICByZXR1cm47IC8vIEV4aXQgZWFybHkgc2luY2Ugd2Ugb3BlbmVkIHRoZSBkYXNoYm9hcmRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gb3BlbiBicm93c2VyOiAke2Vycm9yfWApO1xuICAgICAgbG9nZ2VyLmluZm8oYFBsZWFzZSBvcGVuIHRoZSBsaW5rIG1hbnVhbGx5LmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmVyIHRvIGFuIGFscmVhZHktcnVubmluZyBlbWJlZGRlZCBkYXNoYm9hcmQgKGUuZy4gYSBmcmFtZXdvcmtcbiAgLy8gaW50ZWdyYXRpb24gc2VydmluZyBgL193b3JrZmxvd2ApIHVubGVzcyB0aGUgdXNlciBmb3JjZXMgYSBzdGFuZGFsb25lXG4gIC8vIHNlcnZlci4gQXZvaWRzIHNwaW5uaW5nIHVwIGEgcmVkdW5kYW50IFVJIG9uIDozNDU2IHdoZW4gb25lIGlzIGFscmVhZHkgdXAuXG4gIGlmICghZmxhZ3Muc3RhbmRhbG9uZSkge1xuICAgIGNvbnN0IGxpdmUgPSBhd2FpdCBmaW5kTGl2ZUVtYmVkZGVkRGFzaGJvYXJkcygpO1xuICAgIGlmIChsaXZlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gYnVpbGRXZWJVSVVybChsaXZlWzBdLnVybCwgcmVzb3VyY2UsIGlkLCBmbGFncyk7XG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgY2hhbGsuZ3JlZW4oXG4gICAgICAgICAgYEFuIGVtYmVkZGVkIHdvcmtmbG93IGRhc2hib2FyZCBpcyBhbHJlYWR5IHJ1bm5pbmcgYXQgJHtsaXZlWzBdLnVybH1gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBpZiAoZGlzYWJsZUJyb3dzZXJPcGVuKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKGNoYWxrLmN5YW4oYE9wZW4gaXQgYXQ6ICR7dGFyZ2V0fWApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9nZ2VyLmluZm8oY2hhbGsuY3lhbihgT3BlbmluZyAke3RhcmdldH1gKSk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBvcGVuKHRhcmdldCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBvcGVuIGJyb3dzZXI6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBQbGVhc2Ugb3BlbiB0aGUgbGluayBtYW51YWxseTogJHt0YXJnZXR9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChsaXZlLmxlbmd0aCA+IDEpIHtcbiAgICAgIGxvZ2dlci5pbmZvKCdFbWJlZGRlZCB3b3JrZmxvdyBkYXNoYm9hcmRzIGFyZSBhbHJlYWR5IHJ1bm5pbmcgYXQ6Jyk7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGxpdmUpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oY2hhbGsuY3lhbihgICAtICR7ZW50cnkudXJsfWApKTtcbiAgICAgIH1cbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAnT3BlbiB0aGUgb25lIHlvdSB3YW50LCBvciBwYXNzIC0tc3RhbmRhbG9uZSB0byBzdGFydCBhIHNlcGFyYXRlIHdlYiBVSS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGwgYmFjayB0byBsb2NhbCB3ZWIgVUlcbiAgY29uc3Qgd2ViUG9ydCA9IGZsYWdzLndlYlBvcnQgPz8gMzQ1NjtcbiAgY29uc3QgaG9zdFVybCA9IGdldEhvc3RVcmwod2ViUG9ydCk7XG4gIGNvbnN0IHVybCA9IGJ1aWxkV2ViVUlVcmwoaG9zdFVybCwgcmVzb3VyY2UsIGlkLCBmbGFncyk7XG5cbiAgLy8gQ2hlY2sgaWYgc2VydmVyIGlzIGFscmVhZHkgcnVubmluZ1xuICBjb25zdCBhbHJlYWR5UnVubmluZyA9IGF3YWl0IGlzU2VydmVyUnVubmluZyhob3N0VXJsKTtcblxuICBpZiAoYWxyZWFkeVJ1bm5pbmcpIHtcbiAgICBsb2dnZXIuaW5mbyhcbiAgICAgIGNoYWxrLmN5YW4oYFdlYiBVSSBzZXJ2ZXIgaXMgYWxyZWFkeSBydW5uaW5nIG9uIHBvcnQgJHt3ZWJQb3J0fS5gKVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gU3RhcnQgdGhlIHNlcnZlclxuICAgIGNvbnN0IHN0YXJ0ZWQgPSBhd2FpdCBzdGFydFdlYlNlcnZlcih3ZWJQb3J0KTtcbiAgICBpZiAoIXN0YXJ0ZWQpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHdlYiBVSSBzZXJ2ZXInKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICAvLyBPcGVuIGJyb3dzZXJcbiAgaWYgKGRpc2FibGVCcm93c2VyT3Blbikge1xuICAgIGxvZ2dlci5pbmZvKGNoYWxrLmN5YW4oYFdlYiBVSSBhdmFpbGFibGUgYXQ6ICR7dXJsfWApKTtcbiAgICBsb2dnZXIuaW5mbyhjaGFsay5jeWFuKCcoQnJvd3NlciBhdXRvLW9wZW4gZGlzYWJsZWQpJykpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5pbmZvKGNoYWxrLmN5YW4oYE9wZW5pbmcgYnJvd3NlciB0bzogJHt1cmx9YCkpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBvcGVuKHVybCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIG9wZW4gYnJvd3NlcjogJHtlcnJvcn1gKTtcbiAgICAgIGxvZ2dlci5pbmZvKGBQbGVhc2Ugb3BlbiB0aGUgbGluayBtYW51YWxseS5gKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiB3ZSBzdGFydGVkIHRoZSBzZXJ2ZXIsIGtlZXAgdGhlIHByb2Nlc3MgcnVubmluZ1xuICBpZiAoIWFscmVhZHlSdW5uaW5nICYmIGh0dHBTZXJ2ZXIpIHtcbiAgICBsb2dnZXIuaW5mbyhjaGFsay5jeWFuKCdQcmVzcyBDdHJsK0MgdG8gc3RvcCB0aGUgd2ViIFVJIHNlcnZlciBhbmQgZXhpdCcpKTtcblxuICAgIC8vIEtlZXAgdGhlIENMSSBwcm9jZXNzIGFsaXZlIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZ1xuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoaHR0cFNlcnZlcikge1xuICAgICAgICBodHRwU2VydmVyLm9uKCdjbG9zZScsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgZGVlcC1saW5rIFVSTCBmb3IgYSByZXNvdXJjZSB3aXRob3V0IGFueSBzaWRlIGVmZmVjdHMgKG5vIHNlcnZlcixcbiAqIG5vIGJyb3dzZXIpLiBQaWNrcyB0aGUgVmVyY2VsIGRhc2hib2FyZCBmb3IgYSBWZXJjZWwgYmFja2VuZCAodW5sZXNzXG4gKiBgLS1sb2NhbFVpYCksIG90aGVyd2lzZSB0aGUgbG9jYWwgd2ViIFVJIGRlZXAgbGluay5cbiAqXG4gKiBBc3N1bWVzIGVudiB2YXJzIGhhdmUgYWxyZWFkeSBiZWVuIHJlc29sdmVkIChlLmcuIHZpYSBgc2V0dXBDbGlXb3JsZGApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREZWVwTGlua1VybChcbiAgcmVzb3VyY2U6IHN0cmluZyxcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IHN0cmluZyB7XG4gIGNvbnN0IGVudlZhcnMgPSBnZXRFbnZWYXJzKCk7XG5cbiAgY29uc3QgdmVyY2VsQmFja2VuZE5hbWVzID0gWyd2ZXJjZWwnLCAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCddO1xuICBjb25zdCBpc1ZlcmNlbEJhY2tlbmQgPSB2ZXJjZWxCYWNrZW5kTmFtZXMuaW5jbHVkZXMoXG4gICAgZW52VmFycy5XT1JLRkxPV19UQVJHRVRfV09STERcbiAgKTtcbiAgY29uc3QgdGVhbVNsdWcgPSBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9URUFNO1xuICBjb25zdCBwcm9qZWN0TmFtZSA9XG4gICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVF9OQU1FIHx8IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1Q7XG5cbiAgLy8gVXNlIHRoZSBWZXJjZWwgZGFzaGJvYXJkIHdoZW4gdGFyZ2V0aW5nIFZlcmNlbCAoYW5kIG5vdCBmb3JjZWQgbG9jYWwpLlxuICBpZiAoaXNWZXJjZWxCYWNrZW5kICYmICFmbGFncy5sb2NhbFVpICYmIHRlYW1TbHVnICYmIHByb2plY3ROYW1lKSB7XG4gICAgcmV0dXJuIGdldFZlcmNlbERhc2hib2FyZFVybChcbiAgICAgIHRlYW1TbHVnLFxuICAgICAgcHJvamVjdE5hbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGlkLFxuICAgICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfRU5WIHx8ICdwcm9kdWN0aW9uJ1xuICAgICk7XG4gIH1cblxuICAvLyBGYWxsIGJhY2sgdG8gdGhlIGxvY2FsIHdlYiBVSSBkZWVwIGxpbmsuXG4gIGNvbnN0IHdlYlBvcnQgPSBmbGFncy53ZWJQb3J0ID8/IDM0NTY7XG4gIHJldHVybiBidWlsZFdlYlVJVXJsKGdldEhvc3RVcmwod2ViUG9ydCksIHJlc291cmNlLCBpZCwgZmxhZ3MpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW5kIHByaW50IGEgc2hhcmVhYmxlIGRlZXAtbGluayBVUkwgdG8gc3Rkb3V0LCB0aGVuIHJldHVybiDigJQgd2l0aG91dFxuICogb3BlbmluZyBhIGJyb3dzZXIgb3Igc3RhcnRpbmcgdGhlIGxvY2FsIHdlYiBzZXJ2ZXIuIEludGVuZGVkIGZvciBzY3JpcHRpbmdcbiAqIGFuZCBhZ2VudHMgdGhhdCBuZWVkIHRoZSBsaW5rIHJhdGhlciB0aGFuIGEgcmVuZGVyZWQgZGFzaGJvYXJkLlxuICpcbiAqIEh1bWFuLXJlYWRhYmxlIGNoYXR0ZXIgKHRoZSBzdGFydHVwIGJveCwgaW5mby9kZWJ1ZyBsb2dzKSBpcyByb3V0ZWQgdG8gc3RkZXJyXG4gKiBzbyBzdGRvdXQgY29udGFpbnMgb25seSB0aGUgVVJMIChvciBgeyBcInVybFwiOiBcIi4uLlwiIH1gIHdpdGggYC0tanNvbmApLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJpbnREZWVwTGluayhcbiAgcmVzb3VyY2U6IHN0cmluZyxcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIHZlcnNpb246IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHdhbnRzSnNvbiA9IEJvb2xlYW4oZmxhZ3MuanNvbik7XG5cbiAgLy8gRm9yY2UgSlNPTiBsb2dnaW5nIG1vZGUgZHVyaW5nIHNldHVwIHNvIHRoZSBzdGFydHVwIGJveCBhbmQgYW55IGluZm8vZGVidWdcbiAgLy8gbG9ncyBnbyB0byBzdGRlcnIsIGtlZXBpbmcgc3Rkb3V0IGNsZWFuIGZvciB0aGUgVVJMLiBXZSBwcmludCB0aGUgVVJMXG4gIC8vIG91cnNlbHZlcyBiZWxvdywgcmVzcGVjdGluZyB0aGUgdXNlcidzIGFjdHVhbCBgLS1qc29uYCBjaG9pY2UuXG4gIGF3YWl0IHNldHVwQ2xpV29ybGQoeyAuLi5mbGFncywganNvbjogdHJ1ZSB9IGFzIGFueSwgdmVyc2lvbiwgdHJ1ZSk7XG5cbiAgY29uc3QgdXJsID0gYnVpbGREZWVwTGlua1VybChyZXNvdXJjZSwgaWQsIGZsYWdzKTtcblxuICBpZiAod2FudHNKc29uKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkoeyB1cmwgfSwgbnVsbCwgMil9XFxuYCk7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7dXJsfVxcbmApO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/cli",
3
- "version": "5.0.0-beta.36",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Command-line interface for Workflow SDK",
5
5
  "type": "module",
6
6
  "bin": {
@@ -56,15 +56,15 @@
56
56
  "tinyglobby": "0.2.17",
57
57
  "xdg-app-paths": "5.1.0",
58
58
  "zod": "~4.3.6",
59
- "@workflow/builders": "5.0.0-beta.36",
60
- "@workflow/core": "5.0.0-beta.36",
61
- "@workflow/errors": "5.0.0-beta.12",
59
+ "@workflow/builders": "5.0.0-beta.38",
60
+ "@workflow/core": "5.0.0-beta.38",
61
+ "@workflow/errors": "5.0.0-beta.14",
62
62
  "@workflow/swc-plugin": "5.0.0-beta.5",
63
- "@workflow/utils": "5.0.0-beta.6",
64
- "@workflow/web": "5.0.0-beta.36",
65
- "@workflow/world": "5.0.0-beta.22",
66
- "@workflow/world-local": "5.0.0-beta.30",
67
- "@workflow/world-vercel": "5.0.0-beta.32"
63
+ "@workflow/utils": "5.0.0-beta.8",
64
+ "@workflow/web": "5.0.0-beta.38",
65
+ "@workflow/world": "5.0.0-beta.23",
66
+ "@workflow/world-local": "5.0.0-beta.32",
67
+ "@workflow/world-vercel": "5.0.0-beta.34"
68
68
  },
69
69
  "scripts": {
70
70
  "build": "tsc && chmod +x bin/run.js",