aws-runtime-bridge 1.9.66 → 1.9.70

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/README.md CHANGED
@@ -37,12 +37,26 @@ npm install -g .
37
37
  "serverUrl": "http://127.0.0.1:8080",
38
38
  "instanceName": "至强主机",
39
39
  "userKey": "aws_live_crh_g0GGrg5IntODg1sFwnas7qf4yGrcwoisDWPBtd8",
40
- "registerIp": "127.0.0.1"
40
+ "registerAddr": "127.0.0.1"
41
41
  }
42
42
  ]
43
43
  }
44
44
  ```
45
45
 
46
+ ### `registerAddr` 字段说明
47
+
48
+ `registerAddr` 用于告知调度中心如何回连本机 Bridge,支持三种写法:
49
+
50
+ | 写法 | 示例 | 解析结果 | 适用场景 |
51
+ | --- | --- | --- | --- |
52
+ | 完整 URL(含协议) | `https://bridge.example.com` | 原样使用 | Bridge 在反代后面或启用 TLS |
53
+ | `host:port` | `127.0.0.1:18081` | 自动补 `http://` 前缀 | http 直连 + 自定义端口 |
54
+ | 纯 `host` | `10.0.0.8` | 自动补 `http://` 前缀和 `AWS_RUNTIME_BRIDGE_PORT`(默认 18081) | http 直连 + 默认端口 |
55
+
56
+ > **TLS / 反代场景**:当 Bridge 部署在 Nginx/Caddy/Cloudflare 后面走 https 时,必须用完整 URL 形式(如 `https://bridge.example.com`),此时环境变量 `AWS_RUNTIME_BRIDGE_PORT` 不再生效。
57
+
58
+ > **向后兼容**:旧字段 `registerIp`(仅接受纯 IP)仍可读取,但已废弃,推荐迁移到 `registerAddr`。配置引导会在重新配置时自动将 `registerIp` 迁移为 `registerAddr` 并剥离老字段。
59
+
46
60
  如需在交互式终端中也强制跳过引导,可设置 `AWS_BRIDGE_SKIP_SETUP=true`;此时仍会生成随机 `connectionKey`。
47
61
 
48
62
  ```bash
@@ -90,6 +104,8 @@ sudo awsb service uninstall
90
104
  | --- | --- | --- |
91
105
  | `AWS_RUNTIME_BRIDGE_PORT` | Bridge HTTP 端口 | `18081` |
92
106
  | `AWS_RUNTIME_SCHEDULER_BASE_URL` | aws-mcp-server 地址;显式配置优先级最高,未配置且只有一个 `autoRegisterTargets[].serverUrl` 时自动使用该地址 | 单目标自动注册地址;否则 `http://localhost:8080` |
107
+ | `AWS_REGISTER_ADDR` | Bridge 对外注册地址,覆盖配置文件中的 `registerAddr`;支持 `host:port` / 纯 `host` / 完整 URL(`http(s)://...`) | 未设置时读取配置文件 |
108
+ | `AWS_REGISTER_IP` | 已废弃,仅做向后兼容;等同 `registerAddr` 但只接受纯 IP,端口由 `AWS_RUNTIME_BRIDGE_PORT` 决定 | 未设置时读取配置文件 |
93
109
  | `AWS_RUNTIME_HOME_DIR` | Bridge 管理配置与状态的主目录 | 当前用户 Home |
94
110
  | `AWS_RUNTIME_CORS_ORIGINS` | 允许访问 bridge 的来源,逗号分隔 | 本地开发地址 |
95
111
 
@@ -663,7 +663,7 @@ instanceRouter.post("/prepare-restart", validateToken, async (req, res) => {
663
663
  */
664
664
  instanceRouter.post("/update-bridge", validateTokenOrPanelSession, async (req, res) => {
665
665
  const command = resolveNpmExecutable();
666
- const args = ["install", "-g", "aws-runtime-bridge@latest"];
666
+ const args = ["install", "-g", "aws-runtime-bridge@latest", "--omit=optional"];
667
667
  const requestedByUserId = normalizeOptionalText(req.body?.requestedByUserId);
668
668
  try {
669
669
  if (!requestedByUserId) {
@@ -29,7 +29,17 @@ interface AutoRegisterConfig {
29
29
  roleName?: string;
30
30
  /** 工作空间路径 */
31
31
  workspacePath?: string;
32
- /** 注册 IP(优先用于生成 runtimeBridgeBaseUrl) */
32
+ /**
33
+ * 注册地址(推荐)
34
+ * - 支持 `host:port`、纯 `host`(自动补 AWS_RUNTIME_BRIDGE_PORT)、完整 URL(`http://...` / `https://...`,原样使用)
35
+ * - 优先级高于 registerIp / virtualIp
36
+ */
37
+ registerAddr?: string;
38
+ /**
39
+ * 注册 IP(已废弃,仅做向后兼容回退)
40
+ * - 仅接受纯 IP/host,端口由 AWS_RUNTIME_BRIDGE_PORT 决定
41
+ * - 推荐迁移到 registerAddr
42
+ */
33
43
  registerIp?: string;
34
44
  /** 虚拟 IP(EasyTier,兼容旧配置) */
35
45
  virtualIp?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auto-register.d.ts","sourceRoot":"","sources":["../../src/services/auto-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmDH;;GAEG;AACH,UAAU,kBAAkB;IAC1B,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAuBD,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD;AAiED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAGtD;AAyJD;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,kBAAkB,CA2C/C;AAED,wBAAgB,WAAW,IAAI,kBAAkB,EAAE,CA0ClD;AA2PD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACzC,OAAO,CAAC,OAAO,CAAC,CAalB;AAyHD;;GAEG;AACH,wBAAsB,gCAAgC,IAAI,OAAO,CAAC;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAoED;AAED,wBAAsB,yCAAyC,CAC7D,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA0ED;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAgCnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB;gBAh6BtB,OAAO;iBACN,MAAM;mBACJ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;kBACvB,IAAI;YACV,MAAM;EA85Bf;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA0ED"}
1
+ {"version":3,"file":"auto-register.d.ts","sourceRoot":"","sources":["../../src/services/auto-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmDH;;GAEG;AACH,UAAU,kBAAkB;IAC1B,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAuBD,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD;AAkED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAGtD;AA6JD;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,kBAAkB,CA4C/C;AAED,wBAAgB,WAAW,IAAI,kBAAkB,EAAE,CA2ClD;AA4QD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACzC,OAAO,CAAC,OAAO,CAAC,CAalB;AAyHD;;GAEG;AACH,wBAAsB,gCAAgC,IAAI,OAAO,CAAC;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAkED;AAED,wBAAsB,yCAAyC,CAC7D,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAwED;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAgCnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB;gBAp7BtB,OAAO;iBACN,MAAM;mBACJ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;kBACvB,IAAI;YACV,MAAM;EAk7Bf;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAwED"}
@@ -76,6 +76,7 @@ function normalizeTargetConfig(source) {
76
76
  projectName: normalizeOptionalString(source.projectName),
77
77
  roleName: normalizeOptionalString(source.roleName),
78
78
  workspacePath: normalizeOptionalString(source.workspacePath),
79
+ registerAddr: normalizeOptionalString(source.registerAddr),
79
80
  registerIp: normalizeOptionalString(source.registerIp),
80
81
  virtualIp: normalizeOptionalString(source.virtualIp),
81
82
  preferSameLanIp: normalizeOptionalBoolean(source.preferSameLanIp),
@@ -103,7 +104,7 @@ export function getAutoRegisterConfigFilePath() {
103
104
  * "serverUrl": "http://scheduler-host:7380", // 必填,要主动注册的 server 地址
104
105
  * "userKey": "aws_live_xxx", // 必填,用户 API Key
105
106
  * "instanceName": "my-bridge", // 必填/可选,默认主机名
106
- * "registerIp": "192.168.1.25", // 可选,优先作为注册 IP
107
+ * "registerAddr": "192.168.1.25:18081", // 可选,注册地址(推荐,支持 host:port / 纯 host / 完整 URL)
107
108
  * "connectionKey": "bridge-password" // 可选,不填则使用顶层 connectionKey
108
109
  * }
109
110
  * ],
@@ -115,7 +116,8 @@ export function getAutoRegisterConfigFilePath() {
115
116
  * "projectName": "default", // 可选
116
117
  * "roleName": "Bridge", // 可选
117
118
  * "workspacePath": "/path/to/workspace", // 可选
118
- * "registerIp": "192.168.1.25", // 可选,优先作为注册 IP
119
+ * "registerAddr": "192.168.1.25:18081", // 可选,注册地址(推荐)
120
+ * "registerIp": "192.168.1.25", // 可选,已废弃(仅纯 IP,端口由 AWS_RUNTIME_BRIDGE_PORT 决定)
119
121
  * "virtualIp": "10.144.144.1", // 可选,兼容 EasyTier 虚拟 IP
120
122
  * "maxRetries": 5, // 可选
121
123
  * "retryInterval": 5000 // 可选
@@ -203,6 +205,9 @@ function loadConfigFromEnv() {
203
205
  if (process.env.AWS_WORKSPACE_PATH) {
204
206
  envConfig.workspacePath = process.env.AWS_WORKSPACE_PATH;
205
207
  }
208
+ if (process.env.AWS_REGISTER_ADDR) {
209
+ envConfig.registerAddr = process.env.AWS_REGISTER_ADDR;
210
+ }
206
211
  if (process.env.AWS_REGISTER_IP) {
207
212
  envConfig.registerIp = process.env.AWS_REGISTER_IP;
208
213
  }
@@ -261,6 +266,7 @@ export function loadConfig() {
261
266
  projectName: merged.projectName,
262
267
  roleName: merged.roleName,
263
268
  workspacePath: merged.workspacePath,
269
+ registerAddr: merged.registerAddr,
264
270
  registerIp: merged.registerIp,
265
271
  virtualIp: merged.virtualIp,
266
272
  preferSameLanIp: merged.preferSameLanIp !== false,
@@ -295,6 +301,7 @@ export function loadConfigs() {
295
301
  projectName: merged.projectName,
296
302
  roleName: merged.roleName,
297
303
  workspacePath: merged.workspacePath,
304
+ registerAddr: merged.registerAddr,
298
305
  registerIp: merged.registerIp,
299
306
  virtualIp: merged.virtualIp,
300
307
  preferSameLanIp: merged.preferSameLanIp !== false,
@@ -419,7 +426,21 @@ function resolveRuntimeBridgeBaseUrl(config) {
419
426
  const localIp = config.preferSameLanIp === false
420
427
  ? "127.0.0.1"
421
428
  : getLocalIpAddress(config.serverUrl || schedulerBaseUrl);
422
- return `http://${config.registerIp || config.virtualIp || localIp}:${port}`;
429
+ // 优先级:registerAddr(推荐) > registerIp(已废弃,仅纯 host) > virtualIp > localIp
430
+ const raw = config.registerAddr || config.registerIp || config.virtualIp || localIp;
431
+ if (!raw) {
432
+ return `http://127.0.0.1:${port}`;
433
+ }
434
+ // 已带协议前缀(http:// / https://)→ 原样使用,支持反代/TLS/自定义端口场景
435
+ if (/^https?:\/\//i.test(raw)) {
436
+ return raw;
437
+ }
438
+ // 未带协议:统一补 http://;末尾无 :port 时补默认端口
439
+ // - IPv4/host:port → 原样使用
440
+ // - 纯 IPv4/host → 追加默认端口
441
+ // - IPv6 必须用完整 URL 形式(http://[::1]:port)才能正确解析
442
+ const hasTrailingPort = /:[0-9]+$/.test(raw);
443
+ return hasTrailingPort ? `http://${raw}` : `http://${raw}:${port}`;
423
444
  }
424
445
  function loadPrimaryLifecycleConfig() {
425
446
  return loadConfigs()[0] || loadConfig();
@@ -460,7 +481,7 @@ async function doRegister(config) {
460
481
  userKey: config.userKey,
461
482
  instanceName,
462
483
  hostname: os.hostname(),
463
- virtualIp: config.registerIp || config.virtualIp,
484
+ virtualIp: config.registerAddr || config.registerIp || config.virtualIp,
464
485
  runtimeBridgeBaseUrl: resolveRuntimeBridgeBaseUrl(config),
465
486
  connectionKey: config.connectionKey,
466
487
  workspacePath: config.workspacePath,
@@ -618,9 +639,7 @@ export async function requestRuntimeAccessTokenRefresh() {
618
639
  }
619
640
  const state = getRuntimeBindingPublicState();
620
641
  const targetServerUrl = resolveLifecycleSchedulerBaseUrl(config);
621
- const localIp = getLocalIpAddress(targetServerUrl);
622
- const runtimeBridgePort = process.env.AWS_RUNTIME_BRIDGE_PORT || 18081;
623
- const runtimeBridgeBaseUrl = `http://${config.registerIp || config.virtualIp || localIp}:${runtimeBridgePort}`;
642
+ const runtimeBridgeBaseUrl = resolveRuntimeBridgeBaseUrl(config);
624
643
  try {
625
644
  const response = await axios.post(`${targetServerUrl}/api/instances/runtime-tokens/refresh`, {
626
645
  tenantId: config.tenantId,
@@ -676,9 +695,7 @@ export async function requestRuntimeAccessTokenRefreshForServer(serverBaseUrl) {
676
695
  };
677
696
  }
678
697
  const state = getRuntimeBindingPublicState();
679
- const localIp = getLocalIpAddress(targetServerUrl);
680
- const runtimeBridgePort = process.env.AWS_RUNTIME_BRIDGE_PORT || 18081;
681
- const runtimeBridgeBaseUrl = `http://${config.registerIp || config.virtualIp || localIp}:${runtimeBridgePort}`;
698
+ const runtimeBridgeBaseUrl = resolveRuntimeBridgeBaseUrl(config);
682
699
  try {
683
700
  const response = await axios.post(`${targetServerUrl}/api/instances/runtime-tokens/refresh`, {
684
701
  tenantId: config.tenantId,
@@ -792,9 +809,7 @@ export async function bridgeRestartCleanup() {
792
809
  }
793
810
  // 如果有配置,也传入 runtimeBridgeBaseUrl
794
811
  if (config.enabled) {
795
- const localIp = getLocalIpAddress(targetServerUrl);
796
- const port = process.env.AWS_RUNTIME_BRIDGE_PORT || 18081;
797
- requestBody.runtimeBridgeBaseUrl = `http://${config.registerIp || config.virtualIp || localIp}:${port}`;
812
+ requestBody.runtimeBridgeBaseUrl = resolveRuntimeBridgeBaseUrl(config);
798
813
  }
799
814
  if (!requestBody.instanceId && !requestBody.runtimeBridgeBaseUrl) {
800
815
  logger.info("[AutoRegister] Bridge 重启清理:没有 instanceId 或 runtimeBridgeBaseUrl,跳过清理");
@@ -1 +1 @@
1
- {"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../../src/services/cli-commands.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAM5E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,gBAAgB,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD,wBAAgB,kBAAkB,CAAC,WAAW,SAA0B,GAAG,MAAM,CAMhF;AAgCD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAsBvE;AAwOD,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CA+C3B"}
1
+ {"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../../src/services/cli-commands.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAM5E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,gBAAgB,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD,wBAAgB,kBAAkB,CAAC,WAAW,SAA0B,GAAG,MAAM,CAMhF;AAgCD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAsBvE;AAwOD,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAgD3B"}
@@ -241,6 +241,7 @@ export async function handleCliCommand(options = {}) {
241
241
  "install",
242
242
  "-g",
243
243
  "aws-runtime-bridge@latest",
244
+ "--omit=optional",
244
245
  ]);
245
246
  if (result.error) {
246
247
  stderr(`[runtime-bridge] 更新失败: ${result.error.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"startup-config-wizard.d.ts","sourceRoot":"","sources":["../../src/services/startup-config-wizard.ts"],"names":[],"mappings":"AAuBA,UAAU,QAAQ;IAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,0BAA0B;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAoKb,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC,CAiDpC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC,CA0BpC"}
1
+ {"version":3,"file":"startup-config-wizard.d.ts","sourceRoot":"","sources":["../../src/services/startup-config-wizard.ts"],"names":[],"mappings":"AAuBA,UAAU,QAAQ;IAChB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,0BAA0B;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAgLb,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC,CAiDpC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC,CA0BpC"}
@@ -80,22 +80,28 @@ async function collectStartupConfig(prompt, existingConfig = {}) {
80
80
  const existingTarget = existingConfig.autoRegisterTargets?.[0] || {};
81
81
  const defaultServerUrl = "http://127.0.0.1:8080";
82
82
  const defaultInstanceName = os.hostname() || "AgentsWork Runtime Bridge";
83
- const defaultRegisterIp = "127.0.0.1";
83
+ const defaultRegisterAddr = "127.0.0.1";
84
+ // 读取已有 registerAddr;若老配置只有 registerIp 则迁移过来
85
+ const existingRegisterAddr = existingTarget.registerAddr ||
86
+ existingTarget.registerIp ||
87
+ defaultRegisterAddr;
84
88
  const connectionKey = await askRequired(prompt, "connectionKey(面板连接 Bridge 的密钥)", existingConfig.connectionKey);
85
89
  const serverUrl = await askOptional(prompt, "serverUrl(调度中心地址)", existingTarget.serverUrl || defaultServerUrl);
86
90
  const instanceName = await askOptional(prompt, "instanceName(实例名称)", existingTarget.instanceName || defaultInstanceName);
87
91
  const userKey = await askRequired(prompt, "userKey(用户 API Key)", existingTarget.userKey);
88
- const registerIp = await askOptional(prompt, "registerIp(Bridge 对外访问 IP)", existingTarget.registerIp || defaultRegisterIp);
92
+ const registerAddr = await askOptional(prompt, "registerAddr(Bridge 对外访问地址,支持 host:port / 纯 host / 完整 URL)", existingRegisterAddr);
93
+ // 显式剥离老 registerIp 字段,避免输出中两字段共存
94
+ const { registerIp: _legacyRegisterIp, ...targetWithoutRegisterIp } = existingTarget;
89
95
  return {
90
96
  ...existingConfig,
91
97
  connectionKey,
92
98
  autoRegisterTargets: [
93
99
  {
94
- ...existingTarget,
100
+ ...targetWithoutRegisterIp,
95
101
  serverUrl,
96
102
  instanceName,
97
103
  userKey,
98
- registerIp,
104
+ registerAddr,
99
105
  },
100
106
  ],
101
107
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aws-runtime-bridge",
3
- "version": "1.9.66",
3
+ "version": "1.9.70",
4
4
  "description": "AgentsWorkStudio runtime bridge service for machine-level agent runtime integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",