@workflow/cli 5.0.0-beta.4 → 5.0.0-beta.40
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.
- package/dist/base.js +1 -1
- package/dist/commands/build.js +1 -1
- package/dist/commands/cancel.d.ts +1 -0
- package/dist/commands/cancel.d.ts.map +1 -1
- package/dist/commands/cancel.js +36 -55
- package/dist/commands/dev.js +1 -1
- package/dist/commands/health.d.ts +1 -3
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +26 -50
- package/dist/commands/init.js +1 -1
- package/dist/commands/inspect.d.ts +4 -0
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +37 -7
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +8 -3
- package/dist/commands/transform.js +1 -1
- package/dist/commands/validate.js +1 -1
- package/dist/commands/web.d.ts +2 -0
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +9 -3
- package/dist/lib/bulk-cancel.d.ts +74 -0
- package/dist/lib/bulk-cancel.d.ts.map +1 -0
- package/dist/lib/bulk-cancel.js +197 -0
- package/dist/lib/bulk-cancel.test.d.ts +2 -0
- package/dist/lib/bulk-cancel.test.d.ts.map +1 -0
- package/dist/lib/bulk-cancel.test.js +366 -0
- package/dist/lib/config/log.js +1 -1
- package/dist/lib/config/types.d.ts +6 -1
- package/dist/lib/config/types.d.ts.map +1 -1
- package/dist/lib/config/types.js +1 -1
- package/dist/lib/config/workflow-config.d.ts.map +1 -1
- package/dist/lib/config/workflow-config.js +2 -2
- package/dist/lib/inspect/auth.js +1 -1
- package/dist/lib/inspect/env.d.ts +1 -1
- package/dist/lib/inspect/env.js +2 -2
- package/dist/lib/inspect/errors.d.ts +3 -0
- package/dist/lib/inspect/errors.d.ts.map +1 -0
- package/dist/lib/inspect/errors.js +27 -0
- package/dist/lib/inspect/flags.d.ts +9 -0
- package/dist/lib/inspect/flags.d.ts.map +1 -1
- package/dist/lib/inspect/flags.js +23 -1
- package/dist/lib/inspect/hydration.d.ts +22 -0
- package/dist/lib/inspect/hydration.d.ts.map +1 -1
- package/dist/lib/inspect/hydration.js +107 -49
- package/dist/lib/inspect/hydration.test.d.ts +2 -0
- package/dist/lib/inspect/hydration.test.d.ts.map +1 -0
- package/dist/lib/inspect/hydration.test.js +23 -0
- package/dist/lib/inspect/output.d.ts +2 -2
- package/dist/lib/inspect/output.d.ts.map +1 -1
- package/dist/lib/inspect/output.js +327 -136
- package/dist/lib/inspect/output.test.js +663 -3
- package/dist/lib/inspect/pagination.d.ts +10 -1
- package/dist/lib/inspect/pagination.d.ts.map +1 -1
- package/dist/lib/inspect/pagination.js +20 -4
- package/dist/lib/inspect/run.d.ts.map +1 -1
- package/dist/lib/inspect/run.js +33 -10
- package/dist/lib/inspect/setup.d.ts.map +1 -1
- package/dist/lib/inspect/setup.js +42 -6
- package/dist/lib/inspect/stream.js +1 -1
- package/dist/lib/inspect/terminal-utils.js +1 -1
- package/dist/lib/inspect/time-window.d.ts +28 -0
- package/dist/lib/inspect/time-window.d.ts.map +1 -0
- package/dist/lib/inspect/time-window.js +61 -0
- package/dist/lib/inspect/time-window.test.d.ts +2 -0
- package/dist/lib/inspect/time-window.test.d.ts.map +1 -0
- package/dist/lib/inspect/time-window.test.js +58 -0
- package/dist/lib/inspect/vercel-api.d.ts +5 -2
- package/dist/lib/inspect/vercel-api.d.ts.map +1 -1
- package/dist/lib/inspect/vercel-api.js +12 -37
- package/dist/lib/inspect/vercel-api.test.d.ts +2 -0
- package/dist/lib/inspect/vercel-api.test.d.ts.map +1 -0
- package/dist/lib/inspect/vercel-api.test.js +21 -0
- package/dist/lib/inspect/vercel-link.js +1 -1
- package/dist/lib/inspect/web.d.ts +24 -0
- package/dist/lib/inspect/web.d.ts.map +1 -1
- package/dist/lib/inspect/web.js +122 -3
- package/dist/lib/update-check.js +1 -1
- package/package.json +15 -14
- package/dist/base.js.map +0 -1
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/cancel.js.map +0 -1
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/health.js.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/inspect.js.map +0 -1
- package/dist/commands/start.js.map +0 -1
- package/dist/commands/transform.js.map +0 -1
- package/dist/commands/validate.js.map +0 -1
- package/dist/commands/web.js.map +0 -1
- package/dist/lib/config/log.js.map +0 -1
- package/dist/lib/config/types.js.map +0 -1
- package/dist/lib/config/workflow-config.js.map +0 -1
- package/dist/lib/inspect/auth.js.map +0 -1
- package/dist/lib/inspect/env.js.map +0 -1
- package/dist/lib/inspect/flags.js.map +0 -1
- package/dist/lib/inspect/hydration.js.map +0 -1
- package/dist/lib/inspect/output.js.map +0 -1
- package/dist/lib/inspect/output.test.js.map +0 -1
- package/dist/lib/inspect/pagination.js.map +0 -1
- package/dist/lib/inspect/run.js.map +0 -1
- package/dist/lib/inspect/setup.js.map +0 -1
- package/dist/lib/inspect/stream.js.map +0 -1
- package/dist/lib/inspect/terminal-utils.js.map +0 -1
- package/dist/lib/inspect/vercel-api.js.map +0 -1
- package/dist/lib/inspect/vercel-link.js.map +0 -1
- package/dist/lib/inspect/web.js.map +0 -1
- 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
|
|
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
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDckIsV0FBVyxFQUFFLGdCQUFnQjtRQUM3QixRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLGVBQWU7UUFDMUIsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNsQixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQixXQUFXLEVBQUUscUNBQXFDO1FBQ2xELFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsVUFBVTtRQUNyQixTQUFTLEVBQUUsUUFBUTtLQUNwQixDQUFDO0lBQ0YsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEIsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxHQUFHO1FBQ1QsT0FBTyxFQUFFLE9BQU87UUFDaEIsR0FBRyxFQUFFLHVCQUF1QjtRQUM1QixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsZUFBZTtRQUMxQixTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixDQUFDO1FBQ3JELFdBQVcsRUFBRSxPQUFPO0tBQ3JCLENBQUM7SUFDRixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUN0QixXQUFXLEVBQ1QsbUpBQW1KO1FBQ3JKLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsU0FBUyxFQUFFLE9BQU87S0FDbkIsQ0FBQztJQUNGLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3BCLFdBQVcsRUFDVCxrRUFBa0U7UUFDcEUsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixHQUFHLEVBQUUseUJBQXlCO1FBQzlCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxTQUFTO0tBQ3JCLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQixXQUFXLEVBQ1QsK0RBQStEO1FBQ2pFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsR0FBRyxFQUFFLHNCQUFzQjtRQUMzQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsTUFBTTtLQUNsQixDQUFDO0lBQ0YsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEIsV0FBVyxFQUFFLHFEQUFxRDtRQUNsRSxRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7UUFDbEMsT0FBTyxFQUFFLFlBQVk7UUFDckIsSUFBSSxFQUFFLEdBQUc7UUFDVCxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdEIsR0FBRyxFQUFFLHFCQUFxQjtRQUMxQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLFdBQVcsRUFBRSxZQUFZO0tBQzFCLENBQUM7SUFDRixHQUFHLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNqQixXQUFXLEVBQUUsbURBQW1EO1FBQ2hFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxXQUFXO0tBQ3ZCLENBQUM7SUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNyQixXQUFXLEVBQUUsdURBQXVEO1FBQ3BFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLElBQUk7UUFDYixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsVUFBVTtRQUNyQixHQUFHLEVBQUUsbUJBQW1CO0tBQ3pCLENBQUM7SUFDRixTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN2QixXQUFXLEVBQUUseURBQXlEO1FBQ3RFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxHQUFHLEVBQUUsK0JBQStCO1FBQ3BDLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNyQixXQUFXLEVBQ1QsdUVBQXVFO1FBQ3pFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxHQUFHLEVBQUUsbUJBQW1CO1FBQ3hCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxXQUFXO0tBQ3ZCLENBQUM7SUFDRixVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4QixXQUFXLEVBQ1Qsd0dBQXdHO1FBQzFHLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxHQUFHLEVBQUUsd0JBQXdCO1FBQzdCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxjQUFjO0tBQzFCLENBQUM7SUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQixXQUFXLEVBQUUsOEJBQThCO1FBQzNDLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUN4QixPQUFPLEVBQUUsTUFBTTtRQUNmLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDMUIsV0FBVyxFQUFFLE1BQU07S0FDcEIsQ0FBQztJQUNGLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ25CLFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFNBQVMsRUFBRSxRQUFRO0tBQ3BCLENBQUM7SUFDRixXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN6QixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxtQkFBbUI7S0FDL0IsQ0FBQztDQUNILENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2pCLFdBQVcsRUFDVCwrRUFBK0U7UUFDakYsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxPQUFPO0tBQ25CLENBQUM7Q0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tICdAb2NsaWYvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBjbGlGbGFncyA9IHtcbiAgdmVyYm9zZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdWZXJib3NlIG91dHB1dCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICd2JyxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy12LCAtLXZlcmJvc2UnLFxuICAgIGVudjogJ0RFQlVHJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSksXG4gIGpzb246IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOiAnb3V0cHV0IEpTT04gaW5zdGVhZCBvZiBodW1hbi1yZWFkYWJsZSB0YWJsZXMvc3RyZWFtcycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICdqJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy1qLCAtLWpzb24nLFxuICB9KSxcbiAgY3Vyc29yOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOiAncGFnaW5hdGlvbiBjdXJzb3IgZm9yIGxpc3QgY29tbWFuZHMnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tY3Vyc29yJyxcbiAgICBoZWxwVmFsdWU6ICdDVVJTT1InLFxuICB9KSxcbiAgYmFja2VuZDogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjogJ2JhY2tlbmQgdG8gaW5zcGVjdCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICdiJyxcbiAgICBkZWZhdWx0OiAnbG9jYWwnLFxuICAgIGVudjogJ1dPUktGTE9XX1RBUkdFVF9XT1JMRCcsXG4gICAgaGVscEdyb3VwOiAnVGFyZ2V0JyxcbiAgICBoZWxwTGFiZWw6ICctYiwgLS1iYWNrZW5kJyxcbiAgICBoZWxwVmFsdWU6IFsnbG9jYWwnLCAndmVyY2VsJywgJzx5b3VyLXBhY2thZ2UtbmFtZT4nXSxcbiAgICBkZWZhdWx0SGVscDogJ2xvY2FsJyxcbiAgfSksXG4gIGF1dGhUb2tlbjogRmxhZ3Muc3RyaW5nKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdBdXRoZW50aWNhdGlvbiB0b2tlbiB0byBiZSBwYXNzZWQgdG8gdGhlIGJhY2tlbmQuIElmIG5vdCBwcm92aWRlZCBhbmQgdGhlIGJhY2tlbmQgaXMgdmVyY2VsLCB3aWxsIGZhbGwgYmFjayB0byB0aGUgdG9rZW4gZ2VuZXJhdGVkIGJ5IGB2YyBsb2dpbmAuJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2EnLFxuICAgIGRlcGVuZHNPbjogWydiYWNrZW5kJ10sXG4gICAgZGVmYXVsdDogJycsXG4gICAgZW52OiAnV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU4nLFxuICAgIGhlbHBHcm91cDogJ1RhcmdldCcsXG4gICAgaGVscExhYmVsOiAnLWEsIC0tYXV0aFRva2VuJyxcbiAgICBoZWxwVmFsdWU6ICdUT0tFTicsXG4gIH0pLFxuICBwcm9qZWN0OiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0lmIGJhY2tlbmQgaXMgdmVyY2VsLCB0aGUgdmVyY2VsIHByb2plY3QgdG8gYXV0aGVudGljYXRlIGFnYWluc3QnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICBkZXBlbmRzT246IFsnYmFja2VuZCddLFxuICAgIGVudjogJ1dPUktGTE9XX1ZFUkNFTF9QUk9KRUNUJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy0tcHJvamVjdCcsXG4gICAgaGVscFZhbHVlOiAnUFJPSkVDVCcsXG4gIH0pLFxuICB0ZWFtOiBGbGFncy5zdHJpbmcoe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0lmIGJhY2tlbmQgaXMgdmVyY2VsLCB0aGUgdmVyY2VsIHRlYW0gdG8gYXV0aGVudGljYXRlIGFnYWluc3QnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXBlbmRzT246IFsnYmFja2VuZCddLFxuICAgIGRlZmF1bHQ6ICcnLFxuICAgIGVudjogJ1dPUktGTE9XX1ZFUkNFTF9URUFNJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy0tdGVhbScsXG4gICAgaGVscFZhbHVlOiAnVEVBTScsXG4gIH0pLFxuICBlbnY6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246ICdJZiBiYWNrZW5kIGlzIHZlcmNlbCwgdGhlIHZlcmNlbCBlbnZpcm9ubWVudCB0byB1c2UnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBvcHRpb25zOiBbJ3Byb2R1Y3Rpb24nLCAncHJldmlldyddLFxuICAgIGRlZmF1bHQ6ICdwcm9kdWN0aW9uJyxcbiAgICBjaGFyOiAnZScsXG4gICAgZGVwZW5kc09uOiBbJ2JhY2tlbmQnXSxcbiAgICBlbnY6ICdXT1JLRkxPV19WRVJDRUxfRU5WJyxcbiAgICBoZWxwR3JvdXA6ICdUYXJnZXQnLFxuICAgIGhlbHBMYWJlbDogJy1lLCAtLWVudicsXG4gICAgaGVscFZhbHVlOiBbJ3Byb2R1Y3Rpb24nLCAncHJldmlldyddLFxuICAgIGRlZmF1bHRIZWxwOiAncHJvZHVjdGlvbicsXG4gIH0pLFxuICB3ZWI6IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOiAnT3BlbiB0aGUgd2ViIFVJIGluc3RlYWQgb2YgZGlzcGxheWluZyBpbiB0ZXJtaW5hbCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGNoYXI6ICd3JyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy13LCAtLXdlYicsXG4gIH0pLFxuICB3ZWJQb3J0OiBGbGFncy5pbnRlZ2VyKHtcbiAgICBkZXNjcmlwdGlvbjogJ1BvcnQgdG8gdXNlIHdoZW4gbGF1bmNoaW5nIHRoZSB3ZWIgVUkgKGRlZmF1bHQ6IDM0NTYpJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogMzQ1NixcbiAgICBoZWxwR3JvdXA6ICdPdXRwdXQnLFxuICAgIGhlbHBMYWJlbDogJy0td2ViUG9ydCcsXG4gICAgaGVscFZhbHVlOiAnV0VCX1BPUlQnLFxuICAgIGVudjogJ1dPUktGTE9XX1dFQl9QT1JUJyxcbiAgfSksXG4gIG5vQnJvd3NlcjogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdEaXNhYmxlIGF1dG9tYXRpYyBicm93c2VyIG9wZW5pbmcgd2hlbiBsYXVuY2hpbmcgd2ViIFVJJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZW52OiAnV09SS0ZMT1dfRElTQUJMRV9CUk9XU0VSX09QRU4nLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1ub0Jyb3dzZXInLFxuICB9KSxcbiAgbG9jYWxVaTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVXNlIGxvY2FsIHdlYiBVSSBpbnN0ZWFkIG9mIFZlcmNlbCBkYXNoYm9hcmQgKHdoZW4gYmFja2VuZCBpcyB2ZXJjZWwpJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZW52OiAnV09SS0ZMT1dfTE9DQUxfVUknLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1sb2NhbFVpJyxcbiAgfSksXG4gIHN0YW5kYWxvbmU6IEZsYWdzLmJvb2xlYW4oe1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0Fsd2F5cyBzdGFydCB0aGUgc3RhbmRhbG9uZSB3ZWIgVUksIGV2ZW4gaWYgYW4gZW1iZWRkZWQgZGFzaGJvYXJkIChlLmcuIC9fd29ya2Zsb3cpIGlzIGFscmVhZHkgcnVubmluZycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGVudjogJ1dPUktGTE9XX1NUQU5EQUxPTkVfVUknLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS1zdGFuZGFsb25lJyxcbiAgfSksXG4gIHNvcnQ6IEZsYWdzLnN0cmluZyh7XG4gICAgZGVzY3JpcHRpb246ICdzb3J0IG9yZGVyIGZvciBsaXN0IGNvbW1hbmRzJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgb3B0aW9uczogWydhc2MnLCAnZGVzYyddLFxuICAgIGRlZmF1bHQ6ICdkZXNjJyxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tc29ydCcsXG4gICAgaGVscFZhbHVlOiBbJ2FzYycsICdkZXNjJ10sXG4gICAgZGVmYXVsdEhlbHA6ICdkZXNjJyxcbiAgfSksXG4gIGxpbWl0OiBGbGFncy5pbnRlZ2VyKHtcbiAgICBkZXNjcmlwdGlvbjogJ251bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiAyMCxcbiAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgIGhlbHBMYWJlbDogJy0tbGltaXQnLFxuICAgIGhlbHBWYWx1ZTogJ05VTUJFUicsXG4gIH0pLFxuICBpbnRlcmFjdGl2ZTogRmxhZ3MuYm9vbGVhbih7XG4gICAgZGVzY3JpcHRpb246ICdFbmFibGUgaW50ZXJhY3RpdmUgcGFnaW5hdGlvbiB3aXRoIGtleWJvYXJkIGNvbnRyb2xzJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgY2hhcjogJ2knLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLWksIC0taW50ZXJhY3RpdmUnLFxuICB9KSxcbn07XG5cbi8qKlxuICogRmxhZyBmb3IgcHJpbnRpbmcgYSBzaGFyZWFibGUgZGVlcC1saW5rIFVSTCBpbnN0ZWFkIG9mIG9wZW5pbmcgdGhlIHdlYiBVSS5cbiAqIE9ubHkgcmVsZXZhbnQgdG8gY29tbWFuZHMgdGhhdCBjYW4gb3BlbiBhIGRhc2hib2FyZCAoYGluc3BlY3RgLCBgd2ViYCksIHNvIGl0XG4gKiBpcyBleHBvcnRlZCBzZXBhcmF0ZWx5IHJhdGhlciB0aGFuIGJ1bmRsZWQgaW50byBgY2xpRmxhZ3NgLlxuICovXG5leHBvcnQgY29uc3QgdXJsRmxhZyA9IHtcbiAgdXJsOiBGbGFncy5ib29sZWFuKHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdQcmludCB0aGUgZGVlcC1saW5rIFVSTCB0byB0aGUgcnVuL2Rhc2hib2FyZCBhbmQgZXhpdCAobm8gYnJvd3Nlciwgbm8gc2VydmVyKScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGhlbHBHcm91cDogJ091dHB1dCcsXG4gICAgaGVscExhYmVsOiAnLS11cmwnLFxuICB9KSxcbn07XG4iXX0=
|
|
@@ -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;
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
205
|
-
|
|
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
|
-
|
|
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 @@
|
|
|
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
|
|
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,
|
|
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"}
|