bdy 1.22.98-stage → 1.22.99-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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bdy",
|
|
3
3
|
"preferGlobal": false,
|
|
4
|
-
"version": "1.22.
|
|
4
|
+
"version": "1.22.99-dev",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://buddy.works/docs/cli",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@fastify/accept-negotiator": "2.0.1",
|
|
43
43
|
"@fastify/cors": "11.2.0",
|
|
44
44
|
"@inquirer/prompts": "8.5.2",
|
|
45
|
-
"@modelcontextprotocol/sdk": "1.
|
|
45
|
+
"@modelcontextprotocol/sdk": "1.30.0",
|
|
46
46
|
"@puppeteer/browsers": "2.13.0",
|
|
47
47
|
"@scalar/json-magic": "0.12.16",
|
|
48
48
|
"@scalar/openapi-parser": "0.28.7",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"ssh2": "1.17.0",
|
|
78
78
|
"tar-stream": "3.2.0",
|
|
79
79
|
"terminal-kit": "3.1.2",
|
|
80
|
-
"undici": "8.
|
|
80
|
+
"undici": "8.10.0",
|
|
81
81
|
"unzipper": "0.12.3",
|
|
82
82
|
"uuid": "14.0.0",
|
|
83
83
|
"which": "4.0.0",
|
|
@@ -38,6 +38,12 @@ commandSandboxGet.action(async (identifier, options) => {
|
|
|
38
38
|
['Resources', sandbox.resources || '-'],
|
|
39
39
|
['Tags', (sandbox.tags || []).join(', ') || '-'],
|
|
40
40
|
['URL', sandbox.html_url || '-'],
|
|
41
|
+
[
|
|
42
|
+
'SSH',
|
|
43
|
+
sandbox.ssh_host && sandbox.ssh_port
|
|
44
|
+
? `ssh ${sandbox.ssh_host} -p ${sandbox.ssh_port}`
|
|
45
|
+
: '-',
|
|
46
|
+
],
|
|
41
47
|
];
|
|
42
48
|
if (sandbox.endpoints && sandbox.endpoints.length > 0) {
|
|
43
49
|
data.push([
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("../../utils");
|
|
7
|
+
const texts_1 = require("../../texts");
|
|
8
|
+
const output_1 = __importDefault(require("../../output"));
|
|
9
|
+
const input_1 = __importDefault(require("../../input"));
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const commandSandboxSsh = (0, utils_1.newCommand)('ssh', texts_1.DESC_COMMAND_SANDBOX_SSH);
|
|
12
|
+
commandSandboxSsh.alias('connect');
|
|
13
|
+
commandSandboxSsh.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
|
|
14
|
+
commandSandboxSsh.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
|
|
15
|
+
commandSandboxSsh.option('-i, --identity <path>', texts_1.OPTION_SANDBOX_SSH_IDENTITY);
|
|
16
|
+
commandSandboxSsh.option('--print', texts_1.OPTION_SANDBOX_SSH_PRINT);
|
|
17
|
+
commandSandboxSsh.argument('<identifier>', texts_1.OPTION_SANDBOX_IDENTIFIER);
|
|
18
|
+
commandSandboxSsh.argument('[args...]', texts_1.OPTION_SANDBOX_SSH_ARGS);
|
|
19
|
+
commandSandboxSsh.addHelpText('after', `\nEXAMPLES:${texts_1.EXAMPLE_SANDBOX_SSH}`);
|
|
20
|
+
// ssh keeps the FIRST value it is given for a keyword, so every default below would silently beat
|
|
21
|
+
// the same -o coming from the user. Only add ours when they did not set that keyword themselves.
|
|
22
|
+
const hasSshOption = (args, keyword) => {
|
|
23
|
+
const prefix = `${keyword.toLowerCase()}=`;
|
|
24
|
+
return args.some((arg, i) => {
|
|
25
|
+
let value = '';
|
|
26
|
+
if (args[i - 1] === '-o')
|
|
27
|
+
value = arg;
|
|
28
|
+
else if (arg.startsWith('-o'))
|
|
29
|
+
value = arg.slice(2);
|
|
30
|
+
return value.toLowerCase().startsWith(prefix);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const buildSshArgs = (host, port, identity, extra) => {
|
|
34
|
+
const args = ['-p', String(port)];
|
|
35
|
+
if (identity)
|
|
36
|
+
args.push('-i', identity);
|
|
37
|
+
// The host key belongs to the agent inside the sandbox and is regenerated for every new sandbox,
|
|
38
|
+
// while the edge host is shared and only the forward port varies - a recycled port would trip a
|
|
39
|
+
// host key mismatch in the user's own known_hosts. Keep those keys in ~/.bdy instead.
|
|
40
|
+
if (!hasSshOption(extra, 'UserKnownHostsFile')) {
|
|
41
|
+
args.push('-o', `UserKnownHostsFile=${(0, path_1.join)((0, utils_1.getHomeDirectory)(), 'known_hosts')}`);
|
|
42
|
+
}
|
|
43
|
+
if (!hasSshOption(extra, 'StrictHostKeyChecking')) {
|
|
44
|
+
args.push('-o', 'StrictHostKeyChecking=accept-new');
|
|
45
|
+
}
|
|
46
|
+
// Only publickey reaches a shell: on the password path the agent accepts without opening the
|
|
47
|
+
// proxy connection to the sandbox sshd, so pty and shell requests are rejected afterwards.
|
|
48
|
+
if (!hasSshOption(extra, 'PreferredAuthentications')) {
|
|
49
|
+
args.push('-o', 'PreferredAuthentications=publickey');
|
|
50
|
+
}
|
|
51
|
+
args.push(host, ...extra);
|
|
52
|
+
return args;
|
|
53
|
+
};
|
|
54
|
+
const quoteArg = (arg) => /[\s'"\\$`*?[\]{}();&|<>#~]/.test(arg) ? `'${arg.replace(/'/g, "'\\''")}'` : arg;
|
|
55
|
+
commandSandboxSsh.action(async (identifier, args, options) => {
|
|
56
|
+
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
57
|
+
const project = input_1.default.restApiProject(options.project);
|
|
58
|
+
const client = input_1.default.restApiTokenClient();
|
|
59
|
+
const { sandbox_id } = await client.getSandboxByIdentifier(workspace, project, identifier);
|
|
60
|
+
if (!sandbox_id) {
|
|
61
|
+
output_1.default.exitError(texts_1.ERR_SANDBOX_NOT_FOUND);
|
|
62
|
+
}
|
|
63
|
+
let sandbox = await client.getSandbox(workspace, sandbox_id);
|
|
64
|
+
if (sandbox.status !== utils_1.SANDBOX_STATUS.RUNNING) {
|
|
65
|
+
output_1.default.exitError((0, texts_1.ERR_SANDBOX_NOT_RUNNING)(identifier, sandbox.status || 'UNKNOWN'));
|
|
66
|
+
}
|
|
67
|
+
if (!sandbox.ssh_host || !sandbox.ssh_port) {
|
|
68
|
+
// A sandbox that just became RUNNING may not have its forward port registered yet
|
|
69
|
+
try {
|
|
70
|
+
sandbox = await client.sandboxWaitForPorts(workspace, sandbox_id, 30);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
output_1.default.exitError((0, texts_1.ERR_SANDBOX_SSH_NO_ACCESS)(identifier));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const sshArgs = buildSshArgs(sandbox.ssh_host, sandbox.ssh_port, options.identity, args || []);
|
|
77
|
+
if (options.print) {
|
|
78
|
+
output_1.default.normal(['ssh', ...sshArgs].map(quoteArg).join(' '));
|
|
79
|
+
output_1.default.exitNormal();
|
|
80
|
+
}
|
|
81
|
+
const which = require('which');
|
|
82
|
+
const resolved = await which('ssh', { nothrow: true });
|
|
83
|
+
if (!resolved) {
|
|
84
|
+
output_1.default.exitError(texts_1.ERR_SANDBOX_SSH_MISSING);
|
|
85
|
+
}
|
|
86
|
+
const { spawn } = require('cross-spawn');
|
|
87
|
+
const child = spawn(resolved, sshArgs, { stdio: 'inherit' });
|
|
88
|
+
// The terminal sends Ctrl+C to the whole foreground group: exiting here would detach a live ssh
|
|
89
|
+
// and hand the prompt back while it still owns the tty. Let ssh be the one that handles it.
|
|
90
|
+
const ignoreSignals = ['SIGINT', 'SIGQUIT', 'SIGTSTP'];
|
|
91
|
+
ignoreSignals.forEach((signal) => process.on(signal, () => { }));
|
|
92
|
+
child.on('error', () => {
|
|
93
|
+
output_1.default.exitError(texts_1.ERR_SANDBOX_SSH_MISSING);
|
|
94
|
+
});
|
|
95
|
+
child.on('close', (code, signal) => {
|
|
96
|
+
output_1.default.exitCode(signal ? 1 : code || 0);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
exports.default = commandSandboxSsh;
|
|
@@ -14,6 +14,7 @@ const stop_1 = __importDefault(require("./sandbox/stop"));
|
|
|
14
14
|
const restart_1 = __importDefault(require("./sandbox/restart"));
|
|
15
15
|
const status_1 = __importDefault(require("./sandbox/status"));
|
|
16
16
|
const cp_1 = __importDefault(require("./sandbox/cp"));
|
|
17
|
+
const ssh_1 = __importDefault(require("./sandbox/ssh"));
|
|
17
18
|
const snapshot_1 = __importDefault(require("./sandbox/snapshot"));
|
|
18
19
|
const endpoint_1 = __importDefault(require("./sandbox/endpoint"));
|
|
19
20
|
const exec_1 = __importDefault(require("./sandbox/exec"));
|
|
@@ -35,6 +36,7 @@ commandSandbox.addCommand(restart_1.default);
|
|
|
35
36
|
commandSandbox.addCommand(status_1.default);
|
|
36
37
|
commandSandbox.addCommand(logs_1.default);
|
|
37
38
|
commandSandbox.addCommand(cp_1.default);
|
|
39
|
+
commandSandbox.addCommand(ssh_1.default);
|
|
38
40
|
commandSandbox.addCommand(exec_1.default);
|
|
39
41
|
commandSandbox.addCommand(app_1.default);
|
|
40
42
|
commandSandbox.addCommand(snapshot_1.default);
|
package/distTs/src/texts.js
CHANGED
|
@@ -10,15 +10,15 @@ exports.OPTION_WHITELIST = exports.OPTION_REST_API_PER_PAGE = exports.OPTION_RES
|
|
|
10
10
|
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 = 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 = exports.OPTION_HEADER_USER_AGENT = exports.OPTION_RESPONSE_HEADER = exports.OPTION_HEADER = void 0;
|
|
11
11
|
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.LOG_AGENT_NSSM_CLEARING = exports.LOG_AGENT_NSSM_EXTRACTING = exports.LOG_AGENT_NSSM_DOWNLOADING = 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 = void 0;
|
|
12
12
|
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 = exports.LOG_TUNNEL_CONNECTED = exports.LOG_AGENT_STARTED = 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_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 = void 0;
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
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 = void 0;
|
|
13
|
+
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 = 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 = void 0;
|
|
14
|
+
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 = 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 = void 0;
|
|
15
|
+
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_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 = 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 = void 0;
|
|
16
|
+
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 = 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 = void 0;
|
|
17
|
+
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 = exports.TXT_LOGIN_SELECT_REGION = exports.TXT_WORKSPACE_NONE = exports.TXT_WORKSPACE_SET_SUCCESS = exports.ARG_COMMAND_WORKSPACE = exports.DESC_COMMAND_WORKSPACE_GET = void 0;
|
|
18
|
+
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_DISTRO_NO_UPDATE = exports.ERR_COMMAND_ROUTE_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_PROJECT = exports.OPT_COMMAND_DISTRO_DISABLE = exports.OPT_COMMAND_DISTRO_ENABLE = exports.OPT_COMMAND_DISTRO_AGENT_NOTE = void 0;
|
|
19
|
+
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 = 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 = void 0;
|
|
20
|
+
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 = 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_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 = void 0;
|
|
21
|
+
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 = void 0;
|
|
22
22
|
const utils_1 = require("./utils");
|
|
23
23
|
exports.ERR_CANCELLED = 'Cancelled';
|
|
24
24
|
exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
|
|
@@ -630,6 +630,9 @@ Does NOT include:
|
|
|
630
630
|
exports.DESC_COMMAND_SANDBOX_STATUS = 'Get sandbox status';
|
|
631
631
|
exports.DESC_COMMAND_SANDBOX_EXEC = 'Execute a command in sandbox. Commands run as buddy with passwordless sudo. Use sudo for package installs';
|
|
632
632
|
exports.DESC_COMMAND_SANDBOX_APP = 'Manage sandbox apps';
|
|
633
|
+
exports.DESC_COMMAND_SANDBOX_SSH = `Open an interactive SSH session to a sandbox
|
|
634
|
+
Authenticates with the SSH key you added to your Buddy account - the session always runs as the buddy user, whatever login is sent
|
|
635
|
+
Arguments for ssh itself, or a command to run instead of a shell, go after --`;
|
|
633
636
|
// Sandbox options
|
|
634
637
|
exports.OPTION_SANDBOX_IDENTIFIER = 'Sandbox identifier';
|
|
635
638
|
exports.OPTION_SANDBOX_NAME = 'Sandbox display name';
|
|
@@ -651,6 +654,9 @@ For external repository use url (required), path (optional), ref (optional), bui
|
|
|
651
654
|
For artifact use artifact (required), path (optional), build (optional)`;
|
|
652
655
|
exports.OPTION_SANDBOX_TIMEOUT = 'The timeout in seconds after which the sandbox will be automatically stopped';
|
|
653
656
|
exports.OPTION_SANDBOX_RUNTIME = 'Command runtime: BASH, JAVASCRIPT, TYPESCRIPT, PYTHON (default: BASH)';
|
|
657
|
+
exports.OPTION_SANDBOX_SSH_ARGS = 'Arguments passed to ssh and the remote command to run, e.g. -- -L 8080:localhost:8080';
|
|
658
|
+
exports.OPTION_SANDBOX_SSH_IDENTITY = 'Private key file used for authentication (ssh -i)';
|
|
659
|
+
exports.OPTION_SANDBOX_SSH_PRINT = 'Print the ssh command instead of running it';
|
|
654
660
|
// Sandbox errors
|
|
655
661
|
exports.ERR_SANDBOX_NOT_FOUND = 'Sandbox not found';
|
|
656
662
|
exports.ERR_SANDBOX_APP_NOT_FOUND = 'Sandbox app not found';
|
|
@@ -665,6 +671,11 @@ exports.ERR_SANDBOX_SNAPSHOT_TIMEOUT = 'Timeout waiting for sandbox snapshot';
|
|
|
665
671
|
exports.ERR_SANDBOX_STOP_TIMEOUT = 'Timeout waiting for sandbox stop';
|
|
666
672
|
exports.ERR_SANDBOX_RUNNING_FAILED = 'Sandbox failed to start';
|
|
667
673
|
exports.ERR_SANDBOX_NO_COMMANDS = 'No commands found for this sandbox';
|
|
674
|
+
const ERR_SANDBOX_NOT_RUNNING = (identifier, status) => `Sandbox '${identifier}' is not running (status: ${status}). Start it with "bdy sb start ${identifier}"`;
|
|
675
|
+
exports.ERR_SANDBOX_NOT_RUNNING = ERR_SANDBOX_NOT_RUNNING;
|
|
676
|
+
const ERR_SANDBOX_SSH_NO_ACCESS = (identifier) => `SSH access is not available for sandbox '${identifier}'`;
|
|
677
|
+
exports.ERR_SANDBOX_SSH_NO_ACCESS = ERR_SANDBOX_SSH_NO_ACCESS;
|
|
678
|
+
exports.ERR_SANDBOX_SSH_MISSING = 'Cannot find the ssh command. Install an OpenSSH client and make sure ssh is in PATH';
|
|
668
679
|
exports.ERR_SANDBOX_STOP_FAILED = 'Sandbox failed to stop';
|
|
669
680
|
exports.OPTION_SANDBOX_WAIT_RUNNING = 'Wait until sandbox is running';
|
|
670
681
|
exports.OPTION_SANDBOX_WAIT_CONFIGURED = 'Wait until sandbox ran setup commands';
|
|
@@ -1276,6 +1287,17 @@ exports.EXAMPLE_SANDBOX_EXEC_COMMAND = `
|
|
|
1276
1287
|
bdy sb exec command sandbox-identifier "sleep 10" --wait
|
|
1277
1288
|
### install package from apt:
|
|
1278
1289
|
bdy sb exec command sandbox-identifier "sudo apt-get update && sudo apt-get install -y nginx" --wait`;
|
|
1290
|
+
exports.EXAMPLE_SANDBOX_SSH = `
|
|
1291
|
+
### open a shell in the sandbox:
|
|
1292
|
+
bdy sb ssh sandbox-identifier
|
|
1293
|
+
### run a single command and exit:
|
|
1294
|
+
bdy sb ssh sandbox-identifier -- ls -la
|
|
1295
|
+
### forward a sandbox port to localhost:
|
|
1296
|
+
bdy sb ssh sandbox-identifier -- -L 8080:localhost:8080
|
|
1297
|
+
### authenticate with a specific private key:
|
|
1298
|
+
bdy sb ssh sandbox-identifier -i ~/.ssh/id_ed25519
|
|
1299
|
+
### print the ssh command instead of running it:
|
|
1300
|
+
bdy sb ssh sandbox-identifier --print`;
|
|
1279
1301
|
exports.EXAMPLE_SANDBOX_EXEC_KILL = `
|
|
1280
1302
|
### kill command running in sandbox:
|
|
1281
1303
|
bdy sb exec kill sandbox-identifier command-id
|
|
@@ -365,7 +365,11 @@ class ServerSsh extends events_1.default {
|
|
|
365
365
|
opts.env = env;
|
|
366
366
|
if (x11)
|
|
367
367
|
opts.x11 = x11;
|
|
368
|
-
|
|
368
|
+
// `false`, not `{}`: ssh2 requests a pty for anything that is not exactly
|
|
369
|
+
// false, so `{}` gave every shell an upstream pty even when the client asked
|
|
370
|
+
// for none. sshd never ends a pty session on channel EOF, so a piped session
|
|
371
|
+
// (`ssh sandbox < script.sh`) hung on an interactive shell that outlived stdin.
|
|
372
|
+
proxyClient.shell(pty || false, opts, (err, c) => {
|
|
369
373
|
if (err || !c) {
|
|
370
374
|
if (reject)
|
|
371
375
|
reject();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bdy",
|
|
3
3
|
"preferGlobal": false,
|
|
4
|
-
"version": "1.22.
|
|
4
|
+
"version": "1.22.99-dev",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://buddy.works/docs/cli",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@fastify/accept-negotiator": "2.0.1",
|
|
43
43
|
"@fastify/cors": "11.2.0",
|
|
44
44
|
"@inquirer/prompts": "8.5.2",
|
|
45
|
-
"@modelcontextprotocol/sdk": "1.
|
|
45
|
+
"@modelcontextprotocol/sdk": "1.30.0",
|
|
46
46
|
"@puppeteer/browsers": "2.13.0",
|
|
47
47
|
"@scalar/json-magic": "0.12.16",
|
|
48
48
|
"@scalar/openapi-parser": "0.28.7",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"ssh2": "1.17.0",
|
|
78
78
|
"tar-stream": "3.2.0",
|
|
79
79
|
"terminal-kit": "3.1.2",
|
|
80
|
-
"undici": "8.
|
|
80
|
+
"undici": "8.10.0",
|
|
81
81
|
"unzipper": "0.12.3",
|
|
82
82
|
"uuid": "14.0.0",
|
|
83
83
|
"which": "4.0.0",
|