@walkhi/code-relax 0.1.0-beta.4 → 0.1.0-beta.41

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 (845) hide show
  1. package/README.md +83 -71
  2. package/dist/bin/cleanup-accounts.mjs +63 -0
  3. package/dist/bin/codex-remote.mjs +323 -184
  4. package/dist/bin/manage-relay-admin.mjs +20 -0
  5. package/dist/bin/migrate-relay-db.mjs +109 -0
  6. package/dist/bin/publish-android-release.mjs +63 -0
  7. package/dist/bin/publish-harmony-release.mjs +46 -0
  8. package/dist/bin/release-upload-server.mjs +174 -0
  9. package/dist/bin/self-relay-admin.mjs +8 -0
  10. package/dist/bin/self-relay-demo.mjs +2 -2
  11. package/dist/bin/self-relay-server.mjs +43 -30
  12. package/dist/build-platform.json +1 -0
  13. package/dist/get-shared-service-url.ps1 +6 -6
  14. package/dist/shared/app-server-events.cjs +368 -238
  15. package/dist/shared/code-browser.cjs +159 -0
  16. package/dist/shared/file-changes.cjs +31 -0
  17. package/dist/shared/file-citations.cjs +117 -0
  18. package/dist/shared/file-mentions.cjs +92 -0
  19. package/dist/shared/message-delivery.cjs +100 -0
  20. package/dist/shared/p2p-data-channel.cjs +22 -0
  21. package/dist/shared/p2p-diagnostics.cjs +1 -1
  22. package/dist/shared/p2p-file-channel.cjs +87 -0
  23. package/dist/shared/p2p-ice-policy.cjs +22 -0
  24. package/dist/shared/plan-pricing.cjs +32 -0
  25. package/dist/shared/question-attention.cjs +69 -0
  26. package/dist/shared/server-requests.cjs +157 -5
  27. package/dist/shared/service-endpoints.cjs +21 -0
  28. package/dist/shared/timeline-sync.cjs +111 -5
  29. package/dist/skills/code-relax/SKILL.md +13 -8
  30. package/dist/src/archived-threads.mjs +22 -0
  31. package/dist/src/bounded-process-log.mjs +63 -0
  32. package/dist/src/celsius-client.mjs +107 -0
  33. package/dist/src/code-browser.mjs +100 -0
  34. package/dist/src/desktop-launcher.mjs +33 -38
  35. package/dist/src/dots-approval-timeline.mjs +99 -0
  36. package/dist/src/dots-avatar.mjs +42 -0
  37. package/dist/src/dots-chat-projection.mjs +50 -0
  38. package/dist/src/dots-chat-server.mjs +482 -0
  39. package/dist/src/dots-message-images.mjs +319 -0
  40. package/dist/src/dots-profile.mjs +77 -0
  41. package/dist/src/dots-room-activity.mjs +94 -0
  42. package/dist/src/dots-room-client.mjs +135 -0
  43. package/dist/src/dots-room-projection.mjs +94 -0
  44. package/dist/src/dots-schedules.mjs +66 -0
  45. package/dist/src/dots-summary-tasks.mjs +32 -0
  46. package/dist/src/dots-task-catalog.mjs +430 -0
  47. package/dist/src/dots-task-files.mjs +52 -0
  48. package/dist/src/file-transfer-range.mjs +22 -0
  49. package/dist/src/file-upload-session.mjs +130 -0
  50. package/dist/src/hosted-history-app-server.mjs +103 -0
  51. package/dist/src/hosted-history-cache.mjs +113 -0
  52. package/dist/src/lan-socket-server.mjs +241 -84
  53. package/dist/src/managed-app-server.mjs +54 -16
  54. package/dist/src/message-images.mjs +0 -18
  55. package/dist/src/message-upload-files.mjs +109 -0
  56. package/dist/src/onboarding.mjs +10 -29
  57. package/dist/src/plan-pricing.mjs +47 -0
  58. package/dist/src/platform/README.md +2 -2
  59. package/dist/src/platform/codex-protocol.mjs +46 -0
  60. package/dist/src/platform/codex-runtime.mjs +3 -0
  61. package/dist/src/platform/credential-store.mjs +3 -0
  62. package/dist/src/platform/desktop-host.mjs +3 -0
  63. package/dist/src/platform/desktop-project-registration.mjs +3 -0
  64. package/dist/src/platform/desktop-project-store.mjs +208 -0
  65. package/dist/src/platform/file-opener.mjs +9 -0
  66. package/dist/src/platform/linux/codex-runtime.mjs +56 -0
  67. package/dist/src/platform/linux/credential-store.mjs +28 -0
  68. package/dist/src/platform/linux/desktop-host.mjs +83 -0
  69. package/dist/src/platform/linux/desktop-installation.mjs +36 -0
  70. package/dist/src/platform/linux/desktop-project-registration.mjs +11 -0
  71. package/dist/src/platform/linux/network-info.mjs +11 -0
  72. package/dist/src/platform/linux/process.mjs +42 -0
  73. package/dist/src/platform/linux/project-locations.mjs +17 -0
  74. package/dist/src/platform/linux/resident-startup.mjs +52 -0
  75. package/dist/src/platform/linux/retained-runtime.mjs +76 -0
  76. package/dist/src/platform/linux/service-host.mjs +18 -0
  77. package/dist/src/platform/linux/system.mjs +49 -0
  78. package/dist/src/platform/linux/user-environment.mjs +7 -0
  79. package/dist/src/platform/macos/codex-runtime.mjs +125 -0
  80. package/dist/src/platform/macos/credential-store.mjs +10 -0
  81. package/dist/src/platform/macos/desktop-host.mjs +82 -0
  82. package/dist/src/platform/macos/desktop-project-registration.mjs +11 -0
  83. package/dist/src/platform/macos/network-info.mjs +8 -0
  84. package/dist/src/platform/macos/project-locations.mjs +8 -0
  85. package/dist/src/platform/macos/resident-startup.mjs +84 -0
  86. package/dist/src/platform/macos/retained-runtime.mjs +127 -0
  87. package/dist/src/platform/macos/service-host.mjs +18 -0
  88. package/dist/src/platform/macos/system.mjs +29 -0
  89. package/dist/src/platform/macos/user-environment.mjs +7 -0
  90. package/dist/src/platform/native-package.mjs +58 -0
  91. package/dist/src/platform/network-info.mjs +3 -0
  92. package/dist/src/platform/path-identity.mjs +5 -0
  93. package/dist/src/platform/posix/network-candidates.mjs +23 -0
  94. package/dist/src/platform/posix/runtime-paths.mjs +25 -0
  95. package/dist/src/platform/power-inhibitor.mjs +22 -0
  96. package/dist/src/platform/project-locations.mjs +3 -0
  97. package/dist/src/platform/runtime-paths.mjs +8 -0
  98. package/dist/src/platform/select.mjs +5 -0
  99. package/dist/src/platform/service-host.mjs +3 -0
  100. package/dist/src/platform/user-environment.mjs +3 -0
  101. package/dist/src/platform/windows/activate-desktop.ps1 +48 -0
  102. package/dist/src/platform/windows/codex-runtime.mjs +215 -0
  103. package/dist/src/platform/windows/credential-store.mjs +27 -27
  104. package/dist/src/platform/windows/credential-store.ps1 +49 -49
  105. package/dist/src/platform/windows/desktop-helper.mjs +179 -0
  106. package/dist/src/platform/windows/desktop-host.mjs +43 -23
  107. package/dist/src/platform/windows/desktop-info.ps1 +14 -16
  108. package/dist/src/platform/windows/desktop-project-registration.mjs +4 -0
  109. package/dist/src/platform/windows/desktop-runtime.ps1 +10 -0
  110. package/dist/src/platform/windows/desktop-shortcuts.ps1 +21 -28
  111. package/dist/src/platform/windows/dots-profile.mjs +49 -0
  112. package/dist/src/platform/windows/keep-awake.ps1 +20 -0
  113. package/dist/src/platform/windows/launch-worker.mjs +17 -18
  114. package/dist/src/platform/windows/project-locations.mjs +16 -0
  115. package/dist/src/platform/windows/resident-start.js +20 -0
  116. package/dist/src/platform/windows/resident-startup.ps1 +76 -20
  117. package/dist/src/platform/windows/rustdesk-video-probe.mjs +168 -0
  118. package/dist/src/platform/windows/service-host.mjs +24 -36
  119. package/dist/src/platform/windows/stop-desktop.ps1 +7 -4
  120. package/dist/src/platform/windows/user-environment.mjs +1 -1
  121. package/dist/src/project-create.mjs +121 -0
  122. package/dist/src/project-management.mjs +59 -0
  123. package/dist/src/project-remove.mjs +55 -0
  124. package/dist/src/project-update.mjs +59 -0
  125. package/dist/src/runtime-discovery.mjs +47 -0
  126. package/dist/src/self-relay/account-cleanup.mjs +30 -0
  127. package/dist/src/self-relay/account-connections.mjs +52 -0
  128. package/dist/src/self-relay/admin-cloud.mjs +101 -0
  129. package/dist/src/self-relay/admin-page.mjs +80 -0
  130. package/dist/src/self-relay/admin-server.mjs +74 -0
  131. package/dist/src/self-relay/admin-state.mjs +85 -19
  132. package/dist/src/self-relay/admin-style.mjs +14 -0
  133. package/dist/src/self-relay/android-releases.mjs +61 -0
  134. package/dist/src/self-relay/client.mjs +45 -45
  135. package/dist/src/self-relay/connector.mjs +421 -144
  136. package/dist/src/self-relay/demo.mjs +34 -35
  137. package/dist/src/self-relay/device-info.mjs +27 -0
  138. package/dist/src/self-relay/device-store.mjs +10 -2
  139. package/dist/src/self-relay/diagnostics.mjs +54 -0
  140. package/dist/src/self-relay/email-accounts.mjs +183 -0
  141. package/dist/src/self-relay/file-wire.mjs +13 -0
  142. package/dist/src/self-relay/lan-authorizations.mjs +44 -2
  143. package/dist/src/self-relay/lifecycle.mjs +250 -272
  144. package/dist/src/self-relay/long-pairing.mjs +40 -0
  145. package/dist/src/self-relay/mysql-state.mjs +118 -0
  146. package/dist/src/self-relay/p2p-probe.mjs +56 -11
  147. package/dist/src/self-relay/privacy-page.mjs +26 -0
  148. package/dist/src/self-relay/public-releases.mjs +52 -0
  149. package/dist/src/self-relay/rtc-file-bridge.mjs +41 -0
  150. package/dist/src/self-relay/server.mjs +652 -114
  151. package/dist/src/self-relay/usage-daily.mjs +55 -0
  152. package/dist/src/self-relay/usage-meter.mjs +141 -0
  153. package/dist/src/server.mjs +1519 -1793
  154. package/dist/src/service-control.mjs +17 -7
  155. package/dist/src/service-doctor.mjs +86 -33
  156. package/dist/src/service-health.mjs +2 -2
  157. package/dist/src/service-install.mjs +91 -85
  158. package/dist/src/service-lifecycle.mjs +117 -108
  159. package/dist/src/service-power.mjs +58 -0
  160. package/dist/src/service-restart.mjs +43 -10
  161. package/dist/src/service-update-worker.mjs +42 -0
  162. package/dist/src/service-update.mjs +71 -0
  163. package/dist/src/shared-app-server.mjs +561 -407
  164. package/dist/src/shared-catalog.mjs +95 -13
  165. package/dist/src/shared-recovery.mjs +15 -11
  166. package/dist/src/shared-thread-stream.mjs +147 -63
  167. package/dist/src/skill-install.mjs +0 -13
  168. package/dist/src/turn-model-history.mjs +47 -0
  169. package/dist/src/usage-reset.mjs +17 -0
  170. package/dist/src/workstation-downloads.mjs +120 -0
  171. package/package.json +35 -37
  172. package/tools/postinstall.mjs +86 -22
  173. package/dist/src/app-server-client.mjs +0 -468
  174. package/dist/src/app-server-tasks.mjs +0 -358
  175. package/dist/src/debug-ui.mjs +0 -131
  176. package/dist/src/platform/windows/desktop-monitor.mjs +0 -34
  177. package/dist/src/platform/windows/desktop-shortcut-run.ps1 +0 -5
  178. package/dist/src/platform/windows/desktop-tools.mjs +0 -48
  179. package/dist/src/thread-catalog.mjs +0 -47
  180. package/dist/tools/find-desktop-pipe.mjs +0 -10
  181. package/dist/web/activity-view.js +0 -283
  182. package/dist/web/approval-ui.js +0 -188
  183. package/dist/web/capabilities.js +0 -57
  184. package/dist/web/chat-transport.js +0 -202
  185. package/dist/web/chat.css +0 -782
  186. package/dist/web/chat.js +0 -3830
  187. package/dist/web/client-platform.js +0 -11
  188. package/dist/web/community-view.js +0 -20
  189. package/dist/web/community.css +0 -77
  190. package/dist/web/community.html +0 -37
  191. package/dist/web/composer-controller.js +0 -101
  192. package/dist/web/conversation-controller.js +0 -99
  193. package/dist/web/disclosure-state-controller.js +0 -95
  194. package/dist/web/draft-controller.js +0 -103
  195. package/dist/web/harmony-platform.js +0 -52
  196. package/dist/web/highlight-powershell.min.js +0 -39
  197. package/dist/web/highlight.min.js +0 -1262
  198. package/dist/web/history-cache.js +0 -240
  199. package/dist/web/history-controller.js +0 -167
  200. package/dist/web/index.html +0 -325
  201. package/dist/web/lan-session.js +0 -122
  202. package/dist/web/link-action-controller.js +0 -212
  203. package/dist/web/message-send-controller.js +0 -177
  204. package/dist/web/message-view.js +0 -98
  205. package/dist/web/p2p-data-channel.js +0 -50
  206. package/dist/web/p2p-diagnostics.js +0 -28
  207. package/dist/web/p2p-probe.js +0 -123
  208. package/dist/web/page-resume.js +0 -28
  209. package/dist/web/pending-message-store.js +0 -108
  210. package/dist/web/queue-controller.js +0 -82
  211. package/dist/web/resources.json +0 -1
  212. package/dist/web/self-relay-session.js +0 -129
  213. package/dist/web/server-requests.js +0 -67
  214. package/dist/web/station-connection-controller.js +0 -75
  215. package/dist/web/task-list-view.js +0 -296
  216. package/dist/web/thread-attention-controller.js +0 -124
  217. package/dist/web/thread-context-controller.js +0 -30
  218. package/dist/web/thread-list-controller.js +0 -61
  219. package/dist/web/thread-list-sync.js +0 -86
  220. package/dist/web/thread-title-controller.js +0 -57
  221. package/dist/web/timeline-formatters.js +0 -249
  222. package/dist/web/timeline-reducer.js +0 -81
  223. package/dist/web/timeline-renderer.js +0 -161
  224. package/dist/web/timeline-scroll-controller.js +0 -50
  225. package/dist/web/timeline-sync.js +0 -67
  226. package/dist/web/usage-controller.js +0 -258
  227. package/dist/web/vendor/README.md +0 -14
  228. package/dist/web/vendor/highlight-powershell.min.js +0 -39
  229. package/dist/web/vendor/highlight.LICENSE.txt +0 -29
  230. package/dist/web/vendor/highlight.min.js +0 -1262
  231. package/dist/web/vendor/lucide.LICENSE.txt +0 -17
  232. package/node_modules/@img/colour/LICENSE.md +0 -82
  233. package/node_modules/@img/colour/README.md +0 -15
  234. package/node_modules/@img/colour/color.cjs +0 -1596
  235. package/node_modules/@img/colour/index.cjs +0 -1
  236. package/node_modules/@img/colour/index.d.ts +0 -929
  237. package/node_modules/@img/colour/package.json +0 -58
  238. package/node_modules/@img/sharp-win32-x64/LICENSE +0 -191
  239. package/node_modules/@img/sharp-win32-x64/README.md +0 -59
  240. package/node_modules/@img/sharp-win32-x64/index.cjs +0 -1
  241. package/node_modules/@img/sharp-win32-x64/lib/libvips-42.dll +0 -0
  242. package/node_modules/@img/sharp-win32-x64/lib/libvips-cpp-8.18.6.dll +0 -0
  243. package/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64-0.35.4.node +0 -0
  244. package/node_modules/@img/sharp-win32-x64/package.json +0 -40
  245. package/node_modules/@img/sharp-win32-x64/versions.json +0 -30
  246. package/node_modules/@node-datachannel/win32-x64-msvc/node_datachannel.node +0 -0
  247. package/node_modules/@node-datachannel/win32-x64-msvc/package.json +0 -20
  248. package/node_modules/ansi-regex/index.d.ts +0 -37
  249. package/node_modules/ansi-regex/index.js +0 -10
  250. package/node_modules/ansi-regex/license +0 -9
  251. package/node_modules/ansi-regex/package.json +0 -55
  252. package/node_modules/ansi-regex/readme.md +0 -78
  253. package/node_modules/ansi-styles/index.d.ts +0 -345
  254. package/node_modules/ansi-styles/index.js +0 -163
  255. package/node_modules/ansi-styles/license +0 -9
  256. package/node_modules/ansi-styles/package.json +0 -56
  257. package/node_modules/ansi-styles/readme.md +0 -152
  258. package/node_modules/camelcase/index.d.ts +0 -63
  259. package/node_modules/camelcase/index.js +0 -76
  260. package/node_modules/camelcase/license +0 -9
  261. package/node_modules/camelcase/package.json +0 -43
  262. package/node_modules/camelcase/readme.md +0 -99
  263. package/node_modules/cliui/CHANGELOG.md +0 -76
  264. package/node_modules/cliui/LICENSE.txt +0 -14
  265. package/node_modules/cliui/README.md +0 -115
  266. package/node_modules/cliui/index.js +0 -354
  267. package/node_modules/cliui/package.json +0 -65
  268. package/node_modules/color-convert/CHANGELOG.md +0 -54
  269. package/node_modules/color-convert/LICENSE +0 -21
  270. package/node_modules/color-convert/README.md +0 -68
  271. package/node_modules/color-convert/conversions.js +0 -839
  272. package/node_modules/color-convert/index.js +0 -81
  273. package/node_modules/color-convert/package.json +0 -48
  274. package/node_modules/color-convert/route.js +0 -97
  275. package/node_modules/color-name/LICENSE +0 -8
  276. package/node_modules/color-name/README.md +0 -11
  277. package/node_modules/color-name/index.js +0 -152
  278. package/node_modules/color-name/package.json +0 -28
  279. package/node_modules/decamelize/index.js +0 -13
  280. package/node_modules/decamelize/license +0 -21
  281. package/node_modules/decamelize/package.json +0 -38
  282. package/node_modules/decamelize/readme.md +0 -48
  283. package/node_modules/detect-libc/LICENSE +0 -201
  284. package/node_modules/detect-libc/README.md +0 -163
  285. package/node_modules/detect-libc/index.d.ts +0 -14
  286. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  287. package/node_modules/detect-libc/lib/elf.js +0 -39
  288. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  289. package/node_modules/detect-libc/lib/process.js +0 -24
  290. package/node_modules/detect-libc/package.json +0 -44
  291. package/node_modules/dijkstrajs/.travis.yml +0 -4
  292. package/node_modules/dijkstrajs/CONTRIBUTING.md +0 -8
  293. package/node_modules/dijkstrajs/LICENSE.md +0 -19
  294. package/node_modules/dijkstrajs/README.md +0 -18
  295. package/node_modules/dijkstrajs/dijkstra.js +0 -165
  296. package/node_modules/dijkstrajs/package.json +0 -60
  297. package/node_modules/dijkstrajs/test/dijkstra.test.js +0 -96
  298. package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  299. package/node_modules/emoji-regex/README.md +0 -73
  300. package/node_modules/emoji-regex/es2015/index.js +0 -6
  301. package/node_modules/emoji-regex/es2015/text.js +0 -6
  302. package/node_modules/emoji-regex/index.d.ts +0 -23
  303. package/node_modules/emoji-regex/index.js +0 -6
  304. package/node_modules/emoji-regex/package.json +0 -50
  305. package/node_modules/emoji-regex/text.js +0 -6
  306. package/node_modules/find-up/index.d.ts +0 -137
  307. package/node_modules/find-up/index.js +0 -89
  308. package/node_modules/find-up/license +0 -9
  309. package/node_modules/find-up/package.json +0 -53
  310. package/node_modules/find-up/readme.md +0 -156
  311. package/node_modules/get-caller-file/LICENSE.md +0 -6
  312. package/node_modules/get-caller-file/README.md +0 -41
  313. package/node_modules/get-caller-file/index.d.ts +0 -2
  314. package/node_modules/get-caller-file/index.js +0 -22
  315. package/node_modules/get-caller-file/index.js.map +0 -1
  316. package/node_modules/get-caller-file/package.json +0 -42
  317. package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  318. package/node_modules/is-fullwidth-code-point/index.js +0 -50
  319. package/node_modules/is-fullwidth-code-point/license +0 -9
  320. package/node_modules/is-fullwidth-code-point/package.json +0 -42
  321. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  322. package/node_modules/locate-path/index.d.ts +0 -83
  323. package/node_modules/locate-path/index.js +0 -65
  324. package/node_modules/locate-path/license +0 -9
  325. package/node_modules/locate-path/package.json +0 -45
  326. package/node_modules/locate-path/readme.md +0 -122
  327. package/node_modules/node-datachannel/.clang-format +0 -17
  328. package/node_modules/node-datachannel/.editorconfig +0 -12
  329. package/node_modules/node-datachannel/.eslintignore +0 -8
  330. package/node_modules/node-datachannel/.eslintrc.json +0 -27
  331. package/node_modules/node-datachannel/.gitmodules +0 -3
  332. package/node_modules/node-datachannel/.prettierignore +0 -7
  333. package/node_modules/node-datachannel/.prettierrc +0 -13
  334. package/node_modules/node-datachannel/API.md +0 -247
  335. package/node_modules/node-datachannel/BULDING.md +0 -26
  336. package/node_modules/node-datachannel/CMakeLists.txt +0 -153
  337. package/node_modules/node-datachannel/LICENSE +0 -373
  338. package/node_modules/node-datachannel/README.md +0 -129
  339. package/node_modules/node-datachannel/dist/cjs/index.cjs +0 -11
  340. package/node_modules/node-datachannel/dist/cjs/index.cjs.map +0 -1
  341. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs +0 -101
  342. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs.map +0 -1
  343. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs +0 -91
  344. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs.map +0 -1
  345. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs +0 -94
  346. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs.map +0 -1
  347. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs +0 -45
  348. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs.map +0 -1
  349. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs +0 -8
  350. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs.map +0 -1
  351. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs +0 -86
  352. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs.map +0 -1
  353. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs +0 -34
  354. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs.map +0 -1
  355. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs +0 -34
  356. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs.map +0 -1
  357. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs +0 -214
  358. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs.map +0 -1
  359. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs +0 -53
  360. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +0 -1
  361. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs +0 -83
  362. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs.map +0 -1
  363. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs +0 -132
  364. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs.map +0 -1
  365. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs +0 -94
  366. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs.map +0 -1
  367. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs +0 -434
  368. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs.map +0 -1
  369. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs +0 -59
  370. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs.map +0 -1
  371. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs +0 -45
  372. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs.map +0 -1
  373. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs +0 -42
  374. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs.map +0 -1
  375. package/node_modules/node-datachannel/dist/esm/index.mjs +0 -8
  376. package/node_modules/node-datachannel/dist/esm/index.mjs.map +0 -1
  377. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs +0 -78
  378. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs.map +0 -1
  379. package/node_modules/node-datachannel/dist/esm/lib/index.mjs +0 -64
  380. package/node_modules/node-datachannel/dist/esm/lib/index.mjs.map +0 -1
  381. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs +0 -78
  382. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs.map +0 -1
  383. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs +0 -43
  384. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs.map +0 -1
  385. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs +0 -6
  386. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs.map +0 -1
  387. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs +0 -82
  388. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs.map +0 -1
  389. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs +0 -28
  390. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs.map +0 -1
  391. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs +0 -30
  392. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs.map +0 -1
  393. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs +0 -210
  394. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs.map +0 -1
  395. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs +0 -49
  396. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs.map +0 -1
  397. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs +0 -79
  398. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs.map +0 -1
  399. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs +0 -128
  400. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs.map +0 -1
  401. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs +0 -89
  402. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs.map +0 -1
  403. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs +0 -430
  404. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs.map +0 -1
  405. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs +0 -55
  406. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs.map +0 -1
  407. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs +0 -41
  408. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs.map +0 -1
  409. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs +0 -27
  410. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs.map +0 -1
  411. package/node_modules/node-datachannel/dist/types/lib/datachannel-stream.d.ts +0 -24
  412. package/node_modules/node-datachannel/dist/types/lib/index.d.ts +0 -241
  413. package/node_modules/node-datachannel/dist/types/lib/types.d.ts +0 -119
  414. package/node_modules/node-datachannel/dist/types/lib/websocket-server.d.ts +0 -13
  415. package/node_modules/node-datachannel/dist/types/lib/websocket.d.ts +0 -25
  416. package/node_modules/node-datachannel/dist/types/polyfill/Events.d.ts +0 -15
  417. package/node_modules/node-datachannel/dist/types/polyfill/RTCCertificate.d.ts +0 -9
  418. package/node_modules/node-datachannel/dist/types/polyfill/RTCDataChannel.d.ts +0 -29
  419. package/node_modules/node-datachannel/dist/types/polyfill/RTCDtlsTransport.d.ts +0 -15
  420. package/node_modules/node-datachannel/dist/types/polyfill/RTCError.d.ts +0 -17
  421. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceCandidate.d.ts +0 -21
  422. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceTransport.d.ts +0 -30
  423. package/node_modules/node-datachannel/dist/types/polyfill/RTCPeerConnection.d.ts +0 -64
  424. package/node_modules/node-datachannel/dist/types/polyfill/RTCSctpTransport.d.ts +0 -15
  425. package/node_modules/node-datachannel/dist/types/polyfill/RTCSessionDescription.d.ts +0 -10
  426. package/node_modules/node-datachannel/dist/types/polyfill/index.d.ts +0 -26
  427. package/node_modules/node-datachannel/jest.config.ts +0 -14
  428. package/node_modules/node-datachannel/package.json +0 -133
  429. package/node_modules/node-datachannel/rollup.config.mjs +0 -67
  430. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.cpp +0 -530
  431. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.h +0 -63
  432. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.cpp +0 -172
  433. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.h +0 -43
  434. package/node_modules/node-datachannel/src/cpp/main.cpp +0 -58
  435. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.cpp +0 -457
  436. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.h +0 -52
  437. package/node_modules/node-datachannel/src/cpp/media-av1packetization.cpp +0 -24
  438. package/node_modules/node-datachannel/src/cpp/media-av1packetization.h +0 -11
  439. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.cpp +0 -126
  440. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.h +0 -29
  441. package/node_modules/node-datachannel/src/cpp/media-direction.cpp +0 -43
  442. package/node_modules/node-datachannel/src/cpp/media-direction.h +0 -10
  443. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.cpp +0 -126
  444. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.h +0 -30
  445. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.cpp +0 -126
  446. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.h +0 -30
  447. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.cpp +0 -32
  448. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.h +0 -11
  449. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.cpp +0 -31
  450. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.h +0 -11
  451. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.cpp +0 -79
  452. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.h +0 -28
  453. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.cpp +0 -68
  454. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.h +0 -28
  455. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.cpp +0 -57
  456. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.h +0 -28
  457. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.cpp +0 -93
  458. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.h +0 -30
  459. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.cpp +0 -167
  460. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.h +0 -35
  461. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.cpp +0 -95
  462. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.h +0 -30
  463. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.cpp +0 -458
  464. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.h +0 -61
  465. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.cpp +0 -526
  466. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.h +0 -56
  467. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.cpp +0 -1298
  468. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.h +0 -89
  469. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.cpp +0 -205
  470. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.h +0 -24
  471. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.cpp +0 -57
  472. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.h +0 -47
  473. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.cpp +0 -275
  474. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.h +0 -41
  475. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.cpp +0 -796
  476. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.h +0 -63
  477. package/node_modules/node-datachannel/src/index.ts +0 -9
  478. package/node_modules/node-datachannel/src/lib/datachannel-stream.ts +0 -100
  479. package/node_modules/node-datachannel/src/lib/index.ts +0 -290
  480. package/node_modules/node-datachannel/src/lib/node-datachannel.ts +0 -84
  481. package/node_modules/node-datachannel/src/lib/types.ts +0 -169
  482. package/node_modules/node-datachannel/src/lib/websocket-server.ts +0 -37
  483. package/node_modules/node-datachannel/src/lib/websocket.ts +0 -26
  484. package/node_modules/node-datachannel/src/polyfill/Events.ts +0 -82
  485. package/node_modules/node-datachannel/src/polyfill/Exception.ts +0 -37
  486. package/node_modules/node-datachannel/src/polyfill/README.md +0 -41
  487. package/node_modules/node-datachannel/src/polyfill/RTCCertificate.ts +0 -21
  488. package/node_modules/node-datachannel/src/polyfill/RTCDataChannel.ts +0 -225
  489. package/node_modules/node-datachannel/src/polyfill/RTCDtlsTransport.ts +0 -46
  490. package/node_modules/node-datachannel/src/polyfill/RTCError.ts +0 -78
  491. package/node_modules/node-datachannel/src/polyfill/RTCIceCandidate.ts +0 -128
  492. package/node_modules/node-datachannel/src/polyfill/RTCIceTransport.ts +0 -90
  493. package/node_modules/node-datachannel/src/polyfill/RTCPeerConnection.ts +0 -527
  494. package/node_modules/node-datachannel/src/polyfill/RTCSctpTransport.ts +0 -51
  495. package/node_modules/node-datachannel/src/polyfill/RTCSessionDescription.ts +0 -41
  496. package/node_modules/node-datachannel/src/polyfill/index.ts +0 -38
  497. package/node_modules/node-datachannel/tsconfig.json +0 -21
  498. package/node_modules/p-limit/index.d.ts +0 -38
  499. package/node_modules/p-limit/index.js +0 -57
  500. package/node_modules/p-limit/license +0 -9
  501. package/node_modules/p-limit/package.json +0 -52
  502. package/node_modules/p-limit/readme.md +0 -101
  503. package/node_modules/p-locate/index.d.ts +0 -64
  504. package/node_modules/p-locate/index.js +0 -52
  505. package/node_modules/p-locate/license +0 -9
  506. package/node_modules/p-locate/package.json +0 -53
  507. package/node_modules/p-locate/readme.md +0 -90
  508. package/node_modules/p-try/index.d.ts +0 -39
  509. package/node_modules/p-try/index.js +0 -9
  510. package/node_modules/p-try/license +0 -9
  511. package/node_modules/p-try/package.json +0 -42
  512. package/node_modules/p-try/readme.md +0 -58
  513. package/node_modules/path-exists/index.d.ts +0 -28
  514. package/node_modules/path-exists/index.js +0 -23
  515. package/node_modules/path-exists/license +0 -9
  516. package/node_modules/path-exists/package.json +0 -39
  517. package/node_modules/path-exists/readme.md +0 -52
  518. package/node_modules/pngjs/.eslintignore +0 -2
  519. package/node_modules/pngjs/.eslintrc.json +0 -19
  520. package/node_modules/pngjs/.prettierignore +0 -3
  521. package/node_modules/pngjs/LICENSE +0 -20
  522. package/node_modules/pngjs/README.md +0 -429
  523. package/node_modules/pngjs/browser.js +0 -16096
  524. package/node_modules/pngjs/coverage/lcov-report/base.css +0 -354
  525. package/node_modules/pngjs/coverage/lcov-report/bitmapper.js.html +0 -881
  526. package/node_modules/pngjs/coverage/lcov-report/bitpacker.js.html +0 -554
  527. package/node_modules/pngjs/coverage/lcov-report/block-navigation.js +0 -77
  528. package/node_modules/pngjs/coverage/lcov-report/chunkstream.js.html +0 -647
  529. package/node_modules/pngjs/coverage/lcov-report/constants.js.html +0 -176
  530. package/node_modules/pngjs/coverage/lcov-report/crc.js.html +0 -200
  531. package/node_modules/pngjs/coverage/lcov-report/favicon.png +0 -0
  532. package/node_modules/pngjs/coverage/lcov-report/filter-pack.js.html +0 -593
  533. package/node_modules/pngjs/coverage/lcov-report/filter-parse-async.js.html +0 -152
  534. package/node_modules/pngjs/coverage/lcov-report/filter-parse-sync.js.html +0 -143
  535. package/node_modules/pngjs/coverage/lcov-report/filter-parse.js.html +0 -611
  536. package/node_modules/pngjs/coverage/lcov-report/format-normaliser.js.html +0 -359
  537. package/node_modules/pngjs/coverage/lcov-report/index.html +0 -426
  538. package/node_modules/pngjs/coverage/lcov-report/interlace.js.html +0 -365
  539. package/node_modules/pngjs/coverage/lcov-report/packer-async.js.html +0 -230
  540. package/node_modules/pngjs/coverage/lcov-report/packer-sync.js.html +0 -248
  541. package/node_modules/pngjs/coverage/lcov-report/packer.js.html +0 -467
  542. package/node_modules/pngjs/coverage/lcov-report/paeth-predictor.js.html +0 -128
  543. package/node_modules/pngjs/coverage/lcov-report/parser-async.js.html +0 -575
  544. package/node_modules/pngjs/coverage/lcov-report/parser-sync.js.html +0 -404
  545. package/node_modules/pngjs/coverage/lcov-report/parser.js.html +0 -950
  546. package/node_modules/pngjs/coverage/lcov-report/png-sync.js.html +0 -116
  547. package/node_modules/pngjs/coverage/lcov-report/png.js.html +0 -662
  548. package/node_modules/pngjs/coverage/lcov-report/prettify.css +0 -101
  549. package/node_modules/pngjs/coverage/lcov-report/prettify.js +0 -1007
  550. package/node_modules/pngjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  551. package/node_modules/pngjs/coverage/lcov-report/sorter.js +0 -169
  552. package/node_modules/pngjs/coverage/lcov-report/sync-inflate.js.html +0 -584
  553. package/node_modules/pngjs/coverage/lcov-report/sync-reader.js.html +0 -215
  554. package/node_modules/pngjs/coverage/lcov.info +0 -2177
  555. package/node_modules/pngjs/lib/bitmapper.js +0 -267
  556. package/node_modules/pngjs/lib/bitpacker.js +0 -158
  557. package/node_modules/pngjs/lib/chunkstream.js +0 -189
  558. package/node_modules/pngjs/lib/constants.js +0 -32
  559. package/node_modules/pngjs/lib/crc.js +0 -40
  560. package/node_modules/pngjs/lib/filter-pack.js +0 -171
  561. package/node_modules/pngjs/lib/filter-parse-async.js +0 -24
  562. package/node_modules/pngjs/lib/filter-parse-sync.js +0 -21
  563. package/node_modules/pngjs/lib/filter-parse.js +0 -177
  564. package/node_modules/pngjs/lib/format-normaliser.js +0 -93
  565. package/node_modules/pngjs/lib/interlace.js +0 -95
  566. package/node_modules/pngjs/lib/packer-async.js +0 -50
  567. package/node_modules/pngjs/lib/packer-sync.js +0 -56
  568. package/node_modules/pngjs/lib/packer.js +0 -129
  569. package/node_modules/pngjs/lib/paeth-predictor.js +0 -16
  570. package/node_modules/pngjs/lib/parser-async.js +0 -165
  571. package/node_modules/pngjs/lib/parser-sync.js +0 -108
  572. package/node_modules/pngjs/lib/parser.js +0 -290
  573. package/node_modules/pngjs/lib/png-sync.js +0 -12
  574. package/node_modules/pngjs/lib/png.js +0 -194
  575. package/node_modules/pngjs/lib/sync-inflate.js +0 -168
  576. package/node_modules/pngjs/lib/sync-reader.js +0 -45
  577. package/node_modules/pngjs/package.json +0 -73
  578. package/node_modules/qrcode/README.md +0 -770
  579. package/node_modules/qrcode/bin/qrcode +0 -159
  580. package/node_modules/qrcode/helper/to-sjis-browser.js +0 -2
  581. package/node_modules/qrcode/helper/to-sjis.js +0 -105
  582. package/node_modules/qrcode/lib/browser.js +0 -76
  583. package/node_modules/qrcode/lib/can-promise.js +0 -7
  584. package/node_modules/qrcode/lib/core/alignment-pattern.js +0 -83
  585. package/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -59
  586. package/node_modules/qrcode/lib/core/bit-buffer.js +0 -37
  587. package/node_modules/qrcode/lib/core/bit-matrix.js +0 -65
  588. package/node_modules/qrcode/lib/core/byte-data.js +0 -30
  589. package/node_modules/qrcode/lib/core/error-correction-code.js +0 -135
  590. package/node_modules/qrcode/lib/core/error-correction-level.js +0 -50
  591. package/node_modules/qrcode/lib/core/finder-pattern.js +0 -22
  592. package/node_modules/qrcode/lib/core/format-info.js +0 -29
  593. package/node_modules/qrcode/lib/core/galois-field.js +0 -69
  594. package/node_modules/qrcode/lib/core/kanji-data.js +0 -54
  595. package/node_modules/qrcode/lib/core/mask-pattern.js +0 -234
  596. package/node_modules/qrcode/lib/core/mode.js +0 -167
  597. package/node_modules/qrcode/lib/core/numeric-data.js +0 -43
  598. package/node_modules/qrcode/lib/core/polynomial.js +0 -62
  599. package/node_modules/qrcode/lib/core/qrcode.js +0 -495
  600. package/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -56
  601. package/node_modules/qrcode/lib/core/regex.js +0 -31
  602. package/node_modules/qrcode/lib/core/segments.js +0 -330
  603. package/node_modules/qrcode/lib/core/utils.js +0 -63
  604. package/node_modules/qrcode/lib/core/version-check.js +0 -9
  605. package/node_modules/qrcode/lib/core/version.js +0 -163
  606. package/node_modules/qrcode/lib/index.js +0 -12
  607. package/node_modules/qrcode/lib/renderer/canvas.js +0 -63
  608. package/node_modules/qrcode/lib/renderer/png.js +0 -78
  609. package/node_modules/qrcode/lib/renderer/svg-tag.js +0 -81
  610. package/node_modules/qrcode/lib/renderer/svg.js +0 -19
  611. package/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +0 -85
  612. package/node_modules/qrcode/lib/renderer/terminal/terminal.js +0 -49
  613. package/node_modules/qrcode/lib/renderer/terminal.js +0 -9
  614. package/node_modules/qrcode/lib/renderer/utf8.js +0 -71
  615. package/node_modules/qrcode/lib/renderer/utils.js +0 -99
  616. package/node_modules/qrcode/lib/server.js +0 -138
  617. package/node_modules/qrcode/license +0 -10
  618. package/node_modules/qrcode/package.json +0 -77
  619. package/node_modules/require-directory/.jshintrc +0 -67
  620. package/node_modules/require-directory/.npmignore +0 -1
  621. package/node_modules/require-directory/.travis.yml +0 -3
  622. package/node_modules/require-directory/LICENSE +0 -22
  623. package/node_modules/require-directory/README.markdown +0 -184
  624. package/node_modules/require-directory/index.js +0 -86
  625. package/node_modules/require-directory/package.json +0 -40
  626. package/node_modules/require-main-filename/CHANGELOG.md +0 -26
  627. package/node_modules/require-main-filename/LICENSE.txt +0 -14
  628. package/node_modules/require-main-filename/README.md +0 -26
  629. package/node_modules/require-main-filename/index.js +0 -18
  630. package/node_modules/require-main-filename/package.json +0 -35
  631. package/node_modules/semver/LICENSE +0 -15
  632. package/node_modules/semver/README.md +0 -680
  633. package/node_modules/semver/bin/semver.js +0 -195
  634. package/node_modules/semver/classes/comparator.js +0 -143
  635. package/node_modules/semver/classes/index.js +0 -7
  636. package/node_modules/semver/classes/range.js +0 -577
  637. package/node_modules/semver/classes/semver.js +0 -350
  638. package/node_modules/semver/functions/clean.js +0 -8
  639. package/node_modules/semver/functions/cmp.js +0 -54
  640. package/node_modules/semver/functions/coerce.js +0 -62
  641. package/node_modules/semver/functions/compare-build.js +0 -9
  642. package/node_modules/semver/functions/compare-loose.js +0 -5
  643. package/node_modules/semver/functions/compare.js +0 -7
  644. package/node_modules/semver/functions/diff.js +0 -60
  645. package/node_modules/semver/functions/eq.js +0 -5
  646. package/node_modules/semver/functions/gt.js +0 -5
  647. package/node_modules/semver/functions/gte.js +0 -5
  648. package/node_modules/semver/functions/inc.js +0 -21
  649. package/node_modules/semver/functions/lt.js +0 -5
  650. package/node_modules/semver/functions/lte.js +0 -5
  651. package/node_modules/semver/functions/major.js +0 -5
  652. package/node_modules/semver/functions/minor.js +0 -5
  653. package/node_modules/semver/functions/neq.js +0 -5
  654. package/node_modules/semver/functions/parse.js +0 -18
  655. package/node_modules/semver/functions/patch.js +0 -5
  656. package/node_modules/semver/functions/prerelease.js +0 -8
  657. package/node_modules/semver/functions/rcompare.js +0 -5
  658. package/node_modules/semver/functions/rsort.js +0 -5
  659. package/node_modules/semver/functions/satisfies.js +0 -12
  660. package/node_modules/semver/functions/sort.js +0 -5
  661. package/node_modules/semver/functions/truncate.js +0 -48
  662. package/node_modules/semver/functions/valid.js +0 -8
  663. package/node_modules/semver/index.js +0 -93
  664. package/node_modules/semver/internal/constants.js +0 -37
  665. package/node_modules/semver/internal/debug.js +0 -11
  666. package/node_modules/semver/internal/identifiers.js +0 -29
  667. package/node_modules/semver/internal/lrucache.js +0 -42
  668. package/node_modules/semver/internal/parse-options.js +0 -17
  669. package/node_modules/semver/internal/re.js +0 -223
  670. package/node_modules/semver/package.json +0 -78
  671. package/node_modules/semver/preload.js +0 -4
  672. package/node_modules/semver/range.bnf +0 -17
  673. package/node_modules/semver/ranges/gtr.js +0 -6
  674. package/node_modules/semver/ranges/intersects.js +0 -9
  675. package/node_modules/semver/ranges/ltr.js +0 -6
  676. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  677. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  678. package/node_modules/semver/ranges/min-version.js +0 -63
  679. package/node_modules/semver/ranges/outside.js +0 -82
  680. package/node_modules/semver/ranges/simplify.js +0 -49
  681. package/node_modules/semver/ranges/subset.js +0 -249
  682. package/node_modules/semver/ranges/to-comparators.js +0 -10
  683. package/node_modules/semver/ranges/valid.js +0 -13
  684. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  685. package/node_modules/set-blocking/LICENSE.txt +0 -14
  686. package/node_modules/set-blocking/README.md +0 -31
  687. package/node_modules/set-blocking/index.js +0 -7
  688. package/node_modules/set-blocking/package.json +0 -42
  689. package/node_modules/sharp/LICENSE +0 -191
  690. package/node_modules/sharp/README.md +0 -112
  691. package/node_modules/sharp/dist/channel.cjs +0 -177
  692. package/node_modules/sharp/dist/channel.mjs +0 -177
  693. package/node_modules/sharp/dist/colour.cjs +0 -199
  694. package/node_modules/sharp/dist/colour.mjs +0 -199
  695. package/node_modules/sharp/dist/composite.cjs +0 -213
  696. package/node_modules/sharp/dist/composite.mjs +0 -213
  697. package/node_modules/sharp/dist/constructor.cjs +0 -511
  698. package/node_modules/sharp/dist/constructor.mjs +0 -511
  699. package/node_modules/sharp/dist/index.cjs +0 -25
  700. package/node_modules/sharp/dist/index.d.cts +0 -1999
  701. package/node_modules/sharp/dist/index.d.mts +0 -2046
  702. package/node_modules/sharp/dist/index.mjs +0 -25
  703. package/node_modules/sharp/dist/input.cjs +0 -819
  704. package/node_modules/sharp/dist/input.mjs +0 -819
  705. package/node_modules/sharp/dist/is.cjs +0 -143
  706. package/node_modules/sharp/dist/is.mjs +0 -143
  707. package/node_modules/sharp/dist/libvips.cjs +0 -212
  708. package/node_modules/sharp/dist/libvips.mjs +0 -212
  709. package/node_modules/sharp/dist/operation.cjs +0 -1002
  710. package/node_modules/sharp/dist/operation.mjs +0 -1002
  711. package/node_modules/sharp/dist/output.cjs +0 -1785
  712. package/node_modules/sharp/dist/output.mjs +0 -1785
  713. package/node_modules/sharp/dist/resize.cjs +0 -617
  714. package/node_modules/sharp/dist/resize.mjs +0 -617
  715. package/node_modules/sharp/dist/sharp.cjs +0 -174
  716. package/node_modules/sharp/dist/sharp.mjs +0 -174
  717. package/node_modules/sharp/dist/utility.cjs +0 -301
  718. package/node_modules/sharp/dist/utility.mjs +0 -301
  719. package/node_modules/sharp/install/build.js +0 -38
  720. package/node_modules/sharp/lib/index.d.ts +0 -1999
  721. package/node_modules/sharp/package.json +0 -227
  722. package/node_modules/sharp/src/binding.gyp +0 -303
  723. package/node_modules/sharp/src/common.cc +0 -1186
  724. package/node_modules/sharp/src/common.h +0 -421
  725. package/node_modules/sharp/src/metadata.cc +0 -404
  726. package/node_modules/sharp/src/metadata.h +0 -95
  727. package/node_modules/sharp/src/operations.cc +0 -516
  728. package/node_modules/sharp/src/operations.h +0 -137
  729. package/node_modules/sharp/src/pipeline.cc +0 -1948
  730. package/node_modules/sharp/src/pipeline.h +0 -422
  731. package/node_modules/sharp/src/sharp.cc +0 -43
  732. package/node_modules/sharp/src/stats.cc +0 -186
  733. package/node_modules/sharp/src/stats.h +0 -62
  734. package/node_modules/sharp/src/utilities.cc +0 -289
  735. package/node_modules/sharp/src/utilities.h +0 -22
  736. package/node_modules/string-width/index.d.ts +0 -29
  737. package/node_modules/string-width/index.js +0 -47
  738. package/node_modules/string-width/license +0 -9
  739. package/node_modules/string-width/package.json +0 -56
  740. package/node_modules/string-width/readme.md +0 -50
  741. package/node_modules/strip-ansi/index.d.ts +0 -17
  742. package/node_modules/strip-ansi/index.js +0 -4
  743. package/node_modules/strip-ansi/license +0 -9
  744. package/node_modules/strip-ansi/package.json +0 -54
  745. package/node_modules/strip-ansi/readme.md +0 -46
  746. package/node_modules/which-module/LICENSE +0 -13
  747. package/node_modules/which-module/README.md +0 -58
  748. package/node_modules/which-module/index.js +0 -9
  749. package/node_modules/which-module/package.json +0 -41
  750. package/node_modules/wrap-ansi/index.js +0 -186
  751. package/node_modules/wrap-ansi/license +0 -9
  752. package/node_modules/wrap-ansi/package.json +0 -61
  753. package/node_modules/wrap-ansi/readme.md +0 -97
  754. package/node_modules/ws/LICENSE +0 -20
  755. package/node_modules/ws/README.md +0 -548
  756. package/node_modules/ws/browser.js +0 -8
  757. package/node_modules/ws/index.js +0 -22
  758. package/node_modules/ws/lib/buffer-util.js +0 -131
  759. package/node_modules/ws/lib/constants.js +0 -19
  760. package/node_modules/ws/lib/event-target.js +0 -292
  761. package/node_modules/ws/lib/extension.js +0 -203
  762. package/node_modules/ws/lib/limiter.js +0 -55
  763. package/node_modules/ws/lib/permessage-deflate.js +0 -530
  764. package/node_modules/ws/lib/receiver.js +0 -743
  765. package/node_modules/ws/lib/sender.js +0 -607
  766. package/node_modules/ws/lib/stream.js +0 -161
  767. package/node_modules/ws/lib/subprotocol.js +0 -62
  768. package/node_modules/ws/lib/validation.js +0 -152
  769. package/node_modules/ws/lib/websocket-server.js +0 -562
  770. package/node_modules/ws/lib/websocket.js +0 -1407
  771. package/node_modules/ws/package.json +0 -74
  772. package/node_modules/ws/wrapper.mjs +0 -21
  773. package/node_modules/y18n/CHANGELOG.md +0 -35
  774. package/node_modules/y18n/LICENSE +0 -13
  775. package/node_modules/y18n/README.md +0 -109
  776. package/node_modules/y18n/index.js +0 -188
  777. package/node_modules/y18n/package.json +0 -39
  778. package/node_modules/yargs/CHANGELOG.md +0 -420
  779. package/node_modules/yargs/LICENSE +0 -21
  780. package/node_modules/yargs/README.md +0 -140
  781. package/node_modules/yargs/build/lib/apply-extends.d.ts +0 -2
  782. package/node_modules/yargs/build/lib/apply-extends.js +0 -65
  783. package/node_modules/yargs/build/lib/argsert.d.ts +0 -2
  784. package/node_modules/yargs/build/lib/argsert.js +0 -65
  785. package/node_modules/yargs/build/lib/command.d.ts +0 -64
  786. package/node_modules/yargs/build/lib/command.js +0 -416
  787. package/node_modules/yargs/build/lib/common-types.d.ts +0 -36
  788. package/node_modules/yargs/build/lib/common-types.js +0 -25
  789. package/node_modules/yargs/build/lib/completion-templates.d.ts +0 -2
  790. package/node_modules/yargs/build/lib/completion-templates.js +0 -50
  791. package/node_modules/yargs/build/lib/completion.d.ts +0 -21
  792. package/node_modules/yargs/build/lib/completion.js +0 -135
  793. package/node_modules/yargs/build/lib/is-promise.d.ts +0 -1
  794. package/node_modules/yargs/build/lib/is-promise.js +0 -9
  795. package/node_modules/yargs/build/lib/levenshtein.d.ts +0 -1
  796. package/node_modules/yargs/build/lib/levenshtein.js +0 -58
  797. package/node_modules/yargs/build/lib/middleware.d.ts +0 -10
  798. package/node_modules/yargs/build/lib/middleware.js +0 -57
  799. package/node_modules/yargs/build/lib/obj-filter.d.ts +0 -1
  800. package/node_modules/yargs/build/lib/obj-filter.js +0 -14
  801. package/node_modules/yargs/build/lib/parse-command.d.ts +0 -11
  802. package/node_modules/yargs/build/lib/parse-command.js +0 -36
  803. package/node_modules/yargs/build/lib/process-argv.d.ts +0 -2
  804. package/node_modules/yargs/build/lib/process-argv.js +0 -31
  805. package/node_modules/yargs/build/lib/usage.d.ts +0 -49
  806. package/node_modules/yargs/build/lib/usage.js +0 -540
  807. package/node_modules/yargs/build/lib/validation.d.ts +0 -34
  808. package/node_modules/yargs/build/lib/validation.js +0 -330
  809. package/node_modules/yargs/build/lib/yargs.d.ts +0 -274
  810. package/node_modules/yargs/build/lib/yargs.js +0 -1190
  811. package/node_modules/yargs/build/lib/yerror.d.ts +0 -4
  812. package/node_modules/yargs/build/lib/yerror.js +0 -11
  813. package/node_modules/yargs/index.js +0 -40
  814. package/node_modules/yargs/locales/be.json +0 -46
  815. package/node_modules/yargs/locales/de.json +0 -46
  816. package/node_modules/yargs/locales/en.json +0 -51
  817. package/node_modules/yargs/locales/es.json +0 -46
  818. package/node_modules/yargs/locales/fi.json +0 -49
  819. package/node_modules/yargs/locales/fr.json +0 -53
  820. package/node_modules/yargs/locales/hi.json +0 -49
  821. package/node_modules/yargs/locales/hu.json +0 -46
  822. package/node_modules/yargs/locales/id.json +0 -50
  823. package/node_modules/yargs/locales/it.json +0 -46
  824. package/node_modules/yargs/locales/ja.json +0 -51
  825. package/node_modules/yargs/locales/ko.json +0 -49
  826. package/node_modules/yargs/locales/nb.json +0 -44
  827. package/node_modules/yargs/locales/nl.json +0 -49
  828. package/node_modules/yargs/locales/nn.json +0 -44
  829. package/node_modules/yargs/locales/pirate.json +0 -13
  830. package/node_modules/yargs/locales/pl.json +0 -49
  831. package/node_modules/yargs/locales/pt.json +0 -45
  832. package/node_modules/yargs/locales/pt_BR.json +0 -48
  833. package/node_modules/yargs/locales/ru.json +0 -46
  834. package/node_modules/yargs/locales/th.json +0 -46
  835. package/node_modules/yargs/locales/tr.json +0 -48
  836. package/node_modules/yargs/locales/zh_CN.json +0 -48
  837. package/node_modules/yargs/locales/zh_TW.json +0 -47
  838. package/node_modules/yargs/package.json +0 -92
  839. package/node_modules/yargs/yargs.js +0 -14
  840. package/node_modules/yargs-parser/CHANGELOG.md +0 -601
  841. package/node_modules/yargs-parser/LICENSE.txt +0 -14
  842. package/node_modules/yargs-parser/README.md +0 -449
  843. package/node_modules/yargs-parser/index.js +0 -1032
  844. package/node_modules/yargs-parser/lib/tokenize-arg-string.js +0 -40
  845. package/node_modules/yargs-parser/package.json +0 -46
@@ -1,179 +1,277 @@
1
- #!/usr/bin/env node
2
- import { phonePairingSteps, desktopSetupSteps, pairingDisplayText } from '../src/onboarding.mjs';
3
- import { lifecycle, readRecord } from '../src/service-lifecycle.mjs';
4
- import { runtimePaths } from '../src/platform/windows/runtime-paths.mjs';
5
- import * as host from '../src/platform/windows/service-host.mjs';
6
- import { installService, uninstallService, packageRoot } from '../src/service-install.mjs';
7
- import { installSkill, removeSkill, inspectSkill } from '../src/skill-install.mjs';
8
- import { doctor } from '../src/service-doctor.mjs';
9
- import { launchDesktop } from '../src/desktop-launcher.mjs';
10
- import { desktopHost, desktopShortcuts, residentStartup, resolveStateRoot } from '../src/platform/windows/desktop-host.mjs';
11
- import { debugUi } from '../src/debug-ui.mjs';
12
- import { selfRelay } from '../src/self-relay/lifecycle.mjs';
13
- import { fileURLToPath } from 'node:url';
14
- import path from 'node:path';
15
- import fs from 'node:fs';
1
+ #!/usr/bin/env node
2
+ import { phonePairingSteps, desktopSetupSteps, pairingDisplayText } from '../src/onboarding.mjs';
3
+ import { lifecycle, readRecord, writeRecord } from '../src/service-lifecycle.mjs';
4
+ import { runtimePaths } from '../src/platform/runtime-paths.mjs';
5
+ import { openFile } from '../src/platform/file-opener.mjs';
6
+ import * as host from '../src/platform/service-host.mjs';
7
+ import { installService, uninstallService, packageRoot } from '../src/service-install.mjs';
8
+ import { installSkill, removeSkill, inspectSkill } from '../src/skill-install.mjs';
9
+ import { doctor, formatDoctorOutput } from '../src/service-doctor.mjs';
10
+ import { launchDesktop } from '../src/desktop-launcher.mjs';
11
+ import { desktopHost, removeDesktopShortcut, residentStartup, resolveStateRoot } from '../src/platform/desktop-host.mjs';
12
+ import { selfRelay } from '../src/self-relay/lifecycle.mjs';
13
+ import { fileURLToPath } from 'node:url';
14
+ import path from 'node:path';
15
+ import { executableKey } from '../src/platform/path-identity.mjs';
16
+ import fs from 'node:fs';
16
17
  import { spawn } from 'node:child_process';
17
18
  import { setTimeout as delay } from 'node:timers/promises';
18
- import { requestRecovery, recoveryStatus, recoveryWarning } from '../src/shared-recovery.mjs';
19
- import { configureManagedEnvironment, clearManagedEnvironment } from '../src/platform/windows/user-environment.mjs';
20
-
21
- const help = `Code Relax(Windows)
22
- 用法:relax <setup|doctor|skill-install|skill-remove|uninstall|start|shared-start|desktop-start|shortcuts|pair|status|stop> [--json]
23
- setup 部署并启动固定目录服务、受管 app-server 和登录自启动;安全配置 Desktop 后续接入
24
- start 启动或复用 Bridge,并恢复已配置的私有中继
25
- shared-start 启动或复用完整控制,再启动 Bridge 和已配置的私有中继
26
- shared-recover --confirm 启用或重新启动完整控制,保留 Bridge 和中继,可能中断当前任务
27
- shared-recovery-status 查看最近一次恢复的实际阶段和结果
28
- autostart-enable / autostart-disable / autostart-status 管理当前用户登录时启动 Bridge
29
- desktop-start 恢复基础控制,再启动 Bridge(切换前须自行退出 Desktop)
30
- shortcuts 创建完整控制/基础控制桌面快捷方式
31
- pair 启动或复用工作站服务,并打开一次性配对二维码
32
- status 查看服务健康状态
33
- stop 停止服务
34
- dev 在 Bridge 端口开启调试页面(实时读取当前源码/包资源)
35
- dev-status 查看 Bridge 调试页面状态
36
- dev-stop 关闭调试页面,不停止 Bridge
37
- relay-start 启动或复用私有中继,已有授权直接恢复,首次授权生成二维码
38
- relay-shared-start 启动完整控制和 Bridge 后连接私有中继(需先退出当前 Codex)
39
- relay-status 查看私有中继连接器及手机连接状态
40
- relay-stop 停止私有中继连接器,不停止 Bridge 或 Codex
41
- relay-revoke 撤销这台电脑的全部移动设备授权(停止连接器不会撤销授权)
42
- doctor 检查安装、Node、Desktop、网络和 Skill,提示防火墙处理方式
43
- skill-install 安装/更新当前用户的 Codex Skill,不覆盖自定义文件
44
- skill-remove 移除本包安装且未修改的 Skill
19
+ import { requestRecovery, recoveryWarning } from '../src/shared-recovery.mjs';
20
+ import { configureManagedEnvironment, clearManagedEnvironment } from '../src/platform/user-environment.mjs';
21
+ import { resolveCodexRuntime } from '../src/platform/codex-runtime.mjs';
22
+ import { controlRequest } from '../src/service-control.mjs';
23
+ import { processAlive } from '../src/background-process.mjs';
24
+ import { prepareNativePackage } from '../src/platform/native-package.mjs';
25
+ import { managedAppServerUrl } from '../src/managed-app-server.mjs';
26
+ import { powerConfigPath, powerEnabled } from '../src/service-power.mjs';
27
+ import { readDotsTasks } from '../src/dots-task-catalog.mjs';
28
+ import { installDesktopHelper, desktopHelperStatus, removeDesktopHelper } from '../src/platform/windows/desktop-helper.mjs';
29
+
30
+ const help = `Code Relax(Windows / macOS / Linux)
31
+ 用法:relax <命令>
32
+ 常用指令:
33
+ start 启动或复用桌面服务和 Codex 内核,并恢复已配置的 Code Relax 中继
34
+ pair 启动或复用桌面服务,并打开一次性配对二维码
35
+ pair --expires <带时区的截止时间> 创建本工作站可重复使用的长期二维码
36
+ pair-list 查看本工作站长期邀请的 ID 和截止时间
37
+ pair-revoke <邀请ID> 废止本工作站指定长期邀请
38
+ devices 查看本工作站配对授权及最后连接时间
39
+ device-revoke <授权ID> --confirm 撤销指定配对授权
40
+ dots-tasks 读取当前 ChatGPT 账号的 Dots 委派任务与最近轮次状态
41
+ 维护指令:
42
+ setup 部署并启动桌面服务、Codex 内核和登录自启动;安全配置 Desktop 后续接入
43
+ setup --desktop-helper (Windows)同时安装受保护的桌面操作辅助服务,首次需要工作站 UAC 授权
44
+ desktop-helper-install (Windows)单独安装桌面操作辅助服务,保持现有桌面服务和 Codex 内核
45
+ desktop-helper-status (Windows)查看桌面操作辅助服务状态
46
+ desktop-helper-remove (Windows)移除桌面操作辅助服务,需要工作站 UAC 授权
47
+ doctor 简单检查工作站是否正常
48
+ diag 输出详细诊断报告,供客服或技术人员排查
49
+ keep-awake 默认保持电脑唤醒;查看状态
50
+ keep-awake on|off 开启或关闭保持唤醒,立即生效并记住选择;允许屏幕熄灭
51
+ kernel-restart --confirm 重启 Codex 内核并启用已选更新;等待新内核就绪
52
+ desktop-recover --confirm 重新打开 Desktop 并接入 Codex 内核;不强制重启已有内核
45
53
  uninstall 停止并移除固定目录服务和本包 Skill,清理自有 Desktop 环境变量,保留其他配置与附件
46
- 默认监听 0.0.0.0,手机与电脑需在同一受信任局域网。
47
- --json 输出机器可读结果;统一二维码不含 LAN 地址、Bridge Token 或中继地址。`;
48
-
49
- async function main() {
50
- const [command, ...flags] = process.argv.slice(2);
51
- if (!command || command === '--help' || command === '-h') {
52
- console.log(help);
53
- return;
54
- }
55
- if (!['autostart-enable', 'autostart-disable', 'autostart-status', 'shared-recover', 'shared-recovery-status', 'relay-shared-start', 'relay-revoke', 'relay-start', 'relay-status', 'relay-stop', 'dev', 'dev-status', 'dev-stop', 'setup', 'doctor', 'skill-install', 'skill-remove', 'uninstall', 'shared-start', 'desktop-start', 'shortcuts', 'start', 'pair', 'status', 'stop'].includes(command)
56
- || flags.some(flag => flag !== '--json' && !(command === 'shared-recover' && flag === '--confirm'))) {
57
- throw new Error('无效命令或参数。使用 --help 查看用法。');
58
- }
59
- if (process.platform !== 'win32') throw new Error('当前被控端仅支持 Windows。');
60
- const json = flags.includes('--json');
61
- const paths = runtimePaths();
62
- const { stateRoot, serviceRoot } = paths;
63
- if (['relay-shared-start', 'relay-revoke', 'relay-start', 'relay-status', 'relay-stop'].includes(command)) {
64
- if (command === 'relay-shared-start') {
65
- const existing = await selfRelay('relay-status', stateRoot);
66
- if (existing.running && existing.transportMode !== 'lan-shared') throw new Error('基础控制的中继连接器仍在运行,请先执行 relay-stop;不会自动中断手机连接。');
67
- const result = await new Promise((resolve, reject) => {
68
- const child = spawn(process.execPath, [fileURLToPath(import.meta.url), 'shared-start', '--json'], { windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] });
69
- let output = '', errors = '';
70
- child.stdout.on('data', chunk => { output += chunk; }); child.stderr.on('data', chunk => { errors += chunk; });
71
- child.once('error', reject);
72
- child.once('exit', code => { if (code) reject(new Error(errors.trim().replace(/^(?:Code Relax:)+/u, '') || '完整控制启动失败')); else { try { resolve(JSON.parse(output)); } catch { reject(new Error('完整控制启动结果无法确认,未启动中继')); } } });
73
- });
74
- if (!result.bridgeReady) { console.log(json ? JSON.stringify(result) : result.displayText); return; }
75
- }
76
- const result = await selfRelay(command === 'relay-shared-start' ? 'relay-start' : command, stateRoot, command === 'relay-shared-start' ? 'lan-shared' : '');
77
- console.log(json ? JSON.stringify(result) : `${result.displayText}${result.qrPath ? '\n二维码:' + result.qrPath : ''}`);
78
- return;
79
- }
80
- if (['dev', 'dev-status', 'dev-stop'].includes(command)) {
81
- const result = await debugUi(command, stateRoot);
82
- console.log(json ? JSON.stringify(result) : result.message || JSON.stringify(result));
83
- return;
84
- }
85
- const installedEntry = path.join(serviceRoot, 'dist/bin/codex-remote.mjs');
86
- if (['autostart-enable', 'autostart-disable', 'autostart-status', 'shared-recover', 'shared-recovery-status', 'shared-start', 'desktop-start', 'shortcuts', 'start', 'pair', 'status', 'stop'].includes(command) && path.resolve(fileURLToPath(import.meta.url)).toLowerCase() !== installedEntry.toLowerCase()) {
54
+ 默认监听 0.0.0.0,移动端与电脑需在同一受信任局域网。
55
+ --json 仅供安装脚本等程序调用。`;
56
+
57
+ function currentNodeExecutable() {
58
+ const link = process.env.NVM_SYMLINK && path.join(process.env.NVM_SYMLINK, 'node.exe');
59
+ if (link && fs.existsSync(link)) {
60
+ try {
61
+ if (fs.realpathSync(link).toLowerCase() === fs.realpathSync(process.execPath).toLowerCase()) return link;
62
+ } catch {}
63
+ }
64
+ return process.execPath;
65
+ }
66
+
67
+ async function main() {
68
+ const [command, ...flags] = process.argv.slice(2);
69
+ if (!command || command === '--help' || command === '-h') {
70
+ console.log(help);
71
+ return;
72
+ }
73
+ const options = flags.filter(flag => flag !== '--json');
74
+ const longPair = command === 'pair' && options.length === 2 && options[0] === '--expires';
75
+ const revokeInvite = command === 'pair-revoke' && options.length === 1 && /^[\w-]{16,128}$/.test(options[0]);
76
+ const revokeDevice = command === 'device-revoke' && options.length === 2 && /^[\w-]{16,128}$/.test(options[0]) && options[1] === '--confirm';
77
+ const powerCommand = command === 'keep-awake';
78
+ if (powerCommand && !(options.length === 0 || options.length === 1 && ['on', 'off'].includes(options[0]))) throw new Error('用法:relax keep-awake [on|off]');
79
+ if (!['keep-awake', 'kernel-restart', 'desktop-recover', 'setup', 'doctor', 'diag', 'uninstall', 'start', 'pair', 'pair-list', 'pair-revoke', 'devices', 'device-revoke', 'dots-tasks', 'desktop-helper-install', 'desktop-helper-status', 'desktop-helper-remove'].includes(command)
80
+ || (!powerCommand && !longPair && !revokeInvite && !revokeDevice && (['pair-revoke', 'device-revoke'].includes(command) || options.some(flag => !((['kernel-restart', 'desktop-recover'].includes(command) && flag === '--confirm') || (command === 'setup' && ['--desktop-helper', '--preserve-codex'].includes(flag))))))) {
81
+ throw new Error('无效命令或参数。使用 --help 查看用法。');
82
+ }
83
+ const inviteExpires = longPair ? Date.parse(options[1]) : undefined;
84
+ if (longPair && (!/(Z|[+-]\d{2}:\d{2})$/.test(options[1]) || !Number.isSafeInteger(inviteExpires) || inviteExpires <= Date.now())) {
85
+ throw new Error('截止时间必须在未来且含时区,例如 2026-11-01T00:00:00+08:00。');
86
+ }
87
+ if (!['win32', 'darwin', 'linux'].includes(process.platform)) throw new Error('工作站目前支持 Windows、macOS 和 Linux。');
88
+ if (process.platform !== 'win32' && (command.startsWith('desktop-helper-') || options.includes('--desktop-helper')))
89
+ throw new Error('此平台不提供远程桌面画面、鼠标和键盘控制。');
90
+ if (command === 'desktop-recover' && desktopHost.desktopIntegration === false)
91
+ throw new Error('此平台的 Codex Desktop 自动接入尚未支持。');
92
+ const json = flags.includes('--json');
93
+ if (['desktop-helper-install', 'desktop-helper-status', 'desktop-helper-remove'].includes(command)) {
94
+ const result = command === 'desktop-helper-install' ? await installDesktopHelper() : command === 'desktop-helper-remove' ? await removeDesktopHelper() : await desktopHelperStatus();
95
+ console.log(json ? JSON.stringify(result) : result.removed ? '桌面操作辅助服务已移除。' : result.running ? '桌面操作辅助服务已就绪,手机可按需获取画面并确认点击。' : '桌面操作辅助服务尚未就绪,请运行 relax desktop-helper-install。');
96
+ return;
97
+ }
98
+ if (command === 'dots-tasks') {
99
+ const result = await readDotsTasks(managedAppServerUrl);
100
+ const statuses = { completed: '完成', inProgress: '进行中', failed: '失败', interrupted: '已中断' };
101
+ console.log(json ? JSON.stringify(result) : result.tasks.length
102
+ ? result.tasks.map(task => `${task.title || task.id} — ${statuses[task.latestTurn?.status] || task.status || '暂无轮次'}\n${task.cwd || ''}`).join('\n\n')
103
+ : '当前账号没有未归档的 Dots 委派任务。');
104
+ return;
105
+ }
106
+ const paths = runtimePaths();
107
+ const { stateRoot, serviceRoot } = paths;
108
+ if (powerCommand) {
109
+ const session = readRecord(path.join(stateRoot, 'bridge-session.json'));
110
+ let live = false;
111
+ if (session?.controlPort) {
112
+ try { await controlRequest(session); live = true; }
113
+ catch (error) { if (error.code !== 'ECONNREFUSED') throw error; }
114
+ }
115
+ let result;
116
+ if (live) {
117
+ const action = options[0] === 'on' ? 'enable' : options[0] === 'off' ? 'disable' : 'status';
118
+ result = await controlRequest(session, 'POST', `keep-awake-${action}`);
119
+ } else {
120
+ if (options.length) { fs.mkdirSync(stateRoot, { recursive: true }); writeRecord(powerConfigPath(stateRoot), { enabled: options[0] === 'on' }); }
121
+ result = { enabled: powerEnabled(stateRoot), active: false, error: '', serviceStopped: true };
122
+ }
123
+ console.log(json ? JSON.stringify(result) : `保持唤醒:${result.enabled ? '已开启' : '已关闭'};${result.active ? '正在生效,允许屏幕熄灭' : result.serviceStopped ? '服务未运行,下次启动应用此设置' : result.error || '未生效'}`);
124
+ if (result.error) process.exitCode = 1;
125
+ return;
126
+ }
127
+ const installedEntry = path.join(serviceRoot, 'dist/bin/codex-remote.mjs');
128
+ const installationPath = path.join(serviceRoot, 'installation.json');
129
+ const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(Number);
130
+ const currentNodeSupported = nodeMajor > 22 || (nodeMajor === 22 && nodeMinor >= 12);
131
+ const installed = executableKey(fileURLToPath(import.meta.url)) === executableKey(installedEntry);
132
+ const installation = readRecord(installationPath);
133
+ if (installation?.nodeExecutable && !fs.existsSync(installation.nodeExecutable) && currentNodeSupported
134
+ && ['start', 'pair', 'doctor'].includes(command)) {
135
+ writeRecord(installationPath, { ...installation, nodeExecutable: currentNodeExecutable() });
136
+ }
137
+ if (['kernel-restart', 'desktop-recover', 'start', 'pair', 'pair-list', 'pair-revoke', 'devices', 'device-revoke'].includes(command) && !installed) {
87
138
  if (!fs.existsSync(installedEntry)) throw new Error('尚未部署服务,请先执行 relax setup。');
88
- const executable = readRecord(path.join(serviceRoot, 'installation.json'))?.nodeExecutable;
139
+ const executable = readRecord(installationPath)?.nodeExecutable;
89
140
  if (!executable || !fs.existsSync(executable)) throw new Error('安装时选用的 Node 不存在,请重新执行 relax setup。');
90
- const child = spawn(executable, [installedEntry, command, ...flags], { stdio: 'inherit', windowsHide: true });
91
- const code = await new Promise((resolve, reject) => { child.once('error', reject); child.once('exit', resolve); });
92
- process.exitCode = code ?? 1;
93
- return;
94
- }
95
- host.migrateState(stateRoot);
141
+ const child = spawn(executable, [installedEntry, command, ...flags], { stdio: 'inherit', windowsHide: true });
142
+ const code = await new Promise((resolve, reject) => { child.once('error', reject); child.once('exit', resolve); });
143
+ process.exitCode = code ?? 1;
144
+ return;
145
+ }
96
146
  const service = lifecycle({ stateRoot, host });
97
- if (command.startsWith('autostart-')) {
98
- const installation = readRecord(path.join(serviceRoot, 'installation.json'));
99
- if (!installation?.nodeExecutable) throw new Error('请先执行 setup。');
100
- const result = await residentStartup({ serviceRoot, nodeExecutable: installation.nodeExecutable }, command.slice('autostart-'.length));
101
- console.log(json ? JSON.stringify(result) : `登录启动:${result.enabled ? '已启用' : '已关闭'}`); return;
147
+ const ensureAutostart = async () => {
148
+ const currentInstallation = readRecord(installationPath);
149
+ if (!currentInstallation?.nodeExecutable) throw new Error('请先执行 setup。');
150
+ const startup = { serviceRoot, nodeExecutable: currentInstallation.nodeExecutable };
151
+ const current = await residentStartup(startup, 'status');
152
+ if (current.enabled) return { ...current, repaired: false };
153
+ const result = await residentStartup(startup, 'enable');
154
+ return { ...result, repaired: true };
155
+ };
156
+ if (command === 'kernel-restart') {
157
+ if (!flags.includes('--confirm')) {
158
+ throw new Error('重启会立即结束当前 Codex 内核,正在运行的任务、待审批和未确认结果可能中断;恢复后不会自动重发。使用 --confirm 确认。');
159
+ }
160
+ const previous = await service.status();
161
+ if (!previous.running) throw new Error('桌面服务尚未运行,请先执行 relax start。');
162
+ await service.restartManagedAppServer(true);
163
+ const deadline = Date.now() + 60_000;
164
+ let current = await service.status();
165
+ while (current.managedAppServer?.restart?.status === 'running' && Date.now() < deadline) {
166
+ await delay(250);
167
+ current = await service.status();
168
+ }
169
+ if (current.managedAppServer?.restart?.status === 'failed') {
170
+ throw new Error(current.managedAppServer.restart.error || 'Codex 内核重启失败。');
171
+ }
172
+ if (!current.running || current.managedAppServer?.state !== 'ready'
173
+ || current.managedAppServer?.restart?.status !== 'completed') {
174
+ throw new Error('Codex 内核未在 60 秒内完成重启,请运行 relax doctor 查看状态。');
175
+ }
176
+ if (previous.managedAppServer?.updatePending && current.managedAppServer.updatePending) {
177
+ throw new Error('Codex 内核已重启,但更新仍未应用;请运行 relax doctor 查看状态。');
178
+ }
179
+ const result = { status: 'completed', message: previous.managedAppServer?.updatePending
180
+ ? 'Codex 内核已重启并应用更新。' : 'Codex 内核已重启。',
181
+ previousVersion: previous.managedAppServer?.version || null,
182
+ version: current.managedAppServer.version || null,
183
+ selectedVersion: current.managedAppServer.selectedVersion || null,
184
+ updateApplied: previous.managedAppServer?.updatePending === true,
185
+ updatePending: current.managedAppServer.updatePending === true,
186
+ pid: current.managedAppServer.pid || null,
187
+ executionReady: current.execution?.ready === true };
188
+ console.log(json ? JSON.stringify(result) : `${result.message}\n版本:${result.version || '未知'}\n执行状态:${result.executionReady ? '已就绪' : '正在恢复'}`);
189
+ return;
102
190
  }
103
- if (command === 'shared-recover' || command === 'shared-recovery-status') {
104
- if (command === 'shared-recover' && !flags.includes('--confirm')) throw new Error(recoveryWarning + ' 使用 --confirm 确认。');
105
- const result = command === 'shared-recover'
106
- ? await requestRecovery(stateRoot, { confirmed: true }) : await recoveryStatus(stateRoot);
191
+ if (command === 'desktop-recover') {
192
+ if (!flags.includes('--confirm')) throw new Error(recoveryWarning + ' 使用 --confirm 确认。');
193
+ const result = await requestRecovery(stateRoot, { confirmed: true });
107
194
  console.log(json ? JSON.stringify(result) : `${result.message || result.status}${result.error ? '\n' + result.error : ''}\n${result.operationId || ''}`.trim());
108
195
  return;
109
196
  }
197
+ if (command === 'devices' || command === 'device-revoke') {
198
+ const result = await selfRelay(command === 'devices' ? 'devices-list' : 'device-revoke', stateRoot,
199
+ command === 'device-revoke' ? { id: options[0], confirmed: true } : undefined);
200
+ console.log(json ? JSON.stringify(result) : result.displayText); return;
201
+ }
202
+ if (command === 'pair-list' || command === 'pair-revoke') {
203
+ const result = await selfRelay(command === 'pair-list' ? 'invite-list' : 'invite-revoke', stateRoot,
204
+ command === 'pair-revoke' ? { id: options[0] } : undefined);
205
+ console.log(json ? JSON.stringify(result) : result.displayText);
206
+ return;
207
+ }
110
208
  if (command === 'pair') {
209
+ await ensureAutostart();
111
210
  let bridge = await service.status();
112
211
  if (!bridge.running) {
113
212
  await service.start();
114
213
  bridge = await service.status();
115
214
  }
116
215
  if (!bridge.running) throw new Error('Code Relax 工作站服务未能启动。');
117
- const result = await selfRelay('relay-pair', stateRoot);
216
+ if (longPair) await selfRelay('relay-start', stateRoot);
217
+ const result = await selfRelay(longPair ? 'invite-create' : 'relay-pair', stateRoot, longPair ? { expires: inviteExpires } : undefined);
118
218
  if (!json && result.qrPath) {
119
- const viewer = spawn('explorer.exe', [result.qrPath], { detached: true, stdio: 'ignore', windowsHide: true });
120
- viewer.unref();
219
+ openFile(result.qrPath);
121
220
  }
122
- console.log(json ? JSON.stringify(result) : `${result.displayText}\n二维码:${result.qrPath}`);
221
+ console.log(json ? JSON.stringify(result) : `配对二维码已生成。\n${result.displayText}\n二维码文件:${result.qrPath}`);
222
+ return;
223
+ }
224
+ if (command === 'doctor' || command === 'diag') {
225
+ const result = await doctor({ paths, host, service, ensureAutostart, diagnostics: command === 'diag' });
226
+ console.log(json ? JSON.stringify(result) : formatDoctorOutput(result, command === 'diag'));
227
+ if (!result.ready) process.exitCode = 1;
123
228
  return;
124
229
  }
125
- if (command === 'shortcuts') {
126
- const installation = readRecord(path.join(serviceRoot, 'installation.json'));
127
- if (!installation?.nodeExecutable) throw new Error('请先执行 relax setup。');
128
- const shortcuts = await desktopShortcuts({ serviceRoot, nodeExecutable: installation.nodeExecutable });
129
- console.log(json ? JSON.stringify({ shortcuts }) : `桌面快捷方式已创建:\n${shortcuts.join('\n')}`);
130
- return;
131
- }
132
- if (command === 'doctor') {
133
- const result = await doctor({ paths, host, service });
134
- console.log(json ? JSON.stringify(result) : result.checks.map(item => `[${item.status}] ${item.message}`).join('\n'));
135
- if (!result.ready) process.exitCode = 1;
136
- return;
137
- }
138
- if (command === 'skill-install' || command === 'skill-remove') {
139
- const result = command === 'skill-install'
140
- ? installSkill(path.join(packageRoot(path.dirname(fileURLToPath(import.meta.url))), 'dist/skills/code-relax/SKILL.md'))
141
- : removeSkill();
142
- console.log(json ? JSON.stringify(result) : `${result.message}\n${result.target}`);
143
- return;
144
- }
145
230
  if (command === 'uninstall') {
231
+ const desktopHelper = process.platform === 'win32' ? await removeDesktopHelper() : { removed: false, supported: false };
146
232
  const skill = inspectSkill();
147
233
  let environment;
148
234
  const result = await uninstallService(paths, service, async () => {
149
235
  environment = await clearManagedEnvironment(stateRoot);
150
236
  const installation = readRecord(path.join(serviceRoot, 'installation.json'));
151
- if (installation?.nodeExecutable) await desktopShortcuts({ serviceRoot, nodeExecutable: installation.nodeExecutable }, true);
237
+ if (installation?.nodeExecutable) await removeDesktopShortcut({ serviceRoot, nodeExecutable: installation.nodeExecutable });
152
238
  if (installation?.nodeExecutable) await residentStartup({ serviceRoot, nodeExecutable: installation.nodeExecutable }, 'disable');
153
239
  });
154
240
  result.environment = environment;
241
+ result.desktopHelper = desktopHelper;
155
242
  result.skill = skill.managed ? removeSkill() : { removed: false, message: '未移除自定义或未安装的 Skill。' };
156
- result.message = environment?.preserved
157
- ? '固定目录服务已卸载;检测到用户自定义的 CODEX_APP_SERVER_WS_URL,已保留。配置、附件也已保留。npm 命令入口可再用 npm uninstall -g @walkhi/code-relax 移除。'
158
- : '固定目录服务已卸载;Code Relax 设置的 app-server 环境变量已清理,其他配置和附件已保留。npm 命令入口可再用 npm uninstall -g @walkhi/code-relax 移除。';
159
- console.log(json ? JSON.stringify(result) : `${result.message}\n${result.skill.message}`);
160
- return;
161
- }
243
+ result.message = process.platform !== 'win32'
244
+ ? '固定目录服务已卸载;配置、附件、钥匙串凭据和可能仍在执行任务的 Codex 内核已保留。'
245
+ : environment?.preserved
246
+ ? '固定目录服务已卸载;检测到用户自定义的 CODEX_APP_SERVER_WS_URL,已保留。配置、附件和可能仍在执行任务的 app-server 也已保留;重启电脑可结束该进程。npm 命令入口可再用 npm uninstall -g @walkhi/code-relax 移除。'
247
+ : '固定目录服务已卸载;Code Relax 设置的 app-server 环境变量已清理,其他配置、附件和可能仍在执行任务的 app-server 已保留;重启电脑可结束该进程。npm 命令入口可再用 npm uninstall -g @walkhi/code-relax 移除。';
248
+ console.log(json ? JSON.stringify(result) : `${result.message}\n${result.skill.message}`);
249
+ return;
250
+ }
162
251
  if (command === 'setup') {
252
+ prepareNativePackage(packageRoot(path.dirname(fileURLToPath(import.meta.url))));
163
253
  const [major, minor] = process.versions.node.split('.').map(Number);
164
- if (major < 22 || (major === 22 && minor < 12)) throw new Error('需要 Node >=22.12。');
254
+ if (major < 22 || (major === 22 && minor < 12)) throw new Error('需要 Node >=22.12。');
165
255
  const physicalStateRoot = await resolveStateRoot(stateRoot);
166
256
  // Preserve the effective package view; never replace a newer file already in it.
167
- for (const name of ['bridge-config.json', 'bridge-session.json', 'bridge-startup-context.json', 'execution-mode.json',
168
- 'self-relay-config.json', 'self-relay-session.json', 'lan-device-authorizations.json', 'shared-desktop.json',
169
- 'managed-app-server.json', 'managed-environment.json', 'shared-recovery.json', 'shared-recovery.lock', 'debug-ui-session.json']) {
257
+ for (const name of ['bridge-config.json', 'bridge-session.json', 'bridge-startup-context.json',
258
+ 'self-relay-config.json', 'self-relay-session.json', 'lan-device-authorizations.json',
259
+ 'managed-app-server.json', 'managed-environment.json', 'shared-recovery.json', 'shared-recovery.lock']) {
170
260
  const source = path.join(stateRoot, name), target = path.join(physicalStateRoot, name);
171
261
  if (fs.existsSync(source) && !fs.existsSync(target)) fs.copyFileSync(source, target, fs.constants.COPYFILE_EXCL);
172
262
  }
173
- const previous = fs.existsSync(serviceRoot) ? await service.status() : { processRunning: false };
174
- const previousRelay = await selfRelay('relay-status', stateRoot);
263
+ const hadInstalledService = fs.existsSync(path.join(serviceRoot, 'installation.json'));
264
+ const previousInstallation = readRecord(path.join(serviceRoot, 'installation.json'));
265
+ if (previousInstallation?.nodeExecutable) await removeDesktopShortcut({ serviceRoot, nodeExecutable: previousInstallation.nodeExecutable });
266
+ const desktopBeforeSetup = desktopHost.desktopIntegration === false ? { running: false, desktop: null } : await desktopHost.inspect();
267
+ const runtime = await resolveCodexRuntime(physicalStateRoot, { refresh: true });
268
+ const preserveCodex = options.includes('--preserve-codex');
269
+ const desktopNeedsRestart = desktopBeforeSetup.running && !preserveCodex;
270
+ const previous = hadInstalledService ? await service.status() : { processRunning: false };
271
+ const legacyRelaySession = readRecord(path.join(stateRoot, 'self-relay-session.json'));
272
+ const previousRelay = legacyRelaySession ? await controlRequest(legacyRelaySession) : await selfRelay('relay-status', stateRoot);
175
273
  const resumeAfterUpdate = previous.processRunning || previousRelay.running;
176
- const executable = fs.realpathSync(process.execPath);
274
+ const executable = currentNodeExecutable();
177
275
  const startInstalled = async () => {
178
276
  const entry = path.join(serviceRoot, 'dist/bin/codex-remote.mjs');
179
277
  const child = spawn(executable, [entry, 'start', '--json'], { windowsHide: true, stdio: ['ignore', 'ignore', 'pipe'] });
@@ -183,19 +281,28 @@ async function main() {
183
281
  if (code) {
184
282
  try { await selfRelay('relay-stop', stateRoot); } catch {}
185
283
  try { await service.stop(); } catch {}
186
- throw new Error(errors.trim().replace(/^(?:Code Relax:)+/u, '') || 'Bridge 启动失败');
284
+ throw new Error(errors.trim().replace(/^(?:Code Relax:)+/u, '') || '桌面服务启动失败');
187
285
  }
188
286
  };
189
287
  let stoppedForUpdate = false;
190
288
  const installed = await installService(packageRoot(path.dirname(fileURLToPath(import.meta.url))), serviceRoot, executable, physicalStateRoot, {
191
289
  beforeActivate: async () => {
290
+ if (desktopNeedsRestart) await desktopHost.closeDesktop(desktopBeforeSetup.desktop);
192
291
  stoppedForUpdate = resumeAfterUpdate;
193
- if (previousRelay.running) await selfRelay('relay-stop', stateRoot);
292
+ if (previousRelay.running && legacyRelaySession) {
293
+ await controlRequest(legacyRelaySession, 'POST');
294
+ const deadline = Date.now() + 10000;
295
+ while (processAlive(legacyRelaySession.pid)) {
296
+ if (Date.now() >= deadline) throw new Error('旧中继进程未在 10 秒内退出。');
297
+ await delay(100);
298
+ }
299
+ } else if (previousRelay.running) await selfRelay('relay-stop', stateRoot);
194
300
  if (previous.processRunning) await service.stop();
195
301
  },
196
302
  verifyActivation: async () => { await startInstalled(); },
197
303
  restoreActivation: async () => { if (stoppedForUpdate) await startInstalled(); },
198
304
  });
305
+ const autostart = await residentStartup(installed, 'enable');
199
306
  const deadline = Date.now() + 35_000;
200
307
  let bridge = await service.status();
201
308
  while (bridge.running && !['ready', 'failed'].includes(bridge.managedAppServer?.state) && Date.now() < deadline) {
@@ -203,60 +310,92 @@ async function main() {
203
310
  bridge = await service.status();
204
311
  }
205
312
  if (!bridge.running || bridge.managedAppServer?.state !== 'ready') {
206
- throw new Error(bridge.managedAppServer?.error || 'Bridge 已安装,但受管 app-server 未就绪;未写入 Desktop 环境变量。');
313
+ throw new Error(bridge.managedAppServer?.error || '桌面服务已安装,但 Codex 内核未就绪;未写入 Desktop 环境变量。');
314
+ }
315
+ const environment = desktopBeforeSetup.desktop
316
+ ? await configureManagedEnvironment(physicalStateRoot) : { configured: false, reason: desktopHost.desktopIntegration === false ? 'desktop-integration-unsupported' : 'desktop-not-installed' };
317
+ let managedAppServerMigrated = false;
318
+ const managedAppServerMigration = {
319
+ required: bridge.managedAppServer.launcherRestartRequired === true || bridge.managedAppServer.updatePending === true,
320
+ reason: bridge.managedAppServer.updatePending ? 'runtime-update' : bridge.managedAppServer.launcherRestartRequired ? 'launcher-migration' : null,
321
+ restarted: false,
322
+ previousPid: bridge.managedAppServer.pid || null,
323
+ previousVersion: bridge.managedAppServer.version || null,
324
+ };
325
+ let desktopRestarted = false;
326
+ if (managedAppServerMigration.required && !preserveCodex) {
327
+ const requested = await service.restartManagedAppServer(true);
328
+ const operationId = requested.restart?.operationId;
329
+ if (!operationId) throw new Error('安装更新未取得 Codex 内核重启操作编号。');
330
+ const complete = () => bridge.running && bridge.managedAppServer?.state === 'ready'
331
+ && bridge.managedAppServer.restart?.operationId === operationId
332
+ && bridge.managedAppServer.restart.status === 'completed'
333
+ && !bridge.managedAppServer.launcherRestartRequired && !bridge.managedAppServer.updatePending;
334
+ const migrationDeadline = Date.now() + 60_000;
335
+ do {
336
+ await delay(250);
337
+ bridge = await service.status();
338
+ if (bridge.managedAppServer?.restart?.operationId === operationId && bridge.managedAppServer.restart.status === 'failed') {
339
+ throw new Error(bridge.managedAppServer.restart.error || '安装期间 Codex 内核更新失败。');
340
+ }
341
+ } while (Date.now() < migrationDeadline && !complete());
342
+ if (!complete()) throw new Error('安装期间 Codex 内核未在 60 秒内完成更新;未确认新内核就绪。');
343
+ managedAppServerMigrated = true;
344
+ managedAppServerMigration.restarted = true;
345
+ }
346
+ const skill = installSkill(path.join(serviceRoot, 'dist/skills/code-relax/SKILL.md'));
347
+ if (desktopNeedsRestart) {
348
+ const currentDesktop = await desktopHost.inspect();
349
+ if (currentDesktop.running) await desktopHost.closeDesktop(currentDesktop.desktop);
350
+ await launchDesktop({ stateRoot: physicalStateRoot, host: desktopHost });
351
+ if (!await desktopHost.desktopReady()) throw new Error('安装期间 Codex 窗口已启动,但未确认连接到工作站内核。');
352
+ desktopRestarted = true;
353
+ }
354
+ bridge = await service.status();
355
+ if (!bridge.running || bridge.managedAppServer?.state !== 'ready' || !bridge.execution?.ready
356
+ || (!preserveCodex && (bridge.managedAppServer.updatePending || bridge.managedAppServer.launcherRestartRequired))) {
357
+ throw new Error('安装文件已更新,但 Codex 内核更新或完整控制尚未就绪,安装未完成。');
207
358
  }
208
- const autostart = await residentStartup(installed, 'enable');
209
- const environment = await configureManagedEnvironment(physicalStateRoot);
210
359
  installed.autostart = autostart;
360
+ installed.skill = skill;
211
361
  installed.restarted = resumeAfterUpdate;
212
362
  installed.environment = environment;
213
363
  installed.managedAppServer = bridge.managedAppServer;
214
- installed.desktop = bridge.desktop;
215
- installed.desktopRestartRecommended = bridge.desktop?.state === 'ordinary';
216
- const restartText = installed.desktopRestartRecommended
217
- ? 'Codex 当前仍在使用原连接。可以在手机端选择“立即重启(推荐)”,或稍后自行完全退出再启动。'
218
- : '下次正常启动 Codex 时会连接受管 app-server。';
219
- console.log(json ? JSON.stringify({ ...installed, nextSteps: desktopSetupSteps, displayText: `${desktopSetupSteps.join('\n')}\n${restartText}` }) : `服务已安装:${installed.serviceRoot}\n使用已安装的 Node:${installed.nodeExecutable}\n受管 app-server 已就绪;首次联网可能需要 Windows 防火墙授权。\n${desktopSetupSteps.join('\n')}\n${restartText}`);
220
- return;
221
- }
222
- if (command === 'stop') {
223
- const result = await service.stop();
224
- console.log(json ? JSON.stringify(result) : result.message);
225
- return;
226
- }
227
- let desktop;
228
- if (command === 'shared-start' || command === 'desktop-start') {
229
- if (!json) console.log('正在检查 Codex 的启动模式…');
230
- desktop = await launchDesktop(command === 'shared-start' ? 'shared' : 'ordinary', { stateRoot, host: desktopHost });
231
- delete process.env.CODEX_APP_TOOLS_PIPE_PATH;
232
- }
233
- if (!json && (desktop || command === 'start')) console.log('正在检查电脑连接并准备 Bridge…');
234
- const result = await service[desktop ? 'start' : command]();
235
- if (command === 'status') {
236
- console.log(json ? JSON.stringify(result) : result.running
237
- ? `服务正常:${result.mode},端口 ${result.port},PID ${result.pid}` : '服务未就绪。');
238
- return;
239
- }
364
+ installed.codexRuntime = runtime;
365
+ installed.managedAppServerMigrated = managedAppServerMigrated;
366
+ installed.managedAppServerMigration = { ...managedAppServerMigration,
367
+ currentPid: bridge.managedAppServer.pid || null,
368
+ launcherRevision: bridge.managedAppServer.launcherRevision ?? null };
369
+ installed.preserveCodex = preserveCodex;
370
+ installed.desktopRestarted = desktopRestarted;
371
+ installed.desktopRestartReason = desktopRestarted ? 'setup-reconnect' : null;
372
+ installed.desktopConnected = desktopRestarted ? true : null;
373
+ installed.executionReady = bridge.execution.ready;
374
+ if (options.includes('--desktop-helper')) installed.desktopHelper = await installDesktopHelper();
375
+ const migrationText = managedAppServerMigrated ? 'Codex 内核已更新并重启;请检查安装前正在进行的任务。\n' : '';
376
+ const displayText = `Code Relax ${installed.version} 安装成功。\n${migrationText}${desktopSetupSteps.join('\n')}`;
377
+ console.log(json ? JSON.stringify({ ...installed, nextSteps: desktopSetupSteps, displayText }) : displayText);
378
+ return;
379
+ }
380
+ if (!json && command === 'start') console.log('正在检查电脑连接并准备桌面服务…');
381
+ await ensureAutostart();
382
+ const result = await service[command]();
240
383
  const { accessUrl, qrPath: _legacyQrPath, ...metadata } = result;
241
- const notice = '本机服务检查通过,手机连通性尚未验证。若电脑弹出 Node 网络访问提示,请先处理 Windows 防火墙授权,再用手机连接。';
242
384
  let relay;
243
- if (fs.existsSync(path.join(stateRoot, 'self-relay-config.json'))) relay = await selfRelay('relay-start', stateRoot);
385
+ if (fs.existsSync(path.join(stateRoot, 'self-relay-config.json'))) relay = await selfRelay('relay-status', stateRoot);
244
386
  const nextSteps = phonePairingSteps(metadata.transportMode, relay?.paired === true);
245
- const displayText = pairingDisplayText(nextSteps, notice);
246
- const output = { ...metadata, ...(desktop ? { desktop, bridgeReady: true } : {}), ...(relay ? { relayConnected: relay.relayConnected,
387
+ const displayText = pairingDisplayText(nextSteps);
388
+ const output = { ...metadata, ...(relay ? { relayConnected: relay.relayConnected,
247
389
  paired: relay.paired, clientCount: relay.clientCount, ...(relay.qrPath ? { qrPath: relay.qrPath, expiresAt: relay.expiresAt } : {}) } : {}),
248
- nextSteps, displayText, mode: 'lan', listenAddress: '0.0.0.0', address: new URL(accessUrl).host,
249
- lanAccess: 'unverified', notice };
250
- if (json) console.log(JSON.stringify(output));
251
- else {
252
- console.log('电脑连接检查通过 · Bridge 已就绪');
253
- console.log(`局域网模式:监听 0.0.0.0:${result.port},连接地址 ${output.address},PID ${result.pid}`);
390
+ nextSteps, displayText, mode: 'lan', listenAddress: '0.0.0.0', address: new URL(accessUrl).host };
391
+ if (json) console.log(JSON.stringify(output));
392
+ else {
254
393
  if (relay?.qrPath) console.log(`配对二维码:${relay.qrPath}`);
255
394
  console.log(displayText);
256
- }
257
- }
258
-
259
- main().catch(error => {
395
+ }
396
+ }
397
+
398
+ main().catch(error => {
260
399
  console.error(`Code Relax:${error.message}`);
261
- process.exitCode = 1;
262
- });
400
+ process.exitCode = 1;
401
+ });