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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (834) hide show
  1. package/README.md +51 -45
  2. package/dist/bin/cleanup-accounts.mjs +63 -0
  3. package/dist/bin/codex-remote.mjs +315 -210
  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 +58 -0
  7. package/dist/bin/self-relay-admin.mjs +8 -0
  8. package/dist/bin/self-relay-demo.mjs +33 -33
  9. package/dist/bin/self-relay-server.mjs +44 -31
  10. package/dist/build-platform.json +1 -0
  11. package/dist/get-lan-networks.ps1 +40 -40
  12. package/dist/shared/app-server-events.cjs +200 -80
  13. package/dist/shared/code-browser.cjs +159 -0
  14. package/dist/shared/file-changes.cjs +31 -0
  15. package/dist/shared/file-citations.cjs +117 -0
  16. package/dist/shared/file-mentions.cjs +92 -0
  17. package/dist/shared/message-delivery.cjs +54 -0
  18. package/dist/shared/p2p-data-channel.cjs +72 -50
  19. package/dist/shared/p2p-diagnostics.cjs +28 -28
  20. package/dist/shared/p2p-file-channel.cjs +74 -0
  21. package/dist/shared/plan-pricing.cjs +32 -0
  22. package/dist/shared/server-requests.cjs +219 -67
  23. package/dist/shared/service-endpoints.cjs +21 -0
  24. package/dist/shared/timeline-sync.cjs +173 -67
  25. package/dist/skills/code-relax/SKILL.md +22 -17
  26. package/dist/src/background-process.mjs +18 -18
  27. package/dist/src/bounded-process-log.mjs +63 -0
  28. package/dist/src/celsius-client.mjs +107 -0
  29. package/dist/src/code-browser.mjs +100 -0
  30. package/dist/src/desktop-launcher.mjs +29 -34
  31. package/dist/src/dots-approval-timeline.mjs +99 -0
  32. package/dist/src/dots-avatar.mjs +42 -0
  33. package/dist/src/dots-chat-projection.mjs +50 -0
  34. package/dist/src/dots-chat-server.mjs +461 -0
  35. package/dist/src/dots-message-images.mjs +319 -0
  36. package/dist/src/dots-profile.mjs +77 -0
  37. package/dist/src/dots-room-activity.mjs +94 -0
  38. package/dist/src/dots-room-client.mjs +135 -0
  39. package/dist/src/dots-room-projection.mjs +94 -0
  40. package/dist/src/dots-schedules.mjs +66 -0
  41. package/dist/src/dots-summary-tasks.mjs +32 -0
  42. package/dist/src/dots-task-catalog.mjs +430 -0
  43. package/dist/src/dots-task-files.mjs +52 -0
  44. package/dist/src/execution-health.mjs +26 -26
  45. package/dist/src/file-transfer-range.mjs +22 -0
  46. package/dist/src/file-upload-session.mjs +130 -0
  47. package/dist/src/hosted-history-app-server.mjs +103 -0
  48. package/dist/src/hosted-history-cache.mjs +113 -0
  49. package/dist/src/lan-socket-server.mjs +191 -37
  50. package/dist/src/managed-app-server.mjs +244 -207
  51. package/dist/src/message-images.mjs +9 -27
  52. package/dist/src/message-upload-files.mjs +74 -0
  53. package/dist/src/onboarding.mjs +9 -28
  54. package/dist/src/plan-pricing.mjs +47 -0
  55. package/dist/src/platform/README.md +11 -11
  56. package/dist/src/platform/codex-protocol.mjs +46 -0
  57. package/dist/src/platform/codex-runtime.mjs +3 -0
  58. package/dist/src/platform/credential-store.mjs +3 -0
  59. package/dist/src/platform/desktop-host.mjs +3 -0
  60. package/dist/src/platform/desktop-project-registration.mjs +3 -0
  61. package/dist/src/platform/desktop-project-store.mjs +149 -0
  62. package/dist/src/platform/linux/README.md +3 -3
  63. package/dist/src/platform/macos/README.md +3 -3
  64. package/dist/src/platform/macos/codex-runtime.mjs +125 -0
  65. package/dist/src/platform/macos/credential-store.mjs +10 -0
  66. package/dist/src/platform/macos/desktop-host.mjs +82 -0
  67. package/dist/src/platform/macos/desktop-project-registration.mjs +10 -0
  68. package/dist/src/platform/macos/network-info.mjs +28 -0
  69. package/dist/src/platform/macos/project-locations.mjs +8 -0
  70. package/dist/src/platform/macos/resident-startup.mjs +84 -0
  71. package/dist/src/platform/macos/retained-runtime.mjs +127 -0
  72. package/dist/src/platform/macos/service-host.mjs +18 -0
  73. package/dist/src/platform/macos/system.mjs +29 -0
  74. package/dist/src/platform/macos/user-environment.mjs +7 -0
  75. package/dist/src/platform/native-package.mjs +46 -0
  76. package/dist/src/platform/network-info.mjs +3 -0
  77. package/dist/src/platform/path-identity.mjs +5 -0
  78. package/dist/src/platform/posix/runtime-paths.mjs +25 -0
  79. package/dist/src/platform/project-locations.mjs +3 -0
  80. package/dist/src/platform/runtime-paths.mjs +8 -0
  81. package/dist/src/platform/select.mjs +5 -0
  82. package/dist/src/platform/service-host.mjs +3 -0
  83. package/dist/src/platform/user-environment.mjs +3 -0
  84. package/dist/src/platform/windows/IsolatedProcess.cs +79 -79
  85. package/dist/src/platform/windows/activate-desktop.ps1 +48 -0
  86. package/dist/src/platform/windows/background-process.mjs +30 -30
  87. package/dist/src/platform/windows/codex-runtime.mjs +215 -0
  88. package/dist/src/platform/windows/desktop-helper.mjs +179 -0
  89. package/dist/src/platform/windows/desktop-host.mjs +37 -17
  90. package/dist/src/platform/windows/desktop-info.ps1 +2 -4
  91. package/dist/src/platform/windows/desktop-project-registration.mjs +4 -0
  92. package/dist/src/platform/windows/desktop-runtime.ps1 +10 -0
  93. package/dist/src/platform/windows/desktop-shortcuts.ps1 +6 -13
  94. package/dist/src/platform/windows/dots-profile.mjs +49 -0
  95. package/dist/src/platform/windows/launch-worker.mjs +41 -42
  96. package/dist/src/platform/windows/network-info.mjs +34 -34
  97. package/dist/src/platform/windows/project-locations.mjs +16 -0
  98. package/dist/src/platform/windows/resident-start.js +20 -0
  99. package/dist/src/platform/windows/resident-start.ps1 +7 -7
  100. package/dist/src/platform/windows/resident-startup.ps1 +83 -27
  101. package/dist/src/platform/windows/resolve-state-root.ps1 +14 -14
  102. package/dist/src/platform/windows/runtime-paths.mjs +20 -20
  103. package/dist/src/platform/windows/rustdesk-video-probe.mjs +168 -0
  104. package/dist/src/platform/windows/service-host.mjs +9 -21
  105. package/dist/src/platform/windows/start-hidden-console.ps1 +49 -49
  106. package/dist/src/platform/windows/stop-desktop.ps1 +22 -19
  107. package/dist/src/platform/windows/user-environment.mjs +50 -50
  108. package/dist/src/platform/windows/user-environment.ps1 +41 -41
  109. package/dist/src/project-create.mjs +119 -0
  110. package/dist/src/project-management.mjs +69 -0
  111. package/dist/src/runtime-discovery.mjs +47 -0
  112. package/dist/src/self-relay/account-cleanup.mjs +30 -0
  113. package/dist/src/self-relay/account-connections.mjs +52 -0
  114. package/dist/src/self-relay/admin-cloud.mjs +101 -0
  115. package/dist/src/self-relay/admin-page.mjs +80 -0
  116. package/dist/src/self-relay/admin-server.mjs +74 -0
  117. package/dist/src/self-relay/admin-state.mjs +127 -61
  118. package/dist/src/self-relay/admin-style.mjs +14 -0
  119. package/dist/src/self-relay/android-releases.mjs +61 -0
  120. package/dist/src/self-relay/client.mjs +19 -19
  121. package/dist/src/self-relay/connector.mjs +324 -48
  122. package/dist/src/self-relay/debug-allowlist.mjs +33 -33
  123. package/dist/src/self-relay/demo.mjs +6 -7
  124. package/dist/src/self-relay/device-store.mjs +84 -84
  125. package/dist/src/self-relay/diagnostics.mjs +54 -0
  126. package/dist/src/self-relay/email-accounts.mjs +183 -0
  127. package/dist/src/self-relay/file-wire.mjs +13 -0
  128. package/dist/src/self-relay/lan-authorizations.mjs +42 -29
  129. package/dist/src/self-relay/lifecycle.mjs +117 -148
  130. package/dist/src/self-relay/long-pairing.mjs +40 -0
  131. package/dist/src/self-relay/mysql-state.mjs +105 -0
  132. package/dist/src/self-relay/p2p-probe.mjs +159 -123
  133. package/dist/src/self-relay/privacy-page.mjs +26 -0
  134. package/dist/src/self-relay/rtc-file-bridge.mjs +41 -0
  135. package/dist/src/self-relay/server.mjs +889 -423
  136. package/dist/src/self-relay/usage-daily.mjs +55 -0
  137. package/dist/src/self-relay/usage-meter.mjs +141 -0
  138. package/dist/src/self-relay/windows-route-helper.mjs +75 -75
  139. package/dist/src/self-relay/wire.mjs +36 -36
  140. package/dist/src/server.mjs +1124 -1514
  141. package/dist/src/service-control.mjs +82 -72
  142. package/dist/src/service-doctor.mjs +110 -63
  143. package/dist/src/service-health.mjs +33 -33
  144. package/dist/src/service-install.mjs +9 -9
  145. package/dist/src/service-lifecycle.mjs +47 -39
  146. package/dist/src/service-restart.mjs +81 -48
  147. package/dist/src/shared-app-server.mjs +396 -297
  148. package/dist/src/shared-catalog.mjs +132 -50
  149. package/dist/src/shared-recovery.mjs +146 -142
  150. package/dist/src/shared-thread-stream.mjs +135 -51
  151. package/dist/src/skill-install.mjs +51 -64
  152. package/dist/src/thread-title-generation.mjs +150 -150
  153. package/dist/src/turn-model-history.mjs +47 -0
  154. package/dist/src/usage-reset.mjs +17 -0
  155. package/dist/src/workstation-downloads.mjs +120 -0
  156. package/dist/tools/rtc-route-helper.ps1 +99 -99
  157. package/dist/tools/start-rtc-route-helper.ps1 +15 -15
  158. package/dist/web/vendor/markdown-it.LICENSE.txt +22 -22
  159. package/dist/web/vendor/markdown-it.umd.min.js +13 -13
  160. package/package.json +34 -37
  161. package/tools/postinstall.mjs +127 -118
  162. package/dist/src/app-server-client.mjs +0 -468
  163. package/dist/src/app-server-tasks.mjs +0 -358
  164. package/dist/src/debug-ui.mjs +0 -131
  165. package/dist/src/platform/windows/desktop-monitor.mjs +0 -34
  166. package/dist/src/platform/windows/desktop-shortcut-run.ps1 +0 -5
  167. package/dist/src/platform/windows/desktop-tools.mjs +0 -48
  168. package/dist/src/thread-catalog.mjs +0 -47
  169. package/dist/tools/find-desktop-pipe.mjs +0 -10
  170. package/dist/web/activity-view.js +0 -283
  171. package/dist/web/approval-ui.js +0 -188
  172. package/dist/web/capabilities.js +0 -57
  173. package/dist/web/chat-transport.js +0 -202
  174. package/dist/web/chat.css +0 -782
  175. package/dist/web/chat.js +0 -3830
  176. package/dist/web/client-platform.js +0 -11
  177. package/dist/web/community-view.js +0 -20
  178. package/dist/web/community.css +0 -77
  179. package/dist/web/community.html +0 -37
  180. package/dist/web/composer-controller.js +0 -101
  181. package/dist/web/conversation-controller.js +0 -99
  182. package/dist/web/disclosure-state-controller.js +0 -95
  183. package/dist/web/draft-controller.js +0 -103
  184. package/dist/web/harmony-platform.js +0 -52
  185. package/dist/web/highlight-powershell.min.js +0 -39
  186. package/dist/web/highlight.min.js +0 -1262
  187. package/dist/web/history-cache.js +0 -240
  188. package/dist/web/history-controller.js +0 -167
  189. package/dist/web/index.html +0 -325
  190. package/dist/web/lan-session.js +0 -122
  191. package/dist/web/link-action-controller.js +0 -212
  192. package/dist/web/message-send-controller.js +0 -177
  193. package/dist/web/message-view.js +0 -98
  194. package/dist/web/p2p-data-channel.js +0 -50
  195. package/dist/web/p2p-diagnostics.js +0 -28
  196. package/dist/web/p2p-probe.js +0 -123
  197. package/dist/web/page-resume.js +0 -28
  198. package/dist/web/pending-message-store.js +0 -108
  199. package/dist/web/queue-controller.js +0 -82
  200. package/dist/web/resources.json +0 -1
  201. package/dist/web/self-relay-session.js +0 -129
  202. package/dist/web/server-requests.js +0 -67
  203. package/dist/web/station-connection-controller.js +0 -75
  204. package/dist/web/task-list-view.js +0 -296
  205. package/dist/web/thread-attention-controller.js +0 -124
  206. package/dist/web/thread-context-controller.js +0 -30
  207. package/dist/web/thread-list-controller.js +0 -61
  208. package/dist/web/thread-list-sync.js +0 -86
  209. package/dist/web/thread-title-controller.js +0 -57
  210. package/dist/web/timeline-formatters.js +0 -249
  211. package/dist/web/timeline-reducer.js +0 -81
  212. package/dist/web/timeline-renderer.js +0 -161
  213. package/dist/web/timeline-scroll-controller.js +0 -50
  214. package/dist/web/timeline-sync.js +0 -67
  215. package/dist/web/usage-controller.js +0 -258
  216. package/dist/web/vendor/README.md +0 -14
  217. package/dist/web/vendor/highlight-powershell.min.js +0 -39
  218. package/dist/web/vendor/highlight.LICENSE.txt +0 -29
  219. package/dist/web/vendor/highlight.min.js +0 -1262
  220. package/dist/web/vendor/lucide.LICENSE.txt +0 -17
  221. package/node_modules/@img/colour/LICENSE.md +0 -82
  222. package/node_modules/@img/colour/README.md +0 -15
  223. package/node_modules/@img/colour/color.cjs +0 -1596
  224. package/node_modules/@img/colour/index.cjs +0 -1
  225. package/node_modules/@img/colour/index.d.ts +0 -929
  226. package/node_modules/@img/colour/package.json +0 -58
  227. package/node_modules/@img/sharp-win32-x64/LICENSE +0 -191
  228. package/node_modules/@img/sharp-win32-x64/README.md +0 -59
  229. package/node_modules/@img/sharp-win32-x64/index.cjs +0 -1
  230. package/node_modules/@img/sharp-win32-x64/lib/libvips-42.dll +0 -0
  231. package/node_modules/@img/sharp-win32-x64/lib/libvips-cpp-8.18.6.dll +0 -0
  232. package/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64-0.35.4.node +0 -0
  233. package/node_modules/@img/sharp-win32-x64/package.json +0 -40
  234. package/node_modules/@img/sharp-win32-x64/versions.json +0 -30
  235. package/node_modules/@node-datachannel/win32-x64-msvc/node_datachannel.node +0 -0
  236. package/node_modules/@node-datachannel/win32-x64-msvc/package.json +0 -20
  237. package/node_modules/ansi-regex/index.d.ts +0 -37
  238. package/node_modules/ansi-regex/index.js +0 -10
  239. package/node_modules/ansi-regex/license +0 -9
  240. package/node_modules/ansi-regex/package.json +0 -55
  241. package/node_modules/ansi-regex/readme.md +0 -78
  242. package/node_modules/ansi-styles/index.d.ts +0 -345
  243. package/node_modules/ansi-styles/index.js +0 -163
  244. package/node_modules/ansi-styles/license +0 -9
  245. package/node_modules/ansi-styles/package.json +0 -56
  246. package/node_modules/ansi-styles/readme.md +0 -152
  247. package/node_modules/camelcase/index.d.ts +0 -63
  248. package/node_modules/camelcase/index.js +0 -76
  249. package/node_modules/camelcase/license +0 -9
  250. package/node_modules/camelcase/package.json +0 -43
  251. package/node_modules/camelcase/readme.md +0 -99
  252. package/node_modules/cliui/CHANGELOG.md +0 -76
  253. package/node_modules/cliui/LICENSE.txt +0 -14
  254. package/node_modules/cliui/README.md +0 -115
  255. package/node_modules/cliui/index.js +0 -354
  256. package/node_modules/cliui/package.json +0 -65
  257. package/node_modules/color-convert/CHANGELOG.md +0 -54
  258. package/node_modules/color-convert/LICENSE +0 -21
  259. package/node_modules/color-convert/README.md +0 -68
  260. package/node_modules/color-convert/conversions.js +0 -839
  261. package/node_modules/color-convert/index.js +0 -81
  262. package/node_modules/color-convert/package.json +0 -48
  263. package/node_modules/color-convert/route.js +0 -97
  264. package/node_modules/color-name/LICENSE +0 -8
  265. package/node_modules/color-name/README.md +0 -11
  266. package/node_modules/color-name/index.js +0 -152
  267. package/node_modules/color-name/package.json +0 -28
  268. package/node_modules/decamelize/index.js +0 -13
  269. package/node_modules/decamelize/license +0 -21
  270. package/node_modules/decamelize/package.json +0 -38
  271. package/node_modules/decamelize/readme.md +0 -48
  272. package/node_modules/detect-libc/LICENSE +0 -201
  273. package/node_modules/detect-libc/README.md +0 -163
  274. package/node_modules/detect-libc/index.d.ts +0 -14
  275. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  276. package/node_modules/detect-libc/lib/elf.js +0 -39
  277. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  278. package/node_modules/detect-libc/lib/process.js +0 -24
  279. package/node_modules/detect-libc/package.json +0 -44
  280. package/node_modules/dijkstrajs/.travis.yml +0 -4
  281. package/node_modules/dijkstrajs/CONTRIBUTING.md +0 -8
  282. package/node_modules/dijkstrajs/LICENSE.md +0 -19
  283. package/node_modules/dijkstrajs/README.md +0 -18
  284. package/node_modules/dijkstrajs/dijkstra.js +0 -165
  285. package/node_modules/dijkstrajs/package.json +0 -60
  286. package/node_modules/dijkstrajs/test/dijkstra.test.js +0 -96
  287. package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  288. package/node_modules/emoji-regex/README.md +0 -73
  289. package/node_modules/emoji-regex/es2015/index.js +0 -6
  290. package/node_modules/emoji-regex/es2015/text.js +0 -6
  291. package/node_modules/emoji-regex/index.d.ts +0 -23
  292. package/node_modules/emoji-regex/index.js +0 -6
  293. package/node_modules/emoji-regex/package.json +0 -50
  294. package/node_modules/emoji-regex/text.js +0 -6
  295. package/node_modules/find-up/index.d.ts +0 -137
  296. package/node_modules/find-up/index.js +0 -89
  297. package/node_modules/find-up/license +0 -9
  298. package/node_modules/find-up/package.json +0 -53
  299. package/node_modules/find-up/readme.md +0 -156
  300. package/node_modules/get-caller-file/LICENSE.md +0 -6
  301. package/node_modules/get-caller-file/README.md +0 -41
  302. package/node_modules/get-caller-file/index.d.ts +0 -2
  303. package/node_modules/get-caller-file/index.js +0 -22
  304. package/node_modules/get-caller-file/index.js.map +0 -1
  305. package/node_modules/get-caller-file/package.json +0 -42
  306. package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  307. package/node_modules/is-fullwidth-code-point/index.js +0 -50
  308. package/node_modules/is-fullwidth-code-point/license +0 -9
  309. package/node_modules/is-fullwidth-code-point/package.json +0 -42
  310. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  311. package/node_modules/locate-path/index.d.ts +0 -83
  312. package/node_modules/locate-path/index.js +0 -65
  313. package/node_modules/locate-path/license +0 -9
  314. package/node_modules/locate-path/package.json +0 -45
  315. package/node_modules/locate-path/readme.md +0 -122
  316. package/node_modules/node-datachannel/.clang-format +0 -17
  317. package/node_modules/node-datachannel/.editorconfig +0 -12
  318. package/node_modules/node-datachannel/.eslintignore +0 -8
  319. package/node_modules/node-datachannel/.eslintrc.json +0 -27
  320. package/node_modules/node-datachannel/.gitmodules +0 -3
  321. package/node_modules/node-datachannel/.prettierignore +0 -7
  322. package/node_modules/node-datachannel/.prettierrc +0 -13
  323. package/node_modules/node-datachannel/API.md +0 -247
  324. package/node_modules/node-datachannel/BULDING.md +0 -26
  325. package/node_modules/node-datachannel/CMakeLists.txt +0 -153
  326. package/node_modules/node-datachannel/LICENSE +0 -373
  327. package/node_modules/node-datachannel/README.md +0 -129
  328. package/node_modules/node-datachannel/dist/cjs/index.cjs +0 -11
  329. package/node_modules/node-datachannel/dist/cjs/index.cjs.map +0 -1
  330. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs +0 -101
  331. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs.map +0 -1
  332. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs +0 -91
  333. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs.map +0 -1
  334. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs +0 -94
  335. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs.map +0 -1
  336. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs +0 -45
  337. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs.map +0 -1
  338. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs +0 -8
  339. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs.map +0 -1
  340. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs +0 -86
  341. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs.map +0 -1
  342. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs +0 -34
  343. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs.map +0 -1
  344. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs +0 -34
  345. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs.map +0 -1
  346. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs +0 -214
  347. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs.map +0 -1
  348. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs +0 -53
  349. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +0 -1
  350. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs +0 -83
  351. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs.map +0 -1
  352. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs +0 -132
  353. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs.map +0 -1
  354. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs +0 -94
  355. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs.map +0 -1
  356. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs +0 -434
  357. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs.map +0 -1
  358. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs +0 -59
  359. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs.map +0 -1
  360. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs +0 -45
  361. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs.map +0 -1
  362. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs +0 -42
  363. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs.map +0 -1
  364. package/node_modules/node-datachannel/dist/esm/index.mjs +0 -8
  365. package/node_modules/node-datachannel/dist/esm/index.mjs.map +0 -1
  366. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs +0 -78
  367. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs.map +0 -1
  368. package/node_modules/node-datachannel/dist/esm/lib/index.mjs +0 -64
  369. package/node_modules/node-datachannel/dist/esm/lib/index.mjs.map +0 -1
  370. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs +0 -78
  371. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs.map +0 -1
  372. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs +0 -43
  373. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs.map +0 -1
  374. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs +0 -6
  375. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs.map +0 -1
  376. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs +0 -82
  377. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs.map +0 -1
  378. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs +0 -28
  379. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs.map +0 -1
  380. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs +0 -30
  381. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs.map +0 -1
  382. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs +0 -210
  383. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs.map +0 -1
  384. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs +0 -49
  385. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs.map +0 -1
  386. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs +0 -79
  387. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs.map +0 -1
  388. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs +0 -128
  389. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs.map +0 -1
  390. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs +0 -89
  391. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs.map +0 -1
  392. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs +0 -430
  393. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs.map +0 -1
  394. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs +0 -55
  395. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs.map +0 -1
  396. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs +0 -41
  397. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs.map +0 -1
  398. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs +0 -27
  399. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs.map +0 -1
  400. package/node_modules/node-datachannel/dist/types/lib/datachannel-stream.d.ts +0 -24
  401. package/node_modules/node-datachannel/dist/types/lib/index.d.ts +0 -241
  402. package/node_modules/node-datachannel/dist/types/lib/types.d.ts +0 -119
  403. package/node_modules/node-datachannel/dist/types/lib/websocket-server.d.ts +0 -13
  404. package/node_modules/node-datachannel/dist/types/lib/websocket.d.ts +0 -25
  405. package/node_modules/node-datachannel/dist/types/polyfill/Events.d.ts +0 -15
  406. package/node_modules/node-datachannel/dist/types/polyfill/RTCCertificate.d.ts +0 -9
  407. package/node_modules/node-datachannel/dist/types/polyfill/RTCDataChannel.d.ts +0 -29
  408. package/node_modules/node-datachannel/dist/types/polyfill/RTCDtlsTransport.d.ts +0 -15
  409. package/node_modules/node-datachannel/dist/types/polyfill/RTCError.d.ts +0 -17
  410. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceCandidate.d.ts +0 -21
  411. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceTransport.d.ts +0 -30
  412. package/node_modules/node-datachannel/dist/types/polyfill/RTCPeerConnection.d.ts +0 -64
  413. package/node_modules/node-datachannel/dist/types/polyfill/RTCSctpTransport.d.ts +0 -15
  414. package/node_modules/node-datachannel/dist/types/polyfill/RTCSessionDescription.d.ts +0 -10
  415. package/node_modules/node-datachannel/dist/types/polyfill/index.d.ts +0 -26
  416. package/node_modules/node-datachannel/jest.config.ts +0 -14
  417. package/node_modules/node-datachannel/package.json +0 -133
  418. package/node_modules/node-datachannel/rollup.config.mjs +0 -67
  419. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.cpp +0 -530
  420. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.h +0 -63
  421. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.cpp +0 -172
  422. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.h +0 -43
  423. package/node_modules/node-datachannel/src/cpp/main.cpp +0 -58
  424. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.cpp +0 -457
  425. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.h +0 -52
  426. package/node_modules/node-datachannel/src/cpp/media-av1packetization.cpp +0 -24
  427. package/node_modules/node-datachannel/src/cpp/media-av1packetization.h +0 -11
  428. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.cpp +0 -126
  429. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.h +0 -29
  430. package/node_modules/node-datachannel/src/cpp/media-direction.cpp +0 -43
  431. package/node_modules/node-datachannel/src/cpp/media-direction.h +0 -10
  432. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.cpp +0 -126
  433. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.h +0 -30
  434. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.cpp +0 -126
  435. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.h +0 -30
  436. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.cpp +0 -32
  437. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.h +0 -11
  438. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.cpp +0 -31
  439. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.h +0 -11
  440. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.cpp +0 -79
  441. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.h +0 -28
  442. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.cpp +0 -68
  443. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.h +0 -28
  444. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.cpp +0 -57
  445. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.h +0 -28
  446. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.cpp +0 -93
  447. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.h +0 -30
  448. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.cpp +0 -167
  449. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.h +0 -35
  450. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.cpp +0 -95
  451. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.h +0 -30
  452. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.cpp +0 -458
  453. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.h +0 -61
  454. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.cpp +0 -526
  455. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.h +0 -56
  456. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.cpp +0 -1298
  457. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.h +0 -89
  458. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.cpp +0 -205
  459. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.h +0 -24
  460. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.cpp +0 -57
  461. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.h +0 -47
  462. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.cpp +0 -275
  463. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.h +0 -41
  464. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.cpp +0 -796
  465. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.h +0 -63
  466. package/node_modules/node-datachannel/src/index.ts +0 -9
  467. package/node_modules/node-datachannel/src/lib/datachannel-stream.ts +0 -100
  468. package/node_modules/node-datachannel/src/lib/index.ts +0 -290
  469. package/node_modules/node-datachannel/src/lib/node-datachannel.ts +0 -84
  470. package/node_modules/node-datachannel/src/lib/types.ts +0 -169
  471. package/node_modules/node-datachannel/src/lib/websocket-server.ts +0 -37
  472. package/node_modules/node-datachannel/src/lib/websocket.ts +0 -26
  473. package/node_modules/node-datachannel/src/polyfill/Events.ts +0 -82
  474. package/node_modules/node-datachannel/src/polyfill/Exception.ts +0 -37
  475. package/node_modules/node-datachannel/src/polyfill/README.md +0 -41
  476. package/node_modules/node-datachannel/src/polyfill/RTCCertificate.ts +0 -21
  477. package/node_modules/node-datachannel/src/polyfill/RTCDataChannel.ts +0 -225
  478. package/node_modules/node-datachannel/src/polyfill/RTCDtlsTransport.ts +0 -46
  479. package/node_modules/node-datachannel/src/polyfill/RTCError.ts +0 -78
  480. package/node_modules/node-datachannel/src/polyfill/RTCIceCandidate.ts +0 -128
  481. package/node_modules/node-datachannel/src/polyfill/RTCIceTransport.ts +0 -90
  482. package/node_modules/node-datachannel/src/polyfill/RTCPeerConnection.ts +0 -527
  483. package/node_modules/node-datachannel/src/polyfill/RTCSctpTransport.ts +0 -51
  484. package/node_modules/node-datachannel/src/polyfill/RTCSessionDescription.ts +0 -41
  485. package/node_modules/node-datachannel/src/polyfill/index.ts +0 -38
  486. package/node_modules/node-datachannel/tsconfig.json +0 -21
  487. package/node_modules/p-limit/index.d.ts +0 -38
  488. package/node_modules/p-limit/index.js +0 -57
  489. package/node_modules/p-limit/license +0 -9
  490. package/node_modules/p-limit/package.json +0 -52
  491. package/node_modules/p-limit/readme.md +0 -101
  492. package/node_modules/p-locate/index.d.ts +0 -64
  493. package/node_modules/p-locate/index.js +0 -52
  494. package/node_modules/p-locate/license +0 -9
  495. package/node_modules/p-locate/package.json +0 -53
  496. package/node_modules/p-locate/readme.md +0 -90
  497. package/node_modules/p-try/index.d.ts +0 -39
  498. package/node_modules/p-try/index.js +0 -9
  499. package/node_modules/p-try/license +0 -9
  500. package/node_modules/p-try/package.json +0 -42
  501. package/node_modules/p-try/readme.md +0 -58
  502. package/node_modules/path-exists/index.d.ts +0 -28
  503. package/node_modules/path-exists/index.js +0 -23
  504. package/node_modules/path-exists/license +0 -9
  505. package/node_modules/path-exists/package.json +0 -39
  506. package/node_modules/path-exists/readme.md +0 -52
  507. package/node_modules/pngjs/.eslintignore +0 -2
  508. package/node_modules/pngjs/.eslintrc.json +0 -19
  509. package/node_modules/pngjs/.prettierignore +0 -3
  510. package/node_modules/pngjs/LICENSE +0 -20
  511. package/node_modules/pngjs/README.md +0 -429
  512. package/node_modules/pngjs/browser.js +0 -16096
  513. package/node_modules/pngjs/coverage/lcov-report/base.css +0 -354
  514. package/node_modules/pngjs/coverage/lcov-report/bitmapper.js.html +0 -881
  515. package/node_modules/pngjs/coverage/lcov-report/bitpacker.js.html +0 -554
  516. package/node_modules/pngjs/coverage/lcov-report/block-navigation.js +0 -77
  517. package/node_modules/pngjs/coverage/lcov-report/chunkstream.js.html +0 -647
  518. package/node_modules/pngjs/coverage/lcov-report/constants.js.html +0 -176
  519. package/node_modules/pngjs/coverage/lcov-report/crc.js.html +0 -200
  520. package/node_modules/pngjs/coverage/lcov-report/favicon.png +0 -0
  521. package/node_modules/pngjs/coverage/lcov-report/filter-pack.js.html +0 -593
  522. package/node_modules/pngjs/coverage/lcov-report/filter-parse-async.js.html +0 -152
  523. package/node_modules/pngjs/coverage/lcov-report/filter-parse-sync.js.html +0 -143
  524. package/node_modules/pngjs/coverage/lcov-report/filter-parse.js.html +0 -611
  525. package/node_modules/pngjs/coverage/lcov-report/format-normaliser.js.html +0 -359
  526. package/node_modules/pngjs/coverage/lcov-report/index.html +0 -426
  527. package/node_modules/pngjs/coverage/lcov-report/interlace.js.html +0 -365
  528. package/node_modules/pngjs/coverage/lcov-report/packer-async.js.html +0 -230
  529. package/node_modules/pngjs/coverage/lcov-report/packer-sync.js.html +0 -248
  530. package/node_modules/pngjs/coverage/lcov-report/packer.js.html +0 -467
  531. package/node_modules/pngjs/coverage/lcov-report/paeth-predictor.js.html +0 -128
  532. package/node_modules/pngjs/coverage/lcov-report/parser-async.js.html +0 -575
  533. package/node_modules/pngjs/coverage/lcov-report/parser-sync.js.html +0 -404
  534. package/node_modules/pngjs/coverage/lcov-report/parser.js.html +0 -950
  535. package/node_modules/pngjs/coverage/lcov-report/png-sync.js.html +0 -116
  536. package/node_modules/pngjs/coverage/lcov-report/png.js.html +0 -662
  537. package/node_modules/pngjs/coverage/lcov-report/prettify.css +0 -101
  538. package/node_modules/pngjs/coverage/lcov-report/prettify.js +0 -1007
  539. package/node_modules/pngjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  540. package/node_modules/pngjs/coverage/lcov-report/sorter.js +0 -169
  541. package/node_modules/pngjs/coverage/lcov-report/sync-inflate.js.html +0 -584
  542. package/node_modules/pngjs/coverage/lcov-report/sync-reader.js.html +0 -215
  543. package/node_modules/pngjs/coverage/lcov.info +0 -2177
  544. package/node_modules/pngjs/lib/bitmapper.js +0 -267
  545. package/node_modules/pngjs/lib/bitpacker.js +0 -158
  546. package/node_modules/pngjs/lib/chunkstream.js +0 -189
  547. package/node_modules/pngjs/lib/constants.js +0 -32
  548. package/node_modules/pngjs/lib/crc.js +0 -40
  549. package/node_modules/pngjs/lib/filter-pack.js +0 -171
  550. package/node_modules/pngjs/lib/filter-parse-async.js +0 -24
  551. package/node_modules/pngjs/lib/filter-parse-sync.js +0 -21
  552. package/node_modules/pngjs/lib/filter-parse.js +0 -177
  553. package/node_modules/pngjs/lib/format-normaliser.js +0 -93
  554. package/node_modules/pngjs/lib/interlace.js +0 -95
  555. package/node_modules/pngjs/lib/packer-async.js +0 -50
  556. package/node_modules/pngjs/lib/packer-sync.js +0 -56
  557. package/node_modules/pngjs/lib/packer.js +0 -129
  558. package/node_modules/pngjs/lib/paeth-predictor.js +0 -16
  559. package/node_modules/pngjs/lib/parser-async.js +0 -165
  560. package/node_modules/pngjs/lib/parser-sync.js +0 -108
  561. package/node_modules/pngjs/lib/parser.js +0 -290
  562. package/node_modules/pngjs/lib/png-sync.js +0 -12
  563. package/node_modules/pngjs/lib/png.js +0 -194
  564. package/node_modules/pngjs/lib/sync-inflate.js +0 -168
  565. package/node_modules/pngjs/lib/sync-reader.js +0 -45
  566. package/node_modules/pngjs/package.json +0 -73
  567. package/node_modules/qrcode/README.md +0 -770
  568. package/node_modules/qrcode/bin/qrcode +0 -159
  569. package/node_modules/qrcode/helper/to-sjis-browser.js +0 -2
  570. package/node_modules/qrcode/helper/to-sjis.js +0 -105
  571. package/node_modules/qrcode/lib/browser.js +0 -76
  572. package/node_modules/qrcode/lib/can-promise.js +0 -7
  573. package/node_modules/qrcode/lib/core/alignment-pattern.js +0 -83
  574. package/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -59
  575. package/node_modules/qrcode/lib/core/bit-buffer.js +0 -37
  576. package/node_modules/qrcode/lib/core/bit-matrix.js +0 -65
  577. package/node_modules/qrcode/lib/core/byte-data.js +0 -30
  578. package/node_modules/qrcode/lib/core/error-correction-code.js +0 -135
  579. package/node_modules/qrcode/lib/core/error-correction-level.js +0 -50
  580. package/node_modules/qrcode/lib/core/finder-pattern.js +0 -22
  581. package/node_modules/qrcode/lib/core/format-info.js +0 -29
  582. package/node_modules/qrcode/lib/core/galois-field.js +0 -69
  583. package/node_modules/qrcode/lib/core/kanji-data.js +0 -54
  584. package/node_modules/qrcode/lib/core/mask-pattern.js +0 -234
  585. package/node_modules/qrcode/lib/core/mode.js +0 -167
  586. package/node_modules/qrcode/lib/core/numeric-data.js +0 -43
  587. package/node_modules/qrcode/lib/core/polynomial.js +0 -62
  588. package/node_modules/qrcode/lib/core/qrcode.js +0 -495
  589. package/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -56
  590. package/node_modules/qrcode/lib/core/regex.js +0 -31
  591. package/node_modules/qrcode/lib/core/segments.js +0 -330
  592. package/node_modules/qrcode/lib/core/utils.js +0 -63
  593. package/node_modules/qrcode/lib/core/version-check.js +0 -9
  594. package/node_modules/qrcode/lib/core/version.js +0 -163
  595. package/node_modules/qrcode/lib/index.js +0 -12
  596. package/node_modules/qrcode/lib/renderer/canvas.js +0 -63
  597. package/node_modules/qrcode/lib/renderer/png.js +0 -78
  598. package/node_modules/qrcode/lib/renderer/svg-tag.js +0 -81
  599. package/node_modules/qrcode/lib/renderer/svg.js +0 -19
  600. package/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +0 -85
  601. package/node_modules/qrcode/lib/renderer/terminal/terminal.js +0 -49
  602. package/node_modules/qrcode/lib/renderer/terminal.js +0 -9
  603. package/node_modules/qrcode/lib/renderer/utf8.js +0 -71
  604. package/node_modules/qrcode/lib/renderer/utils.js +0 -99
  605. package/node_modules/qrcode/lib/server.js +0 -138
  606. package/node_modules/qrcode/license +0 -10
  607. package/node_modules/qrcode/package.json +0 -77
  608. package/node_modules/require-directory/.jshintrc +0 -67
  609. package/node_modules/require-directory/.npmignore +0 -1
  610. package/node_modules/require-directory/.travis.yml +0 -3
  611. package/node_modules/require-directory/LICENSE +0 -22
  612. package/node_modules/require-directory/README.markdown +0 -184
  613. package/node_modules/require-directory/index.js +0 -86
  614. package/node_modules/require-directory/package.json +0 -40
  615. package/node_modules/require-main-filename/CHANGELOG.md +0 -26
  616. package/node_modules/require-main-filename/LICENSE.txt +0 -14
  617. package/node_modules/require-main-filename/README.md +0 -26
  618. package/node_modules/require-main-filename/index.js +0 -18
  619. package/node_modules/require-main-filename/package.json +0 -35
  620. package/node_modules/semver/LICENSE +0 -15
  621. package/node_modules/semver/README.md +0 -680
  622. package/node_modules/semver/bin/semver.js +0 -195
  623. package/node_modules/semver/classes/comparator.js +0 -143
  624. package/node_modules/semver/classes/index.js +0 -7
  625. package/node_modules/semver/classes/range.js +0 -577
  626. package/node_modules/semver/classes/semver.js +0 -350
  627. package/node_modules/semver/functions/clean.js +0 -8
  628. package/node_modules/semver/functions/cmp.js +0 -54
  629. package/node_modules/semver/functions/coerce.js +0 -62
  630. package/node_modules/semver/functions/compare-build.js +0 -9
  631. package/node_modules/semver/functions/compare-loose.js +0 -5
  632. package/node_modules/semver/functions/compare.js +0 -7
  633. package/node_modules/semver/functions/diff.js +0 -60
  634. package/node_modules/semver/functions/eq.js +0 -5
  635. package/node_modules/semver/functions/gt.js +0 -5
  636. package/node_modules/semver/functions/gte.js +0 -5
  637. package/node_modules/semver/functions/inc.js +0 -21
  638. package/node_modules/semver/functions/lt.js +0 -5
  639. package/node_modules/semver/functions/lte.js +0 -5
  640. package/node_modules/semver/functions/major.js +0 -5
  641. package/node_modules/semver/functions/minor.js +0 -5
  642. package/node_modules/semver/functions/neq.js +0 -5
  643. package/node_modules/semver/functions/parse.js +0 -18
  644. package/node_modules/semver/functions/patch.js +0 -5
  645. package/node_modules/semver/functions/prerelease.js +0 -8
  646. package/node_modules/semver/functions/rcompare.js +0 -5
  647. package/node_modules/semver/functions/rsort.js +0 -5
  648. package/node_modules/semver/functions/satisfies.js +0 -12
  649. package/node_modules/semver/functions/sort.js +0 -5
  650. package/node_modules/semver/functions/truncate.js +0 -48
  651. package/node_modules/semver/functions/valid.js +0 -8
  652. package/node_modules/semver/index.js +0 -93
  653. package/node_modules/semver/internal/constants.js +0 -37
  654. package/node_modules/semver/internal/debug.js +0 -11
  655. package/node_modules/semver/internal/identifiers.js +0 -29
  656. package/node_modules/semver/internal/lrucache.js +0 -42
  657. package/node_modules/semver/internal/parse-options.js +0 -17
  658. package/node_modules/semver/internal/re.js +0 -223
  659. package/node_modules/semver/package.json +0 -78
  660. package/node_modules/semver/preload.js +0 -4
  661. package/node_modules/semver/range.bnf +0 -17
  662. package/node_modules/semver/ranges/gtr.js +0 -6
  663. package/node_modules/semver/ranges/intersects.js +0 -9
  664. package/node_modules/semver/ranges/ltr.js +0 -6
  665. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  666. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  667. package/node_modules/semver/ranges/min-version.js +0 -63
  668. package/node_modules/semver/ranges/outside.js +0 -82
  669. package/node_modules/semver/ranges/simplify.js +0 -49
  670. package/node_modules/semver/ranges/subset.js +0 -249
  671. package/node_modules/semver/ranges/to-comparators.js +0 -10
  672. package/node_modules/semver/ranges/valid.js +0 -13
  673. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  674. package/node_modules/set-blocking/LICENSE.txt +0 -14
  675. package/node_modules/set-blocking/README.md +0 -31
  676. package/node_modules/set-blocking/index.js +0 -7
  677. package/node_modules/set-blocking/package.json +0 -42
  678. package/node_modules/sharp/LICENSE +0 -191
  679. package/node_modules/sharp/README.md +0 -112
  680. package/node_modules/sharp/dist/channel.cjs +0 -177
  681. package/node_modules/sharp/dist/channel.mjs +0 -177
  682. package/node_modules/sharp/dist/colour.cjs +0 -199
  683. package/node_modules/sharp/dist/colour.mjs +0 -199
  684. package/node_modules/sharp/dist/composite.cjs +0 -213
  685. package/node_modules/sharp/dist/composite.mjs +0 -213
  686. package/node_modules/sharp/dist/constructor.cjs +0 -511
  687. package/node_modules/sharp/dist/constructor.mjs +0 -511
  688. package/node_modules/sharp/dist/index.cjs +0 -25
  689. package/node_modules/sharp/dist/index.d.cts +0 -1999
  690. package/node_modules/sharp/dist/index.d.mts +0 -2046
  691. package/node_modules/sharp/dist/index.mjs +0 -25
  692. package/node_modules/sharp/dist/input.cjs +0 -819
  693. package/node_modules/sharp/dist/input.mjs +0 -819
  694. package/node_modules/sharp/dist/is.cjs +0 -143
  695. package/node_modules/sharp/dist/is.mjs +0 -143
  696. package/node_modules/sharp/dist/libvips.cjs +0 -212
  697. package/node_modules/sharp/dist/libvips.mjs +0 -212
  698. package/node_modules/sharp/dist/operation.cjs +0 -1002
  699. package/node_modules/sharp/dist/operation.mjs +0 -1002
  700. package/node_modules/sharp/dist/output.cjs +0 -1785
  701. package/node_modules/sharp/dist/output.mjs +0 -1785
  702. package/node_modules/sharp/dist/resize.cjs +0 -617
  703. package/node_modules/sharp/dist/resize.mjs +0 -617
  704. package/node_modules/sharp/dist/sharp.cjs +0 -174
  705. package/node_modules/sharp/dist/sharp.mjs +0 -174
  706. package/node_modules/sharp/dist/utility.cjs +0 -301
  707. package/node_modules/sharp/dist/utility.mjs +0 -301
  708. package/node_modules/sharp/install/build.js +0 -38
  709. package/node_modules/sharp/lib/index.d.ts +0 -1999
  710. package/node_modules/sharp/package.json +0 -227
  711. package/node_modules/sharp/src/binding.gyp +0 -303
  712. package/node_modules/sharp/src/common.cc +0 -1186
  713. package/node_modules/sharp/src/common.h +0 -421
  714. package/node_modules/sharp/src/metadata.cc +0 -404
  715. package/node_modules/sharp/src/metadata.h +0 -95
  716. package/node_modules/sharp/src/operations.cc +0 -516
  717. package/node_modules/sharp/src/operations.h +0 -137
  718. package/node_modules/sharp/src/pipeline.cc +0 -1948
  719. package/node_modules/sharp/src/pipeline.h +0 -422
  720. package/node_modules/sharp/src/sharp.cc +0 -43
  721. package/node_modules/sharp/src/stats.cc +0 -186
  722. package/node_modules/sharp/src/stats.h +0 -62
  723. package/node_modules/sharp/src/utilities.cc +0 -289
  724. package/node_modules/sharp/src/utilities.h +0 -22
  725. package/node_modules/string-width/index.d.ts +0 -29
  726. package/node_modules/string-width/index.js +0 -47
  727. package/node_modules/string-width/license +0 -9
  728. package/node_modules/string-width/package.json +0 -56
  729. package/node_modules/string-width/readme.md +0 -50
  730. package/node_modules/strip-ansi/index.d.ts +0 -17
  731. package/node_modules/strip-ansi/index.js +0 -4
  732. package/node_modules/strip-ansi/license +0 -9
  733. package/node_modules/strip-ansi/package.json +0 -54
  734. package/node_modules/strip-ansi/readme.md +0 -46
  735. package/node_modules/which-module/LICENSE +0 -13
  736. package/node_modules/which-module/README.md +0 -58
  737. package/node_modules/which-module/index.js +0 -9
  738. package/node_modules/which-module/package.json +0 -41
  739. package/node_modules/wrap-ansi/index.js +0 -186
  740. package/node_modules/wrap-ansi/license +0 -9
  741. package/node_modules/wrap-ansi/package.json +0 -61
  742. package/node_modules/wrap-ansi/readme.md +0 -97
  743. package/node_modules/ws/LICENSE +0 -20
  744. package/node_modules/ws/README.md +0 -548
  745. package/node_modules/ws/browser.js +0 -8
  746. package/node_modules/ws/index.js +0 -22
  747. package/node_modules/ws/lib/buffer-util.js +0 -131
  748. package/node_modules/ws/lib/constants.js +0 -19
  749. package/node_modules/ws/lib/event-target.js +0 -292
  750. package/node_modules/ws/lib/extension.js +0 -203
  751. package/node_modules/ws/lib/limiter.js +0 -55
  752. package/node_modules/ws/lib/permessage-deflate.js +0 -530
  753. package/node_modules/ws/lib/receiver.js +0 -743
  754. package/node_modules/ws/lib/sender.js +0 -607
  755. package/node_modules/ws/lib/stream.js +0 -161
  756. package/node_modules/ws/lib/subprotocol.js +0 -62
  757. package/node_modules/ws/lib/validation.js +0 -152
  758. package/node_modules/ws/lib/websocket-server.js +0 -562
  759. package/node_modules/ws/lib/websocket.js +0 -1407
  760. package/node_modules/ws/package.json +0 -74
  761. package/node_modules/ws/wrapper.mjs +0 -21
  762. package/node_modules/y18n/CHANGELOG.md +0 -35
  763. package/node_modules/y18n/LICENSE +0 -13
  764. package/node_modules/y18n/README.md +0 -109
  765. package/node_modules/y18n/index.js +0 -188
  766. package/node_modules/y18n/package.json +0 -39
  767. package/node_modules/yargs/CHANGELOG.md +0 -420
  768. package/node_modules/yargs/LICENSE +0 -21
  769. package/node_modules/yargs/README.md +0 -140
  770. package/node_modules/yargs/build/lib/apply-extends.d.ts +0 -2
  771. package/node_modules/yargs/build/lib/apply-extends.js +0 -65
  772. package/node_modules/yargs/build/lib/argsert.d.ts +0 -2
  773. package/node_modules/yargs/build/lib/argsert.js +0 -65
  774. package/node_modules/yargs/build/lib/command.d.ts +0 -64
  775. package/node_modules/yargs/build/lib/command.js +0 -416
  776. package/node_modules/yargs/build/lib/common-types.d.ts +0 -36
  777. package/node_modules/yargs/build/lib/common-types.js +0 -25
  778. package/node_modules/yargs/build/lib/completion-templates.d.ts +0 -2
  779. package/node_modules/yargs/build/lib/completion-templates.js +0 -50
  780. package/node_modules/yargs/build/lib/completion.d.ts +0 -21
  781. package/node_modules/yargs/build/lib/completion.js +0 -135
  782. package/node_modules/yargs/build/lib/is-promise.d.ts +0 -1
  783. package/node_modules/yargs/build/lib/is-promise.js +0 -9
  784. package/node_modules/yargs/build/lib/levenshtein.d.ts +0 -1
  785. package/node_modules/yargs/build/lib/levenshtein.js +0 -58
  786. package/node_modules/yargs/build/lib/middleware.d.ts +0 -10
  787. package/node_modules/yargs/build/lib/middleware.js +0 -57
  788. package/node_modules/yargs/build/lib/obj-filter.d.ts +0 -1
  789. package/node_modules/yargs/build/lib/obj-filter.js +0 -14
  790. package/node_modules/yargs/build/lib/parse-command.d.ts +0 -11
  791. package/node_modules/yargs/build/lib/parse-command.js +0 -36
  792. package/node_modules/yargs/build/lib/process-argv.d.ts +0 -2
  793. package/node_modules/yargs/build/lib/process-argv.js +0 -31
  794. package/node_modules/yargs/build/lib/usage.d.ts +0 -49
  795. package/node_modules/yargs/build/lib/usage.js +0 -540
  796. package/node_modules/yargs/build/lib/validation.d.ts +0 -34
  797. package/node_modules/yargs/build/lib/validation.js +0 -330
  798. package/node_modules/yargs/build/lib/yargs.d.ts +0 -274
  799. package/node_modules/yargs/build/lib/yargs.js +0 -1190
  800. package/node_modules/yargs/build/lib/yerror.d.ts +0 -4
  801. package/node_modules/yargs/build/lib/yerror.js +0 -11
  802. package/node_modules/yargs/index.js +0 -40
  803. package/node_modules/yargs/locales/be.json +0 -46
  804. package/node_modules/yargs/locales/de.json +0 -46
  805. package/node_modules/yargs/locales/en.json +0 -51
  806. package/node_modules/yargs/locales/es.json +0 -46
  807. package/node_modules/yargs/locales/fi.json +0 -49
  808. package/node_modules/yargs/locales/fr.json +0 -53
  809. package/node_modules/yargs/locales/hi.json +0 -49
  810. package/node_modules/yargs/locales/hu.json +0 -46
  811. package/node_modules/yargs/locales/id.json +0 -50
  812. package/node_modules/yargs/locales/it.json +0 -46
  813. package/node_modules/yargs/locales/ja.json +0 -51
  814. package/node_modules/yargs/locales/ko.json +0 -49
  815. package/node_modules/yargs/locales/nb.json +0 -44
  816. package/node_modules/yargs/locales/nl.json +0 -49
  817. package/node_modules/yargs/locales/nn.json +0 -44
  818. package/node_modules/yargs/locales/pirate.json +0 -13
  819. package/node_modules/yargs/locales/pl.json +0 -49
  820. package/node_modules/yargs/locales/pt.json +0 -45
  821. package/node_modules/yargs/locales/pt_BR.json +0 -48
  822. package/node_modules/yargs/locales/ru.json +0 -46
  823. package/node_modules/yargs/locales/th.json +0 -46
  824. package/node_modules/yargs/locales/tr.json +0 -48
  825. package/node_modules/yargs/locales/zh_CN.json +0 -48
  826. package/node_modules/yargs/locales/zh_TW.json +0 -47
  827. package/node_modules/yargs/package.json +0 -92
  828. package/node_modules/yargs/yargs.js +0 -14
  829. package/node_modules/yargs-parser/CHANGELOG.md +0 -601
  830. package/node_modules/yargs-parser/LICENSE.txt +0 -14
  831. package/node_modules/yargs-parser/README.md +0 -449
  832. package/node_modules/yargs-parser/index.js +0 -1032
  833. package/node_modules/yargs-parser/lib/tokenize-arg-string.js +0 -40
  834. package/node_modules/yargs-parser/package.json +0 -46
@@ -1,67 +1,219 @@
1
- (function (root, factory) {
2
- if (typeof module === 'object' && module.exports) module.exports = factory();
3
- else root.CodexServerRequests = factory();
4
- })(globalThis, function () {
5
- const command = 'item/commandExecution/requestApproval';
6
- const file = 'item/fileChange/requestApproval';
7
- const input = 'item/tool/requestUserInput';
8
- const equal = (a, b) => JSON.stringify(a) === JSON.stringify(b);
9
- function decisions(request) {
10
- if (request.method === command) return request.params.availableDecisions ?? ['accept', 'acceptForSession', 'decline', 'cancel'];
11
- if (request.method === file) return ['accept', 'acceptForSession', 'decline', 'cancel'];
12
- return [];
13
- }
14
- function validate(request, result) {
15
- if ([command, file].includes(request.method)) {
16
- if (!result || Object.keys(result).length !== 1 || !decisions(request).some(value => equal(value, result.decision))) throw new Error('审批选项不属于当前请求');
17
- return;
18
- }
19
- if (request.method === input) {
20
- const questions = request.params.questions || [];
21
- if (!result?.answers || Object.keys(result).length !== 1 || Object.keys(result.answers).length !== questions.length
22
- || questions.some(q => !Array.isArray(result.answers[q.id]?.answers) || result.answers[q.id].answers.some(a => typeof a !== 'string'))) throw new Error('回答格式无效');
23
- return;
24
- }
25
- throw new Error('此类请求需在工作站处理');
26
- }
27
- class Store {
28
- constructor(epoch, changed = () => {}) { this.epoch = epoch; this.changed = changed; this.requests = new Map(); }
29
- list(threadId) { return [...this.requests.values()].filter(r => r.params.threadId === threadId).map(r => ({ ...r })); }
30
- receive(message) {
31
- if (!['string', 'number'].includes(typeof message.id) || !message.params?.threadId || this.requests.has(message.id)) return;
32
- const request = { id: message.id, method: message.method, params: message.params, epoch: this.epoch, status: 'pending' };
33
- this.requests.set(message.id, request); this.changed(request.params.threadId);
34
- }
35
- notification(method, params) {
36
- if (method === 'serverRequest/resolved') {
37
- const request = this.requests.get(params.requestId);
38
- if (request?.params.threadId === params.threadId) { this.requests.delete(params.requestId); this.changed(params.threadId); }
39
- } else if (method === 'turn/completed' || method === 'thread/closed') {
40
- for (const [id, r] of this.requests) if (r.params.threadId === params.threadId && (method === 'thread/closed' || r.params.turnId === params.turn?.id)) this.requests.delete(id);
41
- this.changed(params.threadId);
42
- }
43
- }
44
- forget(threadId) {
45
- for (const [id, request] of this.requests) if (request.params.threadId === threadId) this.requests.delete(id);
46
- this.changed(threadId);
47
- }
48
- reset(epoch) {
49
- const threads = new Set([...this.requests.values()].map(r => r.params.threadId));
50
- this.requests.clear(); this.epoch = epoch; for (const id of threads) this.changed(id);
51
- }
52
- async respond(threadId, { id, epoch, result }, send) {
53
- const request = this.requests.get(id);
54
- if (!request || epoch !== this.epoch || request.params.threadId !== threadId) throw new Error('审批已处理或连接已变化,请等待同步');
55
- if (request.status !== 'pending') throw new Error('决定已提交,正在等待工作站确认,请勿重复提交');
56
- validate(request, result);
57
- request.status = 'submitted'; this.changed(threadId);
58
- try { await send({ id: request.id, result }); }
59
- catch (error) {
60
- if (this.requests.get(id) === request) { request.status = 'unknown'; this.changed(threadId); }
61
- throw new Error('审批发送结果未确认,请检查工作站;不会自动重发。' + error.message);
62
- }
63
- return { submitted: true };
64
- }
65
- }
66
- return { Store, decisions, validate, command, file, input };
67
- });
1
+ (function (root, factory) {
2
+ if (typeof module === 'object' && module.exports) module.exports = factory();
3
+ else root.CodexServerRequests = factory();
4
+ })(globalThis, function () {
5
+ const command = 'item/commandExecution/requestApproval';
6
+ const file = 'item/fileChange/requestApproval';
7
+ const input = 'item/tool/requestUserInput';
8
+ const elicitation = 'mcpServer/elicitation/request';
9
+ const equal = (a, b) => JSON.stringify(a) === JSON.stringify(b);
10
+ const approvalId = request => 'approval:' + (request.params.turnId || '') + ':' + typeof request.id + ':' + request.id;
11
+ function confirmation(request) {
12
+ const p = request.params || {}, value = p._meta?.['openai/confirmation'], schema = p.requestedSchema;
13
+ if (request.method !== elicitation || p.mode !== 'form' || value?.version !== 1
14
+ || typeof value.field !== 'string' || schema?.type !== 'object'
15
+ || Object.keys(schema.properties || {}).length !== 1 || schema.properties[value.field]?.type !== 'boolean'
16
+ || schema.required?.length !== 1 || schema.required[0] !== value.field) return null;
17
+ return value;
18
+ }
19
+ function confirmationResult(request, decision) {
20
+ return { action: decision, content: decision === 'accept' ? { [confirmation(request).field]: true } : null, _meta: null };
21
+ }
22
+ function browserAccess(request) {
23
+ const p = request.params || {}, meta = p._meta || {};
24
+ if (request.method !== elicitation || p.mode !== 'form' || meta.tool_name !== 'access_browser_origin'
25
+ || meta.codex_approval_kind !== 'mcp_tool_call' || meta.codex_request_type !== 'approval_request'
26
+ || meta.codex_sensitive_action !== true || p.requestedSchema?.type !== 'object'
27
+ || Object.keys(p.requestedSchema.properties || {}).length) return null;
28
+ try {
29
+ const origin = new URL(meta.origin);
30
+ if (!['http:', 'https:'].includes(origin.protocol) || origin.origin !== meta.origin) return null;
31
+ return { origin: meta.origin, persistent: meta.persist === 'always' };
32
+ } catch { return null; }
33
+ }
34
+ function browserAction(request) {
35
+ const p = request.params || {}, meta = p._meta || {};
36
+ if (browserAccess(request) || request.method !== elicitation || p.mode !== 'form'
37
+ || p.requestedSchema?.type !== 'object' || Object.keys(p.requestedSchema.properties || {}).length
38
+ || p.requestedSchema.required?.length || typeof p.message !== 'string' || !p.message.trim()) return null;
39
+ const tool = meta.codex_approval_kind === 'mcp_tool_call' && meta.connector_id === 'browser-use';
40
+ if (!tool && !['browser', 'browser-use'].includes(p.serverName)) return null;
41
+ if (meta.codex_approval_kind && meta.codex_approval_kind !== 'mcp_tool_call') return null;
42
+ const modes = meta.persist == null ? [] : Array.isArray(meta.persist) ? meta.persist : [meta.persist];
43
+ if (modes.some(mode => !['session', 'always'].includes(mode))) return null;
44
+ if (!tool && !modes.length) return null;
45
+ try {
46
+ const origin = new URL(meta.origin);
47
+ if (!['http:', 'https:'].includes(origin.protocol) || origin.origin !== meta.origin) return null;
48
+ return { origin: meta.origin, session: modes.includes('session'), persistent: modes.includes('always') };
49
+ } catch { return null; }
50
+ }
51
+ function browserActionResult(decision) {
52
+ return { action: decision === 'cancel' ? 'cancel' : 'accept', content: decision === 'cancel' ? null : {},
53
+ _meta: decision === 'allowAlways' ? { persist: 'always' }
54
+ : decision === 'allowSession' ? { persist: 'session' } : null };
55
+ }
56
+ function computerAppAccess(request) {
57
+ const p = request.params || {}, meta = p._meta || {};
58
+ if (request.method !== elicitation || p.mode !== 'form' || meta.codex_approval_kind !== 'mcp_tool_call'
59
+ || (meta.codex_request_type != null && meta.codex_request_type !== 'approval_request')
60
+ || typeof meta.connector_id !== 'string' || p.requestedSchema?.type !== 'object'
61
+ || Object.keys(p.requestedSchema.properties || {}).length || p.requestedSchema.required?.length) return null;
62
+ const connector = meta.connector_id.trim().toLowerCase().split(/[^a-z0-9]+/g).filter(Boolean).join('-');
63
+ if (connector !== 'computer-use' && !connector.startsWith('computer-use-')) return null;
64
+ const modes = Array.isArray(meta.persist) ? meta.persist : [meta.persist];
65
+ if (!modes.length || modes.some(mode => !['session', 'always'].includes(mode))) return null;
66
+ const display = Array.isArray(meta.tool_params_display) ? meta.tool_params_display.find(entry => entry?.name === 'app')?.value : null;
67
+ const app = typeof display === 'string' && display.trim() ? display : meta.tool_params?.app;
68
+ if (typeof app !== 'string' || !app.trim()) return null;
69
+ return { app: app.trim(), session: modes.includes('session'), persistent: modes.includes('always'),
70
+ subtitle: typeof meta.subtitle === 'string' ? meta.subtitle : '', highRisk: meta.riskLevel === 'high' };
71
+ }
72
+ function computerAppResult(request, decision) {
73
+ const app = computerAppAccess(request);
74
+ return { action: decision === 'decline' ? 'decline' : 'accept', content: decision === 'decline' ? null : {},
75
+ _meta: decision === 'allowAlways' ? { persist: 'always' }
76
+ : decision === 'allowConversation' && app?.session ? { persist: 'session' } : null };
77
+ }
78
+ function mcpToolApproval(request) {
79
+ const p = request.params || {}, meta = p._meta || {};
80
+ if (request.method !== elicitation || p.mode !== 'form' || meta.codex_approval_kind !== 'mcp_tool_call'
81
+ || (meta.codex_request_type != null && meta.codex_request_type !== 'approval_request')
82
+ || p.requestedSchema?.type !== 'object' || Object.keys(p.requestedSchema.properties || {}).length
83
+ || p.requestedSchema.required?.length || typeof p.message !== 'string' || !p.message.trim()
84
+ || typeof meta.connector_id !== 'string' || !meta.connector_id.trim()
85
+ || !meta.tool_params || typeof meta.tool_params !== 'object' || Array.isArray(meta.tool_params)) return null;
86
+ const connector = meta.connector_id.trim().toLowerCase().split(/[^a-z0-9]+/g).filter(Boolean).join('-');
87
+ // These requests have dedicated approval semantics in Desktop.
88
+ if (connector === 'browser-use' || connector === 'computer-use' || connector.startsWith('computer-use-')
89
+ || meta.tool_name === 'access_browser_origin' || meta.tool_name === 'access_browser_origin_with_raw_cdp'
90
+ || meta.connector_id === 'connector_20205bf7d4e99a89d7154bb849718324') return null;
91
+ const modes = meta.persist === undefined ? [] : Array.isArray(meta.persist) ? meta.persist : [meta.persist];
92
+ if ((Array.isArray(meta.persist) && (!modes.length || modes.length > 2))
93
+ || modes.some(mode => !['session', 'always'].includes(mode))) return null;
94
+ return { session: modes.includes('session'), persistent: modes.includes('always') };
95
+ }
96
+ function mcpToolResult(decision) {
97
+ return { action: decision === 'decline' ? 'decline' : 'accept', content: decision === 'decline' ? null : {},
98
+ _meta: decision === 'allowAlways' ? { persist: 'always' }
99
+ : decision === 'allowSession' ? { persist: 'session' } : null };
100
+ }
101
+ function decisions(request) {
102
+ if (confirmation(request)) return ['decline', 'accept'];
103
+ if (request.method === command) return request.params.availableDecisions ?? ['accept', 'acceptForSession', 'decline', 'cancel'];
104
+ if (request.method === file) return ['accept', 'acceptForSession', 'decline', 'cancel'];
105
+ const action = browserAction(request);
106
+ if (action) return ['allowOnce', ...(action.session ? ['allowSession'] : []), ...(action.persistent ? ['allowAlways'] : []), 'cancel'];
107
+ const app = computerAppAccess(request);
108
+ if (app) return ['decline', 'allowConversation', ...(app.persistent ? ['allowAlways'] : [])];
109
+ const browser = browserAccess(request);
110
+ if (browser) return browser.persistent ? ['allowOnce', 'allowSite', 'allowAllSites', 'decline'] : ['allowOnce', 'decline'];
111
+ const tool = mcpToolApproval(request);
112
+ if (tool) return ['decline', 'allowOnce', ...(tool.session ? ['allowSession'] : []), ...(tool.persistent ? ['allowAlways'] : [])];
113
+ return [];
114
+ }
115
+ function validate(request, result) {
116
+ if (confirmation(request)) {
117
+ if (!decisions(request).some(decision => equal(confirmationResult(request, decision), result))) throw new Error('确认结果不属于当前请求');
118
+ return;
119
+ }
120
+ if ([command, file].includes(request.method)) {
121
+ if (!result || Object.keys(result).length !== 1 || !decisions(request).some(value => equal(value, result.decision))) throw new Error('审批选项不属于当前请求');
122
+ return;
123
+ }
124
+ if (request.method === input) {
125
+ const questions = request.params.questions || [];
126
+ if (!result?.answers || Object.keys(result).length !== 1 || Object.keys(result.answers).length !== questions.length
127
+ || questions.some(q => !Array.isArray(result.answers[q.id]?.answers) || result.answers[q.id].answers.some(a => typeof a !== 'string'))) throw new Error('回答格式无效');
128
+ return;
129
+ }
130
+ if (browserAction(request)) {
131
+ if (!decisions(request).some(decision => equal(browserActionResult(decision), result))) throw new Error('浏览器操作决定不属于当前请求');
132
+ return;
133
+ }
134
+ if (computerAppAccess(request)) {
135
+ if (!decisions(request).some(decision => equal(computerAppResult(request, decision), result))) throw new Error('应用访问决定不属于当前请求');
136
+ return;
137
+ }
138
+ const browser = browserAccess(request);
139
+ if (browser) {
140
+ const allowed = [
141
+ { action: 'accept', content: {}, _meta: null },
142
+ { action: 'decline', content: null, _meta: null },
143
+ ];
144
+ if (browser.persistent) allowed.push(
145
+ { action: 'accept', content: {}, _meta: { persist: 'always' } },
146
+ { action: 'accept', content: {}, _meta: { persist: 'always', browser_use_persistent_approval_scope: 'all-sites' } },
147
+ );
148
+ if (!allowed.some(choice => equal(choice, result))) throw new Error('网站访问决定不属于当前请求');
149
+ return;
150
+ }
151
+ if (mcpToolApproval(request)) {
152
+ if (!decisions(request).some(decision => equal(mcpToolResult(decision), result))) throw new Error('工具授权决定不属于当前请求');
153
+ return;
154
+ }
155
+ throw new Error('此类请求需在工作站处理');
156
+ }
157
+ class Store {
158
+ constructor(epoch, changed = () => {}) {
159
+ this.epoch = epoch; this.changed = changed; this.requests = new Map(); this.approvalHistory = new Map();
160
+ }
161
+ list(threadId) { return [...this.requests.values()].filter(r => r.params.threadId === threadId).map(r => ({ ...r })); }
162
+ history(threadId) { return [...this.approvalHistory.values()].filter(r => r.params.threadId === threadId).map(r => ({ ...r })); }
163
+ complete(request, status) {
164
+ const approval = this.approvalHistory.get(approvalId(request));
165
+ if (approval) { approval.status = status; approval.completedAtMs = Date.now(); }
166
+ }
167
+ receive(message) {
168
+ if (!['string', 'number'].includes(typeof message.id) || !message.params?.threadId || this.requests.has(message.id)) return;
169
+ const request = { id: message.id, method: message.method, params: message.params, epoch: this.epoch, status: 'pending' };
170
+ if (request.method !== input) this.approvalHistory.set(approvalId(request), {
171
+ type: 'approval', id: approvalId(request), requestId: request.id, method: request.method,
172
+ params: request.params, turnId: request.params.turnId, status: 'pending', receivedAtMs: Date.now(),
173
+ });
174
+ this.requests.set(message.id, request); this.changed(request.params.threadId);
175
+ }
176
+ notification(method, params) {
177
+ if (method === 'serverRequest/resolved') {
178
+ const request = this.requests.get(params.requestId);
179
+ if (request?.params.threadId === params.threadId) {
180
+ this.complete(request, 'resolved'); this.requests.delete(params.requestId); this.changed(params.threadId);
181
+ }
182
+ } else if (method === 'turn/completed' || method === 'thread/closed') {
183
+ for (const [id, r] of this.requests) if (r.params.threadId === params.threadId && (method === 'thread/closed' || r.params.turnId === params.turn?.id)) {
184
+ this.complete(r, 'expired'); this.requests.delete(id);
185
+ }
186
+ this.changed(params.threadId);
187
+ }
188
+ }
189
+ forget(threadId) {
190
+ for (const [id, request] of this.requests) if (request.params.threadId === threadId) this.requests.delete(id);
191
+ for (const [id, approval] of this.approvalHistory) if (approval.params.threadId === threadId) this.approvalHistory.delete(id);
192
+ this.changed(threadId);
193
+ }
194
+ reset(epoch) {
195
+ const threads = new Set([...this.requests.values()].map(r => r.params.threadId));
196
+ for (const request of this.requests.values()) this.complete(request, 'expired');
197
+ this.requests.clear(); this.epoch = epoch; for (const id of threads) this.changed(id);
198
+ this.approvalHistory.clear();
199
+ }
200
+ async respond(threadId, { id, epoch, result }, send) {
201
+ const request = this.requests.get(id);
202
+ if (!request || epoch !== this.epoch || request.params.threadId !== threadId) throw new Error('审批已处理或连接已变化,请等待同步');
203
+ if (request.status !== 'pending') throw new Error('决定已提交,正在等待工作站确认,请勿重复提交');
204
+ validate(request, result);
205
+ const approval = this.approvalHistory.get(approvalId(request));
206
+ if (approval) { approval.status = 'submitted'; approval.result = result; }
207
+ request.status = 'submitted'; this.changed(threadId);
208
+ try { await send({ id: request.id, result }); }
209
+ catch (error) {
210
+ if (this.requests.get(id) === request) {
211
+ request.status = 'unknown'; if (approval) approval.status = 'unknown'; this.changed(threadId);
212
+ }
213
+ throw new Error('审批发送结果未确认,请检查工作站;不会自动重发。' + error.message);
214
+ }
215
+ return { submitted: true };
216
+ }
217
+ }
218
+ return { Store, decisions, validate, command, file, input, elicitation, browserAccess, browserAction, browserActionResult, computerAppAccess, computerAppResult, mcpToolApproval, mcpToolResult, confirmation, confirmationResult };
219
+ });
@@ -0,0 +1,21 @@
1
+ // Generated from packages/service-domains.json; run node bridge/tools/generate-service-endpoints.mjs.
2
+ (function(root) {
3
+ const endpoints = {
4
+ "profile": "coderelax",
5
+ "apiOrigin": "https://api.coderelax.cn",
6
+ "webOrigin": "https://www.coderelax.cn",
7
+ "adminOrigin": "https://admin.coderelax.cn",
8
+ "relayUrl": "wss://api.coderelax.cn/relay",
9
+ "pairingUrl": "https://www.coderelax.cn/pair",
10
+ "accountBase": "https://api.coderelax.cn/account",
11
+ "announcementUrl": "https://api.coderelax.cn/announcement",
12
+ "installUrl": "https://www.coderelax.cn/code-relax/install",
13
+ "updateManifestUrl": "https://www.coderelax.cn/code-relax/releases/latest/manifest.json5",
14
+ "adminUrl": "https://admin.coderelax.cn/admin"
15
+ };
16
+ endpoints.isOfficialRelayUrl = value => ["wss://api.uulife.site/relay","wss://api.coderelax.cn/relay"].includes(value);
17
+ endpoints.resolveRelayUrl = value => endpoints.isOfficialRelayUrl(value) ? endpoints.relayUrl : value;
18
+ endpoints.webOrigins = ["https://api.uulife.site","https://www.coderelax.cn"];
19
+ if (typeof module !== 'undefined' && module.exports) module.exports = Object.freeze(endpoints);
20
+ else root.CodeRelaxEndpoints = Object.freeze(endpoints);
21
+ })(globalThis);
@@ -1,67 +1,173 @@
1
- (function (root, factory) {
2
- if (typeof module === 'object' && module.exports) module.exports = factory();
3
- else root.CodexTimelineSync = factory();
4
- })(globalThis, function () {
5
- const equal = (left, right) => JSON.stringify(left) === JSON.stringify(right);
6
- function changedFields(previous, current, ignored) {
7
- const set = {}, append = {}, unset = [];
8
- for (const key of new Set([...Object.keys(previous || {}), ...Object.keys(current || {})])) {
9
- if (ignored.has(key) || equal(previous?.[key], current?.[key])) continue;
10
- if (!Object.hasOwn(current, key)) { unset.push(key); continue; }
11
- const before = previous?.[key], after = current[key];
12
- if (typeof before === 'string' && typeof after === 'string' && after.startsWith(before)) append[key] = after.slice(before.length);
13
- else set[key] = after;
14
- }
15
- return { set, append, unset };
16
- }
17
- const nonempty = changes => Object.keys(changes.set).length || Object.keys(changes.append).length || changes.unset.length;
18
- function diffTurn(previous, current) {
19
- if (!previous || !current || previous.id !== current.id) return null;
20
- const before = Array.isArray(previous.entries) ? previous.entries : [];
21
- const after = Array.isArray(current.entries) ? current.entries : [];
22
- if (after.length < before.length) return null;
23
- const entries = [];
24
- for (let index = 0; index < before.length; index++) {
25
- if (before[index]?.id !== after[index]?.id || before[index]?.type !== after[index]?.type ||
26
- before[index]?.role !== after[index]?.role || before[index]?.kind !== after[index]?.kind) return null;
27
- const changes = changedFields(before[index], after[index], new Set(['id', 'type', 'role', 'kind']));
28
- if (nonempty(changes)) entries.push({ id: after[index].id, index, ...changes });
29
- }
30
- const turn = changedFields(previous, current, new Set(['id', 'entries']));
31
- const appended = after.slice(before.length);
32
- return { id: current.id, ...turn, entries, appended };
33
- }
34
- function applyChanges(target, changes) {
35
- const result = { ...target, ...(changes.set || {}) };
36
- for (const key of changes.unset || []) delete result[key];
37
- for (const [key, suffix] of Object.entries(changes.append || {})) {
38
- if (typeof result[key] !== 'string' || typeof suffix !== 'string') throw new Error('增量字段类型不匹配');
39
- result[key] += suffix;
40
- }
41
- return result;
42
- }
43
- function applyTurnPatch(turn, patch) {
44
- if (!turn || turn.id !== patch?.id) throw new Error('增量轮次不存在');
45
- const next = applyChanges(turn, patch), entries = (turn.entries || []).map(entry => ({ ...entry }));
46
- for (const entryPatch of patch.entries || []) {
47
- const entry = entries[entryPatch.index];
48
- if (!entry || entry.id !== entryPatch.id) throw new Error('增量条目边界不匹配');
49
- entries[entryPatch.index] = applyChanges(entry, entryPatch);
50
- }
51
- for (const entry of patch.appended || []) {
52
- if (entries.some(existing => existing.id === entry.id)) throw new Error('增量条目重复');
53
- entries.push(entry);
54
- }
55
- next.entries = entries; return next;
56
- }
57
- function acceptSyncUpdate(current, incoming) {
58
- if (incoming.reset) return { reset: true, next: incoming };
59
- const valid = current && incoming.id === current.id && incoming.epoch === current.epoch &&
60
- Number.isSafeInteger(incoming.fromSeq) && incoming.fromSeq >= 1 &&
61
- Number.isSafeInteger(incoming.toSeq) && incoming.toSeq >= incoming.fromSeq;
62
- if (!valid || incoming.fromSeq > current.seq + 1) throw new Error('实时更新序号不连续');
63
- if (incoming.toSeq <= current.seq) return { duplicate: true, next: current };
64
- return { next: { ...current, seq: incoming.toSeq } };
65
- }
66
- return { diffTurn, applyTurnPatch, acceptSyncUpdate };
67
- });
1
+ (function (root, factory) {
2
+ if (typeof module === 'object' && module.exports) module.exports = factory();
3
+ else root.CodexTimelineSync = factory();
4
+ })(globalThis, function () {
5
+ const equal = (left, right) => left === right || JSON.stringify(left) === JSON.stringify(right);
6
+ function changedFields(previous, current, ignored) {
7
+ const set = {}, append = {}, unset = [];
8
+ for (const key of new Set([...Object.keys(previous || {}), ...Object.keys(current || {})])) {
9
+ if (ignored.has(key) || equal(previous?.[key], current?.[key])) continue;
10
+ if (!Object.hasOwn(current, key)) { unset.push(key); continue; }
11
+ const before = previous?.[key], after = current[key];
12
+ if (typeof before === 'string' && typeof after === 'string' && after.startsWith(before)) append[key] = after.slice(before.length);
13
+ else set[key] = after;
14
+ }
15
+ return { set, append, unset };
16
+ }
17
+ const nonempty = changes => Object.keys(changes.set).length || Object.keys(changes.append).length || changes.unset.length;
18
+ // An ordered history range owns the order of its shared IDs. Keep entries
19
+ // outside that range at their existing shared anchors, never by timestamps.
20
+ function mergeOrderedEntries(existing, incoming, merge = (_previous, next) => next, incomingIsOlder = false) {
21
+ const incomingIds = new Set(incoming.map(entry => entry.id));
22
+ const existingById = new Map(existing.map(entry => [entry.id, entry]));
23
+ const before = new Map();
24
+ let pending = [], lastShared;
25
+ for (const entry of existing) {
26
+ if (incomingIds.has(entry.id)) {
27
+ before.set(entry.id, pending); pending = []; lastShared = entry.id;
28
+ } else pending.push(entry);
29
+ }
30
+ if (lastShared === undefined) return incomingIsOlder ? [...incoming, ...existing] : [...existing, ...incoming];
31
+ return incoming.flatMap(entry => [ ...(before.get(entry.id) || []),
32
+ existingById.has(entry.id) ? merge(existingById.get(entry.id), entry) : entry,
33
+ ...(entry.id === lastShared ? pending : []) ]);
34
+ }
35
+ function diffTurn(previous, current) {
36
+ if (!previous || !current || previous.id !== current.id) return null;
37
+ const before = Array.isArray(previous.entries) ? previous.entries : [];
38
+ const after = Array.isArray(current.entries) ? current.entries : [];
39
+ if (after.length < before.length) return null;
40
+ const entries = [];
41
+ for (let index = 0; index < before.length; index++) {
42
+ if (before[index]?.id !== after[index]?.id || before[index]?.type !== after[index]?.type ||
43
+ before[index]?.role !== after[index]?.role || before[index]?.kind !== after[index]?.kind) return null;
44
+ const changes = changedFields(before[index], after[index], new Set(['id', 'type', 'role', 'kind']));
45
+ if (nonempty(changes)) entries.push({ id: after[index].id, index, ...changes });
46
+ }
47
+ const turn = changedFields(previous, current, new Set(['id', 'entries']));
48
+ const appended = after.slice(before.length);
49
+ return { id: current.id, ...turn, entries, appended };
50
+ }
51
+ function applyChanges(target, changes) {
52
+ const result = { ...target, ...(changes.set || {}) };
53
+ for (const key of changes.unset || []) delete result[key];
54
+ for (const [key, suffix] of Object.entries(changes.append || {})) {
55
+ if (typeof result[key] !== 'string' || typeof suffix !== 'string') throw new Error('增量字段类型不匹配');
56
+ result[key] += suffix;
57
+ }
58
+ return result;
59
+ }
60
+ function applyTurnPatch(turn, patch) {
61
+ if (!turn || turn.id !== patch?.id) throw new Error('增量轮次不存在');
62
+ const next = applyChanges(turn, patch), entries = [...(turn.entries || [])];
63
+ for (const entryPatch of patch.entries || []) {
64
+ const index = entries.findIndex(entry => entry.id === entryPatch.id);
65
+ const entry = entries[index];
66
+ if (!entry || entry.id !== entryPatch.id) throw new Error('增量条目边界不匹配');
67
+ entries[index] = applyChanges(entry, entryPatch);
68
+ }
69
+ for (const entry of patch.appended || []) {
70
+ if (entries.some(existing => existing.id === entry.id)) throw new Error('增量条目重复');
71
+ entries.push(entry);
72
+ }
73
+ if (turn.itemPage && next.itemPage) next.itemPage = { ...next.itemPage,
74
+ olderCursor: turn.itemPage.olderCursor, hasLoadedOldest: turn.itemPage.hasLoadedOldest,
75
+ oldestItemId: turn.itemPage.oldestItemId };
76
+ next.entries = entries; return next;
77
+ }
78
+ function acceptSyncUpdate(current, incoming) {
79
+ if (incoming.reset) return { reset: true, next: incoming };
80
+ const valid = current && incoming.id === current.id && incoming.epoch === current.epoch &&
81
+ Number.isSafeInteger(incoming.fromSeq) && incoming.fromSeq >= 1 &&
82
+ Number.isSafeInteger(incoming.toSeq) && incoming.toSeq >= incoming.fromSeq;
83
+ if (!valid || incoming.fromSeq > current.seq + 1) throw new Error('实时更新序号不连续');
84
+ if (incoming.toSeq <= current.seq) return { duplicate: true, next: current };
85
+ return { next: { ...current, seq: incoming.toSeq } };
86
+ }
87
+ // A batch is acknowledged after consumption. Only an individual record is
88
+ // reassembled; the timeline itself is never serialized into one large string.
89
+ function* timelineBatches(timeline) {
90
+ function* entryRecords(value, kind, textField = '') {
91
+ const text = textField ? value[textField]?.text : value.text;
92
+ if (typeof text !== 'string' || text.length <= 4096) { yield { kind, value }; return; }
93
+ const metadata = textField ? { ...value, [textField]: { ...value[textField], text: '' } } : { ...value, text: '' };
94
+ yield { kind: 'entry-start', value: metadata, target: kind, textField };
95
+ for (let offset = 0; offset < text.length; offset += 4096) yield { kind: 'entry-text', value: text.slice(offset, offset + 4096) };
96
+ yield { kind: 'entry-end' };
97
+ }
98
+ function* records() {
99
+ const { turns, turnPatches, ...metadata } = timeline;
100
+ yield { kind: 'timeline', value: metadata };
101
+ for (const turn of turns) {
102
+ const { entries, ...metadata } = turn;
103
+ yield { kind: 'turn', value: metadata };
104
+ for (const entry of entries || []) yield* entryRecords(entry, 'entry');
105
+ }
106
+ for (const patch of turnPatches || []) {
107
+ const { entries, appended, ...metadata } = patch;
108
+ yield { kind: 'patch', value: metadata };
109
+ for (const entry of entries || []) yield* entryRecords(entry, 'patch-entry', entry.append?.text ? 'append' : 'set');
110
+ for (const entry of appended || []) yield* entryRecords(entry, 'patch-appended');
111
+ }
112
+ }
113
+ const encoder = new TextEncoder();
114
+ let batch = [], bytes = 0;
115
+ for (const record of records()) {
116
+ const json = JSON.stringify(record);
117
+ for (let offset = 0; offset < json.length; offset += 4096) {
118
+ const piece = { text: json.slice(offset, offset + 4096), end: offset + 4096 >= json.length };
119
+ const size = encoder.encode(JSON.stringify(piece)).length;
120
+ if (batch.length && bytes + size > 48 * 1024) { yield batch; batch = []; bytes = 0; }
121
+ batch.push(piece); bytes += size;
122
+ }
123
+ }
124
+ if (batch.length) yield batch;
125
+ }
126
+ function createTimelineReceiver() {
127
+ let timeline, turn, patch, entry, entryTarget, textField, textLength = 0, textParts = [], sequence = 0, parts = [], length = 0;
128
+ return {
129
+ accept(batch, pieces) {
130
+ if (batch !== ++sequence || !Array.isArray(pieces)) throw new Error('历史条目批次不连续');
131
+ const added = [];
132
+ const commitEntry = (target, value) => {
133
+ if (target === 'entry' && turn) { turn.entries.push(value); added.push({ turn, entry: value }); }
134
+ else if (target === 'patch-entry' && patch) patch.entries.push(value);
135
+ else if (target === 'patch-appended' && patch) patch.appended.push(value);
136
+ else throw new Error('历史条目目标无效');
137
+ };
138
+ for (const piece of pieces) {
139
+ if (typeof piece.text !== 'string' || typeof piece.end !== 'boolean') throw new Error('历史条目格式无效');
140
+ parts.push(piece.text); length += piece.text.length;
141
+ if (length > 32 * 1024 * 1024) throw new Error('单条历史内容超过接收限制');
142
+ if (!piece.end) continue;
143
+ const record = JSON.parse(parts.join('')); parts = []; length = 0;
144
+ if (entry && !['entry-text', 'entry-end'].includes(record.kind)) throw new Error('历史正文传输未完成');
145
+ if (record.kind === 'timeline' && !timeline) timeline = { ...record.value, turns: [] };
146
+ else if (record.kind === 'turn' && timeline) {
147
+ turn = { ...record.value, entries: [] }; timeline.turns.push(turn);
148
+ } else if (['entry', 'patch-entry', 'patch-appended'].includes(record.kind)) {
149
+ commitEntry(record.kind, record.value);
150
+ } else if (record.kind === 'entry-start' && !entry) {
151
+ entry = record.value; entryTarget = record.target; textField = record.textField; textParts = []; textLength = 0;
152
+ } else if (record.kind === 'entry-text' && entry && typeof record.value === 'string') {
153
+ textLength += record.value.length;
154
+ if (textLength > 32 * 1024 * 1024) throw new Error('单条历史正文超过接收限制');
155
+ textParts.push(record.value);
156
+ } else if (record.kind === 'entry-end' && entry) {
157
+ if (textField) entry[textField].text = textParts.join(''); else entry.text = textParts.join('');
158
+ textParts = []; commitEntry(entryTarget, entry); entry = null;
159
+ } else if (record.kind === 'patch' && timeline) {
160
+ patch = { ...record.value, entries: [], appended: [] };
161
+ (timeline.turnPatches ||= []).push(patch);
162
+ } else throw new Error('历史条目顺序无效');
163
+ }
164
+ return { timeline, added };
165
+ },
166
+ finish() {
167
+ if (!timeline || parts.length || entry) throw new Error('历史条目传输未完成');
168
+ return timeline;
169
+ },
170
+ };
171
+ }
172
+ return { mergeOrderedEntries, diffTurn, applyTurnPatch, acceptSyncUpdate, timelineBatches, createTimelineReceiver };
173
+ });
@@ -1,17 +1,22 @@
1
- ---
2
- name: code-relax
3
- description: 启动、检查或停止 Code Relax 工作站服务,生成并展示配对二维码。
4
- ---
5
-
6
- # Code Relax
7
-
8
- - Bridge 可独立于 Desktop 启动;在 Desktop 任务中执行时保留注入环境,用于基础控制绑定上下文。启动工作站服务用 `relax start --json`;完整控制用 `relax shared-start --json`。已配置 Code Relax 中继时,启动命令同时恢复中继连接器和已有设备授权。
9
- - npm 全局安装会自动执行服务部署和 Skill 安装;只有修复安装时才单独运行 `relax setup --json` 或 `relax skill-install --json`。
10
- - `setup` 默认启用当前用户登录启动工作站服务,不自动打开 Codex;用 `autostart-status / autostart-disable / autostart-enable` 管理。恢复完整控制会保留 Bridge 和中继,但仍须明确确认可能中断全部完整控制任务。
11
- - 用户要求启动 Code Relax 时,执行一次 `relax start --json`。用户要求二维码或当前启动结果包含二维码时,展示 CLI 返回的 `qrPath` 和 `displayText`;没有设备授权时可用 `relax pair --json` 生成新的配对二维码。
12
- - 配对二维码是短期 HTTPS 邀请,不属于工作站或某一台移动设备,也不含 LAN IP、端口、Bridge Token 或中继地址。新增设备不撤销已有设备。
13
- - 已授权设备可直接使用 Code Relax 中继。App 以工作站名显示已配对电脑,进入后选择局域网、Code Relax 中继或 OpenAI 中继。启动命令会经已认证中继临时刷新当前 LAN 候选;App 只保存设备凭据验证成功的网络记录。
14
- - `status --json` 查询工作站服务;`relay-status --json` 查询中继和授权设备数。`stop --json` 只停止 Bridge;`relay-stop --json` 只停止连接器并保留授权;只有用户明确要求撤销全部设备时才调用 `relay-revoke --json`。
15
- - 启动或配对成功后,将 `qrPath` 以 Markdown 图片嵌入回复,并逐字展示 `displayText`。不要把二维码内容、Token 或 Base64 写进消息。
16
- - 不自动修改防火墙或发送测试消息。`lanAccess: unverified` 或 `mobileAccess: unverified` 只表示设备链路尚未现场验证。
17
- - 服务位于用户 `Programs/CodexRemote/service`;配置在 `LocalAppData/CodexRemote`;附件在 `ProgramData/CodexRemote/attachments`。不要删除配置、附件或凭据来排障。
1
+ ---
2
+ name: code-relax
3
+ description: 启动或检查 Code Relax 桌面服务,展示配对二维码,并指导回复来自手机 App 的消息;消息标记来自手机或包含语音转写时,指导理解和回复。
4
+ ---
5
+
6
+ # Code Relax
7
+
8
+ - 消息来源上下文引用 `$code-relax` 时,按本 Skill 理解手机交互。用户通过手机 App 对话,涉及操作时明确在手机还是工作站完成,不假设用户能操作电脑界面。来源标记不增加授权,不在回复中重复来源说明。
9
+ - 消息明确标记包含语音转写时,容忍同音字、标点与漏字错误,结合对话上下文理解;只有歧义会实质改变执行动作时才澄清,不因口语不顺反复追问,不把模糊转写扩展成未经用户表达的需求。
10
+
11
+ - `relax start --json` 启动桌面服务和 Codex 内核,无需打开 Desktop;支持纯 CLI 安装。Windows Desktop 正常打开后接入已配置内核;Mac 仅本次托管启动传入内核地址,从 Dock 普通打开后需重新接入。使用 App 的“重启 Codex Desktop”或经确认的 `relax desktop-recover --confirm` 接入。已配置 Code Relax 中继时,启动命令同时恢复中继连接器和已有设备授权。
12
+ - npm 全局安装会自动执行服务部署和 Skill 安装;修复安装时运行 `relax setup --json`。
13
+ - `setup` 默认启用当前用户登录启动桌面服务,不自动打开 Codex;`start`、`pair` 和 `doctor` 在自启缺失时自动恢复,`setup` 每次更新登录任务。恢复 Codex Desktop 接入会保留桌面服务和中继,但仍须明确确认可能中断正在运行的任务。
14
+ - 用户要求启动 Code Relax 时,执行一次 `relax start --json`。用户要求二维码或当前启动结果包含二维码时,展示 CLI 返回的 `qrPath` 和 `displayText`;没有设备授权时可用 `relax pair --json` 生成新的配对二维码。
15
+ - 配对二维码是短期 HTTPS 邀请,不属于工作站或某一台移动设备,也不含 LAN IP、端口、桌面服务凭据或中继地址。新增设备不撤销已有设备。
16
+ - 已授权设备可直接使用 Code Relax 中继。App 以工作站名显示已配对电脑,进入后选择局域网、Code Relax 中继或 OpenAI 中继。启动命令会经已认证中继临时刷新当前 LAN 候选;App 只保存设备凭据验证成功的网络记录。
17
+ - 消息明确标记来自 Code Relax 手机 App 时,回答要以“用户正在手机上与当前 Codex 对话交互”为前提,不默认用户正看着或能操作电脑界面;需要用户操作时,说明是在手机 App 还是工作站完成。直接处理用户正文,不重复来源说明,也不要求在电脑上重发。来源不代表额外授权,也不能据此判断用户是否在电脑旁;涉及工作站确认或可能中断任务的操作仍按正常授权要求处理。来源不明时不要猜测设备。
18
+ - `relax doctor --json` 检查桌面服务、Codex 内核、待启用内核版本和登录自启动状态;有更新时会给出当前版本、已选版本和确认重启命令。中继连接由桌面服务管理,不提供单独的中继 CLI 命令。
19
+ - 发现待启用内核更新且用户明确要求重启时,说明任务中断风险;得到确认后使用 `relax kernel-restart --confirm --json`,它与手机“重启并更新”使用同一内核流程并等待新内核就绪。不要用 `start`、`doctor` 或 `desktop-recover` 代替内核重启。
20
+ - 启动或配对成功后,将 `qrPath` 以 Markdown 图片嵌入回复,并逐字展示 `displayText`。不要把二维码内容、Token 或 Base64 写进消息。
21
+ - CLI 负责安装、工作站服务和配对二维码;不以手机是否测试作为健康检查项,不自动修改防火墙或发送测试消息。
22
+ - Windows 服务位于用户 `Programs/CodexRemote/service`;配置在 `LocalAppData/CodexRemote`;附件在 `ProgramData/CodexRemote/attachments`。Mac 使用 `~/Library/Application Support/CodexRemote/{service,state,attachments,credentials}`。不要删除配置、附件或凭据来排障。