dsh-zen-remote 2.2.9 → 2.3.2

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 (149) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/docs/interface.md +1 -1
  4. package/docs/remote-access.md +20 -0
  5. package/lan-gate.mjs +11 -1
  6. package/lib/adapters/dsh-better-sidebar/index.js +6 -2
  7. package/lib/adapters/dsh-better-sidebar/index.js.map +1 -1
  8. package/lib/adapters/dsh-better-sidebar/methods.js +3 -0
  9. package/lib/adapters/dsh-better-sidebar/methods.js.map +1 -1
  10. package/lib/admin-routes.js +33 -2
  11. package/lib/admin-routes.js.map +1 -1
  12. package/lib/client.js +3293 -6
  13. package/lib/config.js +70 -0
  14. package/lib/config.js.map +1 -1
  15. package/lib/index.js +232 -2
  16. package/lib/index.js.map +1 -1
  17. package/lib/intercept.js +43 -3
  18. package/lib/intercept.js.map +1 -1
  19. package/lib/lan-gate-server.cjs +58 -3
  20. package/lib/merge-streams.js +42 -12
  21. package/lib/merge-streams.js.map +1 -1
  22. package/lib/types/adapters/dsh-better-sidebar/index.d.ts +1 -1
  23. package/lib/types/adapters/dsh-better-sidebar/index.d.ts.map +1 -1
  24. package/lib/types/adapters/dsh-better-sidebar/methods.d.ts.map +1 -1
  25. package/lib/types/admin-routes.d.ts +13 -0
  26. package/lib/types/admin-routes.d.ts.map +1 -1
  27. package/lib/types/client/index.d.ts.map +1 -1
  28. package/lib/types/client/locales.d.ts +204 -1
  29. package/lib/types/client/locales.d.ts.map +1 -1
  30. package/lib/types/client/wizard/GatewayWizard.d.ts +29 -0
  31. package/lib/types/client/wizard/GatewayWizard.d.ts.map +1 -0
  32. package/lib/types/client/wizard/WizardCard.d.ts +30 -0
  33. package/lib/types/client/wizard/WizardCard.d.ts.map +1 -0
  34. package/lib/types/client/wizard/cards/MigrateCard.d.ts +15 -0
  35. package/lib/types/client/wizard/cards/MigrateCard.d.ts.map +1 -0
  36. package/lib/types/client/wizard/cards/PortForwardCard.d.ts +15 -0
  37. package/lib/types/client/wizard/cards/PortForwardCard.d.ts.map +1 -0
  38. package/lib/types/client/wizard/cards/ProxyCard.d.ts +19 -0
  39. package/lib/types/client/wizard/cards/ProxyCard.d.ts.map +1 -0
  40. package/lib/types/client/wizard/cards/TokenCard.d.ts +20 -0
  41. package/lib/types/client/wizard/cards/TokenCard.d.ts.map +1 -0
  42. package/lib/types/client/wizard/register-wizard.d.ts +51 -0
  43. package/lib/types/client/wizard/register-wizard.d.ts.map +1 -0
  44. package/lib/types/client/wizard/wizard-css.d.ts +10 -0
  45. package/lib/types/client/wizard/wizard-css.d.ts.map +1 -0
  46. package/lib/types/client-data/qr.d.ts +20 -0
  47. package/lib/types/client-data/qr.d.ts.map +1 -0
  48. package/lib/types/client-data/settings-form.d.ts +7 -2
  49. package/lib/types/client-data/settings-form.d.ts.map +1 -1
  50. package/lib/types/client-data/wizard.d.ts +247 -0
  51. package/lib/types/client-data/wizard.d.ts.map +1 -0
  52. package/lib/types/config.d.ts +27 -0
  53. package/lib/types/config.d.ts.map +1 -1
  54. package/lib/types/index.d.ts.map +1 -1
  55. package/lib/types/intercept.d.ts.map +1 -1
  56. package/lib/types/merge-streams.d.ts.map +1 -1
  57. package/lib/types/wizard/binary-io.d.ts +111 -0
  58. package/lib/types/wizard/binary-io.d.ts.map +1 -0
  59. package/lib/types/wizard/binary.d.ts +118 -0
  60. package/lib/types/wizard/binary.d.ts.map +1 -0
  61. package/lib/types/wizard/caddy-process.d.ts +101 -0
  62. package/lib/types/wizard/caddy-process.d.ts.map +1 -0
  63. package/lib/types/wizard/caddy.d.ts +53 -0
  64. package/lib/types/wizard/caddy.d.ts.map +1 -0
  65. package/lib/types/wizard/cloudflare.d.ts +112 -0
  66. package/lib/types/wizard/cloudflare.d.ts.map +1 -0
  67. package/lib/types/wizard/cloudflared.d.ts +71 -0
  68. package/lib/types/wizard/cloudflared.d.ts.map +1 -0
  69. package/lib/types/wizard/probe.d.ts +66 -0
  70. package/lib/types/wizard/probe.d.ts.map +1 -0
  71. package/lib/types/wizard/proxy-snippets.d.ts +60 -0
  72. package/lib/types/wizard/proxy-snippets.d.ts.map +1 -0
  73. package/lib/types/wizard/routes.d.ts +152 -0
  74. package/lib/types/wizard/routes.d.ts.map +1 -0
  75. package/lib/types/wizard/source-detect.d.ts +53 -0
  76. package/lib/types/wizard/source-detect.d.ts.map +1 -0
  77. package/lib/types/wizard/status.d.ts +115 -0
  78. package/lib/types/wizard/status.d.ts.map +1 -0
  79. package/lib/types/wizard/token-store.d.ts +27 -0
  80. package/lib/types/wizard/token-store.d.ts.map +1 -0
  81. package/lib/types/wizard/tunnel-orchestrator.d.ts +90 -0
  82. package/lib/types/wizard/tunnel-orchestrator.d.ts.map +1 -0
  83. package/lib/types/wizard/verify.d.ts +97 -0
  84. package/lib/types/wizard/verify.d.ts.map +1 -0
  85. package/lib/wizard/binary-io.js +386 -0
  86. package/lib/wizard/binary-io.js.map +1 -0
  87. package/lib/wizard/binary.js +138 -0
  88. package/lib/wizard/binary.js.map +1 -0
  89. package/lib/wizard/caddy-process.js +162 -0
  90. package/lib/wizard/caddy-process.js.map +1 -0
  91. package/lib/wizard/caddy.js +80 -0
  92. package/lib/wizard/caddy.js.map +1 -0
  93. package/lib/wizard/cloudflare.js +334 -0
  94. package/lib/wizard/cloudflare.js.map +1 -0
  95. package/lib/wizard/cloudflared.js +158 -0
  96. package/lib/wizard/cloudflared.js.map +1 -0
  97. package/lib/wizard/probe.js +118 -0
  98. package/lib/wizard/probe.js.map +1 -0
  99. package/lib/wizard/proxy-snippets.js +112 -0
  100. package/lib/wizard/proxy-snippets.js.map +1 -0
  101. package/lib/wizard/routes.js +462 -0
  102. package/lib/wizard/routes.js.map +1 -0
  103. package/lib/wizard/source-detect.js +77 -0
  104. package/lib/wizard/source-detect.js.map +1 -0
  105. package/lib/wizard/status.js +94 -0
  106. package/lib/wizard/status.js.map +1 -0
  107. package/lib/wizard/token-store.js +71 -0
  108. package/lib/wizard/token-store.js.map +1 -0
  109. package/lib/wizard/tunnel-orchestrator.js +155 -0
  110. package/lib/wizard/tunnel-orchestrator.js.map +1 -0
  111. package/lib/wizard/verify.js +171 -0
  112. package/lib/wizard/verify.js.map +1 -0
  113. package/package.json +37 -37
  114. package/scripts/check-settings-form.mjs +5 -4
  115. package/scripts/check-wizard-ui.mjs +690 -0
  116. package/src/adapters/dsh-better-sidebar/index.ts +6 -2
  117. package/src/adapters/dsh-better-sidebar/methods.ts +3 -0
  118. package/src/admin-routes.ts +44 -2
  119. package/src/client/index.tsx +9 -0
  120. package/src/client/locales.ts +410 -2
  121. package/src/client/wizard/GatewayWizard.tsx +2224 -0
  122. package/src/client/wizard/WizardCard.tsx +81 -0
  123. package/src/client/wizard/cards/MigrateCard.tsx +42 -0
  124. package/src/client/wizard/cards/PortForwardCard.tsx +37 -0
  125. package/src/client/wizard/cards/ProxyCard.tsx +56 -0
  126. package/src/client/wizard/cards/TokenCard.tsx +81 -0
  127. package/src/client/wizard/register-wizard.ts +99 -0
  128. package/src/client/wizard/wizard-css.ts +948 -0
  129. package/src/client-data/qr.ts +284 -0
  130. package/src/client-data/settings-form.ts +12 -3
  131. package/src/client-data/wizard.ts +432 -0
  132. package/src/config.ts +87 -0
  133. package/src/index.ts +227 -2
  134. package/src/intercept.ts +43 -3
  135. package/src/merge-streams.ts +41 -12
  136. package/src/wizard/binary-io.ts +449 -0
  137. package/src/wizard/binary.ts +177 -0
  138. package/src/wizard/caddy-process.ts +228 -0
  139. package/src/wizard/caddy.ts +97 -0
  140. package/src/wizard/cloudflare.ts +413 -0
  141. package/src/wizard/cloudflared.ts +196 -0
  142. package/src/wizard/probe.ts +161 -0
  143. package/src/wizard/proxy-snippets.ts +128 -0
  144. package/src/wizard/routes.ts +537 -0
  145. package/src/wizard/source-detect.ts +87 -0
  146. package/src/wizard/status.ts +180 -0
  147. package/src/wizard/token-store.ts +73 -0
  148. package/src/wizard/tunnel-orchestrator.ts +197 -0
  149. package/src/wizard/verify.ts +236 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-zen-remote",
3
- "version": "2.2.9",
3
+ "version": "2.3.2",
4
4
  "description": "一个插件、两种角色:主服务端把 DeepSeek Harness 变成手机能安全访问的 PWA(移动端界面、配对码网关、Web Push),并把选定会话共享给已配对的桌面端;子客户端在另一台 DSH 桌面端的侧边栏里远程使用这些会话。One DSH plugin, two roles: the host turns DeepSeek Harness into a phone-reachable PWA (mobile UI, pairing-code gateway behind your own reverse proxy, Web Push) and shares chosen sessions to paired desktops; the client uses those sessions remotely from another DSH desktop app's sidebar.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -117,41 +117,41 @@
117
117
  "devDependencies": {
118
118
  "@deepseek-ai/cordis": "4.0.5",
119
119
  "@deepseek-ai/cosmokit": "1.8.5",
120
- "@deepseek-ai/dsh-agent": "0.2.1-rc.3",
121
- "@deepseek-ai/dsh-api-remotes": "0.2.1-rc.3",
122
- "@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.3",
123
- "@deepseek-ai/dsh-api-workspace-controller": "0.2.1-rc.3",
124
- "@deepseek-ai/dsh-brand": "0.2.1-rc.3",
125
- "@deepseek-ai/dsh-client-connection": "0.2.1-rc.3",
126
- "@deepseek-ai/dsh-client-locale": "0.2.1-rc.3",
127
- "@deepseek-ai/dsh-client-store": "0.2.1-rc.3",
128
- "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.3",
129
- "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.3",
130
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.3",
131
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.3",
132
- "@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.3",
133
- "@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-rc.3",
134
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.3",
135
- "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.3",
136
- "@deepseek-ai/dsh-llm": "0.2.1-rc.3",
137
- "@deepseek-ai/dsh-ptc-runtime": "0.2.1-rc.3",
138
- "@deepseek-ai/dsh-sandbox": "0.2.1-rc.3",
139
- "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.3",
140
- "@deepseek-ai/dsh-scope": "0.2.1-rc.3",
141
- "@deepseek-ai/dsh-session": "0.2.1-rc.3",
142
- "@deepseek-ai/dsh-session-log-export": "0.2.1-rc.3",
143
- "@deepseek-ai/dsh-session-projection": "0.2.1-rc.3",
144
- "@deepseek-ai/dsh-session-query": "0.2.1-rc.3",
145
- "@deepseek-ai/dsh-session-stats": "0.2.1-rc.3",
146
- "@deepseek-ai/dsh-subagent": "0.2.1-rc.3",
147
- "@deepseek-ai/dsh-timeout": "0.2.1-rc.3",
148
- "@deepseek-ai/dsh-token-meter": "0.2.1-rc.3",
149
- "@deepseek-ai/dsh-tools": "0.2.1-rc.3",
150
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.3",
151
- "@deepseek-ai/dsh-util-crypto": "0.2.1-rc.3",
152
- "@deepseek-ai/dsh-util-values": "0.2.1-rc.3",
153
- "@deepseek-ai/dsh-workspace": "0.2.1-rc.3",
154
- "@deepseek-ai/schemastery": "3.18.4",
120
+ "@deepseek-ai/dsh-agent": "0.2.1-rc.4",
121
+ "@deepseek-ai/dsh-api-remotes": "0.2.1-rc.4",
122
+ "@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.4",
123
+ "@deepseek-ai/dsh-api-workspace-controller": "0.2.1-rc.4",
124
+ "@deepseek-ai/dsh-brand": "0.2.1-rc.4",
125
+ "@deepseek-ai/dsh-client-connection": "0.2.1-rc.4",
126
+ "@deepseek-ai/dsh-client-locale": "0.2.1-rc.4",
127
+ "@deepseek-ai/dsh-client-store": "0.2.1-rc.4",
128
+ "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.4",
129
+ "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.4",
130
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.4",
131
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.4",
132
+ "@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.4",
133
+ "@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-rc.4",
134
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.4",
135
+ "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.4",
136
+ "@deepseek-ai/dsh-llm": "0.2.1-rc.4",
137
+ "@deepseek-ai/dsh-ptc-runtime": "0.2.1-rc.4",
138
+ "@deepseek-ai/dsh-sandbox": "0.2.1-rc.4",
139
+ "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.4",
140
+ "@deepseek-ai/dsh-scope": "0.2.1-rc.4",
141
+ "@deepseek-ai/dsh-session": "0.2.1-rc.4",
142
+ "@deepseek-ai/dsh-session-log-export": "0.2.1-rc.4",
143
+ "@deepseek-ai/dsh-session-projection": "0.2.1-rc.4",
144
+ "@deepseek-ai/dsh-session-query": "0.2.1-rc.4",
145
+ "@deepseek-ai/dsh-session-stats": "0.2.1-rc.4",
146
+ "@deepseek-ai/dsh-subagent": "0.2.1-rc.4",
147
+ "@deepseek-ai/dsh-timeout": "0.2.1-rc.4",
148
+ "@deepseek-ai/dsh-token-meter": "0.2.1-rc.4",
149
+ "@deepseek-ai/dsh-tools": "0.2.1-rc.4",
150
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.4",
151
+ "@deepseek-ai/dsh-util-crypto": "0.2.1-rc.4",
152
+ "@deepseek-ai/dsh-util-values": "0.2.1-rc.4",
153
+ "@deepseek-ai/dsh-workspace": "0.2.1-rc.4",
154
+ "@deepseek-ai/schemastery": "3.18.5",
155
155
  "@types/node": "^26.2.0",
156
156
  "@types/react": "~18.3.1",
157
157
  "@types/react-dom": "~18.3.0",
@@ -160,7 +160,7 @@
160
160
  "scripts": {
161
161
  "build": "tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs",
162
162
  "verify": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit",
163
- "test": "node --test \"test/*.test.cjs\" && node scripts/check-sunk-viewport.mjs && node scripts/check-keyboard-avoid.mjs && node scripts/check-attach-upload.mjs && node scripts/check-share-image.mjs && node scripts/check-upload-endpoint.mjs && node scripts/check-host-shadow.mjs && node scripts/check-compat-store.mjs && node scripts/check-settings-form.mjs && node scripts/check-shares.mjs && node scripts/check-plugin-bridge-ui.mjs && node scripts/check-remote-drop.mjs && node scripts/check-client-externals.mjs && node scripts/check-info-sheet-stacking.mjs && node scripts/sync-doc-version.mjs --check",
163
+ "test": "node --test \"test/*.test.cjs\" && node scripts/check-sunk-viewport.mjs && node scripts/check-keyboard-avoid.mjs && node scripts/check-attach-upload.mjs && node scripts/check-share-image.mjs && node scripts/check-upload-endpoint.mjs && node scripts/check-host-shadow.mjs && node scripts/check-compat-store.mjs && node scripts/check-settings-form.mjs && node scripts/check-shares.mjs && node scripts/check-plugin-bridge-ui.mjs && node scripts/check-remote-drop.mjs && node scripts/check-client-externals.mjs && node scripts/check-info-sheet-stacking.mjs && node scripts/check-wizard-ui.mjs && node scripts/sync-doc-version.mjs --check",
164
164
  "version": "node scripts/sync-doc-version.mjs && git add README.md README.zh-CN.md"
165
165
  }
166
166
  }
@@ -619,10 +619,11 @@ test('CLIENT_RECONNECT_ROUTE is the one reconnect endpoint', () => {
619
619
  assert.equal(CLIENT_RECONNECT_ROUTE, '/_dsh/zen-remote/client/reconnect')
620
620
  })
621
621
 
622
- test('normalizePairingCode uppercases and strips spaces and hyphens', () => {
623
- assert.equal(normalizePairingCode('ab cd-12'), 'ABCD12')
624
- assert.equal(normalizePairingCode(' abcd12ef '), 'ABCD12EF')
625
- assert.equal(normalizePairingCode('abcd-12-ef'), 'ABCD12EF')
622
+ test('normalizePairingCode uppercases, filters to the 32-char code alphabet (no 0/O/1/I/L or symbols), and caps at 8 chars', () => {
623
+ assert.equal(normalizePairingCode('ab cd-23'), 'ABCD23')
624
+ assert.equal(normalizePairingCode(' abcd23ef '), 'ABCD23EF')
625
+ assert.equal(normalizePairingCode('abcd-23-ef-gh'), 'ABCD23EF')
626
+ assert.equal(normalizePairingCode('0O1IL!@#$%^&*()_+=abcd2345'), 'ABCD2345')
626
627
  assert.equal(normalizePairingCode(''), '')
627
628
  })
628
629