@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,13 +1,16 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
+ import os from 'node:os';
3
4
  import { readRecord } from './service-lifecycle.mjs';
4
5
  import { inspectSkill } from './skill-install.mjs';
5
6
  import { recoveryStatus } from './shared-recovery.mjs';
6
7
 
7
- export async function doctor({ paths, host, service, skillTarget, ensureAutostart }) {
8
+ export async function doctor({ paths, host, service, skillTarget, ensureAutostart, diagnostics = false }) {
8
9
  const checks = [];
9
10
  let installedVersion;
10
11
  let kernelUpdate = null;
12
+ let desktopRecovery = null;
13
+ let serviceState = null;
11
14
  const add = (id, status, message) => checks.push({ id, status, message });
12
15
  const check = async (id, task) => {
13
16
  try { await task(); } catch (error) { add(id, 'error', error.message); }
@@ -21,11 +24,11 @@ export async function doctor({ paths, host, service, skillTarget, ensureAutostar
21
24
  });
22
25
  await check('bridge-runtime', async () => {
23
26
  await host.bridgeEnvironment();
24
- add('bridge-runtime', 'ok', '桌面服务启动环境已就绪;实际任务操作尚未验证。');
27
+ add('bridge-runtime', 'ok', '桌面服务启动环境正常。');
25
28
  });
26
29
  await check('network', async () => {
27
30
  const address = await host.lanAddress();
28
- if (!address) throw Error('未找到局域网 IPv4;请连接受信任的 Wi-Fi 或有线网络。');
31
+ if (!address) { add('network', 'warning', '未连接局域网;需要局域网连接时,请接入 Wi-Fi 或有线网络。'); return; }
29
32
  add('network', 'ok', `局域网地址:${address}`);
30
33
  });
31
34
  await check('autostart', async () => {
@@ -34,7 +37,8 @@ export async function doctor({ paths, host, service, skillTarget, ensureAutostar
34
37
  });
35
38
  await check('service', async () => {
36
39
  const state = await service.status();
37
- add('service', state.running ? 'ok' : 'warning', state.running
40
+ serviceState = state;
41
+ add('service', state.running ? 'ok' : 'error', state.running
38
42
  ? `本机服务正常:${state.mode},端口 ${state.port},运行版本:${state.version || '未知'}` : '服务未就绪;安装后执行 relax start。');
39
43
  if (state.running && installedVersion && state.version !== installedVersion) add('service-version', 'warning', state.version
40
44
  ? `已安装版本 ${installedVersion},但当前运行版本为 ${state.version};请重新执行安装或重启工作站服务。`
@@ -46,7 +50,7 @@ export async function doctor({ paths, host, service, skillTarget, ensureAutostar
46
50
  command: state.managedAppServer.updatePending ? 'relax kernel-restart --confirm' : null };
47
51
  if (state.running) add('managed-app-server', state.managedAppServer?.state === 'ready' ? 'ok' : 'error',
48
52
  state.managedAppServer?.state === 'ready' ? `Codex 内核已就绪:版本 ${currentVersion || '未知'}。`
49
- : state.managedAppServer?.error || 'Codex 内核尚未就绪。');
53
+ : `${state.managedAppServer?.error || 'Codex 内核尚未就绪。'} 请执行 relax setup 修复;若提示未安装或未登录 Codex,请先完成安装和登录。`);
50
54
  if (state.managedAppServer?.updatePending) {
51
55
  const versionDetail = currentVersion && selectedVersion && currentVersion === selectedVersion
52
56
  ? `内核版本号未变(${currentVersion}),重启后将使用更新后的安装文件`
@@ -55,18 +59,52 @@ export async function doctor({ paths, host, service, skillTarget, ensureAutostar
55
59
  `Codex 更新待应用:${versionDetail};执行 relax kernel-restart --confirm 应用更新。`);
56
60
  }
57
61
  if (state.managedAppServer?.launcherRestartRequired) add('managed-app-server-launcher', 'warning',
58
- '安装文件已经更新,但当前 app-server 仍由旧启动链创建;隐藏控制台等运行时修复尚未生效,请执行 relax setup 或重启 Windows。');
59
- });
60
- await check('desktop-recovery', async () => {
61
- const state = await recoveryStatus(paths.stateRoot);
62
- add('desktop-recovery', state.status === 'failed' ? 'warning' : 'ok',
63
- `最近 Desktop 接入:${state.message || state.status}${state.error ? `;${state.error}` : ''}`);
62
+ '工作站更新尚未完全生效,请执行 relax setup。');
64
63
  });
64
+ if (diagnostics) {
65
+ try { desktopRecovery = await recoveryStatus(paths.stateRoot); }
66
+ catch (error) { desktopRecovery = { status: 'unknown', error: error.message }; }
67
+ }
65
68
  await check('skill', async () => {
66
69
  const state = inspectSkill(skillTarget);
67
70
  add('skill', state.managed ? 'ok' : 'warning', state.managed ? '本包管理的 Skill 已安装。'
68
71
  : state.installed ? '存在同名自定义 Skill,本包不会覆盖。' : 'Skill 未安装;重新执行 relax setup。');
69
72
  });
70
- add('firewall', 'warning', '移动端连通性未验证。首次启动请允许记录的 Node 在受信任的专用网络通信;若曾拒绝,可在 Windows 安全中心的防火墙“允许应用通过防火墙”中检查该 Node。不要关闭整个防火墙。');
71
- return { ready: !checks.some(item => item.status === 'error'), lanAccess: 'unverified', kernelUpdate, checks };
73
+ return { ready: !checks.some(item => item.status === 'error'), kernelUpdate, checks, ...(diagnostics ? { desktopRecovery, diagnostics: {
74
+ collectedAt: new Date().toISOString(), platform: process.platform, arch: process.arch, osRelease: os.release(),
75
+ nodeVersion: process.version, nodeExecutable: process.execPath, serviceRoot: paths.serviceRoot,
76
+ servicePid: serviceState?.pid || null, port: serviceState?.port || null, serviceVersion: serviceState?.version || null,
77
+ } } : {}) };
78
+ }
79
+
80
+ export function formatDoctorOutput(result, detail = false) {
81
+ const labels = { installation: '安装文件', 'bridge-runtime': '运行环境', network: '局域网',
82
+ autostart: '登录自启动', service: '工作站服务', 'managed-app-server': 'Codex 内核',
83
+ 'service-version': '服务版本', 'managed-app-server-update': 'Codex 更新',
84
+ 'managed-app-server-launcher': '工作站更新', skill: 'Codex Skill' };
85
+ const byId = id => result.checks.find(item => item.id === id);
86
+ const summary = (id, success) => {
87
+ const item = byId(id);
88
+ return `${labels[id]}:${!item ? '未检查(工作站服务尚未启动)' : item.status === 'ok' ? success : '异常,见下方处理方法'}`;
89
+ };
90
+ const issues = result.checks.filter(item => item.status !== 'ok');
91
+ const lines = [result.ready ? '工作站检查通过。' : '工作站检查发现问题。',
92
+ summary('installation', '完整'), summary('service', '正在运行'), summary('managed-app-server', '已就绪')];
93
+ if (issues.length) lines.push('', '需要处理或留意:', ...issues.map(item => `- ${labels[item.id] || item.id}:${item.message}`));
94
+ if (detail) {
95
+ const info = result.diagnostics || {};
96
+ lines.unshift('Code Relax 诊断报告(供客服或技术人员排查)', `采集时间:${info.collectedAt || '未知'}`,
97
+ `系统:${info.platform || process.platform} ${info.arch || process.arch} ${info.osRelease || ''}`,
98
+ `Node:${info.nodeVersion || process.version};${info.nodeExecutable || process.execPath}`,
99
+ `服务目录:${info.serviceRoot || '未知'}`, `服务进程:${info.servicePid || '未运行'};端口:${info.port || '未知'}`, '');
100
+ lines.push('', '检查详情:', ...result.checks.filter(item => item.status === 'ok').map(item => `- ${labels[item.id] || item.id}:${item.message}`));
101
+ const recovery = result.desktopRecovery;
102
+ if (recovery && !['none', 'unsupported'].includes(recovery.status)) {
103
+ const status = { failed: '未完成', completed: '已完成', succeeded: '已完成', running: '进行中', unknown: '无法读取' }[recovery.status] || recovery.status;
104
+ lines.push('', `Desktop 接入排障记录(仅用于排查上次接入,不代表当前服务状态):上次 Codex Desktop 接入${status}。`);
105
+ if (recovery.error) lines.push(`记录原因:${recovery.error}`);
106
+ }
107
+ }
108
+ lines.push('', result.ready ? '添加手机:运行 relax pair 生成配对二维码。' : '按上述方法处理后,再运行 relax doctor。');
109
+ return lines.join('\n');
72
110
  }
@@ -1,33 +1,33 @@
1
- import WebSocket from 'ws';
2
-
3
- // Use the same authenticated LAN protocol as mobile clients; never replay requests.
4
- export function serviceHealth(session) {
5
- if (!session) return Promise.resolve(null);
6
- return new Promise((resolve, reject) => {
7
- const token = new URL(session.accessUrl).searchParams.get('token');
8
- const socket = new WebSocket(`ws://127.0.0.1:${session.port}/api/socket`);
9
- let done = false;
10
- const finish = (error, value = null) => {
11
- if (done) return;
12
- done = true;
13
- clearTimeout(timer);
14
- socket.terminate();
15
- if (error) reject(error); else resolve(value);
16
- };
17
- const timer = setTimeout(() => finish(new Error('桌面服务健康检查超时。')), 6000);
18
- socket.on('open', () => socket.send(JSON.stringify({ type: 'auth', token })));
19
- socket.on('message', data => {
20
- try {
21
- const message = JSON.parse(data.toString());
22
- if (message.type === 'ready') {
23
- socket.send(JSON.stringify({ type: 'request', id: 1, method: 'GET', path: '/api/health' }));
24
- } else if (message.type === 'response' && message.id === 1) {
25
- finish(null, message.status === 200 ? message.body : null);
26
- }
27
- } catch (error) { finish(error); }
28
- });
29
- socket.on('error', error => finish(error.code === 'ECONNREFUSED' ? null : error));
30
- socket.on('close', code => finish(new Error(code === 1008
31
- ? '桌面服务健康检查鉴权失败。' : '桌面服务健康检查连接已断开。')));
32
- });
33
- }
1
+ import WebSocket from 'ws';
2
+
3
+ // Use the same authenticated LAN protocol as mobile clients; never replay requests.
4
+ export function serviceHealth(session) {
5
+ if (!session) return Promise.resolve(null);
6
+ return new Promise((resolve, reject) => {
7
+ const token = new URL(session.accessUrl).searchParams.get('token');
8
+ const socket = new WebSocket(`ws://127.0.0.1:${session.port}/api/socket`);
9
+ let done = false;
10
+ const finish = (error, value = null) => {
11
+ if (done) return;
12
+ done = true;
13
+ clearTimeout(timer);
14
+ socket.terminate();
15
+ if (error) reject(error); else resolve(value);
16
+ };
17
+ const timer = setTimeout(() => finish(new Error('桌面服务健康检查超时。')), 6000);
18
+ socket.on('open', () => socket.send(JSON.stringify({ type: 'auth', token })));
19
+ socket.on('message', data => {
20
+ try {
21
+ const message = JSON.parse(data.toString());
22
+ if (message.type === 'ready') {
23
+ socket.send(JSON.stringify({ type: 'request', id: 1, method: 'GET', path: '/api/health' }));
24
+ } else if (message.type === 'response' && message.id === 1) {
25
+ finish(null, message.status === 200 ? message.body : null);
26
+ }
27
+ } catch (error) { finish(error); }
28
+ });
29
+ socket.on('error', error => finish(error.code === 'ECONNREFUSED' ? null : error));
30
+ socket.on('close', code => finish(new Error(code === 1008
31
+ ? '桌面服务健康检查鉴权失败。' : '桌面服务健康检查连接已断开。')));
32
+ });
33
+ }
@@ -20,6 +20,9 @@ export function packageRoot(from) {
20
20
  export async function installService(source, target, executable, stateRoot, hooks = {}) {
21
21
  assertPlainPath(target);
22
22
  if (!fs.existsSync(path.join(source, 'dist/bin/codex-remote.mjs'))) throw new Error('缺少发布构建;源码目录请先执行 npm run build。');
23
+ const build = readRecord(path.join(source, 'dist/build-platform.json'));
24
+ if (build?.platform !== process.platform || build?.arch !== process.arch)
25
+ throw new Error('构建产物与本机系统或 CPU 不匹配,请在目标工作站安装依赖并重新构建。');
23
26
  if (!fs.existsSync(path.join(source, 'node_modules'))) throw new Error('缺少包依赖,请重新安装完整 npm 包。');
24
27
  const parent = path.dirname(target);
25
28
  fs.mkdirSync(parent, { recursive: true });
@@ -32,7 +35,7 @@ export async function installService(source, target, executable, stateRoot, hook
32
35
  }
33
36
  await exec(executable, [path.join(stage, 'dist/bin/codex-remote.mjs'), '--help'], { windowsHide: true });
34
37
  await exec(executable, ['-e', 'const r=require("node:module").createRequire(process.argv[1]); r("sharp"); r("qrcode"); r("ws"); r("node-datachannel");', path.join(stage, 'package.json')], { windowsHide: true });
35
- writeRecord(path.join(stage, 'installation.json'), { installedAt: new Date().toISOString(), source, nodeExecutable: executable, stateRoot,
38
+ writeRecord(path.join(stage, 'installation.json'), { installedAt: new Date().toISOString(), source, nodeExecutable: executable, stateRoot,
36
39
  version: readRecord(path.join(source, 'package.json')).version });
37
40
  const previous = fs.existsSync(target);
38
41
  let previousMoved = false, activated = false;
@@ -64,7 +67,7 @@ export async function installService(source, target, executable, stateRoot, hook
64
67
  }
65
68
  }
66
69
 
67
- export async function uninstallService({ serviceRoot, stateRoot, uploadsRoot, credentialsRoot }, service, beforeRemove = async () => {}) {
70
+ export async function uninstallService({ serviceRoot, stateRoot, uploadsRoot, credentialsRoot }, service, beforeRemove = async () => {}) {
68
71
  const target = path.resolve(serviceRoot);
69
72
  assertPlainPath(target);
70
73
  if (path.basename(target) !== 'service' || path.basename(path.dirname(target)) !== 'CodexRemote') throw new Error('拒绝删除未识别的服务目录。');
@@ -73,11 +76,11 @@ export async function uninstallService({ serviceRoot, stateRoot, uploadsRoot, cr
73
76
  const relative = path.relative(target, path.resolve(data));
74
77
  if (!relative || (!relative.startsWith(`..${path.sep}`) && relative !== '..' && !path.isAbsolute(relative))) throw new Error('服务目录包含用户数据,拒绝删除。');
75
78
  }
76
- if (!fs.existsSync(target)) {
77
- await service.stop();
78
- await beforeRemove();
79
- return { removed: false, serviceRoot: target, preserved };
80
- }
79
+ if (!fs.existsSync(target)) {
80
+ await service.stop();
81
+ await beforeRemove();
82
+ return { removed: false, serviceRoot: target, preserved };
83
+ }
81
84
  const pkg = readRecord(path.join(target, 'package.json'));
82
85
  const record = readRecord(path.join(target, 'installation.json'));
83
86
  if (pkg?.name !== '@walkhi/code-relax' || !record?.installedAt || !record?.nodeExecutable) throw new Error('缺少有效安装记录,未删除服务目录。');
@@ -71,7 +71,7 @@ export function lifecycle({ stateRoot, host }) {
71
71
  url.hostname = address || '127.0.0.1';
72
72
  session.accessUrl = url.href;
73
73
  writeRecord(sessionPath, session);
74
- return { pid: session.pid, port: session.port, transportMode: connection.transportMode,
74
+ return { pid: session.pid, port: session.port, version: connection.version, transportMode: connection.transportMode,
75
75
  execution: connection.execution, managedAppServer: connection.managedAppServer, desktop: connection.desktop,
76
76
  desktopRestartRecommended: connection.desktopRestartRecommended === true, accessUrl: session.accessUrl,
77
77
  qrPath: path.join(stateRoot, 'connection-qr.png') };
@@ -1,81 +1,81 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { randomUUID } from 'node:crypto';
4
- import { fileURLToPath } from 'node:url';
5
- import { setTimeout as delay } from 'node:timers/promises';
6
- import { startBackground } from './background-process.mjs';
7
- import { lifecycle, readRecord, writeRecord } from './service-lifecycle.mjs';
8
- import * as host from './platform/windows/service-host.mjs';
9
- import { desktopHost } from './platform/windows/desktop-host.mjs';
10
-
11
- const script = fileURLToPath(import.meta.url);
12
- const sameProcess = (expected, actual) => expected && actual && expected.pid === actual.pid &&
13
- expected.created === actual.created && expected.executable === actual.executable;
14
- async function processIdentity(pid) {
15
- const current = await desktopHost.process(pid);
16
- return current ? { pid: current.pid, created: current.created, executable: current.executable } : null;
17
- }
18
-
19
- export async function requestServiceRestart(stateRoot) {
20
- const lock = path.join(stateRoot, 'service-restart.lock');
21
- const operationId = randomUUID();
22
- const owner = await processIdentity(process.pid);
23
- if (!owner) throw new Error('无法确认服务重启请求进程。');
24
- const previous = readRecord(lock);
25
- if (previous) {
26
- const actual = previous.owner?.pid ? await processIdentity(previous.owner.pid) : null;
27
- if (sameProcess(previous.owner, actual) || readRecord(lock)?.operationId !== previous.operationId) {
28
- throw new Error('工作站服务已在重启中。');
29
- }
30
- fs.rmSync(lock);
31
- }
32
- const temporary = `${lock}.${operationId}.tmp`;
33
- try {
34
- fs.writeFileSync(temporary, JSON.stringify({ operationId, owner, requestedAt: new Date().toISOString() }),
35
- { flag: 'wx', mode: 0o600 });
36
- // Publish a complete record exclusively; a crash cannot leave a half-written lock.
37
- fs.linkSync(temporary, lock);
38
- } catch (error) {
39
- if (error.code === 'EEXIST') throw new Error('工作站服务已在重启中。');
40
- throw error;
41
- } finally { fs.rmSync(temporary, { force: true }); }
42
- try {
43
- const log = path.join(stateRoot, 'service-restart.log');
44
- const pid = await startBackground(process.execPath, [script, '--worker', stateRoot, operationId], process.env, [log, log]);
45
- const worker = await processIdentity(pid);
46
- if (!worker) throw new Error('服务重启进程未启动。');
47
- const current = readRecord(lock);
48
- if (current?.operationId !== operationId) throw new Error('服务重启实例已失效。');
49
- writeRecord(lock, { ...current, owner: worker });
50
- return { operationId, status: 'scheduled', message: '工作站服务重启已安排。' };
51
- } catch (error) {
52
- const current = readRecord(lock);
53
- if (current?.operationId === operationId && sameProcess(current.owner, owner)) fs.rmSync(lock, { force: true });
54
- throw error;
55
- }
56
- }
57
-
58
- async function run(stateRoot, operationId) {
59
- const lock = path.join(stateRoot, 'service-restart.lock');
60
- try {
61
- const deadline = Date.now() + 30000;
62
- while (true) {
63
- const record = readRecord(lock);
64
- if (record?.operationId !== operationId) throw new Error('服务重启实例已失效。');
65
- if (record.owner?.pid === process.pid) break;
66
- if (Date.now() >= deadline) throw new Error('服务重启进程交接超时。');
67
- await delay(100);
68
- }
69
- const service = lifecycle({ stateRoot, host });
70
- await delay(1000);
71
- await service.stop();
72
- await service.start();
73
- } finally {
74
- if (readRecord(lock)?.operationId === operationId) fs.rmSync(lock, { force: true });
75
- }
76
- }
77
-
78
- if (process.argv[1] && path.resolve(process.argv[1]) === script && process.argv[2] === '--worker') {
79
- const [stateRoot, operationId] = process.argv.slice(3);
80
- run(stateRoot, operationId).catch(error => { console.error(error.message); process.exitCode = 1; });
81
- }
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { setTimeout as delay } from 'node:timers/promises';
6
+ import { startBackground } from './background-process.mjs';
7
+ import { lifecycle, readRecord, writeRecord } from './service-lifecycle.mjs';
8
+ import * as host from './platform/service-host.mjs';
9
+ import { desktopHost } from './platform/desktop-host.mjs';
10
+
11
+ const script = fileURLToPath(import.meta.url);
12
+ const sameProcess = (expected, actual) => expected && actual && expected.pid === actual.pid &&
13
+ expected.created === actual.created && expected.executable === actual.executable;
14
+ async function processIdentity(pid) {
15
+ const current = await desktopHost.process(pid);
16
+ return current ? { pid: current.pid, created: current.created, executable: current.executable } : null;
17
+ }
18
+
19
+ export async function requestServiceRestart(stateRoot) {
20
+ const lock = path.join(stateRoot, 'service-restart.lock');
21
+ const operationId = randomUUID();
22
+ const owner = await processIdentity(process.pid);
23
+ if (!owner) throw new Error('无法确认服务重启请求进程。');
24
+ const previous = readRecord(lock);
25
+ if (previous) {
26
+ const actual = previous.owner?.pid ? await processIdentity(previous.owner.pid) : null;
27
+ if (sameProcess(previous.owner, actual) || readRecord(lock)?.operationId !== previous.operationId) {
28
+ throw new Error('工作站服务已在重启中。');
29
+ }
30
+ fs.rmSync(lock);
31
+ }
32
+ const temporary = `${lock}.${operationId}.tmp`;
33
+ try {
34
+ fs.writeFileSync(temporary, JSON.stringify({ operationId, owner, requestedAt: new Date().toISOString() }),
35
+ { flag: 'wx', mode: 0o600 });
36
+ // Publish a complete record exclusively; a crash cannot leave a half-written lock.
37
+ fs.linkSync(temporary, lock);
38
+ } catch (error) {
39
+ if (error.code === 'EEXIST') throw new Error('工作站服务已在重启中。');
40
+ throw error;
41
+ } finally { fs.rmSync(temporary, { force: true }); }
42
+ try {
43
+ const log = path.join(stateRoot, 'service-restart.log');
44
+ const pid = await startBackground(process.execPath, [script, '--worker', stateRoot, operationId], process.env, [log, log]);
45
+ const worker = await processIdentity(pid);
46
+ if (!worker) throw new Error('服务重启进程未启动。');
47
+ const current = readRecord(lock);
48
+ if (current?.operationId !== operationId) throw new Error('服务重启实例已失效。');
49
+ writeRecord(lock, { ...current, owner: worker });
50
+ return { operationId, status: 'scheduled', message: '工作站服务重启已安排。' };
51
+ } catch (error) {
52
+ const current = readRecord(lock);
53
+ if (current?.operationId === operationId && sameProcess(current.owner, owner)) fs.rmSync(lock, { force: true });
54
+ throw error;
55
+ }
56
+ }
57
+
58
+ async function run(stateRoot, operationId) {
59
+ const lock = path.join(stateRoot, 'service-restart.lock');
60
+ try {
61
+ const deadline = Date.now() + 30000;
62
+ while (true) {
63
+ const record = readRecord(lock);
64
+ if (record?.operationId !== operationId) throw new Error('服务重启实例已失效。');
65
+ if (record.owner?.pid === process.pid) break;
66
+ if (Date.now() >= deadline) throw new Error('服务重启进程交接超时。');
67
+ await delay(100);
68
+ }
69
+ const service = lifecycle({ stateRoot, host });
70
+ await delay(1000);
71
+ await service.stop();
72
+ await service.start();
73
+ } finally {
74
+ if (readRecord(lock)?.operationId === operationId) fs.rmSync(lock, { force: true });
75
+ }
76
+ }
77
+
78
+ if (process.argv[1] && path.resolve(process.argv[1]) === script && process.argv[2] === '--worker') {
79
+ const [stateRoot, operationId] = process.argv.slice(3);
80
+ run(stateRoot, operationId).catch(error => { console.error(error.message); process.exitCode = 1; });
81
+ }
@@ -123,14 +123,18 @@ export class SharedAppServer extends EventEmitter {
123
123
  const id = ++this.sequence;
124
124
  return new Promise((resolve, reject) => {
125
125
  const timer = setTimeout(() => {
126
- this.pending.delete(id);
127
- reject(Object.assign(new Error(`${method} 超时;不会自动重发,请先检查对话。`),
128
- { code: 'app_server_request_timeout' }));
126
+ const error = Object.assign(new Error(`${method} 超时;不会自动重发,请先检查对话。`),
127
+ { code: 'app_server_request_timeout' });
128
+ if ((method === 'turn/start' || method === 'turn/steer') && this.pending.has(id)) {
129
+ messageDelivery.retainLateResult(this.pending.get(id), error);
130
+ } else { this.pending.delete(id); reject(error); }
129
131
  }, 30000);
130
132
  this.pending.set(id, { resolve, reject, timer, transform, threadId: params?.threadId });
131
133
  this.socket.send(JSON.stringify({ id, method, params }), error => {
132
- if (!error || !this.pending.delete(id)) return;
133
- clearTimeout(timer); reject(error);
134
+ const pending = this.pending.get(id);
135
+ if (!error || !pending) return;
136
+ this.pending.delete(id);
137
+ clearTimeout(timer); pending.reject(error);
134
138
  });
135
139
  });
136
140
  }
@@ -140,19 +144,21 @@ export class SharedAppServer extends EventEmitter {
140
144
  return events.readProjects((method, params) => this.request(method, params));
141
145
  }
142
146
 
143
- async send(args) {
147
+ async send(args, { assertCurrent = () => {} } = {}) {
144
148
  let submitted = false;
145
149
  try {
146
150
  await this.connect();
147
151
  this.requireWritable(args.threadId);
148
152
  // Reading the live thread checks this service owns it without resume changing settings.
149
153
  const { thread } = await this.request('thread/read', { threadId: args.threadId, includeTurns: false });
154
+ assertCurrent();
150
155
  const status = typeof thread.status === 'string' ? thread.status : thread.status?.type;
151
156
  if (status === 'active') {
152
157
  const page = await this.request('thread/turns/list', {
153
158
  threadId: args.threadId, limit: 1, sortDirection: 'desc', itemsView: 'notLoaded',
154
159
  });
155
160
  const active = page.data?.[0];
161
+ assertCurrent();
156
162
  if (active?.status !== 'inProgress') throw new Error('活动轮次已变化,请刷新后再发送。');
157
163
  const { turnTrigger, ...source } = events.mobileTurnSource(args.clientUserMessageId, args.responsesapiClientMetadata?.code_relax_input === 'speech_to_text');
158
164
  submitted = true;
@@ -214,7 +220,10 @@ export class SharedAppServer extends EventEmitter {
214
220
  }
215
221
  const current = record.thread.turns?.find(turn => turn.id === (params.turn?.id || params.turnId));
216
222
  if (method === 'item/completed' && !record.hydrating && current?.itemPage?.olderCursor && !current.items.some(item => item.id === params.item?.id)) return;
217
- const visibleParams = (record.hydrating || current?.itemPage?.olderCursor) && method === 'turn/completed' && Array.isArray(params.turn?.items)
223
+ // Current app-server completion summaries carry the terminal answer, not
224
+ // an unrequested history page. Its ID may be new during snapshot handoff.
225
+ const visibleParams = (record.hydrating || current?.itemPage?.olderCursor) && method === 'turn/completed'
226
+ && params.turn?.itemsView !== 'summary' && Array.isArray(params.turn?.items)
218
227
  ? { ...params, turn: { ...params.turn,
219
228
  items: params.turn.items.filter(item => current?.items?.some(loaded => loaded.id === item.id)) } }
220
229
  : params;