@workflow/cli 5.0.0-beta.4 → 5.0.0-beta.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/base.js +1 -1
  2. package/dist/commands/build.js +1 -1
  3. package/dist/commands/cancel.d.ts +1 -0
  4. package/dist/commands/cancel.d.ts.map +1 -1
  5. package/dist/commands/cancel.js +36 -55
  6. package/dist/commands/dev.js +1 -1
  7. package/dist/commands/health.d.ts +1 -3
  8. package/dist/commands/health.d.ts.map +1 -1
  9. package/dist/commands/health.js +26 -50
  10. package/dist/commands/init.js +1 -1
  11. package/dist/commands/inspect.d.ts +4 -0
  12. package/dist/commands/inspect.d.ts.map +1 -1
  13. package/dist/commands/inspect.js +37 -7
  14. package/dist/commands/start.d.ts +1 -0
  15. package/dist/commands/start.d.ts.map +1 -1
  16. package/dist/commands/start.js +8 -3
  17. package/dist/commands/transform.js +1 -1
  18. package/dist/commands/validate.js +1 -1
  19. package/dist/commands/web.d.ts +2 -0
  20. package/dist/commands/web.d.ts.map +1 -1
  21. package/dist/commands/web.js +9 -3
  22. package/dist/lib/bulk-cancel.d.ts +74 -0
  23. package/dist/lib/bulk-cancel.d.ts.map +1 -0
  24. package/dist/lib/bulk-cancel.js +197 -0
  25. package/dist/lib/bulk-cancel.test.d.ts +2 -0
  26. package/dist/lib/bulk-cancel.test.d.ts.map +1 -0
  27. package/dist/lib/bulk-cancel.test.js +366 -0
  28. package/dist/lib/config/log.js +1 -1
  29. package/dist/lib/config/types.d.ts +6 -1
  30. package/dist/lib/config/types.d.ts.map +1 -1
  31. package/dist/lib/config/types.js +1 -1
  32. package/dist/lib/config/workflow-config.d.ts.map +1 -1
  33. package/dist/lib/config/workflow-config.js +2 -2
  34. package/dist/lib/inspect/auth.js +1 -1
  35. package/dist/lib/inspect/env.d.ts +1 -1
  36. package/dist/lib/inspect/env.js +2 -2
  37. package/dist/lib/inspect/errors.d.ts +3 -0
  38. package/dist/lib/inspect/errors.d.ts.map +1 -0
  39. package/dist/lib/inspect/errors.js +27 -0
  40. package/dist/lib/inspect/flags.d.ts +9 -0
  41. package/dist/lib/inspect/flags.d.ts.map +1 -1
  42. package/dist/lib/inspect/flags.js +23 -1
  43. package/dist/lib/inspect/hydration.d.ts +22 -0
  44. package/dist/lib/inspect/hydration.d.ts.map +1 -1
  45. package/dist/lib/inspect/hydration.js +107 -49
  46. package/dist/lib/inspect/hydration.test.d.ts +2 -0
  47. package/dist/lib/inspect/hydration.test.d.ts.map +1 -0
  48. package/dist/lib/inspect/hydration.test.js +23 -0
  49. package/dist/lib/inspect/output.d.ts +2 -2
  50. package/dist/lib/inspect/output.d.ts.map +1 -1
  51. package/dist/lib/inspect/output.js +327 -136
  52. package/dist/lib/inspect/output.test.js +663 -3
  53. package/dist/lib/inspect/pagination.d.ts +10 -1
  54. package/dist/lib/inspect/pagination.d.ts.map +1 -1
  55. package/dist/lib/inspect/pagination.js +20 -4
  56. package/dist/lib/inspect/run.d.ts.map +1 -1
  57. package/dist/lib/inspect/run.js +33 -10
  58. package/dist/lib/inspect/setup.d.ts.map +1 -1
  59. package/dist/lib/inspect/setup.js +42 -6
  60. package/dist/lib/inspect/stream.js +1 -1
  61. package/dist/lib/inspect/terminal-utils.js +1 -1
  62. package/dist/lib/inspect/time-window.d.ts +28 -0
  63. package/dist/lib/inspect/time-window.d.ts.map +1 -0
  64. package/dist/lib/inspect/time-window.js +61 -0
  65. package/dist/lib/inspect/time-window.test.d.ts +2 -0
  66. package/dist/lib/inspect/time-window.test.d.ts.map +1 -0
  67. package/dist/lib/inspect/time-window.test.js +58 -0
  68. package/dist/lib/inspect/vercel-api.d.ts +5 -2
  69. package/dist/lib/inspect/vercel-api.d.ts.map +1 -1
  70. package/dist/lib/inspect/vercel-api.js +12 -37
  71. package/dist/lib/inspect/vercel-api.test.d.ts +2 -0
  72. package/dist/lib/inspect/vercel-api.test.d.ts.map +1 -0
  73. package/dist/lib/inspect/vercel-api.test.js +21 -0
  74. package/dist/lib/inspect/vercel-link.js +1 -1
  75. package/dist/lib/inspect/web.d.ts +24 -0
  76. package/dist/lib/inspect/web.d.ts.map +1 -1
  77. package/dist/lib/inspect/web.js +122 -3
  78. package/dist/lib/update-check.js +1 -1
  79. package/package.json +15 -14
  80. package/dist/base.js.map +0 -1
  81. package/dist/commands/build.js.map +0 -1
  82. package/dist/commands/cancel.js.map +0 -1
  83. package/dist/commands/dev.js.map +0 -1
  84. package/dist/commands/health.js.map +0 -1
  85. package/dist/commands/init.js.map +0 -1
  86. package/dist/commands/inspect.js.map +0 -1
  87. package/dist/commands/start.js.map +0 -1
  88. package/dist/commands/transform.js.map +0 -1
  89. package/dist/commands/validate.js.map +0 -1
  90. package/dist/commands/web.js.map +0 -1
  91. package/dist/lib/config/log.js.map +0 -1
  92. package/dist/lib/config/types.js.map +0 -1
  93. package/dist/lib/config/workflow-config.js.map +0 -1
  94. package/dist/lib/inspect/auth.js.map +0 -1
  95. package/dist/lib/inspect/env.js.map +0 -1
  96. package/dist/lib/inspect/flags.js.map +0 -1
  97. package/dist/lib/inspect/hydration.js.map +0 -1
  98. package/dist/lib/inspect/output.js.map +0 -1
  99. package/dist/lib/inspect/output.test.js.map +0 -1
  100. package/dist/lib/inspect/pagination.js.map +0 -1
  101. package/dist/lib/inspect/run.js.map +0 -1
  102. package/dist/lib/inspect/setup.js.map +0 -1
  103. package/dist/lib/inspect/stream.js.map +0 -1
  104. package/dist/lib/inspect/terminal-utils.js.map +0 -1
  105. package/dist/lib/inspect/vercel-api.js.map +0 -1
  106. package/dist/lib/inspect/vercel-link.js.map +0 -1
  107. package/dist/lib/inspect/web.js.map +0 -1
  108. package/dist/lib/update-check.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ const OBSERVABILITY_UPGRADE_REQUIRED_CODE = 'observability-upgrade-required';
2
+ const OBSERVABILITY_UPGRADE_REQUIRED_MESSAGE = 'This workflow observability data is outside your current plan window. Upgrade Observability Plus to view up to 30 days of workflow data.';
3
+ const extractErrorCode = (err) => {
4
+ if (err.code && typeof err.code === 'string') {
5
+ return err.code;
6
+ }
7
+ if (err.body && typeof err.body === 'object') {
8
+ const body = err.body;
9
+ if (body.code && typeof body.code === 'string') {
10
+ return body.code;
11
+ }
12
+ if (body.error && typeof body.error === 'string') {
13
+ return body.error;
14
+ }
15
+ }
16
+ return undefined;
17
+ };
18
+ export const isObservabilityUpgradeRequiredError = (error) => {
19
+ if (!error || typeof error !== 'object') {
20
+ return false;
21
+ }
22
+ const err = error;
23
+ return (err.status === 402 &&
24
+ extractErrorCode(err) === OBSERVABILITY_UPGRADE_REQUIRED_CODE);
25
+ };
26
+ export const getObservabilityUpgradeRequiredMessage = () => OBSERVABILITY_UPGRADE_REQUIRED_MESSAGE;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLG1DQUFtQyxHQUFHLGdDQUFnQyxDQUFDO0FBQzdFLE1BQU0sc0NBQXNDLEdBQzFDLDBJQUEwSSxDQUFDO0FBRTdJLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUE0QixFQUFzQixFQUFFO0lBQzVFLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0MsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUErQixDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLENBQ2pELEtBQWMsRUFDTCxFQUFFO0lBQ1gsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxLQUFnQyxDQUFDO0lBQzdDLE9BQU8sQ0FDTCxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUc7UUFDbEIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssbUNBQW1DLENBQzlELENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxHQUFXLEVBQUUsQ0FDakUsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPQlNFUlZBQklMSVRZX1VQR1JBREVfUkVRVUlSRURfQ09ERSA9ICdvYnNlcnZhYmlsaXR5LXVwZ3JhZGUtcmVxdWlyZWQnO1xuY29uc3QgT0JTRVJWQUJJTElUWV9VUEdSQURFX1JFUVVJUkVEX01FU1NBR0UgPVxuICAnVGhpcyB3b3JrZmxvdyBvYnNlcnZhYmlsaXR5IGRhdGEgaXMgb3V0c2lkZSB5b3VyIGN1cnJlbnQgcGxhbiB3aW5kb3cuIFVwZ3JhZGUgT2JzZXJ2YWJpbGl0eSBQbHVzIHRvIHZpZXcgdXAgdG8gMzAgZGF5cyBvZiB3b3JrZmxvdyBkYXRhLic7XG5cbmNvbnN0IGV4dHJhY3RFcnJvckNvZGUgPSAoZXJyOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChlcnIuY29kZSAmJiB0eXBlb2YgZXJyLmNvZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVyci5jb2RlO1xuICB9XG5cbiAgaWYgKGVyci5ib2R5ICYmIHR5cGVvZiBlcnIuYm9keSA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBib2R5ID0gZXJyLmJvZHkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKGJvZHkuY29kZSAmJiB0eXBlb2YgYm9keS5jb2RlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGJvZHkuY29kZTtcbiAgICB9XG4gICAgaWYgKGJvZHkuZXJyb3IgJiYgdHlwZW9mIGJvZHkuZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gYm9keS5lcnJvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzT2JzZXJ2YWJpbGl0eVVwZ3JhZGVSZXF1aXJlZEVycm9yID0gKFxuICBlcnJvcjogdW5rbm93blxuKTogYm9vbGVhbiA9PiB7XG4gIGlmICghZXJyb3IgfHwgdHlwZW9mIGVycm9yICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGVyciA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZXR1cm4gKFxuICAgIGVyci5zdGF0dXMgPT09IDQwMiAmJlxuICAgIGV4dHJhY3RFcnJvckNvZGUoZXJyKSA9PT0gT0JTRVJWQUJJTElUWV9VUEdSQURFX1JFUVVJUkVEX0NPREVcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkTWVzc2FnZSA9ICgpOiBzdHJpbmcgPT5cbiAgT0JTRVJWQUJJTElUWV9VUEdSQURFX1JFUVVJUkVEX01FU1NBR0U7XG4iXX0=
@@ -11,8 +11,17 @@ export declare const cliFlags: {
11
11
  webPort: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
12
12
  noBrowser: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  localUi: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ standalone: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
15
  sort: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
16
  limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
16
17
  interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
18
  };
19
+ /**
20
+ * Flag for printing a shareable deep-link URL instead of opening the web UI.
21
+ * Only relevant to commands that can open a dashboard (`inspect`, `web`), so it
22
+ * is exported separately rather than bundled into `cliFlags`.
23
+ */
24
+ export declare const urlFlag: {
25
+ url: import("@oclif/core/interfaces").BooleanFlag<boolean>;
26
+ };
18
27
  //# sourceMappingURL=flags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/flags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAgJpB,CAAC"}
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/flags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;CAyJpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,OAAO;;CASnB,CAAC"}
@@ -113,6 +113,14 @@ export const cliFlags = {
113
113
  helpGroup: 'Output',
114
114
  helpLabel: '--localUi',
115
115
  }),
116
+ standalone: Flags.boolean({
117
+ description: 'Always start the standalone web UI, even if an embedded dashboard (e.g. /_workflow) is already running',
118
+ required: false,
119
+ default: false,
120
+ env: 'WORKFLOW_STANDALONE_UI',
121
+ helpGroup: 'Output',
122
+ helpLabel: '--standalone',
123
+ }),
116
124
  sort: Flags.string({
117
125
  description: 'sort order for list commands',
118
126
  required: false,
@@ -140,4 +148,18 @@ export const cliFlags = {
140
148
  helpLabel: '-i, --interactive',
141
149
  }),
142
150
  };
143
- //# sourceMappingURL=flags.js.map
151
+ /**
152
+ * Flag for printing a shareable deep-link URL instead of opening the web UI.
153
+ * Only relevant to commands that can open a dashboard (`inspect`, `web`), so it
154
+ * is exported separately rather than bundled into `cliFlags`.
155
+ */
156
+ export const urlFlag = {
157
+ url: Flags.boolean({
158
+ description: 'Print the deep-link URL to the run/dashboard and exit (no browser, no server)',
159
+ required: false,
160
+ default: false,
161
+ helpGroup: 'Output',
162
+ helpLabel: '--url',
163
+ }),
164
+ };
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDckIsV0FBVyxFQUFFLGdCQUFnQjtRQUM3QixRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLGVBQWU7UUFDMUIsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNsQixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQixXQUFXLEVBQUUscUNBQXFDO1FBQ2xELFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsVUFBVTtRQUNyQixTQUFTLEVBQUUsUUFBUTtLQUNwQixDQUFDO0lBQ0YsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEIsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsT0FBTyxFQUFFLE9BQU87UUFDaEIsR0FBRyxFQUFFLHVCQUF1QjtRQUM1QixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVB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Q2pCLFdBQVcsRUFDVCwrRUFBK0U7UUFDakYsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxPQUFPO0tBQ25CLENBQUM7Q0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tICdAb2NsaWYvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBjbGlGbGFncyA9IHtcbiAgdmVyYm9zZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdWZXJib3NlIG91dHB1dCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICd2JyxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy12LCAtLXZlcmJvc2UnLFxuICAgIGVudjogJ0RFQlVHJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSksXG4gIGpzb246IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOiAnb3V0cHV0IEpTT04gaW5zdGVhZCBvZiBodW1hbi1yZWFkYWJsZSB0YWJsZXMvc3RyZWFtcycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICdqJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy1qLCAtLWpzb24nLFxuICB9KSxcbiAgY3Vyc29yOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOiAncGFnaW5hdGlvbiBjdXJzb3IgZm9yIGxpc3QgY29tbWFuZHMnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tY3Vyc29yJyxcbiAgICBoZWxwVmFsdWU6ICdDVVJTT1InLFxuICB9KSxcbiAgYmFja2VuZDogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjogJ2JhY2tlbmQgdG8gaW5zcGVjdCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICdiJyxcbiAgICBkZWZhdWx0OiAnbG9jYWwnLFxuICAgIGVudjogJ1dPUktGTE9XX1RBUkdFVF9XT1JMRCcsXG4gICAgaGVscEdyb3VwOiAnVGFyZ2V0JyxcbiAgICBoZWxwTGFiZWw6ICctYiwgLS1iYWNrZW5kJyxcbiAgICBoZWxwVmFsdWU6IFsnbG9jYWwnLCAndmVyY2VsJywgJzx5b3VyLXBhY2thZ2UtbmFtZT4nXSxcbiAgICBkZWZhdWx0SGVscDogJ2xvY2FsJyxcbiAgfSksXG4gIGF1dGhUb2tlbjogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdBdXRoZW50aWNhdGlvbiB0b2tlbiB0byBiZSBwYXNzZWQgdG8gdGhlIGJhY2tlbmQuIElmIG5vdCBwcm92aWRlZCBhbmQgdGhlIGJhY2tlbmQgaXMgdmVyY2VsLCB3aWxsIGZhbGwgYmFjayB0byB0aGUgdG9rZW4gZ2VuZXJhdGVkIGJ5IGB2YyBsb2dpbmAuJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2EnLFxuICAgIGRlcGVuZHNPbjogWydiYWNrZW5kJ10sXG4gICAgZGVmYXVsdDogJycsXG4gICAgZW52OiAnV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU4nLFxuICAgIGhlbHBHcm91cDogJ1RhcmdldCcsXG4gICAgaGVscExhYmVsOiAnLWEsIC0tYXV0aFRva2VuJyxcbiAgICBoZWxwVmFsdWU6ICdUT0tFTicsXG4gIH0pLFxuICBwcm9qZWN0OiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0lmIGJhY2tlbmQgaXMgdmVyY2VsLCB0aGUgdmVyY2VsIHByb2plY3QgdG8gYXV0aGVudGljYXRlIGFnYWluc3QnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICBkZXBlbmRzT246IFsnYmFja2VuZCddLFxuICAgIGVudjogJ1dPUktGTE9XX1ZFUkNFTF9QUk9KRUNUJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy0tcHJvamVjdCcsXG4gICAgaGVscFZhbHVlOiAnUFJPSkVDVCcsXG4gIH0pLFxuICB0ZWFtOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0lmIGJhY2tlbmQgaXMgdmVyY2VsLCB0aGUgdmVyY2VsIHRlYW0gdG8gYXV0aGVudGljYXRlIGFnYWluc3QnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXBlbmRzT246IFsnYmFja2VuZCddLFxuICAgIGRlZmF1bHQ6ICcnLFxuICAgIGVudjogJ1dPUktGTE9XX1ZFUkNFTF9URUFNJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy0tdGVhbScsXG4gICAgaGVscFZhbHVlOiAnVEVBTScsXG4gIH0pLFxuICBlbnY6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246ICdJZiBiYWNrZW5kIGlzIHZlcmNlbCwgdGhlIHZlcmNlbCBlbnZpcm9ubWVudCB0byB1c2UnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBvcHRpb25zOiBbJ3Byb2R1Y3Rpb24nLCAncHJldmlldyddLFxuICAgIGRlZmF1bHQ6ICdwcm9kdWN0aW9uJyxcbiAgICBjaGFyOiAnZScsXG4gICAgZGVwZW5kc09uOiBbJ2JhY2tlbmQnXSxcbiAgICBlbnY6ICdXT1JLRkxPV19WRVJDRUxfRU5WJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy1lLCAtLWVudicsXG4gICAgaGVscFZhbHVlOiBbJ3Byb2R1Y3Rpb24nLCAncHJldmlldyddLFxuICAgIGRlZmF1bHRIZWxwOiAncHJvZHVjdGlvbicsXG4gIH0pLFxuICB3ZWI6IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOiAnT3BlbiB0aGUgd2ViIFVJIGluc3RlYWQgb2YgZGlzcGxheWluZyBpbiB0ZXJtaW5hbCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICd3JyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy13LCAtLXdlYicsXG4gIH0pLFxuICB3ZWJQb3J0OiBGbGFncy5pbnRlZ2VyKHtcbiAgICBkZXNjcmlwdGlvbjogJ1BvcnQgdG8gdXNlIHdoZW4gbGF1bmNoaW5nIHRoZSB3ZWIgVUkgKGRlZmF1bHQ6IDM0NTYpJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogMzQ1NixcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy0td2ViUG9ydCcsXG4gICAgaGVscFZhbHVlOiAnV0VCX1BPUlQnLFxuICAgIGVudjogJ1dPUktGTE9XX1dFQl9QT1JUJyxcbiAgfSksXG4gIG5vQnJvd3NlcjogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdEaXNhYmxlIGF1dG9tYXRpYyBicm93c2VyIG9wZW5pbmcgd2hlbiBsYXVuY2hpbmcgd2ViIFVJJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZW52OiAnV09SS0ZMT1dfRElTQUJMRV9CUk9XU0VSX09QRU4nLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1ub0Jyb3dzZXInLFxuICB9KSxcbiAgbG9jYWxVaTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVXNlIGxvY2FsIHdlYiBVSSBpbnN0ZWFkIG9mIFZlcmNlbCBkYXNoYm9hcmQgKHdoZW4gYmFja2VuZCBpcyB2ZXJjZWwpJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZW52OiAnV09SS0ZMT1dfTE9DQUxfVUknLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1sb2NhbFVpJyxcbiAgfSksXG4gIHN0YW5kYWxvbmU6IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0Fsd2F5cyBzdGFydCB0aGUgc3RhbmRhbG9uZSB3ZWIgVUksIGV2ZW4gaWYgYW4gZW1iZWRkZWQgZGFzaGJvYXJkIChlLmcuIC9fd29ya2Zsb3cpIGlzIGFscmVhZHkgcnVubmluZycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGVudjogJ1dPUktGTE9XX1NUQU5EQUxPTkVfVUknLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1zdGFuZGFsb25lJyxcbiAgfSksXG4gIHNvcnQ6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246ICdzb3J0IG9yZGVyIGZvciBsaXN0IGNvbW1hbmRzJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgb3B0aW9uczogWydhc2MnLCAnZGVzYyddLFxuICAgIGRlZmF1bHQ6ICdkZXNjJyxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tc29ydCcsXG4gICAgaGVscFZhbHVlOiBbJ2FzYycsICdkZXNjJ10sXG4gICAgZGVmYXVsdEhlbHA6ICdkZXNjJyxcbiAgfSksXG4gIGxpbWl0OiBGbGFncy5pbnRlZ2VyKHtcbiAgICBkZXNjcmlwdGlvbjogJ251bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAyMCxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tbGltaXQnLFxuICAgIGhlbHBWYWx1ZTogJ05VTUJFUicsXG4gIH0pLFxuICBpbnRlcmFjdGl2ZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdFbmFibGUgaW50ZXJhY3RpdmUgcGFnaW5hdGlvbiB3aXRoIGtleWJvYXJkIGNvbnRyb2xzJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2knLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLWksIC0taW50ZXJhY3RpdmUnLFxuICB9KSxcbn07XG5cbi8qKlxuICogRmxhZyBmb3IgcHJpbnRpbmcgYSBzaGFyZWFibGUgZGVlcC1saW5rIFVSTCBpbnN0ZWFkIG9mIG9wZW5pbmcgdGhlIHdlYiBVSS5cbiAqIE9ubHkgcmVsZXZhbnQgdG8gY29tbWFuZHMgdGhhdCBjYW4gb3BlbiBhIGRhc2hib2FyZCAoYGluc3BlY3RgLCBgd2ViYCksIHNvIGl0XG4gKiBpcyBleHBvcnRlZCBzZXBhcmF0ZWx5IHJhdGhlciB0aGFuIGJ1bmRsZWQgaW50byBgY2xpRmxhZ3NgLlxuICovXG5leHBvcnQgY29uc3QgdXJsRmxhZyA9IHtcbiAgdXJsOiBGbGFncy5ib29sZWFuKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQcmludCB0aGUgZGVlcC1saW5rIFVSTCB0byB0aGUgcnVuL2Rhc2hib2FyZCBhbmQgZXhpdCAobm8gYnJvd3Nlciwgbm8gc2VydmVyKScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS11cmwnLFxuICB9KSxcbn07XG4iXX0=
@@ -41,6 +41,28 @@ declare class ExpiredDataRef {
41
41
  }
42
42
  /** Check if a value is an ExpiredDataRef (for custom table formatting in CLI) */
43
43
  export declare function isExpiredRef(value: unknown): value is ExpiredDataRef;
44
+ /**
45
+ * The set of revivers used by CLI inspect output.
46
+ *
47
+ * Built on top of `getCommonRevivers()` from `@workflow/core` so that the
48
+ * CLI stays in sync with the runtime's reviver set automatically. Without
49
+ * this, every new reviver added to core (e.g. `FatalError`,
50
+ * `RetryableError`, the built-in `Error` subclasses) would silently
51
+ * disappear from CLI output: devalue throws "Unknown type X" for
52
+ * unrecognized reduced types, and `hydrateResourceIO` swallows that error
53
+ * and surfaces the raw `Uint8Array` payload to consumers — which then
54
+ * shows up as `step.error` / `run.error` byte dumps instead of usable
55
+ * `{ message, stack, … }` objects.
56
+ *
57
+ * On top of the common set we layer:
58
+ * - A `toJSON` shim on each Error reviver so non-enumerable
59
+ * `Error.prototype` fields survive `JSON.stringify` for `--json` output
60
+ * while leaving `util.inspect` rendering untouched
61
+ * - `observabilityRevivers` for streams / step+workflow function refs
62
+ * - CLI-specific overrides that produce display-friendly placeholders
63
+ * for `Class` / `Instance` (the runtime versions need full class
64
+ * identity which the CLI doesn't have access to)
65
+ */
44
66
  export declare function getCLIRevivers(): Revivers;
45
67
  /**
46
68
  * Hydrate the serialized data fields of a resource for CLI display.
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/hydration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAQL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAI7C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,GACpD,IAAI,CAAC;AAGT,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,eAAe,EACf,KAAK,SAAS,EACd,UAAU,GACX,MAAM,qCAAqC,CAAC;AA8B7C;;;;;;GAMG;AACH,cAAM,gBAAgB;IACpB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAMD;;;;;;GAMG;AACH,cAAM,cAAc;IAClB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAEpE;AAMD,wBAAgB,cAAc,IAAI,QAAQ,CAyFzC;AA8HD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,QAAQ,EAAE,CAAC,EACX,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,CAAC,CAAC,CASZ"}
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/hydration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAQL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAK7C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,GACpD,IAAI,CAAC;AAGT,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,eAAe,EACf,KAAK,SAAS,EACd,UAAU,GACX,MAAM,qCAAqC,CAAC;AA8B7C;;;;;;GAMG;AACH,cAAM,gBAAgB;IACpB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAMD;;;;;;GAMG;AACH,cAAM,cAAc;IAClB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB;AAKD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAEpE;AAwED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA6DzC;AAgID;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,QAAQ,EAAE,CAAC,EACX,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,CAAC,CAAC,CASZ"}
@@ -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
  // ---------------------------------------------------------------------------
@@ -201,8 +261,11 @@ async function maybeDecryptFields(resource, resolver) {
201
261
  const result = { ...resource };
202
262
  try {
203
263
  const rawKey = await resolver(runId);
204
- const { importKey } = await import('@workflow/core/encryption');
205
- const k = rawKey ? await importKey(rawKey) : undefined;
264
+ // Resolve the full key capability so `--decrypt` can open sealed
265
+ // ('encp') payloads that other runs wrote to this one, not just the
266
+ // run's own symmetric ('encr') payloads.
267
+ const { deriveRunPayloadKeys } = await import('@workflow/core/serialization');
268
+ const k = rawKey ? await deriveRunPayloadKeys(rawKey) : undefined;
206
269
  // Decrypt input/output/error fields (WorkflowRun, Step)
207
270
  result.input = await maybeDecrypt(result.input, k);
208
271
  result.output = await maybeDecrypt(result.output, k);
@@ -212,13 +275,7 @@ async function maybeDecryptFields(resource, resolver) {
212
275
  // Decrypt eventData fields (Event)
213
276
  if (result.eventData && typeof result.eventData === 'object') {
214
277
  const eventData = { ...result.eventData };
215
- for (const field of [
216
- 'result',
217
- 'input',
218
- 'output',
219
- 'metadata',
220
- 'payload',
221
- ]) {
278
+ for (const field of getEventDataRefFields(result.eventType ?? '')) {
222
279
  eventData[field] = await maybeDecrypt(eventData[field], k);
223
280
  }
224
281
  result.eventData = eventData;
@@ -264,7 +321,8 @@ function replaceEncryptedAndExpiredWithRef(resource) {
264
321
  }
265
322
  if (result.eventData && typeof result.eventData === 'object') {
266
323
  const ed = { ...result.eventData };
267
- for (const key of ['result', 'input', 'output', 'metadata', 'payload']) {
324
+ const eventType = typeof result.eventType === 'string' ? result.eventType : '';
325
+ for (const key of getEventDataRefFields(eventType)) {
268
326
  ed[key] = toDisplayRef(ed[key]);
269
327
  }
270
328
  result.eventData = ed;
@@ -287,4 +345,4 @@ export async function hydrateResourceIO(resource, keyResolver) {
287
345
  // Post-process: swap encrypted Uint8Arrays and expired stubs for CLI-styled objects
288
346
  return replaceEncryptedAndExpiredWithRef(hydrated);
289
347
  }
290
- //# sourceMappingURL=hydration.js.map
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2h5ZHJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixJQUFJLHdCQUF3QixFQUM3QyxlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFDUixxQkFBcUIsRUFFckIsdUJBQXVCLEdBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVcxQixvREFBb0Q7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBRVgsZUFBZSxFQUVmLFVBQVUsR0FDWCxNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLDhFQUE4RTtBQUM5RSwyQ0FBMkM7QUFDM0MsOEVBQThFO0FBRTlFOzs7R0FHRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsZ0JBQWdCO0lBQ2hELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNkLE1BQWMsRUFDZCxPQUFtRDtRQUVuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztR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aUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDTEktc3BlY2lmaWMgaHlkcmF0aW9uIGZvciBvMTF5IGRpc3BsYXkuXG4gKlxuICogTm9kZS5qcyByZXZpdmVycyB0aGF0IHVzZSBgQnVmZmVyLmZyb20oKWAgZm9yIGJhc2U2NCBkZWNvZGluZyBhbmQgYWRkXG4gKiBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gQ2xhc3NJbnN0YW5jZVJlZiBmb3IgcHJldHR5IENMSSBvdXRwdXQuXG4gKi9cblxuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBnZXRDb21tb25SZXZpdmVycywgbWF5YmVEZWNyeXB0IH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbic7XG5pbXBvcnQge1xuICBDbGFzc0luc3RhbmNlUmVmLFxuICBleHRyYWN0Q2xhc3NOYW1lLFxuICBoeWRyYXRlUmVzb3VyY2VJTyBhcyBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNFeHBpcmVkU3R1YixcbiAgaXNSdW5SZWYsXG4gIG9ic2VydmFiaWxpdHlSZXZpdmVycyxcbiAgdHlwZSBSZXZpdmVycyxcbiAgc2VyaWFsaXplZEluc3RhbmNlVG9SZWYsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcbmltcG9ydCB7IHBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuaW1wb3J0IHsgZ2V0RXZlbnREYXRhUmVmRmllbGRzIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIGFuIGVuY3J5cHRpb24ga2V5IGZvciBhIHJ1biwgb3IgbnVsbCB0byBza2lwXG4gKiBkZWNyeXB0aW9uLiBBY2NlcHRzIGEgcnVuSWQg4oCUIHRoZSByZXNvbHZlciBpcyByZXNwb25zaWJsZSBmb3IgbG9va2luZ1xuICogdXAgdGhlIFdvcmtmbG93UnVuIGludGVybmFsbHkgKHdpdGggY2FjaGluZykgaWYgdGhlIFdvcmxkIG5lZWRzIGl0LlxuICovXG5leHBvcnQgdHlwZSBFbmNyeXB0aW9uS2V5UmVzb2x2ZXIgPVxuICB8ICgocnVuSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxVaW50OEFycmF5IHwgdW5kZWZpbmVkPilcbiAgfCBudWxsO1xuXG4vLyBSZS1leHBvcnQgdHlwZXMgYW5kIHV0aWxpdGllcyB0aGF0IGNvbnN1bWVycyBuZWVkXG5leHBvcnQge1xuICBDTEFTU19JTlNUQU5DRV9SRUZfVFlQRSxcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgRU5DUllQVEVEX1BMQUNFSE9MREVSLFxuICBleHRyYWN0U3RyZWFtSWRzLFxuICBpc0NsYXNzSW5zdGFuY2VSZWYsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNTdHJlYW1JZCxcbiAgaXNTdHJlYW1SZWYsXG4gIHR5cGUgUmV2aXZlcnMsXG4gIFNUUkVBTV9SRUZfVFlQRSxcbiAgdHlwZSBTdHJlYW1SZWYsXG4gIHRydW5jYXRlSWQsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgQ2xhc3NJbnN0YW5jZVJlZiB3aXRoIGluc3BlY3QuY3VzdG9tXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBFeHRlbmRlZCBDbGFzc0luc3RhbmNlUmVmIHdpdGggTm9kZS5qcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgZm9yXG4gKiBwcmV0dHkgQ0xJIG91dHB1dDogYENsYXNzTmFtZUBmaWxlbmFtZSB7IC4uLmRhdGEgfWBcbiAqL1xuY2xhc3MgQ0xJQ2xhc3NJbnN0YW5jZVJlZiBleHRlbmRzIENsYXNzSW5zdGFuY2VSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKFxuICAgIF9kZXB0aDogbnVtYmVyLFxuICAgIG9wdGlvbnM6IGltcG9ydCgnbm9kZTp1dGlsJykuSW5zcGVjdE9wdGlvbnNTdHlsaXplZFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFTdHIgPSBpbnNwZWN0KHRoaXMuZGF0YSwgeyAuLi5vcHRpb25zLCBkZXB0aDogb3B0aW9ucy5kZXB0aCB9KTtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUNsYXNzTmFtZSh0aGlzLmNsYXNzSWQpO1xuICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IHBhcnNlZD8ubW9kdWxlU3BlY2lmaWVyID8/IHRoaXMuY2xhc3NJZDtcbiAgICBjb25zdCBmaWxlTmFtZSA9IG1vZHVsZVNwZWNpZmllci5zcGxpdCgnLycpLnBvcCgpID8/IG1vZHVsZVNwZWNpZmllcjtcbiAgICBjb25zdCBzdHlsZWRGaWxlTmFtZSA9IG9wdGlvbnMuc3R5bGl6ZVxuICAgICAgPyBvcHRpb25zLnN0eWxpemUoYEAke2ZpbGVOYW1lfWAsICd1bmRlZmluZWQnKVxuICAgICAgOiBgQCR7ZmlsZU5hbWV9YDtcbiAgICByZXR1cm4gYCR7dGhpcy5jbGFzc05hbWV9JHtzdHlsZWRGaWxlTmFtZX0gJHtkYXRhU3RyfWA7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBlbmNyeXB0ZWQgZGF0YSBmaWVsZHMgaW4gQ0xJIG91dHB1dC5cbiAqXG4gKiBVc2VzIGB1dGlsLmluc3BlY3QuY3VzdG9tYCB0byByZW5kZXIgYXMgYSBzdHlsZWQsIHVucXVvdGVkIHN0cmluZ1xuICogKGUuZy4sIGRpbSB5ZWxsb3cgXCLwn5SSIEVuY3J5cHRlZFwiKSBpbnN0ZWFkIG9mIGEgcGxhaW4gcXVvdGVkIHN0cmluZy5cbiAqIEFsc28gcHJvdmlkZXMgYHRvSlNPTigpYCBmb3IgYC0tanNvbmAgb3V0cHV0LlxuICovXG5jbGFzcyBFbmNyeXB0ZWREYXRhUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjaGFsay5kaW0ueWVsbG93KCdcXHV7MUY1MTJ9IEVuY3J5cHRlZCcpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdcXHV7MUY1MTJ9IEVuY3J5cHRlZCc7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnO1xuICB9XG59XG5cbi8qKiBTaW5nbGV0b24gZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFTkNSWVBURURfUkVGID0gbmV3IEVuY3J5cHRlZERhdGFSZWYoKTtcblxuLyoqIENoZWNrIGlmIGEgdmFsdWUgaXMgYW4gRW5jcnlwdGVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuY3J5cHRlZFJlZih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVuY3J5cHRlZERhdGFSZWYge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbmNyeXB0ZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBleHBpcmVkIGRhdGEgZmllbGRzIGluIENMSSBvdXRwdXQuXG4gKlxuICogVXNlcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gcmVuZGVyIGFzIGEgc3R5bGVkLCB1bnF1b3RlZCBzdHJpbmdcbiAqIChlLmcuLCBkaW0gZ3JheSBcIjxkYXRhIGV4cGlyZWQ+XCIpIGluc3RlYWQgb2YgYSByYXcgc3R1YiBvYmplY3QuXG4gKiBBbHNvIHByb3ZpZGVzIGB0b0pTT04oKWAgZm9yIGAtLWpzb25gIG91dHB1dC5cbiAqL1xuY2xhc3MgRXhwaXJlZERhdGFSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNoYWxrLmdyYXkoJzxkYXRhIGV4cGlyZWQ+Jyk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJzxkYXRhIGV4cGlyZWQ+JztcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICc8ZGF0YSBleHBpcmVkPic7XG4gIH1cbn1cblxuLyoqIFNpbmdsZXRvbiBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFWFBJUkVEX1JFRiA9IG5ldyBFeHBpcmVkRGF0YVJlZigpO1xuXG4vKiogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBFeHBpcmVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cGlyZWRSZWYodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFeHBpcmVkRGF0YVJlZiB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEV4cGlyZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSByZXZpdmVycyAoTm9kZS5qcywgdXNlcyBCdWZmZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBUaGUgc2V0IG9mIHJlZHVjZXIga2V5cyB3aG9zZSBgZ2V0Q29tbW9uUmV2aXZlcnMoKWAgb3V0cHV0IHByb2R1Y2VzIGFcbiAqIG5hdGl2ZSBgRXJyb3JgIGluc3RhbmNlLiBXZSB3cmFwIGVhY2ggb2YgdGhlc2Ugd2l0aCBhbiBhZGRpdGlvbmFsXG4gKiBgdG9KU09OYCBhdHRhY2htZW50IGluIENMSSBtb2RlIChzZWUgYHdyYXBFcnJvclJldml2ZXJXaXRoVG9KU09OYCkuXG4gKi9cbmNvbnN0IEVSUk9SX1JFVklWRVJfS0VZUyA9IFtcbiAgJ0FnZ3JlZ2F0ZUVycm9yJyxcbiAgJ0RPTUV4Y2VwdGlvbicsXG4gICdFcnJvcicsXG4gICdFdmFsRXJyb3InLFxuICAnRmF0YWxFcnJvcicsXG4gICdIb29rQ29uZmxpY3RFcnJvcicsXG4gICdSYW5nZUVycm9yJyxcbiAgJ1JlZmVyZW5jZUVycm9yJyxcbiAgJ1JldHJ5YWJsZUVycm9yJyxcbiAgJ1J1bnRpbWVEZWNyeXB0aW9uRXJyb3InLFxuICAnU3ludGF4RXJyb3InLFxuICAnVHlwZUVycm9yJyxcbiAgJ1VSSUVycm9yJyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogV3JhcHMgYSBydW50aW1lIEVycm9yIHJldml2ZXIgc28gdGhhdCB0aGUgcHJvZHVjZWQgaW5zdGFuY2UgY2FycmllcyBhXG4gKiBub24tZW51bWVyYWJsZSBgdG9KU09OYCBtZXRob2QuIFRoZSBydW50aW1lIHJldml2ZXJzIHJldHVybiByZWFsIGBFcnJvcmBcbiAqIGluc3RhbmNlcyAoZ29vZCBmb3IgYHV0aWwuaW5zcGVjdGAsIGBpbnN0YW5jZW9mYCwgYHRvU3RyaW5nYCwgZXRjLiksIGJ1dFxuICogYEVycm9yLnByb3RvdHlwZWAncyBgbmFtZWAgLyBgbWVzc2FnZWAgLyBgc3RhY2tgIC8gYGNhdXNlYCBhcmVcbiAqIG5vbi1lbnVtZXJhYmxlIGFuZCB3b3VsZCBiZSBkcm9wcGVkIGJ5IGBKU09OLnN0cmluZ2lmeWAg4oCUIHdoaWNoIGlzIGhvd1xuICogdGhlIENMSSBlbWl0cyBpdHMgYC0tanNvbmAgb3V0cHV0LiBBZGRpbmcgYHRvSlNPTmAgKHdoaWNoIGBKU09OLnN0cmluZ2lmeWBcbiAqIGNhbGxzIGJ1dCBgdXRpbC5pbnNwZWN0YCBpZ25vcmVzKSBnaXZlcyB1cyB0aGUgYmVzdCBvZiBib3RoIHdvcmxkczpcbiAqIHJvdW5kLXRyaXBwZWQgZXJyb3JzIHJlbmRlciBjbGVhbmx5IGluIGJvdGggbW9kZXMgd2l0aG91dCB0aGVcbiAqIGRhdGEtdmVyc3VzLWRpc3BsYXkgdHJhZGVvZmYgdGhhdCBwbGFpbi1vYmplY3QgcmV2aXZlcnMgd291bGQgZm9yY2UuXG4gKlxuICogU3ViY2xhc3Mtc3BlY2lmaWMgZW51bWVyYWJsZSBmaWVsZHMgKGUuZy4gYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgLFxuICogYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2AsIGBGYXRhbEVycm9yLmZhdGFsYCkgYXJlIHBpY2tlZCB1cCBhdXRvbWF0aWNhbGx5XG4gKiB2aWEgYE9iamVjdC5hc3NpZ25gIGFmdGVyIHRoZSBiYXNlIGZpZWxkcywgc28gd2UgZG9uJ3QgaGF2ZSB0byBlbnVtZXJhdGVcbiAqIHRoZW0gcGVyLXN1YmNsYXNzLlxuICovXG5mdW5jdGlvbiB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihcbiAgcmV2aXZlcjogKHZhbHVlOiBhbnkpID0+IHVua25vd25cbik6ICh2YWx1ZTogYW55KSA9PiB1bmtub3duIHtcbiAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJldml2ZXIodmFsdWUpO1xuICAgIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSkgcmV0dXJuIHJlc3VsdDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCAndG9KU09OJywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uICh0aGlzOiBFcnJvcikge1xuICAgICAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoJ2NhdXNlJyBpbiB0aGlzKSB7XG4gICAgICAgICAganNvbi5jYXVzZSA9ICh0aGlzIGFzIHsgY2F1c2U6IHVua25vd24gfSkuY2F1c2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGljayB1cCBzdWJjbGFzcy1zcGVjaWZpYyBlbnVtZXJhYmxlIGZpZWxkcyAoZS5nLiBGYXRhbEVycm9yLmZhdGFsLFxuICAgICAgICAvLyBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyLCBBZ2dyZWdhdGVFcnJvci5lcnJvcnMpLlxuICAgICAgICBPYmplY3QuYXNzaWduKGpzb24sIHRoaXMpO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiByZXZpdmVycyB1c2VkIGJ5IENMSSBpbnNwZWN0IG91dHB1dC5cbiAqXG4gKiBCdWlsdCBvbiB0b3Agb2YgYGdldENvbW1vblJldml2ZXJzKClgIGZyb20gYEB3b3JrZmxvdy9jb3JlYCBzbyB0aGF0IHRoZVxuICogQ0xJIHN0YXlzIGluIHN5bmMgd2l0aCB0aGUgcnVudGltZSdzIHJldml2ZXIgc2V0IGF1dG9tYXRpY2FsbHkuIFdpdGhvdXRcbiAqIHRoaXMsIGV2ZXJ5IG5ldyByZXZpdmVyIGFkZGVkIHRvIGNvcmUgKGUuZy4gYEZhdGFsRXJyb3JgLFxuICogYFJldHJ5YWJsZUVycm9yYCwgdGhlIGJ1aWx0LWluIGBFcnJvcmAgc3ViY2xhc3Nlcykgd291bGQgc2lsZW50bHlcbiAqIGRpc2FwcGVhciBmcm9tIENMSSBvdXRwdXQ6IGRldmFsdWUgdGhyb3dzIFwiVW5rbm93biB0eXBlIFhcIiBmb3JcbiAqIHVucmVjb2duaXplZCByZWR1Y2VkIHR5cGVzLCBhbmQgYGh5ZHJhdGVSZXNvdXJjZUlPYCBzd2FsbG93cyB0aGF0IGVycm9yXG4gKiBhbmQgc3VyZmFjZXMgdGhlIHJhdyBgVWludDhBcnJheWAgcGF5bG9hZCB0byBjb25zdW1lcnMg4oCUIHdoaWNoIHRoZW5cbiAqIHNob3dzIHVwIGFzIGBzdGVwLmVycm9yYCAvIGBydW4uZXJyb3JgIGJ5dGUgZHVtcHMgaW5zdGVhZCBvZiB1c2FibGVcbiAqIGB7IG1lc3NhZ2UsIHN0YWNrLCDigKYgfWAgb2JqZWN0cy5cbiAqXG4gKiBPbiB0b3Agb2YgdGhlIGNvbW1vbiBzZXQgd2UgbGF5ZXI6XG4gKiAgIC0gQSBgdG9KU09OYCBzaGltIG9uIGVhY2ggRXJyb3IgcmV2aXZlciBzbyBub24tZW51bWVyYWJsZVxuICogICAgIGBFcnJvci5wcm90b3R5cGVgIGZpZWxkcyBzdXJ2aXZlIGBKU09OLnN0cmluZ2lmeWAgZm9yIGAtLWpzb25gIG91dHB1dFxuICogICAgIHdoaWxlIGxlYXZpbmcgYHV0aWwuaW5zcGVjdGAgcmVuZGVyaW5nIHVudG91Y2hlZFxuICogICAtIGBvYnNlcnZhYmlsaXR5UmV2aXZlcnNgIGZvciBzdHJlYW1zIC8gc3RlcCt3b3JrZmxvdyBmdW5jdGlvbiByZWZzXG4gKiAgIC0gQ0xJLXNwZWNpZmljIG92ZXJyaWRlcyB0aGF0IHByb2R1Y2UgZGlzcGxheS1mcmllbmRseSBwbGFjZWhvbGRlcnNcbiAqICAgICBmb3IgYENsYXNzYCAvIGBJbnN0YW5jZWAgKHRoZSBydW50aW1lIHZlcnNpb25zIG5lZWQgZnVsbCBjbGFzc1xuICogICAgIGlkZW50aXR5IHdoaWNoIHRoZSBDTEkgZG9lc24ndCBoYXZlIGFjY2VzcyB0bylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENMSVJldml2ZXJzKCk6IFJldml2ZXJzIHtcbiAgY29uc3QgYmFzZVJldml2ZXJzID0gZ2V0Q29tbW9uUmV2aXZlcnMoZ2xvYmFsVGhpcyk7XG4gIGNvbnN0IGVycm9yUmV2aXZlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgRVJST1JfUkVWSVZFUl9LRVlTLmZsYXRNYXAoKGtleSkgPT4ge1xuICAgICAgY29uc3QgcmV2aXZlciA9IChiYXNlUmV2aXZlcnMgYXMgUmV2aXZlcnMpW2tleV07XG4gICAgICByZXR1cm4gcmV2aXZlciA/IFtba2V5LCB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihyZXZpdmVyKV1dIDogW107XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlUmV2aXZlcnMsXG4gICAgLi4uZXJyb3JSZXZpdmVycyxcbiAgICAvLyBPMTF5LXNwZWNpZmljIHJldml2ZXJzIChzdHJlYW1zLCBzdGVwIGZ1bmN0aW9ucyDihpIgZGlzcGxheSBvYmplY3RzKS5cbiAgICAuLi5vYnNlcnZhYmlsaXR5UmV2aXZlcnMsXG4gICAgLy8gTm9kZSBgUmVxdWVzdGAgLyBgUmVzcG9uc2VgIHJldml2ZXJzIHRoYXQgZG9uJ3QgcmVseSBvbiBydW5uaW5nIGFuXG4gICAgLy8gYWN0dWFsIGZldGNoIGhhbmRsZXIg4oCUIHVzZWQgdG8gcmVuZGVyIHJlcXVlc3QvcmVzcG9uc2UgSU8gaW5saW5lLlxuICAgIFJlcXVlc3Q6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS91c2VBcnJvd0Z1bmN0aW9uOiBhcnJvdyBmdW5jdGlvbnMgaGF2ZSBubyAucHJvdG90eXBlXG4gICAgICBjb25zdCBjdG9yID0geyBSZXF1ZXN0OiBmdW5jdGlvbiAoKSB7fSB9LlJlcXVlc3QhO1xuICAgICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShjdG9yLnByb3RvdHlwZSk7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwge1xuICAgICAgICBtZXRob2Q6IHZhbHVlLm1ldGhvZCxcbiAgICAgICAgdXJsOiB2YWx1ZS51cmwsXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHZhbHVlLmhlYWRlcnMpLFxuICAgICAgICBib2R5OiB2YWx1ZS5ib2R5LFxuICAgICAgICBkdXBsZXg6IHZhbHVlLmR1cGxleCxcbiAgICAgICAgLi4uKHZhbHVlLnJlc3BvbnNlV3JpdGFibGVcbiAgICAgICAgICA/IHsgcmVzcG9uc2VXcml0YWJsZTogdmFsdWUucmVzcG9uc2VXcml0YWJsZSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICBSZXNwb25zZTogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgICAgIGNvbnN0IGN0b3IgPSB7IFJlc3BvbnNlOiBmdW5jdGlvbiAoKSB7fSB9LlJlc3BvbnNlITtcbiAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHtcbiAgICAgICAgc3RhdHVzOiB2YWx1ZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHZhbHVlLnN0YXR1c1RleHQsXG4gICAgICAgIHVybDogdmFsdWUudXJsLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh2YWx1ZS5oZWFkZXJzKSxcbiAgICAgICAgYm9keTogdmFsdWUuYm9keSxcbiAgICAgICAgcmVkaXJlY3RlZDogdmFsdWUucmVkaXJlY3RlZCxcbiAgICAgICAgdHlwZTogdmFsdWUudHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIENMSS1zcGVjaWZpYyBvdmVycmlkZXMgZm9yIGNsYXNzIGluc3RhbmNlcyB3aXRoIGluc3BlY3QuY3VzdG9tXG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4gYDxjbGFzczoke2V4dHJhY3RDbGFzc05hbWUodmFsdWUuY2xhc3NJZCl9PmAsXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gUnVuIGluc3RhbmNlcyBhcmUgcmVuZGVyZWQgYXMgUnVuUmVmIGZvciBjbGlja2FibGUgcmVuZGVyaW5nXG4gICAgICBjb25zdCBydW5SZWYgPSBzZXJpYWxpemVkSW5zdGFuY2VUb1JlZih2YWx1ZSk7XG4gICAgICBpZiAoaXNSdW5SZWYocnVuUmVmKSkge1xuICAgICAgICByZXR1cm4gcnVuUmVmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDTElDbGFzc0luc3RhbmNlUmVmKFxuICAgICAgICBleHRyYWN0Q2xhc3NOYW1lKHZhbHVlLmNsYXNzSWQpLFxuICAgICAgICB2YWx1ZS5jbGFzc0lkLFxuICAgICAgICB2YWx1ZS5kYXRhXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJlLWJ1aWx0IENMSSByZXZpdmVycyAoY2FjaGVkKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCBjYWNoZWRSZXZpdmVyczogUmV2aXZlcnMgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0UmV2aXZlcnMoKTogUmV2aXZlcnMge1xuICBpZiAoIWNhY2hlZFJldml2ZXJzKSB7XG4gICAgY2FjaGVkUmV2aXZlcnMgPSBnZXRDTElSZXZpdmVycygpO1xuICB9XG4gIHJldHVybiBjYWNoZWRSZXZpdmVycztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZWNyeXB0aW9uIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFByZS1wcm9jZXNzIGEgcmVzb3VyY2UncyBkYXRhIGZpZWxkczogaWYgdGhlIHJlc29sdmVyIGlzIHByb3ZpZGVkIGFuZFxuICogdGhlIGZpZWxkIGlzIGVuY3J5cHRlZCwgZGVjcnlwdCBpdCBiZWZvcmUgZ2VuZXJpYyBoeWRyYXRpb24uXG4gKlxuICogVXNlcyBjb3JlJ3MgYG1heWJlRGVjcnlwdCgpYCB3aGljaCBoYW5kbGVzIHRoZSAnZW5jcicgcHJlZml4IHN0cmlwcGluZ1xuICogYW5kIEFFUy1HQ00gZGVjcnlwdGlvbiB0cmFuc3BhcmVudGx5LlxuICpcbiAqIFdoZW4gdGhlIHJlc29sdmVyIGlzIG51bGwgKG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkIGZpZWxkcyBwYXNzXG4gKiB0aHJvdWdoIGFzIFVpbnQ4QXJyYXkgYW5kIGFyZSByZXBsYWNlZCB3aXRoIEVuY3J5cHRlZERhdGFSZWYgaW4gcG9zdC1wcm9jZXNzaW5nLlxuICovXG5hc3luYyBmdW5jdGlvbiBtYXliZURlY3J5cHRGaWVsZHM8XG4gIFQgZXh0ZW5kcyB7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgaW5wdXQ/OiBhbnk7XG4gICAgb3V0cHV0PzogYW55O1xuICAgIG1ldGFkYXRhPzogYW55O1xuICAgIGV2ZW50VHlwZT86IHN0cmluZztcbiAgICBldmVudERhdGE/OiBhbnk7XG4gIH0sXG4+KHJlc291cmNlOiBULCByZXNvbHZlcjogRW5jcnlwdGlvbktleVJlc29sdmVyKTogUHJvbWlzZTxUPiB7XG4gIGlmICghcmVzb2x2ZXIpIHJldHVybiByZXNvdXJjZTtcblxuICBjb25zdCBydW5JZCA9IChyZXNvdXJjZSBhcyBhbnkpLnJ1bklkIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaWYgKCFydW5JZCkgcmV0dXJuIHJlc291cmNlO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4ucmVzb3VyY2UgfTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJhd0tleSA9IGF3YWl0IHJlc29sdmVyKHJ1bklkKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBmdWxsIGtleSBjYXBhYmlsaXR5IHNvIGAtLWRlY3J5cHRgIGNhbiBvcGVuIHNlYWxlZFxuICAgIC8vICgnZW5jcCcpIHBheWxvYWRzIHRoYXQgb3RoZXIgcnVucyB3cm90ZSB0byB0aGlzIG9uZSwgbm90IGp1c3QgdGhlXG4gICAgLy8gcnVuJ3Mgb3duIHN5bW1ldHJpYyAoJ2VuY3InKSBwYXlsb2Fkcy5cbiAgICBjb25zdCB7IGRlcml2ZVJ1blBheWxvYWRLZXlzIH0gPSBhd2FpdCBpbXBvcnQoXG4gICAgICAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbidcbiAgICApO1xuICAgIGNvbnN0IGsgPSByYXdLZXkgPyBhd2FpdCBkZXJpdmVSdW5QYXlsb2FkS2V5cyhyYXdLZXkpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gRGVjcnlwdCBpbnB1dC9vdXRwdXQvZXJyb3IgZmllbGRzIChXb3JrZmxvd1J1biwgU3RlcClcbiAgICByZXN1bHQuaW5wdXQgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0LmlucHV0LCBrKTtcbiAgICByZXN1bHQub3V0cHV0ID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5vdXRwdXQsIGspO1xuICAgIChyZXN1bHQgYXMgYW55KS5lcnJvciA9IGF3YWl0IG1heWJlRGVjcnlwdCgocmVzdWx0IGFzIGFueSkuZXJyb3IsIGspO1xuXG4gICAgLy8gRGVjcnlwdCBtZXRhZGF0YSBmaWVsZCAoSG9vaylcbiAgICByZXN1bHQubWV0YWRhdGEgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0Lm1ldGFkYXRhLCBrKTtcblxuICAgIC8vIERlY3J5cHQgZXZlbnREYXRhIGZpZWxkcyAoRXZlbnQpXG4gICAgaWYgKHJlc3VsdC5ldmVudERhdGEgJiYgdHlwZW9mIHJlc3VsdC5ldmVudERhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBldmVudERhdGEgPSB7IC4uLnJlc3VsdC5ldmVudERhdGEgfTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZ2V0RXZlbnREYXRhUmVmRmllbGRzKHJlc3VsdC5ldmVudFR5cGUgPz8gJycpKSB7XG4gICAgICAgIGV2ZW50RGF0YVtmaWVsZF0gPSBhd2FpdCBtYXliZURlY3J5cHQoZXZlbnREYXRhW2ZpZWxkXSwgayk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZXZlbnREYXRhID0gZXZlbnREYXRhO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblxuICAgIC8vIElmIHRoZSBrZXkgZmV0Y2ggZmFpbGVkIGR1ZSB0byBhbiBIVFRQIGVycm9yIChlLmcuIDQyOSByYXRlIGxpbWl0LFxuICAgIC8vIDUwMCBzZXJ2ZXIgZXJyb3IpLCByZS10aHJvdyBzbyB0aGUgY2FsbGVyIHN1cmZhY2VzIGEgY2xlYXIgZmFpbHVyZVxuICAgIC8vIGluc3RlYWQgb2Ygc2lsZW50bHkgc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzLlxuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdIVFRQICcpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgLy8gRGVjcnlwdGlvbiBmYWlsZWQgKGJhZCBrZXksIGNvcnJ1cHRlZCBjaXBoZXJ0ZXh0LCBldGMuKSDigJQgZmFsbCBiYWNrXG4gICAgLy8gdG8gc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzIGluc3RlYWQgb2YgY3Jhc2hpbmcgdGhlIENMSS5cbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gYXdhaXQgaW1wb3J0KCcuLi9jb25maWcvbG9nLmpzJyk7XG4gICAgbG9nZ2VyLndhcm4oYERlY3J5cHRpb24gZmFpbGVkIGZvciByZXNvdXJjZSAke3J1bklkfTogJHttZXNzYWdlfWApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQdWJsaWMgQVBJXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFJlcGxhY2UgYSBzaW5nbGUgZmllbGQgdmFsdWUgd2l0aCBhIGRpc3BsYXkgcmVmIGlmIGl0J3MgZW5jcnlwdGVkIG9yIGV4cGlyZWQuICovXG5mdW5jdGlvbiB0b0Rpc3BsYXlSZWYodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKGlzRW5jcnlwdGVkRGF0YSh2YWx1ZSkpIHJldHVybiBFTkNSWVBURURfUkVGO1xuICBpZiAoaXNFeHBpcmVkU3R1Yih2YWx1ZSkpIHJldHVybiBFWFBJUkVEX1JFRjtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgZW5jcnlwdGVkIFVpbnQ4QXJyYXkgdmFsdWVzIGFuZCBleHBpcmVkIHN0dWJzIHdpdGggc3R5bGVkXG4gKiByZWYgb2JqZWN0cyBpbiBrbm93biBkYXRhIGZpZWxkcyBmb3IgY3VzdG9tIGluc3BlY3QgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhSZWY8VD4ocmVzb3VyY2U6IFQpOiBUIHtcbiAgaWYgKCFyZXNvdXJjZSB8fCB0eXBlb2YgcmVzb3VyY2UgIT09ICdvYmplY3QnKSByZXR1cm4gcmVzb3VyY2U7XG4gIGNvbnN0IHIgPSByZXNvdXJjZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5yIH07XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydpbnB1dCcsICdvdXRwdXQnLCAnbWV0YWRhdGEnLCAnZXJyb3InXSkge1xuICAgIHJlc3VsdFtrZXldID0gdG9EaXNwbGF5UmVmKHJlc3VsdFtrZXldKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQuZXZlbnREYXRhICYmIHR5cGVvZiByZXN1bHQuZXZlbnREYXRhID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IGVkID0geyAuLi4ocmVzdWx0LmV2ZW50RGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBjb25zdCBldmVudFR5cGUgPVxuICAgICAgdHlwZW9mIHJlc3VsdC5ldmVudFR5cGUgPT09ICdzdHJpbmcnID8gcmVzdWx0LmV2ZW50VHlwZSA6ICcnO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGdldEV2ZW50RGF0YVJlZkZpZWxkcyhldmVudFR5cGUpKSB7XG4gICAgICBlZFtrZXldID0gdG9EaXNwbGF5UmVmKGVkW2tleV0pO1xuICAgIH1cbiAgICByZXN1bHQuZXZlbnREYXRhID0gZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59XG5cbi8qKlxuICogSHlkcmF0ZSB0aGUgc2VyaWFsaXplZCBkYXRhIGZpZWxkcyBvZiBhIHJlc291cmNlIGZvciBDTEkgZGlzcGxheS5cbiAqXG4gKiBXaGVuIGBlbmNyeXB0b3JSZXNvbHZlcmAgaXMgbnVsbCAoZGVmYXVsdCAvIG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkXG4gKiBmaWVsZHMgYXJlIHNob3duIGFzIHN0eWxlZCBcIvCflJIgRW5jcnlwdGVkXCIgcGxhY2Vob2xkZXJzIHZpYSBFbmNyeXB0ZWREYXRhUmVmLlxuICpcbiAqIFdoZW4gYGVuY3J5cHRvclJlc29sdmVyYCBpcyBwcm92aWRlZCAoLS1kZWNyeXB0IGZsYWcpLCBlbmNyeXB0ZWQgZmllbGRzXG4gKiBhcmUgZGVjcnlwdGVkIGJlZm9yZSBoeWRyYXRpb24gc28gdGhlIGFjdHVhbCB1c2VyIGRhdGEgaXMgZGlzcGxheWVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaHlkcmF0ZVJlc291cmNlSU88VD4oXG4gIHJlc291cmNlOiBULFxuICBrZXlSZXNvbHZlcj86IEVuY3J5cHRpb25LZXlSZXNvbHZlclxuKTogUHJvbWlzZTxUPiB7XG4gIC8vIFByZS1wcm9jZXNzOiBkZWNyeXB0IGFueSBlbmNyeXB0ZWQgZmllbGRzIHdoZW4gYSByZXNvbHZlciBpcyBwcm92aWRlZFxuICBjb25zdCBwcmVwcm9jZXNzZWQgPSBhd2FpdCBtYXliZURlY3J5cHRGaWVsZHMoXG4gICAgcmVzb3VyY2UgYXMgYW55LFxuICAgIGtleVJlc29sdmVyID8/IG51bGxcbiAgKTtcbiAgY29uc3QgaHlkcmF0ZWQgPSBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMocHJlcHJvY2Vzc2VkLCBnZXRSZXZpdmVycygpKSBhcyBUO1xuICAvLyBQb3N0LXByb2Nlc3M6IHN3YXAgZW5jcnlwdGVkIFVpbnQ4QXJyYXlzIGFuZCBleHBpcmVkIHN0dWJzIGZvciBDTEktc3R5bGVkIG9iamVjdHNcbiAgcmV0dXJuIHJlcGxhY2VFbmNyeXB0ZWRBbmRFeHBpcmVkV2l0aFJlZihoeWRyYXRlZCk7XG59XG4iXX0=
@@ -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;AAuLF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,WAAW,KAAG,OAMjD,CAAC;AA4EF,eAAO,MAAM,QAAQ,GAAU,OAAO,KAAK,EAAE,OAAM,iBAAsB,kBAyIxE,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,kBAwC7B,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,kBA6C7B,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"}