@walkhi/code-relax 0.1.0-beta.5 → 0.1.0-beta.51

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 +67 -45
  2. package/dist/bin/cleanup-accounts.mjs +63 -0
  3. package/dist/bin/codex-remote.mjs +350 -209
  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 +190 -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 +12 -4
  14. package/dist/shared/app-server-events.cjs +378 -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 +115 -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 +311 -67
  27. package/dist/shared/service-endpoints.cjs +21 -0
  28. package/dist/shared/timeline-sync.cjs +173 -67
  29. package/dist/skills/code-relax/SKILL.md +22 -17
  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 +53 -42
  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 +483 -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 +172 -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 +194 -37
  53. package/dist/src/managed-app-server.mjs +373 -207
  54. package/dist/src/managed-endpoint.mjs +25 -0
  55. package/dist/src/message-images.mjs +0 -18
  56. package/dist/src/message-upload-files.mjs +109 -0
  57. package/dist/src/onboarding.mjs +9 -28
  58. package/dist/src/plan-pricing.mjs +47 -0
  59. package/dist/src/platform/README.md +1 -1
  60. package/dist/src/platform/codex-protocol.mjs +46 -0
  61. package/dist/src/platform/codex-runtime.mjs +3 -0
  62. package/dist/src/platform/credential-store.mjs +3 -0
  63. package/dist/src/platform/desktop-host.mjs +3 -0
  64. package/dist/src/platform/desktop-project-registration.mjs +3 -0
  65. package/dist/src/platform/desktop-project-store.mjs +208 -0
  66. package/dist/src/platform/file-opener.mjs +9 -0
  67. package/dist/src/platform/linux/codex-runtime.mjs +56 -0
  68. package/dist/src/platform/linux/credential-store.mjs +28 -0
  69. package/dist/src/platform/linux/desktop-host.mjs +87 -0
  70. package/dist/src/platform/linux/desktop-installation.mjs +36 -0
  71. package/dist/src/platform/linux/desktop-project-registration.mjs +11 -0
  72. package/dist/src/platform/linux/network-info.mjs +11 -0
  73. package/dist/src/platform/linux/process.mjs +53 -0
  74. package/dist/src/platform/linux/project-locations.mjs +17 -0
  75. package/dist/src/platform/linux/resident-startup.mjs +52 -0
  76. package/dist/src/platform/linux/retained-runtime.mjs +76 -0
  77. package/dist/src/platform/linux/service-host.mjs +18 -0
  78. package/dist/src/platform/linux/system.mjs +50 -0
  79. package/dist/src/platform/linux/user-environment.mjs +9 -0
  80. package/dist/src/platform/macos/codex-runtime.mjs +125 -0
  81. package/dist/src/platform/macos/credential-store.mjs +10 -0
  82. package/dist/src/platform/macos/desktop-host.mjs +86 -0
  83. package/dist/src/platform/macos/desktop-project-registration.mjs +11 -0
  84. package/dist/src/platform/macos/network-info.mjs +8 -0
  85. package/dist/src/platform/macos/project-locations.mjs +8 -0
  86. package/dist/src/platform/macos/resident-startup.mjs +84 -0
  87. package/dist/src/platform/macos/retained-runtime.mjs +127 -0
  88. package/dist/src/platform/macos/service-host.mjs +18 -0
  89. package/dist/src/platform/macos/system.mjs +29 -0
  90. package/dist/src/platform/macos/user-environment.mjs +9 -0
  91. package/dist/src/platform/native-package.mjs +58 -0
  92. package/dist/src/platform/network-info.mjs +3 -0
  93. package/dist/src/platform/path-identity.mjs +5 -0
  94. package/dist/src/platform/posix/network-candidates.mjs +23 -0
  95. package/dist/src/platform/posix/runtime-paths.mjs +25 -0
  96. package/dist/src/platform/power-inhibitor.mjs +22 -0
  97. package/dist/src/platform/project-locations.mjs +3 -0
  98. package/dist/src/platform/runtime-paths.mjs +8 -0
  99. package/dist/src/platform/select.mjs +5 -0
  100. package/dist/src/platform/service-host.mjs +3 -0
  101. package/dist/src/platform/user-environment.mjs +3 -0
  102. package/dist/src/platform/windows/activate-desktop.ps1 +49 -0
  103. package/dist/src/platform/windows/codex-runtime.mjs +215 -0
  104. package/dist/src/platform/windows/desktop-helper.mjs +179 -0
  105. package/dist/src/platform/windows/desktop-host.mjs +45 -18
  106. package/dist/src/platform/windows/desktop-info.ps1 +27 -5
  107. package/dist/src/platform/windows/desktop-project-registration.mjs +4 -0
  108. package/dist/src/platform/windows/desktop-runtime.ps1 +10 -0
  109. package/dist/src/platform/windows/desktop-shortcuts.ps1 +7 -14
  110. package/dist/src/platform/windows/dots-profile.mjs +49 -0
  111. package/dist/src/platform/windows/keep-awake.ps1 +20 -0
  112. package/dist/src/platform/windows/launch-worker.mjs +41 -42
  113. package/dist/src/platform/windows/project-locations.mjs +16 -0
  114. package/dist/src/platform/windows/resident-start.js +20 -0
  115. package/dist/src/platform/windows/resident-startup.ps1 +76 -20
  116. package/dist/src/platform/windows/rustdesk-video-probe.mjs +168 -0
  117. package/dist/src/platform/windows/service-host.mjs +15 -23
  118. package/dist/src/platform/windows/start-hidden-console.ps1 +11 -2
  119. package/dist/src/platform/windows/stop-desktop.ps1 +7 -4
  120. package/dist/src/platform/windows/user-environment.mjs +52 -50
  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 +325 -48
  136. package/dist/src/self-relay/demo.mjs +3 -4
  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 +241 -262
  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 +168 -123
  147. package/dist/src/self-relay/privacy-page.mjs +26 -0
  148. package/dist/src/self-relay/public-releases.mjs +67 -0
  149. package/dist/src/self-relay/rtc-file-bridge.mjs +41 -0
  150. package/dist/src/self-relay/server.mjs +653 -115
  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 +1549 -1795
  154. package/dist/src/service-control.mjs +17 -7
  155. package/dist/src/service-doctor.mjs +148 -63
  156. package/dist/src/service-health.mjs +2 -2
  157. package/dist/src/service-install.mjs +16 -10
  158. package/dist/src/service-lifecycle.mjs +48 -39
  159. package/dist/src/service-power.mjs +58 -0
  160. package/dist/src/service-restart.mjs +45 -12
  161. package/dist/src/service-update-worker.mjs +42 -0
  162. package/dist/src/service-update.mjs +77 -0
  163. package/dist/src/shared-app-server.mjs +455 -301
  164. package/dist/src/shared-catalog.mjs +132 -50
  165. package/dist/src/shared-recovery.mjs +24 -14
  166. package/dist/src/shared-thread-stream.mjs +136 -51
  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 +186 -118
  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
@@ -22,14 +22,24 @@ export async function openControl({ instanceId, secret, shutdown, status = () =>
22
22
  response.setHeader('Content-Type', 'application/json');
23
23
  response.setHeader('Connection', 'close');
24
24
  if (action) {
25
- Promise.resolve().then(() => actions[action]()).then(result => {
25
+ Promise.resolve().then(async () => {
26
+ let body = '';
27
+ request.setEncoding('utf8');
28
+ for await (const chunk of request) {
29
+ body += chunk;
30
+ if (Buffer.byteLength(body) > 4096) throw new Error('管理请求过大');
31
+ }
32
+ const details = body ? JSON.parse(body) : {};
33
+ if (!details || typeof details !== 'object' || Array.isArray(details)) throw new Error('无效管理请求');
34
+ return actions[action](details);
35
+ }).then(result => {
26
36
  response.end(JSON.stringify({ ...result, instanceId, pid: process.pid }));
27
37
  }).catch(error => { response.writeHead(409).end(JSON.stringify({ error: error.message })); });
28
38
  return;
29
39
  }
30
40
  if (request.method === 'POST') response.once('finish', () => {
31
41
  Promise.resolve(shutdown()).catch(error => {
32
- console.error('Bridge 关闭失败:', error.message);
42
+ console.error('桌面服务关闭失败:', error.message);
33
43
  process.exitCode = 1;
34
44
  });
35
45
  });
@@ -44,7 +54,7 @@ export async function openControl({ instanceId, secret, shutdown, status = () =>
44
54
  }) };
45
55
  }
46
56
 
47
- export function controlRequest(session, method = 'GET', action = '') {
57
+ export function controlRequest(session, method = 'GET', action = '', details) {
48
58
  return new Promise((resolve, reject) => {
49
59
  const request = http.request({ hostname: '127.0.0.1', port: session.controlPort,
50
60
  path: `/${session.instanceId}${action ? '/' + action : ''}`, method, agent: false,
@@ -56,17 +66,17 @@ export function controlRequest(session, method = 'GET', action = '') {
56
66
  response.on('end', () => {
57
67
  try {
58
68
  if (response.statusCode === 409) throw new Error(JSON.parse(body).error);
59
- if (response.statusCode !== 200) throw new Error('Bridge 管理通道身份验证失败。');
69
+ if (response.statusCode !== 200) throw new Error('桌面服务管理通道身份验证失败。');
60
70
  const identity = JSON.parse(body);
61
71
  if (identity.instanceId !== session.instanceId || identity.pid !== session.pid) {
62
- throw new Error('Bridge 实例身份不匹配。');
72
+ throw new Error('桌面服务实例身份不匹配。');
63
73
  }
64
74
  resolve(identity);
65
75
  } catch (error) { reject(error); }
66
76
  });
67
77
  });
68
- request.on('timeout', () => request.destroy(new Error('Bridge 管理通道响应超时。')));
78
+ request.on('timeout', () => request.destroy(new Error('桌面服务管理通道响应超时。')));
69
79
  request.on('error', reject);
70
- request.end();
80
+ request.end(details === undefined ? undefined : JSON.stringify(details));
71
81
  });
72
82
  }
@@ -1,63 +1,148 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { readRecord } from './service-lifecycle.mjs';
4
- import { inspectSkill } from './skill-install.mjs';
5
- import { readManagedEnvironment } from './platform/windows/user-environment.mjs';
6
- import { managedAppServerUrl } from './managed-app-server.mjs';
7
-
8
- export async function doctor({ paths, host, service, skillTarget }) {
9
- const checks = [];
10
- const add = (id, status, message) => checks.push({ id, status, message });
11
- const check = async (id, task) => {
12
- try { await task(); } catch (error) { add(id, 'error', error.message); }
13
- };
14
- await check('installation', async () => {
15
- const record = readRecord(path.join(paths.serviceRoot, 'installation.json'));
16
- if (!record || !fs.existsSync(path.join(paths.serviceRoot, 'dist/bin/codex-remote.mjs'))) throw Error('尚未完整部署服务,请重新安装 Code Relax。');
17
- if (!record.nodeExecutable || !fs.existsSync(record.nodeExecutable)) throw Error('记录的 Node 已失效,请用可用的 Node 重新安装 Code Relax。');
18
- add('installation', 'ok', `服务 ${record.version};Node:${record.nodeExecutable}`);
19
- });
20
- let sharedUrl;
21
- await check('shared-service', async () => {
22
- sharedUrl = await host.sharedServiceUrl();
23
- add('shared-service', 'ok', sharedUrl ? '完整控制连接可用。' : '当前使用基础控制。');
24
- });
25
- await check('desktop', async () => {
26
- await host.desktopEnvironment(readRecord(path.join(paths.stateRoot, 'bridge-startup-context.json')), sharedUrl);
27
- add('desktop', 'ok', 'Desktop 来源上下文和工具管道已定位;实际任务操作尚未验证。');
28
- });
29
- await check('network', async () => {
30
- const address = await host.lanAddress();
31
- if (!address) throw Error('未找到局域网 IPv4;请连接受信任的 Wi-Fi 或有线网络。');
32
- add('network', 'ok', `局域网地址:${address}`);
33
- });
34
- await check('service', async () => {
35
- const state = await service.status();
36
- add('service', state.running ? 'ok' : 'warning', state.running
37
- ? `本机服务正常:${state.mode},端口 ${state.port}` : '服务未就绪;安装后执行 relax start。');
38
- if (state.running) add('managed-app-server', state.managedAppServer?.state === 'ready' ? 'ok' : 'error',
39
- state.managedAppServer?.state === 'ready' ? '受管 app-server 已就绪。'
40
- : state.managedAppServer?.error || '受管 app-server 尚未就绪。');
41
- if (state.managedAppServer?.updatePending) add('managed-app-server-update', 'warning',
42
- 'Codex Desktop 已提供新版 CLI;当前 app-server 会继续完成任务,并在下次进程自然重启或重新登录 Windows 后采用新版。');
43
- });
44
- await check('desktop-environment', async () => {
45
- const environment = await readManagedEnvironment();
46
- if (environment.forceCliUser === '1' || environment.forceCliMachine === '1') {
47
- add('desktop-environment', 'error', 'CODEX_APP_SERVER_FORCE_CLI=1 会阻止 Desktop 使用受管 app-server。');
48
- } else if (environment.userValue === managedAppServerUrl) {
49
- add('desktop-environment', 'ok', `Desktop 后续启动地址:${managedAppServerUrl}`);
50
- } else {
51
- add('desktop-environment', 'warning', environment.userValue
52
- ? `用户配置了其他 app-server 地址:${environment.userValue}`
53
- : '尚未配置 Desktop 后续启动地址;请重新执行 setup。');
54
- }
55
- });
56
- await check('skill', async () => {
57
- const state = inspectSkill(skillTarget);
58
- add('skill', state.managed ? 'ok' : 'warning', state.managed ? '本包管理的 Skill 已安装。'
59
- : state.installed ? '存在同名自定义 Skill,本包不会覆盖。' : '可执行 relax skill-install 安装 Skill。');
60
- });
61
- add('firewall', 'warning', '手机连通性未验证。首次启动请允许记录的 Node 在受信任的专用网络通信;若曾拒绝,可在 Windows 安全中心的防火墙“允许应用通过防火墙”中检查该 Node。不要关闭整个防火墙。');
62
- return { ready: !checks.some(item => item.status === 'error'), lanAccess: 'unverified', checks };
63
- }
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ import { readRecord } from './service-lifecycle.mjs';
5
+ import { inspectSkill } from './skill-install.mjs';
6
+ import { recoveryStatus } from './shared-recovery.mjs';
7
+
8
+ export function packageDeploymentCheck(cliVersion, installedVersion) {
9
+ if (!cliVersion) return { id: 'package-version', status: 'warning', message: '无法读取当前 CLI 包版本,未确认本次部署版本。' };
10
+ if (cliVersion !== installedVersion) return { id: 'package-version', status: 'error',
11
+ message: `当前 CLI 包为 ${cliVersion},固定服务为 ${installedVersion || '未确认'};本次包尚未完整部署。安装脚本可能未执行或执行失败,不能仅凭 npm 警告判断。请查看 install.log;确认允许部署并中断相关任务后,执行 relax setup,再运行 relax doctor。无需放开全局 npm 脚本权限。` };
12
+ return { id: 'package-version', status: 'ok', message: `CLI 与固定服务版本一致:${cliVersion}。这不单独证明本次 postinstall 执行过;当前可用性以下方服务和内核检查为准。` };
13
+ }
14
+
15
+ export async function doctor({ paths, host, service, skillTarget, ensureAutostart, cliVersion, diagnostics = false }) {
16
+ const checks = [];
17
+ let installedVersion;
18
+ let kernelUpdate = null;
19
+ let desktopRecovery = null;
20
+ let serviceState = null;
21
+ const add = (id, status, message) => checks.push({ id, status, message });
22
+ const check = async (id, task) => {
23
+ try { await task(); } catch (error) { add(id, 'error', error.message); }
24
+ };
25
+ await check('installation', async () => {
26
+ const record = readRecord(path.join(paths.serviceRoot, 'installation.json'));
27
+ if (!record || !fs.existsSync(path.join(paths.serviceRoot, 'dist/bin/codex-remote.mjs'))) throw Error('尚未完整部署服务;安装脚本可能未执行或执行失败。请查看 install.log,确认部署后执行 relax setup,再运行 relax doctor;不能仅凭 npm 警告判断原因。');
28
+ if (!record.nodeExecutable || !fs.existsSync(record.nodeExecutable)) throw Error('记录的 Node 已失效,请用可用的 Node 重新安装 Code Relax。');
29
+ installedVersion = record.version;
30
+ add('installation', 'ok', `已安装版本:${record.version};Node:${record.nodeExecutable}`);
31
+ });
32
+ checks.push(packageDeploymentCheck(cliVersion, installedVersion));
33
+ await check('bridge-runtime', async () => {
34
+ await host.bridgeEnvironment();
35
+ add('bridge-runtime', 'ok', '桌面服务启动环境正常。');
36
+ });
37
+ await check('network', async () => {
38
+ const address = await host.lanAddress();
39
+ if (!address) { add('network', 'warning', '未连接局域网;需要局域网连接时,请接入 Wi-Fi 或有线网络。'); return; }
40
+ add('network', 'ok', `局域网地址:${address}`);
41
+ });
42
+ await check('autostart', async () => {
43
+ const state = await ensureAutostart();
44
+ add('autostart', 'ok', `当前用户登录自启:${state.repaired ? '已自动恢复' : '已启用'}。`);
45
+ });
46
+ await check('service', async () => {
47
+ const state = await service.status();
48
+ serviceState = state;
49
+ if (state.keepAwake) {
50
+ const power = state.keepAwake;
51
+ add('keep-awake', power.enabled && !power.active ? 'warning' : 'ok',
52
+ power.active ? '保持唤醒已生效,允许屏幕熄灭。' : !power.enabled ? '保持唤醒已由 CLI 关闭。'
53
+ : `保持唤醒未生效:${power.error || '未知原因'};可执行 relax keep-awake on 重新申请。`);
54
+ }
55
+ add('service', state.running ? 'ok' : 'error', state.running
56
+ ? `本机服务正常:${state.mode},端口 ${state.port},运行版本:${state.version || '未知'}` : '服务未就绪;安装后执行 relax start。');
57
+ if (state.running && installedVersion && state.version !== installedVersion) add('service-version', 'error', state.version
58
+ ? `已安装版本 ${installedVersion},但当前运行版本为 ${state.version};请重新执行安装或重启工作站服务。`
59
+ : `已安装版本 ${installedVersion},但无法确认运行服务版本;请保留诊断结果核查,不能据此认定旧进程或自动重启。`);
60
+ if (state.running) add('execution', state.execution?.ready === true && state.execution?.canWrite === true ? 'ok' : 'error',
61
+ state.execution?.ready === true && state.execution?.canWrite === true
62
+ ? 'Codex 完整控制通道已就绪;单个对话的写入权限需在打开该对话时确认。' : 'Codex 完整控制尚未确认就绪且可写;请查看内核和连接诊断,不能仅凭服务在线判定健康。');
63
+ if (state.running && state.desktop) {
64
+ const descriptions = {
65
+ managed: '桌面端已接入 Code Relax 内核。',
66
+ ordinary: '桌面端正在独立运行,未接入 Code Relax 内核;若同一对话报写入冲突,请核对桌面端占用。',
67
+ stopped: '桌面端未启动;手机可独立使用已就绪的内核。',
68
+ unsupported: '当前平台未提供桌面端接入。',
69
+ };
70
+ add('desktop', 'ok', state.desktop.installed === false && state.desktop.state !== 'unsupported'
71
+ ? '未安装桌面端;手机可独立使用已就绪的内核。'
72
+ : descriptions[state.desktop.state] || '桌面端接入状态暂未确认。');
73
+ }
74
+ const currentVersion = state.managedAppServer?.version || null;
75
+ const selectedVersion = state.managedAppServer?.selectedVersion || null;
76
+ if (state.managedAppServer) kernelUpdate = { pending: state.managedAppServer.updatePending === true,
77
+ currentVersion, selectedVersion,
78
+ command: state.managedAppServer.updatePending ? 'relax kernel-restart --confirm' : null };
79
+ if (state.running) add('managed-app-server', state.managedAppServer?.state === 'ready' ? 'ok' : 'error',
80
+ state.managedAppServer?.state === 'ready' ? `Codex 内核已就绪:版本 ${currentVersion || '未知'}。`
81
+ : `${state.managedAppServer?.error || 'Codex 内核尚未就绪。'} 请执行 relax setup 修复;若提示未安装或未登录 Codex,请先完成安装和登录。`);
82
+ if (state.managedAppServer?.updatePending) {
83
+ const versionDetail = currentVersion && selectedVersion && currentVersion === selectedVersion
84
+ ? `内核版本号未变(${currentVersion}),重启后将使用更新后的安装文件`
85
+ : `当前内核 ${currentVersion || '未知'},待应用 ${selectedVersion || '未知'}`;
86
+ add('managed-app-server-update', 'warning',
87
+ `Codex 更新待应用:${versionDetail};执行 relax kernel-restart --confirm 应用更新。`);
88
+ }
89
+ if (state.managedAppServer?.launcherRestartRequired) add('managed-app-server-launcher', 'warning',
90
+ '工作站更新尚未完全生效,请执行 relax setup。');
91
+ });
92
+ if (diagnostics) {
93
+ try { desktopRecovery = await recoveryStatus(paths.stateRoot); }
94
+ catch (error) { desktopRecovery = { status: 'unknown', error: error.message }; }
95
+ }
96
+ await check('skill', async () => {
97
+ const state = inspectSkill(skillTarget);
98
+ add('skill', state.managed ? 'ok' : 'warning', state.managed ? '本包管理的 Skill 已安装。'
99
+ : state.installed ? '存在同名自定义 Skill,本包不会覆盖。' : 'Skill 未安装;重新执行 relax setup。');
100
+ });
101
+ return { ready: !checks.some(item => item.status === 'error'), kernelUpdate, checks, ...(diagnostics ? { desktopRecovery, diagnostics: {
102
+ collectedAt: new Date().toISOString(), platform: process.platform, arch: process.arch, osRelease: os.release(),
103
+ nodeVersion: process.version, nodeExecutable: process.execPath, serviceRoot: paths.serviceRoot,
104
+ servicePid: serviceState?.pid || null, port: serviceState?.port || null, serviceVersion: serviceState?.version || null,
105
+ kernel: serviceState?.managedAppServer ? {
106
+ version: serviceState.managedAppServer.version || null,
107
+ executable: serviceState.managedAppServer.executable || null,
108
+ selectedVersion: serviceState.managedAppServer.selectedVersion || null,
109
+ preferredExecutable: serviceState.managedAppServer.preferredExecutable || null,
110
+ selectedSource: serviceState.managedAppServer.source || null,
111
+ } : null,
112
+ } } : {}) };
113
+ }
114
+
115
+ export function formatDoctorOutput(result, detail = false) {
116
+ const labels = { 'keep-awake': '保持唤醒', installation: '安装文件', 'bridge-runtime': '运行环境', network: '局域网',
117
+ autostart: '登录自启动', service: '工作站服务', 'managed-app-server': 'Codex 内核',
118
+ execution: '完整控制', desktop: 'Codex 桌面端', 'package-version': '安装包版本', 'service-version': '服务版本', 'managed-app-server-update': 'Codex 更新',
119
+ 'managed-app-server-launcher': '工作站更新', skill: 'Codex Skill' };
120
+ const byId = id => result.checks.find(item => item.id === id);
121
+ const summary = (id, success) => {
122
+ const item = byId(id);
123
+ return `${labels[id]}:${!item ? '未检查(工作站服务尚未启动)' : item.status === 'ok' ? success : '异常,见下方处理方法'}`;
124
+ };
125
+ const issues = result.checks.filter(item => item.status !== 'ok');
126
+ const lines = [result.ready ? '工作站检查通过。' : '工作站检查发现问题。',
127
+ summary('installation', '完整'), summary('package-version', 'CLI 与固定服务一致'), summary('service', '正在运行'), summary('managed-app-server', '已就绪'), summary('execution', '通道已就绪(不代表每个对话均可写)')];
128
+ if (issues.length) lines.push('', '需要处理或留意:', ...issues.map(item => `- ${labels[item.id] || item.id}:${item.message}`));
129
+ if (detail) {
130
+ const info = result.diagnostics || {};
131
+ lines.unshift('Code Relax 诊断报告(供客服或技术人员排查)', `采集时间:${info.collectedAt || '未知'}`,
132
+ `系统:${info.platform || process.platform} ${info.arch || process.arch} ${info.osRelease || ''}`,
133
+ `Node:${info.nodeVersion || process.version};${info.nodeExecutable || process.execPath}`,
134
+ `服务目录:${info.serviceRoot || '未知'}`, `服务进程:${info.servicePid || '未运行'};端口:${info.port || '未知'}`, '');
135
+ lines.push('', '检查详情:', ...result.checks.filter(item => item.status === 'ok').map(item => `- ${labels[item.id] || item.id}:${item.message}`));
136
+ if (info.kernel) lines.push('',
137
+ `运行内核:${info.kernel.version || '未知'};${info.kernel.executable || '路径未知'}`,
138
+ `候选内核:${info.kernel.selectedVersion || '未知'};来源 ${info.kernel.selectedSource || '未知'};${info.kernel.preferredExecutable || '路径未知'}`);
139
+ const recovery = result.desktopRecovery;
140
+ if (recovery && !['none', 'unsupported'].includes(recovery.status)) {
141
+ const status = { failed: '未完成', completed: '已完成', succeeded: '已完成', running: '进行中', unknown: '无法读取' }[recovery.status] || recovery.status;
142
+ lines.push('', `Desktop 接入排障记录(仅用于排查上次接入,不代表当前服务状态):上次 Codex Desktop 接入${status}。`);
143
+ if (recovery.error) lines.push(`记录原因:${recovery.error}`);
144
+ }
145
+ }
146
+ lines.push('', result.ready ? '添加手机:运行 relax pair 生成配对二维码。' : '按上述方法处理后,再运行 relax doctor。');
147
+ return lines.join('\n');
148
+ }
@@ -14,7 +14,7 @@ export function serviceHealth(session) {
14
14
  socket.terminate();
15
15
  if (error) reject(error); else resolve(value);
16
16
  };
17
- const timer = setTimeout(() => finish(new Error('Bridge 健康检查超时。')), 6000);
17
+ const timer = setTimeout(() => finish(new Error('桌面服务健康检查超时。')), 6000);
18
18
  socket.on('open', () => socket.send(JSON.stringify({ type: 'auth', token })));
19
19
  socket.on('message', data => {
20
20
  try {
@@ -28,6 +28,6 @@ export function serviceHealth(session) {
28
28
  });
29
29
  socket.on('error', error => finish(error.code === 'ECONNREFUSED' ? null : error));
30
30
  socket.on('close', code => finish(new Error(code === 1008
31
- ? 'Bridge 健康检查鉴权失败。' : 'Bridge 健康检查连接已断开。')));
31
+ ? '桌面服务健康检查鉴权失败。' : '桌面服务健康检查连接已断开。')));
32
32
  });
33
33
  }
@@ -20,10 +20,11 @@ export function packageRoot(from) {
20
20
  export async function installService(source, target, executable, stateRoot, hooks = {}) {
21
21
  assertPlainPath(target);
22
22
  if (!fs.existsSync(path.join(source, 'dist/bin/codex-remote.mjs'))) throw new Error('缺少发布构建;源码目录请先执行 npm run build。');
23
+ const build = readRecord(path.join(source, 'dist/build-platform.json'));
24
+ if (build?.platform !== process.platform || build?.arch !== process.arch)
25
+ throw new Error('构建产物与本机系统或 CPU 不匹配,请在目标工作站安装依赖并重新构建。');
23
26
  if (!fs.existsSync(path.join(source, 'node_modules'))) throw new Error('缺少包依赖,请重新安装完整 npm 包。');
24
27
  const parent = path.dirname(target);
25
- const legacyUploadsRoots = readRecord(path.join(target, 'installation.json'))?.legacyUploadsRoots || [];
26
- if (fs.existsSync(path.join(source, 'src/server.mjs'))) legacyUploadsRoots.push(path.join(source, 'uploads'));
27
28
  fs.mkdirSync(parent, { recursive: true });
28
29
  const stage = path.join(parent, `service-stage-${randomUUID()}`);
29
30
  const backup = path.join(parent, `service-backup-${randomUUID()}`);
@@ -34,8 +35,13 @@ export async function installService(source, target, executable, stateRoot, hook
34
35
  }
35
36
  await exec(executable, [path.join(stage, 'dist/bin/codex-remote.mjs'), '--help'], { windowsHide: true });
36
37
  await exec(executable, ['-e', 'const r=require("node:module").createRequire(process.argv[1]); r("sharp"); r("qrcode"); r("ws"); r("node-datachannel");', path.join(stage, 'package.json')], { windowsHide: true });
37
- writeRecord(path.join(stage, 'installation.json'), { installedAt: new Date().toISOString(), source, nodeExecutable: executable, stateRoot,
38
- legacyUploadsRoots: [...new Set(legacyUploadsRoots)],
38
+ const previousInstallation = readRecord(path.join(target, 'installation.json'));
39
+ const npmCliPath = process.env.npm_execpath || previousInstallation?.npmCliPath;
40
+ const npmPrefix = process.env.npm_config_prefix || previousInstallation?.npmPrefix;
41
+ writeRecord(path.join(stage, 'installation.json'), {
42
+ npmCliPath: npmCliPath && path.isAbsolute(npmCliPath) && fs.existsSync(npmCliPath) ? fs.realpathSync(npmCliPath) : null,
43
+ npmPrefix: npmPrefix && path.isAbsolute(npmPrefix) ? npmPrefix : null,
44
+ installedAt: new Date().toISOString(), source, nodeExecutable: executable, stateRoot,
39
45
  version: readRecord(path.join(source, 'package.json')).version });
40
46
  const previous = fs.existsSync(target);
41
47
  let previousMoved = false, activated = false;
@@ -67,7 +73,7 @@ export async function installService(source, target, executable, stateRoot, hook
67
73
  }
68
74
  }
69
75
 
70
- export async function uninstallService({ serviceRoot, stateRoot, uploadsRoot, credentialsRoot }, service, beforeRemove = async () => {}) {
76
+ export async function uninstallService({ serviceRoot, stateRoot, uploadsRoot, credentialsRoot }, service, beforeRemove = async () => {}) {
71
77
  const target = path.resolve(serviceRoot);
72
78
  assertPlainPath(target);
73
79
  if (path.basename(target) !== 'service' || path.basename(path.dirname(target)) !== 'CodexRemote') throw new Error('拒绝删除未识别的服务目录。');
@@ -76,11 +82,11 @@ export async function uninstallService({ serviceRoot, stateRoot, uploadsRoot, cr
76
82
  const relative = path.relative(target, path.resolve(data));
77
83
  if (!relative || (!relative.startsWith(`..${path.sep}`) && relative !== '..' && !path.isAbsolute(relative))) throw new Error('服务目录包含用户数据,拒绝删除。');
78
84
  }
79
- if (!fs.existsSync(target)) {
80
- await service.stop();
81
- await beforeRemove();
82
- return { removed: false, serviceRoot: target, preserved };
83
- }
85
+ if (!fs.existsSync(target)) {
86
+ await service.stop();
87
+ await beforeRemove();
88
+ return { removed: false, serviceRoot: target, preserved };
89
+ }
84
90
  const pkg = readRecord(path.join(target, 'package.json'));
85
91
  const record = readRecord(path.join(target, 'installation.json'));
86
92
  if (pkg?.name !== '@walkhi/code-relax' || !record?.installedAt || !record?.nodeExecutable) throw new Error('缺少有效安装记录,未删除服务目录。');
@@ -1,6 +1,6 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
- import { startBackground, processAlive } from './background-process.mjs';
3
+ import { startBackground, processAlive } from './background-process.mjs';
4
4
  import { randomBytes, randomUUID } from 'node:crypto';
5
5
  import { setTimeout as delay } from 'node:timers/promises';
6
6
  import { fileURLToPath } from 'node:url';
@@ -23,12 +23,11 @@ export function lifecycle({ stateRoot, host }) {
23
23
  fs.mkdirSync(stateRoot, { recursive: true });
24
24
  const sessionPath = path.join(stateRoot, 'bridge-session.json');
25
25
  const configPath = path.join(stateRoot, 'bridge-config.json');
26
- const contextPath = path.join(stateRoot, 'bridge-startup-context.json');
27
26
  const scriptPath = fileURLToPath(new URL('./server.mjs', import.meta.url));
28
27
 
29
28
  async function alive(session) {
30
29
  if (!session?.controlPort || !session.instanceId || !session.controlSecret) {
31
- if (await health(session)) throw new Error('当前为旧版 Bridge,请先使用旧版停止入口结束服务,再启动新版。');
30
+ if (await health(session)) throw new Error('当前为旧版桌面服务,请先使用旧版停止入口结束服务,再启动新版。');
32
31
  return false;
33
32
  }
34
33
  try { await controlRequest(session); return true; }
@@ -36,7 +35,7 @@ export function lifecycle({ stateRoot, host }) {
36
35
  }
37
36
  async function stop() {
38
37
  const session = readRecord(sessionPath);
39
- if (!await alive(session)) return { stopped: true, message: 'Bridge 已停止。' };
38
+ if (!await alive(session)) return { stopped: true, message: '桌面服务已停止。' };
40
39
  await controlRequest(session, 'POST');
41
40
  const deadline = Date.now() + 10000;
42
41
  while (true) {
@@ -46,48 +45,52 @@ export function lifecycle({ stateRoot, host }) {
46
45
  // Verify refusal on the next connection; never resend the shutdown request.
47
46
  if (error.code !== 'ECONNRESET') throw error;
48
47
  }
49
- if (Date.now() > deadline) throw new Error('Bridge 未在 10 秒内退出;未强杀进程。');
48
+ if (Date.now() > deadline) throw new Error('桌面服务未在 10 秒内退出;未强杀进程。');
50
49
  await delay(100);
51
50
  }
52
- return { stopped: true, message: 'Bridge 已正常关闭。' };
51
+ return { stopped: true, message: '桌面服务已正常关闭。' };
53
52
  }
54
53
  async function status() {
55
54
  const session = readRecord(sessionPath);
56
55
  const running = await alive(session);
57
- const result = running ? await health(session) : null;
58
- return { running: running && result?.status === 'ok', processRunning: running, pid: session?.pid,
59
- port: session?.port, mode: result?.transportMode, execution: result?.execution,
60
- managedAppServer: result?.managedAppServer, desktop: result?.desktop,
61
- desktopRestartRecommended: result?.desktopRestartRecommended === true,
62
- resident: result?.resident === true };
56
+ const result = running ? await health(session) : null;
57
+ return { running: running && result?.status === 'ok', processRunning: running, pid: session?.pid,
58
+ port: session?.port, mode: result?.transportMode, version: result?.version, execution: result?.execution,
59
+ managedAppServer: result?.managedAppServer, desktop: result?.desktop,
60
+ keepAwake: result?.keepAwake,
61
+ desktopRestartRecommended: result?.desktopRestartRecommended === true,
62
+ resident: result?.resident === true };
63
63
  }
64
64
  async function pair() {
65
65
  const session = readRecord(sessionPath);
66
66
  const connection = await alive(session) ? await health(session) : null;
67
67
  if (connection?.status !== 'ok' || !session.lan) {
68
- throw new Error('没有健康的局域网服务,请先执行 relax start。');
68
+ throw new Error('没有健康的局域网服务,请先执行 relax start。');
69
69
  }
70
70
  const address = await host.lanAddress();
71
71
  const url = new URL(session.accessUrl);
72
- url.hostname = address || '127.0.0.1';
72
+ url.hostname = address || '127.0.0.1';
73
73
  session.accessUrl = url.href;
74
74
  writeRecord(sessionPath, session);
75
- return { pid: session.pid, port: session.port, transportMode: connection.transportMode,
76
- execution: connection.execution, managedAppServer: connection.managedAppServer, desktop: connection.desktop,
77
- desktopRestartRecommended: connection.desktopRestartRecommended === true, accessUrl: session.accessUrl,
78
- qrPath: path.join(stateRoot, 'connection-qr.png') };
75
+ return { pid: session.pid, port: session.port, version: connection.version, transportMode: connection.transportMode,
76
+ execution: connection.execution, managedAppServer: connection.managedAppServer, desktop: connection.desktop,
77
+ desktopRestartRecommended: connection.desktopRestartRecommended === true, accessUrl: session.accessUrl,
78
+ qrPath: path.join(stateRoot, 'connection-qr.png') };
79
79
  }
80
- async function start() {
81
- let session = readRecord(sessionPath);
82
- if (await alive(session)) {
80
+ async function restartManagedAppServer(confirmed = false) {
81
+ const session = readRecord(sessionPath);
82
+ if (!await alive(session)) throw new Error('桌面服务尚未运行,无法迁移 Codex 内核。');
83
+ const action = confirmed ? 'restart-managed-app-server-confirmed' : 'restart-managed-app-server';
84
+ return controlRequest(session, 'POST', action);
85
+ }
86
+ async function startBridge() {
87
+ let session = readRecord(sessionPath);
88
+ if (await alive(session)) {
83
89
  const result = await health(session);
84
- if (session.scriptPath === scriptPath && session.lan && result?.status === 'ok' && result.resident) {
85
- const context = readRecord(contextPath) || {};
86
- const sourceThreadId = process.env.CODEX_THREAD_ID || process.env.CODEX_SESSION_ID || context.sourceThreadId;
87
- writeRecord(contextPath, { sourceThreadId });
88
- await controlRequest(session, 'POST', 'refresh-execution');
89
- return pair();
90
- }
90
+ if (session.scriptPath === scriptPath && session.lan && result?.status === 'ok' && result.resident) {
91
+ await controlRequest(session, 'POST', 'refresh-execution');
92
+ return pair();
93
+ }
91
94
  await stop();
92
95
  }
93
96
  let config = readRecord(configPath);
@@ -96,25 +99,24 @@ export function lifecycle({ stateRoot, host }) {
96
99
  if (!Number.isInteger(config.port) || config.port < 1 || config.port > 65535 || !/^[A-Za-z0-9_-]{20,}$/.test(config.token)) {
97
100
  throw new Error('bridge-config.json 中端口或 Token 无效;不会自动重置凭据。');
98
101
  }
99
- const address = await host.lanAddress() || '127.0.0.1';
100
- const { executable, environment } = await host.desktopEnvironment(readRecord(contextPath), '');
102
+ const address = await host.lanAddress() || '127.0.0.1';
103
+ const { executable, environment } = await host.bridgeEnvironment();
101
104
  writeRecord(configPath, config);
102
- writeRecord(contextPath, { sourceThreadId: environment.CODEX_THREAD_ID || environment.CODEX_SESSION_ID });
103
105
  const instanceId = randomUUID();
104
106
  const controlSecret = randomBytes(32).toString('base64url');
105
107
  const readyPath = path.join(stateRoot, `bridge-ready-${instanceId}.json`);
106
- const pid = await startBackground(executable, [scriptPath, '--lan', '--port', String(config.port), '--token', config.token],
107
- { ...environment, CODEX_REMOTE_INSTANCE: instanceId, CODEX_REMOTE_CONTROL_SECRET: controlSecret,
108
- CODEX_REMOTE_READY_PATH: readyPath }, [path.join(stateRoot, 'bridge.stdout.log'), path.join(stateRoot, 'bridge.stderr.log')]);
108
+ const pid = await startBackground(executable, [scriptPath, '--lan', '--port', String(config.port), '--token', config.token],
109
+ { ...environment, CODEX_REMOTE_INSTANCE: instanceId, CODEX_REMOTE_CONTROL_SECRET: controlSecret,
110
+ CODEX_REMOTE_READY_PATH: readyPath }, [path.join(stateRoot, 'bridge.stdout.log'), path.join(stateRoot, 'bridge.stderr.log')]);
109
111
  try {
110
112
  const deadline = Date.now() + 10000;
111
113
  let ready;
112
114
  while (!(ready = readRecord(readyPath))) {
113
- if (!processAlive(pid)) throw new Error('Bridge 启动失败,请查看 bridge.stderr.log。');
114
- if (Date.now() > deadline) throw new Error('Bridge 未在 10 秒内就绪。');
115
+ if (!processAlive(pid)) throw new Error('桌面服务启动失败,请查看 bridge.stderr.log。');
116
+ if (Date.now() > deadline) throw new Error('桌面服务未在 10 秒内就绪。');
115
117
  await delay(100);
116
118
  }
117
- if (ready.instanceId !== instanceId || ready.pid !== pid) throw new Error('Bridge 启动实例不匹配。');
119
+ if (ready.instanceId !== instanceId || ready.pid !== pid) throw new Error('桌面服务启动实例不匹配。');
118
120
  session = { ...ready, controlSecret, executablePath: executable, scriptPath, port: config.port,
119
121
  lan: true, appServer: false, accessUrl: `http://${address}:${config.port}/?token=${config.token}`,
120
122
  startedAt: new Date().toISOString() };
@@ -122,9 +124,16 @@ export function lifecycle({ stateRoot, host }) {
122
124
  writeRecord(sessionPath, session);
123
125
  return await pair();
124
126
  } catch (error) {
125
- if (processAlive(pid)) process.kill(pid);
127
+ if (processAlive(pid)) process.kill(pid);
126
128
  throw error;
127
129
  } finally { fs.rmSync(readyPath, { force: true }); }
128
130
  }
129
- return { start, pair, status, stop };
131
+ async function start() {
132
+ const result = await startBridge();
133
+ if (fs.existsSync(path.join(stateRoot, 'self-relay-config.json'))) {
134
+ await controlRequest(readRecord(sessionPath), 'POST', 'relay-start');
135
+ }
136
+ return result;
137
+ }
138
+ return { start, pair, status, stop, restartManagedAppServer };
130
139
  }
@@ -0,0 +1,58 @@
1
+ import path from 'node:path';
2
+ import { readRecord, writeRecord } from './service-lifecycle.mjs';
3
+ import { launchPowerInhibitor } from './platform/power-inhibitor.mjs';
4
+
5
+ export const powerConfigPath = stateRoot => path.join(stateRoot, 'keep-awake.json');
6
+ export const powerEnabled = stateRoot => readRecord(powerConfigPath(stateRoot))?.enabled !== false;
7
+
8
+ export function createPowerManager(stateRoot, { launch = launchPowerInhibitor, report = console.error } = {}) {
9
+ let enabled = powerEnabled(stateRoot), active = false, error = '', child = null, closed, stopping = false;
10
+ let queue = Promise.resolve();
11
+ const snapshot = () => ({ enabled, active, error });
12
+ async function release() {
13
+ if (!child) return;
14
+ stopping = true;
15
+ child.stdin.end();
16
+ await closed;
17
+ }
18
+ async function acquire() {
19
+ if (child || !enabled) return;
20
+ error = '';
21
+ try {
22
+ const process = launch();
23
+ stopping = false;
24
+ child = process;
25
+ let stderr = '', output = '';
26
+ process.stderr.on('data', data => { stderr = (stderr + data).slice(-2048); });
27
+ process.stdin.on('error', cause => { if (cause.code !== 'EPIPE') report(`保持唤醒通道异常:${cause.message}`); });
28
+ closed = new Promise(resolve => process.once('close', code => {
29
+ if (active && !stopping) { error = stderr.trim() || `保持唤醒进程意外退出(${code})`; report(error); }
30
+ child = null; active = false; resolve();
31
+ }));
32
+ await new Promise((resolve, reject) => {
33
+ const timer = setTimeout(() => { process.kill(); reject(new Error('保持唤醒申请超时')); }, 8000);
34
+ const finish = cause => { clearTimeout(timer); cause ? reject(cause) : resolve(); };
35
+ process.once('error', finish);
36
+ process.once('close', code => {
37
+ finish(new Error(stderr.trim() || `保持唤醒进程已退出(${code})`));
38
+ });
39
+ process.stdout.on('data', data => {
40
+ output += data;
41
+ if (output.includes('ready\n') || output.includes('ready\r\n')) { active = true; finish(); }
42
+ });
43
+ });
44
+ } catch (cause) { error = cause.message; report(`保持唤醒未生效:${error}`); }
45
+ }
46
+ const serial = task => { const result = queue.then(task); queue = result.catch(() => {}); return result; };
47
+ return {
48
+ snapshot,
49
+ start: () => serial(async () => { await acquire(); return snapshot(); }),
50
+ setEnabled: value => serial(async () => {
51
+ writeRecord(powerConfigPath(stateRoot), { enabled: value });
52
+ enabled = value;
53
+ if (enabled) await acquire(); else { await release(); error = ''; }
54
+ return snapshot();
55
+ }),
56
+ close: () => serial(async () => { enabled = false; await release(); }),
57
+ };
58
+ }