@jingyi0605/codingns 0.5.1 → 0.6.0

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 (196) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-SffCV4Vb.js → AdaptiveButlerPage-uFwDdN-F.js} +3 -3
  2. package/dist/public/assets/App-BZvapsi8.js +30 -0
  3. package/dist/public/assets/App-CcDXqFl1.css +1 -0
  4. package/dist/public/assets/{BootstrapPage--zExdgfM.js → BootstrapPage-gHSoa4JN.js} +1 -1
  5. package/dist/public/assets/ConversationPage-z3sXtKZ7.js +4 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-DvI9CIKi.js → DesktopDetachPreviewPage-4eMRxiBW.js} +1 -1
  7. package/dist/public/assets/DesktopWindowPage-CZcoGApB.js +2 -0
  8. package/dist/public/assets/FileContextPanel-C3qex8bb.js +1 -0
  9. package/dist/public/assets/GitSidebar-BK6H16XU.js +6 -0
  10. package/dist/public/assets/{MobileCreateSessionSheet-CXSKMnYn.js → MobileCreateSessionSheet-BYfbvK8o.js} +1 -1
  11. package/dist/public/assets/MobileSheet-Ckug8hTb.js +1 -0
  12. package/dist/public/assets/{MobileTopHeaderFrame-BWorAJ1C.js → MobileTopHeaderFrame-Bwv8Ovm_.js} +1 -1
  13. package/dist/public/assets/MobileWorkspaceSwitcherHeader-RqWrBdn2.js +1 -0
  14. package/dist/public/assets/RelayConnectEntryPage-D_4YL-YH.js +1 -0
  15. package/dist/public/assets/ServerSettingsModal-CMSm3BZU.js +1 -0
  16. package/dist/public/assets/SessionIndexPage-DuK10DL5.js +1 -0
  17. package/dist/public/assets/SettingsPage-fyD-xaHL.js +1 -0
  18. package/dist/public/assets/TerminalManagerPanel-CCLr1Ypk.js +1 -0
  19. package/dist/public/assets/{TerminalPage-CvnHXBhw.js → TerminalPage-DaooFaJ4.js} +19 -19
  20. package/dist/public/assets/{TerminalRuntimeFallbackModal-D7Aq186N.js → TerminalRuntimeFallbackModal-aUzjEBwP.js} +1 -1
  21. package/dist/public/assets/ToolFilesPage-CGxBvYG0.js +1 -0
  22. package/dist/public/assets/ToolGitPage-C264yjS9.js +1 -0
  23. package/dist/public/assets/ToolProcessesPage-BOP4A1cb.js +1 -0
  24. package/dist/public/assets/ToolsHomePage-CQxGiKQA.js +1 -0
  25. package/dist/public/assets/WorkbenchLandingPage-CvAY68ca.js +1 -0
  26. package/dist/public/assets/WorkbenchLayout-DGm8Tc5M.js +3 -0
  27. package/dist/public/assets/{WorkbenchModal-B09hC9b5.js → WorkbenchModal-0tPIIhca.js} +1 -1
  28. package/dist/public/assets/{WorkbenchShellRoute-DsW4mBTX.css → WorkbenchShellRoute-BF0nHWOk.css} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-DBBOsJo9.js +1 -0
  30. package/dist/public/assets/WorkspaceDebugDetailPage-CDerFYd2.js +1 -0
  31. package/dist/public/assets/WorkspaceDetailPage-BlJc1CHE.js +1 -0
  32. package/dist/public/assets/WorkspaceHomePage-BUsKJ3lv.js +1 -0
  33. package/dist/public/assets/client-runtime-manager-BZpL17fc.js +1 -0
  34. package/dist/public/assets/{default-session-permission-mode-D0wZ9Jek.js → default-session-permission-mode-DT4SGiwp.js} +1 -1
  35. package/dist/public/assets/file-tree-icon-Db5LXC8h.js +31 -0
  36. package/dist/public/assets/index-BZLcEHW3.js +42 -0
  37. package/dist/public/assets/index-BbspQPC2.css +1 -0
  38. package/dist/public/assets/login-direct-candidate-resolver-1mxe_Oh8.js +1 -0
  39. package/dist/public/assets/{preferences-service-gOt2ZjKZ.js → preferences-service-DWnzl5a0.js} +1 -1
  40. package/dist/public/assets/relay-entry-C5_Iay0I.js +1 -0
  41. package/dist/public/assets/session-runtime-machine-DdLeDqQr.js +17 -0
  42. package/dist/public/assets/{styles-BWPBZvze.css → styles-CsEMfdaS.css} +1 -1
  43. package/dist/public/assets/{terminal-runtime-meta-BMT-rSEe.js → terminal-runtime-meta-cdtWVfCm.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-zMcEOGca.js → useRegisteredDebugTemplates-oFAQNIqh.js} +1 -1
  45. package/dist/public/assets/window-BVUB8gMK.js +1 -0
  46. package/dist/public/index.html +2 -2
  47. package/dist/server/config/env.d.ts +2 -0
  48. package/dist/server/config/env.js +39 -0
  49. package/dist/server/config/env.js.map +1 -1
  50. package/dist/server/modules/client/npm-global-package-service.d.ts +7 -1
  51. package/dist/server/modules/client/npm-global-package-service.js +149 -43
  52. package/dist/server/modules/client/npm-global-package-service.js.map +1 -1
  53. package/dist/server/modules/client/service-update-task-service.js +6 -2
  54. package/dist/server/modules/client/service-update-task-service.js.map +1 -1
  55. package/dist/server/modules/client/service-update-types.d.ts +2 -0
  56. package/dist/server/modules/git/git-controller.d.ts +3 -0
  57. package/dist/server/modules/git/git-controller.js +3 -0
  58. package/dist/server/modules/git/git-controller.js.map +1 -1
  59. package/dist/server/modules/git/git-read-service.js +47 -1
  60. package/dist/server/modules/git/git-read-service.js.map +1 -1
  61. package/dist/server/modules/git/git-write-service.d.ts +4 -0
  62. package/dist/server/modules/git/git-write-service.js +24 -0
  63. package/dist/server/modules/git/git-write-service.js.map +1 -1
  64. package/dist/server/modules/git/types.d.ts +1 -0
  65. package/dist/server/modules/git/workspace-repo-guard.d.ts +2 -0
  66. package/dist/server/modules/git/workspace-repo-guard.js +24 -10
  67. package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
  68. package/dist/server/modules/parallel-sessions/parallel-session-controller.d.ts +53 -0
  69. package/dist/server/modules/parallel-sessions/parallel-session-controller.js +70 -0
  70. package/dist/server/modules/parallel-sessions/parallel-session-controller.js.map +1 -0
  71. package/dist/server/modules/parallel-sessions/parallel-session-group-service.d.ts +83 -0
  72. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js +591 -0
  73. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js.map +1 -0
  74. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.d.ts +56 -0
  75. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js +483 -0
  76. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js.map +1 -0
  77. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.d.ts +16 -1
  78. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js.map +1 -1
  79. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.d.ts +2 -1
  80. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js +18 -0
  81. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js.map +1 -1
  82. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.d.ts +2 -0
  83. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js +129 -0
  84. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js.map +1 -0
  85. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.d.ts +13 -0
  86. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js +2 -0
  87. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js.map +1 -0
  88. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.d.ts +6 -0
  89. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +110 -10
  90. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  91. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.d.ts +16 -4
  92. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js +220 -102
  93. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js.map +1 -1
  94. package/dist/server/modules/relay-tunnel/relay-tunnel-service.d.ts +4 -1
  95. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +257 -162
  96. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  97. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +3 -0
  98. package/dist/server/modules/sessions/codex-app-server-helper-client.js +56 -45
  99. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  100. package/dist/server/modules/sessions/codex-app-server-helper-process.js +21 -2
  101. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  102. package/dist/server/modules/sessions/session-activity-inspector.js +6 -8
  103. package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
  104. package/dist/server/modules/sessions/session-history-service.d.ts +11 -1
  105. package/dist/server/modules/sessions/session-history-service.js +204 -21
  106. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  107. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -0
  108. package/dist/server/modules/sessions/session-live-runtime-service.js +208 -25
  109. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  110. package/dist/server/modules/workbench/codex-archive-watcher.d.ts +16 -0
  111. package/dist/server/modules/workbench/codex-archive-watcher.js +50 -0
  112. package/dist/server/modules/workbench/codex-archive-watcher.js.map +1 -0
  113. package/dist/server/modules/workbench/workbench-service.d.ts +43 -4
  114. package/dist/server/modules/workbench/workbench-service.js +72 -9
  115. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  116. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +1 -1
  117. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +26 -3
  118. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  119. package/dist/server/modules/workspace/workspace-service.d.ts +3 -1
  120. package/dist/server/modules/workspace/workspace-service.js +10 -2
  121. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  122. package/dist/server/modules/worktree/worktree-base-ref-resolver.d.ts +20 -0
  123. package/dist/server/modules/worktree/worktree-base-ref-resolver.js +111 -0
  124. package/dist/server/modules/worktree/worktree-base-ref-resolver.js.map +1 -0
  125. package/dist/server/modules/worktree/worktree-cleanup-service.js +9 -3
  126. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
  127. package/dist/server/modules/worktree/worktree-manager.d.ts +0 -1
  128. package/dist/server/modules/worktree/worktree-manager.js +14 -20
  129. package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
  130. package/dist/server/routes/git.js +1 -0
  131. package/dist/server/routes/git.js.map +1 -1
  132. package/dist/server/routes/parallel-groups.d.ts +3 -0
  133. package/dist/server/routes/parallel-groups.js +9 -0
  134. package/dist/server/routes/parallel-groups.js.map +1 -0
  135. package/dist/server/server/create-server.d.ts +8 -0
  136. package/dist/server/server/create-server.js +48 -9
  137. package/dist/server/server/create-server.js.map +1 -1
  138. package/dist/server/server/workbench-runtime-terminal-sync.d.ts +14 -0
  139. package/dist/server/server/workbench-runtime-terminal-sync.js +17 -0
  140. package/dist/server/server/workbench-runtime-terminal-sync.js.map +1 -0
  141. package/dist/server/storage/repositories/parallel-session-group-repository.d.ts +11 -0
  142. package/dist/server/storage/repositories/parallel-session-group-repository.js +131 -0
  143. package/dist/server/storage/repositories/parallel-session-group-repository.js.map +1 -0
  144. package/dist/server/storage/repositories/parallel-session-member-repository.d.ts +12 -0
  145. package/dist/server/storage/repositories/parallel-session-member-repository.js +150 -0
  146. package/dist/server/storage/repositories/parallel-session-member-repository.js.map +1 -0
  147. package/dist/server/storage/repositories/session-isolated-workspace-repository.d.ts +15 -0
  148. package/dist/server/storage/repositories/session-isolated-workspace-repository.js +230 -0
  149. package/dist/server/storage/repositories/session-isolated-workspace-repository.js.map +1 -0
  150. package/dist/server/storage/sqlite/schema.sql +73 -0
  151. package/dist/server/types/domain.d.ts +72 -0
  152. package/dist/server/ws/workbench-ws-hub.d.ts +3 -1
  153. package/dist/server/ws/workbench-ws-hub.js +189 -20
  154. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  155. package/dist/server/ws/ws-server.js +141 -8
  156. package/dist/server/ws/ws-server.js.map +1 -1
  157. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -0
  158. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +67 -6
  159. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  160. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +3 -0
  161. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +46 -22
  162. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  163. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +558 -309
  164. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  165. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +29 -5
  166. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  167. package/package.json +1 -1
  168. package/dist/public/assets/App-DUAg5urj.css +0 -1
  169. package/dist/public/assets/App-WOLwMld_.js +0 -30
  170. package/dist/public/assets/ConversationPage-D9pzRmOg.js +0 -2
  171. package/dist/public/assets/DesktopWindowPage-D8FpOSLE.js +0 -2
  172. package/dist/public/assets/FileContextPanel-C8T7oqRN.js +0 -1
  173. package/dist/public/assets/GitSidebar-Bze7DNnc.js +0 -6
  174. package/dist/public/assets/MobileSheet-Gzc14EpR.js +0 -1
  175. package/dist/public/assets/MobileWorkspaceSwitcherHeader-DOr4pTUq.js +0 -1
  176. package/dist/public/assets/ServerSettingsModal-BYB0GvTl.js +0 -1
  177. package/dist/public/assets/SessionIndexPage-CR3IARXX.js +0 -1
  178. package/dist/public/assets/SettingsPage-B_BQtnwE.js +0 -1
  179. package/dist/public/assets/TerminalManagerPanel-PQ-EM64j.js +0 -1
  180. package/dist/public/assets/ToolFilesPage-Qzkc6K2I.js +0 -1
  181. package/dist/public/assets/ToolGitPage-BdNDN-cV.js +0 -1
  182. package/dist/public/assets/ToolProcessesPage-EXJ9DHWI.js +0 -1
  183. package/dist/public/assets/ToolsHomePage-CjF3CWzR.js +0 -1
  184. package/dist/public/assets/WorkbenchLandingPage-DZPk4SmX.js +0 -1
  185. package/dist/public/assets/WorkbenchLayout-rwQib5In.js +0 -3
  186. package/dist/public/assets/WorkbenchShellRoute-Cerk5uK7.js +0 -1
  187. package/dist/public/assets/WorkspaceDebugDetailPage-Bcq8s-Ma.js +0 -1
  188. package/dist/public/assets/WorkspaceDetailPage-DNAa8pKr.js +0 -1
  189. package/dist/public/assets/WorkspaceHomePage-BoiLuACV.js +0 -1
  190. package/dist/public/assets/client-runtime-manager-CRQ-F5d2.js +0 -1
  191. package/dist/public/assets/file-tree-icon-Dp_xhVfD.js +0 -31
  192. package/dist/public/assets/index-C2G8Gmf1.js +0 -42
  193. package/dist/public/assets/index-CpPTUeA3.css +0 -1
  194. package/dist/public/assets/session-runtime-machine-Dq3pW-UF.js +0 -17
  195. package/dist/public/assets/window-BWqRixxq.js +0 -1
  196. /package/dist/public/assets/{styles-CSUx5LGe.js → styles-DRVvx_kv.js} +0 -0
@@ -3,11 +3,24 @@ import { decryptSecret } from "../../shared/utils/secret-box.js";
3
3
  import { nowIso } from "../../shared/utils/time.js";
4
4
  import { acceptRelayTunnelClientHandshake, decryptRelayTunnelFrame, encryptRelayTunnelFrame } from "./crypto/relay-tunnel-protocol.js";
5
5
  import { deserializeRelayTunnelPacket, serializeRelayTunnelPacket } from "./crypto/relay-tunnel-packets.js";
6
+ import { buildHostCandidateEndpoints } from "./relay-tunnel-candidate-endpoints.js";
6
7
  import { createRelayTunnelHostClaimProof } from "./relay-tunnel-edge-proof.js";
7
8
  import { RelayTunnelGatewayService } from "./relay-tunnel-gateway-service.js";
9
+ export class RelayTunnelRuntimeHttpError extends Error {
10
+ statusCode;
11
+ errorCode;
12
+ detail;
13
+ constructor(statusCode, errorCode, detail, prefix) {
14
+ super(`${prefix}:${detail}`);
15
+ this.statusCode = statusCode;
16
+ this.errorCode = errorCode;
17
+ this.detail = detail;
18
+ this.name = "RelayTunnelRuntimeHttpError";
19
+ }
20
+ }
8
21
  const IDLE_POLL_MS = 1_000;
9
22
  const ERROR_RETRY_MS = 2_000;
10
- const CLAIM_TIMEOUT_MS = 8_000;
23
+ const CHALLENGE_TIMEOUT_MS = 8_000;
11
24
  const HEARTBEAT_INTERVAL_MS = 5_000;
12
25
  const HEARTBEAT_TIMEOUT_MS = 5_000;
13
26
  export class RelayTunnelRuntimeEdgeAdapter {
@@ -17,6 +30,7 @@ export class RelayTunnelRuntimeEdgeAdapter {
17
30
  currentConfigKey = null;
18
31
  runtimeAbortController = null;
19
32
  runtimePromise = null;
33
+ hostChannelSocket = null;
20
34
  activeSessions = new Map();
21
35
  lastPhase = "connecting";
22
36
  latestRemainingBytes = null;
@@ -29,7 +43,7 @@ export class RelayTunnelRuntimeEdgeAdapter {
29
43
  async connect(config, signal) {
30
44
  const identity = this.identityRepository.findIdentity();
31
45
  if (!identity) {
32
- throw new Error("当前 Host 还没有可用的公共隧道身份密钥");
46
+ throw new Error("当前 Host 还没有可用的 CodingNS Connect 身份密钥");
33
47
  }
34
48
  const configKey = serializeConfigKey(config);
35
49
  if (this.currentConfigKey !== configKey) {
@@ -54,17 +68,14 @@ export class RelayTunnelRuntimeEdgeAdapter {
54
68
  if (controller) {
55
69
  controller.abort();
56
70
  }
57
- for (const activeSession of this.activeSessions.values()) {
58
- activeSession.closed = true;
59
- activeSession.gateway?.close();
60
- activeSession.socket.close();
61
- }
62
- this.activeSessions.clear();
71
+ this.hostChannelSocket?.close();
72
+ this.hostChannelSocket = null;
73
+ this.closeAllSessions();
63
74
  try {
64
75
  await this.runtimePromise;
65
76
  }
66
77
  catch {
67
- // 这里是停机路径,错误已经在状态里体现,不再向上抛。
78
+ // 停机路径不再额外抛错。
68
79
  }
69
80
  this.runtimePromise = null;
70
81
  }
@@ -72,21 +83,7 @@ export class RelayTunnelRuntimeEdgeAdapter {
72
83
  while (!signal.aborted) {
73
84
  try {
74
85
  await this.maybeSendHeartbeat(config, identity, signal);
75
- const claim = await this.claimNextSession(config, identity, signal);
76
- const remainingBytes = claim?.remainingBytes ?? this.latestRemainingBytes;
77
- this.latestRemainingBytes = remainingBytes;
78
- if (claim) {
79
- this.lastPhase = "running";
80
- this.startRelaySession(config, identity, claim);
81
- }
82
- else if (this.lastPhase === "connecting") {
83
- this.lastPhase = "running";
84
- }
85
- const status = buildStatus(this.lastPhase, config, identity.keyFingerprint, remainingBytes);
86
- this.repository.upsertStatus(status);
87
- if (!claim) {
88
- await waitForDelay(IDLE_POLL_MS, signal);
89
- }
86
+ await this.runHostUpstreamChannel(config, identity, signal);
90
87
  }
91
88
  catch (error) {
92
89
  if (signal.aborted) {
@@ -94,16 +91,41 @@ export class RelayTunnelRuntimeEdgeAdapter {
94
91
  }
95
92
  const message = error instanceof Error ? error.message : String(error);
96
93
  const phase = this.lastPhase === "quota_exhausted" ? "quota_exhausted" : "error";
97
- const failedStatus = {
94
+ this.repository.upsertStatus({
98
95
  ...buildStatus(phase, config, identity.keyFingerprint, this.latestRemainingBytes),
99
96
  connected: false,
100
97
  lastError: message
101
- };
102
- this.repository.upsertStatus(failedStatus);
98
+ });
103
99
  await waitForDelay(ERROR_RETRY_MS, signal);
104
100
  }
105
101
  }
106
102
  }
103
+ async runHostUpstreamChannel(config, identity, signal) {
104
+ const socket = await this.openHostUpstreamChannel(config, identity, signal);
105
+ this.hostChannelSocket = socket;
106
+ this.lastPhase = "running";
107
+ this.repository.upsertStatus(buildStatus("running", config, identity.keyFingerprint, this.latestRemainingBytes));
108
+ const closed = createSocketCloseSignal(socket);
109
+ while (!signal.aborted) {
110
+ const result = await Promise.race([
111
+ closed.promise,
112
+ waitForDelay(IDLE_POLL_MS, signal).then(() => null)
113
+ ]);
114
+ if (result) {
115
+ this.hostChannelSocket = null;
116
+ this.closeAllSessions();
117
+ if (result.error) {
118
+ throw result.error;
119
+ }
120
+ throw new Error(`Host 上游信道已断开(code=${result.code}${result.reason ? `, reason=${result.reason}` : ""})`);
121
+ }
122
+ await this.maybeSendHeartbeat(config, identity, signal);
123
+ }
124
+ socket.close(1000, "relay_tunnel_runtime_abort");
125
+ await closed.promise;
126
+ this.hostChannelSocket = null;
127
+ this.closeAllSessions();
128
+ }
107
129
  async maybeSendHeartbeat(config, identity, signal) {
108
130
  const heartbeatRequest = this.buildHeartbeatRequest(config, identity);
109
131
  if (!heartbeatRequest) {
@@ -128,10 +150,10 @@ export class RelayTunnelRuntimeEdgeAdapter {
128
150
  }
129
151
  }
130
152
  catch {
131
- // 心跳只负责在线统计,不能反过来把隧道主链路打断。
153
+ // 心跳只负责在线统计,不能打断主链路。
132
154
  }
133
155
  }
134
- async claimNextSession(config, identity, signal) {
156
+ async openHostUpstreamChannel(config, identity, signal) {
135
157
  const fetchFn = this.dependencies?.fetchFn ?? fetch;
136
158
  const challengeResponse = await fetchWithTimeout(fetchFn, buildHttpUrl(config.relayBaseUrl, "/api/public/hosts/challenge"), {
137
159
  method: "POST",
@@ -144,9 +166,9 @@ export class RelayTunnelRuntimeEdgeAdapter {
144
166
  hostFingerprint: identity.keyFingerprint
145
167
  }),
146
168
  signal
147
- }, CLAIM_TIMEOUT_MS);
169
+ }, CHALLENGE_TIMEOUT_MS);
148
170
  if (!challengeResponse.ok) {
149
- throw await buildHttpError(challengeResponse, "申请 Host 领取挑战失败");
171
+ throw await buildHttpError(challengeResponse, "申请 Host 上游接入挑战失败");
150
172
  }
151
173
  const challengePayload = await challengeResponse.json();
152
174
  const proof = createRelayTunnelHostClaimProof({
@@ -158,22 +180,17 @@ export class RelayTunnelRuntimeEdgeAdapter {
158
180
  relayPublicKey: challengePayload.challenge.relayPublicKey,
159
181
  hostPrivateKeyPem: identity.privateKeyPem
160
182
  });
161
- const claimResponse = await fetchWithTimeout(fetchFn, buildHttpUrl(config.relayBaseUrl, "/api/public/hosts/claim-next-session"), {
162
- method: "POST",
163
- headers: {
164
- "Content-Type": "application/json"
165
- },
166
- body: JSON.stringify({
167
- challengeId: challengePayload.challenge.challengeId,
168
- proof
169
- }),
170
- signal
171
- }, CLAIM_TIMEOUT_MS);
172
- if (!claimResponse.ok) {
173
- throw await buildHttpError(claimResponse, "领取待接会话失败");
174
- }
175
- const claimPayload = await claimResponse.json();
176
- return claimPayload.reservation;
183
+ const socket = (this.dependencies?.createWebSocket ?? ((url) => new WebSocket(url)))(buildRelayHostWebSocketUrl(config.relayBaseUrl, config.bindingId, challengePayload.challenge.challengeId, proof));
184
+ socket.on("message", (payload, isBinary) => {
185
+ if (isBinary) {
186
+ socket.close(1008, "HOST_CHANNEL_BINARY_NOT_SUPPORTED");
187
+ return;
188
+ }
189
+ const rawPayload = typeof payload === "string" ? payload : payload.toString("utf8");
190
+ void this.handleHostChannelPayload(config, identity, rawPayload);
191
+ });
192
+ await waitForSocketOpen(socket, signal);
193
+ return socket;
177
194
  }
178
195
  buildHeartbeatRequest(config, identity) {
179
196
  const controlBaseUrl = normalizeRequiredText(config.controlBaseUrl);
@@ -198,7 +215,9 @@ export class RelayTunnelRuntimeEdgeAdapter {
198
215
  },
199
216
  body: JSON.stringify({
200
217
  tunnelDomain,
201
- hostFingerprint: identity.keyFingerprint
218
+ hostFingerprint: identity.keyFingerprint,
219
+ localTargetBaseUrl: config.localTargetBaseUrl,
220
+ candidateEndpoints: buildHostCandidateEndpoints(config)
202
221
  })
203
222
  };
204
223
  }
@@ -206,54 +225,61 @@ export class RelayTunnelRuntimeEdgeAdapter {
206
225
  return null;
207
226
  }
208
227
  }
209
- startRelaySession(config, identity, reservation) {
210
- if (this.activeSessions.has(reservation.sessionId)) {
228
+ async handleHostChannelPayload(config, identity, rawPayload) {
229
+ let envelope;
230
+ try {
231
+ envelope = JSON.parse(rawPayload);
232
+ }
233
+ catch {
234
+ this.hostChannelSocket?.close(1008, "HOST_CHANNEL_INVALID_ENVELOPE");
211
235
  return;
212
236
  }
213
- const socket = (this.dependencies?.createWebSocket ?? ((url) => new WebSocket(url)))(buildRelayWebSocketUrl(config.relayBaseUrl, reservation.sessionId));
214
- const activeSession = {
215
- relaySessionId: reservation.sessionId,
216
- socket,
217
- gateway: null,
218
- cryptoSession: null,
219
- closed: false
220
- };
221
- this.activeSessions.set(reservation.sessionId, activeSession);
222
- socket.on("message", (payload, isBinary) => {
223
- if (isBinary) {
224
- void this.emitRelayError(activeSession, "UNSUPPORTED_BINARY_FRAME", "公共隧道控制面不支持二进制帧");
237
+ if (envelope.type === "session.open") {
238
+ this.ensureRelaySession(envelope.sessionId, envelope.clientContext ?? null);
239
+ return;
240
+ }
241
+ if (envelope.type === "session.close") {
242
+ this.teardownRelaySession(envelope.sessionId);
243
+ return;
244
+ }
245
+ const activeSession = this.activeSessions.get(envelope.sessionId) ?? null;
246
+ if (!activeSession) {
247
+ this.sendSessionClose(envelope.sessionId, 1008, "SESSION_NOT_FOUND");
248
+ return;
249
+ }
250
+ activeSession.inboundQueue = activeSession.inboundQueue
251
+ .catch(() => undefined)
252
+ .then(async () => {
253
+ if (activeSession.closed) {
225
254
  return;
226
255
  }
227
- const rawPayload = typeof payload === "string" ? payload : payload.toString("utf8");
228
- void this.handleRelayPayload(activeSession, config, identity, rawPayload);
229
- });
230
- socket.on("close", (code, reason) => {
231
- this.teardownRelaySession(reservation.sessionId);
232
- if (code === 1008 && reason.toString("utf8") === "QUOTA_EXHAUSTED") {
233
- this.lastPhase = "quota_exhausted";
234
- this.latestRemainingBytes = "0";
235
- this.repository.upsertStatus({
236
- ...buildStatus("quota_exhausted", config, identity.keyFingerprint, "0"),
237
- connected: false,
238
- lastError: "公共隧道流量额度已经耗尽"
239
- });
240
- }
241
- });
242
- socket.on("error", (error) => {
243
- this.repository.upsertStatus({
244
- ...buildStatus("error", config, identity.keyFingerprint, this.latestRemainingBytes),
245
- connected: false,
246
- lastError: error.message
247
- });
256
+ await this.handleRelayPayload(activeSession, config, identity, Buffer.from(envelope.payloadBase64Url, "base64url").toString("utf8"));
248
257
  });
249
258
  }
259
+ ensureRelaySession(sessionId, clientContext = null) {
260
+ const existing = this.activeSessions.get(sessionId);
261
+ if (existing) {
262
+ existing.clientContext = clientContext;
263
+ return existing;
264
+ }
265
+ const created = {
266
+ relaySessionId: sessionId,
267
+ clientContext,
268
+ gateway: null,
269
+ cryptoSession: null,
270
+ closed: false,
271
+ inboundQueue: Promise.resolve()
272
+ };
273
+ this.activeSessions.set(sessionId, created);
274
+ return created;
275
+ }
250
276
  async handleRelayPayload(activeSession, config, identity, rawPayload) {
251
277
  let envelope;
252
278
  try {
253
279
  envelope = JSON.parse(rawPayload);
254
280
  }
255
281
  catch {
256
- await this.emitRelayError(activeSession, "INVALID_CONTROL_ENVELOPE", "公共隧道控制包不是合法 JSON");
282
+ await this.emitRelayError(activeSession, "INVALID_CONTROL_ENVELOPE", "CodingNS Connect 控制包不是合法 JSON");
257
283
  return;
258
284
  }
259
285
  if (envelope.type === "client_hello") {
@@ -269,21 +295,23 @@ export class RelayTunnelRuntimeEdgeAdapter {
269
295
  activeSession.cryptoSession = accepted.session;
270
296
  activeSession.gateway = new RelayTunnelGatewayService({
271
297
  localTargetBaseUrl: config.localTargetBaseUrl,
298
+ sessionId: activeSession.relaySessionId,
299
+ clientContext: activeSession.clientContext,
272
300
  onPacket: async (packet) => {
273
- if (!activeSession.cryptoSession || activeSession.closed || activeSession.socket.readyState !== WebSocket.OPEN) {
301
+ if (!activeSession.cryptoSession || activeSession.closed) {
274
302
  return;
275
303
  }
276
304
  const frame = encryptRelayTunnelFrame(activeSession.cryptoSession, serializeRelayTunnelPacket(packet));
277
- activeSession.socket.send(JSON.stringify({
305
+ await this.sendControlEnvelope(activeSession.relaySessionId, {
278
306
  type: "encrypted_frame",
279
307
  frame
280
- }));
308
+ });
281
309
  }
282
310
  });
283
- activeSession.socket.send(JSON.stringify({
311
+ await this.sendControlEnvelope(activeSession.relaySessionId, {
284
312
  type: "server_hello",
285
313
  hello: accepted.serverHello
286
- }));
314
+ });
287
315
  }
288
316
  catch (error) {
289
317
  await this.emitRelayError(activeSession, "HANDSHAKE_FAILED", error instanceof Error ? error.message : String(error));
@@ -297,6 +325,9 @@ export class RelayTunnelRuntimeEdgeAdapter {
297
325
  }
298
326
  try {
299
327
  const plaintext = decryptRelayTunnelFrame(activeSession.cryptoSession, envelope.frame);
328
+ if (!plaintext) {
329
+ return;
330
+ }
300
331
  await activeSession.gateway.handlePacket(deserializeRelayTunnelPacket(plaintext));
301
332
  }
302
333
  catch (error) {
@@ -312,15 +343,33 @@ export class RelayTunnelRuntimeEdgeAdapter {
312
343
  });
313
344
  }
314
345
  }
315
- async emitRelayError(activeSession, errorCode, detail) {
316
- if (activeSession.closed || activeSession.socket.readyState !== WebSocket.OPEN) {
346
+ async sendControlEnvelope(sessionId, envelope) {
347
+ if (!this.hostChannelSocket || this.hostChannelSocket.readyState !== WebSocket.OPEN) {
348
+ return;
349
+ }
350
+ this.hostChannelSocket.send(JSON.stringify({
351
+ type: "session.frame",
352
+ sessionId,
353
+ payloadBase64Url: Buffer.from(JSON.stringify(envelope), "utf8").toString("base64url")
354
+ }));
355
+ }
356
+ sendSessionClose(sessionId, code, reason) {
357
+ if (!this.hostChannelSocket || this.hostChannelSocket.readyState !== WebSocket.OPEN) {
317
358
  return;
318
359
  }
319
- activeSession.socket.send(JSON.stringify({
360
+ this.hostChannelSocket.send(JSON.stringify({
361
+ type: "session.close",
362
+ sessionId,
363
+ code,
364
+ reason
365
+ }));
366
+ }
367
+ async emitRelayError(activeSession, errorCode, detail) {
368
+ await this.sendControlEnvelope(activeSession.relaySessionId, {
320
369
  type: "error",
321
370
  errorCode,
322
371
  detail
323
- }));
372
+ });
324
373
  }
325
374
  teardownRelaySession(sessionId) {
326
375
  const activeSession = this.activeSessions.get(sessionId);
@@ -331,6 +380,11 @@ export class RelayTunnelRuntimeEdgeAdapter {
331
380
  activeSession.gateway?.close();
332
381
  this.activeSessions.delete(sessionId);
333
382
  }
383
+ closeAllSessions() {
384
+ for (const sessionId of this.activeSessions.keys()) {
385
+ this.teardownRelaySession(sessionId);
386
+ }
387
+ }
334
388
  }
335
389
  function buildStatus(phase, config, hostFingerprint, remainingBytes) {
336
390
  return {
@@ -361,10 +415,12 @@ function buildHttpUrl(baseUrl, pathname) {
361
415
  url.protocol = url.protocol === "wss:" || url.protocol === "https:" ? "https:" : "http:";
362
416
  return url.toString();
363
417
  }
364
- function buildRelayWebSocketUrl(relayBaseUrl, sessionId) {
418
+ function buildRelayHostWebSocketUrl(relayBaseUrl, bindingId, challengeId, proof) {
365
419
  const url = resolveRelayBaseUrl(relayBaseUrl, "ws");
366
- url.searchParams.set("sessionId", sessionId);
367
- url.searchParams.set("role", "upstream");
420
+ url.searchParams.set("role", "host-upstream");
421
+ url.searchParams.set("bindingId", bindingId);
422
+ url.searchParams.set("challengeId", challengeId);
423
+ url.searchParams.set("proof", proof);
368
424
  url.protocol = url.protocol === "https:" || url.protocol === "wss:" ? "wss:" : "ws:";
369
425
  return url.toString();
370
426
  }
@@ -379,6 +435,68 @@ function ensureTrailingSlash(value) {
379
435
  function resolveRelayBaseUrl(baseUrl, pathname) {
380
436
  return new URL(pathname.replace(/^\/+/, ""), ensureTrailingSlash(baseUrl));
381
437
  }
438
+ async function waitForSocketOpen(socket, signal) {
439
+ if (socket.readyState === WebSocket.OPEN) {
440
+ return;
441
+ }
442
+ await new Promise((resolve, reject) => {
443
+ const handleOpen = () => {
444
+ cleanup();
445
+ resolve();
446
+ };
447
+ const handleClose = (code, reason) => {
448
+ cleanup();
449
+ reject(new Error(`Host 上游信道建立失败(code=${code}${reason.length > 0 ? `, reason=${reason.toString("utf8")}` : ""})`));
450
+ };
451
+ const handleError = (error) => {
452
+ cleanup();
453
+ reject(error);
454
+ };
455
+ const handleAbort = () => {
456
+ cleanup();
457
+ reject(new Error("操作已取消"));
458
+ };
459
+ const cleanup = () => {
460
+ socket.off("open", handleOpen);
461
+ socket.off("close", handleClose);
462
+ socket.off("error", handleError);
463
+ signal.removeEventListener("abort", handleAbort);
464
+ };
465
+ socket.on("open", handleOpen);
466
+ socket.on("close", handleClose);
467
+ socket.on("error", handleError);
468
+ signal.addEventListener("abort", handleAbort, {
469
+ once: true
470
+ });
471
+ });
472
+ }
473
+ function createSocketCloseSignal(socket) {
474
+ return {
475
+ promise: new Promise((resolve) => {
476
+ let settled = false;
477
+ const finish = (value) => {
478
+ if (settled) {
479
+ return;
480
+ }
481
+ settled = true;
482
+ resolve(value);
483
+ };
484
+ socket.once("close", (code, reason) => {
485
+ finish({
486
+ code,
487
+ reason: reason.length > 0 ? reason.toString("utf8") : ""
488
+ });
489
+ });
490
+ socket.once("error", (error) => {
491
+ finish({
492
+ code: 1006,
493
+ reason: error.message,
494
+ error
495
+ });
496
+ });
497
+ })
498
+ };
499
+ }
382
500
  async function fetchWithTimeout(fetchFn, input, init, timeoutMs) {
383
501
  const controller = new AbortController();
384
502
  const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
@@ -400,18 +518,18 @@ async function fetchWithTimeout(fetchFn, input, init, timeoutMs) {
400
518
  async function buildHttpError(response, prefix) {
401
519
  const raw = await response.text();
402
520
  if (!raw.trim()) {
403
- return new Error(`${prefix}(HTTP ${response.status})`);
521
+ return new RelayTunnelRuntimeHttpError(response.status, null, `HTTP ${response.status}`, prefix);
404
522
  }
405
523
  try {
406
524
  const parsed = JSON.parse(raw);
407
- if (parsed.detail) {
408
- return new Error(`${prefix}:${parsed.detail}`);
525
+ if (typeof parsed.detail === "string" && parsed.detail.trim()) {
526
+ return new RelayTunnelRuntimeHttpError(response.status, typeof parsed.errorCode === "string" ? parsed.errorCode : null, parsed.detail.trim(), prefix);
409
527
  }
410
528
  }
411
529
  catch {
412
- // 这里退回可读文本错误。
530
+ // 回退到可读文本错误。
413
531
  }
414
- return new Error(`${prefix}:${raw.trim()}`);
532
+ return new RelayTunnelRuntimeHttpError(response.status, null, raw.trim(), prefix);
415
533
  }
416
534
  async function waitForDelay(delayMs, signal) {
417
535
  if (signal.aborted) {
@@ -433,7 +551,7 @@ async function waitForDelay(delayMs, signal) {
433
551
  }
434
552
  export const __internal__ = {
435
553
  buildHttpUrl,
436
- buildRelayWebSocketUrl,
554
+ buildRelayHostWebSocketUrl,
437
555
  buildControlHttpUrl
438
556
  };
439
557
  function normalizeRequiredText(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"relay-tunnel-runtime-adapter.js","sourceRoot":"","sources":["../../../../src/modules/relay-tunnel/relay-tunnel-runtime-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-tunnel-runtime-adapter.js","sourceRoot":"","sources":["../../../../src/modules/relay-tunnel/relay-tunnel-runtime-adapter.ts"],"names":[],"mappings":"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"}
@@ -74,6 +74,7 @@ export declare class RelayTunnelService {
74
74
  private readonly defaultLocalTargetBaseUrl;
75
75
  private readonly legacyLocalTargetBaseUrl;
76
76
  private readonly controlSessionSecret;
77
+ private readonly controlRequestTimeoutMs;
77
78
  private readonly fetchFn;
78
79
  private readonly taskManager;
79
80
  private readonly runtimeAdapter;
@@ -82,6 +83,7 @@ export declare class RelayTunnelService {
82
83
  defaultLocalTargetBaseUrl: string;
83
84
  legacyLocalTargetBaseUrl?: string | null;
84
85
  controlSessionSecret: string;
86
+ controlRequestTimeoutMs?: number;
85
87
  fetchFn?: typeof fetch;
86
88
  }, taskManager?: TaskManager, runtimeAdapter?: RelayTunnelRuntimeAdapter);
87
89
  restoreOnStartup(): Promise<void>;
@@ -99,13 +101,14 @@ export declare class RelayTunnelService {
99
101
  disable(): Promise<InstanceRelayTunnelStatusDto>;
100
102
  requestReconnect(source?: string): TaskHandle<InstanceRelayTunnelStatusDto>;
101
103
  private readStateSnapshot;
102
- private reconcileLegacyLocalTargetBaseUrl;
104
+ private reconcilePersistedConfig;
103
105
  private resolveEffectiveStatus;
104
106
  private registerBackgroundTasks;
105
107
  private runConnectTask;
106
108
  private buildStatusDto;
107
109
  private resolveConfigWithIdentity;
108
110
  private syncIdentityIntoConfig;
111
+ private clearBoundState;
109
112
  private isBootstrapInitialized;
110
113
  private requireControlSession;
111
114
  private requestControlApi;