bdy 1.23.14-dev-target-commands → 1.23.16-dev-target-commands
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/agent/manager.js +9 -2
- package/distTs/src/api/client.js +22 -11
- package/distTs/src/command/api/request.js +5 -4
- package/distTs/src/command/environment/delete.js +2 -1
- package/distTs/src/command/environment/resolve.js +21 -4
- package/distTs/src/command/environment/update.js +2 -1
- package/distTs/src/command/pre.js +9 -8
- package/distTs/src/command/project/git/credential.js +6 -4
- package/distTs/src/command/sandbox/exec/command.js +1 -1
- package/distTs/src/command/sandbox/exec/logs.js +1 -1
- package/distTs/src/command/target/delete.js +2 -1
- package/distTs/src/command/target/exec/command.js +3 -5
- package/distTs/src/command/target/scope.js +37 -7
- package/distTs/src/command/target/update.js +2 -1
- package/distTs/src/command/version.js +1 -1
- package/distTs/src/command/yaml.js +1 -3
- package/distTs/src/index.js +14 -0
- package/distTs/src/output/pipeline.js +5 -3
- package/distTs/src/output.js +12 -3
- package/distTs/src/texts.js +8 -9
- package/distTs/src/utils.js +48 -13
- package/package.json +1 -1
package/distTs/package.json
CHANGED
|
@@ -161,6 +161,10 @@ class AgentManagerClass {
|
|
|
161
161
|
}
|
|
162
162
|
const current = (0, utils_1.getVersion)();
|
|
163
163
|
const latest = await (0, utils_1.getLatestVersion)();
|
|
164
|
+
// Equality only, deliberately not "is latest newer": this runs on an explicit remote
|
|
165
|
+
// update action, whose meaning is "match what the channel publishes". Refusing an
|
|
166
|
+
// older latest would take away the only rollback the fleet has - moving the channel
|
|
167
|
+
// pointer back after a bad release.
|
|
164
168
|
if (!latest || latest === '0.0.0' || latest === current) {
|
|
165
169
|
logger_1.default.info((0, texts_1.LOG_AGENT_UPDATE_NOT_NEEDED)(current));
|
|
166
170
|
// Nothing to do is not a failure, and showing it as one would make an update of
|
|
@@ -174,12 +178,15 @@ class AgentManagerClass {
|
|
|
174
178
|
// - this is the value that stays behind if the restart never lands.
|
|
175
179
|
this.agent?.reportUpdateStatus(tunnel_1.TUNNEL_AGENT_UPDATE_STATUS.STARTED);
|
|
176
180
|
this.agent?.flushUpdateStatus();
|
|
177
|
-
|
|
181
|
+
// getLatestVersion already refuses a version it cannot parse, so this is belt and
|
|
182
|
+
// braces - kept because the download url is built from the triple, and shipping a
|
|
183
|
+
// malformed one would fail much further away from the cause.
|
|
184
|
+
const target = (0, utils_1.parseVersion)(latest);
|
|
178
185
|
if (!target) {
|
|
179
186
|
logger_1.default.error(texts_1.LOG_AGENT_UPDATE_FAILED);
|
|
180
187
|
return report(tunnel_1.TUNNEL_AGENT_UPDATE_STATUS.FAILED);
|
|
181
188
|
}
|
|
182
|
-
const swapped = await this.system.swapBinaryToVersion(target
|
|
189
|
+
const swapped = await this.system.swapBinaryToVersion(target.version);
|
|
183
190
|
if (!swapped) {
|
|
184
191
|
logger_1.default.error((0, texts_1.LOG_AGENT_UPDATE_BINARY_INVALID)(latest));
|
|
185
192
|
return report(tunnel_1.TUNNEL_AGENT_UPDATE_STATUS.FAILED);
|
package/distTs/src/api/client.js
CHANGED
|
@@ -86,9 +86,8 @@ class ApiClient {
|
|
|
86
86
|
}
|
|
87
87
|
return false;
|
|
88
88
|
}
|
|
89
|
-
async request(
|
|
90
|
-
|
|
91
|
-
headers = {};
|
|
89
|
+
async request(args) {
|
|
90
|
+
const { method = 'GET', path, query, body = null, headers = {}, parseResponseBody = false, rawResponseBody = false, rawResponse = false, httpUrlEncoded = false, tryRefreshingToken = true, } = args;
|
|
92
91
|
if (this.token && !headers.authorization) {
|
|
93
92
|
headers.authorization = `Bearer ${this.token}`;
|
|
94
93
|
}
|
|
@@ -176,15 +175,12 @@ class ApiClient {
|
|
|
176
175
|
const success = await this.tryRefreshToken();
|
|
177
176
|
if (success) {
|
|
178
177
|
delete headers.authorization;
|
|
178
|
+
// Retry with the complete original args (an explicit field list
|
|
179
|
+
// once silently dropped `query` here); only the mutated headers
|
|
180
|
+
// and the refresh guard are overridden.
|
|
179
181
|
return await this.request({
|
|
180
|
-
|
|
181
|
-
path,
|
|
182
|
-
body,
|
|
182
|
+
...args,
|
|
183
183
|
headers,
|
|
184
|
-
parseResponseBody,
|
|
185
|
-
rawResponseBody,
|
|
186
|
-
rawResponse,
|
|
187
|
-
httpUrlEncoded,
|
|
188
184
|
tryRefreshingToken: false,
|
|
189
185
|
});
|
|
190
186
|
}
|
|
@@ -253,6 +249,12 @@ class ApiClient {
|
|
|
253
249
|
}
|
|
254
250
|
}
|
|
255
251
|
else if (status === 204) {
|
|
252
|
+
// A no-content success still honors the raw-output contracts: callers
|
|
253
|
+
// stream the (empty) body instead of tripping over a null.
|
|
254
|
+
if (rawResponse)
|
|
255
|
+
return response;
|
|
256
|
+
if (rawResponseBody)
|
|
257
|
+
return responseBody;
|
|
256
258
|
await responseBody.dump();
|
|
257
259
|
return null;
|
|
258
260
|
}
|
|
@@ -1251,11 +1253,20 @@ class ApiClient {
|
|
|
1251
1253
|
query += '&';
|
|
1252
1254
|
query += encodeURIComponent(key) + '=' + encodeURIComponent(value);
|
|
1253
1255
|
});
|
|
1254
|
-
|
|
1256
|
+
const resolved = await this.request({
|
|
1255
1257
|
method: 'GET',
|
|
1256
1258
|
path: `/workspaces/${encodeURIComponent(workspace)}/identifiers${query}`,
|
|
1257
1259
|
parseResponseBody: true,
|
|
1258
1260
|
});
|
|
1261
|
+
// A queried project must itself resolve: for some resources
|
|
1262
|
+
// (environments, artifacts, distributions) the endpoint otherwise falls
|
|
1263
|
+
// back to the workspace resource of the same identifier, silently
|
|
1264
|
+
// answering for a different scope than asked (TARGET_API_REQUIREMENTS.md
|
|
1265
|
+
// p6). project_identifier is present whenever the project exists.
|
|
1266
|
+
if (params.project && !resolved.project_identifier) {
|
|
1267
|
+
throw new Error(texts_1.ERR_PROJECT_NOT_FOUND);
|
|
1268
|
+
}
|
|
1269
|
+
return resolved;
|
|
1259
1270
|
}
|
|
1260
1271
|
async resolveIdentifiers(workspace, params) {
|
|
1261
1272
|
let query = '';
|
|
@@ -159,14 +159,15 @@ const request = async (method, url, options) => {
|
|
|
159
159
|
output_1.default.exitNormal('');
|
|
160
160
|
}
|
|
161
161
|
else {
|
|
162
|
-
// setEncoding keeps multibyte characters intact across chunk boundaries
|
|
163
|
-
//
|
|
162
|
+
// setEncoding keeps multibyte characters intact across chunk boundaries;
|
|
163
|
+
// the response is a 1:1 payload, so it bypasses terminal-kit (whose
|
|
164
|
+
// formatting corrupts % and ^ sequences, common in URL-encoded data)
|
|
164
165
|
body.setEncoding('utf8');
|
|
165
166
|
body.on('data', (data) => {
|
|
166
|
-
output_1.default.
|
|
167
|
+
output_1.default.data(data, false);
|
|
167
168
|
});
|
|
168
169
|
body.on('close', () => {
|
|
169
|
-
output_1.default.
|
|
170
|
+
output_1.default.data('');
|
|
170
171
|
output_1.default.exitNormal('');
|
|
171
172
|
});
|
|
172
173
|
}
|
|
@@ -18,7 +18,8 @@ commandEnvironmentDelete.addHelpText('after', `\nEXAMPLES:${texts_1.EXAMPLE_ENVI
|
|
|
18
18
|
commandEnvironmentDelete.action(async (identifier, options) => {
|
|
19
19
|
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
20
20
|
const client = input_1.default.restApiTokenClient();
|
|
21
|
-
const environment_id = await (0, resolve_1.resolveEnvironmentId)(client, workspace, identifier, options
|
|
21
|
+
const environment_id = await (0, resolve_1.resolveEnvironmentId)(client, workspace, identifier, options,
|
|
22
|
+
/* strictProject */ true);
|
|
22
23
|
const confirmed = options.force ||
|
|
23
24
|
(await output_1.default.confirm((0, texts_1.TXT_ENVIRONMENT_DELETE_CONFIRM)(identifier)));
|
|
24
25
|
if (!confirmed)
|
|
@@ -11,12 +11,29 @@ const input_1 = __importDefault(require("../../input"));
|
|
|
11
11
|
// project context from flags/env -> /identifiers -> hash id, exiting on a
|
|
12
12
|
// miss. Without a project the identifier resolves as a workspace
|
|
13
13
|
// environment; with one, along the project line.
|
|
14
|
-
|
|
14
|
+
//
|
|
15
|
+
// strictProject is for mutating commands (update/delete): an explicit -p is
|
|
16
|
+
// a statement "the environment of this project", so the resolved environment
|
|
17
|
+
// must actually live there. Without it /identifiers silently falls back to
|
|
18
|
+
// the workspace environment of the same identifier and the write lands on a
|
|
19
|
+
// workspace-wide resource. Reads keep the fallback - that is how workspace
|
|
20
|
+
// environments stay addressable from inside a project context.
|
|
21
|
+
const resolveEnvironmentId = async (client, workspace, identifier, options, strictProject = false) => {
|
|
15
22
|
const project = input_1.default.restApiProject(options.project, true);
|
|
16
|
-
const
|
|
17
|
-
|
|
23
|
+
const resolved = await client.getEnvironmentByIdentifier(workspace, identifier, project);
|
|
24
|
+
// A nonexistent project is rejected by the API client
|
|
25
|
+
// (getResourceByIdentifier); here only the environment itself can miss.
|
|
26
|
+
if (!resolved.environment_id) {
|
|
18
27
|
output_1.default.exitError(texts_1.ERR_ENVIRONMENT_NOT_FOUND);
|
|
19
28
|
}
|
|
20
|
-
|
|
29
|
+
if (strictProject && options.project) {
|
|
30
|
+
const environment = await client.getEnvironment(workspace, resolved.environment_id);
|
|
31
|
+
// a workspace environment carries no project, so this also fails the
|
|
32
|
+
// workspace-fallback case
|
|
33
|
+
if (environment.project?.name !== resolved.project_identifier) {
|
|
34
|
+
output_1.default.exitError(texts_1.ERR_ENVIRONMENT_NOT_FOUND);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return resolved.environment_id;
|
|
21
38
|
};
|
|
22
39
|
exports.resolveEnvironmentId = resolveEnvironmentId;
|
|
@@ -52,7 +52,8 @@ commandEnvironmentUpdate.action(async (identifier, options) => {
|
|
|
52
52
|
output_1.default.exitError(texts_1.ERR_COMMAND_NO_UPDATE);
|
|
53
53
|
}
|
|
54
54
|
const client = input_1.default.restApiTokenClient();
|
|
55
|
-
const environment_id = await (0, resolve_1.resolveEnvironmentId)(client, workspace, identifier, options
|
|
55
|
+
const environment_id = await (0, resolve_1.resolveEnvironmentId)(client, workspace, identifier, options,
|
|
56
|
+
/* strictProject */ true);
|
|
56
57
|
const result = await client.updateEnvironment(workspace, environment_id, body);
|
|
57
58
|
output_1.default.exitSuccess((0, texts_1.TXT_ENVIRONMENT_UPDATED)(result.identifier, result.html_url));
|
|
58
59
|
});
|
|
@@ -46,14 +46,15 @@ const commandPre = async (_, command) => {
|
|
|
46
46
|
if (!output_1.default.isTTY() || command.hideVersionUpdate || ['json', 'jsonl'].includes(command.opts()?.format)) {
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
// No truthiness guards on the versions: an empty or unparsable one is never newer
|
|
50
|
+
const latest = command.latestVersion || '';
|
|
51
|
+
const newCli = (0, utils_1.isVersionNewer)(latest, command.currentVersion || '');
|
|
52
|
+
const newAgent = !!command.agentStatus && (0, utils_1.isVersionNewer)(latest, command.agentStatus.version);
|
|
53
|
+
if ((0, utils_1.isDocker)() && newCli) {
|
|
54
|
+
output_1.default.newCliDockerVersion(latest);
|
|
55
|
+
}
|
|
56
|
+
else if (newCli) {
|
|
57
|
+
output_1.default.newCliVersion(latest);
|
|
57
58
|
}
|
|
58
59
|
else if (newAgent) {
|
|
59
60
|
output_1.default.newAgentVersion();
|
|
@@ -60,10 +60,12 @@ commandProjectGitCredential.action(async (action) => {
|
|
|
60
60
|
projects.projects[0].html_url.includes(input.host);
|
|
61
61
|
}
|
|
62
62
|
if (myHost) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
output_1.default.
|
|
66
|
-
output_1.default.
|
|
63
|
+
// git credential protocol output - a machine-read payload, so it
|
|
64
|
+
// bypasses terminal-kit formatting
|
|
65
|
+
output_1.default.data(`protocol=${input.protocol || 'https'}`);
|
|
66
|
+
output_1.default.data(`host=${input.host}`);
|
|
67
|
+
output_1.default.data(`username=${client.token}`);
|
|
68
|
+
output_1.default.data(`password=`);
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
catch {
|
|
@@ -20,7 +20,8 @@ commandTargetDelete.addHelpText('after', `\nEXAMPLES:${texts_1.EXAMPLE_TARGET_DE
|
|
|
20
20
|
commandTargetDelete.action(async (identifier, options) => {
|
|
21
21
|
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
22
22
|
const client = input_1.default.restApiTokenClient();
|
|
23
|
-
const target_id = await (0, scope_1.resolveTargetId)(client, workspace, identifier, options
|
|
23
|
+
const target_id = await (0, scope_1.resolveTargetId)(client, workspace, identifier, options,
|
|
24
|
+
/* strictLine */ true);
|
|
24
25
|
const confirmed = options.force || (await output_1.default.confirm((0, texts_1.TXT_TARGET_DELETE_CONFIRM)(identifier)));
|
|
25
26
|
if (!confirmed)
|
|
26
27
|
output_1.default.exitNormal();
|
|
@@ -17,7 +17,6 @@ commandTargetExecCommand.option('-p, --project <name>', texts_1.OPTION_REST_API_
|
|
|
17
17
|
commandTargetExecCommand.option('--pipeline <identifier>', texts_1.OPTION_TARGET_PIPELINE);
|
|
18
18
|
commandTargetExecCommand.option('--environment <identifier>', texts_1.OPTION_TARGET_ENVIRONMENT);
|
|
19
19
|
commandTargetExecCommand.option('--async', texts_1.OPTION_TARGET_EXEC_ASYNC);
|
|
20
|
-
commandTargetExecCommand.option('--wait', texts_1.OPTION_TARGET_EXEC_WAIT);
|
|
21
20
|
commandTargetExecCommand.option('--file <path>', texts_1.OPTION_TARGET_EXEC_FILE);
|
|
22
21
|
commandTargetExecCommand.option('--format <text|json>', texts_1.OPTION_FORMAT);
|
|
23
22
|
commandTargetExecCommand.argument('<identifier>', texts_1.OPTION_TARGET_IDENTIFIER);
|
|
@@ -42,15 +41,14 @@ commandTargetExecCommand.action(async (identifier, command, options) => {
|
|
|
42
41
|
}
|
|
43
42
|
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
44
43
|
const client = input_1.default.restApiTokenClient();
|
|
45
|
-
const target_id = await (0, scope_1.resolveTargetId)(client, workspace, identifier, options
|
|
44
|
+
const target_id = await (0, scope_1.resolveTargetId)(client, workspace, identifier, options,
|
|
45
|
+
/* strictLine */ true);
|
|
46
46
|
let exec = await client.executeTargetCommand(workspace, target_id, {
|
|
47
47
|
command: cmd,
|
|
48
48
|
});
|
|
49
49
|
const execId = exec.execution_id;
|
|
50
50
|
const json = options.format === 'json';
|
|
51
|
-
|
|
52
|
-
// when combined with --async.
|
|
53
|
-
if (options.async && !options.wait) {
|
|
51
|
+
if (options.async) {
|
|
54
52
|
if (json) {
|
|
55
53
|
output_1.default.json(exec);
|
|
56
54
|
}
|
|
@@ -10,14 +10,42 @@ const output_1 = __importDefault(require("../../output"));
|
|
|
10
10
|
const input_1 = __importDefault(require("../../input"));
|
|
11
11
|
// Shared resolve preamble for commands taking a target identifier: line
|
|
12
12
|
// context from flags/env -> /identifiers -> hash id, exiting on a miss.
|
|
13
|
-
|
|
13
|
+
//
|
|
14
|
+
// strictLine is for mutating commands (update/delete/exec command): an
|
|
15
|
+
// explicit line flag is a statement "the target of this project/pipeline/
|
|
16
|
+
// environment", yet /identifiers falls back to the workspace target of the
|
|
17
|
+
// same identifier when the requested line exists but does not hold it - the
|
|
18
|
+
// operation would silently land on a workspace-wide resource. Reads keep
|
|
19
|
+
// the fallback (workspace targets stay addressable from a line context).
|
|
20
|
+
const resolveTargetId = async (client, workspace, identifier, options, strictLine = false) => {
|
|
14
21
|
const project = input_1.default.restApiProject(options.project, true);
|
|
15
22
|
const line = input_1.default.targetLine(project, options.pipeline, options.environment);
|
|
16
|
-
const
|
|
17
|
-
if (!target_id) {
|
|
23
|
+
const resolved = await client.getTargetByIdentifier(workspace, identifier, line);
|
|
24
|
+
if (!resolved.target_id) {
|
|
18
25
|
output_1.default.exitError(texts_1.ERR_TARGET_NOT_FOUND);
|
|
19
26
|
}
|
|
20
|
-
|
|
27
|
+
if (strictLine) {
|
|
28
|
+
const requested = options.pipeline
|
|
29
|
+
? utils_1.TARGET_SCOPE.PIPELINE
|
|
30
|
+
: options.environment
|
|
31
|
+
? utils_1.TARGET_SCOPE.ENVIRONMENT
|
|
32
|
+
: options.project
|
|
33
|
+
? utils_1.TARGET_SCOPE.PROJECT
|
|
34
|
+
: null;
|
|
35
|
+
if (requested) {
|
|
36
|
+
const target = await client.getTarget(workspace, resolved.target_id);
|
|
37
|
+
const matches = requested === utils_1.TARGET_SCOPE.PIPELINE
|
|
38
|
+
? String(target.pipeline?.id) === String(resolved.pipeline_id)
|
|
39
|
+
: requested === utils_1.TARGET_SCOPE.ENVIRONMENT
|
|
40
|
+
? target.environment?.id === resolved.environment_id
|
|
41
|
+
: (0, exports.targetScopeOf)(target) === utils_1.TARGET_SCOPE.PROJECT &&
|
|
42
|
+
target.project?.name === resolved.project_identifier;
|
|
43
|
+
if (!matches) {
|
|
44
|
+
output_1.default.exitError(texts_1.ERR_TARGET_NOT_FOUND);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return resolved.target_id;
|
|
21
49
|
};
|
|
22
50
|
exports.resolveTargetId = resolveTargetId;
|
|
23
51
|
// Lines the CLI requests per log fetch.
|
|
@@ -95,10 +123,12 @@ const resolveTargetScope = async (client, workspace, project, scope, options) =>
|
|
|
95
123
|
};
|
|
96
124
|
if (project)
|
|
97
125
|
query.project = project;
|
|
98
|
-
const
|
|
99
|
-
|
|
126
|
+
const resolved = await client.getResourceByIdentifier(workspace, query);
|
|
127
|
+
// a nonexistent project is rejected by getResourceByIdentifier itself
|
|
128
|
+
if (!resolved.environment_id) {
|
|
100
129
|
output_1.default.exitError(texts_1.ERR_TARGET_ENVIRONMENT_NOT_FOUND);
|
|
101
|
-
|
|
130
|
+
}
|
|
131
|
+
params.environmentId = resolved.environment_id;
|
|
102
132
|
}
|
|
103
133
|
else if (scope === utils_1.TARGET_SCOPE.PROJECT) {
|
|
104
134
|
params.project = project;
|
|
@@ -21,7 +21,8 @@ commandTargetUpdate.action(async (identifier, options) => {
|
|
|
21
21
|
const yaml = input_1.default.restApiYaml(options.yaml);
|
|
22
22
|
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
23
23
|
const client = input_1.default.restApiTokenClient();
|
|
24
|
-
const target_id = await (0, scope_1.resolveTargetId)(client, workspace, identifier, options
|
|
24
|
+
const target_id = await (0, scope_1.resolveTargetId)(client, workspace, identifier, options,
|
|
25
|
+
/* strictLine */ true);
|
|
25
26
|
const body = {
|
|
26
27
|
yaml: Buffer.from(yaml, 'utf8').toString('base64'),
|
|
27
28
|
};
|
|
@@ -78,7 +78,7 @@ commandVersion.action(async () => {
|
|
|
78
78
|
const currVersion = commandVersion.currentVersion || '';
|
|
79
79
|
const lastVersion = commandVersion.latestVersion || '';
|
|
80
80
|
const env = commandVersion.env || '';
|
|
81
|
-
if (
|
|
81
|
+
if ((0, utils_1.isVersionNewer)(lastVersion, currVersion)) {
|
|
82
82
|
const platform = (0, utils_1.getPlatform)();
|
|
83
83
|
const isMac = platform === 'darwin';
|
|
84
84
|
const isWin = platform === 'win32';
|
|
@@ -8,11 +8,9 @@ const texts_1 = require("../texts");
|
|
|
8
8
|
const pipeline_1 = __importDefault(require("./yaml/pipeline"));
|
|
9
9
|
const actions_1 = __importDefault(require("./yaml/actions"));
|
|
10
10
|
const validate_1 = __importDefault(require("./yaml/validate"));
|
|
11
|
-
const init_1 = __importDefault(require("./yaml/init"));
|
|
12
11
|
const commandYaml = (0, utils_1.newCommand)('yaml', texts_1.DESC_COMMAND_YAML);
|
|
13
12
|
commandYaml.addCommand(pipeline_1.default);
|
|
14
13
|
commandYaml.addCommand(actions_1.default);
|
|
15
14
|
commandYaml.addCommand(validate_1.default);
|
|
16
|
-
commandYaml.
|
|
17
|
-
commandYaml.addHelpText('after', texts_1.EXAMPLE_YAML);
|
|
15
|
+
commandYaml.addHelpText('after', `\nEXAMPLES:${texts_1.EXAMPLE_YAML}`);
|
|
18
16
|
exports.default = commandYaml;
|
package/distTs/src/index.js
CHANGED
|
@@ -9,7 +9,21 @@ const stream_1 = __importDefault(require("stream"));
|
|
|
9
9
|
output_1.default.muteNodeWarnings();
|
|
10
10
|
stream_1.default.setDefaultHighWaterMark(false, 65536);
|
|
11
11
|
process.title = 'bdy';
|
|
12
|
+
// Node writes to a pipe asynchronously and process.exit() does not wait for
|
|
13
|
+
// the buffer to drain, so large output piped to another process was cut at a
|
|
14
|
+
// pipe-buffer boundary (files and POSIX TTYs are synchronous already).
|
|
15
|
+
// Blocking mode makes every write land before exit, on all Output paths.
|
|
16
|
+
for (const s of [process.stdout, process.stderr]) {
|
|
17
|
+
s._handle?.setBlocking?.(true);
|
|
18
|
+
}
|
|
19
|
+
// The cost of blocking mode: a reader that closes early (`bdy ... | head`)
|
|
20
|
+
// turns further writes into EPIPE errors, which surface here as uncaught
|
|
21
|
+
// exceptions. That is the reader saying "got enough", not a failure - end
|
|
22
|
+
// quietly like any well-behaved pipe writer.
|
|
23
|
+
const isEpipe = (err) => err?.code === 'EPIPE' || err?.cause?.code === 'EPIPE';
|
|
12
24
|
process.on('uncaughtException', (err) => {
|
|
25
|
+
if (isEpipe(err))
|
|
26
|
+
process.exit(0);
|
|
13
27
|
logger_1.default.fatal(err);
|
|
14
28
|
output_1.default.exitError(err);
|
|
15
29
|
});
|
|
@@ -1191,7 +1191,9 @@ class OutputPipeline {
|
|
|
1191
1191
|
this.jsonLog(logs[actionLogsStart]);
|
|
1192
1192
|
}
|
|
1193
1193
|
else {
|
|
1194
|
-
|
|
1194
|
+
// log lines are payload inside markup - escape so % and ^
|
|
1195
|
+
// sequences in build output render verbatim
|
|
1196
|
+
output_1.default.normal(output_1.default.getTermKitDimColor(` ${output_1.default.escapeTermKit(logs[actionLogsStart])}`));
|
|
1195
1197
|
}
|
|
1196
1198
|
}
|
|
1197
1199
|
if (action &&
|
|
@@ -1221,9 +1223,9 @@ class OutputPipeline {
|
|
|
1221
1223
|
let line = '';
|
|
1222
1224
|
if (i > 0)
|
|
1223
1225
|
line += ' ';
|
|
1224
|
-
line += output_1.default.getTermKitMutedColor(v.key);
|
|
1226
|
+
line += output_1.default.getTermKitMutedColor(output_1.default.escapeTermKit(v.key));
|
|
1225
1227
|
line += output_1.default.getTermKitDimColor(` = "`);
|
|
1226
|
-
line += output_1.default.getTermKitBlueColor(v.value);
|
|
1228
|
+
line += output_1.default.getTermKitBlueColor(output_1.default.escapeTermKit(v.value));
|
|
1227
1229
|
line += output_1.default.getTermKitDimColor('"');
|
|
1228
1230
|
output_1.default.normal(line);
|
|
1229
1231
|
});
|
package/distTs/src/output.js
CHANGED
|
@@ -136,9 +136,18 @@ class Output {
|
|
|
136
136
|
}
|
|
137
137
|
// Payload output (command results, logs, JSON): bypasses terminal-kit,
|
|
138
138
|
// whose printf-style formatting and ^-markup corrupt data containing
|
|
139
|
-
// % or ^ sequences.
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
// % or ^ sequences. newLine=false emits a mid-stream chunk, keeping
|
|
140
|
+
// chunk boundaries out of the payload.
|
|
141
|
+
static data(txt, newLine = true) {
|
|
142
|
+
process.stdout.write(newLine ? `${txt}\n` : txt);
|
|
143
|
+
}
|
|
144
|
+
// For payload embedded in terminal-kit markup (e.g. a dimmed log line):
|
|
145
|
+
// neutralizes the ^-markup and %-formatting the payload would otherwise
|
|
146
|
+
// trigger, so it renders verbatim while the surrounding markup still
|
|
147
|
+
// works. Only for strings printed via terminal() - ScreenBuffer.put does
|
|
148
|
+
// not printf-format, so there %% would render double.
|
|
149
|
+
static escapeTermKit(txt) {
|
|
150
|
+
return txt.replace(/[%^]/g, '$&$&');
|
|
142
151
|
}
|
|
143
152
|
static writeStderr(txt) {
|
|
144
153
|
process.stderr.write(`${txt}\n`);
|
package/distTs/src/texts.js
CHANGED
|
@@ -13,14 +13,14 @@ exports.LOG_TUNNEL_CONNECTED = exports.LOG_AGENT_STARTED = exports.LOG_AGENT_UPD
|
|
|
13
13
|
exports.OPTION_SANDBOX_AGENT_NOTE = exports.OPTION_SANDBOX_NOTE = exports.OPTION_SANDBOX_NAME = exports.OPTION_SANDBOX_IDENTIFIER = exports.DESC_COMMAND_SANDBOX_SSH = exports.DESC_COMMAND_SANDBOX_APP = exports.DESC_COMMAND_SANDBOX_EXEC = exports.DESC_COMMAND_SANDBOX_STATUS = exports.DESC_COMMAND_SANDBOX_LOGS = exports.DESC_COMMAND_SANDBOX_RESTART = exports.DESC_COMMAND_SANDBOX_STOP = exports.DESC_COMMAND_SANDBOX_START = exports.DESC_COMMAND_SANDBOX_DESTROY = exports.DESC_COMMAND_SANDBOX_GET = exports.DESC_COMMAND_SANDBOX_LIST = exports.DESC_COMMAND_SANDBOX_UPDATE = exports.DESC_COMMAND_SANDBOX_GET_YAML = exports.DESC_COMMAND_SANDBOX_CREATE = exports.DESC_COMMAND_SANDBOX = exports.DEBUG_WAIT_FOR_IDLE_TIMEOUT = exports.DEBUG_WAIT_FOR_IDLE = exports.DEBUG_RESOURCE_DISCOVERY_TIMEOUT = exports.DEBUG_AUTO_WIDTH = exports.DEBUG_AUTO_SCROLL = exports.DEBUG_RESOURCE_CRAWLING_URL = exports.DEBUG_SNAPSHOT_PROCESSING = exports.DEBUG_SNAPSHOTS_PROCESSING = exports.DEBUG_EXEC_COMMAND = exports.DEBUG_EXEC_TEST_COMMAND = exports.LOG_INSTALLED_BROWSER = exports.LOG_SESSION_LINK = exports.LOG_SENDING_DATA = exports.LOG_SENDING_REQUEST = exports.LOG_PROCESSING_SNAPSHOTS = exports.LOG_RUNNING_EXEC_COMMAND = exports.LOG_TUNNEL_SSH_STREAM = exports.LOG_TUNNEL_TLS_AGENT_STREAM = exports.LOG_TUNNEL_TLS_REGION_STREAM = exports.LOG_TUNNEL_TLS_TARGET_STREAM = exports.LOG_TUNNEL_HTTP2_STREAM = exports.LOG_TUNNEL_HTTP1_STREAM = exports.LOG_TUNNEL_TCP_STREAM = exports.LOG_TUNNEL_HTTP_WRONG_USER_AGENTS = exports.LOG_TUNNEL_HTTP_CIRCUIT_BREAKER_OPEN = exports.LOG_TUNNEL_HTTP_MAX_INFLIGHT = exports.LOG_TUNNEL_HTTP_RATE_LIMIT = exports.LOG_TUNNEL_HTTP_WRON_AUTH = exports.LOG_TUNNEL_IDENTIFIED = exports.LOG_TUNNEL_DISCONNECTED = exports.LOG_TUNNEL_FAILED = void 0;
|
|
14
14
|
exports.DESC_COMMAND_SANDBOX_APP_ADD = exports.DESC_COMMAND_SANDBOX_APP_LIST = exports.TXT_SANDBOX_WAITING_START = exports.TXT_SANDBOX_WAITING_STOP = exports.TXT_SANDBOX_WAITING_APPS = exports.TXT_SANDBOX_WAITING_SETUP = exports.TXT_SANDBOX_WAITING_RUNNING = exports.TXT_SANDBOX_STOPPED = exports.TXT_SANDBOX_STARTED = exports.TXT_SANDBOX_DESTROYED = exports.TXT_SANDBOX_DESTROY_CONFIRM = exports.TXT_SANDBOX_UPDATED = exports.TXT_SANDBOX_CREATED = exports.TXT_SANDBOX_CREATING = exports.TXT_SANDBOX_APP_STARTED = exports.TXT_SANDBOX_APP_STOPPED = exports.OPTION_SANDBOX_WAIT = exports.OPTION_SANDBOX_WAIT_APPS = exports.OPTION_SANDBOX_WAIT_CONFIGURED = exports.OPTION_SANDBOX_WAIT_RUNNING = exports.ERR_SANDBOX_STOP_FAILED = exports.ERR_SANDBOX_SSH_MISSING = exports.ERR_SANDBOX_SSH_NO_ACCESS = exports.ERR_SANDBOX_NOT_RUNNING = exports.ERR_SANDBOX_NO_COMMANDS = exports.ERR_SANDBOX_RUNNING_FAILED = exports.ERR_SANDBOX_STOP_TIMEOUT = exports.ERR_SANDBOX_SNAPSHOT_TIMEOUT = exports.ERR_SANDBOX_RUNNING_TIMEOUT = exports.ERR_SANDBOX_APPS_TIMEOUT = exports.ERR_SANDBOX_SETUP_TIMEOUT = exports.ERR_SANDBOX_APP_FAILED = exports.ERR_SANDBOX_SETUP_FAILED = exports.ERR_SANDBOX_INVALID_RESOURCES = exports.ERR_SANDBOX_APP_NOT_FOUND = exports.ERR_SANDBOX_NOT_FOUND = exports.OPTION_SANDBOX_SSH_PRINT = exports.OPTION_SANDBOX_SSH_IDENTITY = exports.OPTION_SANDBOX_SSH_ARGS = exports.OPTION_SANDBOX_RUNTIME = exports.OPTION_SANDBOX_TIMEOUT = exports.OPTION_SANDBOX_FETCH = exports.OPTION_SANDBOX_APP_DIR = exports.OPTION_SANDBOX_APP_COMMAND = exports.OPTION_SANDBOX_YAML = exports.OPTION_SANDBOX_TAGS = exports.OPTION_SANDBOX_INSTALL_SCRIPT = exports.OPTION_SANDBOX_INSTALL_COMMANDS = exports.OPTION_SANDBOX_RESOURCES = exports.OPTION_SANDBOX_OS = void 0;
|
|
15
15
|
exports.OPTION_SANDBOX_CP_DOWNLOAD_MERGE = exports.OPTION_SANDBOX_CP_DEST = exports.OPTION_SANDBOX_CP_SOURCE = exports.DESC_COMMAND_SANDBOX_CP = exports.ERR_SANDBOX_ENDPOINTS_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_EXISTS = exports.TXT_SANDBOX_ENDPOINT_DELETED = exports.TXT_SANDBOX_ENDPOINT_DELETE_CONFIRM = exports.TXT_SANDBOX_ENDPOINT_ADDED = exports.TXT_SANDBOX_APP_REMOVED = exports.TXT_SANDBOX_APP_ADDED = exports.OPTION_SANDBOX_ENDPOINT_TYPE = exports.OPTION_SANDBOX_ENDPOINT_PORT = exports.OPTION_SANDBOX_ENDPOINT_NAME_ARG = exports.OPTION_SANDBOX_ENDPOINT_NAME = exports.DESC_COMMAND_SANDBOX_ENDPOINT_DELETE = exports.DESC_COMMAND_SANDBOX_ENDPOINT_ADD = exports.DESC_COMMAND_SANDBOX_ENDPOINT_GET = exports.DESC_COMMAND_SANDBOX_ENDPOINT_LIST = exports.DESC_COMMAND_SANDBOX_ENDPOINT = exports.ERR_SANDBOX_SNAPSHOTS_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_FAILED = exports.TXT_SANDBOX_SNAPSHOT_WAITING = exports.TXT_SANDBOX_SNAPSHOT_DELETE_CONFIRM = exports.TXT_SANDBOX_SNAPSHOT_DELETED = exports.TXT_SANDBOX_SNAPSHOT_CREATED = exports.OPTION_SANDBOX_FROM_SNAPSHOT = exports.OPTION_SANDBOX_SNAPSHOT_NAME_ARG = exports.OPTION_SANDBOX_SNAPSHOT_NAME = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_DELETE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_GET = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_CREATE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_LIST = exports.DESC_COMMAND_SANDBOX_SNAPSHOT = exports.TXT_SANDBOX_COMMAND_KILLED = exports.OPTION_SANDBOX_COMMAND_KILL_CONFIRM = exports.OPTION_SANDBOX_LOGS_LIMIT = exports.OPTION_SANDBOX_APP_ID = exports.OPTION_SANDBOX_COMMAND_ID = exports.DESC_COMMAND_SANDBOX_EXEC_KILL = exports.DESC_COMMAND_SANDBOX_EXEC_LOGS = exports.DESC_COMMAND_SANDBOX_APP_START = exports.DESC_COMMAND_SANDBOX_APP_STOP = exports.DESC_COMMAND_SANDBOX_APP_STATUS = exports.DESC_COMMAND_SANDBOX_APP_LOGS = exports.DESC_COMMAND_SANDBOX_EXEC_STATUS = exports.DESC_COMMAND_SANDBOX_EXEC_LIST = exports.DESC_COMMAND_SANDBOX_APP_REMOVE = void 0;
|
|
16
|
-
exports.
|
|
17
|
-
exports.DESC_COMMAND_API_GET = exports.DESC_COMMAND_API_PATCH = exports.DESC_COMMAND_API_DELETE = exports.DESC_COMMAND_API_PUT = exports.DESC_COMMAND_API_POST = exports.DESC_COMMAND_API_LIST = exports.DESC_COMMAND_API = exports.ERR_WHOAMI_LOGOUT = exports.TXT_WHOAMI_NO_WORKSPACE = exports.DESC_COMMAND_WHOAMI = exports.TXT_ENVIRONMENT_DELETED = exports.TXT_ENVIRONMENT_DELETE_CONFIRM = exports.TXT_ENVIRONMENT_UPDATED = exports.TXT_ENVIRONMENT_CREATED = exports.TXT_ENVIRONMENT_NOT_FOUND = exports.ERR_ENVIRONMENT_NOT_FOUND = exports.OPTION_ENVIRONMENT_ICON = exports.OPTION_ENVIRONMENT_PUBLIC_URL = exports.OPTION_ENVIRONMENT_TAGS = exports.OPTION_ENVIRONMENT_CREATE_IDENTIFIER = exports.OPTION_ENVIRONMENT_NAME = exports.OPTION_ENVIRONMENT_IDENTIFIER = exports.DESC_COMMAND_ENVIRONMENT_DELETE = exports.DESC_COMMAND_ENVIRONMENT_UPDATE = exports.DESC_COMMAND_ENVIRONMENT_CREATE = exports.DESC_COMMAND_ENVIRONMENT_GET = exports.DESC_COMMAND_ENVIRONMENT_LIST = exports.DESC_COMMAND_ENVIRONMENT = exports.TXT_TARGET_EXEC_KILLED = exports.TXT_TARGET_EXEC_KILL_CONFIRM = exports.WARN_TARGET_EXEC_TRUNCATED = exports.TXT_TARGET_EXEC_CANCELLED = exports.TXT_TARGET_EXEC_FAILED = exports.TXT_TARGET_EXEC_SUCCESS = exports.TXT_TARGET_EXEC_BACKGROUND = exports.TXT_TARGET_EXEC_ID = exports.TXT_TARGET_DELETED = exports.TXT_TARGET_DELETE_CONFIRM = exports.TXT_TARGET_UPDATED = exports.TXT_TARGET_CREATED = exports.TXT_TARGET_NOT_FOUND = exports.ERR_TARGET_SCOPE_NO_ENVIRONMENT = exports.ERR_TARGET_SCOPE_NO_PIPELINE = exports.ERR_TARGET_PIPELINE_ENV_CONFLICT = exports.ERR_TARGET_PIPELINE_REQUIRES_PROJECT = exports.ERR_TARGET_SCOPE = exports.ERR_TARGET_ENVIRONMENT_NOT_FOUND = exports.ERR_TARGET_EXEC_FILE_NOT_FOUND = exports.ERR_TARGET_EXEC_COMMAND_CONFLICT =
|
|
18
|
-
exports.TXT_WORKSPACE_NONE = exports.TXT_WORKSPACE_SET_SUCCESS = exports.ARG_COMMAND_WORKSPACE = exports.DESC_COMMAND_WORKSPACE_GET = exports.DESC_COMMAND_WORKSPACE_SET = exports.DESC_COMMAND_WORKSPACE_LIST = exports.DESC_COMMAND_WORKSPACE = exports.TXT_COMMAND_REGISTER_PROVIDE_NAME = exports.TXT_COMMAND_REGISTER_PROVIDE_EMAIL = exports.ERR_COMMAND_REGISTER_INVALID_NAME = exports.ERR_COMMAND_REGISTER_INVALID_EMAIL = exports.OPT_COMMAND_REGISTER_NAME = exports.OPT_COMMAND_REGISTER_EMAIL = exports.DESC_COMMAND_REGISTER = exports.TXT_LOGOUT_SUCCESS = exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.HELP_COMMAND_MCP = exports.ERR_MCP_TOOL_FILTERED = exports.ERR_MCP_TOOLS_CATEGORY = exports.OPT_COMMAND_MCP_TOOLS = exports.ERR_MCP_REFRESH_FAILED = exports.ERR_MCP_URL_INVALID = exports.ERR_MCP_ENDPOINT = exports.DESC_COMMAND_MCP = exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = exports.ERR_API_PARAMETER_NOT_REPLACED = exports.TXT_API_ENDPOINT_REQUIRED_SCOPES = exports.ERR_API_ENDPOINT_NOT_FOUND = exports.ERR_API_WRONG_METHOD = exports.ERR_SCHEMA_FETCH_FAILED = exports.OPT_COMMAND_API_INFO_URL = exports.OPT_COMMAND_API_INFO_SCHEMA = exports.OPT_COMMAND_API_INFO_METHOD = exports.OPT_COMMAND_API_LIST_SEARCH = exports.OPT_COMMAND_API_LIST_METHOD = exports.ERR_API_REQUEST_BODY_VALUE = exports.ERR_API_REQUEST_QUERY_VALUE = exports.ERR_API_REQUEST_INVALID_JSON = exports.ERR_API_REQUEST_FILE_ERROR = exports.ERR_API_REQUEST_OUTPUT_EXISTS = exports.DESC_COMMAND_API_INFO = exports.DESC_COMMAND_API_FORM = exports.DESC_COMMAND_API_JSON = exports.DESC_COMMAND_API_DATA = exports.DESC_COMMAND_API_OUTPUT = exports.DESC_COMMAND_API_REQUEST_QUERY = exports.DESC_COMMAND_API_PROJECT = exports.DESC_COMMAND_API_WORKSPACE =
|
|
19
|
-
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 = exports.OPT_COMMAND_ROUTE_SUBDOMAIN = exports.OPT_COMMAND_ROUTE_TYPE = exports.OPT_COMMAND_ROUTE_ID = exports.OPT_COMMAND_DISTRO_IDENTIFIER = exports.OPT_COMMAND_SCOPE = exports.OPT_COMMAND_AGENT_NOTE = exports.OPT_COMMAND_NOTE = exports.DESC_COMMAND_ROUTE = exports.DESC_COMMAND_ROUTE_UPDATE = exports.DESC_COMMAND_ROUTE_DELETE = exports.DESC_COMMAND_ROUTE_GET = exports.DESC_COMMAND_DISTRO_UPDATE = exports.DESC_COMMAND_DISTRO_GET = exports.DESC_COMMAND_ROUTE_LIST = exports.DESC_COMMAND_DISTRO_LIST = exports.DESC_COMMAND_DISTRO_DELETE = exports.DESC_COMMAND_ROUTE_CREATE = exports.DESC_COMMAND_DISTRO_CREATE = exports.DESC_COMMAND_DISTRO = exports.ERR_API_MESSAGE_REPLACER = exports.ERR_LOGIN_INVALID_BASE_URL = exports.ERR_LOGIN_NO_WORKSPACE_FOUND = exports.ERR_LOGIN_NO_WORKSPACES = exports.ERR_REGISTER_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_FAILED = exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = exports.TXT_REGISTER_SUCCESS = exports.TXT_LOGIN_SUCCESS = exports.TXT_LOGIN_SELECT_WORKSPACE = exports.TXT_LOGIN_ENTER_BASE_URL = exports.TXT_LOGIN_PROVIDE_CODE = exports.TXT_REGISTER_OPEN_URL = exports.TXT_LOGIN_OPEN_URL = exports.TXT_REGISTER_OPENING_STAR = exports.TXT_LOGIN_OPENING_STAR = exports.TXT_REGISTER_OPENING = exports.TXT_LOGIN_OPENING =
|
|
20
|
-
exports.DESC_COMMAND_ARTIFACT_CREATE = 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_LOGIN = exports.DESC_COMMAND_ARTIFACT_LIST = 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 =
|
|
21
|
-
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.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_CREATED = exports.TXT_COMMAND_PROJECT_LINK_NOT_FOUND = 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 =
|
|
22
|
-
exports.EXAMPLE_PIPELINE_RUN_APPLY = exports.EXAMPLE_PIPELINE_RUN_LOGS = exports.EXAMPLE_PIPELINE_RUN_JSONL = exports.EXAMPLE_PIPELINE_RUN_STATUS = 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 = 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 =
|
|
23
|
-
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_VERSION_CREATE = exports.EXAMPLE_PIPELINE_RUN_RETRY = exports.EXAMPLE_PIPELINE_RUN_LIST = exports.EXAMPLE_PIPELINE_LIST = exports.EXAMPLE_PIPELINE_YML = exports.EXAMPLE_PIPELINE_GET = exports.EXAMPLE_PIPELINE_UPDATE = exports.EXAMPLE_PIPELINE_DELETE = exports.EXAMPLE_PIPELINE_CREATE =
|
|
16
|
+
exports.ERR_TARGET_EXEC_NO_COMMAND = exports.ERR_TARGET_NO_EXECS = exports.ERR_TARGET_NOT_FOUND = exports.OPTION_TARGET_EXEC_FILE = exports.OPTION_TARGET_EXEC_ASYNC = exports.OPTION_TARGET_EXEC_COMMAND = exports.OPTION_TARGET_EXEC_LOG_LIMIT = exports.OPTION_TARGET_EXEC_LOG_OFFSET = exports.OPTION_TARGET_EXEC_LIMIT = exports.OPTION_TARGET_EXEC_ID = exports.OPTION_TARGET_YAML = exports.OPT_COMMAND_TARGET_SCOPE = exports.OPTION_TARGET_ENVIRONMENT = exports.OPTION_TARGET_PIPELINE = exports.OPTION_TARGET_IDENTIFIER = exports.DESC_COMMAND_TARGET_EXEC_LOGS = exports.DESC_COMMAND_TARGET_EXEC_LIST = exports.DESC_COMMAND_TARGET_EXEC_KILL = exports.DESC_COMMAND_TARGET_EXEC_STATUS = exports.DESC_COMMAND_TARGET_EXEC = exports.DESC_COMMAND_TARGET_DELETE = exports.DESC_COMMAND_TARGET_UPDATE = exports.DESC_COMMAND_TARGET_CREATE = exports.DESC_COMMAND_TARGET_GET = exports.DESC_COMMAND_TARGET_LIST = exports.DESC_COMMAND_TARGET = exports.TXT_SANDBOX_EXEC_FAILED = exports.TXT_SANDBOX_EXEC_INPROGRESS = exports.TXT_SANDBOX_EXEC_SUCCESS = exports.TXT_SANDBOX_EXEC_BACKGROUND = exports.TXT_SANDBOX_EXEC_ID = exports.ERR_SANDBOX_CP_INVALID_SOURCE = exports.ERR_SANDBOX_CP_INVALID_DEST = exports.ERR_SANDBOX_CP_REPLACE = exports.ERR_SANDBOX_CP_MKDIR = exports.ERR_SANDBOX_CP_PATH_EXISTS = exports.ERR_SANDBOX_CP_NOT_EMPTY_DIR = exports.ERR_SANDBOX_CP_READDIR = exports.ERR_SANDBOX_CP_DEST_NOT_FOLDER = exports.ERR_SANDBOX_CP_SOURCE_NOT_FOUND = exports.TXT_SANDBOX_CP_DONE = exports.TXT_SANDBOX_CP_PROGRESS = exports.TXT_SANDBOX_UNZIPPING_COUNT = exports.TXT_SANDBOX_UNZIP_DONE = exports.TXT_SANDBOX_UNZIP = exports.TXT_SANDBOX_CP_DOWNLOAD_DONE = exports.TXT_SANDBOX_CP_DOWNLOAD = exports.OPTION_SANDBOX_CP_IGNORE = exports.OPTION_SANDBOX_CP_USER = exports.OPTION_SANDBOX_CP_DOWNLOAD_REPLACE = void 0;
|
|
17
|
+
exports.DESC_COMMAND_API_REQUEST_URL = exports.DESC_COMMAND_API_GET = exports.DESC_COMMAND_API_PATCH = exports.DESC_COMMAND_API_DELETE = exports.DESC_COMMAND_API_PUT = exports.DESC_COMMAND_API_POST = exports.DESC_COMMAND_API_LIST = exports.DESC_COMMAND_API = exports.ERR_WHOAMI_LOGOUT = exports.TXT_WHOAMI_NO_WORKSPACE = exports.DESC_COMMAND_WHOAMI = exports.TXT_ENVIRONMENT_DELETED = exports.TXT_ENVIRONMENT_DELETE_CONFIRM = exports.TXT_ENVIRONMENT_UPDATED = exports.TXT_ENVIRONMENT_CREATED = exports.TXT_ENVIRONMENT_NOT_FOUND = exports.ERR_ENVIRONMENT_NOT_FOUND = exports.OPTION_ENVIRONMENT_ICON = exports.OPTION_ENVIRONMENT_PUBLIC_URL = exports.OPTION_ENVIRONMENT_TAGS = exports.OPTION_ENVIRONMENT_CREATE_IDENTIFIER = exports.OPTION_ENVIRONMENT_NAME = exports.OPTION_ENVIRONMENT_IDENTIFIER = exports.DESC_COMMAND_ENVIRONMENT_DELETE = exports.DESC_COMMAND_ENVIRONMENT_UPDATE = exports.DESC_COMMAND_ENVIRONMENT_CREATE = exports.DESC_COMMAND_ENVIRONMENT_GET = exports.DESC_COMMAND_ENVIRONMENT_LIST = exports.DESC_COMMAND_ENVIRONMENT = exports.TXT_TARGET_EXEC_KILLED = exports.TXT_TARGET_EXEC_KILL_CONFIRM = exports.WARN_TARGET_EXEC_TRUNCATED = exports.TXT_TARGET_EXEC_CANCELLED = exports.TXT_TARGET_EXEC_FAILED = exports.TXT_TARGET_EXEC_SUCCESS = exports.TXT_TARGET_EXEC_BACKGROUND = exports.TXT_TARGET_EXEC_ID = exports.TXT_TARGET_DELETED = exports.TXT_TARGET_DELETE_CONFIRM = exports.TXT_TARGET_UPDATED = exports.TXT_TARGET_CREATED = exports.TXT_TARGET_NOT_FOUND = exports.ERR_TARGET_SCOPE_NO_ENVIRONMENT = exports.ERR_TARGET_SCOPE_NO_PIPELINE = exports.ERR_TARGET_PIPELINE_ENV_CONFLICT = exports.ERR_TARGET_PIPELINE_REQUIRES_PROJECT = exports.ERR_TARGET_SCOPE = exports.ERR_TARGET_ENVIRONMENT_NOT_FOUND = exports.ERR_TARGET_EXEC_FILE_NOT_FOUND = exports.ERR_TARGET_EXEC_COMMAND_CONFLICT = void 0;
|
|
18
|
+
exports.TXT_LOGIN_SELECT_REGION = exports.TXT_WORKSPACE_NONE = exports.TXT_WORKSPACE_SET_SUCCESS = exports.ARG_COMMAND_WORKSPACE = exports.DESC_COMMAND_WORKSPACE_GET = exports.DESC_COMMAND_WORKSPACE_SET = exports.DESC_COMMAND_WORKSPACE_LIST = exports.DESC_COMMAND_WORKSPACE = exports.TXT_COMMAND_REGISTER_PROVIDE_NAME = exports.TXT_COMMAND_REGISTER_PROVIDE_EMAIL = exports.ERR_COMMAND_REGISTER_INVALID_NAME = exports.ERR_COMMAND_REGISTER_INVALID_EMAIL = exports.OPT_COMMAND_REGISTER_NAME = exports.OPT_COMMAND_REGISTER_EMAIL = exports.DESC_COMMAND_REGISTER = exports.TXT_LOGOUT_SUCCESS = exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.HELP_COMMAND_MCP = exports.ERR_MCP_TOOL_FILTERED = exports.ERR_MCP_TOOLS_CATEGORY = exports.OPT_COMMAND_MCP_TOOLS = exports.ERR_MCP_REFRESH_FAILED = exports.ERR_MCP_URL_INVALID = exports.ERR_MCP_ENDPOINT = exports.DESC_COMMAND_MCP = exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = exports.ERR_API_PARAMETER_NOT_REPLACED = exports.TXT_API_ENDPOINT_REQUIRED_SCOPES = exports.ERR_API_ENDPOINT_NOT_FOUND = exports.ERR_API_WRONG_METHOD = exports.ERR_SCHEMA_FETCH_FAILED = exports.OPT_COMMAND_API_INFO_URL = exports.OPT_COMMAND_API_INFO_SCHEMA = exports.OPT_COMMAND_API_INFO_METHOD = exports.OPT_COMMAND_API_LIST_SEARCH = exports.OPT_COMMAND_API_LIST_METHOD = exports.ERR_API_REQUEST_BODY_VALUE = exports.ERR_API_REQUEST_QUERY_VALUE = exports.ERR_API_REQUEST_INVALID_JSON = exports.ERR_API_REQUEST_FILE_ERROR = exports.ERR_API_REQUEST_OUTPUT_EXISTS = exports.DESC_COMMAND_API_INFO = exports.DESC_COMMAND_API_FORM = exports.DESC_COMMAND_API_JSON = exports.DESC_COMMAND_API_DATA = exports.DESC_COMMAND_API_OUTPUT = exports.DESC_COMMAND_API_REQUEST_QUERY = exports.DESC_COMMAND_API_PROJECT = exports.DESC_COMMAND_API_WORKSPACE = void 0;
|
|
19
|
+
exports.TXT_COMMAND_DISTRO_CREATED = 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 = exports.OPT_COMMAND_ROUTE_SUBDOMAIN = exports.OPT_COMMAND_ROUTE_TYPE = exports.OPT_COMMAND_ROUTE_ID = exports.OPT_COMMAND_DISTRO_IDENTIFIER = exports.OPT_COMMAND_SCOPE = exports.OPT_COMMAND_AGENT_NOTE = exports.OPT_COMMAND_NOTE = exports.DESC_COMMAND_ROUTE = exports.DESC_COMMAND_ROUTE_UPDATE = exports.DESC_COMMAND_ROUTE_DELETE = exports.DESC_COMMAND_ROUTE_GET = exports.DESC_COMMAND_DISTRO_UPDATE = exports.DESC_COMMAND_DISTRO_GET = exports.DESC_COMMAND_ROUTE_LIST = exports.DESC_COMMAND_DISTRO_LIST = exports.DESC_COMMAND_DISTRO_DELETE = exports.DESC_COMMAND_ROUTE_CREATE = exports.DESC_COMMAND_DISTRO_CREATE = exports.DESC_COMMAND_DISTRO = exports.ERR_API_MESSAGE_REPLACER = exports.ERR_LOGIN_INVALID_BASE_URL = exports.ERR_LOGIN_NO_WORKSPACE_FOUND = exports.ERR_LOGIN_NO_WORKSPACES = exports.ERR_REGISTER_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_FAILED = exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = exports.TXT_REGISTER_SUCCESS = exports.TXT_LOGIN_SUCCESS = exports.TXT_LOGIN_SELECT_WORKSPACE = exports.TXT_LOGIN_ENTER_BASE_URL = exports.TXT_LOGIN_PROVIDE_CODE = exports.TXT_REGISTER_OPEN_URL = exports.TXT_LOGIN_OPEN_URL = exports.TXT_REGISTER_OPENING_STAR = exports.TXT_LOGIN_OPENING_STAR = exports.TXT_REGISTER_OPENING = exports.TXT_LOGIN_OPENING = void 0;
|
|
20
|
+
exports.OPT_COMMAND_ARTIFACT_TYPE = exports.DESC_COMMAND_ARTIFACT_CREATE = 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_LOGIN = exports.DESC_COMMAND_ARTIFACT_LIST = 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 = void 0;
|
|
21
|
+
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.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_CREATED = exports.TXT_COMMAND_PROJECT_LINK_NOT_FOUND = 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 = void 0;
|
|
22
|
+
exports.EXAMPLE_PIPELINE_RUN_CANCEL = exports.EXAMPLE_PIPELINE_RUN_APPLY = exports.EXAMPLE_PIPELINE_RUN_LOGS = exports.EXAMPLE_PIPELINE_RUN_JSONL = exports.EXAMPLE_PIPELINE_RUN_STATUS = 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 = 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 = void 0;
|
|
23
|
+
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_VERSION_CREATE = exports.EXAMPLE_PIPELINE_RUN_RETRY = exports.EXAMPLE_PIPELINE_RUN_LIST = exports.EXAMPLE_PIPELINE_LIST = exports.EXAMPLE_PIPELINE_YML = exports.EXAMPLE_PIPELINE_GET = exports.EXAMPLE_PIPELINE_UPDATE = exports.EXAMPLE_PIPELINE_DELETE = exports.EXAMPLE_PIPELINE_CREATE = void 0;
|
|
24
24
|
const utils_1 = require("./utils");
|
|
25
25
|
exports.ERR_CANCELLED = 'Cancelled';
|
|
26
26
|
exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
|
|
@@ -911,7 +911,6 @@ exports.OPTION_TARGET_EXEC_LOG_OFFSET = 'Log line offset. Default: 0';
|
|
|
911
911
|
exports.OPTION_TARGET_EXEC_LOG_LIMIT = 'Maximum number of log lines. Default: all lines';
|
|
912
912
|
exports.OPTION_TARGET_EXEC_COMMAND = 'Command to execute on the target (e.g. a SQL query or a shell command)';
|
|
913
913
|
exports.OPTION_TARGET_EXEC_ASYNC = 'Start the command and return the execution id without waiting for completion';
|
|
914
|
-
exports.OPTION_TARGET_EXEC_WAIT = 'Deprecated: waiting is the default. Use --async to run in background';
|
|
915
914
|
exports.OPTION_TARGET_EXEC_FILE = 'Read the command from a file instead of the argument';
|
|
916
915
|
// Target errors
|
|
917
916
|
exports.ERR_TARGET_NOT_FOUND = 'Target not found';
|
package/distTs/src/utils.js
CHANGED
|
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.getRootDir = exports.TARGET_ONLY_PORT_REGEX = exports.TARGET_HTTP_REGEX = exports.TARGET_TCP_TLS_REGEX = exports.ApiErrorTunnelsDisabled = exports.ApiErrorWorkspaceFlagged = exports.ApiErrorTunnelLimitReached = exports.ApiErrorAgentLimitReached = exports.ApiErrorDomainRestricted = exports.ApiErrorTargetInvalid = exports.ApiErrorWrongToken = exports.ApiErrorFailedToConnect = exports.ApiErrorAgentNotFound = exports.ARTIFACT_AUTH_TYPE = exports.TARGET_EXEC_STATUS = exports.TARGET_SCOPE = exports.ARTIFACT_TYPE = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_APP_STATUS = exports.SANDBOX_SETUP_STATUS = exports.SANDBOX_EXEC_STATUS = exports.SANDBOX_EXEC_RUNTIME = exports.SANDBOX_STATUS = exports.REST_API_ENDPOINT = exports.REST_API_REGION = exports.DEFAULT_SANDBOX_CP_USER = exports.ARTIFACT_DEFAULT_VERSION = exports.SUGGESTED_BROWSER_VERSION = exports.AGENT_UPDATE_STATUS_TTL_MS = exports.AGENT_UPDATE_PROBATION_MS = exports.AGENT_UPDATE_MAX_ATTEMPTS = exports.AGENT_FETCH_RETRY_MAX = exports.AGENT_FETCH_RETRY_MIN = exports.SSH_HANDSHAKE_TIMEOUT = exports.DEFAULT_TIMEOUT = exports.getSshIdent = exports.TUNNEL_SSH_IDENT_SHARED_H2 = exports.TUNNEL_CLIENT_IP_HEADER = exports.TUNNEL_HTTP2_SHED_LOG_INTERVAL = exports.TUNNEL_HTTP2_MAX_SESSIONS = exports.TUNNEL_HTTP2_SESSION_IDLE_TIMEOUT = exports.TUNNEL_HTTP_RETRY_AFTER = exports.TUNNEL_HTTP_MAX_INFLIGHT = exports.TUNNEL_HTTP_CB_MIN_REQUESTS = exports.TUNNEL_HTTP_CB_WINDOW = exports.TUNNEL_MAX_REQUEST_SIZE_TO_SYNC = exports.TUNNEL_HTTP_LOG_MAX_REQUESTS = exports.TUNNEL_HTTP_LOG_MAX_BODY = exports.TUNNEL_HTTP_RATE_WINDOW = exports.TUNNEL_HTTP_RATE_LIMIT = void 0;
|
|
40
|
-
exports.getGitName = exports.getGitEmail = exports.MCP_TOOL_CATEGORIES = exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.truncate = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.getVersionWithoutEnv = exports.getVersion = exports.isInstalledByChoco = exports.isInstalledByApt = exports.isInstalledByBrew = exports.isInstalledByNpm = exports.isNpmGlobalWritable = exports.isPathWritable = exports.tryGetEmail = exports.execLocally = exports.getHomeDirectory = exports.HOME_DIR_NAME = exports.chownToHomeOwner = exports.isDomainAvailable = exports.newCommand = exports.formatBytes = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getWorkingDir = void 0;
|
|
40
|
+
exports.getGitName = exports.getGitEmail = exports.MCP_TOOL_CATEGORIES = exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.truncate = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.isVersionNewer = exports.getVersionWithoutEnv = exports.parseVersion = exports.getVersion = exports.isInstalledByChoco = exports.isInstalledByApt = exports.isInstalledByBrew = exports.isInstalledByNpm = exports.isNpmGlobalWritable = exports.isPathWritable = exports.tryGetEmail = exports.execLocally = exports.getHomeDirectory = exports.HOME_DIR_NAME = exports.chownToHomeOwner = exports.isDomainAvailable = exports.newCommand = exports.formatBytes = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getWorkingDir = void 0;
|
|
41
41
|
exports.apiErrorCodeToClass = apiErrorCodeToClass;
|
|
42
42
|
exports.isFile = isFile;
|
|
43
43
|
exports.getAppWorkspaceUrl = getAppWorkspaceUrl;
|
|
@@ -599,19 +599,44 @@ const getVersion = () => {
|
|
|
599
599
|
return cachedVersion;
|
|
600
600
|
};
|
|
601
601
|
exports.getVersion = getVersion;
|
|
602
|
+
// The one place that knows what a version string looks like: `x.y.z` optionally followed by
|
|
603
|
+
// a channel suffix. AgentSystem.verifyBinary keeps a regex of its own on purpose - it fishes
|
|
604
|
+
// a version out of selftest output rather than parsing one, so it must not be anchored.
|
|
605
|
+
const parseVersion = (version) => {
|
|
606
|
+
const m = (version || '').match(/^(\d+)\.(\d+)\.(\d+)/);
|
|
607
|
+
if (!m)
|
|
608
|
+
return null;
|
|
609
|
+
return {
|
|
610
|
+
version: m[0],
|
|
611
|
+
major: Number(m[1]),
|
|
612
|
+
minor: Number(m[2]),
|
|
613
|
+
patch: Number(m[3]),
|
|
614
|
+
};
|
|
615
|
+
};
|
|
616
|
+
exports.parseVersion = parseVersion;
|
|
602
617
|
const getVersionWithoutEnv = (version) => {
|
|
603
|
-
|
|
604
|
-
if (m)
|
|
605
|
-
return m[0];
|
|
606
|
-
return '0.0.0';
|
|
618
|
+
return (0, exports.parseVersion)(version)?.version || '0.0.0';
|
|
607
619
|
};
|
|
608
620
|
exports.getVersionWithoutEnv = getVersionWithoutEnv;
|
|
621
|
+
// An update is only an update when the other side is actually ahead. Comparing the strings
|
|
622
|
+
// for inequality also fired on a build that is newer than what the channel publishes - a
|
|
623
|
+
// local dev build, or a machine that got the release before es.buddy.works did - and told
|
|
624
|
+
// the user to "update" to an older version. Both sides carry the same env suffix (latest is
|
|
625
|
+
// fetched per env), so the numeric triple decides.
|
|
626
|
+
const isVersionNewer = (version, than) => {
|
|
627
|
+
const a = (0, exports.parseVersion)(version);
|
|
628
|
+
const b = (0, exports.parseVersion)(than);
|
|
629
|
+
if (!a || !b)
|
|
630
|
+
return false;
|
|
631
|
+
if (a.major !== b.major)
|
|
632
|
+
return a.major > b.major;
|
|
633
|
+
if (a.minor !== b.minor)
|
|
634
|
+
return a.minor > b.minor;
|
|
635
|
+
return a.patch > b.patch;
|
|
636
|
+
};
|
|
637
|
+
exports.isVersionNewer = isVersionNewer;
|
|
609
638
|
const getCurrentVersionWithoutEnv = () => {
|
|
610
|
-
|
|
611
|
-
const m = v.match(/^\d+\.\d+\.\d+/);
|
|
612
|
-
if (m)
|
|
613
|
-
return m[0];
|
|
614
|
-
return '0.0.0';
|
|
639
|
+
return (0, exports.getVersionWithoutEnv)((0, exports.getVersion)());
|
|
615
640
|
};
|
|
616
641
|
exports.getCurrentVersionWithoutEnv = getCurrentVersionWithoutEnv;
|
|
617
642
|
const getVersionEnv = () => {
|
|
@@ -640,10 +665,20 @@ const getLatestVersion = async () => {
|
|
|
640
665
|
});
|
|
641
666
|
if (response.status === 200) {
|
|
642
667
|
const data = await response.text();
|
|
643
|
-
|
|
668
|
+
// A 200 whose body is not a version - a padded value, an error page from something in
|
|
669
|
+
// front of the bucket - is nothing a caller can act on, so it fails here rather than
|
|
670
|
+
// downstream, where every comparison would read it as "no update". The parsed triple
|
|
671
|
+
// is what gets returned, not the body: the regex is unanchored at the end, so a body
|
|
672
|
+
// that merely starts with a version would otherwise carry its tail into the banners,
|
|
673
|
+
// the update log and the equality test in AgentManager.remoteUpdate.
|
|
674
|
+
// Only the agent's remote update surfaces this - `commandPre` swallows it, so the CLI
|
|
675
|
+
// stays quiet about a channel it could not read.
|
|
676
|
+
const parsed = (0, exports.parseVersion)(data.trim());
|
|
677
|
+
if (!parsed)
|
|
678
|
+
throw new Error(texts_1.ERR_FETCH_VERSION);
|
|
644
679
|
if (env === 'prod')
|
|
645
|
-
return
|
|
646
|
-
return `${
|
|
680
|
+
return parsed.version;
|
|
681
|
+
return `${parsed.version}-${env}`;
|
|
647
682
|
}
|
|
648
683
|
else {
|
|
649
684
|
return '0.0.0';
|