@cloudbase/cloudbase-mcp 2.24.0 → 2.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +3 -3
- package/dist/index.cjs +237 -134
- package/dist/index.d.ts +9 -0
- package/dist/index.js +105 -24
- package/package.json +8 -2
package/dist/index.js
CHANGED
|
@@ -30,6 +30,8 @@ import * as __WEBPACK_EXTERNAL_MODULE_winston__ from "winston";
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33
|
+
exports.DEFAULT_CREATE_ENV_RESOURCES = exports.CREATE_ENV_RESOURCE_VALUES = void 0;
|
|
34
|
+
exports.resolveCreateEnvResources = resolveCreateEnvResources;
|
|
33
35
|
exports.simplifyEnvList = simplifyEnvList;
|
|
34
36
|
exports.registerEnvTools = registerEnvTools;
|
|
35
37
|
const toolbox_1 = __webpack_require__(2090);
|
|
@@ -39,6 +41,26 @@ const cloudbase_manager_js_1 = __webpack_require__(3431);
|
|
|
39
41
|
const logger_js_1 = __webpack_require__(3039);
|
|
40
42
|
const tool_result_js_1 = __webpack_require__(9835);
|
|
41
43
|
const env_setup_js_1 = __webpack_require__(6978);
|
|
44
|
+
/**
|
|
45
|
+
* Resources accepted by CreateEnv. Matches Cloud API / Manager SDK contract.
|
|
46
|
+
* `postgresql` enables CloudBase PostgreSQL (PG mode) when supported by the package.
|
|
47
|
+
*/
|
|
48
|
+
exports.CREATE_ENV_RESOURCE_VALUES = [
|
|
49
|
+
"flexdb",
|
|
50
|
+
"storage",
|
|
51
|
+
"function",
|
|
52
|
+
"postgresql",
|
|
53
|
+
];
|
|
54
|
+
/** Default Resources when callers omit the field (schema promises "all four"). */
|
|
55
|
+
exports.DEFAULT_CREATE_ENV_RESOURCES = [
|
|
56
|
+
...exports.CREATE_ENV_RESOURCE_VALUES,
|
|
57
|
+
];
|
|
58
|
+
function resolveCreateEnvResources(resources) {
|
|
59
|
+
if (Array.isArray(resources) && resources.length > 0) {
|
|
60
|
+
return [...resources];
|
|
61
|
+
}
|
|
62
|
+
return [...exports.DEFAULT_CREATE_ENV_RESOURCES];
|
|
63
|
+
}
|
|
42
64
|
/**
|
|
43
65
|
* Simplify environment list data by keeping only essential fields for AI assistant
|
|
44
66
|
* This reduces token consumption when returning environment lists via MCP tools
|
|
@@ -804,7 +826,13 @@ function resolveToolAuthOptions(server, overrides) {
|
|
|
804
826
|
function registerEnvTools(server) {
|
|
805
827
|
// 获取 cloudBaseOptions,如果没有则为 undefined
|
|
806
828
|
const cloudBaseOptions = server.cloudBaseOptions;
|
|
807
|
-
|
|
829
|
+
// Default: env-scoped tools need a bound envId (domains / domain management use SDK this.envId).
|
|
830
|
+
// manageEnv create/listPackages are account-level — use requireEnvId: false there only.
|
|
831
|
+
const getManager = (options) => (0, cloudbase_manager_js_1.getCloudBaseManager)({
|
|
832
|
+
cloudBaseOptions,
|
|
833
|
+
requireEnvId: options?.requireEnvId ?? true,
|
|
834
|
+
mcpServer: server,
|
|
835
|
+
});
|
|
808
836
|
const getManagerForEnvQuery = (targetEnvId, requireEnvId = true) => (0, cloudbase_manager_js_1.getCloudBaseManager)({
|
|
809
837
|
cloudBaseOptions: targetEnvId && targetEnvId !== cloudBaseOptions?.envId
|
|
810
838
|
? {
|
|
@@ -1685,14 +1713,10 @@ function registerEnvTools(server) {
|
|
|
1685
1713
|
.string()
|
|
1686
1714
|
.optional()
|
|
1687
1715
|
.describe("套餐 ID(action=create/modifyPlan 时必填)。可选值如 baas_personal(个人版)、baas_pf_standard(标准版)、baas_pf_enterprise(企业版)"),
|
|
1688
|
-
region: zod_1.z
|
|
1689
|
-
.string()
|
|
1690
|
-
.optional()
|
|
1691
|
-
.describe("环境地域(action=create 时可选)。默认 ap-shanghai,可选 ap-guangzhou、ap-beijing 等"),
|
|
1692
1716
|
resources: zod_1.z
|
|
1693
|
-
.array(zod_1.z.enum(
|
|
1717
|
+
.array(zod_1.z.enum(exports.CREATE_ENV_RESOURCE_VALUES))
|
|
1694
1718
|
.optional()
|
|
1695
|
-
.describe("启用的资源类型(action=create
|
|
1719
|
+
.describe("启用的资源类型(action=create 时可选)。省略时默认全部四项:flexdb(文档数据库)、storage(存储)、function(云函数)、postgresql(PostgreSQL)。CreateEnv 要求 Resources 非空,MCP 会始终下发该字段。"),
|
|
1696
1720
|
duration: zod_1.z
|
|
1697
1721
|
.number()
|
|
1698
1722
|
.int()
|
|
@@ -1720,17 +1744,19 @@ function registerEnvTools(server) {
|
|
|
1720
1744
|
const action = rawArgs.action ?? "";
|
|
1721
1745
|
const alias = normalizeOptionalToolString(rawArgs.alias);
|
|
1722
1746
|
const packageId = normalizeOptionalToolString(rawArgs.packageId);
|
|
1723
|
-
const
|
|
1724
|
-
const resources = rawArgs.resources;
|
|
1747
|
+
const resolvedResources = resolveCreateEnvResources(rawArgs.resources);
|
|
1725
1748
|
const duration = rawArgs.duration ?? 1;
|
|
1726
1749
|
const envId = normalizeOptionalToolString(rawArgs.envId);
|
|
1727
1750
|
const confirmed = rawArgs.confirm === "yes";
|
|
1728
1751
|
try {
|
|
1729
|
-
const cloudbase = await getManager();
|
|
1752
|
+
const cloudbase = await getManager({ requireEnvId: false });
|
|
1730
1753
|
switch (action) {
|
|
1731
1754
|
case "listPackages": {
|
|
1732
|
-
//
|
|
1733
|
-
const result = await cloudbase.env.describeBaasPackageList({
|
|
1755
|
+
// Query packages for new purchase. Source aligns with billing-side Baas package APIs.
|
|
1756
|
+
const result = await cloudbase.env.describeBaasPackageList({
|
|
1757
|
+
TargetAction: "new",
|
|
1758
|
+
Source: "qcloud",
|
|
1759
|
+
});
|
|
1734
1760
|
(0, cloudbase_manager_js_1.logCloudBaseResult)(server.logger, result);
|
|
1735
1761
|
return (0, tool_result_js_1.buildJsonToolResult)({
|
|
1736
1762
|
ok: true,
|
|
@@ -1740,12 +1766,13 @@ function registerEnvTools(server) {
|
|
|
1740
1766
|
});
|
|
1741
1767
|
}
|
|
1742
1768
|
case "create": {
|
|
1743
|
-
//
|
|
1769
|
+
// CreateEnv (Manager SDK / Cloud API) accepts Alias, PackageId, Resources, Period, etc.
|
|
1770
|
+
// It does NOT accept Region — region is determined by account/package, not this call.
|
|
1744
1771
|
if (!confirmed) {
|
|
1745
1772
|
return (0, tool_result_js_1.buildJsonToolResult)({
|
|
1746
1773
|
ok: false,
|
|
1747
1774
|
code: "CONFIRM_REQUIRED",
|
|
1748
|
-
message: `创建环境需要您确认。请确认以下配置信息后传入 confirm="yes":\n别名: ${alias}\n套餐: ${packageId}\n
|
|
1775
|
+
message: `创建环境需要您确认。请确认以下配置信息后传入 confirm="yes":\n别名: ${alias}\n套餐: ${packageId}\n资源类型: ${resolvedResources.join(", ")}\n时长: ${duration} 个月\n说明: CreateEnv 不接受 Region;环境地域由账号与套餐侧决定。`,
|
|
1749
1776
|
next_step: {
|
|
1750
1777
|
tool: "manageEnv",
|
|
1751
1778
|
action: "create",
|
|
@@ -1762,12 +1789,9 @@ function registerEnvTools(server) {
|
|
|
1762
1789
|
const createParams = {
|
|
1763
1790
|
Alias: alias,
|
|
1764
1791
|
PackageId: packageId,
|
|
1765
|
-
|
|
1792
|
+
Resources: resolvedResources,
|
|
1766
1793
|
Period: duration,
|
|
1767
1794
|
};
|
|
1768
|
-
if (resources && resources.length > 0) {
|
|
1769
|
-
createParams.Resources = resources;
|
|
1770
|
-
}
|
|
1771
1795
|
const result = await cloudbase.env.createEnv(createParams);
|
|
1772
1796
|
(0, cloudbase_manager_js_1.logCloudBaseResult)(server.logger, result);
|
|
1773
1797
|
return (0, tool_result_js_1.buildJsonToolResult)({
|
|
@@ -1775,6 +1799,7 @@ function registerEnvTools(server) {
|
|
|
1775
1799
|
code: "ENV_CREATED",
|
|
1776
1800
|
message: `环境创建成功!新环境 ID: ${result.EnvId}。环境初始化可能需要几分钟,请通过 queryEnv(action="info", envId="${result.EnvId}") 轮询直到 Status 为正常。`,
|
|
1777
1801
|
envId: result.EnvId,
|
|
1802
|
+
resources: resolvedResources,
|
|
1778
1803
|
});
|
|
1779
1804
|
}
|
|
1780
1805
|
case "modifyPlan": {
|
|
@@ -1852,11 +1877,19 @@ function registerEnvTools(server) {
|
|
|
1852
1877
|
if (toolPayloadResult) {
|
|
1853
1878
|
return toolPayloadResult;
|
|
1854
1879
|
}
|
|
1880
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1881
|
+
if (action === "listPackages" && /billTags/i.test(errorMessage)) {
|
|
1882
|
+
return (0, tool_result_js_1.buildJsonToolResult)({
|
|
1883
|
+
ok: false,
|
|
1884
|
+
code: "PACKAGE_LIST_FAILED",
|
|
1885
|
+
message: `查询套餐列表失败(计费标签 BillTags):${errorMessage}。可改用控制台查看套餐,或直接使用已知 packageId(如 baas_personal)调用 manageEnv(action="create")。`,
|
|
1886
|
+
});
|
|
1887
|
+
}
|
|
1855
1888
|
return {
|
|
1856
1889
|
content: [
|
|
1857
1890
|
{
|
|
1858
1891
|
type: "text",
|
|
1859
|
-
text: `环境管理操作失败: ${
|
|
1892
|
+
text: `环境管理操作失败: ${errorMessage}`,
|
|
1860
1893
|
},
|
|
1861
1894
|
],
|
|
1862
1895
|
};
|
|
@@ -2200,7 +2233,7 @@ ${envIdSection}
|
|
|
2200
2233
|
## 环境信息
|
|
2201
2234
|
- 操作系统: ${os_1.default.type()} ${os_1.default.release()}
|
|
2202
2235
|
- Node.js版本: ${process.version}
|
|
2203
|
-
- MCP 版本:${process.env.npm_package_version || "2.24.
|
|
2236
|
+
- MCP 版本:${process.env.npm_package_version || "2.24.1" || 0}
|
|
2204
2237
|
- 系统架构: ${os_1.default.arch()}
|
|
2205
2238
|
- 时间: ${new Date().toISOString()}
|
|
2206
2239
|
- 请求ID: ${requestId}
|
|
@@ -2281,7 +2314,7 @@ function createWrappedHandler(name, handler, server) {
|
|
|
2281
2314
|
requestId: (typeof error === 'object' && error && 'requestId' in error) ? error.requestId : '',
|
|
2282
2315
|
ide: server.ide || process.env.INTEGRATION_IDE || ''
|
|
2283
2316
|
});
|
|
2284
|
-
const mcpVersion = true ? "2.24.
|
|
2317
|
+
const mcpVersion = true ? "2.24.1" : 0;
|
|
2285
2318
|
const requestIdSuffix = requestId ? `\n🆔 RequestId: ${requestId}` : '';
|
|
2286
2319
|
const enhancedErrorMessage = `${errorMessage}${requestIdSuffix}\n\n📦 CloudBase MCP v${mcpVersion}\n🔗 遇到问题?请复制以下链接到浏览器打开\n即可自动携带错误详情快速创建 GitHub Issue:\n${issueLink}`;
|
|
2287
2320
|
// 创建新的错误对象,保持原有的错误类型但更新消息
|
|
@@ -2318,7 +2351,8 @@ function createWrappedHandler(name, handler, server) {
|
|
|
2318
2351
|
error: errorMessage,
|
|
2319
2352
|
inputParams: sanitizeArgs(args), // 添加入参上报
|
|
2320
2353
|
cloudBaseOptions: cloudBaseOptions, // 传递 CloudBase 配置(可能已更新)
|
|
2321
|
-
ide: server.ide || process.env.INTEGRATION_IDE // 传递集成IDE信息
|
|
2354
|
+
ide: server.ide || process.env.INTEGRATION_IDE, // 传递集成IDE信息
|
|
2355
|
+
mcpClientInfo: (0, telemetry_js_1.readMcpClientInfoFromServer)(server),
|
|
2322
2356
|
}).catch(err => {
|
|
2323
2357
|
// 静默处理上报错误,不影响主要功能
|
|
2324
2358
|
(0, logger_js_1.debug)('遥测上报失败', { toolName: name, error: err instanceof Error ? err.message : String(err) });
|
|
@@ -9886,6 +9920,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9886
9920
|
};
|
|
9887
9921
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9888
9922
|
exports.reportToolkitLifecycle = exports.reportToolCall = exports.telemetryReporter = void 0;
|
|
9923
|
+
exports.extractMcpClientInfo = extractMcpClientInfo;
|
|
9924
|
+
exports.readMcpClientInfoFromServer = readMcpClientInfoFromServer;
|
|
9889
9925
|
const crypto_1 = __importDefault(__webpack_require__(7823));
|
|
9890
9926
|
const http_1 = __importDefault(__webpack_require__(3782));
|
|
9891
9927
|
const https_1 = __importDefault(__webpack_require__(3871));
|
|
@@ -9937,7 +9973,7 @@ class TelemetryReporter {
|
|
|
9937
9973
|
const nodeVersion = process.version; // Node.js版本
|
|
9938
9974
|
const arch = os_1.default.arch(); // 系统架构
|
|
9939
9975
|
// 从构建时注入的版本号获取MCP版本信息
|
|
9940
|
-
const mcpVersion = process.env.npm_package_version || "2.24.
|
|
9976
|
+
const mcpVersion = process.env.npm_package_version || "2.24.1" || 0;
|
|
9941
9977
|
return {
|
|
9942
9978
|
userAgent: `${osType} ${osRelease} ${arch} ${nodeVersion} CloudBase-MCP/${mcpVersion}`,
|
|
9943
9979
|
deviceId: this.deviceId,
|
|
@@ -10119,6 +10155,49 @@ function resolveEnvId(cloudBaseOptions) {
|
|
|
10119
10155
|
}
|
|
10120
10156
|
return { envId, envIdSource };
|
|
10121
10157
|
}
|
|
10158
|
+
/**
|
|
10159
|
+
* Normalize SDK Implementation / clientInfo into telemetry-safe fields.
|
|
10160
|
+
*/
|
|
10161
|
+
function extractMcpClientInfo(clientVersion) {
|
|
10162
|
+
if (!clientVersion || typeof clientVersion !== "object") {
|
|
10163
|
+
return {};
|
|
10164
|
+
}
|
|
10165
|
+
const info = clientVersion;
|
|
10166
|
+
const name = typeof info.name === "string" ? info.name.trim() : "";
|
|
10167
|
+
const version = typeof info.version === "string" ? info.version.trim() : "";
|
|
10168
|
+
const title = typeof info.title === "string" ? info.title.trim() : "";
|
|
10169
|
+
return {
|
|
10170
|
+
...(name ? { name } : {}),
|
|
10171
|
+
...(version ? { version } : {}),
|
|
10172
|
+
...(title ? { title } : {}),
|
|
10173
|
+
};
|
|
10174
|
+
}
|
|
10175
|
+
/**
|
|
10176
|
+
* Read MCP clientInfo from an McpServer after initialize.
|
|
10177
|
+
* Returns empty object when handshake has not completed or the accessor is unavailable.
|
|
10178
|
+
*/
|
|
10179
|
+
function readMcpClientInfoFromServer(server) {
|
|
10180
|
+
try {
|
|
10181
|
+
return extractMcpClientInfo(server?.server?.getClientVersion?.());
|
|
10182
|
+
}
|
|
10183
|
+
catch {
|
|
10184
|
+
return {};
|
|
10185
|
+
}
|
|
10186
|
+
}
|
|
10187
|
+
function appendMcpClientInfoFields(eventData, clientInfo) {
|
|
10188
|
+
if (!clientInfo) {
|
|
10189
|
+
return;
|
|
10190
|
+
}
|
|
10191
|
+
if (clientInfo.name) {
|
|
10192
|
+
eventData.mcpClientName = clientInfo.name;
|
|
10193
|
+
}
|
|
10194
|
+
if (clientInfo.version) {
|
|
10195
|
+
eventData.mcpClientVersion = clientInfo.version;
|
|
10196
|
+
}
|
|
10197
|
+
if (clientInfo.title) {
|
|
10198
|
+
eventData.mcpClientTitle = clientInfo.title;
|
|
10199
|
+
}
|
|
10200
|
+
}
|
|
10122
10201
|
// 便捷方法
|
|
10123
10202
|
const reportToolCall = async (params) => {
|
|
10124
10203
|
const { nodeVersion, osType, osRelease, arch, mcpVersion } = exports.telemetryReporter.getUserAgent();
|
|
@@ -10163,6 +10242,7 @@ const reportToolCall = async (params) => {
|
|
|
10163
10242
|
if (params.ide) {
|
|
10164
10243
|
eventData.ide = params.ide;
|
|
10165
10244
|
}
|
|
10245
|
+
appendMcpClientInfoFields(eventData, params.mcpClientInfo);
|
|
10166
10246
|
// Debug: 打印最终上报参数
|
|
10167
10247
|
(0, logger_js_1.debug)('[telemetry] 工具调用上报参数', {
|
|
10168
10248
|
toolName: params.toolName,
|
|
@@ -10205,6 +10285,7 @@ const reportToolkitLifecycle = async (params) => {
|
|
|
10205
10285
|
if (params.ide) {
|
|
10206
10286
|
eventData.ide = params.ide;
|
|
10207
10287
|
}
|
|
10288
|
+
appendMcpClientInfoFields(eventData, params.mcpClientInfo);
|
|
10208
10289
|
// Debug: 打印最终上报参数
|
|
10209
10290
|
(0, logger_js_1.debug)('[telemetry] 生命周期事件上报参数', {
|
|
10210
10291
|
event: params.event,
|
|
@@ -14194,7 +14275,7 @@ function registerSetupTools(server) {
|
|
|
14194
14275
|
server.registerTool("downloadTemplate", {
|
|
14195
14276
|
title: "下载项目模板",
|
|
14196
14277
|
description: `自动下载并部署CloudBase项目模板。
|
|
14197
|
-
**Note**: Call this tool when the user requests to create a new project using a CloudBase template.\n\n支持的模板:\n- react: React + CloudBase 全栈应用模板\n- vue: Vue + CloudBase 全栈应用模板\n- miniprogram: 微信小程序 + 云开发模板 \n- uniapp: UniApp + CloudBase 跨端应用模板\n- rules: 只包含AI编辑器配置文件(包含Cursor、WindSurf、CodeBuddy等所有主流编辑器配置),适合在已有项目中补充AI编辑器配置\n\n支持的IDE类型:\n- all: 下载所有IDE配置\n- cursor: Cursor AI编辑器\n- 其他IDE类型见下方列表\n\n注意:如果未传入 ide 参数且无法从环境变量检测到 IDE,将提示错误并要求传入 ide 参数\n- windsurf: WindSurf AI编辑器\n- codebuddy: CodeBuddy AI编辑器\n- claude-code: Claude Code AI编辑器\n- cline: Cline AI编辑器\n- gemini-cli: Gemini CLI\n- opencode: OpenCode AI编辑器\n- qwen-code: 通义灵码\n- baidu-comate: 百度Comate\n- openai-codex-cli: OpenAI Codex CLI\n- augment-code: Augment Code\n- github-copilot: GitHub Copilot\n- roocode: RooCode AI编辑器\n- tongyi-lingma: 通义灵码\n- trae: Trae AI编辑器\n- qoder: Qoder AI编辑器\n- antigravity: Google Antigravity AI编辑器\n- vscode: Visual Studio Code\n- kiro: Kiro AI编辑器\n- aider: Aider AI编辑器\n\n特别说明:\n- rules 模板会自动包含当前 mcp 版本号信息(版本号:${ true ? "2.24.
|
|
14278
|
+
**Note**: Call this tool when the user requests to create a new project using a CloudBase template.\n\n支持的模板:\n- react: React + CloudBase 全栈应用模板\n- vue: Vue + CloudBase 全栈应用模板\n- miniprogram: 微信小程序 + 云开发模板 \n- uniapp: UniApp + CloudBase 跨端应用模板\n- rules: 只包含AI编辑器配置文件(包含Cursor、WindSurf、CodeBuddy等所有主流编辑器配置),适合在已有项目中补充AI编辑器配置\n\n支持的IDE类型:\n- all: 下载所有IDE配置\n- cursor: Cursor AI编辑器\n- 其他IDE类型见下方列表\n\n注意:如果未传入 ide 参数且无法从环境变量检测到 IDE,将提示错误并要求传入 ide 参数\n- windsurf: WindSurf AI编辑器\n- codebuddy: CodeBuddy AI编辑器\n- claude-code: Claude Code AI编辑器\n- cline: Cline AI编辑器\n- gemini-cli: Gemini CLI\n- opencode: OpenCode AI编辑器\n- qwen-code: 通义灵码\n- baidu-comate: 百度Comate\n- openai-codex-cli: OpenAI Codex CLI\n- augment-code: Augment Code\n- github-copilot: GitHub Copilot\n- roocode: RooCode AI编辑器\n- tongyi-lingma: 通义灵码\n- trae: Trae AI编辑器\n- qoder: Qoder AI编辑器\n- antigravity: Google Antigravity AI编辑器\n- vscode: Visual Studio Code\n- kiro: Kiro AI编辑器\n- aider: Aider AI编辑器\n\n特别说明:\n- rules 模板会自动包含当前 mcp 版本号信息(版本号:${ true ? "2.24.1" : 0}),便于后续维护和版本追踪\n- 下载 rules 模板时,如果项目中已存在 README.md 文件,系统会自动保护该文件不被覆盖(除非设置 overwrite=true)`,
|
|
14198
14279
|
inputSchema: {
|
|
14199
14280
|
template: zod_1.z
|
|
14200
14281
|
.enum(["react", "vue", "miniprogram", "uniapp", "rules"])
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/cloudbase-mcp",
|
|
3
|
-
"version": "2.24.
|
|
3
|
+
"version": "2.24.1",
|
|
4
4
|
"packageManager": "pnpm@10.8.0",
|
|
5
5
|
"description": "腾讯云开发 MCP Server,通过AI提示词和MCP协议+云开发,让开发更智能、更高效,当你在Cursor/ VSCode GitHub Copilot/WinSurf/CodeBuddy/Augment Code/Claude Code等AI编程工具里写代码时,它能自动帮你生成可直接部署的前后端应用+小程序,并一键发布到腾讯云开发 CloudBase。",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -100,6 +100,12 @@
|
|
|
100
100
|
"webpack-obfuscator": "^3.6.0"
|
|
101
101
|
},
|
|
102
102
|
"overrides": {
|
|
103
|
-
"tough-cookie": "^4.1.3"
|
|
103
|
+
"tough-cookie": "^4.1.3",
|
|
104
|
+
"js-yaml": "4.3.0",
|
|
105
|
+
"brace-expansion@1": "1.1.16",
|
|
106
|
+
"brace-expansion@2": "2.1.2",
|
|
107
|
+
"brace-expansion@3": "5.0.7",
|
|
108
|
+
"brace-expansion@4": "5.0.7",
|
|
109
|
+
"brace-expansion@5": "5.0.7"
|
|
104
110
|
}
|
|
105
111
|
}
|