@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.
@@ -1,9 +1,9 @@
1
1
  import { BoxInstallerConfig } from '../types';
2
2
  export declare class BoxInstaller {
3
- private config;
3
+ private installOptions;
4
4
  private spinner;
5
5
  private prefixText;
6
- constructor(config: BoxInstallerConfig);
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,MAAM;IAH1B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,kBAAkB;IAI9C,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"}
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 config;
9
+ private readonly installOptions;
10
10
  private readonly envConfig;
11
11
  private token;
12
12
  /**
13
13
  * 构造函数
14
14
  */
15
- constructor(config: LocalInstallerConfig);
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,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAa;IAE1B;;OAEG;gBACS,MAAM,EAAE,oBAAoB;IAOxC;;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"}
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"}
@@ -12,8 +12,6 @@ export interface ConfigInterface {
12
12
  DEFAULT_BASE_URL: string;
13
13
  /** WebSocket URL */
14
14
  DEFAULT_WS_URL: string;
15
- /** 模型基础 URL */
16
- MODEL_BASE_URL: string;
17
15
  /** 目录配置 */
18
16
  DIRS: {
19
17
  OPENCLAW: string;
@@ -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,eAAe;IACf,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,eAmBpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,eAmBzB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAuB9E"}
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(config) {
255
- this.config = config;
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.config.appKey) {
260
+ if (!this.installOptions.appKey) {
263
261
  throw new AppError2(ERROR_CODES.APP_KEY_REQUIRED, "AppKey 不能为空,请使用 --app-key 参数");
264
262
  }
265
- if (!this.config.appSecret) {
263
+ if (!this.installOptions.appSecret) {
266
264
  throw new AppError2(ERROR_CODES.APP_SECRET_REQUIRED, "AppSecret 不能为空,请使用 --app-secret 参数");
267
265
  }
268
- if (this.config.env === "custom") {
266
+ if (this.installOptions.env === "custom") {
269
267
  debug.log("[验证配置] 检查自定义环境 IP...");
270
- if (!this.config.customIp) {
268
+ if (!this.installOptions.customIp) {
271
269
  throw new AppError2(ERROR_CODES.INVALID_ARGUMENT, "自定义环境必须提供 --customIp 参数");
272
270
  }
273
- const result = ipv4Schema.safeParse(this.config.customIp);
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.config.env || "test";
283
- debug.log(`[getConfig] env=${env}, customIp=${this.config.customIp}`);
284
- const config = getConfig(env, this.config.customIp);
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.config.openclawPath) {
287
- debug.log(`[路径验证] 验证自定义路径: ${this.config.openclawPath}`);
284
+ if (this.installOptions.openclawPath) {
285
+ debug.log(`[路径验证] 验证自定义路径: ${this.installOptions.openclawPath}`);
288
286
  try {
289
- validateOpenclawPath(this.config.openclawPath);
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.config.openclawPath);
292
+ baseDir = normalizePath(this.installOptions.openclawPath);
295
293
  } else {
296
294
  const home = getHomeDir();
297
- baseDir = path.join(home, config.DIRS.OPENCLAW);
295
+ baseDir = path.join(home, envConfig.DIRS.OPENCLAW);
298
296
  }
299
- const extensionsDir = path.join(baseDir, config.DIRS.EXTENSIONS);
300
- const targetDir = path.join(extensionsDir, config.PLUGIN_NAME);
301
- const configFile = path.join(baseDir, config.DIRS.CONFIG_FILE);
302
- const workspaceDir = path.join(baseDir, config.DIRS.WORKSPACE);
303
- const tempDir = path.join(baseDir, config.DIRS.TEMP);
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.config.pluginVersion) {
323
- return `${PLUGIN_PACKAGE_NAME$1}@${this.config.pluginVersion}`;
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.config.mergeMode || "merge";
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 config = getConfig(this.config.env || "test", this.config.customIp);
494
- const model = this.config.model ?? DEFAULT_MODEL$1;
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: config.MODEL_BASE_URL,
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.config.appKey,
614
+ appKey: this.installOptions.appKey,
617
615
  // 应用密钥
618
- appSecret: this.config.appSecret,
616
+ appSecret: this.installOptions.appSecret,
619
617
  // API 基础 URL
620
- baseUrl: this.config.customIp ? `http://${this.config.customIp}` : config.DEFAULT_BASE_URL,
618
+ baseUrl: this.installOptions.customIp ? `http://${this.installOptions.customIp}` : envConfig.DEFAULT_BASE_URL,
621
619
  // WebSocket URL
622
- websocketUrl: this.config.wsUrl || config.DEFAULT_WS_URL,
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: [config.PLUGIN_NAME],
700
+ allow: [envConfig.PLUGIN_NAME],
703
701
  installs: {
704
- [config.PLUGIN_NAME]: {
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
- [config.PLUGIN_NAME]: { enabled: true }
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
- config;
4985
+ installOptions;
4988
4986
  envConfig;
4989
4987
  token = "";
4990
4988
  /**
4991
4989
  * 构造函数
4992
4990
  */
4993
- constructor(config) {
4994
- this.config = config;
4995
- const env = this.config.env || "test";
4996
- this.envConfig = getConfig(env, this.config.customIp);
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.config);
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.config.openclawPath) {
5020
- debug.log(`[路径验证] 验证自定义路径: ${this.config.openclawPath}`);
5017
+ if (this.installOptions.openclawPath) {
5018
+ debug.log(`[路径验证] 验证自定义路径: ${this.installOptions.openclawPath}`);
5021
5019
  try {
5022
- validateOpenclawPath(this.config.openclawPath);
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.config.openclawPath);
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.config.phone, machineId);
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.config.pluginVersion) {
5084
- return `${PLUGIN_PACKAGE_NAME}@${this.config.pluginVersion}`;
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.config.phone}`);
5092
+ debug.log(`[用户登录] 手机号: ${this.installOptions.phone}`);
5095
5093
  debug.log("[用户登录] RSA 加密密码...");
5096
- const encryptedPassword = rsaEncrypt(this.config.userPass);
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.config.phone, encryptedPassword, this.envConfig);
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.config.phone, localCode, this.envConfig);
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.config.mergeMode || "merge";
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 config = this.envConfig;
5277
- const model = this.config.model || DEFAULT_MODEL;
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 || config.MODEL_BASE_URL,
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.config.customIp ? `http://${this.config.customIp}` : config.DEFAULT_BASE_URL,
5364
- websocketUrl: this.config.wsUrl || config.DEFAULT_WS_URL,
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: [config.PLUGIN_NAME],
5417
+ allow: [envConfig.PLUGIN_NAME],
5420
5418
  installs: {
5421
- [config.PLUGIN_NAME]: {
5419
+ [envConfig.PLUGIN_NAME]: {
5422
5420
  source: "npm",
5423
5421
  spec: PLUGIN_PACKAGE_NAME,
5424
5422
  installPath: paths.target,
5425
- scene: this.config.scene || "test"
5423
+ scene: this.installOptions.scene || "test"
5426
5424
  }
5427
5425
  },
5428
5426
  entries: {
5429
- [config.PLUGIN_NAME]: { enabled: true }
5427
+ [envConfig.PLUGIN_NAME]: { enabled: true }
5430
5428
  }
5431
5429
  }
5432
5430
  };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import("./index-B2GxnJ-9.js").then((cli) => {
2
+ import("./index-CGNIqbIG.js").then((cli) => {
3
3
  cli.default();
4
4
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workclaw/cli",
3
3
  "type": "module",
4
- "version": "1.0.333",
4
+ "version": "1.0.336",
5
5
  "description": "WorkClaw CLI 工具 - 用于初始化和配置 WorkClaw 插件",
6
6
  "license": "MIT",
7
7
  "keywords": [