aws-runtime-bridge 1.8.5 → 1.8.6

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.
Files changed (42) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
  2. package/dist/adapter/AcodeSdkAdapter.js +6 -98
  3. package/dist/adapter/AcodeSdkAdapter.test.js +2 -313
  4. package/dist/adapter/OpencodeSdkAdapter.js +1 -1
  5. package/dist/adapter/types.d.ts.map +1 -1
  6. package/dist/adapter/types.js +3 -7
  7. package/dist/config.d.ts +3 -2
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +13 -36
  10. package/dist/config.test.js +20 -24
  11. package/dist/routes/ai-sources.js +1 -5
  12. package/dist/routes/ai-sources.test.js +0 -21
  13. package/dist/routes/instance.d.ts.map +1 -1
  14. package/dist/routes/instance.js +14 -31
  15. package/dist/routes/instance.test.js +224 -215
  16. package/dist/routes/runtime-binding.d.ts.map +1 -1
  17. package/dist/routes/runtime-binding.js +1 -36
  18. package/dist/routes/terminal.d.ts +0 -2
  19. package/dist/routes/terminal.d.ts.map +1 -1
  20. package/dist/routes/terminal.js +7 -109
  21. package/dist/routes/terminal.test.js +1 -118
  22. package/dist/services/mcp-launch-binding-queue.d.ts +0 -7
  23. package/dist/services/mcp-launch-binding-queue.d.ts.map +1 -1
  24. package/dist/services/mcp-launch-binding-queue.js +0 -25
  25. package/dist/services/session-output.d.ts +3 -7
  26. package/dist/services/session-output.d.ts.map +1 -1
  27. package/package/acode/dist/runtime.d.ts +0 -1
  28. package/package/acode/dist/runtime.d.ts.map +1 -1
  29. package/package/acode/dist/runtime.js +31 -265
  30. package/package/acode/dist/types.d.ts +1 -1
  31. package/package/acode/dist/types.d.ts.map +1 -1
  32. package/package/aws-client-agent-mcp/dist/config.d.ts +0 -4
  33. package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -1
  34. package/package/aws-client-agent-mcp/dist/config.js +0 -15
  35. package/package/aws-client-agent-mcp/dist/config.js.map +1 -1
  36. package/package/aws-client-agent-mcp/dist/http-client.d.ts +0 -10
  37. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
  38. package/package/aws-client-agent-mcp/dist/http-client.js +1 -79
  39. package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
  40. package/package/aws-client-agent-mcp/dist/http-client.test.js +265 -129
  41. package/package/aws-client-agent-mcp/dist/http-client.test.js.map +1 -1
  42. package/package.json +1 -1
package/dist/config.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  export declare const port: number;
8
8
  /** 默认调度器基础 URL */
9
9
  export declare const DEFAULT_SCHEDULER_BASE_URL = "http://localhost:8080";
10
- export type SchedulerBaseUrlSource = "request" | "env" | "single-auto-register-target" | "default" | "ambiguous-auto-register-targets";
10
+ export type SchedulerBaseUrlSource = "env" | "single-auto-register-target" | "request" | "default" | "ambiguous-auto-register-targets";
11
11
  export interface SchedulerBaseUrlResolution {
12
12
  url: string;
13
13
  source: SchedulerBaseUrlSource;
@@ -20,7 +20,8 @@ export interface SchedulerBaseUrlResolution {
20
20
  export declare function resolveSchedulerBaseUrl(): SchedulerBaseUrlResolution;
21
21
  /**
22
22
  * 解析调度中心基础 URL。
23
- * 主流程:服务端请求携带的 scheduler 地址优先;再读显式环境变量;最后回退到单个自动注册目标或默认值。
23
+ * 主流程:bridge 本机显式配置优先;未配置时,单个自动注册目标可作为宿主机部署的零额外配置回退;
24
+ * 服务端请求携带的 scheduler 地址仅作为本机无配置时的兜底,避免 Docker 容器内地址覆盖机器实例配置。
24
25
  */
25
26
  export declare function resolveSchedulerBaseUrlFrom(requestSchedulerBaseUrl: unknown): SchedulerBaseUrlResolution;
26
27
  /** 调度器基础 URL(兼容旧导入;请求处理应优先调用 resolveSchedulerBaseUrl 获取最新值) */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -41,19 +41,6 @@ function normalizeSchedulerHttpBaseUrl(value) {
41
41
  return repaired.replace(/\/+$/, "");
42
42
  }
43
43
  }
44
- function isLoopbackSchedulerBaseUrl(value) {
45
- try {
46
- const url = new URL(value);
47
- const hostname = url.hostname.toLowerCase();
48
- return (hostname === "localhost" ||
49
- hostname === "127.0.0.1" ||
50
- hostname === "::1" ||
51
- hostname === "[::1]");
52
- }
53
- catch {
54
- return /^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?(?:\/|$)/i.test(value);
55
- }
56
- }
57
44
  function getAutoRegisterConfigFilePath() {
58
45
  const testHomeDir = String(process.env.AWS_TEST_HOME || "").trim();
59
46
  return path.join(testHomeDir || homedir(), ".aws-bridge", "config.json");
@@ -93,30 +80,11 @@ export function resolveSchedulerBaseUrl() {
93
80
  }
94
81
  /**
95
82
  * 解析调度中心基础 URL。
96
- * 主流程:服务端请求携带的 scheduler 地址优先;再读显式环境变量;最后回退到单个自动注册目标或默认值。
83
+ * 主流程:bridge 本机显式配置优先;未配置时,单个自动注册目标可作为宿主机部署的零额外配置回退;
84
+ * 服务端请求携带的 scheduler 地址仅作为本机无配置时的兜底,避免 Docker 容器内地址覆盖机器实例配置。
97
85
  */
98
86
  export function resolveSchedulerBaseUrlFrom(requestSchedulerBaseUrl) {
99
- const normalizedRequestSchedulerBaseUrl = normalizeSchedulerHttpBaseUrl(requestSchedulerBaseUrl);
100
87
  const envSchedulerBaseUrl = normalizeSchedulerHttpBaseUrl(process.env.AWS_RUNTIME_SCHEDULER_BASE_URL);
101
- const autoRegisterTargetUrls = readAutoRegisterTargetUrls();
102
- const singleAutoRegisterTargetUrl = autoRegisterTargetUrls.length === 1 ? autoRegisterTargetUrls[0] : undefined;
103
- if (normalizedRequestSchedulerBaseUrl) {
104
- const localSchedulerBaseUrl = envSchedulerBaseUrl || singleAutoRegisterTargetUrl;
105
- if (localSchedulerBaseUrl &&
106
- isLoopbackSchedulerBaseUrl(normalizedRequestSchedulerBaseUrl) &&
107
- !isLoopbackSchedulerBaseUrl(localSchedulerBaseUrl)) {
108
- return {
109
- url: localSchedulerBaseUrl,
110
- source: envSchedulerBaseUrl ? "env" : "single-auto-register-target",
111
- ambiguousTargetUrls: [],
112
- };
113
- }
114
- return {
115
- url: normalizedRequestSchedulerBaseUrl,
116
- source: "request",
117
- ambiguousTargetUrls: [],
118
- };
119
- }
120
88
  if (envSchedulerBaseUrl) {
121
89
  return {
122
90
  url: envSchedulerBaseUrl,
@@ -124,13 +92,22 @@ export function resolveSchedulerBaseUrlFrom(requestSchedulerBaseUrl) {
124
92
  ambiguousTargetUrls: [],
125
93
  };
126
94
  }
127
- if (singleAutoRegisterTargetUrl) {
95
+ const autoRegisterTargetUrls = readAutoRegisterTargetUrls();
96
+ if (autoRegisterTargetUrls.length === 1) {
128
97
  return {
129
- url: singleAutoRegisterTargetUrl || DEFAULT_SCHEDULER_BASE_URL,
98
+ url: autoRegisterTargetUrls[0] || DEFAULT_SCHEDULER_BASE_URL,
130
99
  source: "single-auto-register-target",
131
100
  ambiguousTargetUrls: [],
132
101
  };
133
102
  }
103
+ const normalizedRequestSchedulerBaseUrl = normalizeSchedulerHttpBaseUrl(requestSchedulerBaseUrl);
104
+ if (normalizedRequestSchedulerBaseUrl) {
105
+ return {
106
+ url: normalizedRequestSchedulerBaseUrl,
107
+ source: "request",
108
+ ambiguousTargetUrls: [],
109
+ };
110
+ }
134
111
  if (autoRegisterTargetUrls.length > 1) {
135
112
  return {
136
113
  url: DEFAULT_SCHEDULER_BASE_URL,
@@ -42,52 +42,48 @@ afterEach(() => {
42
42
  }
43
43
  });
44
44
  describe("scheduler base URL resolution", () => {
45
- it("keeps scheduler URL supplied by the server request as the highest priority", async () => {
45
+ it("keeps explicit AWS_RUNTIME_SCHEDULER_BASE_URL before the server request URL", async () => {
46
46
  const runtimeHome = createRuntimeHome();
47
47
  useRuntimeHome(runtimeHome);
48
48
  process.env.AWS_RUNTIME_SCHEDULER_BASE_URL = "http://env.local:7380";
49
49
  writeBridgeConfig(runtimeHome, [{ serverUrl: "http://target.local:7380" }]);
50
50
  const { resolveSchedulerBaseUrlFrom } = await import("./config.js");
51
51
  expect(resolveSchedulerBaseUrlFrom("http://server.local:7380/api")).toEqual({
52
- url: "http://server.local:7380",
53
- source: "request",
52
+ url: "http://env.local:7380",
53
+ source: "env",
54
54
  ambiguousTargetUrls: [],
55
55
  });
56
56
  });
57
- it("keeps explicit AWS_RUNTIME_SCHEDULER_BASE_URL as the highest priority", async () => {
57
+ it("keeps a single auto-register target before the server request URL", async () => {
58
58
  const runtimeHome = createRuntimeHome();
59
59
  useRuntimeHome(runtimeHome);
60
- process.env.AWS_RUNTIME_SCHEDULER_BASE_URL =
61
- "http://explicit.local:7380/path";
62
- writeBridgeConfig(runtimeHome, [{ serverUrl: "http://target.local:7380" }]);
63
- const { resolveSchedulerBaseUrl } = await import("./config.js");
64
- expect(resolveSchedulerBaseUrl()).toEqual({
65
- url: "http://explicit.local:7380",
66
- source: "env",
60
+ writeBridgeConfig(runtimeHome, [{ serverUrl: "http://target.local:7380/api" }]);
61
+ const { resolveSchedulerBaseUrlFrom } = await import("./config.js");
62
+ expect(resolveSchedulerBaseUrlFrom("http://server.local:7380/api")).toEqual({
63
+ url: "http://target.local:7380",
64
+ source: "single-auto-register-target",
67
65
  ambiguousTargetUrls: [],
68
66
  });
69
67
  });
70
- it("ignores a server-supplied loopback URL when bridge has an explicit external scheduler URL", async () => {
68
+ it("uses scheduler URL supplied by the server request when local bridge config is absent", async () => {
71
69
  const runtimeHome = createRuntimeHome();
72
70
  useRuntimeHome(runtimeHome);
73
- process.env.AWS_RUNTIME_SCHEDULER_BASE_URL = "http://101.42.200.84:7380";
74
71
  const { resolveSchedulerBaseUrlFrom } = await import("./config.js");
75
- expect(resolveSchedulerBaseUrlFrom("http://127.0.0.1:7380/api")).toEqual({
76
- url: "http://101.42.200.84:7380",
77
- source: "env",
72
+ expect(resolveSchedulerBaseUrlFrom("http://server.local:7380/api")).toEqual({
73
+ url: "http://server.local:7380",
74
+ source: "request",
78
75
  ambiguousTargetUrls: [],
79
76
  });
80
77
  });
81
- it("uses a single external auto-register target instead of a server-supplied loopback URL", async () => {
78
+ it("keeps explicit AWS_RUNTIME_SCHEDULER_BASE_URL as the highest priority", async () => {
82
79
  const runtimeHome = createRuntimeHome();
83
80
  useRuntimeHome(runtimeHome);
84
- writeBridgeConfig(runtimeHome, [
85
- { serverUrl: "http://101.42.200.84:7380" },
86
- ]);
87
- const { resolveSchedulerBaseUrlFrom } = await import("./config.js");
88
- expect(resolveSchedulerBaseUrlFrom("http://127.0.0.1:7380/api")).toEqual({
89
- url: "http://101.42.200.84:7380",
90
- source: "single-auto-register-target",
81
+ process.env.AWS_RUNTIME_SCHEDULER_BASE_URL = "http://explicit.local:7380/path";
82
+ writeBridgeConfig(runtimeHome, [{ serverUrl: "http://target.local:7380" }]);
83
+ const { resolveSchedulerBaseUrl } = await import("./config.js");
84
+ expect(resolveSchedulerBaseUrl()).toEqual({
85
+ url: "http://explicit.local:7380",
86
+ source: "env",
91
87
  ambiguousTargetUrls: [],
92
88
  });
93
89
  });
@@ -59,7 +59,7 @@ async function fetchRemoteModelList(baseUrl, apiKey) {
59
59
  return normalizeListedModels(anthropicResponse.data);
60
60
  }
61
61
  aiSourcesRouter.post('/cc-switch/apply-ai-sources', validateToken, async (req, res) => {
62
- const { agentId, template, ccSwitchEnabledTools, acodeTemplateId, claudecodeTemplateId, codexTemplateId, opencodeTemplateId, acodeModelEffort, claudecodeModelEffort, codexModelEffort, opencodeModelEffort, acode, claudecode, codex, opencode, } = req.body || {};
62
+ const { agentId, template, ccSwitchEnabledTools, acodeTemplateId, claudecodeTemplateId, codexTemplateId, opencodeTemplateId, acode, claudecode, codex, opencode, } = req.body || {};
63
63
  if (!agentId) {
64
64
  res.status(400).json({ error: 'agentId is required' });
65
65
  return;
@@ -81,10 +81,6 @@ aiSourcesRouter.post('/cc-switch/apply-ai-sources', validateToken, async (req, r
81
81
  claudecodeTemplateId: String(claudecodeTemplateId || ''),
82
82
  codexTemplateId: String(codexTemplateId || ''),
83
83
  opencodeTemplateId: String(opencodeTemplateId || ''),
84
- acodeModelEffort: String(acodeModelEffort || ''),
85
- claudecodeModelEffort: String(claudecodeModelEffort || ''),
86
- codexModelEffort: String(codexModelEffort || ''),
87
- opencodeModelEffort: String(opencodeModelEffort || ''),
88
84
  generatedFromUnifiedTemplate: appliedSummary.generatedFromUnifiedTemplate,
89
85
  applied: appliedSummary.applied,
90
86
  skippedTools: appliedSummary.skippedTools,
@@ -76,14 +76,6 @@ function buildModelListCandidates(baseUrl, protocol) {
76
76
  : [`${normalizedBaseUrl}/models`, `${normalizedBaseUrl}/v1/models`];
77
77
  return [...openAiCandidates, `${normalizedBaseUrl}/v1/models`];
78
78
  }
79
- function buildApplyAiSourcesResponse(body) {
80
- return {
81
- acodeModelEffort: String(body.acodeModelEffort || ''),
82
- claudecodeModelEffort: String(body.claudecodeModelEffort || ''),
83
- codexModelEffort: String(body.codexModelEffort || ''),
84
- opencodeModelEffort: String(body.opencodeModelEffort || ''),
85
- };
86
- }
87
79
  describe('ai source unified config generation', () => {
88
80
  it('builds tool-specific configs from unified template fields', () => {
89
81
  assert.deepEqual(buildUnifiedToolConfig({
@@ -153,17 +145,4 @@ describe('ai source unified config generation', () => {
153
145
  model: 'gpt-test',
154
146
  }).opencode.provider.default.options.baseURL).toBe('https://octopus.721579.xyz/v1');
155
147
  });
156
- it('echoes selected model effort metadata in apply-ai-sources responses', () => {
157
- expect(buildApplyAiSourcesResponse({
158
- acodeModelEffort: 'xhigh',
159
- claudecodeModelEffort: 'high',
160
- codexModelEffort: 'max',
161
- opencodeModelEffort: 'high',
162
- })).toEqual({
163
- acodeModelEffort: 'xhigh',
164
- claudecodeModelEffort: 'high',
165
- codexModelEffort: 'max',
166
- opencodeModelEffort: 'high',
167
- });
168
- });
169
148
  });
@@ -1 +1 @@
1
- {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/routes/instance.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA0BrD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/D,IAAI,CAEN;AAED,eAAO,MAAM,cAAc,4CAAW,CAAC;AAwJvC,wBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,GAAG;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,EAAE,EAAE,OAAO,CAAC;QACZ,aAAa,CAAC,EAAE,SAAS,CAAC;QAC1B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,qBAAqB,EAAE,OAAO,CAAC;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAqCA;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,gBAAgB,CAAC;IAC/B,aAAa,EAAE,SAAS,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,iCAAiC;IACzC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,8BAA8B,CAAC;IACtC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,aAAa,EAAE,SAAS,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,KAAK,EACZ,0BAA0B,EAAE,MAAM,GACjC,4BAA4B,CAgB9B;AAmDD;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,UAAU,EAAE,MAAM,EAAE,GACnB,iCAAiC,CAUnC;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,EAAE,CAYV;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC5C,MAAM,CAgBR;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC5C,MAAM,CACP,MAAM,EACN,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC,CAC1E,CAYA"}
1
+ {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/routes/instance.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqBrD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/D,IAAI,CAEN;AAED,eAAO,MAAM,cAAc,4CAAW,CAAC;AAsJvC,wBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,GAAG;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,EAAE,EAAE,OAAO,CAAC;QACZ,aAAa,CAAC,EAAE,SAAS,CAAC;QAC1B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,qBAAqB,EAAE,OAAO,CAAC;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAqCA;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,gBAAgB,CAAC;IAC/B,aAAa,EAAE,SAAS,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,iCAAiC;IACzC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,8BAA8B,CAAC;IACtC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,aAAa,EAAE,SAAS,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,KAAK,EACZ,0BAA0B,EAAE,MAAM,GACjC,4BAA4B,CAiB9B;AAoDD;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,UAAU,EAAE,MAAM,EAAE,GACnB,iCAAiC,CAUnC;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQhF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC5C,MAAM,CAaR;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC5C,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC,CAAC,CAY3F"}
@@ -4,21 +4,16 @@ import { spawn } from "node:child_process";
4
4
  import { createHash, timingSafeEqual } from "node:crypto";
5
5
  import { resolveSchedulerBaseUrlFrom } from "../config.js";
6
6
  import { validateToken } from "../middleware/auth.js";
7
- import { getConfiguredConnectionKeys, requestRuntimeAccessTokenRefreshForServer, } from "../services/auto-register.js";
8
- import { discoverCcSwitchConfiguredItems, loadCcSwitchSdk, } from "../services/cc-switch-sdk.js";
9
- import { initInstance, syncLegacyStateFromSdk, } from "../services/instance-init-service.js";
7
+ import { getConfiguredConnectionKeys, requestRuntimeAccessTokenRefreshForServer } from "../services/auto-register.js";
8
+ import { discoverCcSwitchConfiguredItems, loadCcSwitchSdk } from "../services/cc-switch-sdk.js";
9
+ import { initInstance, syncLegacyStateFromSdk } from "../services/instance-init-service.js";
10
10
  import { createBridgeLifecycleOperation, deliverPendingBridgeLifecycleNotifications, upsertBridgeLifecycleOperation, } from "../services/lifecycle-state.js";
11
11
  import { loadInstanceState, saveInstanceState, } from "../services/instance-state.js";
12
12
  import { getRuntimeAccessToken } from "../services/runtime-binding.js";
13
13
  import { detectToolStatuses, ensureToolsInstalled, SUPPORTED_INSTALLABLE_TOOLS, SUPPORTED_UNINSTALLABLE_TOOLS, uninstallTools, } from "../services/tool-installer.js";
14
14
  import { createLogger } from "../utils/logger.js";
15
15
  const log = createLogger("instance");
16
- const PANEL_TOOL_STATUS_KEYS = [
17
- "acode",
18
- "claude",
19
- "opencode",
20
- "codex",
21
- ];
16
+ const PANEL_TOOL_STATUS_KEYS = ["acode", "claude", "opencode", "codex"];
22
17
  // ★★★ 导出 gracefulShutdown 的触发函数
23
18
  // 用于 aws-mcp-server 通知 bridge 保留会话状态关闭
24
19
  let gracefulShutdownFn = null;
@@ -254,9 +249,7 @@ export function buildAmbiguousSchedulerBaseUrlResponse(targetUrls) {
254
249
  */
255
250
  export function buildToolStatusDetectionTargets(enabledTools) {
256
251
  return Array.from(new Set([...enabledTools, ...PANEL_TOOL_STATUS_KEYS]
257
- .map((tool) => String(tool || "")
258
- .trim()
259
- .toLowerCase())
252
+ .map((tool) => String(tool || "").trim().toLowerCase())
260
253
  .filter(Boolean)));
261
254
  }
262
255
  /**
@@ -307,25 +300,17 @@ instanceRouter.get("/ping", validateToken, async (req, res) => {
307
300
  }
308
301
  const schedulerBaseUrl = schedulerBaseUrlResolution.url;
309
302
  try {
310
- let runtimeAccessToken = getRuntimeAccessToken(undefined, schedulerBaseUrl);
311
- let tokenRefreshed = false;
303
+ const runtimeAccessToken = getRuntimeAccessToken(undefined, schedulerBaseUrl);
312
304
  if (!runtimeAccessToken) {
313
- const refreshResult = await requestRuntimeAccessTokenRefreshForServer(schedulerBaseUrl);
314
- if (!refreshResult.success || !refreshResult.runtimeAccessToken) {
315
- res
316
- .status(401)
317
- .json({ ok: false, error: "runtime_access_token_required" });
318
- return;
319
- }
320
- runtimeAccessToken = refreshResult.runtimeAccessToken;
321
- tokenRefreshed = true;
305
+ res.status(401).json({ ok: false, error: "runtime_access_token_required" });
306
+ return;
322
307
  }
323
308
  const schedulerPing = await pingSchedulerWithToken(schedulerBaseUrl, runtimeAccessToken);
324
309
  res.json({
325
310
  ok: true,
326
311
  runtimeBridge: "healthy",
327
312
  schedulerReachable: schedulerPing.schedulerReachable,
328
- tokenRefreshed: tokenRefreshed || schedulerPing.tokenRefreshed,
313
+ tokenRefreshed: schedulerPing.tokenRefreshed,
329
314
  schedulerBaseUrl,
330
315
  });
331
316
  }
@@ -386,9 +371,7 @@ instanceRouter.post("/cc-switch/state", validateToken, async (req, res) => {
386
371
  return;
387
372
  }
388
373
  try {
389
- log.info("[cc-switch/state] Request received", {
390
- agentId: String(agentId),
391
- });
374
+ log.info("[cc-switch/state] Request received", { agentId: String(agentId) });
392
375
  const sdk = await loadCcSwitchSdk(agentId);
393
376
  const imported = await discoverCcSwitchConfiguredItems(sdk);
394
377
  const synced = await syncLegacyStateFromSdk(agentId, sdk);
@@ -455,7 +438,9 @@ instanceRouter.post("/cc-switch/install-tools", validateToken, async (req, res)
455
438
  agentId: String(agentId),
456
439
  requestedTools,
457
440
  });
458
- res.status(400).json({
441
+ res
442
+ .status(400)
443
+ .json({
459
444
  error: `tools must include ${SUPPORTED_INSTALLABLE_TOOLS.join(", ")}`,
460
445
  });
461
446
  return;
@@ -548,9 +533,7 @@ instanceRouter.post("/cc-switch/uninstall-tools", validateToken, async (req, res
548
533
  try {
549
534
  const state = await loadInstanceState(agentId);
550
535
  const uninstallableToolSet = new Set(uninstallableTools);
551
- const enabledTools = (state.enabledTools || []).filter((tool) => !uninstallableToolSet.has(String(tool || "")
552
- .trim()
553
- .toLowerCase()));
536
+ const enabledTools = (state.enabledTools || []).filter((tool) => !uninstallableToolSet.has(String(tool || "").trim().toLowerCase()));
554
537
  const uninstalledToolStatus = await uninstallTools(uninstallableTools);
555
538
  const refreshedToolStatus = await detectToolStatuses([
556
539
  ...enabledTools,