@walkhi/code-relax 0.1.0-beta.29 → 0.1.0-beta.30

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 (731) hide show
  1. package/README.md +12 -3
  2. package/dist/bin/codex-remote.mjs +54 -37
  3. package/dist/bin/manage-relay-admin.mjs +20 -20
  4. package/dist/bin/migrate-relay-db.mjs +109 -109
  5. package/dist/bin/publish-android-release.mjs +58 -0
  6. package/dist/bin/self-relay-admin.mjs +8 -8
  7. package/dist/bin/self-relay-demo.mjs +33 -33
  8. package/dist/bin/self-relay-server.mjs +66 -64
  9. package/dist/build-platform.json +1 -0
  10. package/dist/get-lan-networks.ps1 +40 -40
  11. package/dist/shared/file-mentions.cjs +12 -0
  12. package/dist/shared/message-delivery.cjs +17 -1
  13. package/dist/shared/p2p-data-channel.cjs +72 -50
  14. package/dist/shared/p2p-diagnostics.cjs +28 -28
  15. package/dist/shared/p2p-file-channel.cjs +3 -3
  16. package/dist/shared/plan-pricing.cjs +32 -0
  17. package/dist/shared/server-requests.cjs +17 -1
  18. package/dist/skills/code-relax/SKILL.md +3 -3
  19. package/dist/src/background-process.mjs +18 -18
  20. package/dist/src/code-browser.mjs +7 -8
  21. package/dist/src/dots-chat-server.mjs +50 -1
  22. package/dist/src/dots-room-client.mjs +2 -2
  23. package/dist/src/dots-task-catalog.mjs +22 -3
  24. package/dist/src/dots-task-files.mjs +52 -0
  25. package/dist/src/execution-health.mjs +26 -26
  26. package/dist/src/lan-socket-server.mjs +2 -2
  27. package/dist/src/managed-app-server.mjs +9 -6
  28. package/dist/src/message-images.mjs +9 -9
  29. package/dist/src/onboarding.mjs +9 -26
  30. package/dist/src/plan-pricing.mjs +47 -0
  31. package/dist/src/platform/README.md +11 -11
  32. package/dist/src/platform/codex-protocol.mjs +46 -0
  33. package/dist/src/platform/codex-runtime.mjs +3 -0
  34. package/dist/src/platform/credential-store.mjs +3 -0
  35. package/dist/src/platform/desktop-host.mjs +3 -0
  36. package/dist/src/platform/desktop-project-registration.mjs +3 -0
  37. package/dist/src/platform/desktop-project-store.mjs +149 -0
  38. package/dist/src/platform/linux/README.md +3 -3
  39. package/dist/src/platform/macos/README.md +3 -3
  40. package/dist/src/platform/macos/codex-runtime.mjs +125 -0
  41. package/dist/src/platform/macos/credential-store.mjs +10 -0
  42. package/dist/src/platform/macos/desktop-host.mjs +82 -0
  43. package/dist/src/platform/macos/desktop-project-registration.mjs +10 -0
  44. package/dist/src/platform/macos/network-info.mjs +28 -0
  45. package/dist/src/platform/macos/project-locations.mjs +8 -0
  46. package/dist/src/platform/macos/resident-startup.mjs +84 -0
  47. package/dist/src/platform/macos/retained-runtime.mjs +127 -0
  48. package/dist/src/platform/macos/service-host.mjs +18 -0
  49. package/dist/src/platform/macos/system.mjs +29 -0
  50. package/dist/src/platform/macos/user-environment.mjs +7 -0
  51. package/dist/src/platform/native-package.mjs +46 -0
  52. package/dist/src/platform/network-info.mjs +3 -0
  53. package/dist/src/platform/path-identity.mjs +5 -0
  54. package/dist/src/platform/posix/runtime-paths.mjs +25 -0
  55. package/dist/src/platform/project-locations.mjs +3 -0
  56. package/dist/src/platform/runtime-paths.mjs +8 -0
  57. package/dist/src/platform/select.mjs +5 -0
  58. package/dist/src/platform/service-host.mjs +3 -0
  59. package/dist/src/platform/user-environment.mjs +3 -0
  60. package/dist/src/platform/windows/IsolatedProcess.cs +79 -79
  61. package/dist/src/platform/windows/background-process.mjs +30 -30
  62. package/dist/src/platform/windows/codex-runtime.mjs +2 -40
  63. package/dist/src/platform/windows/desktop-helper.mjs +179 -0
  64. package/dist/src/platform/windows/desktop-project-registration.mjs +3 -152
  65. package/dist/src/platform/windows/desktop-runtime.ps1 +10 -10
  66. package/dist/src/platform/windows/desktop-shortcuts.ps1 +7 -7
  67. package/dist/src/platform/windows/network-info.mjs +34 -34
  68. package/dist/src/platform/windows/resident-start.js +20 -20
  69. package/dist/src/platform/windows/resident-start.ps1 +7 -7
  70. package/dist/src/platform/windows/resident-startup.ps1 +83 -83
  71. package/dist/src/platform/windows/resolve-state-root.ps1 +14 -14
  72. package/dist/src/platform/windows/runtime-paths.mjs +20 -20
  73. package/dist/src/platform/windows/rustdesk-video-probe.mjs +168 -0
  74. package/dist/src/platform/windows/service-host.mjs +11 -11
  75. package/dist/src/platform/windows/start-hidden-console.ps1 +49 -49
  76. package/dist/src/platform/windows/stop-desktop.ps1 +22 -22
  77. package/dist/src/platform/windows/user-environment.mjs +50 -50
  78. package/dist/src/platform/windows/user-environment.ps1 +41 -41
  79. package/dist/src/project-create.mjs +4 -4
  80. package/dist/src/runtime-discovery.mjs +47 -43
  81. package/dist/src/self-relay/account-connections.mjs +52 -52
  82. package/dist/src/self-relay/admin-cloud.mjs +101 -101
  83. package/dist/src/self-relay/admin-server.mjs +74 -74
  84. package/dist/src/self-relay/admin-state.mjs +127 -127
  85. package/dist/src/self-relay/android-releases.mjs +61 -0
  86. package/dist/src/self-relay/client.mjs +61 -61
  87. package/dist/src/self-relay/connector.mjs +36 -20
  88. package/dist/src/self-relay/debug-allowlist.mjs +33 -33
  89. package/dist/src/self-relay/demo.mjs +6 -6
  90. package/dist/src/self-relay/device-store.mjs +84 -84
  91. package/dist/src/self-relay/lan-authorizations.mjs +42 -42
  92. package/dist/src/self-relay/lifecycle.mjs +250 -250
  93. package/dist/src/self-relay/long-pairing.mjs +40 -40
  94. package/dist/src/self-relay/mysql-state.mjs +105 -105
  95. package/dist/src/self-relay/p2p-probe.mjs +13 -6
  96. package/dist/src/self-relay/server.mjs +19 -9
  97. package/dist/src/self-relay/usage-daily.mjs +55 -55
  98. package/dist/src/self-relay/windows-route-helper.mjs +75 -75
  99. package/dist/src/self-relay/wire.mjs +36 -36
  100. package/dist/src/server.mjs +132 -32
  101. package/dist/src/service-control.mjs +82 -82
  102. package/dist/src/service-doctor.mjs +51 -13
  103. package/dist/src/service-health.mjs +33 -33
  104. package/dist/src/service-install.mjs +10 -7
  105. package/dist/src/service-lifecycle.mjs +1 -1
  106. package/dist/src/service-restart.mjs +81 -81
  107. package/dist/src/shared-app-server.mjs +16 -7
  108. package/dist/src/shared-recovery.mjs +146 -144
  109. package/dist/src/skill-install.mjs +51 -51
  110. package/dist/src/thread-title-generation.mjs +150 -150
  111. package/dist/src/turn-model-history.mjs +47 -47
  112. package/dist/tools/rtc-route-helper.ps1 +99 -99
  113. package/dist/tools/start-rtc-route-helper.ps1 +15 -15
  114. package/dist/web/vendor/markdown-it.LICENSE.txt +22 -22
  115. package/dist/web/vendor/markdown-it.umd.min.js +13 -13
  116. package/package.json +47 -49
  117. package/tools/postinstall.mjs +127 -127
  118. package/node_modules/@img/colour/LICENSE.md +0 -82
  119. package/node_modules/@img/colour/README.md +0 -15
  120. package/node_modules/@img/colour/color.cjs +0 -1596
  121. package/node_modules/@img/colour/index.cjs +0 -1
  122. package/node_modules/@img/colour/index.d.ts +0 -929
  123. package/node_modules/@img/colour/package.json +0 -58
  124. package/node_modules/@img/sharp-win32-x64/LICENSE +0 -191
  125. package/node_modules/@img/sharp-win32-x64/README.md +0 -59
  126. package/node_modules/@img/sharp-win32-x64/index.cjs +0 -1
  127. package/node_modules/@img/sharp-win32-x64/lib/libvips-42.dll +0 -0
  128. package/node_modules/@img/sharp-win32-x64/lib/libvips-cpp-8.18.6.dll +0 -0
  129. package/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64-0.35.4.node +0 -0
  130. package/node_modules/@img/sharp-win32-x64/package.json +0 -40
  131. package/node_modules/@img/sharp-win32-x64/versions.json +0 -30
  132. package/node_modules/@node-datachannel/win32-x64-msvc/node_datachannel.node +0 -0
  133. package/node_modules/@node-datachannel/win32-x64-msvc/package.json +0 -20
  134. package/node_modules/ansi-regex/index.d.ts +0 -37
  135. package/node_modules/ansi-regex/index.js +0 -10
  136. package/node_modules/ansi-regex/license +0 -9
  137. package/node_modules/ansi-regex/package.json +0 -55
  138. package/node_modules/ansi-regex/readme.md +0 -78
  139. package/node_modules/ansi-styles/index.d.ts +0 -345
  140. package/node_modules/ansi-styles/index.js +0 -163
  141. package/node_modules/ansi-styles/license +0 -9
  142. package/node_modules/ansi-styles/package.json +0 -56
  143. package/node_modules/ansi-styles/readme.md +0 -152
  144. package/node_modules/camelcase/index.d.ts +0 -63
  145. package/node_modules/camelcase/index.js +0 -76
  146. package/node_modules/camelcase/license +0 -9
  147. package/node_modules/camelcase/package.json +0 -43
  148. package/node_modules/camelcase/readme.md +0 -99
  149. package/node_modules/cliui/CHANGELOG.md +0 -76
  150. package/node_modules/cliui/LICENSE.txt +0 -14
  151. package/node_modules/cliui/README.md +0 -115
  152. package/node_modules/cliui/index.js +0 -354
  153. package/node_modules/cliui/package.json +0 -65
  154. package/node_modules/color-convert/CHANGELOG.md +0 -54
  155. package/node_modules/color-convert/LICENSE +0 -21
  156. package/node_modules/color-convert/README.md +0 -68
  157. package/node_modules/color-convert/conversions.js +0 -839
  158. package/node_modules/color-convert/index.js +0 -81
  159. package/node_modules/color-convert/package.json +0 -48
  160. package/node_modules/color-convert/route.js +0 -97
  161. package/node_modules/color-name/LICENSE +0 -8
  162. package/node_modules/color-name/README.md +0 -11
  163. package/node_modules/color-name/index.js +0 -152
  164. package/node_modules/color-name/package.json +0 -28
  165. package/node_modules/decamelize/index.js +0 -13
  166. package/node_modules/decamelize/license +0 -21
  167. package/node_modules/decamelize/package.json +0 -38
  168. package/node_modules/decamelize/readme.md +0 -48
  169. package/node_modules/detect-libc/LICENSE +0 -201
  170. package/node_modules/detect-libc/README.md +0 -163
  171. package/node_modules/detect-libc/index.d.ts +0 -14
  172. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  173. package/node_modules/detect-libc/lib/elf.js +0 -39
  174. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  175. package/node_modules/detect-libc/lib/process.js +0 -24
  176. package/node_modules/detect-libc/package.json +0 -44
  177. package/node_modules/dijkstrajs/.travis.yml +0 -4
  178. package/node_modules/dijkstrajs/CONTRIBUTING.md +0 -8
  179. package/node_modules/dijkstrajs/LICENSE.md +0 -19
  180. package/node_modules/dijkstrajs/README.md +0 -18
  181. package/node_modules/dijkstrajs/dijkstra.js +0 -165
  182. package/node_modules/dijkstrajs/package.json +0 -60
  183. package/node_modules/dijkstrajs/test/dijkstra.test.js +0 -96
  184. package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  185. package/node_modules/emoji-regex/README.md +0 -73
  186. package/node_modules/emoji-regex/es2015/index.js +0 -6
  187. package/node_modules/emoji-regex/es2015/text.js +0 -6
  188. package/node_modules/emoji-regex/index.d.ts +0 -23
  189. package/node_modules/emoji-regex/index.js +0 -6
  190. package/node_modules/emoji-regex/package.json +0 -50
  191. package/node_modules/emoji-regex/text.js +0 -6
  192. package/node_modules/find-up/index.d.ts +0 -137
  193. package/node_modules/find-up/index.js +0 -89
  194. package/node_modules/find-up/license +0 -9
  195. package/node_modules/find-up/package.json +0 -53
  196. package/node_modules/find-up/readme.md +0 -156
  197. package/node_modules/get-caller-file/LICENSE.md +0 -6
  198. package/node_modules/get-caller-file/README.md +0 -41
  199. package/node_modules/get-caller-file/index.d.ts +0 -2
  200. package/node_modules/get-caller-file/index.js +0 -22
  201. package/node_modules/get-caller-file/index.js.map +0 -1
  202. package/node_modules/get-caller-file/package.json +0 -42
  203. package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  204. package/node_modules/is-fullwidth-code-point/index.js +0 -50
  205. package/node_modules/is-fullwidth-code-point/license +0 -9
  206. package/node_modules/is-fullwidth-code-point/package.json +0 -42
  207. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  208. package/node_modules/locate-path/index.d.ts +0 -83
  209. package/node_modules/locate-path/index.js +0 -65
  210. package/node_modules/locate-path/license +0 -9
  211. package/node_modules/locate-path/package.json +0 -45
  212. package/node_modules/locate-path/readme.md +0 -122
  213. package/node_modules/node-datachannel/.clang-format +0 -17
  214. package/node_modules/node-datachannel/.editorconfig +0 -12
  215. package/node_modules/node-datachannel/.eslintignore +0 -8
  216. package/node_modules/node-datachannel/.eslintrc.json +0 -27
  217. package/node_modules/node-datachannel/.gitmodules +0 -3
  218. package/node_modules/node-datachannel/.prettierignore +0 -7
  219. package/node_modules/node-datachannel/.prettierrc +0 -13
  220. package/node_modules/node-datachannel/API.md +0 -247
  221. package/node_modules/node-datachannel/BULDING.md +0 -26
  222. package/node_modules/node-datachannel/CMakeLists.txt +0 -153
  223. package/node_modules/node-datachannel/LICENSE +0 -373
  224. package/node_modules/node-datachannel/README.md +0 -129
  225. package/node_modules/node-datachannel/dist/cjs/index.cjs +0 -11
  226. package/node_modules/node-datachannel/dist/cjs/index.cjs.map +0 -1
  227. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs +0 -101
  228. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs.map +0 -1
  229. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs +0 -91
  230. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs.map +0 -1
  231. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs +0 -94
  232. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs.map +0 -1
  233. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs +0 -45
  234. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs.map +0 -1
  235. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs +0 -8
  236. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs.map +0 -1
  237. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs +0 -86
  238. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs.map +0 -1
  239. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs +0 -34
  240. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs.map +0 -1
  241. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs +0 -34
  242. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs.map +0 -1
  243. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs +0 -214
  244. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs.map +0 -1
  245. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs +0 -53
  246. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +0 -1
  247. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs +0 -83
  248. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs.map +0 -1
  249. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs +0 -132
  250. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs.map +0 -1
  251. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs +0 -94
  252. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs.map +0 -1
  253. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs +0 -434
  254. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs.map +0 -1
  255. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs +0 -59
  256. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs.map +0 -1
  257. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs +0 -45
  258. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs.map +0 -1
  259. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs +0 -42
  260. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs.map +0 -1
  261. package/node_modules/node-datachannel/dist/esm/index.mjs +0 -8
  262. package/node_modules/node-datachannel/dist/esm/index.mjs.map +0 -1
  263. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs +0 -78
  264. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs.map +0 -1
  265. package/node_modules/node-datachannel/dist/esm/lib/index.mjs +0 -64
  266. package/node_modules/node-datachannel/dist/esm/lib/index.mjs.map +0 -1
  267. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs +0 -78
  268. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs.map +0 -1
  269. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs +0 -43
  270. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs.map +0 -1
  271. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs +0 -6
  272. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs.map +0 -1
  273. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs +0 -82
  274. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs.map +0 -1
  275. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs +0 -28
  276. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs.map +0 -1
  277. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs +0 -30
  278. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs.map +0 -1
  279. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs +0 -210
  280. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs.map +0 -1
  281. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs +0 -49
  282. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs.map +0 -1
  283. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs +0 -79
  284. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs.map +0 -1
  285. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs +0 -128
  286. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs.map +0 -1
  287. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs +0 -89
  288. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs.map +0 -1
  289. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs +0 -430
  290. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs.map +0 -1
  291. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs +0 -55
  292. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs.map +0 -1
  293. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs +0 -41
  294. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs.map +0 -1
  295. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs +0 -27
  296. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs.map +0 -1
  297. package/node_modules/node-datachannel/dist/types/lib/datachannel-stream.d.ts +0 -24
  298. package/node_modules/node-datachannel/dist/types/lib/index.d.ts +0 -241
  299. package/node_modules/node-datachannel/dist/types/lib/types.d.ts +0 -119
  300. package/node_modules/node-datachannel/dist/types/lib/websocket-server.d.ts +0 -13
  301. package/node_modules/node-datachannel/dist/types/lib/websocket.d.ts +0 -25
  302. package/node_modules/node-datachannel/dist/types/polyfill/Events.d.ts +0 -15
  303. package/node_modules/node-datachannel/dist/types/polyfill/RTCCertificate.d.ts +0 -9
  304. package/node_modules/node-datachannel/dist/types/polyfill/RTCDataChannel.d.ts +0 -29
  305. package/node_modules/node-datachannel/dist/types/polyfill/RTCDtlsTransport.d.ts +0 -15
  306. package/node_modules/node-datachannel/dist/types/polyfill/RTCError.d.ts +0 -17
  307. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceCandidate.d.ts +0 -21
  308. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceTransport.d.ts +0 -30
  309. package/node_modules/node-datachannel/dist/types/polyfill/RTCPeerConnection.d.ts +0 -64
  310. package/node_modules/node-datachannel/dist/types/polyfill/RTCSctpTransport.d.ts +0 -15
  311. package/node_modules/node-datachannel/dist/types/polyfill/RTCSessionDescription.d.ts +0 -10
  312. package/node_modules/node-datachannel/dist/types/polyfill/index.d.ts +0 -26
  313. package/node_modules/node-datachannel/jest.config.ts +0 -14
  314. package/node_modules/node-datachannel/package.json +0 -133
  315. package/node_modules/node-datachannel/rollup.config.mjs +0 -67
  316. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.cpp +0 -530
  317. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.h +0 -63
  318. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.cpp +0 -172
  319. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.h +0 -43
  320. package/node_modules/node-datachannel/src/cpp/main.cpp +0 -58
  321. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.cpp +0 -457
  322. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.h +0 -52
  323. package/node_modules/node-datachannel/src/cpp/media-av1packetization.cpp +0 -24
  324. package/node_modules/node-datachannel/src/cpp/media-av1packetization.h +0 -11
  325. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.cpp +0 -126
  326. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.h +0 -29
  327. package/node_modules/node-datachannel/src/cpp/media-direction.cpp +0 -43
  328. package/node_modules/node-datachannel/src/cpp/media-direction.h +0 -10
  329. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.cpp +0 -126
  330. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.h +0 -30
  331. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.cpp +0 -126
  332. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.h +0 -30
  333. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.cpp +0 -32
  334. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.h +0 -11
  335. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.cpp +0 -31
  336. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.h +0 -11
  337. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.cpp +0 -79
  338. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.h +0 -28
  339. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.cpp +0 -68
  340. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.h +0 -28
  341. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.cpp +0 -57
  342. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.h +0 -28
  343. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.cpp +0 -93
  344. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.h +0 -30
  345. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.cpp +0 -167
  346. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.h +0 -35
  347. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.cpp +0 -95
  348. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.h +0 -30
  349. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.cpp +0 -458
  350. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.h +0 -61
  351. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.cpp +0 -526
  352. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.h +0 -56
  353. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.cpp +0 -1298
  354. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.h +0 -89
  355. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.cpp +0 -205
  356. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.h +0 -24
  357. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.cpp +0 -57
  358. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.h +0 -47
  359. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.cpp +0 -275
  360. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.h +0 -41
  361. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.cpp +0 -796
  362. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.h +0 -63
  363. package/node_modules/node-datachannel/src/index.ts +0 -9
  364. package/node_modules/node-datachannel/src/lib/datachannel-stream.ts +0 -100
  365. package/node_modules/node-datachannel/src/lib/index.ts +0 -290
  366. package/node_modules/node-datachannel/src/lib/node-datachannel.ts +0 -84
  367. package/node_modules/node-datachannel/src/lib/types.ts +0 -169
  368. package/node_modules/node-datachannel/src/lib/websocket-server.ts +0 -37
  369. package/node_modules/node-datachannel/src/lib/websocket.ts +0 -26
  370. package/node_modules/node-datachannel/src/polyfill/Events.ts +0 -82
  371. package/node_modules/node-datachannel/src/polyfill/Exception.ts +0 -37
  372. package/node_modules/node-datachannel/src/polyfill/README.md +0 -41
  373. package/node_modules/node-datachannel/src/polyfill/RTCCertificate.ts +0 -21
  374. package/node_modules/node-datachannel/src/polyfill/RTCDataChannel.ts +0 -225
  375. package/node_modules/node-datachannel/src/polyfill/RTCDtlsTransport.ts +0 -46
  376. package/node_modules/node-datachannel/src/polyfill/RTCError.ts +0 -78
  377. package/node_modules/node-datachannel/src/polyfill/RTCIceCandidate.ts +0 -128
  378. package/node_modules/node-datachannel/src/polyfill/RTCIceTransport.ts +0 -90
  379. package/node_modules/node-datachannel/src/polyfill/RTCPeerConnection.ts +0 -527
  380. package/node_modules/node-datachannel/src/polyfill/RTCSctpTransport.ts +0 -51
  381. package/node_modules/node-datachannel/src/polyfill/RTCSessionDescription.ts +0 -41
  382. package/node_modules/node-datachannel/src/polyfill/index.ts +0 -38
  383. package/node_modules/node-datachannel/tsconfig.json +0 -21
  384. package/node_modules/p-limit/index.d.ts +0 -38
  385. package/node_modules/p-limit/index.js +0 -57
  386. package/node_modules/p-limit/license +0 -9
  387. package/node_modules/p-limit/package.json +0 -52
  388. package/node_modules/p-limit/readme.md +0 -101
  389. package/node_modules/p-locate/index.d.ts +0 -64
  390. package/node_modules/p-locate/index.js +0 -52
  391. package/node_modules/p-locate/license +0 -9
  392. package/node_modules/p-locate/package.json +0 -53
  393. package/node_modules/p-locate/readme.md +0 -90
  394. package/node_modules/p-try/index.d.ts +0 -39
  395. package/node_modules/p-try/index.js +0 -9
  396. package/node_modules/p-try/license +0 -9
  397. package/node_modules/p-try/package.json +0 -42
  398. package/node_modules/p-try/readme.md +0 -58
  399. package/node_modules/path-exists/index.d.ts +0 -28
  400. package/node_modules/path-exists/index.js +0 -23
  401. package/node_modules/path-exists/license +0 -9
  402. package/node_modules/path-exists/package.json +0 -39
  403. package/node_modules/path-exists/readme.md +0 -52
  404. package/node_modules/pngjs/.eslintignore +0 -2
  405. package/node_modules/pngjs/.eslintrc.json +0 -19
  406. package/node_modules/pngjs/.prettierignore +0 -3
  407. package/node_modules/pngjs/LICENSE +0 -20
  408. package/node_modules/pngjs/README.md +0 -429
  409. package/node_modules/pngjs/browser.js +0 -16096
  410. package/node_modules/pngjs/coverage/lcov-report/base.css +0 -354
  411. package/node_modules/pngjs/coverage/lcov-report/bitmapper.js.html +0 -881
  412. package/node_modules/pngjs/coverage/lcov-report/bitpacker.js.html +0 -554
  413. package/node_modules/pngjs/coverage/lcov-report/block-navigation.js +0 -77
  414. package/node_modules/pngjs/coverage/lcov-report/chunkstream.js.html +0 -647
  415. package/node_modules/pngjs/coverage/lcov-report/constants.js.html +0 -176
  416. package/node_modules/pngjs/coverage/lcov-report/crc.js.html +0 -200
  417. package/node_modules/pngjs/coverage/lcov-report/favicon.png +0 -0
  418. package/node_modules/pngjs/coverage/lcov-report/filter-pack.js.html +0 -593
  419. package/node_modules/pngjs/coverage/lcov-report/filter-parse-async.js.html +0 -152
  420. package/node_modules/pngjs/coverage/lcov-report/filter-parse-sync.js.html +0 -143
  421. package/node_modules/pngjs/coverage/lcov-report/filter-parse.js.html +0 -611
  422. package/node_modules/pngjs/coverage/lcov-report/format-normaliser.js.html +0 -359
  423. package/node_modules/pngjs/coverage/lcov-report/index.html +0 -426
  424. package/node_modules/pngjs/coverage/lcov-report/interlace.js.html +0 -365
  425. package/node_modules/pngjs/coverage/lcov-report/packer-async.js.html +0 -230
  426. package/node_modules/pngjs/coverage/lcov-report/packer-sync.js.html +0 -248
  427. package/node_modules/pngjs/coverage/lcov-report/packer.js.html +0 -467
  428. package/node_modules/pngjs/coverage/lcov-report/paeth-predictor.js.html +0 -128
  429. package/node_modules/pngjs/coverage/lcov-report/parser-async.js.html +0 -575
  430. package/node_modules/pngjs/coverage/lcov-report/parser-sync.js.html +0 -404
  431. package/node_modules/pngjs/coverage/lcov-report/parser.js.html +0 -950
  432. package/node_modules/pngjs/coverage/lcov-report/png-sync.js.html +0 -116
  433. package/node_modules/pngjs/coverage/lcov-report/png.js.html +0 -662
  434. package/node_modules/pngjs/coverage/lcov-report/prettify.css +0 -101
  435. package/node_modules/pngjs/coverage/lcov-report/prettify.js +0 -1007
  436. package/node_modules/pngjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  437. package/node_modules/pngjs/coverage/lcov-report/sorter.js +0 -169
  438. package/node_modules/pngjs/coverage/lcov-report/sync-inflate.js.html +0 -584
  439. package/node_modules/pngjs/coverage/lcov-report/sync-reader.js.html +0 -215
  440. package/node_modules/pngjs/coverage/lcov.info +0 -2177
  441. package/node_modules/pngjs/lib/bitmapper.js +0 -267
  442. package/node_modules/pngjs/lib/bitpacker.js +0 -158
  443. package/node_modules/pngjs/lib/chunkstream.js +0 -189
  444. package/node_modules/pngjs/lib/constants.js +0 -32
  445. package/node_modules/pngjs/lib/crc.js +0 -40
  446. package/node_modules/pngjs/lib/filter-pack.js +0 -171
  447. package/node_modules/pngjs/lib/filter-parse-async.js +0 -24
  448. package/node_modules/pngjs/lib/filter-parse-sync.js +0 -21
  449. package/node_modules/pngjs/lib/filter-parse.js +0 -177
  450. package/node_modules/pngjs/lib/format-normaliser.js +0 -93
  451. package/node_modules/pngjs/lib/interlace.js +0 -95
  452. package/node_modules/pngjs/lib/packer-async.js +0 -50
  453. package/node_modules/pngjs/lib/packer-sync.js +0 -56
  454. package/node_modules/pngjs/lib/packer.js +0 -129
  455. package/node_modules/pngjs/lib/paeth-predictor.js +0 -16
  456. package/node_modules/pngjs/lib/parser-async.js +0 -165
  457. package/node_modules/pngjs/lib/parser-sync.js +0 -108
  458. package/node_modules/pngjs/lib/parser.js +0 -290
  459. package/node_modules/pngjs/lib/png-sync.js +0 -12
  460. package/node_modules/pngjs/lib/png.js +0 -194
  461. package/node_modules/pngjs/lib/sync-inflate.js +0 -168
  462. package/node_modules/pngjs/lib/sync-reader.js +0 -45
  463. package/node_modules/pngjs/package.json +0 -73
  464. package/node_modules/qrcode/README.md +0 -770
  465. package/node_modules/qrcode/bin/qrcode +0 -159
  466. package/node_modules/qrcode/helper/to-sjis-browser.js +0 -2
  467. package/node_modules/qrcode/helper/to-sjis.js +0 -105
  468. package/node_modules/qrcode/lib/browser.js +0 -76
  469. package/node_modules/qrcode/lib/can-promise.js +0 -7
  470. package/node_modules/qrcode/lib/core/alignment-pattern.js +0 -83
  471. package/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -59
  472. package/node_modules/qrcode/lib/core/bit-buffer.js +0 -37
  473. package/node_modules/qrcode/lib/core/bit-matrix.js +0 -65
  474. package/node_modules/qrcode/lib/core/byte-data.js +0 -30
  475. package/node_modules/qrcode/lib/core/error-correction-code.js +0 -135
  476. package/node_modules/qrcode/lib/core/error-correction-level.js +0 -50
  477. package/node_modules/qrcode/lib/core/finder-pattern.js +0 -22
  478. package/node_modules/qrcode/lib/core/format-info.js +0 -29
  479. package/node_modules/qrcode/lib/core/galois-field.js +0 -69
  480. package/node_modules/qrcode/lib/core/kanji-data.js +0 -54
  481. package/node_modules/qrcode/lib/core/mask-pattern.js +0 -234
  482. package/node_modules/qrcode/lib/core/mode.js +0 -167
  483. package/node_modules/qrcode/lib/core/numeric-data.js +0 -43
  484. package/node_modules/qrcode/lib/core/polynomial.js +0 -62
  485. package/node_modules/qrcode/lib/core/qrcode.js +0 -495
  486. package/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -56
  487. package/node_modules/qrcode/lib/core/regex.js +0 -31
  488. package/node_modules/qrcode/lib/core/segments.js +0 -330
  489. package/node_modules/qrcode/lib/core/utils.js +0 -63
  490. package/node_modules/qrcode/lib/core/version-check.js +0 -9
  491. package/node_modules/qrcode/lib/core/version.js +0 -163
  492. package/node_modules/qrcode/lib/index.js +0 -12
  493. package/node_modules/qrcode/lib/renderer/canvas.js +0 -63
  494. package/node_modules/qrcode/lib/renderer/png.js +0 -78
  495. package/node_modules/qrcode/lib/renderer/svg-tag.js +0 -81
  496. package/node_modules/qrcode/lib/renderer/svg.js +0 -19
  497. package/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +0 -85
  498. package/node_modules/qrcode/lib/renderer/terminal/terminal.js +0 -49
  499. package/node_modules/qrcode/lib/renderer/terminal.js +0 -9
  500. package/node_modules/qrcode/lib/renderer/utf8.js +0 -71
  501. package/node_modules/qrcode/lib/renderer/utils.js +0 -99
  502. package/node_modules/qrcode/lib/server.js +0 -138
  503. package/node_modules/qrcode/license +0 -10
  504. package/node_modules/qrcode/package.json +0 -77
  505. package/node_modules/require-directory/.jshintrc +0 -67
  506. package/node_modules/require-directory/.npmignore +0 -1
  507. package/node_modules/require-directory/.travis.yml +0 -3
  508. package/node_modules/require-directory/LICENSE +0 -22
  509. package/node_modules/require-directory/README.markdown +0 -184
  510. package/node_modules/require-directory/index.js +0 -86
  511. package/node_modules/require-directory/package.json +0 -40
  512. package/node_modules/require-main-filename/CHANGELOG.md +0 -26
  513. package/node_modules/require-main-filename/LICENSE.txt +0 -14
  514. package/node_modules/require-main-filename/README.md +0 -26
  515. package/node_modules/require-main-filename/index.js +0 -18
  516. package/node_modules/require-main-filename/package.json +0 -35
  517. package/node_modules/semver/LICENSE +0 -15
  518. package/node_modules/semver/README.md +0 -680
  519. package/node_modules/semver/bin/semver.js +0 -195
  520. package/node_modules/semver/classes/comparator.js +0 -143
  521. package/node_modules/semver/classes/index.js +0 -7
  522. package/node_modules/semver/classes/range.js +0 -577
  523. package/node_modules/semver/classes/semver.js +0 -350
  524. package/node_modules/semver/functions/clean.js +0 -8
  525. package/node_modules/semver/functions/cmp.js +0 -54
  526. package/node_modules/semver/functions/coerce.js +0 -62
  527. package/node_modules/semver/functions/compare-build.js +0 -9
  528. package/node_modules/semver/functions/compare-loose.js +0 -5
  529. package/node_modules/semver/functions/compare.js +0 -7
  530. package/node_modules/semver/functions/diff.js +0 -60
  531. package/node_modules/semver/functions/eq.js +0 -5
  532. package/node_modules/semver/functions/gt.js +0 -5
  533. package/node_modules/semver/functions/gte.js +0 -5
  534. package/node_modules/semver/functions/inc.js +0 -21
  535. package/node_modules/semver/functions/lt.js +0 -5
  536. package/node_modules/semver/functions/lte.js +0 -5
  537. package/node_modules/semver/functions/major.js +0 -5
  538. package/node_modules/semver/functions/minor.js +0 -5
  539. package/node_modules/semver/functions/neq.js +0 -5
  540. package/node_modules/semver/functions/parse.js +0 -18
  541. package/node_modules/semver/functions/patch.js +0 -5
  542. package/node_modules/semver/functions/prerelease.js +0 -8
  543. package/node_modules/semver/functions/rcompare.js +0 -5
  544. package/node_modules/semver/functions/rsort.js +0 -5
  545. package/node_modules/semver/functions/satisfies.js +0 -12
  546. package/node_modules/semver/functions/sort.js +0 -5
  547. package/node_modules/semver/functions/truncate.js +0 -48
  548. package/node_modules/semver/functions/valid.js +0 -8
  549. package/node_modules/semver/index.js +0 -93
  550. package/node_modules/semver/internal/constants.js +0 -37
  551. package/node_modules/semver/internal/debug.js +0 -11
  552. package/node_modules/semver/internal/identifiers.js +0 -29
  553. package/node_modules/semver/internal/lrucache.js +0 -42
  554. package/node_modules/semver/internal/parse-options.js +0 -17
  555. package/node_modules/semver/internal/re.js +0 -223
  556. package/node_modules/semver/package.json +0 -78
  557. package/node_modules/semver/preload.js +0 -4
  558. package/node_modules/semver/range.bnf +0 -17
  559. package/node_modules/semver/ranges/gtr.js +0 -6
  560. package/node_modules/semver/ranges/intersects.js +0 -9
  561. package/node_modules/semver/ranges/ltr.js +0 -6
  562. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  563. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  564. package/node_modules/semver/ranges/min-version.js +0 -63
  565. package/node_modules/semver/ranges/outside.js +0 -82
  566. package/node_modules/semver/ranges/simplify.js +0 -49
  567. package/node_modules/semver/ranges/subset.js +0 -249
  568. package/node_modules/semver/ranges/to-comparators.js +0 -10
  569. package/node_modules/semver/ranges/valid.js +0 -13
  570. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  571. package/node_modules/set-blocking/LICENSE.txt +0 -14
  572. package/node_modules/set-blocking/README.md +0 -31
  573. package/node_modules/set-blocking/index.js +0 -7
  574. package/node_modules/set-blocking/package.json +0 -42
  575. package/node_modules/sharp/LICENSE +0 -191
  576. package/node_modules/sharp/README.md +0 -112
  577. package/node_modules/sharp/dist/channel.cjs +0 -177
  578. package/node_modules/sharp/dist/channel.mjs +0 -177
  579. package/node_modules/sharp/dist/colour.cjs +0 -199
  580. package/node_modules/sharp/dist/colour.mjs +0 -199
  581. package/node_modules/sharp/dist/composite.cjs +0 -213
  582. package/node_modules/sharp/dist/composite.mjs +0 -213
  583. package/node_modules/sharp/dist/constructor.cjs +0 -511
  584. package/node_modules/sharp/dist/constructor.mjs +0 -511
  585. package/node_modules/sharp/dist/index.cjs +0 -25
  586. package/node_modules/sharp/dist/index.d.cts +0 -1999
  587. package/node_modules/sharp/dist/index.d.mts +0 -2046
  588. package/node_modules/sharp/dist/index.mjs +0 -25
  589. package/node_modules/sharp/dist/input.cjs +0 -819
  590. package/node_modules/sharp/dist/input.mjs +0 -819
  591. package/node_modules/sharp/dist/is.cjs +0 -143
  592. package/node_modules/sharp/dist/is.mjs +0 -143
  593. package/node_modules/sharp/dist/libvips.cjs +0 -212
  594. package/node_modules/sharp/dist/libvips.mjs +0 -212
  595. package/node_modules/sharp/dist/operation.cjs +0 -1002
  596. package/node_modules/sharp/dist/operation.mjs +0 -1002
  597. package/node_modules/sharp/dist/output.cjs +0 -1785
  598. package/node_modules/sharp/dist/output.mjs +0 -1785
  599. package/node_modules/sharp/dist/resize.cjs +0 -617
  600. package/node_modules/sharp/dist/resize.mjs +0 -617
  601. package/node_modules/sharp/dist/sharp.cjs +0 -174
  602. package/node_modules/sharp/dist/sharp.mjs +0 -174
  603. package/node_modules/sharp/dist/utility.cjs +0 -301
  604. package/node_modules/sharp/dist/utility.mjs +0 -301
  605. package/node_modules/sharp/install/build.js +0 -38
  606. package/node_modules/sharp/lib/index.d.ts +0 -1999
  607. package/node_modules/sharp/package.json +0 -227
  608. package/node_modules/sharp/src/binding.gyp +0 -303
  609. package/node_modules/sharp/src/common.cc +0 -1186
  610. package/node_modules/sharp/src/common.h +0 -421
  611. package/node_modules/sharp/src/metadata.cc +0 -404
  612. package/node_modules/sharp/src/metadata.h +0 -95
  613. package/node_modules/sharp/src/operations.cc +0 -516
  614. package/node_modules/sharp/src/operations.h +0 -137
  615. package/node_modules/sharp/src/pipeline.cc +0 -1948
  616. package/node_modules/sharp/src/pipeline.h +0 -422
  617. package/node_modules/sharp/src/sharp.cc +0 -43
  618. package/node_modules/sharp/src/stats.cc +0 -186
  619. package/node_modules/sharp/src/stats.h +0 -62
  620. package/node_modules/sharp/src/utilities.cc +0 -289
  621. package/node_modules/sharp/src/utilities.h +0 -22
  622. package/node_modules/string-width/index.d.ts +0 -29
  623. package/node_modules/string-width/index.js +0 -47
  624. package/node_modules/string-width/license +0 -9
  625. package/node_modules/string-width/package.json +0 -56
  626. package/node_modules/string-width/readme.md +0 -50
  627. package/node_modules/strip-ansi/index.d.ts +0 -17
  628. package/node_modules/strip-ansi/index.js +0 -4
  629. package/node_modules/strip-ansi/license +0 -9
  630. package/node_modules/strip-ansi/package.json +0 -54
  631. package/node_modules/strip-ansi/readme.md +0 -46
  632. package/node_modules/which-module/LICENSE +0 -13
  633. package/node_modules/which-module/README.md +0 -58
  634. package/node_modules/which-module/index.js +0 -9
  635. package/node_modules/which-module/package.json +0 -41
  636. package/node_modules/wrap-ansi/index.js +0 -186
  637. package/node_modules/wrap-ansi/license +0 -9
  638. package/node_modules/wrap-ansi/package.json +0 -61
  639. package/node_modules/wrap-ansi/readme.md +0 -97
  640. package/node_modules/ws/LICENSE +0 -20
  641. package/node_modules/ws/README.md +0 -548
  642. package/node_modules/ws/browser.js +0 -8
  643. package/node_modules/ws/index.js +0 -22
  644. package/node_modules/ws/lib/buffer-util.js +0 -131
  645. package/node_modules/ws/lib/constants.js +0 -19
  646. package/node_modules/ws/lib/event-target.js +0 -292
  647. package/node_modules/ws/lib/extension.js +0 -203
  648. package/node_modules/ws/lib/limiter.js +0 -55
  649. package/node_modules/ws/lib/permessage-deflate.js +0 -530
  650. package/node_modules/ws/lib/receiver.js +0 -743
  651. package/node_modules/ws/lib/sender.js +0 -607
  652. package/node_modules/ws/lib/stream.js +0 -161
  653. package/node_modules/ws/lib/subprotocol.js +0 -62
  654. package/node_modules/ws/lib/validation.js +0 -152
  655. package/node_modules/ws/lib/websocket-server.js +0 -562
  656. package/node_modules/ws/lib/websocket.js +0 -1407
  657. package/node_modules/ws/package.json +0 -74
  658. package/node_modules/ws/wrapper.mjs +0 -21
  659. package/node_modules/y18n/CHANGELOG.md +0 -35
  660. package/node_modules/y18n/LICENSE +0 -13
  661. package/node_modules/y18n/README.md +0 -109
  662. package/node_modules/y18n/index.js +0 -188
  663. package/node_modules/y18n/package.json +0 -39
  664. package/node_modules/yargs/CHANGELOG.md +0 -420
  665. package/node_modules/yargs/LICENSE +0 -21
  666. package/node_modules/yargs/README.md +0 -140
  667. package/node_modules/yargs/build/lib/apply-extends.d.ts +0 -2
  668. package/node_modules/yargs/build/lib/apply-extends.js +0 -65
  669. package/node_modules/yargs/build/lib/argsert.d.ts +0 -2
  670. package/node_modules/yargs/build/lib/argsert.js +0 -65
  671. package/node_modules/yargs/build/lib/command.d.ts +0 -64
  672. package/node_modules/yargs/build/lib/command.js +0 -416
  673. package/node_modules/yargs/build/lib/common-types.d.ts +0 -36
  674. package/node_modules/yargs/build/lib/common-types.js +0 -25
  675. package/node_modules/yargs/build/lib/completion-templates.d.ts +0 -2
  676. package/node_modules/yargs/build/lib/completion-templates.js +0 -50
  677. package/node_modules/yargs/build/lib/completion.d.ts +0 -21
  678. package/node_modules/yargs/build/lib/completion.js +0 -135
  679. package/node_modules/yargs/build/lib/is-promise.d.ts +0 -1
  680. package/node_modules/yargs/build/lib/is-promise.js +0 -9
  681. package/node_modules/yargs/build/lib/levenshtein.d.ts +0 -1
  682. package/node_modules/yargs/build/lib/levenshtein.js +0 -58
  683. package/node_modules/yargs/build/lib/middleware.d.ts +0 -10
  684. package/node_modules/yargs/build/lib/middleware.js +0 -57
  685. package/node_modules/yargs/build/lib/obj-filter.d.ts +0 -1
  686. package/node_modules/yargs/build/lib/obj-filter.js +0 -14
  687. package/node_modules/yargs/build/lib/parse-command.d.ts +0 -11
  688. package/node_modules/yargs/build/lib/parse-command.js +0 -36
  689. package/node_modules/yargs/build/lib/process-argv.d.ts +0 -2
  690. package/node_modules/yargs/build/lib/process-argv.js +0 -31
  691. package/node_modules/yargs/build/lib/usage.d.ts +0 -49
  692. package/node_modules/yargs/build/lib/usage.js +0 -540
  693. package/node_modules/yargs/build/lib/validation.d.ts +0 -34
  694. package/node_modules/yargs/build/lib/validation.js +0 -330
  695. package/node_modules/yargs/build/lib/yargs.d.ts +0 -274
  696. package/node_modules/yargs/build/lib/yargs.js +0 -1190
  697. package/node_modules/yargs/build/lib/yerror.d.ts +0 -4
  698. package/node_modules/yargs/build/lib/yerror.js +0 -11
  699. package/node_modules/yargs/index.js +0 -40
  700. package/node_modules/yargs/locales/be.json +0 -46
  701. package/node_modules/yargs/locales/de.json +0 -46
  702. package/node_modules/yargs/locales/en.json +0 -51
  703. package/node_modules/yargs/locales/es.json +0 -46
  704. package/node_modules/yargs/locales/fi.json +0 -49
  705. package/node_modules/yargs/locales/fr.json +0 -53
  706. package/node_modules/yargs/locales/hi.json +0 -49
  707. package/node_modules/yargs/locales/hu.json +0 -46
  708. package/node_modules/yargs/locales/id.json +0 -50
  709. package/node_modules/yargs/locales/it.json +0 -46
  710. package/node_modules/yargs/locales/ja.json +0 -51
  711. package/node_modules/yargs/locales/ko.json +0 -49
  712. package/node_modules/yargs/locales/nb.json +0 -44
  713. package/node_modules/yargs/locales/nl.json +0 -49
  714. package/node_modules/yargs/locales/nn.json +0 -44
  715. package/node_modules/yargs/locales/pirate.json +0 -13
  716. package/node_modules/yargs/locales/pl.json +0 -49
  717. package/node_modules/yargs/locales/pt.json +0 -45
  718. package/node_modules/yargs/locales/pt_BR.json +0 -48
  719. package/node_modules/yargs/locales/ru.json +0 -46
  720. package/node_modules/yargs/locales/th.json +0 -46
  721. package/node_modules/yargs/locales/tr.json +0 -48
  722. package/node_modules/yargs/locales/zh_CN.json +0 -48
  723. package/node_modules/yargs/locales/zh_TW.json +0 -47
  724. package/node_modules/yargs/package.json +0 -92
  725. package/node_modules/yargs/yargs.js +0 -14
  726. package/node_modules/yargs-parser/CHANGELOG.md +0 -601
  727. package/node_modules/yargs-parser/LICENSE.txt +0 -14
  728. package/node_modules/yargs-parser/README.md +0 -449
  729. package/node_modules/yargs-parser/index.js +0 -1032
  730. package/node_modules/yargs-parser/lib/tokenize-arg-string.js +0 -40
  731. package/node_modules/yargs-parser/package.json +0 -46
@@ -1,36 +1,36 @@
1
- import { randomBytes, createHash, timingSafeEqual } from 'node:crypto';
2
- import { WebSocket } from 'ws';
3
-
4
- export const secret = () => randomBytes(32).toString('base64url');
5
- export const digest = value => createHash('sha256').update(value).digest('hex');
6
- export const validSecret = value => typeof value === 'string' && /^[\w-]{43}$/.test(value);
7
- export function matches(value, hash) {
8
- return validSecret(value) && typeof hash === 'string' && timingSafeEqual(Buffer.from(digest(value)), Buffer.from(hash));
9
- }
10
- export function send(socket, message) {
11
- if (socket.readyState !== WebSocket.OPEN) return false;
12
- if (socket.bufferedAmount > 64 * 1024 * 1024) { socket.close(1013, 'Receiver too slow'); return false; }
13
- socket.send(JSON.stringify(message)); return true;
14
- }
15
- export function decode(bytes, binary) {
16
- if (binary) throw new Error('Text frames required');
17
- const value = JSON.parse(bytes.toString());
18
- if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('Object required');
19
- return value;
20
- }
21
- export function loopbackUrl(value, pathname) {
22
- const url = new URL(value);
23
- if (url.protocol !== 'ws:' || url.hostname !== '127.0.0.1' || url.pathname !== pathname || url.search || url.hash || url.username || url.password) {
24
- throw new Error('本地原型仅接受指定路径的 ws://127.0.0.1 地址');
25
- }
26
- return url.href;
27
- }
28
-
29
- export function relayAddress(value) {
30
- const url = new URL(value);
31
- if (url.protocol === 'ws:') return loopbackUrl(value, '/relay');
32
- if (url.protocol !== 'wss:' || url.pathname !== '/relay' || url.search || url.hash || url.username || url.password) {
33
- throw new Error('远程中继必须使用无查询凭据的 wss://主机/relay 地址');
34
- }
35
- return url.href;
36
- }
1
+ import { randomBytes, createHash, timingSafeEqual } from 'node:crypto';
2
+ import { WebSocket } from 'ws';
3
+
4
+ export const secret = () => randomBytes(32).toString('base64url');
5
+ export const digest = value => createHash('sha256').update(value).digest('hex');
6
+ export const validSecret = value => typeof value === 'string' && /^[\w-]{43}$/.test(value);
7
+ export function matches(value, hash) {
8
+ return validSecret(value) && typeof hash === 'string' && timingSafeEqual(Buffer.from(digest(value)), Buffer.from(hash));
9
+ }
10
+ export function send(socket, message) {
11
+ if (socket.readyState !== WebSocket.OPEN) return false;
12
+ if (socket.bufferedAmount > 64 * 1024 * 1024) { socket.close(1013, 'Receiver too slow'); return false; }
13
+ socket.send(JSON.stringify(message)); return true;
14
+ }
15
+ export function decode(bytes, binary) {
16
+ if (binary) throw new Error('Text frames required');
17
+ const value = JSON.parse(bytes.toString());
18
+ if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('Object required');
19
+ return value;
20
+ }
21
+ export function loopbackUrl(value, pathname) {
22
+ const url = new URL(value);
23
+ if (url.protocol !== 'ws:' || url.hostname !== '127.0.0.1' || url.pathname !== pathname || url.search || url.hash || url.username || url.password) {
24
+ throw new Error('本地原型仅接受指定路径的 ws://127.0.0.1 地址');
25
+ }
26
+ return url.href;
27
+ }
28
+
29
+ export function relayAddress(value) {
30
+ const url = new URL(value);
31
+ if (url.protocol === 'ws:') return loopbackUrl(value, '/relay');
32
+ if (url.protocol !== 'wss:' || url.pathname !== '/relay' || url.search || url.hash || url.username || url.password) {
33
+ throw new Error('远程中继必须使用无查询凭据的 wss://主机/relay 地址');
34
+ }
35
+ return url.href;
36
+ }
@@ -1,4 +1,5 @@
1
1
  import crypto from 'node:crypto';
2
+ import { RustDeskVideoProbe } from './platform/windows/rustdesk-video-probe.mjs';
2
3
  import fs from 'node:fs';
3
4
  import http from 'node:http';
4
5
  import path from 'node:path';
@@ -17,14 +18,14 @@ import { streamSharedThread, threadListNotificationMethods } from './shared-thre
17
18
  import appServerEvents from '../shared/app-server-events.cjs';
18
19
  import messageDelivery from '../shared/message-delivery.cjs';
19
20
  import fileChanges from '../shared/file-changes.cjs';
20
- import { runtimePaths } from './platform/windows/runtime-paths.mjs';
21
+ import { runtimePaths } from './platform/runtime-paths.mjs';
21
22
  import { openControl } from './service-control.mjs';
22
23
  import { writeRecord, readRecord } from './service-lifecycle.mjs';
23
24
  import { ExecutionHealth } from './execution-health.mjs';
24
25
  import { authorizeLanDevice, onLanAuthorizationsChanged } from './self-relay/lan-authorizations.mjs';
25
26
  import { createRelayManager } from './self-relay/lifecycle.mjs';
26
27
  import { generateAndSetThreadTitle } from './thread-title-generation.mjs';
27
- import { desktopHost } from './platform/windows/desktop-host.mjs';
28
+ import { desktopHost } from './platform/desktop-host.mjs';
28
29
  import { SharedCatalog } from './shared-catalog.mjs';
29
30
  import { DotsAppServer } from './dots-task-catalog.mjs';
30
31
  import { DotsChatServer } from './dots-chat-server.mjs';
@@ -33,19 +34,22 @@ import { readDotsSummaryTasks } from './dots-summary-tasks.mjs';
33
34
  import { readDotsSchedules } from './dots-schedules.mjs';
34
35
  import { DotsMessageImages } from './dots-message-images.mjs';
35
36
  import { desktopDotsProfiles } from './platform/windows/dots-profile.mjs';
37
+ import { readPlanPricing } from './plan-pricing.mjs';
36
38
  import { requestRecovery, recoveryStatus } from './shared-recovery.mjs';
37
39
  import { requestServiceRestart } from './service-restart.mjs';
38
40
  import { TurnModelHistory } from './turn-model-history.mjs';
39
41
  import { browseCode } from './code-browser.mjs';
40
42
  import { fileRange, fileRevision, FileRangeError } from './file-transfer-range.mjs';
41
43
  import { browseProjectFolders, createProjectFolder, saveProject } from './project-management.mjs';
42
- import { projectLocations } from './platform/windows/project-locations.mjs';
44
+ import { projectLocations } from './platform/project-locations.mjs';
43
45
  import { createWorkstationProject } from './project-create.mjs';
44
46
  import { WorkstationDownloads } from './workstation-downloads.mjs';
45
47
  import { consumeUsageReset } from './usage-reset.mjs';
48
+ import { DesktopHelper } from './platform/windows/desktop-helper.mjs';
46
49
 
47
50
  const turnModelHistory = new TurnModelHistory();
48
51
  const messageReceipts = new messageDelivery.Store();
52
+ const desktopHelper = process.platform === 'win32' ? new DesktopHelper() : null;
49
53
 
50
54
  const MAX_ATTACHMENT_BYTES = 20 * 1024 * 1024;
51
55
  const MAX_FILE_DOWNLOAD_BYTES = 20 * 1024 * 1024;
@@ -84,6 +88,8 @@ const runtimeVersion = readRuntimeVersion();
84
88
  const webRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'web');
85
89
  const projectRoot = os.homedir();
86
90
  const { codexDataRoot, stateRoot, sessionsRoot, uploadsRoot } = runtimePaths();
91
+ const desktopVideoProbe = process.platform === 'win32' ? new RustDeskVideoProbe({ stateRoot }) : null;
92
+ process.once('exit', () => desktopVideoProbe?.stop());
87
93
  const workstationDownloads = new WorkstationDownloads(stateRoot);
88
94
  const markdownItScript = fs.readFileSync(path.join(webRoot, 'vendor', 'markdown-it.umd.min.js'));
89
95
  const markdownSandbox = { atob };
@@ -101,7 +107,7 @@ const liveActivityCache = new Map();
101
107
  let sharedServer = null;
102
108
  const managedAppServer = new ManagedAppServer({ stateRoot, host: desktopHost });
103
109
  const hostedHistoryCache = new HostedHistoryCache(stateRoot);
104
- const dotsServer = new DotsAppServer(managedAppServer.client, desktopDotsProfiles(codexDataRoot, stateRoot), hostedHistoryCache);
110
+ const dotsServer = new DotsAppServer(managedAppServer.client, desktopDotsProfiles(codexDataRoot, stateRoot), hostedHistoryCache, { uploadsRoot });
105
111
  const dotsImages = new DotsMessageImages({ localServer: managedAppServer.client, identity: () => dotsServer.profileIdentity,
106
112
  cache: attachmentCache, capabilityKey: imageCapabilityKey, maxEntries: MAX_CACHED_ATTACHMENTS, maxBytes: MAX_ATTACHMENT_BYTES });
107
113
  const dotsChat = new DotsChatServer(dotsServer, undefined, { uploadsRoot });
@@ -156,6 +162,79 @@ async function handleRequest(request, response) {
156
162
  return;
157
163
  }
158
164
 
165
+ if (process.platform !== 'win32' && url.pathname.startsWith('/api/desktop/'))
166
+ throw new RequestError(501, 'Mac 版不提供远程桌面控制。', { code: 'desktop_control_unsupported' });
167
+
168
+ if (url.pathname === '/api/desktop/video-probe') {
169
+ if (request.method === 'POST') {
170
+ try { sendJson(response, 200, await desktopVideoProbe.begin()); }
171
+ catch (error) { throw new RequestError(error.statusCode || 502, error.message, { code: error.code || 'desktop_video_failed' }); }
172
+ }
173
+ else if (request.method === 'PUT' || request.method === 'DELETE') {
174
+ const body = await readJsonBody(request);
175
+ if (typeof body.leaseId !== 'string' || !/^[a-f0-9]{32}$/.test(body.leaseId)) throw new RequestError(400, '无效的视频会话');
176
+ sendJson(response, 200, request.method === 'PUT' ? desktopVideoProbe.renew(body.leaseId) : desktopVideoProbe.release(body.leaseId));
177
+ } else throw new RequestError(405, '不支持的操作');
178
+ return;
179
+ }
180
+ if (request.method === 'GET' && url.pathname === '/api/desktop/frame') {
181
+ const started = Date.now();
182
+ try {
183
+ const preview = url.searchParams.get('preview') === '1';
184
+ const frame = await desktopHelper.frame({ preview });
185
+ if (!preview) console.info(JSON.stringify({ time: new Date().toISOString(), event: 'desktop-frame', state: frame.state,
186
+ kind: frame.kind, width: frame.width, height: frame.height, bytes: frame.size, ms: Date.now() - started }));
187
+ if (response.writableEnded) { desktopHelper.release(frame.frameId); return; }
188
+ sendJson(response, 200, frame);
189
+ } catch (error) {
190
+ console.error(JSON.stringify({ time: new Date().toISOString(), event: 'desktop-frame', state: 'failed',
191
+ error: error.message.slice(0, 160), ms: Date.now() - started }));
192
+ throw error;
193
+ }
194
+ return;
195
+ }
196
+ const desktopImage = /^\/api\/desktop\/frames\/([a-f0-9]{32})$/.exec(url.pathname);
197
+ if (request.method === 'GET' && desktopImage) {
198
+ if (!request.fileTransfer) throw new RequestError(400, '请通过文件通道读取桌面画面。');
199
+ const image = desktopHelper.image(desktopImage[1]);
200
+ const { offset, length } = fileRange(url.searchParams, image.length, desktopImage[1]);
201
+ const mimeType = desktopHelper.active.frame.mimeType;
202
+ response.filePart({ name: mimeType === 'image/jpeg' ? 'desktop.jpg' : 'desktop.png', size: image.length, offset, revision: desktopImage[1], mimeType },
203
+ image.subarray(offset, offset + length));
204
+ return;
205
+ }
206
+ if (request.method === 'POST' && url.pathname === '/api/desktop/move') {
207
+ try { sendJson(response, 200, await desktopHelper.move(await readJsonBody(request))); }
208
+ catch (error) {
209
+ console.error(JSON.stringify({ time: new Date().toISOString(), event: 'desktop-move', state: 'failed',
210
+ code: error.code, error: error.message.slice(0, 160) }));
211
+ throw error;
212
+ }
213
+ return;
214
+ }
215
+ if (request.method === 'POST' && url.pathname === '/api/desktop/click') {
216
+ const started = Date.now();
217
+ console.info(JSON.stringify({ time: new Date().toISOString(), event: 'desktop-click', state: 'received' }));
218
+ try {
219
+ const result = await desktopHelper.click(await readJsonBody(request));
220
+ console.info(JSON.stringify({ time: new Date().toISOString(), event: 'desktop-click', state: result.state,
221
+ inputCount: result.inputCount, ms: Date.now() - started }));
222
+ sendJson(response, 200, result);
223
+ } catch (error) {
224
+ console.error(JSON.stringify({ time: new Date().toISOString(), event: 'desktop-click', state: 'failed',
225
+ code: error.code, error: error.message.slice(0, 160), ms: Date.now() - started }));
226
+ throw error;
227
+ }
228
+ return;
229
+ }
230
+ if (request.method === 'DELETE' && url.pathname === '/api/desktop/frame') {
231
+ const body = await readJsonBody(request);
232
+ if (typeof body.sessionId !== 'string' || !/^[a-f0-9]{32}$/.test(body.sessionId)) throw new RequestError(400, '无效的桌面会话');
233
+ desktopHelper.release(undefined, body.sessionId);
234
+ sendJson(response, 200, { released: true });
235
+ return;
236
+ }
237
+
159
238
  // These routes never wait on Desktop tools or a stuck thread. They remain
160
239
  // available to authenticated paired controllers during an app-server stall.
161
240
  if (request.method === 'GET' && url.pathname === '/api/shared-recovery/events') {
@@ -278,18 +357,21 @@ async function handleRequest(request, response) {
278
357
  return;
279
358
  }
280
359
 
360
+ const localFileRequest = url.pathname === '/api/files/local';
281
361
  const fileMatch = /^\/api\/files\/([a-f0-9]{64})$/.exec(url.pathname);
282
- if (request.method === 'GET' && fileMatch) {
362
+ if (request.method === 'GET' && (fileMatch || localFileRequest)) {
283
363
  if (!request.fileTransfer) throw new RequestError(400, '请通过文件通道下载附件。');
284
- const hosted = attachmentCache.get(fileMatch[1])
285
- || dotsImages.restore(fileMatch[1], url.searchParams.get('recovery') || '');
364
+ const hosted = !localFileRequest && (attachmentCache.get(fileMatch[1])
365
+ || dotsImages.restore(fileMatch[1], url.searchParams.get('recovery') || ''));
286
366
  if (hosted?.dotsFile) {
287
367
  const { bytes, ...metadata } = await dotsImages.readPart(hosted, url.searchParams);
288
368
  response.filePart(metadata, bytes);
289
369
  return;
290
370
  }
291
- const file = fileCache.get(fileMatch[1]);
292
- if (!file) throw new RequestError(404, '文件授权已失效,请重新读取对话。');
371
+ const localPath = url.searchParams.get('path') || '';
372
+ if (localFileRequest && !/^[a-z]:[\\/]/i.test(localPath)) throw new RequestError(400, '无效的工作站文件路径。');
373
+ const file = localFileRequest ? describeLocalFile(localPath) : fileCache.get(fileMatch[1]);
374
+ if (!file) throw new RequestError(404, '电脑上的文件不存在或无法读取。');
293
375
  if (file.externalIdentity) await dotsImages.authorization(file.externalIdentity);
294
376
  const { offset, length } = fileRange(url.searchParams, file.size, file.revision);
295
377
  let handle;
@@ -302,7 +384,7 @@ async function handleRequest(request, response) {
302
384
  const validate = () => {
303
385
  const stat = fs.fstatSync(handle);
304
386
  if (!stat.isFile() || fileRevision(stat) !== file.revision || fileRevision(fs.statSync(file.path)) !== file.revision) {
305
- fileCache.delete(fileMatch[1]);
387
+ if (fileMatch) fileCache.delete(fileMatch[1]);
306
388
  throw new RequestError(409, '电脑上的文件已发生变化,请重新读取对话。');
307
389
  }
308
390
  if (stat.size > MAX_FILE_DOWNLOAD_BYTES) throw new RequestError(413, '文件超过下载上限(20 MiB),无法下载。');
@@ -468,6 +550,11 @@ async function handleRequest(request, response) {
468
550
  return;
469
551
  }
470
552
 
553
+ if (request.method === 'GET' && url.pathname === '/api/plan-pricing') {
554
+ sendJson(response, 200, await readPlanPricing(sharedServer));
555
+ return;
556
+ }
557
+
471
558
  if (request.method === 'GET' && url.pathname === '/api/usage-limits') {
472
559
  sendJson(response, 200, await sharedServer.usage());
473
560
  return;
@@ -629,6 +716,12 @@ async function handleRequest(request, response) {
629
716
  }
630
717
 
631
718
  const approvalMatch = /^\/api\/threads\/([^/]+)\/approvals$/.exec(url.pathname);
719
+ if (request.method === 'GET' && approvalMatch && rootChat) {
720
+ const threadId = decodeURIComponent(approvalMatch[1]);
721
+ sendJson(response, 200, await execution.inspectApproval(threadId, {
722
+ id: url.searchParams.get('requestId'), roomMessageId: url.searchParams.get('roomMessageId'),
723
+ })); return;
724
+ }
632
725
  if (request.method === 'POST' && approvalMatch) {
633
726
  const threadId = decodeURIComponent(approvalMatch[1]);
634
727
  await requireExecutionWritable(threadId, execution);
@@ -764,7 +857,7 @@ async function handleRequest(request, response) {
764
857
  if (body.hostId && body.hostId !== hostId) throw new RequestError(400, '请求中的对话主机不一致。');
765
858
  const result = await messageReceipts.submit([hostId, threadId], body.clientUserMessageId, async () => {
766
859
  let args;
767
- try { await requireExecutionWritable(threadId, execution); args = execution === dotsChat ? { ...body, threadId } : appServerTurnArguments(threadId, body); }
860
+ try { await requireExecutionWritable(threadId, execution); args = execution === dotsChat ? { ...body, threadId } : appServerTurnArguments(threadId, { ...body, hostId }); }
768
861
  catch (error) { error.deliveryUnknown = false; throw error; }
769
862
  messageSubmissionStarted = true;
770
863
  const submitted = await execution.send(args);
@@ -845,6 +938,7 @@ let shuttingDown = false;
845
938
  async function shutDown() {
846
939
  if (shuttingDown) return;
847
940
  shuttingDown = true;
941
+ desktopHelper?.release();
848
942
  lanSocket.close();
849
943
  server.close();
850
944
  executionHealth?.stop();
@@ -1025,10 +1119,20 @@ function messagePayload(body) {
1025
1119
 
1026
1120
  function appServerTurnArguments(threadId, body) {
1027
1121
  const payload = messagePayload(body);
1122
+ const mentioned = payload.hostId === 'durable' ? fileMentions.parse(payload.prompt) : null;
1123
+ if (mentioned?.files.length) payload.prompt = mentioned.text;
1028
1124
  const input = [];
1029
1125
  if (payload.prompt) input.push({ type: 'text', text: payload.prompt });
1030
- for (const image of payload.images) input.push(image.startsWith('data:') ? { type: 'image', url: image } : { type: 'localImage', path: image });
1126
+ for (const image of payload.images) {
1127
+ if (image.startsWith('data:')) input.push({ type: 'image', url: image });
1128
+ else if (payload.hostId === 'durable') {
1129
+ const mimeType = imageMimeType(image);
1130
+ if (!mimeType) throw new RequestError(400, '云端图片格式无效。');
1131
+ input.push({ type: 'image', url: `data:${mimeType};base64,${fs.readFileSync(image).toString('base64')}` });
1132
+ } else input.push({ type: 'localImage', path: image });
1133
+ }
1031
1134
  const value = { threadId, input, ...appServerEvents.mobileTurnSource(body.clientUserMessageId, body.containsVoiceInput) };
1135
+ if (mentioned?.files.length) value.uploadFiles = mentioned.files;
1032
1136
  if (typeof body.clientUserMessageId === 'string' && /^[a-f0-9]{32}$/.test(body.clientUserMessageId)) value.clientUserMessageId = body.clientUserMessageId;
1033
1137
  if (payload.model) value.model = payload.model;
1034
1138
  if (payload.thinking) value.effort = payload.thinking;
@@ -1148,10 +1252,10 @@ function normalizeItem(item) {
1148
1252
 
1149
1253
  if (item.type === 'userMessage') {
1150
1254
  const { text, files, delegation } = extractUserText(item.content);
1151
- const attachments = [...normalizeAttachments(item.content), ...files.map(file => ({
1255
+ const attachments = [...normalizeAttachments(item.content), ...files.map(file => file.fileId ? normalizeAttachment(file) : ({
1152
1256
  ...file,
1153
- remotePath: rememberLocalFile(file.path)?.id || '',
1154
- previewRemotePath: file.previewPath ? rememberLocalFile(file.previewPath)?.id || '' : '',
1257
+ remotePath: file.path,
1258
+ previewRemotePath: file.previewPath || '',
1155
1259
  }))];
1156
1260
  if (!text && !attachments.length) return null;
1157
1261
  return {
@@ -1397,8 +1501,8 @@ function markdownFileAssets(text) {
1397
1501
  if (value && !Object.hasOwn(assets, value)) {
1398
1502
  const localPath = fileCitations.localReference(value)?.path;
1399
1503
  if (localPath && /^[a-z]:[\\/]/i.test(localPath)) {
1400
- const asset = rememberLocalFile(localPath);
1401
- if (asset) assets[value] = { remotePath: asset.id, name: asset.name, size: asset.size };
1504
+ assets[value] = { remotePath: localPath, name: path.basename(localPath) };
1505
+ // Link rendering must not depend on file existence or transient backend state.
1402
1506
  }
1403
1507
  }
1404
1508
  }
@@ -1409,21 +1513,17 @@ function markdownFileAssets(text) {
1409
1513
  return assets;
1410
1514
  }
1411
1515
 
1412
- function rememberLocalFile(filePath) {
1413
- try {
1414
- const resolved = path.resolve(filePath);
1415
- const stat = fs.statSync(resolved);
1416
- if (!stat.isFile()) return null;
1417
- const id = crypto.createHmac('sha256', fileCapabilitySecret)
1418
- .update(resolved).update('\0').update(String(stat.size)).update('\0').update(String(stat.mtimeMs)).digest('hex');
1419
- if (!fileCache.has(id)) {
1420
- while (fileCache.size >= MAX_CACHED_FILES) fileCache.delete(fileCache.keys().next().value);
1421
- fileCache.set(id, { id, path: resolved, name: path.basename(resolved), size: stat.size, revision: fileRevision(stat) });
1422
- }
1423
- return fileCache.get(id);
1424
- } catch {
1425
- return null;
1516
+ function describeLocalFile(filePath) {
1517
+ const resolved = path.resolve(filePath);
1518
+ let stat;
1519
+ try { stat = fs.statSync(resolved); }
1520
+ catch (error) {
1521
+ if (error.code === 'ENOENT') throw new RequestError(404, '电脑上的文件已不存在。');
1522
+ if (error.code === 'EACCES' || error.code === 'EPERM') throw new RequestError(403, '电脑系统无法读取此文件:' + error.code);
1523
+ throw error;
1426
1524
  }
1525
+ if (!stat.isFile()) throw new RequestError(400, '此路径不是文件。');
1526
+ return { path: resolved, name: path.basename(resolved), size: stat.size, revision: fileRevision(stat) };
1427
1527
  }
1428
1528
 
1429
1529
  function splitUploadedImages(text) {
@@ -1612,7 +1712,7 @@ function extractUserText(content) {
1612
1712
  ].map(value => path.resolve(value).toLowerCase()));
1613
1713
  text = mentioned.text;
1614
1714
  text = text.replace(/<image\b[^>]*\bpath="[^"]+"[^>]*>/g, '').replace(/<\/image>/g, '').trim();
1615
- return { text, files: mentioned.files.filter(file => !imagePaths.has(path.resolve(file.path).toLowerCase())), delegation };
1715
+ return { text, files: mentioned.files.filter(file => file.fileId || !imagePaths.has(path.resolve(file.path).toLowerCase())), delegation };
1616
1716
  }
1617
1717
 
1618
1718
  function delegationSource(delegation) {
@@ -1,82 +1,82 @@
1
- import http from 'node:http';
2
- import { timingSafeEqual } from 'node:crypto';
3
-
4
- function matches(left, right) {
5
- const a = Buffer.from(left || '');
6
- const b = Buffer.from(right || '');
7
- return a.length === b.length && timingSafeEqual(a, b);
8
- }
9
-
10
- // Separate from the LAN listener: mobile credentials never authorize lifecycle operations.
11
- export async function openControl({ instanceId, secret, shutdown, status = () => ({}), actions = {} }) {
12
- const server = http.createServer((request, response) => {
13
- if (!matches(request.headers.authorization, `Bearer ${secret}`)) {
14
- response.writeHead(403).end();
15
- return;
16
- }
17
- const action = Object.keys(actions).find(name => request.url === `/${instanceId}/${name}`);
18
- if ((!action && request.url !== `/${instanceId}`) || !['GET', 'POST'].includes(request.method) || (action && request.method !== 'POST')) {
19
- response.writeHead(404).end();
20
- return;
21
- }
22
- response.setHeader('Content-Type', 'application/json');
23
- response.setHeader('Connection', 'close');
24
- if (action) {
25
- Promise.resolve().then(async () => {
26
- let body = '';
27
- request.setEncoding('utf8');
28
- for await (const chunk of request) {
29
- body += chunk;
30
- if (Buffer.byteLength(body) > 4096) throw new Error('管理请求过大');
31
- }
32
- const details = body ? JSON.parse(body) : {};
33
- if (!details || typeof details !== 'object' || Array.isArray(details)) throw new Error('无效管理请求');
34
- return actions[action](details);
35
- }).then(result => {
36
- response.end(JSON.stringify({ ...result, instanceId, pid: process.pid }));
37
- }).catch(error => { response.writeHead(409).end(JSON.stringify({ error: error.message })); });
38
- return;
39
- }
40
- if (request.method === 'POST') response.once('finish', () => {
41
- Promise.resolve(shutdown()).catch(error => {
42
- console.error('桌面服务关闭失败:', error.message);
43
- process.exitCode = 1;
44
- });
45
- });
46
- response.end(JSON.stringify({ ...status(), instanceId, pid: process.pid }));
47
- });
48
- await new Promise((resolve, reject) => {
49
- server.once('error', reject);
50
- server.listen(0, '127.0.0.1', resolve);
51
- });
52
- return { port: server.address().port, close: () => new Promise((resolve, reject) => {
53
- server.close(error => error ? reject(error) : resolve());
54
- }) };
55
- }
56
-
57
- export function controlRequest(session, method = 'GET', action = '', details) {
58
- return new Promise((resolve, reject) => {
59
- const request = http.request({ hostname: '127.0.0.1', port: session.controlPort,
60
- path: `/${session.instanceId}${action ? '/' + action : ''}`, method, agent: false,
61
- headers: { Authorization: `Bearer ${session.controlSecret}` }, timeout: action ? 25000 : 2000 }, response => {
62
- let body = '';
63
- response.setEncoding('utf8');
64
- response.on('data', chunk => { body += chunk; });
65
- response.on('error', reject);
66
- response.on('end', () => {
67
- try {
68
- if (response.statusCode === 409) throw new Error(JSON.parse(body).error);
69
- if (response.statusCode !== 200) throw new Error('桌面服务管理通道身份验证失败。');
70
- const identity = JSON.parse(body);
71
- if (identity.instanceId !== session.instanceId || identity.pid !== session.pid) {
72
- throw new Error('桌面服务实例身份不匹配。');
73
- }
74
- resolve(identity);
75
- } catch (error) { reject(error); }
76
- });
77
- });
78
- request.on('timeout', () => request.destroy(new Error('桌面服务管理通道响应超时。')));
79
- request.on('error', reject);
80
- request.end(details === undefined ? undefined : JSON.stringify(details));
81
- });
82
- }
1
+ import http from 'node:http';
2
+ import { timingSafeEqual } from 'node:crypto';
3
+
4
+ function matches(left, right) {
5
+ const a = Buffer.from(left || '');
6
+ const b = Buffer.from(right || '');
7
+ return a.length === b.length && timingSafeEqual(a, b);
8
+ }
9
+
10
+ // Separate from the LAN listener: mobile credentials never authorize lifecycle operations.
11
+ export async function openControl({ instanceId, secret, shutdown, status = () => ({}), actions = {} }) {
12
+ const server = http.createServer((request, response) => {
13
+ if (!matches(request.headers.authorization, `Bearer ${secret}`)) {
14
+ response.writeHead(403).end();
15
+ return;
16
+ }
17
+ const action = Object.keys(actions).find(name => request.url === `/${instanceId}/${name}`);
18
+ if ((!action && request.url !== `/${instanceId}`) || !['GET', 'POST'].includes(request.method) || (action && request.method !== 'POST')) {
19
+ response.writeHead(404).end();
20
+ return;
21
+ }
22
+ response.setHeader('Content-Type', 'application/json');
23
+ response.setHeader('Connection', 'close');
24
+ if (action) {
25
+ Promise.resolve().then(async () => {
26
+ let body = '';
27
+ request.setEncoding('utf8');
28
+ for await (const chunk of request) {
29
+ body += chunk;
30
+ if (Buffer.byteLength(body) > 4096) throw new Error('管理请求过大');
31
+ }
32
+ const details = body ? JSON.parse(body) : {};
33
+ if (!details || typeof details !== 'object' || Array.isArray(details)) throw new Error('无效管理请求');
34
+ return actions[action](details);
35
+ }).then(result => {
36
+ response.end(JSON.stringify({ ...result, instanceId, pid: process.pid }));
37
+ }).catch(error => { response.writeHead(409).end(JSON.stringify({ error: error.message })); });
38
+ return;
39
+ }
40
+ if (request.method === 'POST') response.once('finish', () => {
41
+ Promise.resolve(shutdown()).catch(error => {
42
+ console.error('桌面服务关闭失败:', error.message);
43
+ process.exitCode = 1;
44
+ });
45
+ });
46
+ response.end(JSON.stringify({ ...status(), instanceId, pid: process.pid }));
47
+ });
48
+ await new Promise((resolve, reject) => {
49
+ server.once('error', reject);
50
+ server.listen(0, '127.0.0.1', resolve);
51
+ });
52
+ return { port: server.address().port, close: () => new Promise((resolve, reject) => {
53
+ server.close(error => error ? reject(error) : resolve());
54
+ }) };
55
+ }
56
+
57
+ export function controlRequest(session, method = 'GET', action = '', details) {
58
+ return new Promise((resolve, reject) => {
59
+ const request = http.request({ hostname: '127.0.0.1', port: session.controlPort,
60
+ path: `/${session.instanceId}${action ? '/' + action : ''}`, method, agent: false,
61
+ headers: { Authorization: `Bearer ${session.controlSecret}` }, timeout: action ? 25000 : 2000 }, response => {
62
+ let body = '';
63
+ response.setEncoding('utf8');
64
+ response.on('data', chunk => { body += chunk; });
65
+ response.on('error', reject);
66
+ response.on('end', () => {
67
+ try {
68
+ if (response.statusCode === 409) throw new Error(JSON.parse(body).error);
69
+ if (response.statusCode !== 200) throw new Error('桌面服务管理通道身份验证失败。');
70
+ const identity = JSON.parse(body);
71
+ if (identity.instanceId !== session.instanceId || identity.pid !== session.pid) {
72
+ throw new Error('桌面服务实例身份不匹配。');
73
+ }
74
+ resolve(identity);
75
+ } catch (error) { reject(error); }
76
+ });
77
+ });
78
+ request.on('timeout', () => request.destroy(new Error('桌面服务管理通道响应超时。')));
79
+ request.on('error', reject);
80
+ request.end(details === undefined ? undefined : JSON.stringify(details));
81
+ });
82
+ }