@jingyi0605/codingns 0.4.0 → 0.5.1

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 (282) hide show
  1. package/bin/codingns.mjs +425 -1
  2. package/dist/public/assets/AdaptiveButlerPage-B153lk5H.css +1 -0
  3. package/dist/public/assets/AdaptiveButlerPage-SffCV4Vb.js +3 -0
  4. package/dist/public/assets/App-DUAg5urj.css +1 -0
  5. package/dist/public/assets/App-WOLwMld_.js +30 -0
  6. package/dist/public/assets/BootstrapPage--zExdgfM.js +1 -0
  7. package/dist/public/assets/ConversationPage-D9pzRmOg.js +2 -0
  8. package/dist/public/assets/DesktopDetachPreviewPage-DvI9CIKi.js +1 -0
  9. package/dist/public/assets/DesktopWindowPage-D8FpOSLE.js +2 -0
  10. package/dist/public/assets/FileContextPanel-C8T7oqRN.js +1 -0
  11. package/dist/public/assets/GitSidebar-Bze7DNnc.js +6 -0
  12. package/dist/public/assets/MobileCreateSessionSheet-CXSKMnYn.js +1 -0
  13. package/dist/public/assets/MobileSheet-Gzc14EpR.js +1 -0
  14. package/dist/public/assets/MobileTopHeaderFrame-BWorAJ1C.js +1 -0
  15. package/dist/public/assets/MobileWorkspaceSwitcherHeader-DOr4pTUq.js +1 -0
  16. package/dist/public/assets/ServerSettingsModal-BYB0GvTl.js +1 -0
  17. package/dist/public/assets/SessionIndexPage-CR3IARXX.js +1 -0
  18. package/dist/public/assets/SettingsPage-B_BQtnwE.js +1 -0
  19. package/dist/public/assets/TerminalManagerPanel-PQ-EM64j.js +1 -0
  20. package/dist/public/assets/{TerminalPage-6jHZV9Mh.js → TerminalPage-CvnHXBhw.js} +19 -19
  21. package/dist/public/assets/TerminalRuntimeFallbackModal-D7Aq186N.js +1 -0
  22. package/dist/public/assets/ToolFilesPage-Qzkc6K2I.js +1 -0
  23. package/dist/public/assets/ToolGitPage-BdNDN-cV.js +1 -0
  24. package/dist/public/assets/ToolProcessesPage-EXJ9DHWI.js +1 -0
  25. package/dist/public/assets/ToolsHomePage-CjF3CWzR.js +1 -0
  26. package/dist/public/assets/WorkbenchLandingPage-DZPk4SmX.js +1 -0
  27. package/dist/public/assets/WorkbenchLayout-rwQib5In.js +3 -0
  28. package/dist/public/assets/WorkbenchModal-B09hC9b5.js +1 -0
  29. package/dist/public/assets/WorkbenchShellRoute-Cerk5uK7.js +1 -0
  30. package/dist/public/assets/WorkbenchShellRoute-DsW4mBTX.css +1 -0
  31. package/dist/public/assets/WorkspaceDebugDetailPage-Bcq8s-Ma.js +1 -0
  32. package/dist/public/assets/WorkspaceDetailPage-DNAa8pKr.js +1 -0
  33. package/dist/public/assets/WorkspaceHomePage-BoiLuACV.js +1 -0
  34. package/dist/public/assets/butler-records-events-DgWCG364.js +1 -0
  35. package/dist/public/assets/client-runtime-manager-CRQ-F5d2.js +1 -0
  36. package/dist/public/assets/default-session-permission-mode-D0wZ9Jek.js +1 -0
  37. package/dist/public/assets/event-DvH9tcej.js +1 -0
  38. package/dist/public/assets/file-tree-icon-Dp_xhVfD.js +31 -0
  39. package/dist/public/assets/index-C2G8Gmf1.js +42 -0
  40. package/dist/public/assets/index-CpPTUeA3.css +1 -0
  41. package/dist/public/assets/preferences-service-gOt2ZjKZ.js +1 -0
  42. package/dist/public/assets/session-runtime-machine-Dq3pW-UF.js +17 -0
  43. package/dist/public/assets/styles-BWPBZvze.css +1 -0
  44. package/dist/public/assets/styles-CSUx5LGe.js +1 -0
  45. package/dist/public/assets/terminal-runtime-meta-BMT-rSEe.js +1 -0
  46. package/dist/public/assets/useRegisteredDebugTemplates-zMcEOGca.js +1 -0
  47. package/dist/public/assets/window-BWqRixxq.js +1 -0
  48. package/dist/public/index.html +2 -2
  49. package/dist/server/middlewares/auth-guard.d.ts +4 -0
  50. package/dist/server/middlewares/auth-guard.js +42 -4
  51. package/dist/server/middlewares/auth-guard.js.map +1 -1
  52. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +62 -1
  53. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +58 -0
  54. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  55. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +66 -3
  56. package/dist/server/modules/assistant-capability/assistant-capability-service.js +173 -1
  57. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  58. package/dist/server/modules/auth/auth-controller.d.ts +11 -1
  59. package/dist/server/modules/auth/auth-controller.js +61 -2
  60. package/dist/server/modules/auth/auth-controller.js.map +1 -1
  61. package/dist/server/modules/auth/auth-device-display-name.d.ts +10 -0
  62. package/dist/server/modules/auth/auth-device-display-name.js +190 -0
  63. package/dist/server/modules/auth/auth-device-display-name.js.map +1 -0
  64. package/dist/server/modules/auth/auth-service.d.ts +80 -5
  65. package/dist/server/modules/auth/auth-service.js +333 -23
  66. package/dist/server/modules/auth/auth-service.js.map +1 -1
  67. package/dist/server/modules/butler/assistant-automation-service.d.ts +2 -0
  68. package/dist/server/modules/butler/assistant-automation-service.js +46 -0
  69. package/dist/server/modules/butler/assistant-automation-service.js.map +1 -1
  70. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +32 -0
  71. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +93 -0
  72. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +1 -0
  73. package/dist/server/modules/butler/assistant-sandbox-service.d.ts +16 -2
  74. package/dist/server/modules/butler/assistant-sandbox-service.js +137 -4
  75. package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -1
  76. package/dist/server/modules/butler/butler-auth-service.js +7 -2
  77. package/dist/server/modules/butler/butler-auth-service.js.map +1 -1
  78. package/dist/server/modules/butler/butler-control-session-service.d.ts +4 -1
  79. package/dist/server/modules/butler/butler-control-session-service.js +20 -1
  80. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  81. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.d.ts +2 -1
  82. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js +27 -25
  83. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js.map +1 -1
  84. package/dist/server/modules/butler/butler-follow-up-service.d.ts +32 -4
  85. package/dist/server/modules/butler/butler-follow-up-service.js +436 -331
  86. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  87. package/dist/server/modules/butler/butler-inbox-analysis-service.d.ts +1 -1
  88. package/dist/server/modules/butler/butler-inbox-analysis-service.js.map +1 -1
  89. package/dist/server/modules/butler/butler-inbox-service.js +1 -0
  90. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
  91. package/dist/server/modules/butler/butler-session-service.d.ts +3 -1
  92. package/dist/server/modules/butler/butler-session-service.js +15 -1
  93. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  94. package/dist/server/modules/butler/butler-workspace-context.d.ts +1 -1
  95. package/dist/server/modules/butler/butler-workspace-context.js +54 -28
  96. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
  97. package/dist/server/modules/client/client-controller.js +1 -1
  98. package/dist/server/modules/client/client-controller.js.map +1 -1
  99. package/dist/server/modules/client/client-service.d.ts +16 -2
  100. package/dist/server/modules/client/client-service.js +21 -3
  101. package/dist/server/modules/client/client-service.js.map +1 -1
  102. package/dist/server/modules/provider/provider-controller.d.ts +1 -1
  103. package/dist/server/modules/provider/provider-controller.js.map +1 -1
  104. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-identity-service.d.ts +10 -0
  105. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-identity-service.js +48 -0
  106. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-identity-service.js.map +1 -0
  107. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.d.ts +48 -0
  108. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js +11 -0
  109. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js.map +1 -0
  110. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.d.ts +74 -0
  111. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js +302 -0
  112. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js.map +1 -0
  113. package/dist/server/modules/relay-tunnel/relay-tunnel-controller.d.ts +33 -0
  114. package/dist/server/modules/relay-tunnel/relay-tunnel-controller.js +57 -0
  115. package/dist/server/modules/relay-tunnel/relay-tunnel-controller.js.map +1 -0
  116. package/dist/server/modules/relay-tunnel/relay-tunnel-edge-proof.d.ts +9 -0
  117. package/dist/server/modules/relay-tunnel/relay-tunnel-edge-proof.js +25 -0
  118. package/dist/server/modules/relay-tunnel/relay-tunnel-edge-proof.js.map +1 -0
  119. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.d.ts +18 -0
  120. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +230 -0
  121. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -0
  122. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.d.ts +41 -0
  123. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js +443 -0
  124. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js.map +1 -0
  125. package/dist/server/modules/relay-tunnel/relay-tunnel-service.d.ts +112 -0
  126. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +966 -0
  127. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -0
  128. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +2 -1
  129. package/dist/server/modules/sessions/codex-app-server-helper-client.js +78 -0
  130. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  131. package/dist/server/modules/sessions/codex-app-server-helper-process.js +84 -2
  132. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  133. package/dist/server/modules/sessions/provider-session-delete-cli.d.ts +15 -0
  134. package/dist/server/modules/sessions/provider-session-delete-cli.js +148 -0
  135. package/dist/server/modules/sessions/provider-session-delete-cli.js.map +1 -0
  136. package/dist/server/modules/sessions/session-controller.d.ts +4 -1
  137. package/dist/server/modules/sessions/session-controller.js +4 -0
  138. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  139. package/dist/server/modules/sessions/session-history-service.d.ts +17 -0
  140. package/dist/server/modules/sessions/session-history-service.js +150 -1
  141. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  142. package/dist/server/modules/sessions/session-live-runtime-router-service.d.ts +25 -0
  143. package/dist/server/modules/sessions/session-live-runtime-router-service.js +42 -0
  144. package/dist/server/modules/sessions/session-live-runtime-router-service.js.map +1 -0
  145. package/dist/server/modules/sessions/session-live-runtime-service.js +34 -18
  146. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  147. package/dist/server/modules/sessions/session-message-attachment-service.d.ts +1 -0
  148. package/dist/server/modules/sessions/session-message-attachment-service.js +22 -0
  149. package/dist/server/modules/sessions/session-message-attachment-service.js.map +1 -1
  150. package/dist/server/modules/sessions/session-permission-request-service.d.ts +1 -0
  151. package/dist/server/modules/sessions/session-permission-request-service.js +200 -5
  152. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  153. package/dist/server/modules/sessions/session-provider-error-mapper.js +32 -0
  154. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  155. package/dist/server/modules/sessions/session-provider-usage-guard-service.d.ts +37 -0
  156. package/dist/server/modules/sessions/session-provider-usage-guard-service.js +179 -0
  157. package/dist/server/modules/sessions/session-provider-usage-guard-service.js.map +1 -0
  158. package/dist/server/modules/sessions/session-provider-usage-limit.d.ts +17 -0
  159. package/dist/server/modules/sessions/session-provider-usage-limit.js +465 -0
  160. package/dist/server/modules/sessions/session-provider-usage-limit.js.map +1 -0
  161. package/dist/server/modules/skills/assistant-runtime-skill-catalog.d.ts +8 -0
  162. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js +26 -0
  163. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js.map +1 -0
  164. package/dist/server/modules/skills/assistant-runtime-skill-cleanup.d.ts +9 -0
  165. package/dist/server/modules/skills/assistant-runtime-skill-cleanup.js +55 -0
  166. package/dist/server/modules/skills/assistant-runtime-skill-cleanup.js.map +1 -0
  167. package/dist/server/modules/skills/builtin-skill-service.js +1 -6
  168. package/dist/server/modules/skills/builtin-skill-service.js.map +1 -1
  169. package/dist/server/modules/skills/skill-controller.d.ts +2 -2
  170. package/dist/server/modules/skills/skill-controller.js +9 -1
  171. package/dist/server/modules/skills/skill-controller.js.map +1 -1
  172. package/dist/server/modules/skills/skill-manager-service.d.ts +26 -1
  173. package/dist/server/modules/skills/skill-manager-service.js +346 -90
  174. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  175. package/dist/server/modules/skills/skill-name-policy.d.ts +2 -0
  176. package/dist/server/modules/skills/skill-name-policy.js +10 -0
  177. package/dist/server/modules/skills/skill-name-policy.js.map +1 -0
  178. package/dist/server/modules/tailscale/tailscale-service.d.ts +2 -0
  179. package/dist/server/modules/tailscale/tailscale-service.js +21 -8
  180. package/dist/server/modules/tailscale/tailscale-service.js.map +1 -1
  181. package/dist/server/modules/tasks/task-types.d.ts +3 -0
  182. package/dist/server/modules/tasks/task-types.js +3 -0
  183. package/dist/server/modules/tasks/task-types.js.map +1 -1
  184. package/dist/server/modules/terminal/template-reverse-proxy-service.js +71 -3
  185. package/dist/server/modules/terminal/template-reverse-proxy-service.js.map +1 -1
  186. package/dist/server/modules/workbench/snapshot-revision.d.ts +4 -0
  187. package/dist/server/modules/workbench/snapshot-revision.js +13 -0
  188. package/dist/server/modules/workbench/snapshot-revision.js.map +1 -0
  189. package/dist/server/modules/workbench/workbench-service.d.ts +1 -0
  190. package/dist/server/modules/workbench/workbench-service.js +3 -2
  191. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  192. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +6 -1
  193. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +10 -8
  194. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  195. package/dist/server/routes/assistant.js +30 -0
  196. package/dist/server/routes/assistant.js.map +1 -1
  197. package/dist/server/routes/auth.js +4 -0
  198. package/dist/server/routes/auth.js.map +1 -1
  199. package/dist/server/routes/sessions.js +1 -0
  200. package/dist/server/routes/sessions.js.map +1 -1
  201. package/dist/server/routes/system.d.ts +2 -1
  202. package/dist/server/routes/system.js +13 -1
  203. package/dist/server/routes/system.js.map +1 -1
  204. package/dist/server/server/create-server.d.ts +10 -0
  205. package/dist/server/server/create-server.js +83 -13
  206. package/dist/server/server/create-server.js.map +1 -1
  207. package/dist/server/shared/utils/tokens.d.ts +3 -1
  208. package/dist/server/shared/utils/tokens.js +9 -2
  209. package/dist/server/shared/utils/tokens.js.map +1 -1
  210. package/dist/server/storage/repositories/assistant-automation-task-repository.d.ts +2 -0
  211. package/dist/server/storage/repositories/assistant-automation-task-repository.js +8 -2
  212. package/dist/server/storage/repositories/assistant-automation-task-repository.js.map +1 -1
  213. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +1 -0
  214. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +27 -0
  215. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -1
  216. package/dist/server/storage/repositories/auth-device-repository.d.ts +22 -0
  217. package/dist/server/storage/repositories/auth-device-repository.js +97 -0
  218. package/dist/server/storage/repositories/auth-device-repository.js.map +1 -0
  219. package/dist/server/storage/repositories/auth-device-session-repository.d.ts +17 -0
  220. package/dist/server/storage/repositories/auth-device-session-repository.js +82 -0
  221. package/dist/server/storage/repositories/auth-device-session-repository.js.map +1 -0
  222. package/dist/server/storage/repositories/auth-login-event-repository.d.ts +9 -0
  223. package/dist/server/storage/repositories/auth-login-event-repository.js +53 -0
  224. package/dist/server/storage/repositories/auth-login-event-repository.js.map +1 -0
  225. package/dist/server/storage/repositories/auth-token-repository.d.ts +4 -0
  226. package/dist/server/storage/repositories/auth-token-repository.js +58 -5
  227. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  228. package/dist/server/storage/repositories/butler-follow-up-task-repository.js +21 -3
  229. package/dist/server/storage/repositories/butler-follow-up-task-repository.js.map +1 -1
  230. package/dist/server/storage/repositories/instance-relay-tunnel-identity-repository.d.ts +8 -0
  231. package/dist/server/storage/repositories/instance-relay-tunnel-identity-repository.js +52 -0
  232. package/dist/server/storage/repositories/instance-relay-tunnel-identity-repository.js.map +1 -0
  233. package/dist/server/storage/repositories/instance-relay-tunnel-repository.d.ts +10 -0
  234. package/dist/server/storage/repositories/instance-relay-tunnel-repository.js +153 -0
  235. package/dist/server/storage/repositories/instance-relay-tunnel-repository.js.map +1 -0
  236. package/dist/server/storage/repositories/instance-tailscale-repository.js +6 -3
  237. package/dist/server/storage/repositories/instance-tailscale-repository.js.map +1 -1
  238. package/dist/server/storage/repositories/managed-skill-repository.d.ts +2 -1
  239. package/dist/server/storage/repositories/managed-skill-repository.js +14 -4
  240. package/dist/server/storage/repositories/managed-skill-repository.js.map +1 -1
  241. package/dist/server/storage/repositories/session-message-attachment-repository.d.ts +2 -0
  242. package/dist/server/storage/repositories/session-message-attachment-repository.js +24 -0
  243. package/dist/server/storage/repositories/session-message-attachment-repository.js.map +1 -1
  244. package/dist/server/storage/sqlite/client.js +297 -2
  245. package/dist/server/storage/sqlite/client.js.map +1 -1
  246. package/dist/server/storage/sqlite/schema.sql +122 -4
  247. package/dist/server/types/domain.d.ts +91 -1
  248. package/dist/server/ws/workbench-ws-hub.js +225 -99
  249. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  250. package/dist/server/ws/ws-auth-guard.js +1 -4
  251. package/dist/server/ws/ws-auth-guard.js.map +1 -1
  252. package/dist/server/ws/ws-server.d.ts +1 -1
  253. package/dist/server/ws/ws-server.js.map +1 -1
  254. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.d.ts +1 -0
  255. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js +80 -0
  256. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js.map +1 -0
  257. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +1 -0
  258. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +11 -1
  259. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  260. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +11 -0
  261. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +132 -21
  262. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  263. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +2 -0
  264. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +53 -1
  265. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -1
  266. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +1 -0
  267. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +10 -1
  268. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -1
  269. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +1 -0
  270. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +30 -0
  271. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  272. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +5 -1
  273. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +145 -58
  274. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  275. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +1 -0
  276. package/node_modules/@codingns/session-sync-core/dist/services.js +7 -0
  277. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  278. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +2 -0
  279. package/package.json +1 -1
  280. package/scripts/postinstall.mjs +0 -33
  281. package/dist/public/assets/index-CSVhg7I8.js +0 -123
  282. package/dist/public/assets/index-Ce1VX19m.css +0 -1
@@ -0,0 +1,230 @@
1
+ import WebSocket from "ws";
2
+ const HOP_BY_HOP_HEADERS = new Set([
3
+ "connection",
4
+ "keep-alive",
5
+ "proxy-authenticate",
6
+ "proxy-authorization",
7
+ "te",
8
+ "trailer",
9
+ "transfer-encoding",
10
+ "upgrade",
11
+ "host",
12
+ "content-length"
13
+ ]);
14
+ const WS_PROTOCOL_HEADER = "sec-websocket-protocol";
15
+ export class RelayTunnelGatewayService {
16
+ localHttpBaseUrl;
17
+ localWsBaseUrl;
18
+ wsSockets = new Map();
19
+ constructor(options) {
20
+ this.localHttpBaseUrl = new URL(options.localTargetBaseUrl);
21
+ this.localWsBaseUrl = new URL(options.localTargetBaseUrl);
22
+ this.localWsBaseUrl.protocol = this.localWsBaseUrl.protocol === "https:" ? "wss:" : "ws:";
23
+ this.onPacket = options.onPacket;
24
+ }
25
+ onPacket;
26
+ async handlePacket(packet) {
27
+ switch (packet.type) {
28
+ case "http.request":
29
+ await this.handleHttpRequest(packet);
30
+ return;
31
+ case "ws.open":
32
+ this.handleWsOpen(packet);
33
+ return;
34
+ case "ws.message":
35
+ await this.handleWsMessage(packet);
36
+ return;
37
+ case "ws.closed":
38
+ this.handleWsClosed(packet);
39
+ return;
40
+ default:
41
+ await this.emitError({
42
+ type: "error",
43
+ streamId: "streamId" in packet ? packet.streamId : null,
44
+ errorCode: "UNSUPPORTED_PACKET",
45
+ detail: `Host 网关不支持处理 ${packet.type} 包`
46
+ });
47
+ }
48
+ }
49
+ close() {
50
+ for (const socket of this.wsSockets.values()) {
51
+ socket.close();
52
+ }
53
+ this.wsSockets.clear();
54
+ }
55
+ async handleHttpRequest(packet) {
56
+ const requestUrl = new URL(packet.path, this.localHttpBaseUrl);
57
+ const headers = new Headers();
58
+ for (const [headerName, headerValue] of Object.entries(packet.headers)) {
59
+ if (!headerName || HOP_BY_HOP_HEADERS.has(headerName.toLowerCase())) {
60
+ continue;
61
+ }
62
+ headers.set(headerName, headerValue);
63
+ }
64
+ try {
65
+ const response = await fetch(requestUrl, {
66
+ method: packet.method,
67
+ headers,
68
+ body: packet.bodyBase64Url ? Buffer.from(packet.bodyBase64Url, "base64url") : undefined
69
+ });
70
+ const responseBody = Buffer.from(await response.arrayBuffer());
71
+ const responsePacket = {
72
+ type: "http.response",
73
+ streamId: packet.streamId,
74
+ status: response.status,
75
+ headers: flattenResponseHeaders(response.headers),
76
+ bodyBase64Url: responseBody.byteLength > 0 ? responseBody.toString("base64url") : null
77
+ };
78
+ await this.onPacket(responsePacket);
79
+ }
80
+ catch (error) {
81
+ await this.emitError({
82
+ type: "error",
83
+ streamId: packet.streamId,
84
+ errorCode: "HTTP_TUNNEL_REQUEST_FAILED",
85
+ detail: error instanceof Error ? error.message : String(error)
86
+ });
87
+ }
88
+ }
89
+ handleWsOpen(packet) {
90
+ if (this.wsSockets.has(packet.streamId)) {
91
+ void this.emitError({
92
+ type: "error",
93
+ streamId: packet.streamId,
94
+ errorCode: "WS_STREAM_EXISTS",
95
+ detail: "当前 WebSocket 流已经存在"
96
+ });
97
+ return;
98
+ }
99
+ const socketUrl = new URL(packet.path, this.localWsBaseUrl);
100
+ const requestedProtocols = resolveRequestedProtocols(packet);
101
+ const socket = requestedProtocols.length > 0
102
+ ? new WebSocket(socketUrl, requestedProtocols, {
103
+ headers: filterRequestHeaders(packet.headers)
104
+ })
105
+ : new WebSocket(socketUrl, {
106
+ headers: filterRequestHeaders(packet.headers)
107
+ });
108
+ this.wsSockets.set(packet.streamId, socket);
109
+ socket.on("open", () => {
110
+ const openedPacket = {
111
+ type: "ws.opened",
112
+ streamId: packet.streamId,
113
+ selectedProtocol: socket.protocol || null
114
+ };
115
+ void this.onPacket(openedPacket);
116
+ });
117
+ socket.on("message", (data, isBinary) => {
118
+ const messagePacket = {
119
+ type: "ws.message",
120
+ streamId: packet.streamId,
121
+ binary: isBinary,
122
+ dataBase64Url: toBuffer(data).toString("base64url")
123
+ };
124
+ void this.onPacket(messagePacket);
125
+ });
126
+ socket.on("close", (code, reason) => {
127
+ this.wsSockets.delete(packet.streamId);
128
+ const closePacket = {
129
+ type: "ws.closed",
130
+ streamId: packet.streamId,
131
+ code,
132
+ reason: reason.length > 0 ? reason.toString("utf8") : null
133
+ };
134
+ void this.onPacket(closePacket);
135
+ });
136
+ socket.on("error", (error) => {
137
+ void this.emitError({
138
+ type: "error",
139
+ streamId: packet.streamId,
140
+ errorCode: "WS_TUNNEL_UPSTREAM_FAILED",
141
+ detail: error.message
142
+ });
143
+ });
144
+ }
145
+ async handleWsMessage(packet) {
146
+ const socket = this.wsSockets.get(packet.streamId);
147
+ if (!socket || socket.readyState !== WebSocket.OPEN) {
148
+ await this.emitError({
149
+ type: "error",
150
+ streamId: packet.streamId,
151
+ errorCode: "WS_STREAM_NOT_OPEN",
152
+ detail: "当前 WebSocket 流还没有建立完成"
153
+ });
154
+ return;
155
+ }
156
+ socket.send(Buffer.from(packet.dataBase64Url, "base64url"), {
157
+ binary: packet.binary
158
+ });
159
+ }
160
+ handleWsClosed(packet) {
161
+ const socket = this.wsSockets.get(packet.streamId);
162
+ if (!socket) {
163
+ return;
164
+ }
165
+ this.wsSockets.delete(packet.streamId);
166
+ socket.close(packet.code, packet.reason ?? undefined);
167
+ }
168
+ async emitError(packet) {
169
+ await this.onPacket(packet);
170
+ }
171
+ }
172
+ function flattenResponseHeaders(headers) {
173
+ const flattened = {};
174
+ for (const [headerName, headerValue] of headers.entries()) {
175
+ if (HOP_BY_HOP_HEADERS.has(headerName.toLowerCase())) {
176
+ continue;
177
+ }
178
+ flattened[headerName] = headerValue;
179
+ }
180
+ return flattened;
181
+ }
182
+ function filterRequestHeaders(headers) {
183
+ const filtered = {};
184
+ for (const [headerName, headerValue] of Object.entries(headers)) {
185
+ const normalizedHeaderName = headerName.toLowerCase();
186
+ if (!headerName
187
+ || HOP_BY_HOP_HEADERS.has(normalizedHeaderName)
188
+ || normalizedHeaderName === WS_PROTOCOL_HEADER) {
189
+ continue;
190
+ }
191
+ filtered[headerName] = headerValue;
192
+ }
193
+ return filtered;
194
+ }
195
+ function resolveRequestedProtocols(packet) {
196
+ if (Array.isArray(packet.protocols) && packet.protocols.length > 0) {
197
+ return sanitizeProtocols(packet.protocols);
198
+ }
199
+ const headerEntry = Object.entries(packet.headers).find(([headerName]) => headerName.toLowerCase() === WS_PROTOCOL_HEADER);
200
+ if (!headerEntry) {
201
+ return [];
202
+ }
203
+ return sanitizeProtocols(headerEntry[1].split(","));
204
+ }
205
+ function sanitizeProtocols(protocols) {
206
+ const seen = new Set();
207
+ const sanitized = [];
208
+ for (const protocol of protocols) {
209
+ const normalized = protocol.trim();
210
+ if (!normalized || seen.has(normalized)) {
211
+ continue;
212
+ }
213
+ seen.add(normalized);
214
+ sanitized.push(normalized);
215
+ }
216
+ return sanitized;
217
+ }
218
+ function toBuffer(value) {
219
+ if (typeof value === "string") {
220
+ return Buffer.from(value, "utf8");
221
+ }
222
+ if (value instanceof ArrayBuffer) {
223
+ return Buffer.from(value);
224
+ }
225
+ if (Array.isArray(value)) {
226
+ return Buffer.concat(value.map((item) => Buffer.from(item)));
227
+ }
228
+ return Buffer.from(value);
229
+ }
230
+ //# sourceMappingURL=relay-tunnel-gateway-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-tunnel-gateway-service.js","sourceRoot":"","sources":["../../../../src/modules/relay-tunnel/relay-tunnel-gateway-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import WebSocket from "ws";
2
+ import type { InstanceRelayTunnelIdentityRepository } from "../../storage/repositories/instance-relay-tunnel-identity-repository.js";
3
+ import type { InstanceRelayTunnelRepository } from "../../storage/repositories/instance-relay-tunnel-repository.js";
4
+ import type { InstanceRelayTunnelConfig, InstanceRelayTunnelStatus } from "../../types/domain.js";
5
+ import type { RelayTunnelRuntimeAdapter } from "./relay-tunnel-service.js";
6
+ export declare class RelayTunnelRuntimeEdgeAdapter implements RelayTunnelRuntimeAdapter {
7
+ private readonly identityRepository;
8
+ private readonly repository;
9
+ private readonly dependencies?;
10
+ private currentConfigKey;
11
+ private runtimeAbortController;
12
+ private runtimePromise;
13
+ private activeSessions;
14
+ private lastPhase;
15
+ private latestRemainingBytes;
16
+ private lastHeartbeatAttemptAtMs;
17
+ constructor(identityRepository: InstanceRelayTunnelIdentityRepository, repository: InstanceRelayTunnelRepository, dependencies?: {
18
+ fetchFn?: typeof fetch;
19
+ createWebSocket?: (url: string) => WebSocket;
20
+ controlSessionSecret?: string;
21
+ } | undefined);
22
+ connect(config: InstanceRelayTunnelConfig, signal: AbortSignal): Promise<InstanceRelayTunnelStatus>;
23
+ disconnect(_reason?: string): Promise<void>;
24
+ private runSupervisor;
25
+ private maybeSendHeartbeat;
26
+ private claimNextSession;
27
+ private buildHeartbeatRequest;
28
+ private startRelaySession;
29
+ private handleRelayPayload;
30
+ private emitRelayError;
31
+ private teardownRelaySession;
32
+ }
33
+ declare function buildHttpUrl(baseUrl: string, pathname: string): string;
34
+ declare function buildRelayWebSocketUrl(relayBaseUrl: string, sessionId: string): string;
35
+ declare function buildControlHttpUrl(controlBaseUrl: string, pathname: string): string;
36
+ export declare const __internal__: {
37
+ buildHttpUrl: typeof buildHttpUrl;
38
+ buildRelayWebSocketUrl: typeof buildRelayWebSocketUrl;
39
+ buildControlHttpUrl: typeof buildControlHttpUrl;
40
+ };
41
+ export {};