bdy 1.22.88-master → 1.22.89-beta

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.22.88-master",
4
+ "version": "1.22.89-beta",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "homepage": "https://buddy.works/docs/cli",
@@ -22,6 +22,7 @@
22
22
  "e2e:artifact": "vitest run --config e2e/vitest.config.ts e2e/modules/artifact/",
23
23
  "e2e:sandbox": "vitest run --config e2e/vitest.config.ts e2e/modules/sandbox/",
24
24
  "e2e:api": "vitest run --config e2e/vitest.config.ts e2e/modules/api/",
25
+ "e2e:mcp": "vitest run --config e2e/vitest.config.ts e2e/modules/mcp/",
25
26
  "e2e:pipeline": "vitest run --config e2e/vitest.config.ts e2e/modules/pipeline/",
26
27
  "e2e:tunnel": "vitest run --config e2e/vitest.config.ts e2e/modules/tunnel/",
27
28
  "e2e:agent": "vitest run --config e2e/vitest.config.ts e2e/modules/agent/",
@@ -41,6 +42,7 @@
41
42
  "@fastify/accept-negotiator": "2.0.1",
42
43
  "@fastify/cors": "11.2.0",
43
44
  "@inquirer/prompts": "8.5.2",
45
+ "@modelcontextprotocol/sdk": "^1.29.0",
44
46
  "@puppeteer/browsers": "2.13.0",
45
47
  "@scalar/json-magic": "0.12.16",
46
48
  "@scalar/openapi-parser": "0.28.7",
@@ -83,12 +85,12 @@
83
85
  "zod": "3.25.76"
84
86
  },
85
87
  "devDependencies": {
86
- "@scalar/types": "0.13.2",
87
88
  "@eslint/js": "10.0.1",
88
89
  "@rollup/plugin-commonjs": "29.0.3",
89
90
  "@rollup/plugin-json": "6.1.0",
90
91
  "@rollup/plugin-node-resolve": "16.0.3",
91
92
  "@rollup/plugin-replace": "6.0.3",
93
+ "@scalar/types": "0.13.2",
92
94
  "@stylistic/eslint-plugin": "5.10.0",
93
95
  "@types/basic-auth": "1.1.8",
94
96
  "@types/content-disposition": "0.5.9",
@@ -25,6 +25,7 @@ const api_1 = __importDefault(require("./command/api"));
25
25
  const domain_1 = __importDefault(require("./command/domain"));
26
26
  const distro_1 = __importDefault(require("./command/distro"));
27
27
  const register_1 = __importDefault(require("./command/register"));
28
+ const mcp_1 = __importDefault(require("./command/mcp"));
28
29
  function cliIndex() {
29
30
  const program = (0, utils_1.newCommand)('', texts_1.DESC_PROGRAM);
30
31
  program.hook('preAction', pre_1.default);
@@ -53,6 +54,7 @@ function cliIndex() {
53
54
  program.addCommand(workspace_1.default);
54
55
  program.addCommand(project_1.default);
55
56
  program.addCommand(api_1.default);
57
+ program.addCommand(mcp_1.default);
56
58
  program.action((_, cmd) => {
57
59
  if (cmd.args.length > 0) {
58
60
  output_1.default.exitError((0, texts_1.ERR_COMMAND_NOT_FOUND)(cmd.args[0]));
@@ -0,0 +1,189 @@
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 input_1 = __importDefault(require("../input"));
9
+ const output_1 = __importDefault(require("../output"));
10
+ // stdout carries only the MCP JSON-RPC stream - every diagnostic goes to stderr
11
+ const logErr = (msg) => {
12
+ process.stderr.write(`${msg}\n`);
13
+ };
14
+ const commandMcp = (0, utils_1.newCommand)('mcp', texts_1.DESC_COMMAND_MCP);
15
+ commandMcp.skipPre = true;
16
+ commandMcp.addHelpText('after', `EXAMPLE:
17
+ Register in Claude Code:
18
+ claude mcp add buddy -- bdy mcp
19
+ `);
20
+ commandMcp.action(async () => {
21
+ const { token, refreshToken, clientId, clientSecret, clientToken } = input_1.default.restApiToken();
22
+ const baseUrl = input_1.default.restApiBaseUrl('', '', token);
23
+ // BUDDY_MCP_ENDPOINT is intentionally undocumented - it exists only for
24
+ // tests and local development against a non-region MCP server
25
+ const urlOverride = process.env.BUDDY_MCP_ENDPOINT;
26
+ let mcpUrl;
27
+ if (urlOverride) {
28
+ try {
29
+ mcpUrl = new URL(urlOverride);
30
+ }
31
+ catch {
32
+ output_1.default.exitError((0, texts_1.ERR_MCP_URL_INVALID)(urlOverride));
33
+ }
34
+ }
35
+ else {
36
+ const resolved = (0, utils_1.getMcpUrlByApiBaseUrl)(baseUrl);
37
+ if (!resolved) {
38
+ output_1.default.exitError((0, texts_1.ERR_MCP_ENDPOINT)(baseUrl.hostname));
39
+ }
40
+ mcpUrl = new URL(resolved);
41
+ }
42
+ const ApiClient = require('../api/client').default;
43
+ const api = new ApiClient(baseUrl, token, refreshToken, clientId, clientSecret, clientToken);
44
+ // Single-flight refresh: concurrent 401s share one attempt, while later
45
+ // expiries (the proxy may live for hours) trigger a fresh one
46
+ let refreshing = null;
47
+ const tryRefresh = () => {
48
+ if (refreshing)
49
+ return refreshing;
50
+ if (!refreshToken || !clientId || !clientSecret) {
51
+ return Promise.resolve(false);
52
+ }
53
+ const refresh = api.tryRefreshToken().finally(() => {
54
+ refreshing = null;
55
+ });
56
+ refreshing = refresh;
57
+ return refresh;
58
+ };
59
+ let local = null;
60
+ let remote = null;
61
+ let shuttingDown = false;
62
+ const shutdown = async (code) => {
63
+ if (shuttingDown)
64
+ return;
65
+ shuttingDown = true;
66
+ try {
67
+ await remote?.close();
68
+ }
69
+ catch {
70
+ // do nothing
71
+ }
72
+ try {
73
+ await local?.close();
74
+ }
75
+ catch {
76
+ // do nothing
77
+ }
78
+ process.exit(code);
79
+ };
80
+ const fatal = (msg) => {
81
+ logErr(msg);
82
+ void shutdown(1);
83
+ };
84
+ // The bundled undici fetch is required here: a dispatcher created from the
85
+ // bundled undici cannot be passed to the node built-in fetch.
86
+ // TLS verification is skipped only for local/dev hosts (see canSkipSslVerify)
87
+ const undici = require('undici');
88
+ const dispatcher = (0, utils_1.canSkipSslVerify)(mcpUrl.hostname)
89
+ ? output_1.default.getUndiciUnauthorizedAgent()
90
+ : undefined;
91
+ // Attaches the bearer token to every remote call; on 401 refreshes the token
92
+ // once (through the shared ApiClient mechanism) and retries the request
93
+ const proxyFetch = async (url, init) => {
94
+ const attempt = () => {
95
+ const headers = new Headers(init?.headers);
96
+ headers.set('authorization', `Bearer ${api.token}`);
97
+ const attemptInit = {
98
+ ...init,
99
+ headers,
100
+ };
101
+ if (dispatcher)
102
+ attemptInit.dispatcher = dispatcher;
103
+ // the undici and dom RequestInit/Response types are structurally
104
+ // equivalent here but nominally incompatible
105
+ return undici.fetch(url, attemptInit);
106
+ };
107
+ let response = await attempt();
108
+ if (response.status === 401 && !shuttingDown) {
109
+ const refreshed = await tryRefresh();
110
+ if (!refreshed) {
111
+ fatal(texts_1.ERR_MCP_REFRESH_FAILED);
112
+ return response;
113
+ }
114
+ response = await attempt();
115
+ if (response.status === 401) {
116
+ fatal(texts_1.ERR_MCP_REFRESH_FAILED);
117
+ }
118
+ }
119
+ return response;
120
+ };
121
+ // Transport-level proxy: pipe raw JSON-RPC between stdio and the remote
122
+ // streamable http endpoint so notifications, progress, sampling and future
123
+ // protocol additions pass through untouched
124
+ const { StdioServerTransport: LocalTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
125
+ const { StreamableHTTPClientTransport: RemoteTransport } = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
126
+ remote = new RemoteTransport(mcpUrl, { fetch: proxyFetch });
127
+ local = new LocalTransport();
128
+ // On stdin EOF responses to piped one-shot requests (e.g. `echo <initialize
129
+ // message> | bdy mcp`) may still be in flight - exit once they all got their
130
+ // response, with a hard cap as remote.send() can resolve before an
131
+ // SSE-delivered response arrives
132
+ const pendingRequests = new Set();
133
+ let stdinClosed = false;
134
+ const exitWhenDrained = () => {
135
+ if (stdinClosed && !pendingRequests.size)
136
+ void shutdown(0);
137
+ };
138
+ local.onmessage = (message) => {
139
+ const m = message;
140
+ if (m.id !== undefined && m.method !== undefined)
141
+ pendingRequests.add(m.id);
142
+ remote.send(message).catch((err) => {
143
+ if (m.id !== undefined)
144
+ pendingRequests.delete(m.id);
145
+ fatal(`Remote MCP endpoint error: ${err.message}`);
146
+ });
147
+ };
148
+ remote.onmessage = (message) => {
149
+ const m = message;
150
+ local
151
+ .send(message)
152
+ .catch((err) => {
153
+ fatal(`Failed to write to stdout: ${err.message}`);
154
+ })
155
+ .finally(() => {
156
+ // a message with an id and no method is a response to a local request
157
+ if (m.id !== undefined && m.method === undefined) {
158
+ pendingRequests.delete(m.id);
159
+ exitWhenDrained();
160
+ }
161
+ });
162
+ };
163
+ local.onerror = (err) => {
164
+ logErr(`Local transport error: ${err.message}`);
165
+ };
166
+ remote.onerror = (err) => {
167
+ logErr(`Remote transport error: ${err.message}`);
168
+ };
169
+ local.onclose = () => void shutdown(0);
170
+ remote.onclose = () => void shutdown(1);
171
+ // StdioServerTransport only listens for stdin data - EOF must end the proxy
172
+ process.stdin.on('end', () => {
173
+ stdinClosed = true;
174
+ setTimeout(() => void shutdown(0), 10000);
175
+ exitWhenDrained();
176
+ });
177
+ process.on('SIGINT', () => void shutdown(0));
178
+ process.on('SIGTERM', () => void shutdown(0));
179
+ try {
180
+ await remote.start();
181
+ await local.start();
182
+ }
183
+ catch (err) {
184
+ fatal(`Failed to start MCP proxy: ${err instanceof Error ? err.message : err}`);
185
+ return;
186
+ }
187
+ logErr(`Buddy MCP proxy: forwarding stdio to ${mcpUrl.href}`);
188
+ });
189
+ exports.default = commandMcp;
@@ -6,6 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../utils");
7
7
  const output_1 = __importDefault(require("../output"));
8
8
  const commandPre = async (_, command) => {
9
+ // commands whose stdout is machine-read (e.g. mcp) skip agent/version checks
10
+ // entirely - no banners and no startup latency from the version fetch
11
+ if (command.skipPre)
12
+ return;
9
13
  const AgentManager = require('../agent/manager').default;
10
14
  const ApiAgent = require('../tunnel/api/agent').default;
11
15
  command.agentStatus = null;
@@ -13,11 +13,11 @@ exports.DESC_COMMAND_SANDBOX_EXEC = exports.DESC_COMMAND_SANDBOX_STATUS = export
13
13
  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 = exports.ERR_SANDBOX_STOP_FAILED = 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_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_NAME = exports.OPTION_SANDBOX_IDENTIFIER = exports.DESC_COMMAND_SANDBOX_APP = void 0;
14
14
  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 = 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 = void 0;
15
15
  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 = 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 = void 0;
16
- exports.DESC_COMMAND_ROUTE_DELETE = 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 = 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.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 = void 0;
17
- 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_ROUTE_NO_UPDATE = exports.ERR_COMMAND_DISTRO_NOT_FOUND = exports.ERR_COMMAND_SCOPE = 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_NAME = exports.OPT_COMMAND_ROUTE_TARGET = 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.DESC_COMMAND_ROUTE = exports.DESC_COMMAND_ROUTE_UPDATE = void 0;
18
- 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 = 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 = void 0;
19
- 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_EXEC_COMMAND = exports.EXAMPLE_TUNNEL_START = exports.EXAMPLE_TUNNEL_TCP = exports.EXAMPLE_TUNNEL_TLS = exports.EXAMPLE_AGENT_TUNNEL_START = exports.EXAMPLE_AGENT_TUNNEL_STATUS = exports.EXAMPLE_AGENT_TUNNEL_REMOVE = exports.EXAMPLE_AGENT_TUNNEL_LIST = exports.EXAMPLE_TUNNEL_HTTP = exports.EXAMPLE_SANDBOX_CREATE = exports.EXAMPLE_DISTRO_CREATE = exports.EXAMPLE_ROUTE_CREATE = exports.EXAMPLE_ROUTE_LIST = exports.EXAMPLE_ROUTE_UPDATE = exports.EXAMPLE_ROUTE_DELETE = exports.EXAMPLE_DISTRO_DELETE = exports.EXAMPLE_DISTRO_LIST = void 0;
20
- 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 = void 0;
16
+ 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 = 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.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 = void 0;
17
+ 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_ROUTE_NO_UPDATE = exports.ERR_COMMAND_DISTRO_NOT_FOUND = exports.ERR_COMMAND_SCOPE = 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_NAME = exports.OPT_COMMAND_ROUTE_TARGET = 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.DESC_COMMAND_ROUTE = exports.DESC_COMMAND_ROUTE_UPDATE = exports.DESC_COMMAND_ROUTE_DELETE = exports.DESC_COMMAND_ROUTE_LIST = exports.DESC_COMMAND_DISTRO_LIST = exports.DESC_COMMAND_DISTRO_DELETE = void 0;
18
+ 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 = 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 = void 0;
19
+ 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_EXEC_COMMAND = exports.EXAMPLE_TUNNEL_START = exports.EXAMPLE_TUNNEL_TCP = exports.EXAMPLE_TUNNEL_TLS = exports.EXAMPLE_AGENT_TUNNEL_START = exports.EXAMPLE_AGENT_TUNNEL_STATUS = exports.EXAMPLE_AGENT_TUNNEL_REMOVE = exports.EXAMPLE_AGENT_TUNNEL_LIST = exports.EXAMPLE_TUNNEL_HTTP = exports.EXAMPLE_SANDBOX_CREATE = exports.EXAMPLE_DISTRO_CREATE = exports.EXAMPLE_ROUTE_CREATE = exports.EXAMPLE_ROUTE_LIST = exports.EXAMPLE_ROUTE_UPDATE = exports.EXAMPLE_ROUTE_DELETE = exports.EXAMPLE_DISTRO_DELETE = exports.EXAMPLE_DISTRO_LIST = exports.EXAMPLE_SANDBOX_CP = exports.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_CREATED = void 0;
20
+ 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 = void 0;
21
21
  const utils_1 = require("./utils");
22
22
  exports.ERR_CANCELLED = 'Cancelled';
23
23
  exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
@@ -826,6 +826,13 @@ const ERR_API_PARAMETER_NOT_REPLACED = (param) => `Replace URL parameter ${param
826
826
  exports.ERR_API_PARAMETER_NOT_REPLACED = ERR_API_PARAMETER_NOT_REPLACED;
827
827
  const ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = (type) => `Media type not implemented (${type})`;
828
828
  exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED;
829
+ // Mcp command
830
+ exports.DESC_COMMAND_MCP = 'Run a local stdio MCP server proxying to the Buddy remote MCP server';
831
+ const ERR_MCP_ENDPOINT = (host) => `Unable to resolve the MCP endpoint for '${host}'`;
832
+ exports.ERR_MCP_ENDPOINT = ERR_MCP_ENDPOINT;
833
+ const ERR_MCP_URL_INVALID = (url) => `Invalid MCP url: ${url}`;
834
+ exports.ERR_MCP_URL_INVALID = ERR_MCP_URL_INVALID;
835
+ exports.ERR_MCP_REFRESH_FAILED = 'Session expired and token refresh failed. Run `bdy login` to authenticate';
829
836
  // Login command
830
837
  exports.DESC_COMMAND_LOGIN = 'Log in to Buddy';
831
838
  exports.DESC_COMMAND_LOGOUT = 'Log out from Buddy';
@@ -44,6 +44,7 @@ exports.getAppWorkspaceUrl = getAppWorkspaceUrl;
44
44
  exports.getAppWorkspaceSettingsUrl = getAppWorkspaceSettingsUrl;
45
45
  exports.getAppUrl = getAppUrl;
46
46
  exports.getDockerRegistryHostByApiBaseUrl = getDockerRegistryHostByApiBaseUrl;
47
+ exports.getMcpUrlByApiBaseUrl = getMcpUrlByApiBaseUrl;
47
48
  exports.openApiPrepareUrl = openApiPrepareUrl;
48
49
  exports.getOpenApiEndpointByApiBaseUrl = getOpenApiEndpointByApiBaseUrl;
49
50
  exports.isValidDomain = isValidDomain;
@@ -629,8 +630,8 @@ function getDockerRegistryHostByApiBaseUrl(baseUrl) {
629
630
  else if (baseUrl.hostname.includes('api.eu.buddy.works')) {
630
631
  return 'container.eu.registry.sh';
631
632
  }
632
- else if (baseUrl.hostname.includes('api.as.buddy.works')) {
633
- return 'container.as.registry.sh';
633
+ else if (baseUrl.hostname.includes('api.asia.buddy.works')) {
634
+ return 'container.asia.registry.sh';
634
635
  }
635
636
  else if (baseUrl.hostname.includes('api.awsdev.net')) {
636
637
  return 'container.awsdev.net';
@@ -684,6 +685,21 @@ function getDockerRegistryHostByApiBaseUrl(baseUrl) {
684
685
  return baseUrl.hostname;
685
686
  }
686
687
  }
688
+ // Region MCP hosts mirror REST_API_ENDPOINT (api.* -> mcp.*). Returns null for
689
+ // hosts without a known MCP endpoint (onprem/dev) - callers must point
690
+ // BUDDY_MCP_ENDPOINT at it.
691
+ function getMcpUrlByApiBaseUrl(baseUrl) {
692
+ if (baseUrl.hostname.includes('api.eu.buddy.works')) {
693
+ return 'https://mcp.eu.buddy.works/mcp';
694
+ }
695
+ else if (baseUrl.hostname.includes('api.asia.buddy.works')) {
696
+ return 'https://mcp.asia.buddy.works/mcp';
697
+ }
698
+ else if (baseUrl.hostname.includes('api.buddy.works')) {
699
+ return 'https://mcp.buddy.works/mcp';
700
+ }
701
+ return null;
702
+ }
687
703
  function openApiPrepareUrl(url, workspace, project) {
688
704
  let preparedUrl = url.replaceAll('{workspace_domain}', workspace);
689
705
  if (project)
@@ -693,7 +709,7 @@ function openApiPrepareUrl(url, workspace, project) {
693
709
  function getOpenApiEndpointByApiBaseUrl(baseUrl) {
694
710
  if (baseUrl.hostname.includes('api.buddy.works') ||
695
711
  baseUrl.hostname.includes('api.eu.buddy.works') ||
696
- baseUrl.hostname.includes('api.as.buddy.works')) {
712
+ baseUrl.hostname.includes('api.asia.buddy.works')) {
697
713
  return 'https://es.buddy.works/openapi/production/restapi.json';
698
714
  }
699
715
  else if (baseUrl.hostname.includes('api.awsstage.net') ||
@@ -833,8 +849,8 @@ function getAppHostByApiBaseUrl(baseUrl) {
833
849
  else if (baseUrl.hostname.includes('api.eu.buddy.works')) {
834
850
  return 'eu.buddy.works';
835
851
  }
836
- else if (baseUrl.hostname.includes('api.as.buddy.works')) {
837
- return 'as.buddy.works';
852
+ else if (baseUrl.hostname.includes('api.asia.buddy.works')) {
853
+ return 'asia.buddy.works';
838
854
  }
839
855
  else if (baseUrl.hostname.includes('api.awsdev.net')) {
840
856
  return 'app.awsdev.net';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.22.88-master",
4
+ "version": "1.22.89-beta",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "homepage": "https://buddy.works/docs/cli",
@@ -22,6 +22,7 @@
22
22
  "e2e:artifact": "vitest run --config e2e/vitest.config.ts e2e/modules/artifact/",
23
23
  "e2e:sandbox": "vitest run --config e2e/vitest.config.ts e2e/modules/sandbox/",
24
24
  "e2e:api": "vitest run --config e2e/vitest.config.ts e2e/modules/api/",
25
+ "e2e:mcp": "vitest run --config e2e/vitest.config.ts e2e/modules/mcp/",
25
26
  "e2e:pipeline": "vitest run --config e2e/vitest.config.ts e2e/modules/pipeline/",
26
27
  "e2e:tunnel": "vitest run --config e2e/vitest.config.ts e2e/modules/tunnel/",
27
28
  "e2e:agent": "vitest run --config e2e/vitest.config.ts e2e/modules/agent/",
@@ -41,6 +42,7 @@
41
42
  "@fastify/accept-negotiator": "2.0.1",
42
43
  "@fastify/cors": "11.2.0",
43
44
  "@inquirer/prompts": "8.5.2",
45
+ "@modelcontextprotocol/sdk": "^1.29.0",
44
46
  "@puppeteer/browsers": "2.13.0",
45
47
  "@scalar/json-magic": "0.12.16",
46
48
  "@scalar/openapi-parser": "0.28.7",
@@ -83,12 +85,12 @@
83
85
  "zod": "3.25.76"
84
86
  },
85
87
  "devDependencies": {
86
- "@scalar/types": "0.13.2",
87
88
  "@eslint/js": "10.0.1",
88
89
  "@rollup/plugin-commonjs": "29.0.3",
89
90
  "@rollup/plugin-json": "6.1.0",
90
91
  "@rollup/plugin-node-resolve": "16.0.3",
91
92
  "@rollup/plugin-replace": "6.0.3",
93
+ "@scalar/types": "0.13.2",
92
94
  "@stylistic/eslint-plugin": "5.10.0",
93
95
  "@types/basic-auth": "1.1.8",
94
96
  "@types/content-disposition": "0.5.9",