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

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 (847) hide show
  1. package/README.md +93 -71
  2. package/dist/bin/cleanup-accounts.mjs +63 -0
  3. package/dist/bin/codex-remote.mjs +325 -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 +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 +14 -6
  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 +250 -6
  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 +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 +241 -84
  53. package/dist/src/managed-app-server.mjs +210 -44
  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 +10 -29
  58. package/dist/src/plan-pricing.mjs +47 -0
  59. package/dist/src/platform/README.md +2 -2
  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/credential-store.mjs +27 -27
  105. package/dist/src/platform/windows/credential-store.ps1 +49 -49
  106. package/dist/src/platform/windows/desktop-helper.mjs +179 -0
  107. package/dist/src/platform/windows/desktop-host.mjs +50 -23
  108. package/dist/src/platform/windows/desktop-info.ps1 +38 -16
  109. package/dist/src/platform/windows/desktop-project-registration.mjs +4 -0
  110. package/dist/src/platform/windows/desktop-runtime.ps1 +10 -0
  111. package/dist/src/platform/windows/desktop-shortcuts.ps1 +21 -28
  112. package/dist/src/platform/windows/dots-profile.mjs +49 -0
  113. package/dist/src/platform/windows/keep-awake.ps1 +20 -0
  114. package/dist/src/platform/windows/launch-worker.mjs +17 -18
  115. package/dist/src/platform/windows/project-locations.mjs +16 -0
  116. package/dist/src/platform/windows/resident-start.js +20 -0
  117. package/dist/src/platform/windows/resident-startup.ps1 +76 -20
  118. package/dist/src/platform/windows/rustdesk-video-probe.mjs +168 -0
  119. package/dist/src/platform/windows/service-host.mjs +29 -37
  120. package/dist/src/platform/windows/start-hidden-console.ps1 +11 -2
  121. package/dist/src/platform/windows/stop-desktop.ps1 +7 -4
  122. package/dist/src/platform/windows/user-environment.mjs +12 -10
  123. package/dist/src/project-create.mjs +121 -0
  124. package/dist/src/project-management.mjs +59 -0
  125. package/dist/src/project-remove.mjs +55 -0
  126. package/dist/src/project-update.mjs +59 -0
  127. package/dist/src/runtime-discovery.mjs +47 -0
  128. package/dist/src/self-relay/account-cleanup.mjs +30 -0
  129. package/dist/src/self-relay/account-connections.mjs +52 -0
  130. package/dist/src/self-relay/admin-cloud.mjs +101 -0
  131. package/dist/src/self-relay/admin-page.mjs +80 -0
  132. package/dist/src/self-relay/admin-server.mjs +74 -0
  133. package/dist/src/self-relay/admin-state.mjs +85 -19
  134. package/dist/src/self-relay/admin-style.mjs +14 -0
  135. package/dist/src/self-relay/android-releases.mjs +61 -0
  136. package/dist/src/self-relay/client.mjs +45 -45
  137. package/dist/src/self-relay/connector.mjs +421 -144
  138. package/dist/src/self-relay/demo.mjs +34 -35
  139. package/dist/src/self-relay/device-info.mjs +27 -0
  140. package/dist/src/self-relay/device-store.mjs +10 -2
  141. package/dist/src/self-relay/diagnostics.mjs +54 -0
  142. package/dist/src/self-relay/email-accounts.mjs +183 -0
  143. package/dist/src/self-relay/file-wire.mjs +13 -0
  144. package/dist/src/self-relay/lan-authorizations.mjs +44 -2
  145. package/dist/src/self-relay/lifecycle.mjs +241 -262
  146. package/dist/src/self-relay/long-pairing.mjs +40 -0
  147. package/dist/src/self-relay/mysql-state.mjs +118 -0
  148. package/dist/src/self-relay/p2p-probe.mjs +56 -11
  149. package/dist/src/self-relay/privacy-page.mjs +26 -0
  150. package/dist/src/self-relay/public-releases.mjs +67 -0
  151. package/dist/src/self-relay/rtc-file-bridge.mjs +41 -0
  152. package/dist/src/self-relay/server.mjs +653 -115
  153. package/dist/src/self-relay/usage-daily.mjs +55 -0
  154. package/dist/src/self-relay/usage-meter.mjs +141 -0
  155. package/dist/src/server.mjs +1547 -1794
  156. package/dist/src/service-control.mjs +17 -7
  157. package/dist/src/service-doctor.mjs +119 -34
  158. package/dist/src/service-health.mjs +2 -2
  159. package/dist/src/service-install.mjs +91 -85
  160. package/dist/src/service-lifecycle.mjs +117 -108
  161. package/dist/src/service-power.mjs +58 -0
  162. package/dist/src/service-restart.mjs +45 -12
  163. package/dist/src/service-update-worker.mjs +42 -0
  164. package/dist/src/service-update.mjs +77 -0
  165. package/dist/src/shared-app-server.mjs +561 -407
  166. package/dist/src/shared-catalog.mjs +95 -13
  167. package/dist/src/shared-recovery.mjs +24 -14
  168. package/dist/src/shared-thread-stream.mjs +148 -63
  169. package/dist/src/skill-install.mjs +0 -13
  170. package/dist/src/turn-model-history.mjs +47 -0
  171. package/dist/src/usage-reset.mjs +17 -0
  172. package/dist/src/workstation-downloads.mjs +120 -0
  173. package/package.json +35 -37
  174. package/tools/postinstall.mjs +90 -22
  175. package/dist/src/app-server-client.mjs +0 -468
  176. package/dist/src/app-server-tasks.mjs +0 -358
  177. package/dist/src/debug-ui.mjs +0 -131
  178. package/dist/src/platform/windows/desktop-monitor.mjs +0 -34
  179. package/dist/src/platform/windows/desktop-shortcut-run.ps1 +0 -5
  180. package/dist/src/platform/windows/desktop-tools.mjs +0 -48
  181. package/dist/src/thread-catalog.mjs +0 -47
  182. package/dist/tools/find-desktop-pipe.mjs +0 -10
  183. package/dist/web/activity-view.js +0 -283
  184. package/dist/web/approval-ui.js +0 -188
  185. package/dist/web/capabilities.js +0 -57
  186. package/dist/web/chat-transport.js +0 -202
  187. package/dist/web/chat.css +0 -782
  188. package/dist/web/chat.js +0 -3830
  189. package/dist/web/client-platform.js +0 -11
  190. package/dist/web/community-view.js +0 -20
  191. package/dist/web/community.css +0 -77
  192. package/dist/web/community.html +0 -37
  193. package/dist/web/composer-controller.js +0 -101
  194. package/dist/web/conversation-controller.js +0 -99
  195. package/dist/web/disclosure-state-controller.js +0 -95
  196. package/dist/web/draft-controller.js +0 -103
  197. package/dist/web/harmony-platform.js +0 -52
  198. package/dist/web/highlight-powershell.min.js +0 -39
  199. package/dist/web/highlight.min.js +0 -1262
  200. package/dist/web/history-cache.js +0 -240
  201. package/dist/web/history-controller.js +0 -167
  202. package/dist/web/index.html +0 -325
  203. package/dist/web/lan-session.js +0 -122
  204. package/dist/web/link-action-controller.js +0 -212
  205. package/dist/web/message-send-controller.js +0 -177
  206. package/dist/web/message-view.js +0 -98
  207. package/dist/web/p2p-data-channel.js +0 -50
  208. package/dist/web/p2p-diagnostics.js +0 -28
  209. package/dist/web/p2p-probe.js +0 -123
  210. package/dist/web/page-resume.js +0 -28
  211. package/dist/web/pending-message-store.js +0 -108
  212. package/dist/web/queue-controller.js +0 -82
  213. package/dist/web/resources.json +0 -1
  214. package/dist/web/self-relay-session.js +0 -129
  215. package/dist/web/server-requests.js +0 -67
  216. package/dist/web/station-connection-controller.js +0 -75
  217. package/dist/web/task-list-view.js +0 -296
  218. package/dist/web/thread-attention-controller.js +0 -124
  219. package/dist/web/thread-context-controller.js +0 -30
  220. package/dist/web/thread-list-controller.js +0 -61
  221. package/dist/web/thread-list-sync.js +0 -86
  222. package/dist/web/thread-title-controller.js +0 -57
  223. package/dist/web/timeline-formatters.js +0 -249
  224. package/dist/web/timeline-reducer.js +0 -81
  225. package/dist/web/timeline-renderer.js +0 -161
  226. package/dist/web/timeline-scroll-controller.js +0 -50
  227. package/dist/web/timeline-sync.js +0 -67
  228. package/dist/web/usage-controller.js +0 -258
  229. package/dist/web/vendor/README.md +0 -14
  230. package/dist/web/vendor/highlight-powershell.min.js +0 -39
  231. package/dist/web/vendor/highlight.LICENSE.txt +0 -29
  232. package/dist/web/vendor/highlight.min.js +0 -1262
  233. package/dist/web/vendor/lucide.LICENSE.txt +0 -17
  234. package/node_modules/@img/colour/LICENSE.md +0 -82
  235. package/node_modules/@img/colour/README.md +0 -15
  236. package/node_modules/@img/colour/color.cjs +0 -1596
  237. package/node_modules/@img/colour/index.cjs +0 -1
  238. package/node_modules/@img/colour/index.d.ts +0 -929
  239. package/node_modules/@img/colour/package.json +0 -58
  240. package/node_modules/@img/sharp-win32-x64/LICENSE +0 -191
  241. package/node_modules/@img/sharp-win32-x64/README.md +0 -59
  242. package/node_modules/@img/sharp-win32-x64/index.cjs +0 -1
  243. package/node_modules/@img/sharp-win32-x64/lib/libvips-42.dll +0 -0
  244. package/node_modules/@img/sharp-win32-x64/lib/libvips-cpp-8.18.6.dll +0 -0
  245. package/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64-0.35.4.node +0 -0
  246. package/node_modules/@img/sharp-win32-x64/package.json +0 -40
  247. package/node_modules/@img/sharp-win32-x64/versions.json +0 -30
  248. package/node_modules/@node-datachannel/win32-x64-msvc/node_datachannel.node +0 -0
  249. package/node_modules/@node-datachannel/win32-x64-msvc/package.json +0 -20
  250. package/node_modules/ansi-regex/index.d.ts +0 -37
  251. package/node_modules/ansi-regex/index.js +0 -10
  252. package/node_modules/ansi-regex/license +0 -9
  253. package/node_modules/ansi-regex/package.json +0 -55
  254. package/node_modules/ansi-regex/readme.md +0 -78
  255. package/node_modules/ansi-styles/index.d.ts +0 -345
  256. package/node_modules/ansi-styles/index.js +0 -163
  257. package/node_modules/ansi-styles/license +0 -9
  258. package/node_modules/ansi-styles/package.json +0 -56
  259. package/node_modules/ansi-styles/readme.md +0 -152
  260. package/node_modules/camelcase/index.d.ts +0 -63
  261. package/node_modules/camelcase/index.js +0 -76
  262. package/node_modules/camelcase/license +0 -9
  263. package/node_modules/camelcase/package.json +0 -43
  264. package/node_modules/camelcase/readme.md +0 -99
  265. package/node_modules/cliui/CHANGELOG.md +0 -76
  266. package/node_modules/cliui/LICENSE.txt +0 -14
  267. package/node_modules/cliui/README.md +0 -115
  268. package/node_modules/cliui/index.js +0 -354
  269. package/node_modules/cliui/package.json +0 -65
  270. package/node_modules/color-convert/CHANGELOG.md +0 -54
  271. package/node_modules/color-convert/LICENSE +0 -21
  272. package/node_modules/color-convert/README.md +0 -68
  273. package/node_modules/color-convert/conversions.js +0 -839
  274. package/node_modules/color-convert/index.js +0 -81
  275. package/node_modules/color-convert/package.json +0 -48
  276. package/node_modules/color-convert/route.js +0 -97
  277. package/node_modules/color-name/LICENSE +0 -8
  278. package/node_modules/color-name/README.md +0 -11
  279. package/node_modules/color-name/index.js +0 -152
  280. package/node_modules/color-name/package.json +0 -28
  281. package/node_modules/decamelize/index.js +0 -13
  282. package/node_modules/decamelize/license +0 -21
  283. package/node_modules/decamelize/package.json +0 -38
  284. package/node_modules/decamelize/readme.md +0 -48
  285. package/node_modules/detect-libc/LICENSE +0 -201
  286. package/node_modules/detect-libc/README.md +0 -163
  287. package/node_modules/detect-libc/index.d.ts +0 -14
  288. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  289. package/node_modules/detect-libc/lib/elf.js +0 -39
  290. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  291. package/node_modules/detect-libc/lib/process.js +0 -24
  292. package/node_modules/detect-libc/package.json +0 -44
  293. package/node_modules/dijkstrajs/.travis.yml +0 -4
  294. package/node_modules/dijkstrajs/CONTRIBUTING.md +0 -8
  295. package/node_modules/dijkstrajs/LICENSE.md +0 -19
  296. package/node_modules/dijkstrajs/README.md +0 -18
  297. package/node_modules/dijkstrajs/dijkstra.js +0 -165
  298. package/node_modules/dijkstrajs/package.json +0 -60
  299. package/node_modules/dijkstrajs/test/dijkstra.test.js +0 -96
  300. package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  301. package/node_modules/emoji-regex/README.md +0 -73
  302. package/node_modules/emoji-regex/es2015/index.js +0 -6
  303. package/node_modules/emoji-regex/es2015/text.js +0 -6
  304. package/node_modules/emoji-regex/index.d.ts +0 -23
  305. package/node_modules/emoji-regex/index.js +0 -6
  306. package/node_modules/emoji-regex/package.json +0 -50
  307. package/node_modules/emoji-regex/text.js +0 -6
  308. package/node_modules/find-up/index.d.ts +0 -137
  309. package/node_modules/find-up/index.js +0 -89
  310. package/node_modules/find-up/license +0 -9
  311. package/node_modules/find-up/package.json +0 -53
  312. package/node_modules/find-up/readme.md +0 -156
  313. package/node_modules/get-caller-file/LICENSE.md +0 -6
  314. package/node_modules/get-caller-file/README.md +0 -41
  315. package/node_modules/get-caller-file/index.d.ts +0 -2
  316. package/node_modules/get-caller-file/index.js +0 -22
  317. package/node_modules/get-caller-file/index.js.map +0 -1
  318. package/node_modules/get-caller-file/package.json +0 -42
  319. package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  320. package/node_modules/is-fullwidth-code-point/index.js +0 -50
  321. package/node_modules/is-fullwidth-code-point/license +0 -9
  322. package/node_modules/is-fullwidth-code-point/package.json +0 -42
  323. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  324. package/node_modules/locate-path/index.d.ts +0 -83
  325. package/node_modules/locate-path/index.js +0 -65
  326. package/node_modules/locate-path/license +0 -9
  327. package/node_modules/locate-path/package.json +0 -45
  328. package/node_modules/locate-path/readme.md +0 -122
  329. package/node_modules/node-datachannel/.clang-format +0 -17
  330. package/node_modules/node-datachannel/.editorconfig +0 -12
  331. package/node_modules/node-datachannel/.eslintignore +0 -8
  332. package/node_modules/node-datachannel/.eslintrc.json +0 -27
  333. package/node_modules/node-datachannel/.gitmodules +0 -3
  334. package/node_modules/node-datachannel/.prettierignore +0 -7
  335. package/node_modules/node-datachannel/.prettierrc +0 -13
  336. package/node_modules/node-datachannel/API.md +0 -247
  337. package/node_modules/node-datachannel/BULDING.md +0 -26
  338. package/node_modules/node-datachannel/CMakeLists.txt +0 -153
  339. package/node_modules/node-datachannel/LICENSE +0 -373
  340. package/node_modules/node-datachannel/README.md +0 -129
  341. package/node_modules/node-datachannel/dist/cjs/index.cjs +0 -11
  342. package/node_modules/node-datachannel/dist/cjs/index.cjs.map +0 -1
  343. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs +0 -101
  344. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs.map +0 -1
  345. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs +0 -91
  346. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs.map +0 -1
  347. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs +0 -94
  348. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs.map +0 -1
  349. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs +0 -45
  350. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs.map +0 -1
  351. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs +0 -8
  352. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs.map +0 -1
  353. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs +0 -86
  354. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs.map +0 -1
  355. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs +0 -34
  356. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs.map +0 -1
  357. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs +0 -34
  358. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs.map +0 -1
  359. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs +0 -214
  360. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs.map +0 -1
  361. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs +0 -53
  362. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +0 -1
  363. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs +0 -83
  364. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs.map +0 -1
  365. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs +0 -132
  366. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs.map +0 -1
  367. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs +0 -94
  368. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs.map +0 -1
  369. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs +0 -434
  370. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs.map +0 -1
  371. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs +0 -59
  372. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs.map +0 -1
  373. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs +0 -45
  374. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs.map +0 -1
  375. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs +0 -42
  376. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs.map +0 -1
  377. package/node_modules/node-datachannel/dist/esm/index.mjs +0 -8
  378. package/node_modules/node-datachannel/dist/esm/index.mjs.map +0 -1
  379. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs +0 -78
  380. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs.map +0 -1
  381. package/node_modules/node-datachannel/dist/esm/lib/index.mjs +0 -64
  382. package/node_modules/node-datachannel/dist/esm/lib/index.mjs.map +0 -1
  383. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs +0 -78
  384. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs.map +0 -1
  385. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs +0 -43
  386. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs.map +0 -1
  387. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs +0 -6
  388. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs.map +0 -1
  389. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs +0 -82
  390. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs.map +0 -1
  391. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs +0 -28
  392. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs.map +0 -1
  393. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs +0 -30
  394. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs.map +0 -1
  395. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs +0 -210
  396. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs.map +0 -1
  397. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs +0 -49
  398. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs.map +0 -1
  399. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs +0 -79
  400. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs.map +0 -1
  401. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs +0 -128
  402. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs.map +0 -1
  403. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs +0 -89
  404. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs.map +0 -1
  405. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs +0 -430
  406. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs.map +0 -1
  407. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs +0 -55
  408. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs.map +0 -1
  409. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs +0 -41
  410. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs.map +0 -1
  411. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs +0 -27
  412. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs.map +0 -1
  413. package/node_modules/node-datachannel/dist/types/lib/datachannel-stream.d.ts +0 -24
  414. package/node_modules/node-datachannel/dist/types/lib/index.d.ts +0 -241
  415. package/node_modules/node-datachannel/dist/types/lib/types.d.ts +0 -119
  416. package/node_modules/node-datachannel/dist/types/lib/websocket-server.d.ts +0 -13
  417. package/node_modules/node-datachannel/dist/types/lib/websocket.d.ts +0 -25
  418. package/node_modules/node-datachannel/dist/types/polyfill/Events.d.ts +0 -15
  419. package/node_modules/node-datachannel/dist/types/polyfill/RTCCertificate.d.ts +0 -9
  420. package/node_modules/node-datachannel/dist/types/polyfill/RTCDataChannel.d.ts +0 -29
  421. package/node_modules/node-datachannel/dist/types/polyfill/RTCDtlsTransport.d.ts +0 -15
  422. package/node_modules/node-datachannel/dist/types/polyfill/RTCError.d.ts +0 -17
  423. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceCandidate.d.ts +0 -21
  424. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceTransport.d.ts +0 -30
  425. package/node_modules/node-datachannel/dist/types/polyfill/RTCPeerConnection.d.ts +0 -64
  426. package/node_modules/node-datachannel/dist/types/polyfill/RTCSctpTransport.d.ts +0 -15
  427. package/node_modules/node-datachannel/dist/types/polyfill/RTCSessionDescription.d.ts +0 -10
  428. package/node_modules/node-datachannel/dist/types/polyfill/index.d.ts +0 -26
  429. package/node_modules/node-datachannel/jest.config.ts +0 -14
  430. package/node_modules/node-datachannel/package.json +0 -133
  431. package/node_modules/node-datachannel/rollup.config.mjs +0 -67
  432. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.cpp +0 -530
  433. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.h +0 -63
  434. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.cpp +0 -172
  435. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.h +0 -43
  436. package/node_modules/node-datachannel/src/cpp/main.cpp +0 -58
  437. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.cpp +0 -457
  438. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.h +0 -52
  439. package/node_modules/node-datachannel/src/cpp/media-av1packetization.cpp +0 -24
  440. package/node_modules/node-datachannel/src/cpp/media-av1packetization.h +0 -11
  441. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.cpp +0 -126
  442. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.h +0 -29
  443. package/node_modules/node-datachannel/src/cpp/media-direction.cpp +0 -43
  444. package/node_modules/node-datachannel/src/cpp/media-direction.h +0 -10
  445. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.cpp +0 -126
  446. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.h +0 -30
  447. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.cpp +0 -126
  448. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.h +0 -30
  449. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.cpp +0 -32
  450. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.h +0 -11
  451. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.cpp +0 -31
  452. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.h +0 -11
  453. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.cpp +0 -79
  454. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.h +0 -28
  455. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.cpp +0 -68
  456. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.h +0 -28
  457. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.cpp +0 -57
  458. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.h +0 -28
  459. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.cpp +0 -93
  460. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.h +0 -30
  461. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.cpp +0 -167
  462. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.h +0 -35
  463. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.cpp +0 -95
  464. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.h +0 -30
  465. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.cpp +0 -458
  466. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.h +0 -61
  467. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.cpp +0 -526
  468. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.h +0 -56
  469. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.cpp +0 -1298
  470. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.h +0 -89
  471. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.cpp +0 -205
  472. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.h +0 -24
  473. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.cpp +0 -57
  474. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.h +0 -47
  475. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.cpp +0 -275
  476. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.h +0 -41
  477. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.cpp +0 -796
  478. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.h +0 -63
  479. package/node_modules/node-datachannel/src/index.ts +0 -9
  480. package/node_modules/node-datachannel/src/lib/datachannel-stream.ts +0 -100
  481. package/node_modules/node-datachannel/src/lib/index.ts +0 -290
  482. package/node_modules/node-datachannel/src/lib/node-datachannel.ts +0 -84
  483. package/node_modules/node-datachannel/src/lib/types.ts +0 -169
  484. package/node_modules/node-datachannel/src/lib/websocket-server.ts +0 -37
  485. package/node_modules/node-datachannel/src/lib/websocket.ts +0 -26
  486. package/node_modules/node-datachannel/src/polyfill/Events.ts +0 -82
  487. package/node_modules/node-datachannel/src/polyfill/Exception.ts +0 -37
  488. package/node_modules/node-datachannel/src/polyfill/README.md +0 -41
  489. package/node_modules/node-datachannel/src/polyfill/RTCCertificate.ts +0 -21
  490. package/node_modules/node-datachannel/src/polyfill/RTCDataChannel.ts +0 -225
  491. package/node_modules/node-datachannel/src/polyfill/RTCDtlsTransport.ts +0 -46
  492. package/node_modules/node-datachannel/src/polyfill/RTCError.ts +0 -78
  493. package/node_modules/node-datachannel/src/polyfill/RTCIceCandidate.ts +0 -128
  494. package/node_modules/node-datachannel/src/polyfill/RTCIceTransport.ts +0 -90
  495. package/node_modules/node-datachannel/src/polyfill/RTCPeerConnection.ts +0 -527
  496. package/node_modules/node-datachannel/src/polyfill/RTCSctpTransport.ts +0 -51
  497. package/node_modules/node-datachannel/src/polyfill/RTCSessionDescription.ts +0 -41
  498. package/node_modules/node-datachannel/src/polyfill/index.ts +0 -38
  499. package/node_modules/node-datachannel/tsconfig.json +0 -21
  500. package/node_modules/p-limit/index.d.ts +0 -38
  501. package/node_modules/p-limit/index.js +0 -57
  502. package/node_modules/p-limit/license +0 -9
  503. package/node_modules/p-limit/package.json +0 -52
  504. package/node_modules/p-limit/readme.md +0 -101
  505. package/node_modules/p-locate/index.d.ts +0 -64
  506. package/node_modules/p-locate/index.js +0 -52
  507. package/node_modules/p-locate/license +0 -9
  508. package/node_modules/p-locate/package.json +0 -53
  509. package/node_modules/p-locate/readme.md +0 -90
  510. package/node_modules/p-try/index.d.ts +0 -39
  511. package/node_modules/p-try/index.js +0 -9
  512. package/node_modules/p-try/license +0 -9
  513. package/node_modules/p-try/package.json +0 -42
  514. package/node_modules/p-try/readme.md +0 -58
  515. package/node_modules/path-exists/index.d.ts +0 -28
  516. package/node_modules/path-exists/index.js +0 -23
  517. package/node_modules/path-exists/license +0 -9
  518. package/node_modules/path-exists/package.json +0 -39
  519. package/node_modules/path-exists/readme.md +0 -52
  520. package/node_modules/pngjs/.eslintignore +0 -2
  521. package/node_modules/pngjs/.eslintrc.json +0 -19
  522. package/node_modules/pngjs/.prettierignore +0 -3
  523. package/node_modules/pngjs/LICENSE +0 -20
  524. package/node_modules/pngjs/README.md +0 -429
  525. package/node_modules/pngjs/browser.js +0 -16096
  526. package/node_modules/pngjs/coverage/lcov-report/base.css +0 -354
  527. package/node_modules/pngjs/coverage/lcov-report/bitmapper.js.html +0 -881
  528. package/node_modules/pngjs/coverage/lcov-report/bitpacker.js.html +0 -554
  529. package/node_modules/pngjs/coverage/lcov-report/block-navigation.js +0 -77
  530. package/node_modules/pngjs/coverage/lcov-report/chunkstream.js.html +0 -647
  531. package/node_modules/pngjs/coverage/lcov-report/constants.js.html +0 -176
  532. package/node_modules/pngjs/coverage/lcov-report/crc.js.html +0 -200
  533. package/node_modules/pngjs/coverage/lcov-report/favicon.png +0 -0
  534. package/node_modules/pngjs/coverage/lcov-report/filter-pack.js.html +0 -593
  535. package/node_modules/pngjs/coverage/lcov-report/filter-parse-async.js.html +0 -152
  536. package/node_modules/pngjs/coverage/lcov-report/filter-parse-sync.js.html +0 -143
  537. package/node_modules/pngjs/coverage/lcov-report/filter-parse.js.html +0 -611
  538. package/node_modules/pngjs/coverage/lcov-report/format-normaliser.js.html +0 -359
  539. package/node_modules/pngjs/coverage/lcov-report/index.html +0 -426
  540. package/node_modules/pngjs/coverage/lcov-report/interlace.js.html +0 -365
  541. package/node_modules/pngjs/coverage/lcov-report/packer-async.js.html +0 -230
  542. package/node_modules/pngjs/coverage/lcov-report/packer-sync.js.html +0 -248
  543. package/node_modules/pngjs/coverage/lcov-report/packer.js.html +0 -467
  544. package/node_modules/pngjs/coverage/lcov-report/paeth-predictor.js.html +0 -128
  545. package/node_modules/pngjs/coverage/lcov-report/parser-async.js.html +0 -575
  546. package/node_modules/pngjs/coverage/lcov-report/parser-sync.js.html +0 -404
  547. package/node_modules/pngjs/coverage/lcov-report/parser.js.html +0 -950
  548. package/node_modules/pngjs/coverage/lcov-report/png-sync.js.html +0 -116
  549. package/node_modules/pngjs/coverage/lcov-report/png.js.html +0 -662
  550. package/node_modules/pngjs/coverage/lcov-report/prettify.css +0 -101
  551. package/node_modules/pngjs/coverage/lcov-report/prettify.js +0 -1007
  552. package/node_modules/pngjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  553. package/node_modules/pngjs/coverage/lcov-report/sorter.js +0 -169
  554. package/node_modules/pngjs/coverage/lcov-report/sync-inflate.js.html +0 -584
  555. package/node_modules/pngjs/coverage/lcov-report/sync-reader.js.html +0 -215
  556. package/node_modules/pngjs/coverage/lcov.info +0 -2177
  557. package/node_modules/pngjs/lib/bitmapper.js +0 -267
  558. package/node_modules/pngjs/lib/bitpacker.js +0 -158
  559. package/node_modules/pngjs/lib/chunkstream.js +0 -189
  560. package/node_modules/pngjs/lib/constants.js +0 -32
  561. package/node_modules/pngjs/lib/crc.js +0 -40
  562. package/node_modules/pngjs/lib/filter-pack.js +0 -171
  563. package/node_modules/pngjs/lib/filter-parse-async.js +0 -24
  564. package/node_modules/pngjs/lib/filter-parse-sync.js +0 -21
  565. package/node_modules/pngjs/lib/filter-parse.js +0 -177
  566. package/node_modules/pngjs/lib/format-normaliser.js +0 -93
  567. package/node_modules/pngjs/lib/interlace.js +0 -95
  568. package/node_modules/pngjs/lib/packer-async.js +0 -50
  569. package/node_modules/pngjs/lib/packer-sync.js +0 -56
  570. package/node_modules/pngjs/lib/packer.js +0 -129
  571. package/node_modules/pngjs/lib/paeth-predictor.js +0 -16
  572. package/node_modules/pngjs/lib/parser-async.js +0 -165
  573. package/node_modules/pngjs/lib/parser-sync.js +0 -108
  574. package/node_modules/pngjs/lib/parser.js +0 -290
  575. package/node_modules/pngjs/lib/png-sync.js +0 -12
  576. package/node_modules/pngjs/lib/png.js +0 -194
  577. package/node_modules/pngjs/lib/sync-inflate.js +0 -168
  578. package/node_modules/pngjs/lib/sync-reader.js +0 -45
  579. package/node_modules/pngjs/package.json +0 -73
  580. package/node_modules/qrcode/README.md +0 -770
  581. package/node_modules/qrcode/bin/qrcode +0 -159
  582. package/node_modules/qrcode/helper/to-sjis-browser.js +0 -2
  583. package/node_modules/qrcode/helper/to-sjis.js +0 -105
  584. package/node_modules/qrcode/lib/browser.js +0 -76
  585. package/node_modules/qrcode/lib/can-promise.js +0 -7
  586. package/node_modules/qrcode/lib/core/alignment-pattern.js +0 -83
  587. package/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -59
  588. package/node_modules/qrcode/lib/core/bit-buffer.js +0 -37
  589. package/node_modules/qrcode/lib/core/bit-matrix.js +0 -65
  590. package/node_modules/qrcode/lib/core/byte-data.js +0 -30
  591. package/node_modules/qrcode/lib/core/error-correction-code.js +0 -135
  592. package/node_modules/qrcode/lib/core/error-correction-level.js +0 -50
  593. package/node_modules/qrcode/lib/core/finder-pattern.js +0 -22
  594. package/node_modules/qrcode/lib/core/format-info.js +0 -29
  595. package/node_modules/qrcode/lib/core/galois-field.js +0 -69
  596. package/node_modules/qrcode/lib/core/kanji-data.js +0 -54
  597. package/node_modules/qrcode/lib/core/mask-pattern.js +0 -234
  598. package/node_modules/qrcode/lib/core/mode.js +0 -167
  599. package/node_modules/qrcode/lib/core/numeric-data.js +0 -43
  600. package/node_modules/qrcode/lib/core/polynomial.js +0 -62
  601. package/node_modules/qrcode/lib/core/qrcode.js +0 -495
  602. package/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -56
  603. package/node_modules/qrcode/lib/core/regex.js +0 -31
  604. package/node_modules/qrcode/lib/core/segments.js +0 -330
  605. package/node_modules/qrcode/lib/core/utils.js +0 -63
  606. package/node_modules/qrcode/lib/core/version-check.js +0 -9
  607. package/node_modules/qrcode/lib/core/version.js +0 -163
  608. package/node_modules/qrcode/lib/index.js +0 -12
  609. package/node_modules/qrcode/lib/renderer/canvas.js +0 -63
  610. package/node_modules/qrcode/lib/renderer/png.js +0 -78
  611. package/node_modules/qrcode/lib/renderer/svg-tag.js +0 -81
  612. package/node_modules/qrcode/lib/renderer/svg.js +0 -19
  613. package/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +0 -85
  614. package/node_modules/qrcode/lib/renderer/terminal/terminal.js +0 -49
  615. package/node_modules/qrcode/lib/renderer/terminal.js +0 -9
  616. package/node_modules/qrcode/lib/renderer/utf8.js +0 -71
  617. package/node_modules/qrcode/lib/renderer/utils.js +0 -99
  618. package/node_modules/qrcode/lib/server.js +0 -138
  619. package/node_modules/qrcode/license +0 -10
  620. package/node_modules/qrcode/package.json +0 -77
  621. package/node_modules/require-directory/.jshintrc +0 -67
  622. package/node_modules/require-directory/.npmignore +0 -1
  623. package/node_modules/require-directory/.travis.yml +0 -3
  624. package/node_modules/require-directory/LICENSE +0 -22
  625. package/node_modules/require-directory/README.markdown +0 -184
  626. package/node_modules/require-directory/index.js +0 -86
  627. package/node_modules/require-directory/package.json +0 -40
  628. package/node_modules/require-main-filename/CHANGELOG.md +0 -26
  629. package/node_modules/require-main-filename/LICENSE.txt +0 -14
  630. package/node_modules/require-main-filename/README.md +0 -26
  631. package/node_modules/require-main-filename/index.js +0 -18
  632. package/node_modules/require-main-filename/package.json +0 -35
  633. package/node_modules/semver/LICENSE +0 -15
  634. package/node_modules/semver/README.md +0 -680
  635. package/node_modules/semver/bin/semver.js +0 -195
  636. package/node_modules/semver/classes/comparator.js +0 -143
  637. package/node_modules/semver/classes/index.js +0 -7
  638. package/node_modules/semver/classes/range.js +0 -577
  639. package/node_modules/semver/classes/semver.js +0 -350
  640. package/node_modules/semver/functions/clean.js +0 -8
  641. package/node_modules/semver/functions/cmp.js +0 -54
  642. package/node_modules/semver/functions/coerce.js +0 -62
  643. package/node_modules/semver/functions/compare-build.js +0 -9
  644. package/node_modules/semver/functions/compare-loose.js +0 -5
  645. package/node_modules/semver/functions/compare.js +0 -7
  646. package/node_modules/semver/functions/diff.js +0 -60
  647. package/node_modules/semver/functions/eq.js +0 -5
  648. package/node_modules/semver/functions/gt.js +0 -5
  649. package/node_modules/semver/functions/gte.js +0 -5
  650. package/node_modules/semver/functions/inc.js +0 -21
  651. package/node_modules/semver/functions/lt.js +0 -5
  652. package/node_modules/semver/functions/lte.js +0 -5
  653. package/node_modules/semver/functions/major.js +0 -5
  654. package/node_modules/semver/functions/minor.js +0 -5
  655. package/node_modules/semver/functions/neq.js +0 -5
  656. package/node_modules/semver/functions/parse.js +0 -18
  657. package/node_modules/semver/functions/patch.js +0 -5
  658. package/node_modules/semver/functions/prerelease.js +0 -8
  659. package/node_modules/semver/functions/rcompare.js +0 -5
  660. package/node_modules/semver/functions/rsort.js +0 -5
  661. package/node_modules/semver/functions/satisfies.js +0 -12
  662. package/node_modules/semver/functions/sort.js +0 -5
  663. package/node_modules/semver/functions/truncate.js +0 -48
  664. package/node_modules/semver/functions/valid.js +0 -8
  665. package/node_modules/semver/index.js +0 -93
  666. package/node_modules/semver/internal/constants.js +0 -37
  667. package/node_modules/semver/internal/debug.js +0 -11
  668. package/node_modules/semver/internal/identifiers.js +0 -29
  669. package/node_modules/semver/internal/lrucache.js +0 -42
  670. package/node_modules/semver/internal/parse-options.js +0 -17
  671. package/node_modules/semver/internal/re.js +0 -223
  672. package/node_modules/semver/package.json +0 -78
  673. package/node_modules/semver/preload.js +0 -4
  674. package/node_modules/semver/range.bnf +0 -17
  675. package/node_modules/semver/ranges/gtr.js +0 -6
  676. package/node_modules/semver/ranges/intersects.js +0 -9
  677. package/node_modules/semver/ranges/ltr.js +0 -6
  678. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  679. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  680. package/node_modules/semver/ranges/min-version.js +0 -63
  681. package/node_modules/semver/ranges/outside.js +0 -82
  682. package/node_modules/semver/ranges/simplify.js +0 -49
  683. package/node_modules/semver/ranges/subset.js +0 -249
  684. package/node_modules/semver/ranges/to-comparators.js +0 -10
  685. package/node_modules/semver/ranges/valid.js +0 -13
  686. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  687. package/node_modules/set-blocking/LICENSE.txt +0 -14
  688. package/node_modules/set-blocking/README.md +0 -31
  689. package/node_modules/set-blocking/index.js +0 -7
  690. package/node_modules/set-blocking/package.json +0 -42
  691. package/node_modules/sharp/LICENSE +0 -191
  692. package/node_modules/sharp/README.md +0 -112
  693. package/node_modules/sharp/dist/channel.cjs +0 -177
  694. package/node_modules/sharp/dist/channel.mjs +0 -177
  695. package/node_modules/sharp/dist/colour.cjs +0 -199
  696. package/node_modules/sharp/dist/colour.mjs +0 -199
  697. package/node_modules/sharp/dist/composite.cjs +0 -213
  698. package/node_modules/sharp/dist/composite.mjs +0 -213
  699. package/node_modules/sharp/dist/constructor.cjs +0 -511
  700. package/node_modules/sharp/dist/constructor.mjs +0 -511
  701. package/node_modules/sharp/dist/index.cjs +0 -25
  702. package/node_modules/sharp/dist/index.d.cts +0 -1999
  703. package/node_modules/sharp/dist/index.d.mts +0 -2046
  704. package/node_modules/sharp/dist/index.mjs +0 -25
  705. package/node_modules/sharp/dist/input.cjs +0 -819
  706. package/node_modules/sharp/dist/input.mjs +0 -819
  707. package/node_modules/sharp/dist/is.cjs +0 -143
  708. package/node_modules/sharp/dist/is.mjs +0 -143
  709. package/node_modules/sharp/dist/libvips.cjs +0 -212
  710. package/node_modules/sharp/dist/libvips.mjs +0 -212
  711. package/node_modules/sharp/dist/operation.cjs +0 -1002
  712. package/node_modules/sharp/dist/operation.mjs +0 -1002
  713. package/node_modules/sharp/dist/output.cjs +0 -1785
  714. package/node_modules/sharp/dist/output.mjs +0 -1785
  715. package/node_modules/sharp/dist/resize.cjs +0 -617
  716. package/node_modules/sharp/dist/resize.mjs +0 -617
  717. package/node_modules/sharp/dist/sharp.cjs +0 -174
  718. package/node_modules/sharp/dist/sharp.mjs +0 -174
  719. package/node_modules/sharp/dist/utility.cjs +0 -301
  720. package/node_modules/sharp/dist/utility.mjs +0 -301
  721. package/node_modules/sharp/install/build.js +0 -38
  722. package/node_modules/sharp/lib/index.d.ts +0 -1999
  723. package/node_modules/sharp/package.json +0 -227
  724. package/node_modules/sharp/src/binding.gyp +0 -303
  725. package/node_modules/sharp/src/common.cc +0 -1186
  726. package/node_modules/sharp/src/common.h +0 -421
  727. package/node_modules/sharp/src/metadata.cc +0 -404
  728. package/node_modules/sharp/src/metadata.h +0 -95
  729. package/node_modules/sharp/src/operations.cc +0 -516
  730. package/node_modules/sharp/src/operations.h +0 -137
  731. package/node_modules/sharp/src/pipeline.cc +0 -1948
  732. package/node_modules/sharp/src/pipeline.h +0 -422
  733. package/node_modules/sharp/src/sharp.cc +0 -43
  734. package/node_modules/sharp/src/stats.cc +0 -186
  735. package/node_modules/sharp/src/stats.h +0 -62
  736. package/node_modules/sharp/src/utilities.cc +0 -289
  737. package/node_modules/sharp/src/utilities.h +0 -22
  738. package/node_modules/string-width/index.d.ts +0 -29
  739. package/node_modules/string-width/index.js +0 -47
  740. package/node_modules/string-width/license +0 -9
  741. package/node_modules/string-width/package.json +0 -56
  742. package/node_modules/string-width/readme.md +0 -50
  743. package/node_modules/strip-ansi/index.d.ts +0 -17
  744. package/node_modules/strip-ansi/index.js +0 -4
  745. package/node_modules/strip-ansi/license +0 -9
  746. package/node_modules/strip-ansi/package.json +0 -54
  747. package/node_modules/strip-ansi/readme.md +0 -46
  748. package/node_modules/which-module/LICENSE +0 -13
  749. package/node_modules/which-module/README.md +0 -58
  750. package/node_modules/which-module/index.js +0 -9
  751. package/node_modules/which-module/package.json +0 -41
  752. package/node_modules/wrap-ansi/index.js +0 -186
  753. package/node_modules/wrap-ansi/license +0 -9
  754. package/node_modules/wrap-ansi/package.json +0 -61
  755. package/node_modules/wrap-ansi/readme.md +0 -97
  756. package/node_modules/ws/LICENSE +0 -20
  757. package/node_modules/ws/README.md +0 -548
  758. package/node_modules/ws/browser.js +0 -8
  759. package/node_modules/ws/index.js +0 -22
  760. package/node_modules/ws/lib/buffer-util.js +0 -131
  761. package/node_modules/ws/lib/constants.js +0 -19
  762. package/node_modules/ws/lib/event-target.js +0 -292
  763. package/node_modules/ws/lib/extension.js +0 -203
  764. package/node_modules/ws/lib/limiter.js +0 -55
  765. package/node_modules/ws/lib/permessage-deflate.js +0 -530
  766. package/node_modules/ws/lib/receiver.js +0 -743
  767. package/node_modules/ws/lib/sender.js +0 -607
  768. package/node_modules/ws/lib/stream.js +0 -161
  769. package/node_modules/ws/lib/subprotocol.js +0 -62
  770. package/node_modules/ws/lib/validation.js +0 -152
  771. package/node_modules/ws/lib/websocket-server.js +0 -562
  772. package/node_modules/ws/lib/websocket.js +0 -1407
  773. package/node_modules/ws/package.json +0 -74
  774. package/node_modules/ws/wrapper.mjs +0 -21
  775. package/node_modules/y18n/CHANGELOG.md +0 -35
  776. package/node_modules/y18n/LICENSE +0 -13
  777. package/node_modules/y18n/README.md +0 -109
  778. package/node_modules/y18n/index.js +0 -188
  779. package/node_modules/y18n/package.json +0 -39
  780. package/node_modules/yargs/CHANGELOG.md +0 -420
  781. package/node_modules/yargs/LICENSE +0 -21
  782. package/node_modules/yargs/README.md +0 -140
  783. package/node_modules/yargs/build/lib/apply-extends.d.ts +0 -2
  784. package/node_modules/yargs/build/lib/apply-extends.js +0 -65
  785. package/node_modules/yargs/build/lib/argsert.d.ts +0 -2
  786. package/node_modules/yargs/build/lib/argsert.js +0 -65
  787. package/node_modules/yargs/build/lib/command.d.ts +0 -64
  788. package/node_modules/yargs/build/lib/command.js +0 -416
  789. package/node_modules/yargs/build/lib/common-types.d.ts +0 -36
  790. package/node_modules/yargs/build/lib/common-types.js +0 -25
  791. package/node_modules/yargs/build/lib/completion-templates.d.ts +0 -2
  792. package/node_modules/yargs/build/lib/completion-templates.js +0 -50
  793. package/node_modules/yargs/build/lib/completion.d.ts +0 -21
  794. package/node_modules/yargs/build/lib/completion.js +0 -135
  795. package/node_modules/yargs/build/lib/is-promise.d.ts +0 -1
  796. package/node_modules/yargs/build/lib/is-promise.js +0 -9
  797. package/node_modules/yargs/build/lib/levenshtein.d.ts +0 -1
  798. package/node_modules/yargs/build/lib/levenshtein.js +0 -58
  799. package/node_modules/yargs/build/lib/middleware.d.ts +0 -10
  800. package/node_modules/yargs/build/lib/middleware.js +0 -57
  801. package/node_modules/yargs/build/lib/obj-filter.d.ts +0 -1
  802. package/node_modules/yargs/build/lib/obj-filter.js +0 -14
  803. package/node_modules/yargs/build/lib/parse-command.d.ts +0 -11
  804. package/node_modules/yargs/build/lib/parse-command.js +0 -36
  805. package/node_modules/yargs/build/lib/process-argv.d.ts +0 -2
  806. package/node_modules/yargs/build/lib/process-argv.js +0 -31
  807. package/node_modules/yargs/build/lib/usage.d.ts +0 -49
  808. package/node_modules/yargs/build/lib/usage.js +0 -540
  809. package/node_modules/yargs/build/lib/validation.d.ts +0 -34
  810. package/node_modules/yargs/build/lib/validation.js +0 -330
  811. package/node_modules/yargs/build/lib/yargs.d.ts +0 -274
  812. package/node_modules/yargs/build/lib/yargs.js +0 -1190
  813. package/node_modules/yargs/build/lib/yerror.d.ts +0 -4
  814. package/node_modules/yargs/build/lib/yerror.js +0 -11
  815. package/node_modules/yargs/index.js +0 -40
  816. package/node_modules/yargs/locales/be.json +0 -46
  817. package/node_modules/yargs/locales/de.json +0 -46
  818. package/node_modules/yargs/locales/en.json +0 -51
  819. package/node_modules/yargs/locales/es.json +0 -46
  820. package/node_modules/yargs/locales/fi.json +0 -49
  821. package/node_modules/yargs/locales/fr.json +0 -53
  822. package/node_modules/yargs/locales/hi.json +0 -49
  823. package/node_modules/yargs/locales/hu.json +0 -46
  824. package/node_modules/yargs/locales/id.json +0 -50
  825. package/node_modules/yargs/locales/it.json +0 -46
  826. package/node_modules/yargs/locales/ja.json +0 -51
  827. package/node_modules/yargs/locales/ko.json +0 -49
  828. package/node_modules/yargs/locales/nb.json +0 -44
  829. package/node_modules/yargs/locales/nl.json +0 -49
  830. package/node_modules/yargs/locales/nn.json +0 -44
  831. package/node_modules/yargs/locales/pirate.json +0 -13
  832. package/node_modules/yargs/locales/pl.json +0 -49
  833. package/node_modules/yargs/locales/pt.json +0 -45
  834. package/node_modules/yargs/locales/pt_BR.json +0 -48
  835. package/node_modules/yargs/locales/ru.json +0 -46
  836. package/node_modules/yargs/locales/th.json +0 -46
  837. package/node_modules/yargs/locales/tr.json +0 -48
  838. package/node_modules/yargs/locales/zh_CN.json +0 -48
  839. package/node_modules/yargs/locales/zh_TW.json +0 -47
  840. package/node_modules/yargs/package.json +0 -92
  841. package/node_modules/yargs/yargs.js +0 -14
  842. package/node_modules/yargs-parser/CHANGELOG.md +0 -601
  843. package/node_modules/yargs-parser/LICENSE.txt +0 -14
  844. package/node_modules/yargs-parser/README.md +0 -449
  845. package/node_modules/yargs-parser/index.js +0 -1032
  846. package/node_modules/yargs-parser/lib/tokenize-arg-string.js +0 -40
  847. package/node_modules/yargs-parser/package.json +0 -46
@@ -1,5 +1,6 @@
1
1
  import fs from 'node:fs';
2
2
  import { spawn } from 'node:child_process';
3
+ import { attachProcessLog } from '../../bounded-process-log.mjs';
3
4
 
4
5
  const [requestPath, readyPath, instance, diagnosticPath] = process.argv.slice(2);
5
6
  let result = { instance, brokerPid: process.pid };
@@ -14,24 +15,22 @@ try {
14
15
  diagnostic('request loaded');
15
16
  if (spec.instance !== instance) throw new Error('Windows process broker request identity mismatch.');
16
17
  fs.rmSync(requestPath, { force: true });
17
- const descriptors = (spec.logs || []).map(file => fs.openSync(file, 'a'));
18
- try {
19
- const child = spawn(spec.executable, spec.args || [], {
20
- windowsHide: true,
21
- env: spec.environment,
22
- stdio: ['ignore', descriptors[0] ?? 'ignore', descriptors[1] ?? 'ignore'],
23
- });
24
- await new Promise((resolve, reject) => {
25
- child.once('spawn', resolve);
26
- child.once('error', reject);
27
- });
28
- // Keep this WMI-owned broker alive with the target so Codex tools inherit
29
- // its hidden console instead of creating a visible console per command.
30
- result.pid = child.pid;
31
- diagnostic(`target started (PID ${child.pid})`);
32
- } finally {
33
- descriptors.forEach(descriptor => fs.closeSync(descriptor));
34
- }
18
+ const logs = spec.logs || [];
19
+ const child = spawn(spec.executable, spec.args || [], {
20
+ windowsHide: true,
21
+ env: spec.environment,
22
+ stdio: ['ignore', logs[0] ? 'pipe' : 'ignore', logs[1] ? 'pipe' : 'ignore'],
23
+ });
24
+ if (child.stdout) attachProcessLog(child.stdout, logs[0]);
25
+ if (child.stderr) attachProcessLog(child.stderr, logs[1]);
26
+ await new Promise((resolve, reject) => {
27
+ child.once('spawn', resolve);
28
+ child.once('error', reject);
29
+ });
30
+ // Keep this WMI-owned broker alive with the target so Codex tools inherit
31
+ // its hidden console instead of creating a visible console per command.
32
+ result.pid = child.pid;
33
+ diagnostic(`target started (PID ${child.pid})`);
35
34
  } catch (error) {
36
35
  result.error = error?.stack || error?.message || String(error);
37
36
  try { diagnostic(`failed: ${result.error}`); } catch {}
@@ -0,0 +1,16 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ import path from 'node:path';
4
+ import { powershell } from './desktop-host.mjs';
5
+
6
+ const exec = promisify(execFile);
7
+
8
+ export async function projectLocations() {
9
+ const command = "[Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false); $projectDocuments = [Environment]::GetFolderPath('MyDocuments'); $projectUserDirectory = [Environment]::GetFolderPath('UserProfile'); $projectDownloads = [Environment]::ExpandEnvironmentVariables((Get-ItemPropertyValue -LiteralPath 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders' -Name '{374DE290-123F-4565-9164-39C4925E467B}' -ErrorAction Stop)); $projectDriveRoots = @(Get-PSDrive -PSProvider FileSystem | ForEach-Object { $_.Root }); @{ documents = $projectDocuments; home = $projectUserDirectory; downloads = $projectDownloads; roots = $projectDriveRoots } | ConvertTo-Json -Compress";
10
+ const { stdout } = await exec(powershell, ['-NoProfile', '-NonInteractive', '-Command', command],
11
+ { windowsHide: true, encoding: 'utf8', timeout: 10000 });
12
+ const locations = JSON.parse(stdout);
13
+ if (!path.isAbsolute(locations.documents)) throw new Error('无法取得电脑的文档目录。');
14
+ if (!path.isAbsolute(locations.downloads)) throw new Error('无法取得电脑的下载目录。');
15
+ return { defaultParent: path.join(locations.documents, 'ChatGPT'), home: locations.home, downloads: locations.downloads, roots: locations.roots };
16
+ }
@@ -0,0 +1,20 @@
1
+ // Windows Script Host has no console. Keep the login task alive until the
2
+ // short-lived CLI has handed the resident service to the background broker.
3
+ if (WScript.Arguments.length !== 2) WScript.Quit(2);
4
+ var shell = new ActiveXObject('WScript.Shell');
5
+ var files = new ActiveXObject('Scripting.FileSystemObject');
6
+ var node = WScript.Arguments.Item(0);
7
+ var entry = WScript.Arguments.Item(1);
8
+ if (!files.FileExists(node)) {
9
+ var directories = shell.Environment('PROCESS').Item('PATH').split(';');
10
+ node = '';
11
+ for (var i = 0; i < directories.length; i++) {
12
+ var directory = directories[i].replace(/^"|"$/g, '');
13
+ if (!directory) continue;
14
+ var candidate = files.BuildPath(directory, 'node.exe');
15
+ if (files.FileExists(candidate)) { node = candidate; break; }
16
+ }
17
+ if (!node) WScript.Quit(2);
18
+ }
19
+ var command = '"' + node + '" "' + entry + '" start --json';
20
+ WScript.Quit(shell.Run(command, 0, true));
@@ -1,27 +1,83 @@
1
- param([string]$NodePath, [string]$Entry, [ValidateSet('enable','disable','status')][string]$Action='status')
1
+ param([string]$NodePath, [string]$Entry, [ValidateSet('enable','disable','status')][string]$Action='status')
2
2
  $ErrorActionPreference = 'Stop'
3
3
  [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)
4
+
5
+ $taskName = 'Code Relax 桌面服务'
6
+ $legacyTaskName = 'Code Relax Bridge'
7
+ $taskSource = '@walkhi/code-relax'
8
+ $taskPath = '\' + $taskName
9
+ $launcher = Join-Path $PSScriptRoot 'resident-start.js'
10
+ $wscript = Join-Path $env:WINDIR 'System32\wscript.exe'
11
+ $arguments = '//B //Nologo "' + $launcher + '" "' + $NodePath + '" "' + $Entry + '"'
12
+ $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
13
+
14
+ $scheduler = New-Object -ComObject 'Schedule.Service'
15
+ $scheduler.Connect()
16
+ $root = $scheduler.GetFolder('\')
17
+ $registered = @($root.GetTasks(1) | Where-Object { $_.Name -eq $taskName } | Select-Object -First 1)
18
+ $legacyRegistered = @($root.GetTasks(1) | Where-Object { $_.Name -eq $legacyTaskName } | Select-Object -First 1)
19
+ if ($registered.Count -gt 0 -and $registered[0].Definition.RegistrationInfo.Source -ne $taskSource) {
20
+ throw 'Scheduled task is not owned by this installation.'
21
+ }
22
+ if ($legacyRegistered.Count -gt 0 -and $legacyRegistered[0].Definition.RegistrationInfo.Source -ne $taskSource) {
23
+ throw 'Legacy scheduled task is not owned by this installation.'
24
+ }
25
+
26
+ # Remove only the legacy shortcut created by this package. A Startup LNK that
27
+ # launches hidden PowerShell with ExecutionPolicy Bypass triggers AV heuristics.
4
28
  $shell = New-Object -ComObject WScript.Shell
5
- $target = Join-Path $shell.SpecialFolders.Item('Startup') 'Code Relax Bridge.lnk'
6
- $launcher = Join-Path $PSScriptRoot 'resident-start.ps1'
7
- $powershell = Join-Path $env:SystemRoot 'System32/WindowsPowerShell/v1.0/powershell.exe'
8
- $exists = Test-Path -LiteralPath $target
9
- if ($exists) {
10
- $existing = $shell.CreateShortcut($target)
11
- if ($existing.TargetPath -ne $powershell -or -not $existing.Arguments.Contains('"' + $launcher + '"')) {
12
- throw 'Startup shortcut is not owned by this installation.'
29
+ $legacyPath = Join-Path $shell.SpecialFolders.Item('Startup') 'Code Relax Bridge.lnk'
30
+ $legacyLauncher = Join-Path $PSScriptRoot 'resident-start.ps1'
31
+ $legacyExists = Test-Path -LiteralPath $legacyPath
32
+ if ($Action -ne 'status' -and $legacyExists) {
33
+ $legacy = $shell.CreateShortcut($legacyPath)
34
+ if (-not $legacy.Arguments.Contains('"' + $legacyLauncher + '"')) {
35
+ throw 'Legacy startup shortcut is not owned by this installation.'
13
36
  }
14
37
  }
38
+
15
39
  if ($Action -eq 'enable') {
16
- if (-not (Test-Path -LiteralPath $NodePath) -or -not (Test-Path -LiteralPath $Entry)) { throw 'Installed runtime is missing.' }
17
- $link = $shell.CreateShortcut($target)
18
- $link.TargetPath = $powershell
19
- $link.Arguments = '-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File "' + $launcher + '" -NodePath "' + $NodePath + '" -Entry "' + $Entry + '"'
20
- $link.WorkingDirectory = $env:USERPROFILE
21
- $link.WindowStyle = 7
22
- $link.Description = 'Code Relax resident computer connection'
23
- $link.Save()
24
- } elseif ($Action -eq 'disable' -and $exists) {
25
- Remove-Item -LiteralPath $target
40
+ if (-not (Test-Path -LiteralPath $NodePath) -or -not (Test-Path -LiteralPath $Entry) -or
41
+ -not (Test-Path -LiteralPath $launcher) -or -not (Test-Path -LiteralPath $wscript)) { throw 'Installed runtime is missing.' }
42
+ $definition = $scheduler.NewTask(0)
43
+ $definition.RegistrationInfo.Description = 'Start the Code Relax desktop service when this user signs in.'
44
+ $definition.RegistrationInfo.Source = $taskSource
45
+ $definition.Principal.UserId = $currentUser
46
+ $definition.Principal.LogonType = 3 # TASK_LOGON_INTERACTIVE_TOKEN
47
+ $definition.Principal.RunLevel = 0 # TASK_RUNLEVEL_LUA
48
+ $definition.Settings.Enabled = $true
49
+ $definition.Settings.Hidden = $true
50
+ $definition.Settings.StartWhenAvailable = $true
51
+ $definition.Settings.DisallowStartIfOnBatteries = $false
52
+ $definition.Settings.StopIfGoingOnBatteries = $false
53
+ $definition.Settings.ExecutionTimeLimit = 'PT5M'
54
+ $definition.Settings.MultipleInstances = 2 # TASK_INSTANCES_IGNORE_NEW
55
+ $trigger = $definition.Triggers.Create(9) # TASK_TRIGGER_LOGON
56
+ $trigger.UserId = $currentUser
57
+ $trigger.Enabled = $true
58
+ $exec = $definition.Actions.Create(0) # TASK_ACTION_EXEC
59
+ $exec.Path = $wscript
60
+ $exec.Arguments = $arguments
61
+ $exec.WorkingDirectory = $env:USERPROFILE
62
+ [void]$root.RegisterTaskDefinition($taskName, $definition, 6, $null, $null, 3, $null) # TASK_CREATE_OR_UPDATE
63
+ if ($legacyRegistered.Count -gt 0) { $root.DeleteTask($legacyTaskName, 0) }
64
+ } elseif ($Action -eq 'disable') {
65
+ if ($registered.Count -gt 0) { $root.DeleteTask($taskName, 0) }
66
+ if ($legacyRegistered.Count -gt 0) { $root.DeleteTask($legacyTaskName, 0) }
67
+ }
68
+ if ($Action -ne 'status' -and $legacyExists) { Remove-Item -LiteralPath $legacyPath }
69
+
70
+ $active = @($root.GetTasks(1) | Where-Object { $_.Name -eq $taskName } | Select-Object -First 1)
71
+ $taskEnabled = $active.Count -gt 0 -and $active[0].Enabled
72
+ $taskCurrent = $false
73
+ if ($taskEnabled) {
74
+ $taskAction = $active[0].Definition.Actions.Item(1)
75
+ $taskCurrent = $taskAction.Path -ieq $wscript -and $taskAction.Arguments -ieq $arguments
26
76
  }
27
- @{ enabled=(Test-Path -LiteralPath $target); path=$target; scope='current-user-logon' } | ConvertTo-Json -Compress
77
+ @{
78
+ enabled=($taskCurrent -and $legacyRegistered.Count -eq 0)
79
+ taskPresent=$taskEnabled
80
+ path=$(if ($taskEnabled) { 'Task Scheduler:' + $taskPath } elseif ($legacyRegistered.Count -gt 0) { 'Task Scheduler:\' + $legacyTaskName } elseif ($legacyExists) { $legacyPath } else { 'Task Scheduler:' + $taskPath })
81
+ scope='current-user-logon'
82
+ mechanism=$(if ($taskCurrent -and $legacyRegistered.Count -eq 0) { 'task-scheduler' } elseif ($taskEnabled -or $legacyRegistered.Count -gt 0) { 'stale-task-scheduler' } elseif ($legacyExists) { 'legacy-startup-shortcut' } else { 'task-scheduler' })
83
+ } | ConvertTo-Json -Compress
@@ -0,0 +1,168 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ import net from 'node:net';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import { spawn } from 'node:child_process';
7
+ import { brotliDecompressSync } from 'node:zlib';
8
+
9
+ export const RUSTDESK_PROBE_HOST_SHA256 = '8555777215510d83d2d61c9dc984e4fcc838bd7e79f9d18a42585431f5e8bb47';
10
+ const leaseMs = 60_000;
11
+ const pause = ms => new Promise(resolve => setTimeout(resolve, ms));
12
+ const failure = code => Object.assign(new Error('桌面视频测试尚未就绪'), { code, statusCode: 503 });
13
+
14
+ // The official EXE is a launcher. Extract its verified Brotli payload into our
15
+ // own runtime directory and launch the actual process, so leases own its PID.
16
+ export function prepareRustDeskProbeHost(root) {
17
+ const bytes = fs.readFileSync(path.join(root, 'rustdesk-1.5.0-x86_64.exe'));
18
+ if (crypto.createHash('sha256').update(bytes).digest('hex') !== RUSTDESK_PROBE_HOST_SHA256) throw failure('desktop_video_host_hash');
19
+ const magic = Buffer.from('rustdesk'), decoder = new TextDecoder('utf-8', { fatal: true });
20
+ let search = 0, entries;
21
+ while (search < bytes.length) {
22
+ const at = bytes.indexOf(magic, search); if (at < 0) break; search = at + magic.length;
23
+ try {
24
+ let offset = at + magic.length; const files = [];
25
+ while (!bytes.subarray(offset, offset + magic.length).equals(magic)) {
26
+ const length = bytes.readUInt32BE(offset); offset += 4;
27
+ if (length < 1 || length > 512) throw new Error('payload');
28
+ const name = decoder.decode(bytes.subarray(offset, offset + length)).replaceAll('\\', '/'); offset += length;
29
+ if (/[\x00-\x1f]/.test(name) || path.posix.isAbsolute(name) || name.includes(':') || name.split('/').includes('..')) throw new Error('payload_path');
30
+ const size = bytes.readUInt32BE(offset); offset += 4;
31
+ if (size < 1 || offset + size + 32 > bytes.length) throw new Error('payload');
32
+ const data = bytes.subarray(offset, offset + size); offset += size;
33
+ const md5 = bytes.subarray(offset, offset + 32).toString(); offset += 32;
34
+ if (!/^[a-f0-9]{32}$/.test(md5)) throw new Error('payload');
35
+ files.push({ name: path.posix.normalize(name), data, md5 });
36
+ if (files.length > 5000) throw new Error('payload');
37
+ }
38
+ if (files.length !== 104 || !files.some(file => file.name === 'rustdesk.exe')) continue;
39
+ const suffix = Buffer.from('.\\rustdesk.exe');
40
+ if (!bytes.subarray(offset + 8, offset + 8 + suffix.length).equals(suffix)) continue;
41
+ entries = files; break;
42
+ } catch { /* Non-payload occurrences of the ASCII magic are expected in PE strings. */ }
43
+ }
44
+ if (!entries) throw failure('desktop_video_host_payload');
45
+ const runtime = path.resolve(root, 'runtime');
46
+ for (const file of entries) {
47
+ const target = path.resolve(runtime, file.name);
48
+ if (!target.startsWith(runtime + path.sep)) throw failure('desktop_video_host_path');
49
+ let existing;
50
+ try { existing = crypto.createHash('md5').update(fs.readFileSync(target)).digest('hex'); } catch {}
51
+ if (existing === file.md5) continue;
52
+ const data = brotliDecompressSync(file.data, { maxOutputLength: 128 * 1024 * 1024 });
53
+ if (crypto.createHash('md5').update(data).digest('hex') !== file.md5) throw failure('desktop_video_host_payload');
54
+ fs.mkdirSync(path.dirname(target), { recursive: true }); fs.writeFileSync(target, data);
55
+ }
56
+ return path.join(runtime, 'rustdesk.exe');
57
+ }
58
+
59
+ // A read-only, LAN-only prototype. The normal desktop helper and input path are independent.
60
+ export class RustDeskVideoProbe {
61
+ constructor({ stateRoot, appData = process.env.APPDATA, platform = process.platform } = {}) {
62
+ this.platform = platform;
63
+ this.root = path.join(stateRoot, 'desktop-video-probe');
64
+ this.configRoot = path.join(appData || os.tmpdir(), 'RustDesk', 'config');
65
+ this.process = null; this.lease = null; this.timer = null; this.starting = false; this.stopped = Promise.resolve(); this.preparedExecutable = null;
66
+ }
67
+ configuration(port, password) {
68
+ const options = {
69
+ 'direct-server': 'Y', 'direct-access-port': String(port),
70
+ 'custom-rendezvous-server': '127.0.0.1:9', 'relay-server': '127.0.0.1:9', 'api-server': 'http://127.0.0.1:9',
71
+ 'enable-hwcodec': 'N', 'access-mode': 'view', 'approve-mode': 'password', 'verification-method': 'use-permanent-password',
72
+ 'enable-keyboard': 'N', 'enable-clipboard': 'N', 'enable-file-transfer': 'N', 'enable-audio': 'N',
73
+ 'enable-tunnel': 'N', 'enable-terminal': 'N', 'enable-record-session': 'N',
74
+ 'allow-auto-record-incoming': 'N', 'allow-auto-record-outgoing': 'N'
75
+ };
76
+ return {
77
+ main: `password = '${password}'\nsalt = '${crypto.randomBytes(16).toString('hex')}'\n`,
78
+ secondary: "rendezvous_server = '127.0.0.1:9'\n\n[options]\n" + Object.entries(options).map(([key, value]) => `${key} = '${value}'`).join('\n') + '\n'
79
+ };
80
+ }
81
+ async begin() {
82
+ if (this.platform !== 'win32') throw failure('desktop_video_platform');
83
+ if (this.starting || this.lease) throw failure('desktop_video_busy');
84
+ this.starting = true;
85
+ try {
86
+ await this.stopped;
87
+ const executable = path.join(this.root, 'rustdesk-1.5.0-x86_64.exe');
88
+ let binary;
89
+ try { binary = fs.readFileSync(executable); } catch { throw failure('desktop_video_host_missing'); }
90
+ if (crypto.createHash('sha256').update(binary).digest('hex') !== RUSTDESK_PROBE_HOST_SHA256) throw failure('desktop_video_host_hash');
91
+ const ownerFile = path.join(this.root, 'config-owner.json');
92
+ let owner;
93
+ try { owner = JSON.parse(fs.readFileSync(ownerFile, 'utf8')); } catch {}
94
+ const entries = fs.existsSync(this.configRoot) ? fs.readdirSync(this.configRoot) : [];
95
+ if (entries.length && (owner?.configRoot !== this.configRoot || !owner.hashes
96
+ || JSON.stringify(owner.hashes) !== JSON.stringify(this.configHashes()))) throw failure('desktop_video_existing_rustdesk');
97
+ const port = await new Promise((resolve, reject) => {
98
+ const server = net.createServer(); server.once('error', reject);
99
+ server.listen(0, '127.0.0.1', () => { const port = server.address().port; server.close(error => error ? reject(error) : resolve(port)); });
100
+ });
101
+ const actualExecutable = this.preparedExecutable ||= prepareRustDeskProbeHost(this.root);
102
+ const password = crypto.randomBytes(24).toString('hex'), leaseId = crypto.randomBytes(16).toString('hex');
103
+ const config = this.configuration(port, password);
104
+ fs.mkdirSync(this.root, { recursive: true, mode: 0o700 });
105
+ fs.mkdirSync(this.configRoot, { recursive: true, mode: 0o700 });
106
+ fs.writeFileSync(path.join(this.configRoot, 'RustDesk.toml'), config.main, { mode: 0o600 });
107
+ fs.writeFileSync(path.join(this.configRoot, 'RustDesk2.toml'), config.secondary, { mode: 0o600 });
108
+ this.saveOwner();
109
+ this.process = spawn(actualExecutable, ['--server'], { cwd: path.dirname(actualExecutable),
110
+ env: { ...process.env, RUSTDESK_APPNAME: 'rustdesk-1.5.0-x86_64.exe' }, windowsHide: true, stdio: 'ignore' });
111
+ const child = this.process; let launchError = false;
112
+ console.info(JSON.stringify({ event: 'desktop-video-host', stage: 'spawn', pid: child.pid }));
113
+ this.stopped = new Promise(resolve => {
114
+ let ended = false;
115
+ const finished = () => {
116
+ console.info(JSON.stringify({ event: 'desktop-video-host', stage: 'exit', pid: child.pid, code: child.exitCode }));
117
+ if (ended) return; ended = true;
118
+ try { this.saveOwner(); } catch { console.error(JSON.stringify({ event: 'desktop-video-owner', state: 'failed' })); }
119
+ if (this.process === child) { clearTimeout(this.timer); this.process = null; this.lease = null; }
120
+ resolve();
121
+ };
122
+ child.once('error', () => { launchError = true; finished(); });
123
+ child.once('exit', finished);
124
+ });
125
+ const deadline = Date.now() + 8_000;
126
+ let ready = false;
127
+ while (Date.now() < deadline && child.exitCode === null && !launchError) {
128
+ ready = await new Promise(resolve => {
129
+ const socket = net.connect({ host: '127.0.0.1', port });
130
+ let settled = false;
131
+ const finish = value => { if (settled) return; settled = true; socket.destroy(); resolve(value); };
132
+ socket.once('connect', () => finish(true)); socket.once('error', () => finish(false)); socket.setTimeout(300, () => finish(false));
133
+ });
134
+ if (ready) break;
135
+ await pause(150);
136
+ }
137
+ if (!ready) throw failure('desktop_video_host_start');
138
+ this.lease = { leaseId, password, port, codec: 'vp9', fps: 5, viewOnly: true };
139
+ console.info(JSON.stringify({ event: 'desktop-video-host', stage: 'ready', pid: child.pid }));
140
+ this.renew(leaseId);
141
+ return { ...this.lease, engine: 'rustdesk-probe', expiresInMs: leaseMs };
142
+ } catch (error) { this.stop(); throw error; }
143
+ finally { this.starting = false; }
144
+ }
145
+ configHashes() {
146
+ return ['RustDesk.toml', 'RustDesk2.toml'].map(name => {
147
+ try { return crypto.createHash('sha256').update(fs.readFileSync(path.join(this.configRoot, name))).digest('hex'); }
148
+ catch { return ''; }
149
+ });
150
+ }
151
+ saveOwner() {
152
+ fs.writeFileSync(path.join(this.root, 'config-owner.json'), JSON.stringify({ configRoot: this.configRoot, hashes: this.configHashes() }), { mode: 0o600 });
153
+ }
154
+ renew(leaseId) {
155
+ if (!this.lease || leaseId !== this.lease.leaseId) throw failure('desktop_video_lease');
156
+ clearTimeout(this.timer); this.timer = setTimeout(() => this.stop(), leaseMs); this.timer.unref();
157
+ return { active: true, expiresInMs: leaseMs };
158
+ }
159
+ release(leaseId) {
160
+ if (this.lease?.leaseId === leaseId) this.stop();
161
+ return { released: true };
162
+ }
163
+ stop() {
164
+ clearTimeout(this.timer); this.timer = null;
165
+ const child = this.process; this.process = null; this.lease = null;
166
+ if (child && child.exitCode === null) child.kill();
167
+ }
168
+ }
@@ -1,43 +1,35 @@
1
- import { execFile } from 'node:child_process';
2
- import { promisify } from 'node:util';
3
- import path from 'node:path';
4
- import { fileURLToPath } from 'node:url';
5
- import fs from 'node:fs';
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import fs from 'node:fs';
6
6
  import { runtimePaths } from './runtime-paths.mjs';
7
7
  import { readRecord } from '../../service-lifecycle.mjs';
8
+ import { readManagedEndpoint } from '../../managed-endpoint.mjs';
8
9
  import { lanNetworks } from './network-info.mjs';
9
-
10
- const exec = promisify(execFile);
11
- const bridgeRoot = fileURLToPath(new URL('../../../', import.meta.url));
12
- async function detect(script) {
13
- const executable = path.join(process.env.SystemRoot, 'System32/WindowsPowerShell/v1.0/powershell.exe');
14
- const { stdout } = await exec(executable, ['-NoProfile', '-NonInteractive', '-File',
15
- path.join(bridgeRoot, script)], { windowsHide: true, encoding: 'utf8' });
16
- return stdout.trim();
17
- }
18
-
19
- // Windows-only network metadata stays here, outside the lifecycle implementation.
20
- export const sharedServiceUrl = () => detect('get-shared-service-url.ps1');
10
+
11
+ const exec = promisify(execFile);
12
+ const bridgeRoot = fileURLToPath(new URL('../../../', import.meta.url));
13
+ async function detect(script, args = []) {
14
+ const executable = path.join(process.env.SystemRoot, 'System32/WindowsPowerShell/v1.0/powershell.exe');
15
+ const { stdout } = await exec(executable, ['-NoProfile', '-NonInteractive', '-File',
16
+ path.join(bridgeRoot, script), ...args], { windowsHide: true, encoding: 'utf8' });
17
+ return stdout.trim();
18
+ }
19
+
20
+ // Windows-only network metadata stays here, outside the lifecycle implementation.
21
+ export const sharedServiceUrl = () => {
22
+ const url = readManagedEndpoint(runtimePaths().stateRoot);
23
+ return url ? detect('get-shared-service-url.ps1', ['-AppServerUrl', url]) : '';
24
+ };
21
25
  export const lanAddress = async () => (await lanNetworks())[0]?.address || '';
22
26
  export { lanNetworks };
23
- export function migrateState(stateRoot) {
24
- fs.mkdirSync(stateRoot, { recursive: true });
25
- for (const name of ['bridge-config.json', 'bridge-session.json']) {
26
- const target = path.join(stateRoot, name);
27
- const old = path.join(bridgeRoot, '../.codex/bridge', name);
28
- if (!fs.existsSync(target) && fs.existsSync(old)) fs.copyFileSync(old, target, fs.constants.COPYFILE_EXCL);
29
- }
30
- }
31
- export async function desktopEnvironment(context, sharedUrl) {
32
- const environment = { ...process.env };
33
- environment.CODEX_THREAD_ID ||= environment.CODEX_SESSION_ID || context?.sourceThreadId;
34
- if (sharedUrl) environment.CODEX_REMOTE_SHARED_WS_URL = sharedUrl;
35
- else delete environment.CODEX_REMOTE_SHARED_WS_URL;
36
- const installation = readRecord(path.join(runtimePaths(environment).serviceRoot, 'installation.json'));
37
- const executable = installation?.nodeExecutable;
27
+ export async function bridgeEnvironment() {
28
+ const environment = { ...process.env };
29
+ const installation = readRecord(path.join(runtimePaths(environment).serviceRoot, 'installation.json'));
30
+ const executable = installation?.nodeExecutable;
38
31
  if (!executable || !fs.existsSync(executable)) throw new Error('安装时选用的 Node 不存在,请重新安装 Code Relax。');
39
- environment.CODEX_MCP_NODE_PATH = executable;
40
- environment.CODEX_REMOTE_LEGACY_UPLOADS_ROOTS = JSON.stringify(installation.legacyUploadsRoots || []);
41
- if (sharedUrl) delete environment.CODEX_APP_TOOLS_PIPE_PATH;
42
- return { executable, environment };
43
- }
32
+ environment.CODEX_MCP_NODE_PATH = executable;
33
+ delete environment.CODEX_APP_TOOLS_PIPE_PATH;
34
+ return { executable, environment };
35
+ }
@@ -1,6 +1,7 @@
1
1
  $ErrorActionPreference = 'Stop'
2
2
  [Console]::InputEncoding = New-Object System.Text.UTF8Encoding($false)
3
3
  [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)
4
+ $brokerStarted = $false
4
5
  try {
5
6
  $spec = [Console]::In.ReadToEnd() | ConvertFrom-Json
6
7
  # WMI owns this launch, not the caller's kill-on-close Desktop job hierarchy.
@@ -13,10 +14,15 @@ try {
13
14
  $request = Join-Path $launchRoot ($instance + '.request.json')
14
15
  $diagnostic = Join-Path $launchRoot ($instance + '.broker.log')
15
16
  $spec | Add-Member -NotePropertyName instance -NotePropertyValue $instance
16
- $spec | Add-Member -NotePropertyName diagnostic -NotePropertyValue $diagnostic
17
17
  $requestTemporary = $request + '.tmp'
18
18
  [IO.File]::WriteAllText($requestTemporary, ($spec | ConvertTo-Json -Compress -Depth 10), (New-Object Text.UTF8Encoding($false)))
19
19
  [IO.File]::Move($requestTemporary, $request)
20
+ # MSIX can redirect a newly written file even when its existing parent
21
+ # resolves outside the package. Resolve the file handle, not just the folder.
22
+ $request = [IsolatedProcess]::ResolvePath($request)
23
+ $launchRoot = [IO.Path]::GetDirectoryName($request)
24
+ $ready = Join-Path $launchRoot ($instance + '.json')
25
+ $diagnostic = Join-Path $launchRoot ($instance + '.broker.log')
20
26
  $startup = New-CimInstance -ClassName Win32_ProcessStartup -ClientOnly -Property @{
21
27
  ShowWindow=[uint16]0; CreateFlags=[uint32]0x1000010
22
28
  }
@@ -26,6 +32,7 @@ try {
26
32
  CommandLine=$command; CurrentDirectory=$env:USERPROFILE; ProcessStartupInformation=$startup
27
33
  }
28
34
  if ($broker.ReturnValue -ne 0) { throw ('Windows process broker failed: ' + $broker.ReturnValue) }
35
+ $brokerStarted = $true
29
36
  $deadline = [DateTime]::UtcNow.AddSeconds(30)
30
37
  while (-not (Test-Path -LiteralPath $ready)) {
31
38
  if ([DateTime]::UtcNow -gt $deadline) {
@@ -44,6 +51,8 @@ try {
44
51
  [Console]::Error.WriteLine($_.Exception.Message)
45
52
  exit 1
46
53
  } finally {
47
- if ($request -and (Test-Path -LiteralPath $request)) { Remove-Item -LiteralPath $request -Force }
54
+ # Once launched, the worker owns consumption. A slow broker must not lose
55
+ # its request merely because this caller timed out; never launch a retry.
56
+ if (-not $brokerStarted -and $request -and (Test-Path -LiteralPath $request)) { Remove-Item -LiteralPath $request -Force }
48
57
  if ($requestTemporary -and (Test-Path -LiteralPath $requestTemporary)) { Remove-Item -LiteralPath $requestTemporary -Force }
49
58
  }
@@ -5,15 +5,18 @@ $package = Get-AppxPackage OpenAI.Codex | Select-Object -First 1
5
5
  if (-not $package -or $Executable -ne (Join-Path $package.InstallLocation 'app/ChatGPT.exe')) {
6
6
  throw 'Desktop executable identity changed; recovery stopped.'
7
7
  }
8
- # This action is only reached after explicit whole-workstation recovery confirmation.
9
- # Never kill an app-server process tree: the independent recovery worker must survive.
10
- $workers = @(Get-CimInstance Win32_Process -Filter "Name='ChatGPT.exe'" | Where-Object { $_.ExecutablePath -eq $Executable })
8
+ # Never kill another user's Desktop or an app-server process tree. The independent
9
+ # installer/recovery worker must survive and relaunch only in this interactive session.
10
+ $currentSessionId = (Get-Process -Id $PID -ErrorAction Stop).SessionId
11
+ $workers = @(Get-CimInstance Win32_Process -Filter "Name='ChatGPT.exe'" | Where-Object {
12
+ $_.ExecutablePath -eq $Executable -and $_.SessionId -eq $currentSessionId
13
+ })
11
14
  foreach ($worker in $workers) {
12
15
  $actual = Get-CimInstance Win32_Process -Filter "ProcessId=$($worker.ProcessId)"
13
16
  if ($actual -and $actual.ExecutablePath -eq $worker.ExecutablePath -and $actual.CreationDate -eq $worker.CreationDate) {
14
17
  Stop-Process -Id $worker.ProcessId -Force -ErrorAction Stop
15
18
  }
16
19
  }
17
- if (Get-Process ChatGPT -ErrorAction SilentlyContinue | Where-Object { $_.Path -eq $Executable }) {
20
+ if (Get-Process ChatGPT -ErrorAction SilentlyContinue | Where-Object { $_.Path -eq $Executable -and $_.SessionId -eq $currentSessionId }) {
18
21
  throw 'Desktop did not exit; recovery stopped.'
19
22
  }
@@ -2,7 +2,7 @@ import path from 'node:path';
2
2
  import fs from 'node:fs';
3
3
  import { readRecord, writeRecord } from '../../service-lifecycle.mjs';
4
4
  import { runScript } from './desktop-host.mjs';
5
- import { managedAppServerUrl } from '../../managed-app-server.mjs';
5
+ import { managedEndpointUrl } from '../../managed-endpoint.mjs';
6
6
 
7
7
  const ownershipFile = 'managed-environment.json';
8
8
 
@@ -10,22 +10,24 @@ export async function readManagedEnvironment() {
10
10
  return JSON.parse(await runScript('user-environment.ps1', ['-Action', 'Read']));
11
11
  }
12
12
 
13
- export async function configureManagedEnvironment(stateRoot) {
13
+ export async function configureManagedEnvironment(stateRoot, url) {
14
14
  const current = await readManagedEnvironment();
15
+ if (!managedEndpointUrl(url)) throw new Error('未确认 Codex 内核地址,未修改环境变量。');
15
16
  const ownershipPath = path.join(stateRoot, ownershipFile);
16
17
  const ownership = readRecord(ownershipPath);
17
18
  if (current.forceCliUser === '1' || current.forceCliMachine === '1') {
18
- throw new Error('CODEX_APP_SERVER_FORCE_CLI=1 会让 Codex 忽略受管 app-server;未修改该配置。');
19
+ throw new Error('CODEX_APP_SERVER_FORCE_CLI=1 会让 Codex 忽略当前内核地址;未修改该配置。');
19
20
  }
20
- if (current.userValue && current.userValue !== managedAppServerUrl) {
21
+ if (current.userValue && current.userValue !== url && current.userValue !== ownership?.value) {
21
22
  throw new Error(`用户已有 CODEX_APP_SERVER_WS_URL=${current.userValue};未覆盖该配置。`);
22
23
  }
23
- if (current.userValue === managedAppServerUrl) {
24
- const owned = ownership?.value === managedAppServerUrl;
24
+ if (current.userValue === url) {
25
+ const owned = ownership?.value === url;
25
26
  return { configured: true, value: current.userValue, changed: false, owned };
26
27
  }
27
- const applied = JSON.parse(await runScript('user-environment.ps1', ['-Action', 'Set', '-Value', managedAppServerUrl]));
28
- writeRecord(ownershipPath, { name: 'CODEX_APP_SERVER_WS_URL', value: managedAppServerUrl,
28
+ const applied = JSON.parse(await runScript('user-environment.ps1', ['-Action', 'Set', '-Value', url]));
29
+ if (applied.userValue !== url) throw new Error('CODEX_APP_SERVER_WS_URL 写入后读回不一致。');
30
+ writeRecord(ownershipPath, { name: 'CODEX_APP_SERVER_WS_URL', value: url,
29
31
  configuredAt: new Date().toISOString() });
30
32
  return { configured: true, value: applied.userValue, changed: true, owned: true };
31
33
  }
@@ -38,10 +40,10 @@ export async function clearManagedEnvironment(stateRoot) {
38
40
  fs.rmSync(ownershipPath, { force: true });
39
41
  return { removed: false, preserved: false, reason: 'already-empty' };
40
42
  }
41
- if (ownership?.value !== managedAppServerUrl || current.userValue !== managedAppServerUrl) {
43
+ if (!managedEndpointUrl(ownership?.value) || current.userValue !== ownership.value) {
42
44
  fs.rmSync(ownershipPath, { force: true });
43
45
  return { removed: false, preserved: true, value: current.userValue,
44
- reason: ownership?.value === managedAppServerUrl ? 'user-modified' : 'not-owned' };
46
+ reason: managedEndpointUrl(ownership?.value) ? 'user-modified' : 'not-owned' };
45
47
  }
46
48
  const result = JSON.parse(await runScript('user-environment.ps1', ['-Action', 'Clear']));
47
49
  if (result.userValue) throw new Error('CODEX_APP_SERVER_WS_URL 清理后读回仍不为空。');