@workclaw/cli 1.0.333 → 1.0.336
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/commands/box/installer/installer.d.ts +2 -2
- package/dist/commands/box/installer/installer.d.ts.map +1 -1
- package/dist/commands/local/installer/installer.d.ts +2 -2
- package/dist/commands/local/installer/installer.d.ts.map +1 -1
- package/dist/configs/index.d.ts +0 -2
- package/dist/configs/index.d.ts.map +1 -1
- package/dist/{index-B2GxnJ-9.js → index-CGNIqbIG.js} +60 -62
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoxInstallerConfig } from '../types';
|
|
2
2
|
export declare class BoxInstaller {
|
|
3
|
-
private
|
|
3
|
+
private installOptions;
|
|
4
4
|
private spinner;
|
|
5
5
|
private prefixText;
|
|
6
|
-
constructor(
|
|
6
|
+
constructor(installOptions: BoxInstallerConfig);
|
|
7
7
|
validateConfig(): void;
|
|
8
8
|
private getPaths;
|
|
9
9
|
private updateSpinner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../../src/commands/box/installer/installer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,UAAU,CAAA;AA4BhE,qBAAa,YAAY;IAIX,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../../src/commands/box/installer/installer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,UAAU,CAAA;AA4BhE,qBAAa,YAAY;IAIX,OAAO,CAAC,cAAc;IAHlC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,UAAU,CAAa;gBAEX,cAAc,EAAE,kBAAkB;IAItD,cAAc,IAAI,IAAI;IAyBtB,OAAO,CAAC,QAAQ;IAoChB,OAAO,CAAC,aAAa;IAMrB,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,cAAc;IAOhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA0BhB,eAAe;YA0Bf,iBAAiB;YAoHjB,cAAc;CA6R7B"}
|
|
@@ -6,13 +6,13 @@ import { LocalInstallerConfig } from '../types';
|
|
|
6
6
|
export declare class LocalInstaller {
|
|
7
7
|
private spinner;
|
|
8
8
|
private prefixText;
|
|
9
|
-
private readonly
|
|
9
|
+
private readonly installOptions;
|
|
10
10
|
private readonly envConfig;
|
|
11
11
|
private token;
|
|
12
12
|
/**
|
|
13
13
|
* 构造函数
|
|
14
14
|
*/
|
|
15
|
-
constructor(
|
|
15
|
+
constructor(installOptions: LocalInstallerConfig);
|
|
16
16
|
/**
|
|
17
17
|
* 验证安装配置
|
|
18
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../../src/commands/local/installer/installer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA6B,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAwC/E;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../../src/commands/local/installer/installer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA6B,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAwC/E;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAa;IAE1B;;OAEG;gBACS,cAAc,EAAE,oBAAoB;IAOhD;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgE9B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;YACW,OAAO;IAoBrB;;OAEG;YACW,kBAAkB;IAchC;;OAEG;YACW,eAAe;IAmB7B;;OAEG;YACW,iBAAiB;IAoH/B;;OAEG;YACW,cAAc;CAiO7B"}
|
package/dist/configs/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW;IACX,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,WAAW;IACX,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa;IACb,GAAG,EAAE;QACH,cAAc,EAAE,MAAM,CAAA;QACtB,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAkBpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,eAkBzB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAuB9E"}
|
|
@@ -151,7 +151,6 @@ const CONFIG = {
|
|
|
151
151
|
PLUGIN_NAME: "openclaw-workclaw",
|
|
152
152
|
DEFAULT_BASE_URL: "https://workbrain.cn/backend-api",
|
|
153
153
|
DEFAULT_WS_URL: "wss://workbrain.cn/backend-api/open-apis/connect",
|
|
154
|
-
MODEL_BASE_URL: "https://maas-api.workbrain.cn/v1/",
|
|
155
154
|
DIRS: {
|
|
156
155
|
OPENCLAW: ".openclaw",
|
|
157
156
|
EXTENSIONS: "extensions",
|
|
@@ -171,7 +170,6 @@ const TEST_CONFIG = {
|
|
|
171
170
|
PLUGIN_NAME: "openclaw-workclaw",
|
|
172
171
|
DEFAULT_BASE_URL: "http://172.168.80.30:32005",
|
|
173
172
|
DEFAULT_WS_URL: "ws://172.168.80.30:32005/open-apis/connect",
|
|
174
|
-
MODEL_BASE_URL: "http://172.168.80.30:30005/v1",
|
|
175
173
|
DIRS: {
|
|
176
174
|
OPENCLAW: ".openclaw",
|
|
177
175
|
EXTENSIONS: "extensions",
|
|
@@ -251,26 +249,26 @@ function execAsync$1(command, options) {
|
|
|
251
249
|
});
|
|
252
250
|
}
|
|
253
251
|
class BoxInstaller {
|
|
254
|
-
constructor(
|
|
255
|
-
this.
|
|
252
|
+
constructor(installOptions) {
|
|
253
|
+
this.installOptions = installOptions;
|
|
256
254
|
this.spinner = ora({ color: "cyan" }).start();
|
|
257
255
|
}
|
|
258
256
|
spinner;
|
|
259
257
|
prefixText = "";
|
|
260
258
|
validateConfig() {
|
|
261
259
|
debug.log("[验证配置] 检查 appKey 和 appSecret...");
|
|
262
|
-
if (!this.
|
|
260
|
+
if (!this.installOptions.appKey) {
|
|
263
261
|
throw new AppError2(ERROR_CODES.APP_KEY_REQUIRED, "AppKey 不能为空,请使用 --app-key 参数");
|
|
264
262
|
}
|
|
265
|
-
if (!this.
|
|
263
|
+
if (!this.installOptions.appSecret) {
|
|
266
264
|
throw new AppError2(ERROR_CODES.APP_SECRET_REQUIRED, "AppSecret 不能为空,请使用 --app-secret 参数");
|
|
267
265
|
}
|
|
268
|
-
if (this.
|
|
266
|
+
if (this.installOptions.env === "custom") {
|
|
269
267
|
debug.log("[验证配置] 检查自定义环境 IP...");
|
|
270
|
-
if (!this.
|
|
268
|
+
if (!this.installOptions.customIp) {
|
|
271
269
|
throw new AppError2(ERROR_CODES.INVALID_ARGUMENT, "自定义环境必须提供 --customIp 参数");
|
|
272
270
|
}
|
|
273
|
-
const result = ipv4Schema.safeParse(this.
|
|
271
|
+
const result = ipv4Schema.safeParse(this.installOptions.customIp);
|
|
274
272
|
if (!result.success) {
|
|
275
273
|
throw new AppError2(ERROR_CODES.INVALID_ARGUMENT, result.error.issues[0].message);
|
|
276
274
|
}
|
|
@@ -279,28 +277,28 @@ class BoxInstaller {
|
|
|
279
277
|
debug.log("[验证配置] 配置检查通过");
|
|
280
278
|
}
|
|
281
279
|
getPaths() {
|
|
282
|
-
const env = this.
|
|
283
|
-
debug.log(`[getConfig] env=${env}, customIp=${this.
|
|
284
|
-
const
|
|
280
|
+
const env = this.installOptions.env || "test";
|
|
281
|
+
debug.log(`[getConfig] env=${env}, customIp=${this.installOptions.customIp}`);
|
|
282
|
+
const envConfig = getConfig(env, this.installOptions.customIp);
|
|
285
283
|
let baseDir;
|
|
286
|
-
if (this.
|
|
287
|
-
debug.log(`[路径验证] 验证自定义路径: ${this.
|
|
284
|
+
if (this.installOptions.openclawPath) {
|
|
285
|
+
debug.log(`[路径验证] 验证自定义路径: ${this.installOptions.openclawPath}`);
|
|
288
286
|
try {
|
|
289
|
-
validateOpenclawPath(this.
|
|
287
|
+
validateOpenclawPath(this.installOptions.openclawPath);
|
|
290
288
|
debug.log("[路径验证] 通过");
|
|
291
289
|
} catch (error) {
|
|
292
290
|
throw new AppError2(ERROR_CODES.INVALID_OPENCLAW_PATH, error.message);
|
|
293
291
|
}
|
|
294
|
-
baseDir = normalizePath(this.
|
|
292
|
+
baseDir = normalizePath(this.installOptions.openclawPath);
|
|
295
293
|
} else {
|
|
296
294
|
const home = getHomeDir();
|
|
297
|
-
baseDir = path.join(home,
|
|
295
|
+
baseDir = path.join(home, envConfig.DIRS.OPENCLAW);
|
|
298
296
|
}
|
|
299
|
-
const extensionsDir = path.join(baseDir,
|
|
300
|
-
const targetDir = path.join(extensionsDir,
|
|
301
|
-
const configFile = path.join(baseDir,
|
|
302
|
-
const workspaceDir = path.join(baseDir,
|
|
303
|
-
const tempDir = path.join(baseDir,
|
|
297
|
+
const extensionsDir = path.join(baseDir, envConfig.DIRS.EXTENSIONS);
|
|
298
|
+
const targetDir = path.join(extensionsDir, envConfig.PLUGIN_NAME);
|
|
299
|
+
const configFile = path.join(baseDir, envConfig.DIRS.CONFIG_FILE);
|
|
300
|
+
const workspaceDir = path.join(baseDir, envConfig.DIRS.WORKSPACE);
|
|
301
|
+
const tempDir = path.join(baseDir, envConfig.DIRS.TEMP);
|
|
304
302
|
return {
|
|
305
303
|
home: baseDir,
|
|
306
304
|
extensions: extensionsDir,
|
|
@@ -319,8 +317,8 @@ class BoxInstaller {
|
|
|
319
317
|
return this.prefixText;
|
|
320
318
|
}
|
|
321
319
|
getPackageName() {
|
|
322
|
-
if (this.
|
|
323
|
-
return `${PLUGIN_PACKAGE_NAME$1}@${this.
|
|
320
|
+
if (this.installOptions.pluginVersion) {
|
|
321
|
+
return `${PLUGIN_PACKAGE_NAME$1}@${this.installOptions.pluginVersion}`;
|
|
324
322
|
}
|
|
325
323
|
return PLUGIN_PACKAGE_NAME$1;
|
|
326
324
|
}
|
|
@@ -474,7 +472,7 @@ class BoxInstaller {
|
|
|
474
472
|
} catch {
|
|
475
473
|
debug.log("[更新配置] 无原有配置");
|
|
476
474
|
}
|
|
477
|
-
const mergeMode = this.
|
|
475
|
+
const mergeMode = this.installOptions.mergeMode || "merge";
|
|
478
476
|
const resetKeys = ["models", "agents", "bindings", "channels", "plugins"];
|
|
479
477
|
if (mergeMode === "replace") {
|
|
480
478
|
debug.log("[更新配置] 合并模式: replace(完全重置,忽略原有配置)");
|
|
@@ -490,8 +488,8 @@ class BoxInstaller {
|
|
|
490
488
|
} else {
|
|
491
489
|
debug.log("[更新配置] 合并模式: merge(完整保留原有配置后合并)");
|
|
492
490
|
}
|
|
493
|
-
const
|
|
494
|
-
const model = this.
|
|
491
|
+
const envConfig = getConfig(this.installOptions.env || "test", this.installOptions.customIp);
|
|
492
|
+
const model = this.installOptions.model ?? DEFAULT_MODEL$1;
|
|
495
493
|
const newConfig = {
|
|
496
494
|
// diagnostics: 诊断配置
|
|
497
495
|
diagnostics: {
|
|
@@ -512,7 +510,7 @@ class BoxInstaller {
|
|
|
512
510
|
providers: {
|
|
513
511
|
[DEFAULT_PROVIDER$1]: {
|
|
514
512
|
// 模型 API 基础地址
|
|
515
|
-
baseUrl:
|
|
513
|
+
baseUrl: "",
|
|
516
514
|
// API 密钥(留空,由外部提供)
|
|
517
515
|
apiKey: "",
|
|
518
516
|
// API 类型:'openai-completions' | 'openai-chat' 等
|
|
@@ -613,13 +611,13 @@ class BoxInstaller {
|
|
|
613
611
|
// 启用通道
|
|
614
612
|
enabled: true,
|
|
615
613
|
// 应用密钥
|
|
616
|
-
appKey: this.
|
|
614
|
+
appKey: this.installOptions.appKey,
|
|
617
615
|
// 应用密钥
|
|
618
|
-
appSecret: this.
|
|
616
|
+
appSecret: this.installOptions.appSecret,
|
|
619
617
|
// API 基础 URL
|
|
620
|
-
baseUrl: this.
|
|
618
|
+
baseUrl: this.installOptions.customIp ? `http://${this.installOptions.customIp}` : envConfig.DEFAULT_BASE_URL,
|
|
621
619
|
// WebSocket URL
|
|
622
|
-
websocketUrl: this.
|
|
620
|
+
websocketUrl: this.installOptions.wsUrl || envConfig.DEFAULT_WS_URL,
|
|
623
621
|
// 允许不安全的 TLS 连接
|
|
624
622
|
allowInsecureTls: true,
|
|
625
623
|
// 允许原始 JSON 载荷
|
|
@@ -699,16 +697,16 @@ class BoxInstaller {
|
|
|
699
697
|
load: {
|
|
700
698
|
paths: [paths.extensions]
|
|
701
699
|
},
|
|
702
|
-
allow: [
|
|
700
|
+
allow: [envConfig.PLUGIN_NAME],
|
|
703
701
|
installs: {
|
|
704
|
-
[
|
|
702
|
+
[envConfig.PLUGIN_NAME]: {
|
|
705
703
|
source: "npm",
|
|
706
704
|
spec: PLUGIN_PACKAGE_NAME$1,
|
|
707
705
|
installPath: paths.target
|
|
708
706
|
}
|
|
709
707
|
},
|
|
710
708
|
entries: {
|
|
711
|
-
[
|
|
709
|
+
[envConfig.PLUGIN_NAME]: { enabled: true }
|
|
712
710
|
}
|
|
713
711
|
}
|
|
714
712
|
};
|
|
@@ -4984,16 +4982,16 @@ function execAsync(command, options) {
|
|
|
4984
4982
|
class LocalInstaller {
|
|
4985
4983
|
spinner;
|
|
4986
4984
|
prefixText = "";
|
|
4987
|
-
|
|
4985
|
+
installOptions;
|
|
4988
4986
|
envConfig;
|
|
4989
4987
|
token = "";
|
|
4990
4988
|
/**
|
|
4991
4989
|
* 构造函数
|
|
4992
4990
|
*/
|
|
4993
|
-
constructor(
|
|
4994
|
-
this.
|
|
4995
|
-
const env = this.
|
|
4996
|
-
this.envConfig = getConfig(env, this.
|
|
4991
|
+
constructor(installOptions) {
|
|
4992
|
+
this.installOptions = installOptions;
|
|
4993
|
+
const env = this.installOptions.env || "test";
|
|
4994
|
+
this.envConfig = getConfig(env, this.installOptions.customIp);
|
|
4997
4995
|
this.spinner = ora({ color: "cyan" }).start();
|
|
4998
4996
|
}
|
|
4999
4997
|
/**
|
|
@@ -5001,7 +4999,7 @@ class LocalInstaller {
|
|
|
5001
4999
|
*/
|
|
5002
5000
|
validateConfig() {
|
|
5003
5001
|
debug.log("[验证配置] 检查配置...");
|
|
5004
|
-
const result = LocalInstallerConfigSchema.safeParse(this.
|
|
5002
|
+
const result = LocalInstallerConfigSchema.safeParse(this.installOptions);
|
|
5005
5003
|
if (!result.success) {
|
|
5006
5004
|
debug.log(`[验证配置] 验证失败: ${result.error.issues[0].message}`);
|
|
5007
5005
|
throw new AppError$1(ERROR_CODES$1.INVALID_ARGUMENT, result.error.issues[0].message);
|
|
@@ -5016,15 +5014,15 @@ class LocalInstaller {
|
|
|
5016
5014
|
debug.log("[安装开始]");
|
|
5017
5015
|
this.validateConfig();
|
|
5018
5016
|
let baseDir;
|
|
5019
|
-
if (this.
|
|
5020
|
-
debug.log(`[路径验证] 验证自定义路径: ${this.
|
|
5017
|
+
if (this.installOptions.openclawPath) {
|
|
5018
|
+
debug.log(`[路径验证] 验证自定义路径: ${this.installOptions.openclawPath}`);
|
|
5021
5019
|
try {
|
|
5022
|
-
validateOpenclawPath(this.
|
|
5020
|
+
validateOpenclawPath(this.installOptions.openclawPath);
|
|
5023
5021
|
debug.log("[路径验证] 通过");
|
|
5024
5022
|
} catch (error) {
|
|
5025
5023
|
throw new AppError$1(ERROR_CODES$1.INVALID_OPENCLAW_PATH, error.message);
|
|
5026
5024
|
}
|
|
5027
|
-
baseDir = normalizePath(this.
|
|
5025
|
+
baseDir = normalizePath(this.installOptions.openclawPath);
|
|
5028
5026
|
} else {
|
|
5029
5027
|
const homeDir = getHomeDir();
|
|
5030
5028
|
baseDir = path.join(homeDir, this.envConfig.DIRS.OPENCLAW);
|
|
@@ -5043,7 +5041,7 @@ class LocalInstaller {
|
|
|
5043
5041
|
debug.log(`[路径配置] config=${paths.config}`);
|
|
5044
5042
|
debug.log(`[路径配置] workspace=${paths.workspace}`);
|
|
5045
5043
|
const machineId = generateMachineId();
|
|
5046
|
-
const localCode = buildLocalCode(this.
|
|
5044
|
+
const localCode = buildLocalCode(this.installOptions.phone, machineId);
|
|
5047
5045
|
debug.log(`[机器码] machineId=${machineId}`);
|
|
5048
5046
|
debug.log(`[机器码] localCode=${localCode}`);
|
|
5049
5047
|
const token = await this.doLogin();
|
|
@@ -5080,8 +5078,8 @@ class LocalInstaller {
|
|
|
5080
5078
|
* 获取完整的 npm 包名(包含版本号)
|
|
5081
5079
|
*/
|
|
5082
5080
|
getPackageName() {
|
|
5083
|
-
if (this.
|
|
5084
|
-
return `${PLUGIN_PACKAGE_NAME}@${this.
|
|
5081
|
+
if (this.installOptions.pluginVersion) {
|
|
5082
|
+
return `${PLUGIN_PACKAGE_NAME}@${this.installOptions.pluginVersion}`;
|
|
5085
5083
|
}
|
|
5086
5084
|
return PLUGIN_PACKAGE_NAME;
|
|
5087
5085
|
}
|
|
@@ -5091,15 +5089,15 @@ class LocalInstaller {
|
|
|
5091
5089
|
async doLogin() {
|
|
5092
5090
|
this.spinner.prefixText = this.prefixText;
|
|
5093
5091
|
this.spinner.text = chalk.cyan("正在验证账号...");
|
|
5094
|
-
debug.log(`[用户登录] 手机号: ${this.
|
|
5092
|
+
debug.log(`[用户登录] 手机号: ${this.installOptions.phone}`);
|
|
5095
5093
|
debug.log("[用户登录] RSA 加密密码...");
|
|
5096
|
-
const encryptedPassword = rsaEncrypt(this.
|
|
5094
|
+
const encryptedPassword = rsaEncrypt(this.installOptions.userPass);
|
|
5097
5095
|
if (!encryptedPassword) {
|
|
5098
5096
|
throw new AppError$1(ERROR_CODES$1.LOGIN_FAILED, "密码加密失败");
|
|
5099
5097
|
}
|
|
5100
5098
|
debug.log("[用户登录] 密码加密成功");
|
|
5101
5099
|
debug.log("[用户登录] 调用登录接口...");
|
|
5102
|
-
const token = await login(this.
|
|
5100
|
+
const token = await login(this.installOptions.phone, encryptedPassword, this.envConfig);
|
|
5103
5101
|
this.prefixText += chalk.green(` ✓ 账号验证成功
|
|
5104
5102
|
`);
|
|
5105
5103
|
debug.log("[用户登录] 登录成功");
|
|
@@ -5113,7 +5111,7 @@ class LocalInstaller {
|
|
|
5113
5111
|
this.spinner.text = chalk.cyan("正在获取绑定信息...");
|
|
5114
5112
|
debug.log("[获取配置] 调用绑定配置接口...");
|
|
5115
5113
|
debug.log(`[获取配置] localCode=${localCode}`);
|
|
5116
|
-
const boundConfig = await fetchBoundConfig(token, this.
|
|
5114
|
+
const boundConfig = await fetchBoundConfig(token, this.installOptions.phone, localCode, this.envConfig);
|
|
5117
5115
|
debug.log(`[获取配置] agentId=${boundConfig.agentId}, appKey=${boundConfig.appKey?.slice(0, 8)}...`);
|
|
5118
5116
|
this.prefixText += chalk.green(` ✓ 绑定信息获取成功
|
|
5119
5117
|
`);
|
|
@@ -5257,7 +5255,7 @@ class LocalInstaller {
|
|
|
5257
5255
|
} catch {
|
|
5258
5256
|
debug.log("[更新配置] 无原有配置");
|
|
5259
5257
|
}
|
|
5260
|
-
const mergeMode = this.
|
|
5258
|
+
const mergeMode = this.installOptions.mergeMode || "merge";
|
|
5261
5259
|
const resetKeys = ["models", "agents", "bindings", "channels", "plugins"];
|
|
5262
5260
|
if (mergeMode === "replace") {
|
|
5263
5261
|
debug.log("[更新配置] 合并模式: replace(完全重置,忽略原有配置)");
|
|
@@ -5273,8 +5271,8 @@ class LocalInstaller {
|
|
|
5273
5271
|
} else {
|
|
5274
5272
|
debug.log("[更新配置] 合并模式: merge(完整保留原有配置后合并)");
|
|
5275
5273
|
}
|
|
5276
|
-
const
|
|
5277
|
-
const model = this.
|
|
5274
|
+
const envConfig = this.envConfig;
|
|
5275
|
+
const model = this.installOptions.model || DEFAULT_MODEL;
|
|
5278
5276
|
const newConfig = {
|
|
5279
5277
|
// diagnostics: 诊断配置
|
|
5280
5278
|
diagnostics: {
|
|
@@ -5290,7 +5288,7 @@ class LocalInstaller {
|
|
|
5290
5288
|
mode: "replace",
|
|
5291
5289
|
providers: {
|
|
5292
5290
|
[DEFAULT_PROVIDER]: {
|
|
5293
|
-
baseUrl: boundConfig.modelApiBaseUrl
|
|
5291
|
+
baseUrl: boundConfig.modelApiBaseUrl,
|
|
5294
5292
|
apiKey: boundConfig.modelApiKey,
|
|
5295
5293
|
api: "openai-completions",
|
|
5296
5294
|
authHeader: true,
|
|
@@ -5360,8 +5358,8 @@ class LocalInstaller {
|
|
|
5360
5358
|
enabled: true,
|
|
5361
5359
|
appKey: boundConfig.appKey,
|
|
5362
5360
|
appSecret: boundConfig.appSecret,
|
|
5363
|
-
baseUrl: this.
|
|
5364
|
-
websocketUrl: this.
|
|
5361
|
+
baseUrl: this.installOptions.customIp ? `http://${this.installOptions.customIp}` : envConfig.DEFAULT_BASE_URL,
|
|
5362
|
+
websocketUrl: this.installOptions.wsUrl || envConfig.DEFAULT_WS_URL,
|
|
5365
5363
|
allowInsecureTls: true,
|
|
5366
5364
|
allowRawJsonPayload: true,
|
|
5367
5365
|
userId: boundConfig.userId,
|
|
@@ -5416,17 +5414,17 @@ class LocalInstaller {
|
|
|
5416
5414
|
load: {
|
|
5417
5415
|
paths: [paths.extensions]
|
|
5418
5416
|
},
|
|
5419
|
-
allow: [
|
|
5417
|
+
allow: [envConfig.PLUGIN_NAME],
|
|
5420
5418
|
installs: {
|
|
5421
|
-
[
|
|
5419
|
+
[envConfig.PLUGIN_NAME]: {
|
|
5422
5420
|
source: "npm",
|
|
5423
5421
|
spec: PLUGIN_PACKAGE_NAME,
|
|
5424
5422
|
installPath: paths.target,
|
|
5425
|
-
scene: this.
|
|
5423
|
+
scene: this.installOptions.scene || "test"
|
|
5426
5424
|
}
|
|
5427
5425
|
},
|
|
5428
5426
|
entries: {
|
|
5429
|
-
[
|
|
5427
|
+
[envConfig.PLUGIN_NAME]: { enabled: true }
|
|
5430
5428
|
}
|
|
5431
5429
|
}
|
|
5432
5430
|
};
|
package/dist/index.js
CHANGED