bdy 1.25.10-stage → 1.25.12-dev
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/distTs/package.json +1 -1
- package/distTs/src/api/client.js +17 -2
- package/distTs/src/cliCommand.js +1 -0
- package/distTs/src/cliIndex.js +11 -5
- package/distTs/src/command/login.js +49 -35
- package/distTs/src/output/pipeline.js +69 -14
- package/distTs/src/output.js +53 -1
- package/distTs/src/texts.js +30 -12
- package/package.json +1 -1
package/distTs/package.json
CHANGED
package/distTs/src/api/client.js
CHANGED
|
@@ -48,6 +48,7 @@ let rateLimitWarned = false;
|
|
|
48
48
|
const formDataFileName = (name) => name.replace(/["\r\n]/g, (c) => ({ '"': '%22', '\r': '%0D', '\n': '%0A' })[c]);
|
|
49
49
|
exports.formDataFileName = formDataFileName;
|
|
50
50
|
class ApiClient {
|
|
51
|
+
static onRequestTrace;
|
|
51
52
|
client;
|
|
52
53
|
token;
|
|
53
54
|
refreshToken;
|
|
@@ -145,6 +146,8 @@ class ApiClient {
|
|
|
145
146
|
// retrying a POST could duplicate the operation.
|
|
146
147
|
const maxAttempts = method === 'GET' ? 3 : 1;
|
|
147
148
|
for (let attempt = 1;; attempt += 1) {
|
|
149
|
+
const started = performance.now();
|
|
150
|
+
ApiClient.onRequestTrace?.({ kind: 'request', method, path, query, attempt, maxAttempts });
|
|
148
151
|
try {
|
|
149
152
|
response = await this.client.request(opts);
|
|
150
153
|
}
|
|
@@ -152,17 +155,28 @@ class ApiClient {
|
|
|
152
155
|
logger_1.default.debug('API CLIENT RESPONSE ERROR');
|
|
153
156
|
logger_1.default.debug(err);
|
|
154
157
|
const retriable = RETRIABLE_NETWORK_ERROR.test(err.message);
|
|
158
|
+
const networkCode = err.code ?? err.cause?.code;
|
|
159
|
+
ApiClient.onRequestTrace?.({
|
|
160
|
+
kind: 'network_error', method, path, attempt, maxAttempts,
|
|
161
|
+
durationMs: Math.round(performance.now() - started),
|
|
162
|
+
errorCode: typeof networkCode === 'string' ? networkCode : undefined,
|
|
163
|
+
});
|
|
155
164
|
if (retriable && attempt < maxAttempts) {
|
|
156
|
-
|
|
165
|
+
const retryMs = attempt * 1000;
|
|
166
|
+
ApiClient.onRequestTrace?.({ kind: 'retry', method, path, attempt, maxAttempts, retryMs });
|
|
167
|
+
await (0, utils_1.sleep)(retryMs);
|
|
157
168
|
continue;
|
|
158
169
|
}
|
|
159
|
-
const networkCode = err.code ?? err.cause?.code;
|
|
160
170
|
const timeout = ['ETIMEDOUT', 'UND_ERR_CONNECT_TIMEOUT', 'UND_ERR_HEADERS_TIMEOUT', 'UND_ERR_BODY_TIMEOUT'].includes(networkCode);
|
|
161
171
|
throw new cliError_1.default(timeout ? 'timeout' : 'connection_error', timeout ? texts_1.ERR_REST_API_TIMEOUT : texts_1.ERR_REST_API_CONNECT_ERROR, timeout ? texts_1.TXT_CLI_RETRY_HINT : texts_1.TXT_CLI_ENDPOINT_HINT, { cause: err });
|
|
162
172
|
}
|
|
163
173
|
rateLimitReset = headerValue(response.headers['x-rate-limit-reset']);
|
|
164
174
|
status = response.statusCode;
|
|
165
175
|
responseBody = response.body;
|
|
176
|
+
ApiClient.onRequestTrace?.({
|
|
177
|
+
kind: 'response', method, path, attempt, maxAttempts, status,
|
|
178
|
+
durationMs: Math.round(performance.now() - started),
|
|
179
|
+
});
|
|
166
180
|
logger_1.default.debug(`API CLIENT RESPONSE STATUS: ${status}`);
|
|
167
181
|
const delay = attempt < maxAttempts
|
|
168
182
|
? retryDelay(status, attempt, rateLimitReset)
|
|
@@ -171,6 +185,7 @@ class ApiClient {
|
|
|
171
185
|
break;
|
|
172
186
|
await responseBody.dump();
|
|
173
187
|
logger_1.default.debug(`API CLIENT RETRY IN ${delay}ms`);
|
|
188
|
+
ApiClient.onRequestTrace?.({ kind: 'retry', method, path, attempt, maxAttempts, retryMs: delay });
|
|
174
189
|
await (0, utils_1.sleep)(delay);
|
|
175
190
|
}
|
|
176
191
|
this.warnRateLimitLow(headerValue(response.headers['x-rate-limit-remaining']), rateLimitReset);
|
package/distTs/src/cliCommand.js
CHANGED
|
@@ -63,6 +63,7 @@ class CliCommand extends commander_1.Command {
|
|
|
63
63
|
this.enablePositionalOptions();
|
|
64
64
|
this.option('--context <name>', texts_1.OPTION_CONTEXT);
|
|
65
65
|
this.option('--examples', texts_1.OPTION_EXAMPLES);
|
|
66
|
+
this.option('--verbose', texts_1.OPTION_VERBOSE);
|
|
66
67
|
}
|
|
67
68
|
addOption(option) {
|
|
68
69
|
if (option.long === '--format' && !option.argChoices) {
|
package/distTs/src/cliIndex.js
CHANGED
|
@@ -32,13 +32,15 @@ const mcp_1 = __importDefault(require("./command/mcp"));
|
|
|
32
32
|
const discover_1 = __importDefault(require("./command/discover"));
|
|
33
33
|
const context_1 = __importDefault(require("./command/context"));
|
|
34
34
|
const input_1 = __importDefault(require("./input"));
|
|
35
|
-
const cliError_1 = __importDefault(require("./cliError"));
|
|
36
35
|
const cliCommand_1 = __importDefault(require("./cliCommand"));
|
|
37
|
-
const
|
|
36
|
+
const client_1 = __importDefault(require("./api/client"));
|
|
38
37
|
function cliIndex() {
|
|
39
38
|
const program = (0, utils_1.newCommand)('bdy', texts_1.DESC_PROGRAM);
|
|
40
39
|
program.hook('preAction', (_, command) => {
|
|
41
40
|
const options = command.optsWithGlobals();
|
|
41
|
+
client_1.default.onRequestTrace = options.verbose
|
|
42
|
+
? output_1.default.apiTrace.bind(output_1.default)
|
|
43
|
+
: undefined;
|
|
42
44
|
input_1.default.configureContext(command instanceof cliCommand_1.default && command.usesDefaultContext
|
|
43
45
|
? { ...options, context: 'default' }
|
|
44
46
|
: options);
|
|
@@ -75,9 +77,13 @@ function cliIndex() {
|
|
|
75
77
|
program.addCommand(mcp_1.default);
|
|
76
78
|
program.addCommand(discover_1.default);
|
|
77
79
|
program.addCommand(context_1.default);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
// without this Commander rejects `bdy nope` as an excess argument before
|
|
81
|
+
// the action runs; let Commander report it as an unknown command instead,
|
|
82
|
+
// with the did-you-mean suggestion and the JSON error format
|
|
83
|
+
program.allowExcessArguments();
|
|
84
|
+
program.action(() => {
|
|
85
|
+
if (program.args.length > 0) {
|
|
86
|
+
program.unknownCommand();
|
|
81
87
|
}
|
|
82
88
|
program.help();
|
|
83
89
|
});
|
|
@@ -61,8 +61,14 @@ function generatePkcePair() {
|
|
|
61
61
|
.digest('base64url');
|
|
62
62
|
return { codeVerifier, codeChallenge };
|
|
63
63
|
}
|
|
64
|
-
async function waitForOpen(isRegister, abortCode, seconds = 3) {
|
|
64
|
+
async function waitForOpen(isRegister, abortCode, verbose = false, seconds = 3) {
|
|
65
65
|
output_1.default.normal(isRegister ? texts_1.TXT_REGISTER_OPENING : texts_1.TXT_LOGIN_OPENING);
|
|
66
|
+
if (verbose) {
|
|
67
|
+
const end = Date.now() + seconds * 1000;
|
|
68
|
+
while (Date.now() <= end && !abortCode.signal.aborted)
|
|
69
|
+
await (0, utils_1.sleep)(500);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
66
72
|
let star = true;
|
|
67
73
|
const now = Date.now();
|
|
68
74
|
for (;;) {
|
|
@@ -92,6 +98,7 @@ async function oauthServer(api, clientId, clientSecret, forceRegisterEmail, forc
|
|
|
92
98
|
const state = (0, uuid_1.v4)();
|
|
93
99
|
const { codeVerifier, codeChallenge } = generatePkcePair();
|
|
94
100
|
const abortCode = new AbortController();
|
|
101
|
+
let uiFinished;
|
|
95
102
|
const exchange = async (urlCode, urlState, res) => {
|
|
96
103
|
const client = new ApiClient(new URL(`https://${api}`));
|
|
97
104
|
try {
|
|
@@ -100,6 +107,10 @@ async function oauthServer(api, clientId, clientSecret, forceRegisterEmail, forc
|
|
|
100
107
|
res.end(urlState);
|
|
101
108
|
s.close();
|
|
102
109
|
abortCode.abort();
|
|
110
|
+
// The browser callback can finish while waitForOpen is still clearing
|
|
111
|
+
// its line. Let the login UI finish before the next request is traced.
|
|
112
|
+
if (res)
|
|
113
|
+
await uiFinished;
|
|
103
114
|
clearTimeout(ts);
|
|
104
115
|
resolve({
|
|
105
116
|
token: response.access_token,
|
|
@@ -135,45 +146,48 @@ async function oauthServer(api, clientId, clientSecret, forceRegisterEmail, forc
|
|
|
135
146
|
clearTimeout(ts);
|
|
136
147
|
output_1.default.exitError(texts_1.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN);
|
|
137
148
|
});
|
|
138
|
-
s.listen(OAUTH_CLIENT_APP_PORT, OAUTH_CLIENT_APP_HOST,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
await open(url);
|
|
145
|
-
}
|
|
146
|
-
catch {
|
|
147
|
-
// do nothing
|
|
148
|
-
}
|
|
149
|
-
await waitForOpen(isRegister, abortCode);
|
|
150
|
-
if (abortCode.signal.aborted)
|
|
151
|
-
return;
|
|
152
|
-
output_1.default.dim(isRegister ? texts_1.TXT_REGISTER_OPEN_URL : texts_1.TXT_LOGIN_OPEN_URL);
|
|
153
|
-
output_1.default.normal('');
|
|
154
|
-
output_1.default.dim(url.replace(/%/g, '%%'));
|
|
155
|
-
output_1.default.normal('');
|
|
156
|
-
for (;;) {
|
|
149
|
+
s.listen(OAUTH_CLIENT_APP_PORT, OAUTH_CLIENT_APP_HOST, () => {
|
|
150
|
+
uiFinished = (async () => {
|
|
151
|
+
let url = `https://${api}/oauth2/authorize?type=web_server&client_id=${encodeURIComponent(clientId)}&redirect_uri=${encodeURIComponent(redirectUrl)}&response_type=code&scope=${encodeURIComponent(OAUTH_CLIENT_APP_SCOPES.join(' '))}&state=${encodeURIComponent(state)}&code_challenge=${encodeURIComponent(codeChallenge)}&code_challenge_method=S256`;
|
|
152
|
+
if (isRegister) {
|
|
153
|
+
url += `®ister_email=${encodeURIComponent(forceRegisterEmail)}®ister_name=${encodeURIComponent(forceRegisterName)}`;
|
|
154
|
+
}
|
|
157
155
|
try {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
156
|
+
await open(url);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// do nothing
|
|
164
160
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
161
|
+
await waitForOpen(isRegister, abortCode, !!ApiClient.onRequestTrace);
|
|
162
|
+
if (abortCode.signal.aborted)
|
|
163
|
+
return;
|
|
164
|
+
output_1.default.dim(isRegister ? texts_1.TXT_REGISTER_OPEN_URL : texts_1.TXT_LOGIN_OPEN_URL);
|
|
165
|
+
output_1.default.normal('');
|
|
166
|
+
output_1.default.dim(url.replace(/%/g, '%%'));
|
|
167
|
+
output_1.default.normal('');
|
|
168
|
+
for (;;) {
|
|
169
|
+
try {
|
|
170
|
+
const code = await output_1.default.inputString(texts_1.TXT_LOGIN_PROVIDE_CODE, undefined, false, abortCode.signal);
|
|
171
|
+
const success = await exchange(code, state);
|
|
172
|
+
if (success) {
|
|
173
|
+
clearTimeout(ts);
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
170
176
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
177
|
+
catch (err) {
|
|
178
|
+
if (err.name === 'AbortPromptError') {
|
|
179
|
+
clearTimeout(ts);
|
|
180
|
+
if (!ApiClient.onRequestTrace)
|
|
181
|
+
output_1.default.clearPreviousLine();
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
else if (err.name === 'ExitPromptError') {
|
|
185
|
+
clearTimeout(ts);
|
|
186
|
+
output_1.default.exitError(isRegister ? texts_1.ERR_REGISTER_HTTP_CANCEL : texts_1.ERR_LOGIN_HTTP_CANCEL);
|
|
187
|
+
}
|
|
174
188
|
}
|
|
175
189
|
}
|
|
176
|
-
}
|
|
190
|
+
})();
|
|
177
191
|
});
|
|
178
192
|
});
|
|
179
193
|
}
|
|
@@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
const output_1 = __importDefault(require("../output"));
|
|
40
|
+
const input_1 = __importDefault(require("../input"));
|
|
40
41
|
const cliError_1 = __importStar(require("../cliError"));
|
|
41
42
|
const texts_1 = require("../texts");
|
|
42
43
|
const pipeline_1 = require("../types/pipeline");
|
|
@@ -523,13 +524,64 @@ class OutputPipeline {
|
|
|
523
524
|
const width = Number.isFinite(termWidth) && termWidth > 2 ? termWidth - 2 : 25;
|
|
524
525
|
return output_1.default.getTermKitDimColor(` ${'—'.repeat(width)}`);
|
|
525
526
|
}
|
|
526
|
-
|
|
527
|
-
|
|
527
|
+
// Suggested commands are meant to be run verbatim, also by agents in another
|
|
528
|
+
// directory, so they pin the workspace, project and a non-default context the
|
|
529
|
+
// current command resolved - otherwise they could reach a same-named
|
|
530
|
+
// pipeline in a different project
|
|
531
|
+
static _scopeFlags(workspace, project) {
|
|
532
|
+
const context = input_1.default.contextName();
|
|
533
|
+
return ` -w ${workspace} -p ${project}${context && context !== 'default' ? ` --context ${context}` : ''}`;
|
|
528
534
|
}
|
|
529
|
-
static
|
|
535
|
+
static _runActionsLogsHelp(identifier, runId, flags) {
|
|
536
|
+
return `${output_1.default.getTermKitDimColor(' To view action logs run: ')}${output_1.default.getTermKitMutedColor(`bdy pip run logs ${identifier} ${runId} <action-run-id>${flags}`)}`;
|
|
537
|
+
}
|
|
538
|
+
// Follow-up commands for the state a run ended in: inspect or retry a
|
|
539
|
+
// failure, approve a waiting action, or keep polling a run still going
|
|
540
|
+
static _runNextCommands(identifier, run, failedLogs, flags) {
|
|
541
|
+
const ref = `${identifier} ${run.runId}`;
|
|
542
|
+
switch (run.status) {
|
|
543
|
+
case pipeline_1.PIPELINE_RUN_STATUS.FAILED:
|
|
544
|
+
case pipeline_1.PIPELINE_RUN_STATUS.TERMINATED:
|
|
545
|
+
return [
|
|
546
|
+
...(failedLogs
|
|
547
|
+
? []
|
|
548
|
+
: [`bdy pip run status ${ref}${flags} --failed-logs --no-wait`]),
|
|
549
|
+
`bdy pip run retry ${ref}${flags}`,
|
|
550
|
+
];
|
|
551
|
+
case pipeline_1.PIPELINE_RUN_STATUS.WAITING_FOR_APPLY: {
|
|
552
|
+
const action = (run.actions || []).find((a) => a.status === pipeline_1.PIPELINE_RUN_STATUS.WAITING_FOR_APPLY);
|
|
553
|
+
return [
|
|
554
|
+
`bdy pip run approve ${ref} ${action?.runId || '<action-run-id>'}${flags}`,
|
|
555
|
+
];
|
|
556
|
+
}
|
|
557
|
+
case pipeline_1.PIPELINE_RUN_STATUS.INITIAL:
|
|
558
|
+
case pipeline_1.PIPELINE_RUN_STATUS.ENQUEUED:
|
|
559
|
+
case pipeline_1.PIPELINE_RUN_STATUS.INPROGRESS:
|
|
560
|
+
case pipeline_1.PIPELINE_RUN_STATUS.TERMINATING:
|
|
561
|
+
case pipeline_1.PIPELINE_RUN_STATUS.WAITING_FOR_VARIABLES:
|
|
562
|
+
case pipeline_1.PIPELINE_RUN_STATUS.WAITING_FOR_SETTABLE_VARIABLES:
|
|
563
|
+
case pipeline_1.PIPELINE_RUN_STATUS.WAITING_FOR_VT_SESSION:
|
|
564
|
+
return [`bdy pip run status ${ref}${flags} --exit-code`];
|
|
565
|
+
default:
|
|
566
|
+
return [];
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
static _runNext(identifier, run, failedLogs, isJson, flags) {
|
|
570
|
+
const commands = this._runNextCommands(identifier, run, failedLogs, flags);
|
|
571
|
+
if (!commands.length)
|
|
572
|
+
return;
|
|
573
|
+
if (isJson) {
|
|
574
|
+
output_1.default.json({ type: 'next', commands });
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
commands.forEach((command) => {
|
|
578
|
+
output_1.default.normal(`${output_1.default.getTermKitDimColor(` ${texts_1.TXT_PIPELINE_RUN_NEXT}`)}${output_1.default.getTermKitMutedColor(command)}`);
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
static _jsonActionsLogsHelp(identifier, runId, flags, actionRunId) {
|
|
530
582
|
if (!actionRunId)
|
|
531
583
|
actionRunId = '<action-run-id>';
|
|
532
|
-
return `To view action logs run: \`bdy pip run logs ${identifier} ${runId} ${actionRunId} --format jsonl\``;
|
|
584
|
+
return `To view action logs run: \`bdy pip run logs ${identifier} ${runId} ${actionRunId}${flags} --format jsonl\``;
|
|
533
585
|
}
|
|
534
586
|
static _runDetailsFinished(status, finished, tabs) {
|
|
535
587
|
if (finished &&
|
|
@@ -1179,22 +1231,22 @@ class OutputPipeline {
|
|
|
1179
1231
|
static jsonInfo(message) {
|
|
1180
1232
|
output_1.default.json({ type: 'info', message });
|
|
1181
1233
|
}
|
|
1182
|
-
static jsonAction(identifier, runId, action) {
|
|
1234
|
+
static jsonAction(identifier, runId, action, flags) {
|
|
1183
1235
|
const a = {
|
|
1184
1236
|
...action,
|
|
1185
1237
|
};
|
|
1186
1238
|
if (action.runId && !a.logs) {
|
|
1187
|
-
a.logs = this._jsonActionsLogsHelp(identifier, runId, action.runId);
|
|
1239
|
+
a.logs = this._jsonActionsLogsHelp(identifier, runId, flags, action.runId);
|
|
1188
1240
|
}
|
|
1189
1241
|
output_1.default.json({ type: 'action', action: a });
|
|
1190
1242
|
}
|
|
1191
|
-
static jsonRun(identifier, run) {
|
|
1243
|
+
static jsonRun(identifier, run, flags) {
|
|
1192
1244
|
const r = {
|
|
1193
1245
|
...run,
|
|
1194
1246
|
};
|
|
1195
1247
|
(r.actions || []).forEach((a) => {
|
|
1196
1248
|
if (a.runId && !a.logs) {
|
|
1197
|
-
a.logs = this._jsonActionsLogsHelp(identifier, run.runId, a.runId);
|
|
1249
|
+
a.logs = this._jsonActionsLogsHelp(identifier, run.runId, flags, a.runId);
|
|
1198
1250
|
}
|
|
1199
1251
|
});
|
|
1200
1252
|
output_1.default.json({ type: 'run', run: r });
|
|
@@ -1203,6 +1255,7 @@ class OutputPipeline {
|
|
|
1203
1255
|
output_1.default.json({ type: 'log', log });
|
|
1204
1256
|
}
|
|
1205
1257
|
static async _runLogsNonInteractive(client, workspace, project, identifier, pipelineId, runId, runActionId, noWait, isJson, semanticExitCode = false) {
|
|
1258
|
+
const flags = this._scopeFlags(workspace, project);
|
|
1206
1259
|
let action = null;
|
|
1207
1260
|
let actionLogsStart = 0;
|
|
1208
1261
|
let lastActionLogsStart = -1;
|
|
@@ -1235,7 +1288,7 @@ class OutputPipeline {
|
|
|
1235
1288
|
const draw = (logs) => {
|
|
1236
1289
|
if (!drawnStart && action) {
|
|
1237
1290
|
if (isJson) {
|
|
1238
|
-
this.jsonAction(identifier, runId, action);
|
|
1291
|
+
this.jsonAction(identifier, runId, action, flags);
|
|
1239
1292
|
}
|
|
1240
1293
|
else {
|
|
1241
1294
|
output_1.default.normal(this._runDetailsHeader());
|
|
@@ -1290,7 +1343,7 @@ class OutputPipeline {
|
|
|
1290
1343
|
if (logsEnd || (drawnStart && noWait && logs)) {
|
|
1291
1344
|
if (isJson) {
|
|
1292
1345
|
if (action)
|
|
1293
|
-
this.jsonAction(identifier, runId, action);
|
|
1346
|
+
this.jsonAction(identifier, runId, action, flags);
|
|
1294
1347
|
}
|
|
1295
1348
|
else {
|
|
1296
1349
|
if (logsEnd && action?.outputtedVariables.length) {
|
|
@@ -1347,9 +1400,11 @@ class OutputPipeline {
|
|
|
1347
1400
|
}, false, semanticExitCode);
|
|
1348
1401
|
}
|
|
1349
1402
|
static async _runStatusNonInteractive(client, workspace, project, identifier, pipelineId, runId, noWait, noFollow, isJson, semanticExitCode = false, failedLogs = false) {
|
|
1403
|
+
const flags = this._scopeFlags(workspace, project);
|
|
1350
1404
|
const finishRun = async (run) => {
|
|
1351
1405
|
if (failedLogs)
|
|
1352
1406
|
await this.failedActionLogs(client, workspace, project, pipelineId, run, isJson);
|
|
1407
|
+
this._runNext(identifier, run, failedLogs, isJson, flags);
|
|
1353
1408
|
this._exitByStatus(isJson, run.status, semanticExitCode);
|
|
1354
1409
|
};
|
|
1355
1410
|
let run = null;
|
|
@@ -1423,7 +1478,7 @@ class OutputPipeline {
|
|
|
1423
1478
|
totalFetchesCount += 1;
|
|
1424
1479
|
if (!noFollow || noWait) {
|
|
1425
1480
|
if (isJson)
|
|
1426
|
-
this.jsonRun(identifier, run);
|
|
1481
|
+
this.jsonRun(identifier, run, flags);
|
|
1427
1482
|
else
|
|
1428
1483
|
draw(run);
|
|
1429
1484
|
}
|
|
@@ -1435,7 +1490,7 @@ class OutputPipeline {
|
|
|
1435
1490
|
// Even --no-follow must identify the run before reporting an unknown status.
|
|
1436
1491
|
if (noFollow && !noWait) {
|
|
1437
1492
|
if (isJson)
|
|
1438
|
-
this.jsonRun(identifier, run);
|
|
1493
|
+
this.jsonRun(identifier, run, flags);
|
|
1439
1494
|
else
|
|
1440
1495
|
draw(run);
|
|
1441
1496
|
}
|
|
@@ -1446,7 +1501,7 @@ class OutputPipeline {
|
|
|
1446
1501
|
await finishRun(run);
|
|
1447
1502
|
}, false, semanticExitCode);
|
|
1448
1503
|
if (isJson) {
|
|
1449
|
-
this.jsonRun(identifier, run);
|
|
1504
|
+
this.jsonRun(identifier, run, flags);
|
|
1450
1505
|
}
|
|
1451
1506
|
else {
|
|
1452
1507
|
if (totalFetchesCount > 1 || noFollow) {
|
|
@@ -1486,7 +1541,7 @@ class OutputPipeline {
|
|
|
1486
1541
|
}
|
|
1487
1542
|
}
|
|
1488
1543
|
output_1.default.normal(this._dimLine());
|
|
1489
|
-
output_1.default.normal(this._runActionsLogsHelp(identifier, runId));
|
|
1544
|
+
output_1.default.normal(this._runActionsLogsHelp(identifier, runId, flags));
|
|
1490
1545
|
}
|
|
1491
1546
|
await finishRun(run);
|
|
1492
1547
|
}
|
package/distTs/src/output.js
CHANGED
|
@@ -39,6 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
const texts_1 = require("./texts");
|
|
40
40
|
const utils_1 = require("./utils");
|
|
41
41
|
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const node_http_1 = require("node:http");
|
|
42
43
|
const node_readline_1 = require("node:readline");
|
|
43
44
|
const cliError_1 = __importStar(require("./cliError"));
|
|
44
45
|
let _terminal = null;
|
|
@@ -52,6 +53,7 @@ function getTerminal() {
|
|
|
52
53
|
class Output {
|
|
53
54
|
static errorFormat = 'text';
|
|
54
55
|
static errorExitCode = 1;
|
|
56
|
+
static inlineOutput = false;
|
|
55
57
|
static s;
|
|
56
58
|
static _a;
|
|
57
59
|
static launchBrowser(url) {
|
|
@@ -185,6 +187,7 @@ class Output {
|
|
|
185
187
|
}
|
|
186
188
|
static newline() {
|
|
187
189
|
getTerminal()('\n');
|
|
190
|
+
this.inlineOutput = false;
|
|
188
191
|
}
|
|
189
192
|
static muted(txt, newLine = true) {
|
|
190
193
|
this.normal(this.getMutedColor(txt), newLine);
|
|
@@ -194,6 +197,7 @@ class Output {
|
|
|
194
197
|
if (newLine)
|
|
195
198
|
msg += '\n';
|
|
196
199
|
getTerminal()(msg);
|
|
200
|
+
this.inlineOutput = !newLine;
|
|
197
201
|
}
|
|
198
202
|
static progress(quiet, output = this.normal.bind(this)) {
|
|
199
203
|
return (txt, newLine = true, replacePrevious = false) => {
|
|
@@ -210,6 +214,7 @@ class Output {
|
|
|
210
214
|
// chunk boundaries out of the payload.
|
|
211
215
|
static data(txt, newLine = true) {
|
|
212
216
|
process.stdout.write(newLine ? `${txt}\n` : txt);
|
|
217
|
+
this.inlineOutput = !newLine;
|
|
213
218
|
}
|
|
214
219
|
static examples(command, examples, format) {
|
|
215
220
|
if (format === 'json')
|
|
@@ -239,6 +244,49 @@ class Output {
|
|
|
239
244
|
static noteWarning(txt) {
|
|
240
245
|
this.writeStderr(this.getYellowColor(txt));
|
|
241
246
|
}
|
|
247
|
+
static apiTrace(event) {
|
|
248
|
+
if (this.inlineOutput && process.stdout.isTTY && process.stderr.isTTY) {
|
|
249
|
+
process.stderr.write('\n');
|
|
250
|
+
this.inlineOutput = false;
|
|
251
|
+
}
|
|
252
|
+
const color = (value, tone) => process.stderr.isTTY ? chalk_1.default[tone](value) : value;
|
|
253
|
+
const url = new URL(event.path, 'https://api.invalid');
|
|
254
|
+
const segments = url.pathname.split('/');
|
|
255
|
+
for (let i = 1; i < segments.length; i += 1) {
|
|
256
|
+
if (/^(token|secret|password|api[-_]?key|credential)s?$/i.test(segments[i - 1])) {
|
|
257
|
+
segments[i] = '[redacted]';
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const safePath = segments.join('/');
|
|
261
|
+
if (event.kind === 'request') {
|
|
262
|
+
const safeQuery = new URLSearchParams();
|
|
263
|
+
for (const [key, value] of url.searchParams) {
|
|
264
|
+
if (['page', 'per_page', 'offset', 'limit'].includes(key) && /^\d+$/.test(value))
|
|
265
|
+
safeQuery.append(key, value);
|
|
266
|
+
}
|
|
267
|
+
for (const [key, value] of Object.entries(event.query || {})) {
|
|
268
|
+
if (['page', 'per_page', 'offset', 'limit'].includes(key) && /^\d+$/.test(value))
|
|
269
|
+
safeQuery.set(key, value);
|
|
270
|
+
}
|
|
271
|
+
const suffix = safeQuery.size ? `?${safeQuery}` : '';
|
|
272
|
+
const attempt = event.attempt > 1 ? ` (attempt ${event.attempt}/${event.maxAttempts})` : '';
|
|
273
|
+
this.writeStderr(` ${color('→', 'cyan')} ${event.method} ${safePath}${suffix}${attempt}`);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
if (event.kind === 'response') {
|
|
277
|
+
const status = event.status || 0;
|
|
278
|
+
const tone = status >= 500 ? 'red' : status >= 400 ? 'yellow' : 'green';
|
|
279
|
+
this.writeStderr(` ${color('←', tone)} ${event.method} ${safePath} · ${color(`${status} ${node_http_1.STATUS_CODES[status] || ''}`.trim(), tone)} · ${event.durationMs} ms`);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
if (event.kind === 'network_error') {
|
|
283
|
+
this.writeStderr(` ${color('←', 'red')} connection error${event.errorCode ? ` (${event.errorCode})` : ''} · ${event.durationMs} ms`);
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const delay = event.retryMs || 0;
|
|
287
|
+
const wait = delay >= 1000 ? `${delay / 1000} s` : `${delay} ms`;
|
|
288
|
+
this.writeStderr(` ${color('↻', 'yellow')} retry in ${wait} (attempt ${event.attempt + 1}/${event.maxAttempts})`);
|
|
289
|
+
}
|
|
242
290
|
static gray(txt, newLine = true) {
|
|
243
291
|
this.normal(this.getMutedColor(txt), newLine);
|
|
244
292
|
}
|
|
@@ -441,14 +489,18 @@ class Output {
|
|
|
441
489
|
if (this.isStdInTTY()) {
|
|
442
490
|
const prompts = require('@inquirer/prompts');
|
|
443
491
|
try {
|
|
444
|
-
|
|
492
|
+
this.inlineOutput = true;
|
|
493
|
+
const value = await prompts.input({
|
|
445
494
|
required,
|
|
446
495
|
message,
|
|
447
496
|
default: def,
|
|
448
497
|
theme: this.getInquirerTheme(),
|
|
449
498
|
}, { signal });
|
|
499
|
+
this.inlineOutput = true;
|
|
500
|
+
return value;
|
|
450
501
|
}
|
|
451
502
|
catch (err) {
|
|
503
|
+
this.inlineOutput = true;
|
|
452
504
|
if (err.name === 'AbortPromptError')
|
|
453
505
|
throw err;
|
|
454
506
|
this.exitError(texts_1.ERR_CANCELLED);
|
package/distTs/src/texts.js
CHANGED
|
@@ -4,10 +4,10 @@ exports.ERR_AGENT_NOT_REGISTERED = exports.ERR_SANDBOX_BOOT_SCRIPT_NOT_EXISTS =
|
|
|
4
4
|
exports.ERR_NOT_FOUND = exports.ERR_FAILED_TO_CONNECT_TO_AGENT = exports.ERR_TUNNEL_REMOVED = exports.ERR_TUNNELS_DISABLED = exports.ERR_AGENT_LIMIT_REACHED = exports.ERR_TUNNEL_TARGET_INVALID = exports.ERR_WORKSPACE_FLAGGED = exports.ERR_TUNNEL_LIMIT_REACHED = exports.ERR_DOMAIN_RESTRICTED = exports.ERR_AGENT_REMOVED = exports.ERR_FAILED_TO_CONNECT = exports.ERR_TUNNEL_ALREADY_EXISTS = exports.ERR_AGENT_NOT_SUPPORTED = exports.TXT_AGENT_APP_INSTALL_ORPHANED = exports.ERR_AGENT_APP_INSTALL_PRESENT = exports.ERR_AGENT_CONFIG_UNREADABLE = exports.ERR_AGENT_PORT_TAKEN = exports.ERR_AGENT_USER_UNKNOWN = exports.ERR_AGENT_DIR_REPLACED = exports.ERR_AGENT_ADMIN_RIGHTS = exports.ERR_SWW_AGENT_UPDATING = exports.ERR_SWW_AGENT_ENABLING = exports.ERR_AGENT_TAG_INVALID = exports.ERR_AGENT_NOT_FOUND = exports.ERR_AGENT_NOT_RUNNING = exports.ERR_AGENT_IS_NOT_SERVICE = exports.ERR_AGENT_NOT_INSTALLED = exports.ERR_TUNNEL_NOT_FOUND = exports.ERR_WHITELIST_IS_NOT_VALID = exports.ERR_USER_AGENT_IS_NOT_VALID = exports.ERR_BA_IS_NOT_VALID = exports.ERR_BA_LOGIN_NOT_PROVIDED = exports.ERR_BA_PASSWORD_NOT_PROVIDED = exports.ERR_CB_THRESHOLD_IS_NOT_VALID = exports.ERR_CERT_PATH_IS_NOT_VALID = exports.ERR_KEY_PATH_IS_NOT_VALID = exports.ERR_CA_PATH_IS_NOT_VALID = exports.ERR_WRONG_CA = exports.ERR_WRONG_KEY_CERT = exports.ERR_NAME_WITHOUT_ASTERISK = exports.ERR_PORT_IS_NOT_VALID = exports.ERR_REGION_IS_NOT_VALID = exports.ERR_SERVE_PATH_NOT_PROVIDED = exports.ERR_PATH_IS_NOT_DIRECTORY = exports.ERR_DIRECTORY_DOES_NOT_EXISTS = exports.ERR_TERMINATE_IS_NOT_VALID = exports.ERR_TIMEOUT_IS_NOT_VALID = exports.ERR_TYPE_IS_NOT_VALID = exports.ERR_TARGET_IS_NOT_VALID = exports.ERR_SAVING_AGENT_CONFIG = void 0;
|
|
5
5
|
exports.TXT_AGENT_PROXY_DISABLED = exports.TXT_AGENT_PROXY_ENABLED = exports.TXT_AGENT_TARGET_DISABLED = exports.TXT_AGENT_TARGET_ENABLED = exports.TXT_AGENT_RESTARTED = exports.TXT_AGENT_DEBUG_OFF = exports.TXT_AGENT_DEBUG_ON = exports.TXT_AGENT_USER_CHANGED = exports.TXT_AGENT_STARTED = exports.TXT_AGENT_STOPPED = exports.WARN_BROWSER_VERSION = exports.ERR_RESOURCE_DISCOVERY = exports.ERR_NO_SNAPSHOTS_TO_SEND = exports.ERR_INVALID_SNAPSHOT = exports.ERR_TEST_EXECUTION = exports.ERR_INVALID_JSON = exports.ERR_INVALID_DOWNLOAD_RESPONSE = exports.ERR_INVALID_CRAWL_RESPONSE = exports.ERR_INVALID_COMPARE_LINKS_RESPONSE = exports.ERR_INVALID_STORYBOOK_RESPONSE = exports.ERR_INVALID_DEFAULT_SETTINGS_RESPONSE = exports.ERR_INVALID_CLOSE_SESSION_RESPONSE = exports.ERR_INVALID_SNAPSHOTS_RESPONSE = exports.ERR_INVALID_SNAPSHOT_RESPONSE = exports.ERR_MISSING_URLS = exports.ERR_RESOURCE_NOT_FOUND = exports.ERR_MISSING_EXEC_COMMAND = exports.ERR_PARSING_STORIES = exports.ERR_UNSUPPORTED_STORYBOOK = exports.ERR_MISSING_STORYBOOK_INDEX_FILE = exports.ERR_WRONG_STORYBOOK_DIRECTORY = exports.ERR_MISSING_BUILD_ID = exports.ERR_MISSING_UT_TOKEN = exports.ERR_MISSING_CRAWL_TOKEN = exports.ERR_MISSING_VT_TOKEN = exports.ERR_CONFIG_CORRUPTED = exports.ERR_WRONG_TOKEN = exports.ERR_TOKEN_NOT_PROVIDED = exports.ERR_CANT_CREATE_DIR_IN_HOME = exports.ERR_CONNECTION_ERROR = exports.ERR_CONNECTION_TIMEOUT = exports.ERR_WRONG_STREAM = exports.ERR_WRONG_HANDSHAKE = exports.ERR_FETCH_VERSION = exports.ERR_ARTIFACT_DOWNLOAD_REPLACE = exports.ERR_ARTIFACT_DOWNLOAD_NOT_EMPTY_DIR = exports.ERR_ARTIFACT_DOWNLOAD_IS_FILE = exports.ERR_ARTIFACT_DOWNLOAD_READDIR = exports.ERR_ARTIFACT_DOWNLOAD_MKDIR = exports.ERR_SWW = void 0;
|
|
6
6
|
exports.DESC_COMMAND_AGENT_TUNNEL_REMOVE = exports.DESC_COMMAND_AGENT_TUNNEL_STATUS = exports.DESC_COMMAND_AGENT_TUNNEL_LIST = exports.DESC_COMMAND_CONFIG_SET = exports.DESC_COMMAND_CONFIG_REMOVE = exports.DESC_COMMAND_CONFIG_GET = exports.DESC_COMMAND_CONFIG_ADD = exports.DESC_COMMAND_CONFIG_SET_WHITELIST = exports.DESC_COMMAND_CONFIG_SET_TOKEN = exports.DESC_COMMAND_CONFIG_SET_TIMEOUT = exports.DESC_COMMAND_CONFIG_SET_REGION = exports.DESC_COMMAND_CONFIG_REMOVE_TOKEN = exports.DESC_COMMAND_CONFIG_REMOVE_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_WHITELIST = exports.DESC_COMMAND_CONFIG_GET_TUNNELS = exports.DESC_COMMAND_CONFIG_GET_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_TOKEN = exports.DESC_COMMAND_CONFIG_GET_TIMEOUT = exports.DESC_COMMAND_CONFIG_GET_REGION = exports.DESC_COMMAND_CONFIG_ADD_TLS = exports.DESC_COMMAND_CONFIG_ADD_TCP = exports.DESC_COMMAND_CONFIG_ADD_HTTP = exports.AGENT_FETCH_RETRY = exports.NO_TUNNELS_STARTED = exports.TXT_AGENT_STANDALONE_EXITING = exports.TXT_AGENT_STANDALONE_STARTED = exports.TXT_AGENT_STANDALONE_AGENT_REGISTER_ERROR = exports.TXT_AGENT_STANDALONE_AGENT_REGISTERED = exports.TXT_AGENT_STANDALONE_AGENT_REGISTERING = exports.TXT_AGENT_STANDALONE_AGENT_FETCH_ERROR = exports.TXT_AGENT_STANDALONE_AGENT_FETCHED = exports.TXT_AGENT_STANDALONE_AGENT_FETCHING = exports.TXT_TUNNEL_ADDED = exports.TXT_TUNNEL_REMOVED = exports.TXT_REGION_SAVED = exports.TXT_TIMEOUT_SAVED = exports.TXT_TOKEN_REMOVED = exports.TXT_TOKEN_SAVED = exports.TXT_WHITELIST_SAVED = exports.TXT_TUNNEL_STOPPED = exports.TXT_TUNNEL_STARTED = exports.TXY_AGENT_CONFIRM_DELETE = exports.TXT_AGENT_DISABLED = exports.TXT_AGENT_ALREADY_INSTALLED = exports.TXT_AGENT_UPDATED = exports.TXT_AGENT_INSTALLED = exports.TXT_AGENT_NO_TAGS = exports.TXT_AGENT_TAGS_SET = exports.TXT_AGENT_TUNNELING_DISABLED = exports.TXT_AGENT_TUNNELING_ENABLED = void 0;
|
|
7
|
-
exports.DESC_COMMAND_PIPELINE_RUN_CANCEL = exports.DESC_COMMAND_PIPELINE_RUN_LOGS = exports.DESC_COMMAND_PIPELINE_RUN_STATUS = exports.DESC_COMMAND_PIPELINE_RUN_START = exports.DESC_COMMAND_PIPELINE_RUN = exports.DESC_COMMAND_ARTIFACT_DOWNLOAD = exports.DESC_COMMAND_ARTIFACT_PUBLISH = exports.DESC_COMMAND_ARTIFACT_VERSION_CREATE = exports.DESC_COMMAND_ARTIFACT = exports.DESC_COMMAND_PIPELINE = exports.
|
|
8
|
-
exports.TXT_ENABLING_AGENT = exports.TXT_NEW_AGENT_VERSION = exports.TXT_NEW_CLI_DOCKER_VERSION = exports.OPTION_UPLOAD_DRY_RUN = exports.OPTION_UPLOAD_REPORT_FORMAT = exports.OPTION_UPLOAD_REPORT_GLOB = exports.TXT_COMMAND_SUITE_CREATED = exports.TXT_COMMAND_SUITE_NAME = exports.TXT_COMMAND_SUITE_LINK_EXISTING_DESC = exports.TXT_COMMAND_SUITE_LINK_EXISTING = exports.TXT_COMMAND_SUITE_CREATE_NEW_UT_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW_CRAWL_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW_VT_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW = exports.TXT_COMMAND_SUITE_SELECT = exports.ERR_NO_UT_SUITES = exports.ERR_NO_CRAWL_SUITES = exports.ERR_NO_VT_SUITES = exports.TXT_COMMAND_UT_LINK_SUCCESS = exports.TXT_COMMAND_CRAWL_LINK_SUCCESS = exports.TXT_COMMAND_VT_LINK_SUCCESS = exports.TXT_COMMAND_UT_LINK_SELECT = exports.TXT_COMMAND_CRAWL_LINK_SELECT = exports.TXT_COMMAND_VT_LINK_SELECT = exports.OPTION_STORYBOOK_DIRECTORY = exports.OPTION_SUITE_IDENTIFIER = exports.DESC_COMMAND_UT_LINK = exports.DESC_COMMAND_CRAWL_LINK = exports.DESC_COMMAND_VT_LINK = exports.DESC_COMMAND_UT_UPLOAD = exports.DESC_COMMAND_CRAWL_RUN = exports.DESC_COMMAND_CRAWL = exports.DESC_COMMAND_CAPTURE = exports.DESC_COMMAND_VISUAL_UPLOAD = exports.DESC_COMMAND_VISUAL_SETUP = exports.DESC_COMMAND_SESSION_CLOSE = exports.DESC_COMMAND_SESSION_CREATE = exports.DESC_COMMAND_SESSION = exports.DESC_COMMAND_VISUAL = exports.DESC_COMMAND_UNIT = exports.DESC_COMMAND_TESTS = exports.DESC_COMMAND_PIPELINE_RUN_RETRY = exports.DESC_COMMAND_PIPELINE_GET = exports.DESC_COMMAND_PIPELINE_UPDATE = exports.DESC_COMMAND_PIPELINE_DELETE = exports.DESC_COMMAND_PIPELINE_CREATE = exports.DESC_COMMAND_PIPELINE_YAML = exports.DESC_COMMAND_PIPELINE_LIST = exports.DESC_COMMAND_PIPELINE_RUN_LIST =
|
|
9
|
-
exports.OPTION_PIPELINE_RUN_ENVIRONMENT = exports.OPTION_PIPELINE_RUN_DELAY = exports.OPTION_PIPELINE_RUN_PAYLOAD = exports.ERR_RUN_PAYLOAD_TOO_MANY_FILES = exports.ERR_RUN_PAYLOAD_NOT_UPLOADED = exports.ERR_RUN_PAYLOAD_TOO_LARGE = exports.ERR_RUN_PAYLOAD_NO_ENTRIES = exports.ERR_RUN_VAR_FILE_INVALID = exports.ERR_RUN_VAR_FILE_NOT_FOUND = exports.OPTION_RUN_SINGLE_VAR_FILE = exports.OPTION_RUN_VAR_FILE = exports.OPTION_RUN_VAR = exports.OPTION_PIPELINE_RUN_PRIORITY = exports.OPTION_PIPELINE_RUN_CLEAR_CACHE = exports.OPTION_PIPELINE_RUN_REFRESH = exports.OPTION_PIPELINE_RUN_COMMENT = exports.OPTION_PIPELINE_RUN_PULL_REQUEST = exports.OPTION_PIPELINE_RUN_REVISION = exports.OPTION_PIPELINE_RUN_TAG = exports.OPTION_PIPELINE_RUN_BRANCH = exports.OPTION_REST_API_REGION = exports.OPTION_REST_API_ENDPOINT = exports.OPTION_DEFAULT_REGION = exports.OPTION_REGION = exports.TXT_ARTIFACT_UNZIPPING_COUNT = exports.TXT_ARTIFACT_UNZIPPED = exports.TXT_ARTIFACT_UNZIPPING = exports.TXT_ARTIFACT_DOWNLOADED_ZIP = exports.TXT_ARTIFACT_DOWNLOADING_ZIP = exports.TXT_ARTIFACT_DOWNLOADED = exports.TXT_ARTIFACT_IGNORED_ENTRIES = exports.TXT_ARTIFACT_ENTRIES_FOUND = exports.TXT_ARTIFACT_UPLOADED = exports.TXT_ARTIFACT_UPLOADING = exports.TXT_ARTIFACT_ZIPPED = exports.TXT_ARTIFACT_ZIP_ENTRIES = exports.TXT_ARTIFACT_ONE_ENTRY_FOUND = exports.TXT_ARTIFACT_NO_ENTRIES_FOUND = exports.TXT_ARTIFACT_SCANNING_DIR = exports.TXT_ARTIFACT_README_NOT_FOUND = exports.TXT_ARTIFACT_README_TOO_LARGE = exports.TXT_ARTIFACT_README_FOUND = exports.ERR_ARTIFACT_COMPOSER_NAME_MISMATCH = exports.ERR_ARTIFACT_COMPOSER_VERSION_MISSING = exports.ERR_ARTIFACT_README_OUTSIDE = exports.ERR_ARTIFACT_COMPOSER_INVALID = exports.ERR_ARTIFACT_COMPOSER_NOT_FOUND = exports.TXT_STORIES_AMOUNT = exports.TXT_OPENING_TUNNEL =
|
|
10
|
-
exports.OPTION_REST_API_PER_PAGE = exports.OPTION_REST_API_PAGE = exports.OPTION_REST_API_PROJECT = exports.OPTION_REST_API_WORKSPACE = exports.OPTION_FORMAT_JSONL = exports.OPTION_FORMAT = exports.HELP_COMMAND_DISCOVER = exports.DISCOVERY_TIPS = exports.EXAMPLE_DISCOVER = exports.TXT_DISCOVER_COMMAND_HINT = exports.ERR_DISCOVER_UNKNOWN_COMMAND = exports.OPTION_DISCOVER_FULL = exports.OPTION_DISCOVER_COMMAND = exports.DESC_COMMAND_DISCOVER = exports.OPTION_EXAMPLES = exports.TXT_COMMAND_EXAMPLES = exports.DESC_COMMAND_UPDATE = exports.OPTION_VERSION = exports.OPTION_PIPELINE_RUN_NO_FOLLOW = exports.ERR_PIPELINE_RUN_STATUS_UNKNOWN = exports.TXT_TARGET_EXEC_RECOVERY = exports.ERR_EXEC_STATUS_UNKNOWN = exports.OPTION_EXEC_FORMAT_JSON = exports.OPTION_EXEC_FORMAT_JSONL = exports.OPTION_EXEC_EXIT_CODE = exports.OPTION_PIPELINE_RUN_NO_WAIT = exports.OPTION_PIPELINE_RUN_ACTION = exports.OPTION_REST_API_TOKEN = exports.OPTION_ARTIFACT_DOWNLOAD_REPLACE = exports.OPTION_ARTIFACT_DOWNLOAD_MERGE = exports.OPTION_ARTIFACT_IGNORE = exports.OPTION_ARTIFACT_PUBLISH_OVERWRITE_VERSION = exports.OPTION_ARTIFACT_VERSION_AGENT_NOTE = exports.OPTION_ARTIFACT_VERSION_NOTE = exports.OPTION_ARTIFACT_VERSION_FROM = exports.OPTION_ARTIFACT_PUBLISH_CREATE = exports.OPTION_ARTIFACT_ID = exports.OPTION_ARTIFACT_DOWNLOAD_PATH = exports.OPTION_ARTIFACT_PUBLISH_PATH = exports.OPTION_ARTIFACT_COMPOSE_PUBLISH_PATH = exports.OPTION_PIPELINE_RUN_ACTION_ID = exports.OPTION_PIPELINE_RUN_ID = exports.OPTION_PIPELINE_YAML = exports.TXT_PIPELINE_DELETED = exports.TXT_PIPELINE_DELETE_CONFIRM = exports.TXT_PIPELINE_UPDATED = exports.TXT_PIPELINE_CREATED = exports.OPTION_PIPELINE_NAME = exports.OPTION_PIPELINE_IDENTIFIER =
|
|
7
|
+
exports.DESC_COMMAND_PIPELINE_RUN_APPLY = exports.DESC_COMMAND_PIPELINE_RUN_CANCEL = exports.DESC_COMMAND_PIPELINE_RUN_LOGS = exports.DESC_COMMAND_PIPELINE_RUN_STATUS = exports.DESC_COMMAND_PIPELINE_RUN_START = exports.DESC_COMMAND_PIPELINE_RUN = exports.DESC_COMMAND_ARTIFACT_DOWNLOAD = exports.DESC_COMMAND_ARTIFACT_PUBLISH = exports.DESC_COMMAND_ARTIFACT_VERSION_CREATE = exports.DESC_COMMAND_ARTIFACT = exports.DESC_COMMAND_PIPELINE = exports.DESC_PROGRAM = exports.DESC_COMMAND_TLS = exports.DESC_COMMAND_TCP = exports.DESC_COMMAND_START = exports.DESC_COMMAND_TUNNEL = exports.DESC_COMMAND_AGENT = exports.DESC_COMMAND_HTTP = exports.DESC_COMMAND_CONFIG = exports.DESC_COMMAND_AGENT_VERSION = exports.DESC_COMMAND_AGENT_USER = exports.DESC_COMMAND_AGENT_UPDATE = exports.OPT_COMMAND_AGENT_TAGS_SET = exports.DESC_COMMAND_AGENT_TAGS_SET = exports.DESC_COMMAND_AGENT_TAGS_GET = exports.DESC_COMMAND_AGENT_TAGS = exports.DESC_COMMAND_AGENT_PROXY = exports.DESC_COMMAND_AGENT_TARGET = exports.DESC_COMMAND_AGENT_TUNNEL_START = exports.DESC_COMMAND_AGENT_TUNNEL_TLS = exports.DESC_COMMAND_AGENT_TUNNEL_TCP = exports.DESC_COMMAND_AGENT_TUNNEL_HTTP = exports.DESC_COMMAND_AGENT_TUNNEL = exports.DESC_COMMAND_AGENT_STOP = exports.DESC_COMMAND_AGENT_PROXY_DISABLE = exports.DESC_COMMAND_AGENT_TARGET_DISABLE = exports.DESC_COMMAND_AGENT_TUNNELING_DISABLE = exports.DESC_COMMAND_AGENT_TUNNELING_ENABLE = exports.DESC_COMMAND_AGENT_PROXY_ENABLE = exports.DESC_COMMAND_AGENT_TARGET_ENABLE = exports.DESC_COMMAND_AGENT_PROXY_STATUS = exports.DESC_COMMAND_AGENT_TARGET_STATUS = exports.DESC_COMMAND_AGENT_STATUS = exports.DESC_COMMAND_AGENT_RESTART = exports.DESC_COMMAND_AGENT_ENABLE = exports.DESC_COMMAND_AGENT_DEBUG = exports.DESC_COMMAND_AGENT_DISABLE = exports.DESC_COMMAND_AGENT_START = exports.DESC_COMMAND_AGENT_INSTALL = exports.DESC_COMMAND_AGENT_UNINSTALL = void 0;
|
|
8
|
+
exports.TXT_UPDATING_AGENT = exports.TXT_ENABLING_AGENT = exports.TXT_NEW_AGENT_VERSION = exports.TXT_NEW_CLI_DOCKER_VERSION = exports.OPTION_UPLOAD_DRY_RUN = exports.OPTION_UPLOAD_REPORT_FORMAT = exports.OPTION_UPLOAD_REPORT_GLOB = exports.TXT_COMMAND_SUITE_CREATED = exports.TXT_COMMAND_SUITE_NAME = exports.TXT_COMMAND_SUITE_LINK_EXISTING_DESC = exports.TXT_COMMAND_SUITE_LINK_EXISTING = exports.TXT_COMMAND_SUITE_CREATE_NEW_UT_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW_CRAWL_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW_VT_DESC = exports.TXT_COMMAND_SUITE_CREATE_NEW = exports.TXT_COMMAND_SUITE_SELECT = exports.ERR_NO_UT_SUITES = exports.ERR_NO_CRAWL_SUITES = exports.ERR_NO_VT_SUITES = exports.TXT_COMMAND_UT_LINK_SUCCESS = exports.TXT_COMMAND_CRAWL_LINK_SUCCESS = exports.TXT_COMMAND_VT_LINK_SUCCESS = exports.TXT_COMMAND_UT_LINK_SELECT = exports.TXT_COMMAND_CRAWL_LINK_SELECT = exports.TXT_COMMAND_VT_LINK_SELECT = exports.OPTION_STORYBOOK_DIRECTORY = exports.OPTION_SUITE_IDENTIFIER = exports.DESC_COMMAND_UT_LINK = exports.DESC_COMMAND_CRAWL_LINK = exports.DESC_COMMAND_VT_LINK = exports.DESC_COMMAND_UT_UPLOAD = exports.DESC_COMMAND_CRAWL_RUN = exports.DESC_COMMAND_CRAWL = exports.DESC_COMMAND_CAPTURE = exports.DESC_COMMAND_VISUAL_UPLOAD = exports.DESC_COMMAND_VISUAL_SETUP = exports.DESC_COMMAND_SESSION_CLOSE = exports.DESC_COMMAND_SESSION_CREATE = exports.DESC_COMMAND_SESSION = exports.DESC_COMMAND_VISUAL = exports.DESC_COMMAND_UNIT = exports.DESC_COMMAND_TESTS = exports.DESC_COMMAND_PIPELINE_RUN_RETRY = exports.DESC_COMMAND_PIPELINE_GET = exports.DESC_COMMAND_PIPELINE_UPDATE = exports.DESC_COMMAND_PIPELINE_DELETE = exports.DESC_COMMAND_PIPELINE_CREATE = exports.DESC_COMMAND_PIPELINE_YAML = exports.DESC_COMMAND_PIPELINE_LIST = exports.DESC_COMMAND_PIPELINE_RUN_LIST = void 0;
|
|
9
|
+
exports.OPTION_PIPELINE_RUN_ARTIFACT = exports.OPTION_PIPELINE_RUN_ENVIRONMENT = exports.OPTION_PIPELINE_RUN_DELAY = exports.OPTION_PIPELINE_RUN_PAYLOAD = exports.ERR_RUN_PAYLOAD_TOO_MANY_FILES = exports.ERR_RUN_PAYLOAD_NOT_UPLOADED = exports.ERR_RUN_PAYLOAD_TOO_LARGE = exports.ERR_RUN_PAYLOAD_NO_ENTRIES = exports.ERR_RUN_VAR_FILE_INVALID = exports.ERR_RUN_VAR_FILE_NOT_FOUND = exports.OPTION_RUN_SINGLE_VAR_FILE = exports.OPTION_RUN_VAR_FILE = exports.OPTION_RUN_VAR = exports.OPTION_PIPELINE_RUN_PRIORITY = exports.OPTION_PIPELINE_RUN_CLEAR_CACHE = exports.OPTION_PIPELINE_RUN_REFRESH = exports.OPTION_PIPELINE_RUN_COMMENT = exports.OPTION_PIPELINE_RUN_PULL_REQUEST = exports.OPTION_PIPELINE_RUN_REVISION = exports.OPTION_PIPELINE_RUN_TAG = exports.OPTION_PIPELINE_RUN_BRANCH = exports.OPTION_REST_API_REGION = exports.OPTION_REST_API_ENDPOINT = exports.OPTION_DEFAULT_REGION = exports.OPTION_REGION = exports.TXT_ARTIFACT_UNZIPPING_COUNT = exports.TXT_ARTIFACT_UNZIPPED = exports.TXT_ARTIFACT_UNZIPPING = exports.TXT_ARTIFACT_DOWNLOADED_ZIP = exports.TXT_ARTIFACT_DOWNLOADING_ZIP = exports.TXT_ARTIFACT_DOWNLOADED = exports.TXT_ARTIFACT_IGNORED_ENTRIES = exports.TXT_ARTIFACT_ENTRIES_FOUND = exports.TXT_ARTIFACT_UPLOADED = exports.TXT_ARTIFACT_UPLOADING = exports.TXT_ARTIFACT_ZIPPED = exports.TXT_ARTIFACT_ZIP_ENTRIES = exports.TXT_ARTIFACT_ONE_ENTRY_FOUND = exports.TXT_ARTIFACT_NO_ENTRIES_FOUND = exports.TXT_ARTIFACT_SCANNING_DIR = exports.TXT_ARTIFACT_README_NOT_FOUND = exports.TXT_ARTIFACT_README_TOO_LARGE = exports.TXT_ARTIFACT_README_FOUND = exports.ERR_ARTIFACT_COMPOSER_NAME_MISMATCH = exports.ERR_ARTIFACT_COMPOSER_VERSION_MISSING = exports.ERR_ARTIFACT_README_OUTSIDE = exports.ERR_ARTIFACT_COMPOSER_INVALID = exports.ERR_ARTIFACT_COMPOSER_NOT_FOUND = exports.TXT_STORIES_AMOUNT = exports.TXT_OPENING_TUNNEL = void 0;
|
|
10
|
+
exports.OPTION_REST_API_PER_PAGE = exports.OPTION_REST_API_PAGE = exports.OPTION_REST_API_PROJECT = exports.OPTION_REST_API_WORKSPACE = exports.OPTION_VERBOSE = exports.OPTION_FORMAT_JSONL = exports.OPTION_FORMAT = exports.HELP_COMMAND_DISCOVER = exports.DISCOVERY_TIPS = exports.EXAMPLE_DISCOVER = exports.TXT_DISCOVER_COMMAND_HINT = exports.ERR_DISCOVER_UNKNOWN_COMMAND = exports.OPTION_DISCOVER_FULL = exports.OPTION_DISCOVER_COMMAND = exports.DESC_COMMAND_DISCOVER = exports.OPTION_EXAMPLES = exports.TXT_COMMAND_EXAMPLES = exports.DESC_COMMAND_UPDATE = exports.OPTION_VERSION = exports.OPTION_PIPELINE_RUN_NO_FOLLOW = exports.ERR_PIPELINE_RUN_STATUS_UNKNOWN = exports.TXT_TARGET_EXEC_RECOVERY = exports.ERR_EXEC_STATUS_UNKNOWN = exports.OPTION_EXEC_FORMAT_JSON = exports.OPTION_EXEC_FORMAT_JSONL = exports.OPTION_EXEC_EXIT_CODE = exports.OPTION_PIPELINE_RUN_NO_WAIT = exports.OPTION_PIPELINE_RUN_ACTION = exports.OPTION_REST_API_TOKEN = exports.OPTION_ARTIFACT_DOWNLOAD_REPLACE = exports.OPTION_ARTIFACT_DOWNLOAD_MERGE = exports.OPTION_ARTIFACT_IGNORE = exports.OPTION_ARTIFACT_PUBLISH_OVERWRITE_VERSION = exports.OPTION_ARTIFACT_VERSION_AGENT_NOTE = exports.OPTION_ARTIFACT_VERSION_NOTE = exports.OPTION_ARTIFACT_VERSION_FROM = exports.OPTION_ARTIFACT_PUBLISH_CREATE = exports.OPTION_ARTIFACT_ID = exports.OPTION_ARTIFACT_DOWNLOAD_PATH = exports.OPTION_ARTIFACT_PUBLISH_PATH = exports.OPTION_ARTIFACT_COMPOSE_PUBLISH_PATH = exports.OPTION_PIPELINE_RUN_ACTION_ID = exports.OPTION_PIPELINE_RUN_ID = exports.OPTION_PIPELINE_YAML = exports.TXT_PIPELINE_DELETED = exports.TXT_PIPELINE_DELETE_CONFIRM = exports.TXT_PIPELINE_UPDATED = exports.TXT_PIPELINE_CREATED = exports.OPTION_PIPELINE_NAME = exports.OPTION_PIPELINE_IDENTIFIER = void 0;
|
|
11
11
|
exports.OPTION_EXEC_COMMAND = exports.OPTION_AGENT_DEBUG = exports.OPTION_AGENT_PORT = exports.OPTION_AGENT_TAG = exports.OPTION_AGENT_TUNNELING = exports.OPTION_AGENT_PROXY = exports.OPTION_AGENT_TARGET = exports.OPTION_PASS = exports.OPTION_APP = exports.OPTION_USER = exports.OPTION_AGENT_TOKEN = exports.OPTION_AGENT_START = exports.OPTION_AGENT_ID = exports.OPTION_ID = exports.OPTION_NAME = exports.OPTION_TARGET = exports.OPTION_TLS_TERMINATE = exports.OPTION_TLS_CA = exports.OPTION_TLS_CERT = exports.OPTION_TLS_KEY = exports.OPTION_HTTP_CIRCUIT_BREAKER = exports.OPTION_HTTP_COMPRESSION = exports.OPTION_HTTP_2 = exports.OPTION_HTTP_VERIFY = exports.OPTION_HTTP_LOG = exports.OPTION_HTTP_AUTH_BUDDY = exports.OPTION_HTTP_AUTH = exports.OPTION_HTTP_HOST = exports.OPTION_CONFIRM_DOMAIN_BUY = exports.OPTION_CONFIRM_FORCE = exports.OPTION_FORCE = exports.OPTION_TOKEN = exports.OPTION_TIMEOUT = exports.OPTION_FOLLOW = exports.OPTION_SERVE_SANDBOX = exports.OPTION_SERVE = exports.OPTION_HEADER_USER_AGENT = exports.OPTION_RESPONSE_HEADER = exports.OPTION_HEADER = exports.OPTION_WHITELIST = exports.ERR_REST_API_PER_PAGE = exports.ERR_REST_API_PAGE = exports.HELP_PROJECT_LIST_PAGINATION = exports.ERR_ARTIFACT_VERSION_WWW_PATH = exports.ERR_ARTIFACT_VERSION_WWW_TYPE = exports.ERR_WORKSPACE_OPEN_NOT_FOUND = exports.TXT_RESOURCE_BROWSER_OPEN_FAILED = exports.ERR_RESOURCE_BROWSER_URL_MISSING = exports.OPTION_ARTIFACT_VERSION_WWW = exports.DESC_COMMAND_RESOURCE_OPEN = void 0;
|
|
12
12
|
exports.LOG_AGENT_SERVICE_LEGACY_WRAPPER = exports.LOG_AGENT_WRAPPER_SIGNATURE_UNKNOWN = exports.LOG_AGENT_WRAPPER_SIGNED_BY = exports.LOG_AGENT_WRAPPER_VERIFYING = exports.LOG_AGENT_ENABLED = exports.LOG_AGENT_STARTING_SYSTEM = exports.LOG_AGENT_STOPPING_SYSTEM = exports.LOG_AGENT_ENABLING_SYSTEM = exports.LOG_AGENT_SYSTEM_SERVICE_CONFIG = exports.LOG_AGENT_EXTRACTING_ARCHIVE = exports.LOG_AGENT_DOWNLOADING_ARCHIVE = exports.LOG_AGENT_SYSTEM_DIR = exports.LOG_ERROR_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_ERROR_REMOVING_AGENT_STANDALONE_LOCK_FILE = exports.LOG_ERROR_SAVING_AGENT_STANDALONE_CONFIG = exports.LOG_ERROR_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_REMOVING_AGENT_PROC_ID = exports.LOG_SAVING_AGENT_PROC_ID = exports.LOG_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_REGISTERING_AGENT = exports.OPTION_CRAWL_OUTPUT_TYPES = exports.OPTION_CRAWL_OUTPUT_DIR = exports.OPTION_CRAWL_DELAY = exports.OPTION_CRAWL_LOCAL_STORAGE = exports.OPTION_CRAWL_DEVICES = exports.OPTION_CRAWL_BROWSERS = exports.OPTION_CRAWL_COLOR_SCHEME = exports.OPTION_CRAWL_XPATH_SELECTOR = exports.OPTION_CRAWL_CSS_SELECTOR = exports.OPTION_CRAWL_FULL_PAGE = exports.OPTION_CRAWL_QUALITY = exports.OPTION_CRAWL_OUTPUT_TYPE = exports.OPTION_CRAWL_FOLLOW = exports.OPTION_CRAWL_URL = exports.OPTION_COMPARE_WAIT_FOR = exports.OPTION_COMPARE_DELAY = exports.OPTION_COMPARE_HEADER = exports.OPTION_COMPARE_COOKIE = exports.OPTION_COMPARE_IGNORE = exports.OPTION_COMPARE_IGNORE_URLS = exports.OPTION_COMPARE_DRY_RUN = exports.OPTION_COMPARE_URLS_FILE = exports.OPTION_COMPARE_SITEMAP = exports.OPTION_COMPARE_URLS = exports.OPTION_COMPARE_RESPECT_ROBOTS = exports.OPTION_COMPARE_FOLLOW = exports.OPTION_EXEC_PARALLEL = exports.OPTION_EXEC_ONE_BY_ONE = exports.OPTION_EXEC_SKIP_DISCOVERY = void 0;
|
|
13
13
|
exports.LOG_AGENT_UPDATE_ATTEMPT = exports.LOG_AGENT_UPDATE_COMMITTED = exports.LOG_AGENT_UPDATE_BINARY_INVALID = exports.ERR_AGENT_UPDATE_IN_PROGRESS = exports.LOG_AGENT_UPDATE_UNINSTALLED = exports.LOG_AGENT_UPDATE_VERSION_MISMATCH = exports.LOG_AGENT_UPDATE_FAILED = exports.LOG_AGENT_UPDATE_SWAPPED = exports.LOG_AGENT_UPDATE_NOT_NEEDED = exports.LOG_AGENT_UPDATE_NO_ADMIN = exports.LOG_AGENT_UPDATE_STANDALONE = exports.LOG_AGENT_UPDATE_REQUESTED = exports.LOG_AGENT_RIGHTS_SKIPPED = exports.LOG_AGENT_RIGHTS_DIR_SKIPPED = exports.LOG_AGENT_SERVER_STARTED = exports.LOG_ERROR_STARTING_AGENT_SERVER = exports.LOG_SSH_CONNECTION = exports.LOG_LATE_TARGET_ERROR = exports.LOG_LATE_CHANNEL_ERROR = exports.LOG_HANDSHAKE_TIMEOUT = exports.LOG_WRONG_STREAM = exports.LOG_DETECTED_STREAM = exports.LOG_HTTP2_SESSION_TIMEOUT = exports.LOG_HTTP2_SESSION_SHED_TAIL = exports.LOG_HTTP2_SESSION_SHED = exports.LOG_HTTP2_REQUEST = exports.LOG_HTTP2_CONNECTION = exports.LOG_HTTP1_REQUEST = exports.LOG_HTTP1_CONNECTION = exports.LOG_ERROR = exports.LOG_STOPPING_TUNNEL = exports.LOG_STARTING_TUNNEL = exports.LOG_ENABLING_AGENT_TUNNELING = exports.LOG_ENABLING_AGENT_PROXY = exports.LOG_ENABLING_AGENT_TARGET = exports.LOG_DISABLING_AGENT_TUNNELING = exports.LOG_DISABLING_AGENT_PROXY = exports.LOG_DISABLING_AGENT_TARGET = exports.LOG_REMOVING_TUNNEL = exports.LOG_TUNNEL_REGISTERED = exports.LOG_ERROR_WHILE_REFRESHING_AGENT = exports.LOG_REGISTERING_TUNNEL = exports.LOG_GETTING_AGENT = exports.LOG_UNREGISTERING_AGENT = exports.LOG_REGION_DETECTED = exports.LOG_AGENT_REGISTERED = exports.LOG_SOCKET_DISCONNECTED = exports.LOG_SOCKET_CONNECTED = exports.ERR_AGENT_WRAPPER_SIGNATURE = exports.ERR_AGENT_WRAPPER_MISSING = void 0;
|
|
@@ -21,10 +21,10 @@ exports.OPT_COMMAND_ROUTE_SUBDOMAIN = exports.OPT_COMMAND_ROUTE_TYPE = exports.O
|
|
|
21
21
|
exports.DESC_COMMAND_ARTIFACT_COMPOSER = exports.DESC_COMMAND_ARTIFACT_VERSION = exports.ERR_COMMAND_DOMAIN_UNAVAILABLE = exports.OPTION_COMMAND_DOMAIN_IDENTIFIER = exports.ERR_COMMAND_DOMAIN_NO_DOMAINS = exports.TXT_COMMAND_DOMAIN_PROMPT_REQUIRED = exports.TXT_COMMAND_DOMAIN_BUY_SELECT_DOMAIN = exports.TXT_COMMAND_DOMAIN_PROVIDE_PROMPT = exports.ERR_COMMAND_DOMAIN_NOT_FOUND = exports.OPT_COMMAND_DOMAIN_ONLY_AVAILABLE = exports.OPT_COMMAND_DOMAIN_SORT = exports.OPT_COMMAND_DOMAIN_PHRASE = exports.OPT_COMMAND_DOMAIN_BUY_OWNER = exports.OPT_COMMAND_DOMAIN_BUY_TLD = exports.DESC_COMMAND_DOMAIN_GET = exports.DESC_COMMAND_DOMAIN_LIST = exports.DESC_COMMAND_DOMAIN_SEARCH = exports.DESC_COMMAND_DOMAIN_BUY = exports.DESC_COMMAND_DOMAIN = exports.ERR_ROUTE_NO_DEFAULT = exports.ERR_WRONG_ROUTE_TARGET = exports.ERR_COMMAND_ROUTE_NO_TARGET = exports.ERR_COMMAND_ROUTE_TYPE = exports.TXT_COMMAND_ROUTES_NOT_FOUND = exports.TXT_COMMAND_DISTROS_NOT_FOUND = exports.TXT_COMMAND_ROUTE_DELETED = exports.TXT_COMMAND_DISTRO_DELETED = exports.TXT_COMMAND_ROUTE_DELETE_CONFIRM = exports.TXT_COMMAND_DISTRO_DELETE_CONFIRM = exports.ERR_COMMAND_DISTRO_ENABLE_DISABLE = exports.ERR_COMMAND_NO_UPDATE = exports.ERR_COMMAND_DISTRO_NOT_FOUND = exports.ERR_COMMAND_SCOPE = exports.TXT_COMMAND_DISTRO_UPDATED = exports.TXT_COMMAND_ROUTE_UPDATED = exports.TXT_ROUTE_SERVE = exports.TXT_COMMAND_ROUTE_CREATED = exports.TXT_COMMAND_DISTRO_CREATED = exports.ERR_COMMAND_SCOPE_NO_ENVIRONMENT = exports.ERR_COMMAND_SCOPE_NO_PROJECT = exports.OPT_COMMAND_DISTRO_DISABLE = exports.OPT_COMMAND_DISTRO_ENABLE = exports.OPT_COMMAND_DISTRO_AGENT_NOTE = exports.OPT_COMMAND_DISTRO_NOTE = exports.OPT_COMMAND_DISTRO_NAME = exports.OPT_COMMAND_ROUTE_TARGET = exports.OPT_COMMAND_ROUTE_AGENT_NOTE = exports.OPT_COMMAND_ROUTE_NOTE = exports.OPT_COMMAND_ROUTE_PATH = exports.OPT_COMMAND_ROUTE_DOMAIN = void 0;
|
|
22
22
|
exports.TXT_COMMAND_PROJECT_LINK_NAME = exports.TXT_COMMAND_PROJECT_LINK_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_LINK_TO = exports.TXT_COMMAND_PROJECT_LINK_EXISTING_DESC = exports.TXT_COMMAND_PROJECT_LINK_EXISTING = exports.TXT_COMMAND_PROJECT_LINK_CREATE_NEW_DESC = exports.TXT_COMMAND_PROJECT_LINK_CREATE_NEW = exports.ERR_COMMAND_PROJECT_LINK_DIR_NOT_DIR = exports.TXT_COMMAND_PROJECT_LINK_GIT_REPO_INITIALIZED = exports.TXT_COMMAND_PROJECT_LINK_GIT_REPO = exports.TXT_COMMAND_PROJECT_LINK_DIR_CONFIRM = exports.TXT_COMMAND_PROJECT_LINK_DIR_LINKED = exports.ERR_COMMAND_PROJECT_LINK_DIR_CREATE = exports.OPT_COMMAND_PROJECT_LINK_TRY_NOW = exports.OPT_COMMAND_PROJECT_LINK_SET_GIT_REMOTE = exports.OPT_COMMAND_PROJECT_LINK_HAS_REMOTE = exports.OPT_COMMAND_PROJECT_LINK_DIRECTORY = exports.OPT_COMMAND_PROJECT_LINK_GIT = exports.OPT_COMMAND_PROJECT_LINK_RELINK = exports.DESC_COMMAND_PROJECT_LINK = exports.DESC_COMMAND_PROJECT_LIST = exports.DESC_COMMAND_PROJECT_GIT = exports.DESC_COMMAND_PROJECT_GIT_CREDENTIAL = exports.DESC_COMMAND_PROJECT = exports.TXT_ARTIFACT_VERSION_DOWNLOAD = exports.TXT_ARTIFACT_PUBLISH = exports.TXT_ARTIFACT_CREATED = exports.TXT_ARTIFACT_VERSION_DELETED = exports.TXT_ARTIFACT_DELETED = exports.ERR_COMMAND_ARTIFACT_TYPE = exports.OPT_COMMAND_ARTIFACT_VERSION = exports.OPT_COMMAND_ARTIFACT_IDENTIFIER = exports.OPT_COMMAND_ARTIFACT_CREATE_IDENTIFIER = exports.OPT_COMMAND_ARTIFACT_NAME = exports.OPT_COMMAND_ARTIFACT_TYPE = exports.DESC_COMMAND_ARTIFACT_CREATE = exports.DESC_COMMAND_ARTIFACT_COMPOSER_PUBLISH = exports.DESC_COMMAND_ARTIFACT_GET = exports.TXT_ARTIFACT_DOCKER_LOGIN_FAILED = exports.TXT_ARTIFACT_DOCKER_LOGIN_SUCCESS = exports.TXT_ARTIFACT_VERSION_DELETE_CONFIRM = exports.TXT_ARTIFACT_DELETE_CONFIRM = exports.DESC_COMMAND_ARTIFACT_DELETE = exports.ERR_COMMAND_ARTIFACT_NO_PROJECTS = exports.DESC_COMMAND_ARTIFACT_VERSION_GET = exports.DESC_COMMAND_ARTIFACT_VERSION_LIST = exports.DESC_COMMAND_ARTIFACT_VERSION_DELETE = exports.DESC_COMMAND_ARTIFACT_DOCKER = exports.DESC_COMMAND_ARTIFACT_DOCKER_LOGIN = exports.DESC_COMMAND_ARTIFACT_LIST = void 0;
|
|
23
23
|
exports.EXAMPLE_TARGET_EXEC_KILL = exports.EXAMPLE_TARGET_EXEC_STATUS = exports.EXAMPLE_TARGET_EXEC_COMMAND = exports.EXAMPLE_TARGET_DELETE = exports.EXAMPLE_TARGET_UPDATE = exports.EXAMPLE_TARGET_CREATE = exports.EXAMPLE_TARGET_GET = exports.EXAMPLE_TARGET_LIST = exports.EXAMPLE_SANDBOX_SNAPSHOT_LIST = exports.EXAMPLE_SANDBOX_SNAPSHOT_GET = exports.EXAMPLE_SANDBOX_SNAPSHOT_DELETE = exports.EXAMPLE_SANDBOX_SNAPSHOT_CREATE = exports.EXAMPLE_SANDBOX_EXEC_STATUS = exports.EXAMPLE_SANDBOX_EXEC_LOGS = exports.EXAMPLE_SANDBOX_APP_STATUS = exports.EXAMPLE_SANDBOX_APP_STOP = exports.EXAMPLE_SANDBOX_APP_REMOVE = exports.EXAMPLE_SANDBOX_APP_ADD = exports.EXAMPLE_SANDBOX_APP_START = exports.EXAMPLE_SANDBOX_APP_LOGS = exports.EXAMPLE_SANDBOX_EXEC_LIST = exports.EXAMPLE_SANDBOX_APP_LIST = exports.EXAMPLE_SANDBOX_EXEC_KILL = exports.EXAMPLE_SANDBOX_SSH = exports.EXAMPLE_SANDBOX_EXEC_COMMAND = exports.EXAMPLE_TUNNEL_START = exports.EXAMPLE_TUNNEL_TCP = exports.EXAMPLE_TUNNEL_TLS = exports.EXAMPLE_AGENT_TUNNEL_START = exports.EXAMPLE_AGENT_TUNNEL_STATUS = exports.EXAMPLE_AGENT_TUNNEL_REMOVE = exports.EXAMPLE_AGENT_TUNNEL_LIST = exports.EXAMPLE_TUNNEL_HTTP = exports.EXAMPLE_SANDBOX_CREATE = exports.EXAMPLE_DISTRO_CREATE = exports.EXAMPLE_ROUTE_CREATE = exports.EXAMPLE_ROUTE_LIST = exports.EXAMPLE_ROUTE_UPDATE = exports.EXAMPLE_ROUTE_DELETE = exports.EXAMPLE_DISTRO_DELETE = exports.EXAMPLE_ROUTE_GET = exports.EXAMPLE_DISTRO_UPDATE = exports.EXAMPLE_DISTRO_GET = exports.EXAMPLE_DISTRO_LIST = exports.EXAMPLE_SANDBOX_CP = exports.TXT_PROJECT_PAGE_EMPTY = exports.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_CREATED = exports.TXT_COMMAND_PROJECT_LINK_NOT_FOUND = void 0;
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
exports.
|
|
27
|
-
exports.HELP_CONTEXT_REMOVE = exports.HELP_CONTEXT_USE = exports.HELP_CONTEXT_SHOW = exports.HELP_CONTEXT_LIST = exports.HELP_CONTEXT_ADD = exports.EXAMPLE_CONTEXT_REMOVE = exports.EXAMPLE_CONTEXT_USE = exports.EXAMPLE_CONTEXT_SHOW = exports.EXAMPLE_CONTEXT_LIST = exports.EXAMPLE_CONTEXT_ADD = exports.TXT_CONTEXT_TOKEN_MISSING = exports.TXT_CONTEXT_TOKEN_AVAILABLE = exports.TXT_CONTEXT_TOKEN_LABEL = exports.TXT_CONTEXT_REMOTE_LABEL = exports.TXT_CONTEXT_API_LABEL = exports.TXT_CONTEXT_PROJECT_LABEL = exports.TXT_CONTEXT_WORKSPACE_LABEL = exports.TXT_CONTEXT_SOURCE_LABEL = exports.TXT_CONTEXT_LABEL = exports.TXT_CONTEXT_REMOVE_CONFIRM = exports.ERR_CONTEXT_GIT_FAILED = exports.ERR_CONTEXT_GIT_TIMEOUT = exports.TXT_CONTEXT_PROJECT_HINT = exports.TXT_CONTEXT_WORKSPACE_HINT = exports.HELP_CONTEXT = exports.TXT_CONTEXT_REMOVED = exports.TXT_CONTEXT_ACTIVE = exports.TXT_CONTEXT_SAVED = exports.ERR_CONTEXT_LINK_INVALID = exports.ERR_CONTEXT_LINK_MISSING = exports.ERR_CONTEXT_GIT_URL = exports.ERR_CONTEXT_GIT_REMOTE = exports.ERR_CONTEXT_GIT_REPO = exports.ERR_CONTEXT_GIT_MISSING = void 0;
|
|
24
|
+
exports.EXAMPLE_PIPELINE_RUN_FIND = exports.HELP_PIPELINE_RUN_FIND = exports.TXT_PIPELINE_RUN_FIND_MORE = exports.TXT_PIPELINE_RUN_FIND_SUMMARY = exports.TXT_PIPELINE_RUN_FIND_COLUMNS = exports.ERR_PIPELINE_RUN_FIND_FILTER = exports.ERR_PIPELINE_RUN_FIND_LAST = exports.OPTION_PIPELINE_RUN_FIND_STATUS = exports.OPTION_PIPELINE_RUN_FIND_ARTIFACT = exports.OPTION_PIPELINE_RUN_FIND_ENVIRONMENT = exports.OPTION_PIPELINE_RUN_FIND_FROM_REVISION = exports.OPTION_PIPELINE_RUN_FIND_REVISION = exports.OPTION_PIPELINE_RUN_FIND_PR = exports.OPTION_PIPELINE_RUN_FIND_TAG = exports.OPTION_PIPELINE_RUN_FIND_BRANCH = exports.OPTION_PIPELINE_RUN_FIND_LAST = exports.DESC_COMMAND_PIPELINE_RUN_FIND = exports.EXAMPLE_PIPELINE_LIST = exports.EXAMPLE_PIPELINE_YML = exports.EXAMPLE_PIPELINE_GET = exports.EXAMPLE_PIPELINE_UPDATE = exports.EXAMPLE_PIPELINE_DELETE = exports.EXAMPLE_PIPELINE_CREATE = exports.EXAMPLE_PIPELINE_RUN_CANCEL = exports.EXAMPLE_PIPELINE_RUN_APPLY = exports.EXAMPLE_PIPELINE_RUN_LOGS = exports.HELP_PIPELINE_RUN_LOGS = exports.HELP_PIPELINE_RUN_STATUS = exports.TXT_PIPELINE_RUN_NEXT = exports.HELP_PIPELINE_RUN_JSONL = exports.EXAMPLE_PIPELINE_RUN_STATUS = exports.HELP_PIPELINE_RUN_FAILED_LOGS = exports.TXT_PIPELINE_FAILED_LOGS_ERROR = exports.TXT_PIPELINE_FAILED_LOGS_EMPTY = exports.ERR_PIPELINE_FAILED_LOGS_COUNT = exports.TXT_PIPELINE_FAILED_LOGS_HEADER = exports.OPTION_PIPELINE_RUN_FAILED_LOGS = exports.FAILED_LOGS_LIMIT = exports.EXAMPLE_PIPELINE_RUN_START = exports.EXAMPLE_SANDBOX_ENDPOINT_LIST = exports.EXAMPLE_SANDBOX_ENDPOINT_GET = exports.EXAMPLE_SANDBOX_ENDPOINT_DELETE = exports.EXAMPLE_SANDBOX_ENDPOINT_CREATE = exports.EXAMPLE_ENVIRONMENT_DELETE = exports.EXAMPLE_ENVIRONMENT_UPDATE = exports.EXAMPLE_ENVIRONMENT_CREATE = exports.EXAMPLE_ENVIRONMENT_GET = exports.EXAMPLE_ENVIRONMENT_LIST = exports.EXAMPLE_TARGET_EXEC_LOGS = exports.EXAMPLE_TARGET_EXEC_LIST = void 0;
|
|
25
|
+
exports.ERR_YAML_MUST_BE = exports.ERR_YAML_PIPELINE_NOT_OBJECT = exports.ERR_YAML_EMPTY_ARRAY = exports.ERR_YAML_PLAIN_OBJECT = exports.ERR_YAML_NOT_ARRAY = exports.ERR_YAML_PARSE = exports.ERR_YAML_VALIDATE_FAILED_COUNT = exports.TXT_YAML_VALIDATE_ALL_PASS = exports.ERR_YAML_VALIDATE_FAILED = exports.ERR_YAML_VALIDATE_FILE_NOT_FOUND = exports.OPTION_YAML_VALIDATE_FILE = exports.DESC_COMMAND_YAML_VALIDATE = exports.DESC_COMMAND_YAML_ACTIONS_INFO = exports.DESC_COMMAND_YAML_ACTIONS_LIST = exports.DESC_COMMAND_YAML_ACTIONS = exports.DESC_COMMAND_YAML_PIPELINE = exports.DESC_COMMAND_YAML = exports.TXT_ACTION_SUGGESTED_FROM_REPO = exports.TXT_ACTION_USE_LIST = exports.TXT_ACTION_DID_YOU_MEAN = exports.ERR_ACTION_SEARCH_NO_RESULTS = exports.ERR_ACTION_NOT_FOUND = exports.OPTION_ACTION_TYPE = exports.OPTION_ACTION_SEARCH = exports.EXAMPLE_YAML_VALIDATE = exports.EXAMPLE_YAML_ACTIONS_INFO = exports.EXAMPLE_YAML_ACTIONS_LIST = exports.EXAMPLE_YAML_PIPELINE = exports.EXAMPLE_CRAWL_LINK = exports.EXAMPLE_CRAWL_RUN = exports.EXAMPLE_TESTS_CAPTURE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CLOSE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CREATE = exports.EXAMPLE_TESTS_VISUAL_LINK = exports.EXAMPLE_TESTS_VISUAL_UPLOAD = exports.EXAMPLE_TESTS_VISUAL_SETUP = exports.EXAMPLE_TESTS_UNIT_LINK = exports.EXAMPLE_TESTS_UNIT_UPLOAD = exports.EXAMPLE_ARTIFACT_VERSION_DELETE = exports.EXAMPLE_ARTIFACT_VERSION_GET = exports.EXAMPLE_ARTIFACT_VERSION_LIST = exports.EXAMPLE_ARTIFACT_CREATE = exports.EXAMPLE_ARTIFACT_DELETE = exports.EXAMPLE_ARTIFACT_DOWNLOAD = exports.EXAMPLE_ARTIFACT_PUBLISH = exports.EXAMPLE_ARTIFACT_COMPOSER_PUBLISH = exports.EXAMPLE_ARTIFACT_VERSION_CREATE = exports.EXAMPLE_PIPELINE_RUN_RETRY = exports.HELP_PIPELINE_RUN_RETRY = exports.EXAMPLE_PIPELINE_RUN_LIST = void 0;
|
|
26
|
+
exports.ERR_CONTEXT_PROJECT = exports.ERR_CONTEXT_SOURCE = exports.ERR_CONTEXT_NAME = exports.ERR_CONTEXT_EXISTS = exports.ERR_CONTEXT_RESERVED = exports.ERR_CONTEXT_UNKNOWN = exports.TXT_CONTEXT_LINK_HINT = exports.TXT_CONTEXT_GIT_HINT = exports.TXT_CONTEXT_HINT = exports.OPTION_CONTEXT_API = exports.OPTION_CONTEXT_TOKEN = exports.OPTION_CONTEXT_REMOTE = exports.OPTION_CONTEXT_GIT = exports.OPTION_CONTEXT_LINK = exports.OPTION_CONTEXT_NAME = exports.DESC_CONTEXT_REMOVE = exports.DESC_CONTEXT_USE = exports.DESC_CONTEXT_SHOW = exports.DESC_CONTEXT_LIST = exports.DESC_CONTEXT_ADD = exports.DESC_CONTEXT = exports.OPTION_CONTEXT = exports.HELP_AGENT_STATUS_JSON = exports.HELP_SANDBOX_APP_ADD_JSON = exports.EXAMPLE_CONFIG_GET_TUNNELS = exports.EXAMPLE_CONFIG_GET_TUNNEL = exports.HELP_TARGET_EXEC_LOGS_JSONL = exports.HELP_SANDBOX_EXEC_COMMAND_JSONL = exports.HELP_SANDBOX_EXEC_JSONL = exports.HELP_TARGET_EXEC_COMMAND = exports.HELP_TARGET_EXEC_STATUS = exports.HELP_SANDBOX_EXEC_STATUS = exports.HELP_API_INFO_JSON = exports.HELP_DOMAIN_SEARCH_JSON = exports.HELP_YAML_VALIDATE_JSON = exports.EXAMPLE_AGENT_TAGS_GET = exports.EXAMPLE_AGENT_PROXY_STATUS = exports.EXAMPLE_AGENT_TARGET_STATUS = exports.EXAMPLE_AGENT_VERSION = exports.EXAMPLE_AGENT_STATUS = exports.EXAMPLE_DOMAIN_SEARCH = exports.EXAMPLE_API_LIST = exports.EXAMPLE_API_INFO = exports.ERR_API_SCHEMA_NOT_FOUND = exports.EXAMPLE_SANDBOX_LOGS = exports.ERR_YAML_SCHEMA_READ_FAILED = exports.ERR_YAML_SCHEMA_FETCH_FAILED = exports.TXT_YAML_UNKNOWN_TOP_LEVEL_KEYS = exports.ERR_YAML_ITEM_UNKNOWN = exports.ERR_YAML_ITEM_MISSING = void 0;
|
|
27
|
+
exports.HELP_CONTEXT_REMOVE = exports.HELP_CONTEXT_USE = exports.HELP_CONTEXT_SHOW = exports.HELP_CONTEXT_LIST = exports.HELP_CONTEXT_ADD = exports.EXAMPLE_CONTEXT_REMOVE = exports.EXAMPLE_CONTEXT_USE = exports.EXAMPLE_CONTEXT_SHOW = exports.EXAMPLE_CONTEXT_LIST = exports.EXAMPLE_CONTEXT_ADD = exports.TXT_CONTEXT_TOKEN_MISSING = exports.TXT_CONTEXT_TOKEN_AVAILABLE = exports.TXT_CONTEXT_TOKEN_LABEL = exports.TXT_CONTEXT_REMOTE_LABEL = exports.TXT_CONTEXT_API_LABEL = exports.TXT_CONTEXT_PROJECT_LABEL = exports.TXT_CONTEXT_WORKSPACE_LABEL = exports.TXT_CONTEXT_SOURCE_LABEL = exports.TXT_CONTEXT_LABEL = exports.TXT_CONTEXT_REMOVE_CONFIRM = exports.ERR_CONTEXT_GIT_FAILED = exports.ERR_CONTEXT_GIT_TIMEOUT = exports.TXT_CONTEXT_PROJECT_HINT = exports.TXT_CONTEXT_WORKSPACE_HINT = exports.HELP_CONTEXT = exports.TXT_CONTEXT_REMOVED = exports.TXT_CONTEXT_ACTIVE = exports.TXT_CONTEXT_SAVED = exports.ERR_CONTEXT_LINK_INVALID = exports.ERR_CONTEXT_LINK_MISSING = exports.ERR_CONTEXT_GIT_URL = exports.ERR_CONTEXT_GIT_REMOTE = exports.ERR_CONTEXT_GIT_REPO = exports.ERR_CONTEXT_GIT_MISSING = exports.ERR_CONTEXT_API = void 0;
|
|
28
28
|
const utils_1 = require("./utils");
|
|
29
29
|
exports.ERR_CONFIRM_REQUIRED = 'Confirmation is required in non-interactive mode';
|
|
30
30
|
exports.TXT_CONFIRM_FORCE_HINT = 'Rerun with --force to perform this operation without prompting.';
|
|
@@ -328,8 +328,6 @@ exports.DESC_COMMAND_START = 'Start the tunnels defined in the configuration fil
|
|
|
328
328
|
exports.DESC_COMMAND_TCP = 'Start a tunnel that forwards TCP traffic from a public port to a local address, for non-HTTP services such as SSH, RDP, SIP or game servers';
|
|
329
329
|
exports.DESC_COMMAND_TLS = 'Start a tunnel that forwards TLS traffic on port 443 for a hostname to a local address';
|
|
330
330
|
exports.DESC_PROGRAM = 'Work seamlessly with Buddy from the command line.';
|
|
331
|
-
const ERR_COMMAND_NOT_FOUND = (arg) => `Command not found: ${arg}`;
|
|
332
|
-
exports.ERR_COMMAND_NOT_FOUND = ERR_COMMAND_NOT_FOUND;
|
|
333
331
|
exports.DESC_COMMAND_PIPELINE = 'Manage pipelines and their runs';
|
|
334
332
|
exports.DESC_COMMAND_ARTIFACT = 'Manage artifacts: file, Docker and Composer packages with versions';
|
|
335
333
|
exports.DESC_COMMAND_ARTIFACT_VERSION_CREATE = 'Create an artifact version';
|
|
@@ -525,6 +523,7 @@ exports.DISCOVERY_TIPS = [
|
|
|
525
523
|
'Human-readable identifiers and numeric IDs are not interchangeable. Check the argument description.',
|
|
526
524
|
"Inspect YAML schemas with 'bdy yaml pipeline' and 'bdy yaml actions info <type>'.",
|
|
527
525
|
"Find REST operations with 'bdy api list' and inspect them with 'bdy api info <method> <url>'.",
|
|
526
|
+
"Pipeline runs: 'bdy pip get' shows the last run status, 'bdy pip run find' locates a run by branch/PR/revision/status, and 'bdy pip run status <pipeline> <run-id> --exit-code --failed-logs' waits and explains a failure. To deploy and verify in one call use 'bdy pip run start <pipeline> -e <environment> -a <artifact:version> --exit-code'. Run commands end with suggested next commands (JSONL type 'next').",
|
|
528
527
|
'Check each command for supported output formats: json and jsonl are different; not every command supports them.',
|
|
529
528
|
'required_scopes: null means undocumented or dynamic; [] means explicitly no token scopes required. Token scopes are separate from the --scope resource option.',
|
|
530
529
|
"Use 'bdy discover' for an index. Selecting a command without subcommands returns full details automatically; use --full for a whole subtree. Aliases are accepted.",
|
|
@@ -571,6 +570,7 @@ ERRORS:
|
|
|
571
570
|
`;
|
|
572
571
|
exports.OPTION_FORMAT = 'Output format: json, text. JSON CLI errors: {error:{code,message,hint}}, exit 1. Default: text';
|
|
573
572
|
exports.OPTION_FORMAT_JSONL = 'Output format: jsonl, text. JSONL CLI errors: {type:"error",error:{code,message,hint}}, exit 1. Default: text';
|
|
573
|
+
exports.OPTION_VERBOSE = 'Show REST API requests, responses, timing and retries on stderr';
|
|
574
574
|
exports.OPTION_REST_API_WORKSPACE = 'Workspace URL handle. Can be set via variable: BUDDY_WORKSPACE';
|
|
575
575
|
exports.OPTION_REST_API_PROJECT = 'Project name. Can be set via variable: BUDDY_PROJECT';
|
|
576
576
|
exports.OPTION_REST_API_PAGE = 'Page number (positive integer). Default: 1';
|
|
@@ -2267,7 +2267,7 @@ exports.EXAMPLE_PIPELINE_RUN_START = [
|
|
|
2267
2267
|
},
|
|
2268
2268
|
{
|
|
2269
2269
|
description: 'run pipeline without cache and wait for execution to complete',
|
|
2270
|
-
command: 'bdy pip run start pipeline-identifier
|
|
2270
|
+
command: 'bdy pip run start pipeline-identifier -c',
|
|
2271
2271
|
},
|
|
2272
2272
|
{
|
|
2273
2273
|
description: 'run pipeline and pass custom variables to execution',
|
|
@@ -2281,6 +2281,10 @@ exports.EXAMPLE_PIPELINE_RUN_START = [
|
|
|
2281
2281
|
description: 'run pipeline in given environment with specific artifact version',
|
|
2282
2282
|
command: 'bdy pip run start pipeline-identifier --environment staging --artifact my_app:1.2.3',
|
|
2283
2283
|
},
|
|
2284
|
+
{
|
|
2285
|
+
description: 'deploy an artifact version to an environment, wait for the result and exit 0 only when it succeeded',
|
|
2286
|
+
command: 'bdy pip run start pipeline-identifier -e production -a my_app:1.2.3 --exit-code --no-follow --failed-logs',
|
|
2287
|
+
},
|
|
2284
2288
|
{
|
|
2285
2289
|
description: 'run pipeline and output only final jsonl',
|
|
2286
2290
|
command: 'bdy pip run start pipeline-identifier --no-follow --format jsonl',
|
|
@@ -2322,7 +2326,7 @@ exports.EXAMPLE_PIPELINE_RUN_STATUS = [
|
|
|
2322
2326
|
command: 'bdy pip run status pipeline-identifier run-id --exit-code --no-wait',
|
|
2323
2327
|
},
|
|
2324
2328
|
{
|
|
2325
|
-
description: 'wait for completion and return its semantic exit code',
|
|
2329
|
+
description: 'wait for completion and return its semantic exit code (run-id can come from executions[0].id of bdy pip run find)',
|
|
2326
2330
|
command: 'bdy pip run status pipeline-identifier run-id --exit-code --no-follow',
|
|
2327
2331
|
},
|
|
2328
2332
|
{
|
|
@@ -2356,9 +2360,19 @@ WITH --exit-code:
|
|
|
2356
2360
|
Command errors keep their error record and exit 2 or 3.
|
|
2357
2361
|
Without --exit-code, existing exit codes are unchanged.
|
|
2358
2362
|
`;
|
|
2363
|
+
exports.TXT_PIPELINE_RUN_NEXT = 'Next: ';
|
|
2359
2364
|
exports.HELP_PIPELINE_RUN_STATUS = `${exports.HELP_PIPELINE_RUN_JSONL}${HELP_PIPELINE_RUN_EXIT_CODE}
|
|
2360
2365
|
Exit codes describe the resulting pipeline run, including after start/retry/cancel/approve.
|
|
2361
2366
|
--no-follow hides intermediate changes but still waits.
|
|
2367
|
+
|
|
2368
|
+
NEXT STEPS:
|
|
2369
|
+
A run that ends FAILED or TERMINATED, waits for approval, or is still in progress
|
|
2370
|
+
is followed by suggested commands: "Next:" lines in text, and in JSONL one record
|
|
2371
|
+
right before the exit record:
|
|
2372
|
+
{"type": "next", "commands": ["bdy pip run retry pipeline-identifier run-id -w workspace -p project"]}
|
|
2373
|
+
Commands carry -w, -p and a non-default --context resolved by this command, so
|
|
2374
|
+
they can be run verbatim from any directory.
|
|
2375
|
+
A successful, skipped or not executed run has no next step.
|
|
2362
2376
|
`;
|
|
2363
2377
|
exports.HELP_PIPELINE_RUN_LOGS = `${exports.HELP_PIPELINE_RUN_JSONL}${HELP_PIPELINE_RUN_EXIT_CODE}
|
|
2364
2378
|
Exit codes describe the selected action execution (action-run-id).
|
|
@@ -2536,6 +2550,10 @@ exports.EXAMPLE_PIPELINE_RUN_FIND = [
|
|
|
2536
2550
|
description: 'find pull request runs as JSON',
|
|
2537
2551
|
command: 'bdy pip run find my-pipeline --pr 123 --format json',
|
|
2538
2552
|
},
|
|
2553
|
+
{
|
|
2554
|
+
description: 'find the newest run for a branch; pass executions[0].id to bdy pip run status',
|
|
2555
|
+
command: 'bdy pip run find my-pipeline --branch main --format json',
|
|
2556
|
+
},
|
|
2539
2557
|
{
|
|
2540
2558
|
description: 'find runs for an artifact in an environment without a repository filter',
|
|
2541
2559
|
command: 'bdy pip run find my-pipeline --environment staging --artifact my-app:1.2.3',
|