@workflow/cli 5.0.0-beta.3 → 5.0.0-beta.31

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 (98) hide show
  1. package/dist/base.d.ts.map +1 -1
  2. package/dist/base.js +8 -2
  3. package/dist/commands/build.js +1 -1
  4. package/dist/commands/cancel.d.ts.map +1 -1
  5. package/dist/commands/cancel.js +56 -10
  6. package/dist/commands/dev.js +1 -1
  7. package/dist/commands/health.js +1 -1
  8. package/dist/commands/init.js +1 -1
  9. package/dist/commands/inspect.d.ts +3 -0
  10. package/dist/commands/inspect.d.ts.map +1 -1
  11. package/dist/commands/inspect.js +37 -7
  12. package/dist/commands/start.d.ts.map +1 -1
  13. package/dist/commands/start.js +8 -3
  14. package/dist/commands/transform.js +1 -1
  15. package/dist/commands/validate.js +1 -1
  16. package/dist/commands/web.d.ts +1 -0
  17. package/dist/commands/web.d.ts.map +1 -1
  18. package/dist/commands/web.js +9 -3
  19. package/dist/lib/config/log.js +1 -1
  20. package/dist/lib/config/types.d.ts +6 -1
  21. package/dist/lib/config/types.d.ts.map +1 -1
  22. package/dist/lib/config/types.js +1 -1
  23. package/dist/lib/config/workflow-config.js +1 -1
  24. package/dist/lib/inspect/auth.js +1 -1
  25. package/dist/lib/inspect/env.d.ts +1 -1
  26. package/dist/lib/inspect/env.js +2 -2
  27. package/dist/lib/inspect/errors.d.ts +3 -0
  28. package/dist/lib/inspect/errors.d.ts.map +1 -0
  29. package/dist/lib/inspect/errors.js +27 -0
  30. package/dist/lib/inspect/flags.d.ts +8 -0
  31. package/dist/lib/inspect/flags.d.ts.map +1 -1
  32. package/dist/lib/inspect/flags.js +15 -1
  33. package/dist/lib/inspect/hydration.d.ts +22 -0
  34. package/dist/lib/inspect/hydration.d.ts.map +1 -1
  35. package/dist/lib/inspect/hydration.js +102 -47
  36. package/dist/lib/inspect/hydration.test.d.ts +2 -0
  37. package/dist/lib/inspect/hydration.test.d.ts.map +1 -0
  38. package/dist/lib/inspect/hydration.test.js +23 -0
  39. package/dist/lib/inspect/output.d.ts +2 -2
  40. package/dist/lib/inspect/output.d.ts.map +1 -1
  41. package/dist/lib/inspect/output.js +255 -131
  42. package/dist/lib/inspect/output.test.js +403 -3
  43. package/dist/lib/inspect/pagination.d.ts +10 -1
  44. package/dist/lib/inspect/pagination.d.ts.map +1 -1
  45. package/dist/lib/inspect/pagination.js +20 -4
  46. package/dist/lib/inspect/run.d.ts.map +1 -1
  47. package/dist/lib/inspect/run.js +32 -9
  48. package/dist/lib/inspect/setup.d.ts.map +1 -1
  49. package/dist/lib/inspect/setup.js +42 -6
  50. package/dist/lib/inspect/stream.js +1 -1
  51. package/dist/lib/inspect/terminal-utils.js +1 -1
  52. package/dist/lib/inspect/time-window.d.ts +28 -0
  53. package/dist/lib/inspect/time-window.d.ts.map +1 -0
  54. package/dist/lib/inspect/time-window.js +61 -0
  55. package/dist/lib/inspect/time-window.test.d.ts +2 -0
  56. package/dist/lib/inspect/time-window.test.d.ts.map +1 -0
  57. package/dist/lib/inspect/time-window.test.js +58 -0
  58. package/dist/lib/inspect/vercel-api.d.ts +5 -2
  59. package/dist/lib/inspect/vercel-api.d.ts.map +1 -1
  60. package/dist/lib/inspect/vercel-api.js +12 -37
  61. package/dist/lib/inspect/vercel-api.test.d.ts +2 -0
  62. package/dist/lib/inspect/vercel-api.test.d.ts.map +1 -0
  63. package/dist/lib/inspect/vercel-api.test.js +21 -0
  64. package/dist/lib/inspect/vercel-link.js +1 -1
  65. package/dist/lib/inspect/web.d.ts +24 -0
  66. package/dist/lib/inspect/web.d.ts.map +1 -1
  67. package/dist/lib/inspect/web.js +47 -3
  68. package/dist/lib/update-check.js +1 -1
  69. package/package.json +14 -14
  70. package/dist/base.js.map +0 -1
  71. package/dist/commands/build.js.map +0 -1
  72. package/dist/commands/cancel.js.map +0 -1
  73. package/dist/commands/dev.js.map +0 -1
  74. package/dist/commands/health.js.map +0 -1
  75. package/dist/commands/init.js.map +0 -1
  76. package/dist/commands/inspect.js.map +0 -1
  77. package/dist/commands/start.js.map +0 -1
  78. package/dist/commands/transform.js.map +0 -1
  79. package/dist/commands/validate.js.map +0 -1
  80. package/dist/commands/web.js.map +0 -1
  81. package/dist/lib/config/log.js.map +0 -1
  82. package/dist/lib/config/types.js.map +0 -1
  83. package/dist/lib/config/workflow-config.js.map +0 -1
  84. package/dist/lib/inspect/auth.js.map +0 -1
  85. package/dist/lib/inspect/env.js.map +0 -1
  86. package/dist/lib/inspect/flags.js.map +0 -1
  87. package/dist/lib/inspect/hydration.js.map +0 -1
  88. package/dist/lib/inspect/output.js.map +0 -1
  89. package/dist/lib/inspect/output.test.js.map +0 -1
  90. package/dist/lib/inspect/pagination.js.map +0 -1
  91. package/dist/lib/inspect/run.js.map +0 -1
  92. package/dist/lib/inspect/setup.js.map +0 -1
  93. package/dist/lib/inspect/stream.js.map +0 -1
  94. package/dist/lib/inspect/terminal-utils.js.map +0 -1
  95. package/dist/lib/inspect/vercel-api.js.map +0 -1
  96. package/dist/lib/inspect/vercel-link.js.map +0 -1
  97. package/dist/lib/inspect/web.js.map +0 -1
  98. package/dist/lib/update-check.js.map +0 -1
@@ -5,9 +5,10 @@
5
5
  * `util.inspect.custom` to ClassInstanceRef for pretty CLI output.
6
6
  */
7
7
  import { inspect } from 'node:util';
8
- import { maybeDecrypt } from '@workflow/core/serialization';
8
+ import { getCommonRevivers, maybeDecrypt } from '@workflow/core/serialization';
9
9
  import { ClassInstanceRef, extractClassName, hydrateResourceIO as hydrateResourceIOGeneric, isEncryptedData, isExpiredStub, isRunRef, observabilityRevivers, serializedInstanceToRef, } from '@workflow/core/serialization-format';
10
10
  import { parseClassName } from '@workflow/utils/parse-name';
11
+ import { getEventDataRefFields } from '@workflow/world';
11
12
  import chalk from 'chalk';
12
13
  // Re-export types and utilities that consumers need
13
14
  export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from '@workflow/core/serialization-format';
@@ -87,30 +88,104 @@ export function isExpiredRef(value) {
87
88
  // ---------------------------------------------------------------------------
88
89
  // CLI revivers (Node.js, uses Buffer)
89
90
  // ---------------------------------------------------------------------------
91
+ /**
92
+ * The set of reducer keys whose `getCommonRevivers()` output produces a
93
+ * native `Error` instance. We wrap each of these with an additional
94
+ * `toJSON` attachment in CLI mode (see `wrapErrorReviverWithToJSON`).
95
+ */
96
+ const ERROR_REVIVER_KEYS = [
97
+ 'AggregateError',
98
+ 'DOMException',
99
+ 'Error',
100
+ 'EvalError',
101
+ 'FatalError',
102
+ 'HookConflictError',
103
+ 'RangeError',
104
+ 'ReferenceError',
105
+ 'RetryableError',
106
+ 'RuntimeDecryptionError',
107
+ 'SyntaxError',
108
+ 'TypeError',
109
+ 'URIError',
110
+ ];
111
+ /**
112
+ * Wraps a runtime Error reviver so that the produced instance carries a
113
+ * non-enumerable `toJSON` method. The runtime revivers return real `Error`
114
+ * instances (good for `util.inspect`, `instanceof`, `toString`, etc.), but
115
+ * `Error.prototype`'s `name` / `message` / `stack` / `cause` are
116
+ * non-enumerable and would be dropped by `JSON.stringify` — which is how
117
+ * the CLI emits its `--json` output. Adding `toJSON` (which `JSON.stringify`
118
+ * calls but `util.inspect` ignores) gives us the best of both worlds:
119
+ * round-tripped errors render cleanly in both modes without the
120
+ * data-versus-display tradeoff that plain-object revivers would force.
121
+ *
122
+ * Subclass-specific enumerable fields (e.g. `RetryableError.retryAfter`,
123
+ * `AggregateError.errors`, `FatalError.fatal`) are picked up automatically
124
+ * via `Object.assign` after the base fields, so we don't have to enumerate
125
+ * them per-subclass.
126
+ */
127
+ function wrapErrorReviverWithToJSON(reviver) {
128
+ return (value) => {
129
+ const result = reviver(value);
130
+ if (!(result instanceof Error))
131
+ return result;
132
+ Object.defineProperty(result, 'toJSON', {
133
+ value: function () {
134
+ const json = {
135
+ name: this.name,
136
+ message: this.message,
137
+ stack: this.stack,
138
+ };
139
+ if ('cause' in this) {
140
+ json.cause = this.cause;
141
+ }
142
+ // Pick up subclass-specific enumerable fields (e.g. FatalError.fatal,
143
+ // RetryableError.retryAfter, AggregateError.errors).
144
+ Object.assign(json, this);
145
+ return json;
146
+ },
147
+ enumerable: false,
148
+ writable: true,
149
+ configurable: true,
150
+ });
151
+ return result;
152
+ };
153
+ }
154
+ /**
155
+ * The set of revivers used by CLI inspect output.
156
+ *
157
+ * Built on top of `getCommonRevivers()` from `@workflow/core` so that the
158
+ * CLI stays in sync with the runtime's reviver set automatically. Without
159
+ * this, every new reviver added to core (e.g. `FatalError`,
160
+ * `RetryableError`, the built-in `Error` subclasses) would silently
161
+ * disappear from CLI output: devalue throws "Unknown type X" for
162
+ * unrecognized reduced types, and `hydrateResourceIO` swallows that error
163
+ * and surfaces the raw `Uint8Array` payload to consumers — which then
164
+ * shows up as `step.error` / `run.error` byte dumps instead of usable
165
+ * `{ message, stack, … }` objects.
166
+ *
167
+ * On top of the common set we layer:
168
+ * - A `toJSON` shim on each Error reviver so non-enumerable
169
+ * `Error.prototype` fields survive `JSON.stringify` for `--json` output
170
+ * while leaving `util.inspect` rendering untouched
171
+ * - `observabilityRevivers` for streams / step+workflow function refs
172
+ * - CLI-specific overrides that produce display-friendly placeholders
173
+ * for `Class` / `Instance` (the runtime versions need full class
174
+ * identity which the CLI doesn't have access to)
175
+ */
90
176
  export function getCLIRevivers() {
91
- function reviveArrayBuffer(value) {
92
- const base64 = value === '.' ? '' : value;
93
- const buffer = Buffer.from(base64, 'base64');
94
- const arrayBuffer = new ArrayBuffer(buffer.length);
95
- const uint8Array = new Uint8Array(arrayBuffer);
96
- uint8Array.set(buffer);
97
- return arrayBuffer;
98
- }
177
+ const baseRevivers = getCommonRevivers(globalThis);
178
+ const errorRevivers = Object.fromEntries(ERROR_REVIVER_KEYS.flatMap((key) => {
179
+ const reviver = baseRevivers[key];
180
+ return reviver ? [[key, wrapErrorReviverWithToJSON(reviver)]] : [];
181
+ }));
99
182
  return {
100
- ArrayBuffer: reviveArrayBuffer,
101
- BigInt: (value) => BigInt(value),
102
- BigInt64Array: (value) => new BigInt64Array(reviveArrayBuffer(value)),
103
- BigUint64Array: (value) => new BigUint64Array(reviveArrayBuffer(value)),
104
- Date: (value) => new Date(value),
105
- Error: (value) => {
106
- const error = new Error(value.message);
107
- error.name = value.name;
108
- error.stack = value.stack;
109
- return error;
110
- },
111
- Float32Array: (value) => new Float32Array(reviveArrayBuffer(value)),
112
- Float64Array: (value) => new Float64Array(reviveArrayBuffer(value)),
113
- Headers: (value) => new Headers(value),
183
+ ...baseRevivers,
184
+ ...errorRevivers,
185
+ // O11y-specific revivers (streams, step functions → display objects).
186
+ ...observabilityRevivers,
187
+ // Node `Request` / `Response` revivers that don't rely on running an
188
+ // actual fetch handler — used to render request/response IO inline.
114
189
  Request: (value) => {
115
190
  // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype
116
191
  const ctor = { Request: function () { } }.Request;
@@ -142,14 +217,6 @@ export function getCLIRevivers() {
142
217
  });
143
218
  return obj;
144
219
  },
145
- Int8Array: (value) => new Int8Array(reviveArrayBuffer(value)),
146
- Int16Array: (value) => new Int16Array(reviveArrayBuffer(value)),
147
- Int32Array: (value) => new Int32Array(reviveArrayBuffer(value)),
148
- Map: (value) => new Map(value),
149
- RegExp: (value) => new RegExp(value.source, value.flags),
150
- // O11y-specific revivers (streams, step functions → display objects).
151
- // Spread FIRST so CLI-specific overrides below take precedence.
152
- ...observabilityRevivers,
153
220
  // CLI-specific overrides for class instances with inspect.custom
154
221
  Class: (value) => `<class:${extractClassName(value.classId)}>`,
155
222
  Instance: (value) => {
@@ -160,13 +227,6 @@ export function getCLIRevivers() {
160
227
  }
161
228
  return new CLIClassInstanceRef(extractClassName(value.classId), value.classId, value.data);
162
229
  },
163
- Set: (value) => new Set(value),
164
- URL: (value) => new URL(value),
165
- URLSearchParams: (value) => new URLSearchParams(value === '.' ? '' : value),
166
- Uint8Array: (value) => new Uint8Array(reviveArrayBuffer(value)),
167
- Uint8ClampedArray: (value) => new Uint8ClampedArray(reviveArrayBuffer(value)),
168
- Uint16Array: (value) => new Uint16Array(reviveArrayBuffer(value)),
169
- Uint32Array: (value) => new Uint32Array(reviveArrayBuffer(value)),
170
230
  };
171
231
  }
172
232
  // ---------------------------------------------------------------------------
@@ -212,13 +272,7 @@ async function maybeDecryptFields(resource, resolver) {
212
272
  // Decrypt eventData fields (Event)
213
273
  if (result.eventData && typeof result.eventData === 'object') {
214
274
  const eventData = { ...result.eventData };
215
- for (const field of [
216
- 'result',
217
- 'input',
218
- 'output',
219
- 'metadata',
220
- 'payload',
221
- ]) {
275
+ for (const field of getEventDataRefFields(result.eventType ?? '')) {
222
276
  eventData[field] = await maybeDecrypt(eventData[field], k);
223
277
  }
224
278
  result.eventData = eventData;
@@ -264,7 +318,8 @@ function replaceEncryptedAndExpiredWithRef(resource) {
264
318
  }
265
319
  if (result.eventData && typeof result.eventData === 'object') {
266
320
  const ed = { ...result.eventData };
267
- for (const key of ['result', 'input', 'output', 'metadata', 'payload']) {
321
+ const eventType = typeof result.eventType === 'string' ? result.eventType : '';
322
+ for (const key of getEventDataRefFields(eventType)) {
268
323
  ed[key] = toDisplayRef(ed[key]);
269
324
  }
270
325
  result.eventData = ed;
@@ -287,4 +342,4 @@ export async function hydrateResourceIO(resource, keyResolver) {
287
342
  // Post-process: swap encrypted Uint8Arrays and expired stubs for CLI-styled objects
288
343
  return replaceEncryptedAndExpiredWithRef(hydrated);
289
344
  }
290
- //# sourceMappingURL=hydration.js.map
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2h5ZHJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixJQUFJLHdCQUF3QixFQUM3QyxlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFDUixxQkFBcUIsRUFFckIsdUJBQXVCLEdBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVcxQixvREFBb0Q7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBRVgsZUFBZSxFQUVmLFVBQVUsR0FDWCxNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLDhFQUE4RTtBQUM5RSwyQ0FBMkM7QUFDM0MsOEVBQThFO0FBRTlFOzs7R0FHRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsZ0JBQWdCO0lBQ2hELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNkLE1BQWMsRUFDZCxPQUFtRDtRQUVuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztR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b250ZW50IjpbIi8qKlxuICogQ0xJLXNwZWNpZmljIGh5ZHJhdGlvbiBmb3IgbzExeSBkaXNwbGF5LlxuICpcbiAqIE5vZGUuanMgcmV2aXZlcnMgdGhhdCB1c2UgYEJ1ZmZlci5mcm9tKClgIGZvciBiYXNlNjQgZGVjb2RpbmcgYW5kIGFkZFxuICogYHV0aWwuaW5zcGVjdC5jdXN0b21gIHRvIENsYXNzSW5zdGFuY2VSZWYgZm9yIHByZXR0eSBDTEkgb3V0cHV0LlxuICovXG5cbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uUmV2aXZlcnMsIG1heWJlRGVjcnlwdCB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgZXh0cmFjdENsYXNzTmFtZSxcbiAgaHlkcmF0ZVJlc291cmNlSU8gYXMgaHlkcmF0ZVJlc291cmNlSU9HZW5lcmljLFxuICBpc0VuY3J5cHRlZERhdGEsXG4gIGlzRXhwaXJlZFN0dWIsXG4gIGlzUnVuUmVmLFxuICBvYnNlcnZhYmlsaXR5UmV2aXZlcnMsXG4gIHR5cGUgUmV2aXZlcnMsXG4gIHNlcmlhbGl6ZWRJbnN0YW5jZVRvUmVmLFxufSBmcm9tICdAd29ya2Zsb3cvY29yZS9zZXJpYWxpemF0aW9uLWZvcm1hdCc7XG5pbXBvcnQgeyBwYXJzZUNsYXNzTmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB7IGdldEV2ZW50RGF0YVJlZkZpZWxkcyB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyBhbiBlbmNyeXB0aW9uIGtleSBmb3IgYSBydW4sIG9yIG51bGwgdG8gc2tpcFxuICogZGVjcnlwdGlvbi4gQWNjZXB0cyBhIHJ1bklkIOKAlCB0aGUgcmVzb2x2ZXIgaXMgcmVzcG9uc2libGUgZm9yIGxvb2tpbmdcbiAqIHVwIHRoZSBXb3JrZmxvd1J1biBpbnRlcm5hbGx5ICh3aXRoIGNhY2hpbmcpIGlmIHRoZSBXb3JsZCBuZWVkcyBpdC5cbiAqL1xuZXhwb3J0IHR5cGUgRW5jcnlwdGlvbktleVJlc29sdmVyID1cbiAgfCAoKHJ1bklkOiBzdHJpbmcpID0+IFByb21pc2U8VWludDhBcnJheSB8IHVuZGVmaW5lZD4pXG4gIHwgbnVsbDtcblxuLy8gUmUtZXhwb3J0IHR5cGVzIGFuZCB1dGlsaXRpZXMgdGhhdCBjb25zdW1lcnMgbmVlZFxuZXhwb3J0IHtcbiAgQ0xBU1NfSU5TVEFOQ0VfUkVGX1RZUEUsXG4gIENsYXNzSW5zdGFuY2VSZWYsXG4gIEVOQ1JZUFRFRF9QTEFDRUhPTERFUixcbiAgZXh0cmFjdFN0cmVhbUlkcyxcbiAgaXNDbGFzc0luc3RhbmNlUmVmLFxuICBpc0VuY3J5cHRlZERhdGEsXG4gIGlzU3RyZWFtSWQsXG4gIGlzU3RyZWFtUmVmLFxuICB0eXBlIFJldml2ZXJzLFxuICBTVFJFQU1fUkVGX1RZUEUsXG4gIHR5cGUgU3RyZWFtUmVmLFxuICB0cnVuY2F0ZUlkLFxufSBmcm9tICdAd29ya2Zsb3cvY29yZS9zZXJpYWxpemF0aW9uLWZvcm1hdCc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ0xJIENsYXNzSW5zdGFuY2VSZWYgd2l0aCBpbnNwZWN0LmN1c3RvbVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXh0ZW5kZWQgQ2xhc3NJbnN0YW5jZVJlZiB3aXRoIE5vZGUuanMgYHV0aWwuaW5zcGVjdC5jdXN0b21gIGZvclxuICogcHJldHR5IENMSSBvdXRwdXQ6IGBDbGFzc05hbWVAZmlsZW5hbWUgeyAuLi5kYXRhIH1gXG4gKi9cbmNsYXNzIENMSUNsYXNzSW5zdGFuY2VSZWYgZXh0ZW5kcyBDbGFzc0luc3RhbmNlUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXShcbiAgICBfZGVwdGg6IG51bWJlcixcbiAgICBvcHRpb25zOiBpbXBvcnQoJ25vZGU6dXRpbCcpLkluc3BlY3RPcHRpb25zU3R5bGl6ZWRcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRhU3RyID0gaW5zcGVjdCh0aGlzLmRhdGEsIHsgLi4ub3B0aW9ucywgZGVwdGg6IG9wdGlvbnMuZGVwdGggfSk7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VDbGFzc05hbWUodGhpcy5jbGFzc0lkKTtcbiAgICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBwYXJzZWQ/Lm1vZHVsZVNwZWNpZmllciA/PyB0aGlzLmNsYXNzSWQ7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBtb2R1bGVTcGVjaWZpZXIuc3BsaXQoJy8nKS5wb3AoKSA/PyBtb2R1bGVTcGVjaWZpZXI7XG4gICAgY29uc3Qgc3R5bGVkRmlsZU5hbWUgPSBvcHRpb25zLnN0eWxpemVcbiAgICAgID8gb3B0aW9ucy5zdHlsaXplKGBAJHtmaWxlTmFtZX1gLCAndW5kZWZpbmVkJylcbiAgICAgIDogYEAke2ZpbGVOYW1lfWA7XG4gICAgcmV0dXJuIGAke3RoaXMuY2xhc3NOYW1lfSR7c3R5bGVkRmlsZU5hbWV9ICR7ZGF0YVN0cn1gO1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ0xJIGVuY3J5cHRlZCBkYXRhIHBsYWNlaG9sZGVyIHdpdGggY3VzdG9tIGluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIG9iamVjdCBmb3IgZW5jcnlwdGVkIGRhdGEgZmllbGRzIGluIENMSSBvdXRwdXQuXG4gKlxuICogVXNlcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gcmVuZGVyIGFzIGEgc3R5bGVkLCB1bnF1b3RlZCBzdHJpbmdcbiAqIChlLmcuLCBkaW0geWVsbG93IFwi8J+UkiBFbmNyeXB0ZWRcIikgaW5zdGVhZCBvZiBhIHBsYWluIHF1b3RlZCBzdHJpbmcuXG4gKiBBbHNvIHByb3ZpZGVzIGB0b0pTT04oKWAgZm9yIGAtLWpzb25gIG91dHB1dC5cbiAqL1xuY2xhc3MgRW5jcnlwdGVkRGF0YVJlZiB7XG4gIFtpbnNwZWN0LmN1c3RvbV0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2hhbGsuZGltLnllbGxvdygnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1xcdXsxRjUxMn0gRW5jcnlwdGVkJztcbiAgfVxufVxuXG4vKiogU2luZ2xldG9uIGVuY3J5cHRlZCBkYXRhIHBsYWNlaG9sZGVyIGZvciBDTEkgZGlzcGxheSAqL1xuY29uc3QgRU5DUllQVEVEX1JFRiA9IG5ldyBFbmNyeXB0ZWREYXRhUmVmKCk7XG5cbi8qKiBDaGVjayBpZiBhIHZhbHVlIGlzIGFuIEVuY3J5cHRlZERhdGFSZWYgKGZvciBjdXN0b20gdGFibGUgZm9ybWF0dGluZyBpbiBDTEkpICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbmNyeXB0ZWRSZWYodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFbmNyeXB0ZWREYXRhUmVmIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRW5jcnlwdGVkRGF0YVJlZjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgZXhwaXJlZCBkYXRhIHBsYWNlaG9sZGVyIHdpdGggY3VzdG9tIGluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIG9iamVjdCBmb3IgZXhwaXJlZCBkYXRhIGZpZWxkcyBpbiBDTEkgb3V0cHV0LlxuICpcbiAqIFVzZXMgYHV0aWwuaW5zcGVjdC5jdXN0b21gIHRvIHJlbmRlciBhcyBhIHN0eWxlZCwgdW5xdW90ZWQgc3RyaW5nXG4gKiAoZS5nLiwgZGltIGdyYXkgXCI8ZGF0YSBleHBpcmVkPlwiKSBpbnN0ZWFkIG9mIGEgcmF3IHN0dWIgb2JqZWN0LlxuICogQWxzbyBwcm92aWRlcyBgdG9KU09OKClgIGZvciBgLS1qc29uYCBvdXRwdXQuXG4gKi9cbmNsYXNzIEV4cGlyZWREYXRhUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjaGFsay5ncmF5KCc8ZGF0YSBleHBpcmVkPicpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICc8ZGF0YSBleHBpcmVkPic7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnPGRhdGEgZXhwaXJlZD4nO1xuICB9XG59XG5cbi8qKiBTaW5nbGV0b24gZXhwaXJlZCBkYXRhIHBsYWNlaG9sZGVyIGZvciBDTEkgZGlzcGxheSAqL1xuY29uc3QgRVhQSVJFRF9SRUYgPSBuZXcgRXhwaXJlZERhdGFSZWYoKTtcblxuLyoqIENoZWNrIGlmIGEgdmFsdWUgaXMgYW4gRXhwaXJlZERhdGFSZWYgKGZvciBjdXN0b20gdGFibGUgZm9ybWF0dGluZyBpbiBDTEkpICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBpcmVkUmVmKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRXhwaXJlZERhdGFSZWYge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFeHBpcmVkRGF0YVJlZjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgcmV2aXZlcnMgKE5vZGUuanMsIHVzZXMgQnVmZmVyKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogVGhlIHNldCBvZiByZWR1Y2VyIGtleXMgd2hvc2UgYGdldENvbW1vblJldml2ZXJzKClgIG91dHB1dCBwcm9kdWNlcyBhXG4gKiBuYXRpdmUgYEVycm9yYCBpbnN0YW5jZS4gV2Ugd3JhcCBlYWNoIG9mIHRoZXNlIHdpdGggYW4gYWRkaXRpb25hbFxuICogYHRvSlNPTmAgYXR0YWNobWVudCBpbiBDTEkgbW9kZSAoc2VlIGB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTmApLlxuICovXG5jb25zdCBFUlJPUl9SRVZJVkVSX0tFWVMgPSBbXG4gICdBZ2dyZWdhdGVFcnJvcicsXG4gICdET01FeGNlcHRpb24nLFxuICAnRXJyb3InLFxuICAnRXZhbEVycm9yJyxcbiAgJ0ZhdGFsRXJyb3InLFxuICAnSG9va0NvbmZsaWN0RXJyb3InLFxuICAnUmFuZ2VFcnJvcicsXG4gICdSZWZlcmVuY2VFcnJvcicsXG4gICdSZXRyeWFibGVFcnJvcicsXG4gICdSdW50aW1lRGVjcnlwdGlvbkVycm9yJyxcbiAgJ1N5bnRheEVycm9yJyxcbiAgJ1R5cGVFcnJvcicsXG4gICdVUklFcnJvcicsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIFdyYXBzIGEgcnVudGltZSBFcnJvciByZXZpdmVyIHNvIHRoYXQgdGhlIHByb2R1Y2VkIGluc3RhbmNlIGNhcnJpZXMgYVxuICogbm9uLWVudW1lcmFibGUgYHRvSlNPTmAgbWV0aG9kLiBUaGUgcnVudGltZSByZXZpdmVycyByZXR1cm4gcmVhbCBgRXJyb3JgXG4gKiBpbnN0YW5jZXMgKGdvb2QgZm9yIGB1dGlsLmluc3BlY3RgLCBgaW5zdGFuY2VvZmAsIGB0b1N0cmluZ2AsIGV0Yy4pLCBidXRcbiAqIGBFcnJvci5wcm90b3R5cGVgJ3MgYG5hbWVgIC8gYG1lc3NhZ2VgIC8gYHN0YWNrYCAvIGBjYXVzZWAgYXJlXG4gKiBub24tZW51bWVyYWJsZSBhbmQgd291bGQgYmUgZHJvcHBlZCBieSBgSlNPTi5zdHJpbmdpZnlgIOKAlCB3aGljaCBpcyBob3dcbiAqIHRoZSBDTEkgZW1pdHMgaXRzIGAtLWpzb25gIG91dHB1dC4gQWRkaW5nIGB0b0pTT05gICh3aGljaCBgSlNPTi5zdHJpbmdpZnlgXG4gKiBjYWxscyBidXQgYHV0aWwuaW5zcGVjdGAgaWdub3JlcykgZ2l2ZXMgdXMgdGhlIGJlc3Qgb2YgYm90aCB3b3JsZHM6XG4gKiByb3VuZC10cmlwcGVkIGVycm9ycyByZW5kZXIgY2xlYW5seSBpbiBib3RoIG1vZGVzIHdpdGhvdXQgdGhlXG4gKiBkYXRhLXZlcnN1cy1kaXNwbGF5IHRyYWRlb2ZmIHRoYXQgcGxhaW4tb2JqZWN0IHJldml2ZXJzIHdvdWxkIGZvcmNlLlxuICpcbiAqIFN1YmNsYXNzLXNwZWNpZmljIGVudW1lcmFibGUgZmllbGRzIChlLmcuIGBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyYCxcbiAqIGBBZ2dyZWdhdGVFcnJvci5lcnJvcnNgLCBgRmF0YWxFcnJvci5mYXRhbGApIGFyZSBwaWNrZWQgdXAgYXV0b21hdGljYWxseVxuICogdmlhIGBPYmplY3QuYXNzaWduYCBhZnRlciB0aGUgYmFzZSBmaWVsZHMsIHNvIHdlIGRvbid0IGhhdmUgdG8gZW51bWVyYXRlXG4gKiB0aGVtIHBlci1zdWJjbGFzcy5cbiAqL1xuZnVuY3Rpb24gd3JhcEVycm9yUmV2aXZlcldpdGhUb0pTT04oXG4gIHJldml2ZXI6ICh2YWx1ZTogYW55KSA9PiB1bmtub3duXG4pOiAodmFsdWU6IGFueSkgPT4gdW5rbm93biB7XG4gIHJldHVybiAodmFsdWUpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSByZXZpdmVyKHZhbHVlKTtcbiAgICBpZiAoIShyZXN1bHQgaW5zdGFuY2VvZiBFcnJvcikpIHJldHVybiByZXN1bHQ7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwgJ3RvSlNPTicsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiAodGhpczogRXJyb3IpIHtcbiAgICAgICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCdjYXVzZScgaW4gdGhpcykge1xuICAgICAgICAgIGpzb24uY2F1c2UgPSAodGhpcyBhcyB7IGNhdXNlOiB1bmtub3duIH0pLmNhdXNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFBpY2sgdXAgc3ViY2xhc3Mtc3BlY2lmaWMgZW51bWVyYWJsZSBmaWVsZHMgKGUuZy4gRmF0YWxFcnJvci5mYXRhbCxcbiAgICAgICAgLy8gUmV0cnlhYmxlRXJyb3IucmV0cnlBZnRlciwgQWdncmVnYXRlRXJyb3IuZXJyb3JzKS5cbiAgICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCB0aGlzKTtcbiAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG4vKipcbiAqIFRoZSBzZXQgb2YgcmV2aXZlcnMgdXNlZCBieSBDTEkgaW5zcGVjdCBvdXRwdXQuXG4gKlxuICogQnVpbHQgb24gdG9wIG9mIGBnZXRDb21tb25SZXZpdmVycygpYCBmcm9tIGBAd29ya2Zsb3cvY29yZWAgc28gdGhhdCB0aGVcbiAqIENMSSBzdGF5cyBpbiBzeW5jIHdpdGggdGhlIHJ1bnRpbWUncyByZXZpdmVyIHNldCBhdXRvbWF0aWNhbGx5LiBXaXRob3V0XG4gKiB0aGlzLCBldmVyeSBuZXcgcmV2aXZlciBhZGRlZCB0byBjb3JlIChlLmcuIGBGYXRhbEVycm9yYCxcbiAqIGBSZXRyeWFibGVFcnJvcmAsIHRoZSBidWlsdC1pbiBgRXJyb3JgIHN1YmNsYXNzZXMpIHdvdWxkIHNpbGVudGx5XG4gKiBkaXNhcHBlYXIgZnJvbSBDTEkgb3V0cHV0OiBkZXZhbHVlIHRocm93cyBcIlVua25vd24gdHlwZSBYXCIgZm9yXG4gKiB1bnJlY29nbml6ZWQgcmVkdWNlZCB0eXBlcywgYW5kIGBoeWRyYXRlUmVzb3VyY2VJT2Agc3dhbGxvd3MgdGhhdCBlcnJvclxuICogYW5kIHN1cmZhY2VzIHRoZSByYXcgYFVpbnQ4QXJyYXlgIHBheWxvYWQgdG8gY29uc3VtZXJzIOKAlCB3aGljaCB0aGVuXG4gKiBzaG93cyB1cCBhcyBgc3RlcC5lcnJvcmAgLyBgcnVuLmVycm9yYCBieXRlIGR1bXBzIGluc3RlYWQgb2YgdXNhYmxlXG4gKiBgeyBtZXNzYWdlLCBzdGFjaywg4oCmIH1gIG9iamVjdHMuXG4gKlxuICogT24gdG9wIG9mIHRoZSBjb21tb24gc2V0IHdlIGxheWVyOlxuICogICAtIEEgYHRvSlNPTmAgc2hpbSBvbiBlYWNoIEVycm9yIHJldml2ZXIgc28gbm9uLWVudW1lcmFibGVcbiAqICAgICBgRXJyb3IucHJvdG90eXBlYCBmaWVsZHMgc3Vydml2ZSBgSlNPTi5zdHJpbmdpZnlgIGZvciBgLS1qc29uYCBvdXRwdXRcbiAqICAgICB3aGlsZSBsZWF2aW5nIGB1dGlsLmluc3BlY3RgIHJlbmRlcmluZyB1bnRvdWNoZWRcbiAqICAgLSBgb2JzZXJ2YWJpbGl0eVJldml2ZXJzYCBmb3Igc3RyZWFtcyAvIHN0ZXArd29ya2Zsb3cgZnVuY3Rpb24gcmVmc1xuICogICAtIENMSS1zcGVjaWZpYyBvdmVycmlkZXMgdGhhdCBwcm9kdWNlIGRpc3BsYXktZnJpZW5kbHkgcGxhY2Vob2xkZXJzXG4gKiAgICAgZm9yIGBDbGFzc2AgLyBgSW5zdGFuY2VgICh0aGUgcnVudGltZSB2ZXJzaW9ucyBuZWVkIGZ1bGwgY2xhc3NcbiAqICAgICBpZGVudGl0eSB3aGljaCB0aGUgQ0xJIGRvZXNuJ3QgaGF2ZSBhY2Nlc3MgdG8pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDTElSZXZpdmVycygpOiBSZXZpdmVycyB7XG4gIGNvbnN0IGJhc2VSZXZpdmVycyA9IGdldENvbW1vblJldml2ZXJzKGdsb2JhbFRoaXMpO1xuICBjb25zdCBlcnJvclJldml2ZXJzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIEVSUk9SX1JFVklWRVJfS0VZUy5mbGF0TWFwKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHJldml2ZXIgPSAoYmFzZVJldml2ZXJzIGFzIFJldml2ZXJzKVtrZXldO1xuICAgICAgcmV0dXJuIHJldml2ZXIgPyBbW2tleSwgd3JhcEVycm9yUmV2aXZlcldpdGhUb0pTT04ocmV2aXZlcildXSA6IFtdO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZVJldml2ZXJzLFxuICAgIC4uLmVycm9yUmV2aXZlcnMsXG4gICAgLy8gTzExeS1zcGVjaWZpYyByZXZpdmVycyAoc3RyZWFtcywgc3RlcCBmdW5jdGlvbnMg4oaSIGRpc3BsYXkgb2JqZWN0cykuXG4gICAgLi4ub2JzZXJ2YWJpbGl0eVJldml2ZXJzLFxuICAgIC8vIE5vZGUgYFJlcXVlc3RgIC8gYFJlc3BvbnNlYCByZXZpdmVycyB0aGF0IGRvbid0IHJlbHkgb24gcnVubmluZyBhblxuICAgIC8vIGFjdHVhbCBmZXRjaCBoYW5kbGVyIOKAlCB1c2VkIHRvIHJlbmRlciByZXF1ZXN0L3Jlc3BvbnNlIElPIGlubGluZS5cbiAgICBSZXF1ZXN0OiAodmFsdWUpID0+IHtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvdXNlQXJyb3dGdW5jdGlvbjogYXJyb3cgZnVuY3Rpb25zIGhhdmUgbm8gLnByb3RvdHlwZVxuICAgICAgY29uc3QgY3RvciA9IHsgUmVxdWVzdDogZnVuY3Rpb24gKCkge30gfS5SZXF1ZXN0ITtcbiAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHtcbiAgICAgICAgbWV0aG9kOiB2YWx1ZS5tZXRob2QsXG4gICAgICAgIHVybDogdmFsdWUudXJsLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh2YWx1ZS5oZWFkZXJzKSxcbiAgICAgICAgYm9keTogdmFsdWUuYm9keSxcbiAgICAgICAgZHVwbGV4OiB2YWx1ZS5kdXBsZXgsXG4gICAgICAgIC4uLih2YWx1ZS5yZXNwb25zZVdyaXRhYmxlXG4gICAgICAgICAgPyB7IHJlc3BvbnNlV3JpdGFibGU6IHZhbHVlLnJlc3BvbnNlV3JpdGFibGUgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAgUmVzcG9uc2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS91c2VBcnJvd0Z1bmN0aW9uOiBhcnJvdyBmdW5jdGlvbnMgaGF2ZSBubyAucHJvdG90eXBlXG4gICAgICBjb25zdCBjdG9yID0geyBSZXNwb25zZTogZnVuY3Rpb24gKCkge30gfS5SZXNwb25zZSE7XG4gICAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKGN0b3IucHJvdG90eXBlKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCB7XG4gICAgICAgIHN0YXR1czogdmFsdWUuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiB2YWx1ZS5zdGF0dXNUZXh0LFxuICAgICAgICB1cmw6IHZhbHVlLnVybCxcbiAgICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnModmFsdWUuaGVhZGVycyksXG4gICAgICAgIGJvZHk6IHZhbHVlLmJvZHksXG4gICAgICAgIHJlZGlyZWN0ZWQ6IHZhbHVlLnJlZGlyZWN0ZWQsXG4gICAgICAgIHR5cGU6IHZhbHVlLnR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBDTEktc3BlY2lmaWMgb3ZlcnJpZGVzIGZvciBjbGFzcyBpbnN0YW5jZXMgd2l0aCBpbnNwZWN0LmN1c3RvbVxuICAgIENsYXNzOiAodmFsdWUpID0+IGA8Y2xhc3M6JHtleHRyYWN0Q2xhc3NOYW1lKHZhbHVlLmNsYXNzSWQpfT5gLFxuICAgIEluc3RhbmNlOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIFJ1biBpbnN0YW5jZXMgYXJlIHJlbmRlcmVkIGFzIFJ1blJlZiBmb3IgY2xpY2thYmxlIHJlbmRlcmluZ1xuICAgICAgY29uc3QgcnVuUmVmID0gc2VyaWFsaXplZEluc3RhbmNlVG9SZWYodmFsdWUpO1xuICAgICAgaWYgKGlzUnVuUmVmKHJ1blJlZikpIHtcbiAgICAgICAgcmV0dXJuIHJ1blJlZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQ0xJQ2xhc3NJbnN0YW5jZVJlZihcbiAgICAgICAgZXh0cmFjdENsYXNzTmFtZSh2YWx1ZS5jbGFzc0lkKSxcbiAgICAgICAgdmFsdWUuY2xhc3NJZCxcbiAgICAgICAgdmFsdWUuZGF0YVxuICAgICAgKTtcbiAgICB9LFxuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFByZS1idWlsdCBDTEkgcmV2aXZlcnMgKGNhY2hlZClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5sZXQgY2FjaGVkUmV2aXZlcnM6IFJldml2ZXJzIHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldFJldml2ZXJzKCk6IFJldml2ZXJzIHtcbiAgaWYgKCFjYWNoZWRSZXZpdmVycykge1xuICAgIGNhY2hlZFJldml2ZXJzID0gZ2V0Q0xJUmV2aXZlcnMoKTtcbiAgfVxuICByZXR1cm4gY2FjaGVkUmV2aXZlcnM7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGVjcnlwdGlvbiBoZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBQcmUtcHJvY2VzcyBhIHJlc291cmNlJ3MgZGF0YSBmaWVsZHM6IGlmIHRoZSByZXNvbHZlciBpcyBwcm92aWRlZCBhbmRcbiAqIHRoZSBmaWVsZCBpcyBlbmNyeXB0ZWQsIGRlY3J5cHQgaXQgYmVmb3JlIGdlbmVyaWMgaHlkcmF0aW9uLlxuICpcbiAqIFVzZXMgY29yZSdzIGBtYXliZURlY3J5cHQoKWAgd2hpY2ggaGFuZGxlcyB0aGUgJ2VuY3InIHByZWZpeCBzdHJpcHBpbmdcbiAqIGFuZCBBRVMtR0NNIGRlY3J5cHRpb24gdHJhbnNwYXJlbnRseS5cbiAqXG4gKiBXaGVuIHRoZSByZXNvbHZlciBpcyBudWxsIChubyAtLWRlY3J5cHQgZmxhZyksIGVuY3J5cHRlZCBmaWVsZHMgcGFzc1xuICogdGhyb3VnaCBhcyBVaW50OEFycmF5IGFuZCBhcmUgcmVwbGFjZWQgd2l0aCBFbmNyeXB0ZWREYXRhUmVmIGluIHBvc3QtcHJvY2Vzc2luZy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWF5YmVEZWNyeXB0RmllbGRzPFxuICBUIGV4dGVuZHMge1xuICAgIHJ1bklkPzogc3RyaW5nO1xuICAgIGlucHV0PzogYW55O1xuICAgIG91dHB1dD86IGFueTtcbiAgICBtZXRhZGF0YT86IGFueTtcbiAgICBldmVudFR5cGU/OiBzdHJpbmc7XG4gICAgZXZlbnREYXRhPzogYW55O1xuICB9LFxuPihyZXNvdXJjZTogVCwgcmVzb2x2ZXI6IEVuY3J5cHRpb25LZXlSZXNvbHZlcik6IFByb21pc2U8VD4ge1xuICBpZiAoIXJlc29sdmVyKSByZXR1cm4gcmVzb3VyY2U7XG5cbiAgY29uc3QgcnVuSWQgPSAocmVzb3VyY2UgYXMgYW55KS5ydW5JZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICghcnVuSWQpIHJldHVybiByZXNvdXJjZTtcblxuICBjb25zdCByZXN1bHQgPSB7IC4uLnJlc291cmNlIH07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByYXdLZXkgPSBhd2FpdCByZXNvbHZlcihydW5JZCk7XG4gICAgY29uc3QgeyBpbXBvcnRLZXkgfSA9IGF3YWl0IGltcG9ydCgnQHdvcmtmbG93L2NvcmUvZW5jcnlwdGlvbicpO1xuICAgIGNvbnN0IGsgPSByYXdLZXkgPyBhd2FpdCBpbXBvcnRLZXkocmF3S2V5KSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIERlY3J5cHQgaW5wdXQvb3V0cHV0L2Vycm9yIGZpZWxkcyAoV29ya2Zsb3dSdW4sIFN0ZXApXG4gICAgcmVzdWx0LmlucHV0ID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5pbnB1dCwgayk7XG4gICAgcmVzdWx0Lm91dHB1dCA9IGF3YWl0IG1heWJlRGVjcnlwdChyZXN1bHQub3V0cHV0LCBrKTtcbiAgICAocmVzdWx0IGFzIGFueSkuZXJyb3IgPSBhd2FpdCBtYXliZURlY3J5cHQoKHJlc3VsdCBhcyBhbnkpLmVycm9yLCBrKTtcblxuICAgIC8vIERlY3J5cHQgbWV0YWRhdGEgZmllbGQgKEhvb2spXG4gICAgcmVzdWx0Lm1ldGFkYXRhID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5tZXRhZGF0YSwgayk7XG5cbiAgICAvLyBEZWNyeXB0IGV2ZW50RGF0YSBmaWVsZHMgKEV2ZW50KVxuICAgIGlmIChyZXN1bHQuZXZlbnREYXRhICYmIHR5cGVvZiByZXN1bHQuZXZlbnREYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgZXZlbnREYXRhID0geyAuLi5yZXN1bHQuZXZlbnREYXRhIH07XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGdldEV2ZW50RGF0YVJlZkZpZWxkcyhyZXN1bHQuZXZlbnRUeXBlID8/ICcnKSkge1xuICAgICAgICBldmVudERhdGFbZmllbGRdID0gYXdhaXQgbWF5YmVEZWNyeXB0KGV2ZW50RGF0YVtmaWVsZF0sIGspO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmV2ZW50RGF0YSA9IGV2ZW50RGF0YTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cbiAgICAvLyBJZiB0aGUga2V5IGZldGNoIGZhaWxlZCBkdWUgdG8gYW4gSFRUUCBlcnJvciAoZS5nLiA0MjkgcmF0ZSBsaW1pdCxcbiAgICAvLyA1MDAgc2VydmVyIGVycm9yKSwgcmUtdGhyb3cgc28gdGhlIGNhbGxlciBzdXJmYWNlcyBhIGNsZWFyIGZhaWx1cmVcbiAgICAvLyBpbnN0ZWFkIG9mIHNpbGVudGx5IHNob3dpbmcgZW5jcnlwdGVkIHBsYWNlaG9sZGVycy5cbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnSFRUUCAnKSkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIC8vIERlY3J5cHRpb24gZmFpbGVkIChiYWQga2V5LCBjb3JydXB0ZWQgY2lwaGVydGV4dCwgZXRjLikg4oCUIGZhbGwgYmFja1xuICAgIC8vIHRvIHNob3dpbmcgZW5jcnlwdGVkIHBsYWNlaG9sZGVycyBpbnN0ZWFkIG9mIGNyYXNoaW5nIHRoZSBDTEkuXG4gICAgY29uc3QgeyBsb2dnZXIgfSA9IGF3YWl0IGltcG9ydCgnLi4vY29uZmlnL2xvZy5qcycpO1xuICAgIGxvZ2dlci53YXJuKGBEZWNyeXB0aW9uIGZhaWxlZCBmb3IgcmVzb3VyY2UgJHtydW5JZH06ICR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHVibGljIEFQSVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBSZXBsYWNlIGEgc2luZ2xlIGZpZWxkIHZhbHVlIHdpdGggYSBkaXNwbGF5IHJlZiBpZiBpdCdzIGVuY3J5cHRlZCBvciBleHBpcmVkLiAqL1xuZnVuY3Rpb24gdG9EaXNwbGF5UmVmKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmIChpc0VuY3J5cHRlZERhdGEodmFsdWUpKSByZXR1cm4gRU5DUllQVEVEX1JFRjtcbiAgaWYgKGlzRXhwaXJlZFN0dWIodmFsdWUpKSByZXR1cm4gRVhQSVJFRF9SRUY7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGVuY3J5cHRlZCBVaW50OEFycmF5IHZhbHVlcyBhbmQgZXhwaXJlZCBzdHVicyB3aXRoIHN0eWxlZFxuICogcmVmIG9iamVjdHMgaW4ga25vd24gZGF0YSBmaWVsZHMgZm9yIGN1c3RvbSBpbnNwZWN0IHJlbmRlcmluZy5cbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUVuY3J5cHRlZEFuZEV4cGlyZWRXaXRoUmVmPFQ+KHJlc291cmNlOiBUKTogVCB7XG4gIGlmICghcmVzb3VyY2UgfHwgdHlwZW9mIHJlc291cmNlICE9PSAnb2JqZWN0JykgcmV0dXJuIHJlc291cmNlO1xuICBjb25zdCByID0gcmVzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uciB9O1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIFsnaW5wdXQnLCAnb3V0cHV0JywgJ21ldGFkYXRhJywgJ2Vycm9yJ10pIHtcbiAgICByZXN1bHRba2V5XSA9IHRvRGlzcGxheVJlZihyZXN1bHRba2V5XSk7XG4gIH1cblxuICBpZiAocmVzdWx0LmV2ZW50RGF0YSAmJiB0eXBlb2YgcmVzdWx0LmV2ZW50RGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBlZCA9IHsgLi4uKHJlc3VsdC5ldmVudERhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG4gICAgY29uc3QgZXZlbnRUeXBlID1cbiAgICAgIHR5cGVvZiByZXN1bHQuZXZlbnRUeXBlID09PSAnc3RyaW5nJyA/IHJlc3VsdC5ldmVudFR5cGUgOiAnJztcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBnZXRFdmVudERhdGFSZWZGaWVsZHMoZXZlbnRUeXBlKSkge1xuICAgICAgZWRba2V5XSA9IHRvRGlzcGxheVJlZihlZFtrZXldKTtcbiAgICB9XG4gICAgcmVzdWx0LmV2ZW50RGF0YSA9IGVkO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBUO1xufVxuXG4vKipcbiAqIEh5ZHJhdGUgdGhlIHNlcmlhbGl6ZWQgZGF0YSBmaWVsZHMgb2YgYSByZXNvdXJjZSBmb3IgQ0xJIGRpc3BsYXkuXG4gKlxuICogV2hlbiBgZW5jcnlwdG9yUmVzb2x2ZXJgIGlzIG51bGwgKGRlZmF1bHQgLyBubyAtLWRlY3J5cHQgZmxhZyksIGVuY3J5cHRlZFxuICogZmllbGRzIGFyZSBzaG93biBhcyBzdHlsZWQgXCLwn5SSIEVuY3J5cHRlZFwiIHBsYWNlaG9sZGVycyB2aWEgRW5jcnlwdGVkRGF0YVJlZi5cbiAqXG4gKiBXaGVuIGBlbmNyeXB0b3JSZXNvbHZlcmAgaXMgcHJvdmlkZWQgKC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkIGZpZWxkc1xuICogYXJlIGRlY3J5cHRlZCBiZWZvcmUgaHlkcmF0aW9uIHNvIHRoZSBhY3R1YWwgdXNlciBkYXRhIGlzIGRpc3BsYXllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVSZXNvdXJjZUlPPFQ+KFxuICByZXNvdXJjZTogVCxcbiAga2V5UmVzb2x2ZXI/OiBFbmNyeXB0aW9uS2V5UmVzb2x2ZXJcbik6IFByb21pc2U8VD4ge1xuICAvLyBQcmUtcHJvY2VzczogZGVjcnlwdCBhbnkgZW5jcnlwdGVkIGZpZWxkcyB3aGVuIGEgcmVzb2x2ZXIgaXMgcHJvdmlkZWRcbiAgY29uc3QgcHJlcHJvY2Vzc2VkID0gYXdhaXQgbWF5YmVEZWNyeXB0RmllbGRzKFxuICAgIHJlc291cmNlIGFzIGFueSxcbiAgICBrZXlSZXNvbHZlciA/PyBudWxsXG4gICk7XG4gIGNvbnN0IGh5ZHJhdGVkID0gaHlkcmF0ZVJlc291cmNlSU9HZW5lcmljKHByZXByb2Nlc3NlZCwgZ2V0UmV2aXZlcnMoKSkgYXMgVDtcbiAgLy8gUG9zdC1wcm9jZXNzOiBzd2FwIGVuY3J5cHRlZCBVaW50OEFycmF5cyBhbmQgZXhwaXJlZCBzdHVicyBmb3IgQ0xJLXN0eWxlZCBvYmplY3RzXG4gIHJldHVybiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhSZWYoaHlkcmF0ZWQpO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hydration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydration.test.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/hydration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { importKey } from '@workflow/core/encryption';
2
+ import { dehydrateStepError } from '@workflow/core/serialization';
3
+ import { describe, expect, it } from 'vitest';
4
+ import { hydrateResourceIO, isEncryptedRef } from './hydration.js';
5
+ describe('hydrateResourceIO', () => {
6
+ it('displays and decrypts encrypted event errors', async () => {
7
+ const rawKey = new Uint8Array(32).fill(7);
8
+ const error = new Error('step failed');
9
+ const encryptedError = await dehydrateStepError(error, 'run_1', await importKey(rawKey), [], globalThis, true);
10
+ const event = {
11
+ runId: 'run_1',
12
+ eventId: 'event_1',
13
+ eventType: 'step_failed',
14
+ eventData: { error: encryptedError },
15
+ };
16
+ const encrypted = await hydrateResourceIO(event);
17
+ expect(isEncryptedRef(encrypted.eventData.error)).toBe(true);
18
+ const decrypted = await hydrateResourceIO(event, async () => rawKey);
19
+ expect(decrypted.eventData.error).toBeInstanceOf(Error);
20
+ expect(decrypted.eventData.error).toHaveProperty('message', error.message);
21
+ });
22
+ });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvaHlkcmF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkUsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxFQUFFLENBQUMsOENBQThDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLE1BQU0sa0JBQWtCLENBQzdDLEtBQUssRUFDTCxPQUFPLEVBQ1AsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQ3ZCLEVBQUUsRUFDRixVQUFVLEVBQ1YsSUFBSSxDQUNMLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRztZQUNaLEtBQUssRUFBRSxPQUFPO1lBQ2QsT0FBTyxFQUFFLFNBQVM7WUFDbEIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtTQUNyQyxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0UsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGltcG9ydEtleSB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL2VuY3J5cHRpb24nO1xuaW1wb3J0IHsgZGVoeWRyYXRlU3RlcEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbic7XG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgeyBoeWRyYXRlUmVzb3VyY2VJTywgaXNFbmNyeXB0ZWRSZWYgfSBmcm9tICcuL2h5ZHJhdGlvbi5qcyc7XG5cbmRlc2NyaWJlKCdoeWRyYXRlUmVzb3VyY2VJTycsICgpID0+IHtcbiAgaXQoJ2Rpc3BsYXlzIGFuZCBkZWNyeXB0cyBlbmNyeXB0ZWQgZXZlbnQgZXJyb3JzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJhd0tleSA9IG5ldyBVaW50OEFycmF5KDMyKS5maWxsKDcpO1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdzdGVwIGZhaWxlZCcpO1xuICAgIGNvbnN0IGVuY3J5cHRlZEVycm9yID0gYXdhaXQgZGVoeWRyYXRlU3RlcEVycm9yKFxuICAgICAgZXJyb3IsXG4gICAgICAncnVuXzEnLFxuICAgICAgYXdhaXQgaW1wb3J0S2V5KHJhd0tleSksXG4gICAgICBbXSxcbiAgICAgIGdsb2JhbFRoaXMsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIHJ1bklkOiAncnVuXzEnLFxuICAgICAgZXZlbnRJZDogJ2V2ZW50XzEnLFxuICAgICAgZXZlbnRUeXBlOiAnc3RlcF9mYWlsZWQnLFxuICAgICAgZXZlbnREYXRhOiB7IGVycm9yOiBlbmNyeXB0ZWRFcnJvciB9LFxuICAgIH07XG5cbiAgICBjb25zdCBlbmNyeXB0ZWQgPSBhd2FpdCBoeWRyYXRlUmVzb3VyY2VJTyhldmVudCk7XG4gICAgZXhwZWN0KGlzRW5jcnlwdGVkUmVmKGVuY3J5cHRlZC5ldmVudERhdGEuZXJyb3IpKS50b0JlKHRydWUpO1xuXG4gICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgaHlkcmF0ZVJlc291cmNlSU8oZXZlbnQsIGFzeW5jICgpID0+IHJhd0tleSk7XG4gICAgZXhwZWN0KGRlY3J5cHRlZC5ldmVudERhdGEuZXJyb3IpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgICBleHBlY3QoZGVjcnlwdGVkLmV2ZW50RGF0YS5lcnJvcikudG9IYXZlUHJvcGVydHkoJ21lc3NhZ2UnLCBlcnJvci5tZXNzYWdlKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import type { WorkflowRun, WorkflowRunWithoutData, World } from '@workflow/world';
1
+ import { type WorkflowRun, type World } from '@workflow/world';
2
2
  import type { InspectCLIOptions } from '../config/types.js';
3
3
  import { getDisplaySettings } from './terminal-utils.js';
4
4
  export declare const formatTableValue: (prop: string, value: unknown, opts?: InspectCLIOptions, displaySettings?: ReturnType<typeof getDisplaySettings>, item?: Record<string, unknown>) => unknown;
@@ -8,7 +8,7 @@ export declare const formatTableValue: (prop: string, value: unknown, opts?: Ins
8
8
  */
9
9
  export declare const hasExpiredData: (run: WorkflowRun) => boolean;
10
10
  export declare const listRuns: (world: World, opts?: InspectCLIOptions) => Promise<void>;
11
- export declare const getRecentRun: (world: World, opts?: InspectCLIOptions) => Promise<WorkflowRunWithoutData>;
11
+ export declare const getRecentRun: (world: World, opts?: InspectCLIOptions) => Promise<import("@workflow/world").WorkflowRunWithoutData>;
12
12
  export declare const showRun: (world: World, runId: string, opts?: InspectCLIOptions) => Promise<void>;
13
13
  export declare const listSteps: (world: World, opts?: InspectCLIOptions) => Promise<void>;
14
14
  export declare const showStep: (world: World, stepId: string, opts?: InspectCLIOptions) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/output.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAOV,WAAW,EACX,sBAAsB,EACtB,KAAK,EACN,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAiC5D,OAAO,EAGL,kBAAkB,EAGnB,MAAM,qBAAqB,CAAC;AAuN7B,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,OAAM,iBAAsB,EAC5B,kBAAkB,UAAU,CAAC,OAAO,kBAAkB,CAAC,EACvD,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAsE/B,CAAC;AA8IF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,WAAW,KAAG,OAMjD,CAAC;AA4DF,eAAO,MAAM,QAAQ,GAAU,OAAO,KAAK,EAAE,OAAM,iBAAsB,kBA8ExE,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,OAAO,KAAK,EACZ,OAAM,iBAAsB,oCAoB7B,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,OAAO,KAAK,EACZ,OAAO,MAAM,EACb,OAAM,iBAAsB,kBA2B7B,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,OAAO,KAAK,EACZ,OAAM,iBAEL,kBA2FF,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,OAAM,iBAAsB,kBA+C7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,UAAU,MAAM,EAChB,OAAM,iBAAsB,kBA2C7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBAgD7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBA2F7B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,OAAO,KAAK,EAAE,OAAM,iBAAsB,kBAuFzE,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,OAAM,iBAAsB,kBA+B7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBAsH7B,CAAC"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/output.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,KAAK,EACX,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA0C5D,OAAO,EAGL,kBAAkB,EAGnB,MAAM,qBAAqB,CAAC;AAuO7B,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,OAAM,iBAAsB,EAC5B,kBAAkB,UAAU,CAAC,OAAO,kBAAkB,CAAC,EACvD,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAuE/B,CAAC;AAuJF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,WAAW,KAAG,OAMjD,CAAC;AA4EF,eAAO,MAAM,QAAQ,GAAU,OAAO,KAAK,EAAE,OAAM,iBAAsB,kBAyGxE,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,OAAO,KAAK,EACZ,OAAM,iBAAsB,8DAoB7B,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,OAAO,KAAK,EACZ,OAAO,MAAM,EACb,OAAM,iBAAsB,kBA2B7B,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,OAAO,KAAK,EACZ,OAAM,iBAEL,kBA2GF,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,OAAM,iBAAsB,kBA+C7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,UAAU,MAAM,EAChB,OAAM,iBAAsB,kBA2C7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBAgD7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBA0G7B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,OAAO,KAAK,EAAE,OAAM,iBAAsB,kBA6EzE,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,OAAM,iBAAsB,kBA+B7B,CAAC;AAqDF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBAmI7B,CAAC"}