@walkhi/code-relax 0.1.0-beta.1

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 (713) hide show
  1. package/README.md +83 -0
  2. package/dist/bin/codex-remote.mjs +262 -0
  3. package/dist/bin/self-relay-demo.mjs +33 -0
  4. package/dist/bin/self-relay-server.mjs +50 -0
  5. package/dist/get-lan-networks.ps1 +40 -0
  6. package/dist/get-shared-service-url.ps1 +6 -0
  7. package/dist/shared/app-server-events.cjs +266 -0
  8. package/dist/shared/p2p-diagnostics.cjs +28 -0
  9. package/dist/shared/server-requests.cjs +67 -0
  10. package/dist/shared/timeline-sync.cjs +67 -0
  11. package/dist/skills/code-relax/SKILL.md +17 -0
  12. package/dist/src/app-server-client.mjs +468 -0
  13. package/dist/src/app-server-tasks.mjs +355 -0
  14. package/dist/src/background-process.mjs +18 -0
  15. package/dist/src/debug-ui.mjs +131 -0
  16. package/dist/src/desktop-launcher.mjs +51 -0
  17. package/dist/src/execution-health.mjs +26 -0
  18. package/dist/src/lan-socket-server.mjs +103 -0
  19. package/dist/src/managed-app-server.mjs +207 -0
  20. package/dist/src/message-images.mjs +27 -0
  21. package/dist/src/onboarding.mjs +31 -0
  22. package/dist/src/platform/README.md +12 -0
  23. package/dist/src/platform/linux/README.md +3 -0
  24. package/dist/src/platform/macos/README.md +3 -0
  25. package/dist/src/platform/windows/IsolatedProcess.cs +75 -0
  26. package/dist/src/platform/windows/background-process.mjs +25 -0
  27. package/dist/src/platform/windows/credential-store.mjs +27 -0
  28. package/dist/src/platform/windows/credential-store.ps1 +49 -0
  29. package/dist/src/platform/windows/desktop-host.mjs +38 -0
  30. package/dist/src/platform/windows/desktop-info.ps1 +16 -0
  31. package/dist/src/platform/windows/desktop-monitor.mjs +34 -0
  32. package/dist/src/platform/windows/desktop-shortcut-run.ps1 +5 -0
  33. package/dist/src/platform/windows/desktop-shortcuts.ps1 +28 -0
  34. package/dist/src/platform/windows/desktop-tools.mjs +48 -0
  35. package/dist/src/platform/windows/launch-worker.ps1 +13 -0
  36. package/dist/src/platform/windows/network-info.mjs +34 -0
  37. package/dist/src/platform/windows/resident-start.ps1 +7 -0
  38. package/dist/src/platform/windows/resident-startup.ps1 +27 -0
  39. package/dist/src/platform/windows/resolve-state-root.ps1 +14 -0
  40. package/dist/src/platform/windows/runtime-paths.mjs +20 -0
  41. package/dist/src/platform/windows/service-host.mjs +43 -0
  42. package/dist/src/platform/windows/start-hidden-console.ps1 +39 -0
  43. package/dist/src/platform/windows/stop-desktop.ps1 +19 -0
  44. package/dist/src/platform/windows/user-environment.mjs +50 -0
  45. package/dist/src/platform/windows/user-environment.ps1 +41 -0
  46. package/dist/src/self-relay/client.mjs +59 -0
  47. package/dist/src/self-relay/connector.mjs +147 -0
  48. package/dist/src/self-relay/debug-allowlist.mjs +33 -0
  49. package/dist/src/self-relay/demo.mjs +38 -0
  50. package/dist/src/self-relay/device-store.mjs +84 -0
  51. package/dist/src/self-relay/lan-authorizations.mjs +29 -0
  52. package/dist/src/self-relay/lifecycle.mjs +281 -0
  53. package/dist/src/self-relay/p2p-probe.mjs +83 -0
  54. package/dist/src/self-relay/server.mjs +340 -0
  55. package/dist/src/self-relay/windows-route-helper.mjs +75 -0
  56. package/dist/src/self-relay/wire.mjs +36 -0
  57. package/dist/src/server.mjs +2086 -0
  58. package/dist/src/service-control.mjs +72 -0
  59. package/dist/src/service-doctor.mjs +63 -0
  60. package/dist/src/service-health.mjs +33 -0
  61. package/dist/src/service-install.mjs +91 -0
  62. package/dist/src/service-lifecycle.mjs +130 -0
  63. package/dist/src/service-restart.mjs +48 -0
  64. package/dist/src/shared-app-server.mjs +356 -0
  65. package/dist/src/shared-catalog.mjs +60 -0
  66. package/dist/src/shared-recovery.mjs +142 -0
  67. package/dist/src/shared-thread-stream.mjs +80 -0
  68. package/dist/src/skill-install.mjs +64 -0
  69. package/dist/src/thread-catalog.mjs +42 -0
  70. package/dist/src/thread-title-generation.mjs +150 -0
  71. package/dist/tools/find-desktop-pipe.mjs +10 -0
  72. package/dist/tools/rtc-route-helper.ps1 +99 -0
  73. package/dist/tools/start-rtc-route-helper.ps1 +15 -0
  74. package/dist/web/approval-ui.js +188 -0
  75. package/dist/web/capabilities.js +57 -0
  76. package/dist/web/chat-transport.js +196 -0
  77. package/dist/web/chat.css +736 -0
  78. package/dist/web/chat.js +5149 -0
  79. package/dist/web/client-platform.js +11 -0
  80. package/dist/web/harmony-platform.js +51 -0
  81. package/dist/web/highlight-powershell.min.js +39 -0
  82. package/dist/web/highlight.min.js +1262 -0
  83. package/dist/web/history-cache.js +146 -0
  84. package/dist/web/index.html +222 -0
  85. package/dist/web/lan-session.js +122 -0
  86. package/dist/web/p2p-diagnostics.js +28 -0
  87. package/dist/web/p2p-probe.js +83 -0
  88. package/dist/web/resources.json +1 -0
  89. package/dist/web/self-relay-session.js +119 -0
  90. package/dist/web/server-requests.js +67 -0
  91. package/dist/web/timeline-sync.js +67 -0
  92. package/dist/web/vendor/README.md +14 -0
  93. package/dist/web/vendor/highlight-powershell.min.js +39 -0
  94. package/dist/web/vendor/highlight.LICENSE.txt +29 -0
  95. package/dist/web/vendor/highlight.min.js +1262 -0
  96. package/dist/web/vendor/markdown-it.LICENSE.txt +22 -0
  97. package/dist/web/vendor/markdown-it.umd.min.js +14 -0
  98. package/node_modules/@img/colour/LICENSE.md +82 -0
  99. package/node_modules/@img/colour/README.md +15 -0
  100. package/node_modules/@img/colour/color.cjs +1596 -0
  101. package/node_modules/@img/colour/index.cjs +1 -0
  102. package/node_modules/@img/colour/index.d.ts +929 -0
  103. package/node_modules/@img/colour/package.json +58 -0
  104. package/node_modules/@img/sharp-win32-x64/LICENSE +191 -0
  105. package/node_modules/@img/sharp-win32-x64/README.md +59 -0
  106. package/node_modules/@img/sharp-win32-x64/index.cjs +1 -0
  107. package/node_modules/@img/sharp-win32-x64/lib/libvips-42.dll +0 -0
  108. package/node_modules/@img/sharp-win32-x64/lib/libvips-cpp-8.18.6.dll +0 -0
  109. package/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64-0.35.4.node +0 -0
  110. package/node_modules/@img/sharp-win32-x64/package.json +40 -0
  111. package/node_modules/@img/sharp-win32-x64/versions.json +30 -0
  112. package/node_modules/@node-datachannel/win32-x64-msvc/node_datachannel.node +0 -0
  113. package/node_modules/@node-datachannel/win32-x64-msvc/package.json +20 -0
  114. package/node_modules/ansi-regex/index.d.ts +37 -0
  115. package/node_modules/ansi-regex/index.js +10 -0
  116. package/node_modules/ansi-regex/license +9 -0
  117. package/node_modules/ansi-regex/package.json +55 -0
  118. package/node_modules/ansi-regex/readme.md +78 -0
  119. package/node_modules/ansi-styles/index.d.ts +345 -0
  120. package/node_modules/ansi-styles/index.js +163 -0
  121. package/node_modules/ansi-styles/license +9 -0
  122. package/node_modules/ansi-styles/package.json +56 -0
  123. package/node_modules/ansi-styles/readme.md +152 -0
  124. package/node_modules/camelcase/index.d.ts +63 -0
  125. package/node_modules/camelcase/index.js +76 -0
  126. package/node_modules/camelcase/license +9 -0
  127. package/node_modules/camelcase/package.json +43 -0
  128. package/node_modules/camelcase/readme.md +99 -0
  129. package/node_modules/cliui/CHANGELOG.md +76 -0
  130. package/node_modules/cliui/LICENSE.txt +14 -0
  131. package/node_modules/cliui/README.md +115 -0
  132. package/node_modules/cliui/index.js +354 -0
  133. package/node_modules/cliui/package.json +65 -0
  134. package/node_modules/color-convert/CHANGELOG.md +54 -0
  135. package/node_modules/color-convert/LICENSE +21 -0
  136. package/node_modules/color-convert/README.md +68 -0
  137. package/node_modules/color-convert/conversions.js +839 -0
  138. package/node_modules/color-convert/index.js +81 -0
  139. package/node_modules/color-convert/package.json +48 -0
  140. package/node_modules/color-convert/route.js +97 -0
  141. package/node_modules/color-name/LICENSE +8 -0
  142. package/node_modules/color-name/README.md +11 -0
  143. package/node_modules/color-name/index.js +152 -0
  144. package/node_modules/color-name/package.json +28 -0
  145. package/node_modules/decamelize/index.js +13 -0
  146. package/node_modules/decamelize/license +21 -0
  147. package/node_modules/decamelize/package.json +38 -0
  148. package/node_modules/decamelize/readme.md +48 -0
  149. package/node_modules/detect-libc/LICENSE +201 -0
  150. package/node_modules/detect-libc/README.md +163 -0
  151. package/node_modules/detect-libc/index.d.ts +14 -0
  152. package/node_modules/detect-libc/lib/detect-libc.js +313 -0
  153. package/node_modules/detect-libc/lib/elf.js +39 -0
  154. package/node_modules/detect-libc/lib/filesystem.js +51 -0
  155. package/node_modules/detect-libc/lib/process.js +24 -0
  156. package/node_modules/detect-libc/package.json +44 -0
  157. package/node_modules/dijkstrajs/.travis.yml +4 -0
  158. package/node_modules/dijkstrajs/CONTRIBUTING.md +8 -0
  159. package/node_modules/dijkstrajs/LICENSE.md +19 -0
  160. package/node_modules/dijkstrajs/README.md +18 -0
  161. package/node_modules/dijkstrajs/dijkstra.js +165 -0
  162. package/node_modules/dijkstrajs/package.json +60 -0
  163. package/node_modules/dijkstrajs/test/dijkstra.test.js +96 -0
  164. package/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  165. package/node_modules/emoji-regex/README.md +73 -0
  166. package/node_modules/emoji-regex/es2015/index.js +6 -0
  167. package/node_modules/emoji-regex/es2015/text.js +6 -0
  168. package/node_modules/emoji-regex/index.d.ts +23 -0
  169. package/node_modules/emoji-regex/index.js +6 -0
  170. package/node_modules/emoji-regex/package.json +50 -0
  171. package/node_modules/emoji-regex/text.js +6 -0
  172. package/node_modules/find-up/index.d.ts +137 -0
  173. package/node_modules/find-up/index.js +89 -0
  174. package/node_modules/find-up/license +9 -0
  175. package/node_modules/find-up/package.json +53 -0
  176. package/node_modules/find-up/readme.md +156 -0
  177. package/node_modules/get-caller-file/LICENSE.md +6 -0
  178. package/node_modules/get-caller-file/README.md +41 -0
  179. package/node_modules/get-caller-file/index.d.ts +2 -0
  180. package/node_modules/get-caller-file/index.js +22 -0
  181. package/node_modules/get-caller-file/index.js.map +1 -0
  182. package/node_modules/get-caller-file/package.json +42 -0
  183. package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  184. package/node_modules/is-fullwidth-code-point/index.js +50 -0
  185. package/node_modules/is-fullwidth-code-point/license +9 -0
  186. package/node_modules/is-fullwidth-code-point/package.json +42 -0
  187. package/node_modules/is-fullwidth-code-point/readme.md +39 -0
  188. package/node_modules/locate-path/index.d.ts +83 -0
  189. package/node_modules/locate-path/index.js +65 -0
  190. package/node_modules/locate-path/license +9 -0
  191. package/node_modules/locate-path/package.json +45 -0
  192. package/node_modules/locate-path/readme.md +122 -0
  193. package/node_modules/node-datachannel/.clang-format +17 -0
  194. package/node_modules/node-datachannel/.editorconfig +12 -0
  195. package/node_modules/node-datachannel/.eslintignore +8 -0
  196. package/node_modules/node-datachannel/.eslintrc.json +27 -0
  197. package/node_modules/node-datachannel/.gitmodules +3 -0
  198. package/node_modules/node-datachannel/.prettierignore +7 -0
  199. package/node_modules/node-datachannel/.prettierrc +13 -0
  200. package/node_modules/node-datachannel/API.md +247 -0
  201. package/node_modules/node-datachannel/BULDING.md +26 -0
  202. package/node_modules/node-datachannel/CMakeLists.txt +153 -0
  203. package/node_modules/node-datachannel/LICENSE +373 -0
  204. package/node_modules/node-datachannel/README.md +129 -0
  205. package/node_modules/node-datachannel/dist/cjs/index.cjs +11 -0
  206. package/node_modules/node-datachannel/dist/cjs/index.cjs.map +1 -0
  207. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs +101 -0
  208. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs.map +1 -0
  209. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs +91 -0
  210. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs.map +1 -0
  211. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs +94 -0
  212. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs.map +1 -0
  213. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs +45 -0
  214. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs.map +1 -0
  215. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs +8 -0
  216. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs.map +1 -0
  217. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs +86 -0
  218. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs.map +1 -0
  219. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs +34 -0
  220. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs.map +1 -0
  221. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs +34 -0
  222. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -0
  223. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs +214 -0
  224. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -0
  225. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs +53 -0
  226. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -0
  227. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs +83 -0
  228. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs.map +1 -0
  229. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs +132 -0
  230. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -0
  231. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs +94 -0
  232. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -0
  233. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs +434 -0
  234. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -0
  235. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs +59 -0
  236. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -0
  237. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs +45 -0
  238. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs.map +1 -0
  239. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs +42 -0
  240. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs.map +1 -0
  241. package/node_modules/node-datachannel/dist/esm/index.mjs +8 -0
  242. package/node_modules/node-datachannel/dist/esm/index.mjs.map +1 -0
  243. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs +78 -0
  244. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs.map +1 -0
  245. package/node_modules/node-datachannel/dist/esm/lib/index.mjs +64 -0
  246. package/node_modules/node-datachannel/dist/esm/lib/index.mjs.map +1 -0
  247. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs +78 -0
  248. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs.map +1 -0
  249. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs +43 -0
  250. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs.map +1 -0
  251. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs +6 -0
  252. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs.map +1 -0
  253. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs +82 -0
  254. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs.map +1 -0
  255. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs +28 -0
  256. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs.map +1 -0
  257. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs +30 -0
  258. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs.map +1 -0
  259. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs +210 -0
  260. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -0
  261. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs +49 -0
  262. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -0
  263. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs +79 -0
  264. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs.map +1 -0
  265. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs +128 -0
  266. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -0
  267. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs +89 -0
  268. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -0
  269. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs +430 -0
  270. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -0
  271. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs +55 -0
  272. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -0
  273. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs +41 -0
  274. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs.map +1 -0
  275. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs +27 -0
  276. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs.map +1 -0
  277. package/node_modules/node-datachannel/dist/types/lib/datachannel-stream.d.ts +24 -0
  278. package/node_modules/node-datachannel/dist/types/lib/index.d.ts +241 -0
  279. package/node_modules/node-datachannel/dist/types/lib/types.d.ts +119 -0
  280. package/node_modules/node-datachannel/dist/types/lib/websocket-server.d.ts +13 -0
  281. package/node_modules/node-datachannel/dist/types/lib/websocket.d.ts +25 -0
  282. package/node_modules/node-datachannel/dist/types/polyfill/Events.d.ts +15 -0
  283. package/node_modules/node-datachannel/dist/types/polyfill/RTCCertificate.d.ts +9 -0
  284. package/node_modules/node-datachannel/dist/types/polyfill/RTCDataChannel.d.ts +29 -0
  285. package/node_modules/node-datachannel/dist/types/polyfill/RTCDtlsTransport.d.ts +15 -0
  286. package/node_modules/node-datachannel/dist/types/polyfill/RTCError.d.ts +17 -0
  287. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceCandidate.d.ts +21 -0
  288. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceTransport.d.ts +30 -0
  289. package/node_modules/node-datachannel/dist/types/polyfill/RTCPeerConnection.d.ts +64 -0
  290. package/node_modules/node-datachannel/dist/types/polyfill/RTCSctpTransport.d.ts +15 -0
  291. package/node_modules/node-datachannel/dist/types/polyfill/RTCSessionDescription.d.ts +10 -0
  292. package/node_modules/node-datachannel/dist/types/polyfill/index.d.ts +26 -0
  293. package/node_modules/node-datachannel/jest.config.ts +14 -0
  294. package/node_modules/node-datachannel/package.json +133 -0
  295. package/node_modules/node-datachannel/rollup.config.mjs +67 -0
  296. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.cpp +530 -0
  297. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.h +63 -0
  298. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.cpp +172 -0
  299. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.h +43 -0
  300. package/node_modules/node-datachannel/src/cpp/main.cpp +58 -0
  301. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.cpp +457 -0
  302. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.h +52 -0
  303. package/node_modules/node-datachannel/src/cpp/media-av1packetization.cpp +24 -0
  304. package/node_modules/node-datachannel/src/cpp/media-av1packetization.h +11 -0
  305. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.cpp +126 -0
  306. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.h +29 -0
  307. package/node_modules/node-datachannel/src/cpp/media-direction.cpp +43 -0
  308. package/node_modules/node-datachannel/src/cpp/media-direction.h +10 -0
  309. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.cpp +126 -0
  310. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.h +30 -0
  311. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.cpp +126 -0
  312. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.h +30 -0
  313. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.cpp +32 -0
  314. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.h +11 -0
  315. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.cpp +31 -0
  316. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.h +11 -0
  317. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.cpp +79 -0
  318. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.h +28 -0
  319. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.cpp +68 -0
  320. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.h +28 -0
  321. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.cpp +57 -0
  322. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.h +28 -0
  323. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.cpp +93 -0
  324. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.h +30 -0
  325. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.cpp +167 -0
  326. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.h +35 -0
  327. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.cpp +95 -0
  328. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.h +30 -0
  329. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.cpp +458 -0
  330. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.h +61 -0
  331. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.cpp +526 -0
  332. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.h +56 -0
  333. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.cpp +1298 -0
  334. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.h +89 -0
  335. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.cpp +205 -0
  336. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.h +24 -0
  337. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.cpp +57 -0
  338. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.h +47 -0
  339. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.cpp +275 -0
  340. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.h +41 -0
  341. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.cpp +796 -0
  342. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.h +63 -0
  343. package/node_modules/node-datachannel/src/index.ts +9 -0
  344. package/node_modules/node-datachannel/src/lib/datachannel-stream.ts +100 -0
  345. package/node_modules/node-datachannel/src/lib/index.ts +290 -0
  346. package/node_modules/node-datachannel/src/lib/node-datachannel.ts +84 -0
  347. package/node_modules/node-datachannel/src/lib/types.ts +169 -0
  348. package/node_modules/node-datachannel/src/lib/websocket-server.ts +37 -0
  349. package/node_modules/node-datachannel/src/lib/websocket.ts +26 -0
  350. package/node_modules/node-datachannel/src/polyfill/Events.ts +82 -0
  351. package/node_modules/node-datachannel/src/polyfill/Exception.ts +37 -0
  352. package/node_modules/node-datachannel/src/polyfill/README.md +41 -0
  353. package/node_modules/node-datachannel/src/polyfill/RTCCertificate.ts +21 -0
  354. package/node_modules/node-datachannel/src/polyfill/RTCDataChannel.ts +225 -0
  355. package/node_modules/node-datachannel/src/polyfill/RTCDtlsTransport.ts +46 -0
  356. package/node_modules/node-datachannel/src/polyfill/RTCError.ts +78 -0
  357. package/node_modules/node-datachannel/src/polyfill/RTCIceCandidate.ts +128 -0
  358. package/node_modules/node-datachannel/src/polyfill/RTCIceTransport.ts +90 -0
  359. package/node_modules/node-datachannel/src/polyfill/RTCPeerConnection.ts +527 -0
  360. package/node_modules/node-datachannel/src/polyfill/RTCSctpTransport.ts +51 -0
  361. package/node_modules/node-datachannel/src/polyfill/RTCSessionDescription.ts +41 -0
  362. package/node_modules/node-datachannel/src/polyfill/index.ts +38 -0
  363. package/node_modules/node-datachannel/tsconfig.json +21 -0
  364. package/node_modules/p-limit/index.d.ts +38 -0
  365. package/node_modules/p-limit/index.js +57 -0
  366. package/node_modules/p-limit/license +9 -0
  367. package/node_modules/p-limit/package.json +52 -0
  368. package/node_modules/p-limit/readme.md +101 -0
  369. package/node_modules/p-locate/index.d.ts +64 -0
  370. package/node_modules/p-locate/index.js +52 -0
  371. package/node_modules/p-locate/license +9 -0
  372. package/node_modules/p-locate/package.json +53 -0
  373. package/node_modules/p-locate/readme.md +90 -0
  374. package/node_modules/p-try/index.d.ts +39 -0
  375. package/node_modules/p-try/index.js +9 -0
  376. package/node_modules/p-try/license +9 -0
  377. package/node_modules/p-try/package.json +42 -0
  378. package/node_modules/p-try/readme.md +58 -0
  379. package/node_modules/path-exists/index.d.ts +28 -0
  380. package/node_modules/path-exists/index.js +23 -0
  381. package/node_modules/path-exists/license +9 -0
  382. package/node_modules/path-exists/package.json +39 -0
  383. package/node_modules/path-exists/readme.md +52 -0
  384. package/node_modules/pngjs/.eslintignore +2 -0
  385. package/node_modules/pngjs/.eslintrc.json +19 -0
  386. package/node_modules/pngjs/.prettierignore +3 -0
  387. package/node_modules/pngjs/LICENSE +20 -0
  388. package/node_modules/pngjs/README.md +429 -0
  389. package/node_modules/pngjs/browser.js +16096 -0
  390. package/node_modules/pngjs/coverage/lcov-report/base.css +354 -0
  391. package/node_modules/pngjs/coverage/lcov-report/bitmapper.js.html +881 -0
  392. package/node_modules/pngjs/coverage/lcov-report/bitpacker.js.html +554 -0
  393. package/node_modules/pngjs/coverage/lcov-report/block-navigation.js +77 -0
  394. package/node_modules/pngjs/coverage/lcov-report/chunkstream.js.html +647 -0
  395. package/node_modules/pngjs/coverage/lcov-report/constants.js.html +176 -0
  396. package/node_modules/pngjs/coverage/lcov-report/crc.js.html +200 -0
  397. package/node_modules/pngjs/coverage/lcov-report/favicon.png +0 -0
  398. package/node_modules/pngjs/coverage/lcov-report/filter-pack.js.html +593 -0
  399. package/node_modules/pngjs/coverage/lcov-report/filter-parse-async.js.html +152 -0
  400. package/node_modules/pngjs/coverage/lcov-report/filter-parse-sync.js.html +143 -0
  401. package/node_modules/pngjs/coverage/lcov-report/filter-parse.js.html +611 -0
  402. package/node_modules/pngjs/coverage/lcov-report/format-normaliser.js.html +359 -0
  403. package/node_modules/pngjs/coverage/lcov-report/index.html +426 -0
  404. package/node_modules/pngjs/coverage/lcov-report/interlace.js.html +365 -0
  405. package/node_modules/pngjs/coverage/lcov-report/packer-async.js.html +230 -0
  406. package/node_modules/pngjs/coverage/lcov-report/packer-sync.js.html +248 -0
  407. package/node_modules/pngjs/coverage/lcov-report/packer.js.html +467 -0
  408. package/node_modules/pngjs/coverage/lcov-report/paeth-predictor.js.html +128 -0
  409. package/node_modules/pngjs/coverage/lcov-report/parser-async.js.html +575 -0
  410. package/node_modules/pngjs/coverage/lcov-report/parser-sync.js.html +404 -0
  411. package/node_modules/pngjs/coverage/lcov-report/parser.js.html +950 -0
  412. package/node_modules/pngjs/coverage/lcov-report/png-sync.js.html +116 -0
  413. package/node_modules/pngjs/coverage/lcov-report/png.js.html +662 -0
  414. package/node_modules/pngjs/coverage/lcov-report/prettify.css +101 -0
  415. package/node_modules/pngjs/coverage/lcov-report/prettify.js +1007 -0
  416. package/node_modules/pngjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  417. package/node_modules/pngjs/coverage/lcov-report/sorter.js +169 -0
  418. package/node_modules/pngjs/coverage/lcov-report/sync-inflate.js.html +584 -0
  419. package/node_modules/pngjs/coverage/lcov-report/sync-reader.js.html +215 -0
  420. package/node_modules/pngjs/coverage/lcov.info +2177 -0
  421. package/node_modules/pngjs/lib/bitmapper.js +267 -0
  422. package/node_modules/pngjs/lib/bitpacker.js +158 -0
  423. package/node_modules/pngjs/lib/chunkstream.js +189 -0
  424. package/node_modules/pngjs/lib/constants.js +32 -0
  425. package/node_modules/pngjs/lib/crc.js +40 -0
  426. package/node_modules/pngjs/lib/filter-pack.js +171 -0
  427. package/node_modules/pngjs/lib/filter-parse-async.js +24 -0
  428. package/node_modules/pngjs/lib/filter-parse-sync.js +21 -0
  429. package/node_modules/pngjs/lib/filter-parse.js +177 -0
  430. package/node_modules/pngjs/lib/format-normaliser.js +93 -0
  431. package/node_modules/pngjs/lib/interlace.js +95 -0
  432. package/node_modules/pngjs/lib/packer-async.js +50 -0
  433. package/node_modules/pngjs/lib/packer-sync.js +56 -0
  434. package/node_modules/pngjs/lib/packer.js +129 -0
  435. package/node_modules/pngjs/lib/paeth-predictor.js +16 -0
  436. package/node_modules/pngjs/lib/parser-async.js +165 -0
  437. package/node_modules/pngjs/lib/parser-sync.js +108 -0
  438. package/node_modules/pngjs/lib/parser.js +290 -0
  439. package/node_modules/pngjs/lib/png-sync.js +12 -0
  440. package/node_modules/pngjs/lib/png.js +194 -0
  441. package/node_modules/pngjs/lib/sync-inflate.js +168 -0
  442. package/node_modules/pngjs/lib/sync-reader.js +45 -0
  443. package/node_modules/pngjs/package.json +73 -0
  444. package/node_modules/qrcode/README.md +770 -0
  445. package/node_modules/qrcode/bin/qrcode +159 -0
  446. package/node_modules/qrcode/helper/to-sjis-browser.js +2 -0
  447. package/node_modules/qrcode/helper/to-sjis.js +105 -0
  448. package/node_modules/qrcode/lib/browser.js +76 -0
  449. package/node_modules/qrcode/lib/can-promise.js +7 -0
  450. package/node_modules/qrcode/lib/core/alignment-pattern.js +83 -0
  451. package/node_modules/qrcode/lib/core/alphanumeric-data.js +59 -0
  452. package/node_modules/qrcode/lib/core/bit-buffer.js +37 -0
  453. package/node_modules/qrcode/lib/core/bit-matrix.js +65 -0
  454. package/node_modules/qrcode/lib/core/byte-data.js +30 -0
  455. package/node_modules/qrcode/lib/core/error-correction-code.js +135 -0
  456. package/node_modules/qrcode/lib/core/error-correction-level.js +50 -0
  457. package/node_modules/qrcode/lib/core/finder-pattern.js +22 -0
  458. package/node_modules/qrcode/lib/core/format-info.js +29 -0
  459. package/node_modules/qrcode/lib/core/galois-field.js +69 -0
  460. package/node_modules/qrcode/lib/core/kanji-data.js +54 -0
  461. package/node_modules/qrcode/lib/core/mask-pattern.js +234 -0
  462. package/node_modules/qrcode/lib/core/mode.js +167 -0
  463. package/node_modules/qrcode/lib/core/numeric-data.js +43 -0
  464. package/node_modules/qrcode/lib/core/polynomial.js +62 -0
  465. package/node_modules/qrcode/lib/core/qrcode.js +495 -0
  466. package/node_modules/qrcode/lib/core/reed-solomon-encoder.js +56 -0
  467. package/node_modules/qrcode/lib/core/regex.js +31 -0
  468. package/node_modules/qrcode/lib/core/segments.js +330 -0
  469. package/node_modules/qrcode/lib/core/utils.js +63 -0
  470. package/node_modules/qrcode/lib/core/version-check.js +9 -0
  471. package/node_modules/qrcode/lib/core/version.js +163 -0
  472. package/node_modules/qrcode/lib/index.js +12 -0
  473. package/node_modules/qrcode/lib/renderer/canvas.js +63 -0
  474. package/node_modules/qrcode/lib/renderer/png.js +78 -0
  475. package/node_modules/qrcode/lib/renderer/svg-tag.js +81 -0
  476. package/node_modules/qrcode/lib/renderer/svg.js +19 -0
  477. package/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +85 -0
  478. package/node_modules/qrcode/lib/renderer/terminal/terminal.js +49 -0
  479. package/node_modules/qrcode/lib/renderer/terminal.js +9 -0
  480. package/node_modules/qrcode/lib/renderer/utf8.js +71 -0
  481. package/node_modules/qrcode/lib/renderer/utils.js +99 -0
  482. package/node_modules/qrcode/lib/server.js +138 -0
  483. package/node_modules/qrcode/license +10 -0
  484. package/node_modules/qrcode/package.json +77 -0
  485. package/node_modules/require-directory/.jshintrc +67 -0
  486. package/node_modules/require-directory/.npmignore +1 -0
  487. package/node_modules/require-directory/.travis.yml +3 -0
  488. package/node_modules/require-directory/LICENSE +22 -0
  489. package/node_modules/require-directory/README.markdown +184 -0
  490. package/node_modules/require-directory/index.js +86 -0
  491. package/node_modules/require-directory/package.json +40 -0
  492. package/node_modules/require-main-filename/CHANGELOG.md +26 -0
  493. package/node_modules/require-main-filename/LICENSE.txt +14 -0
  494. package/node_modules/require-main-filename/README.md +26 -0
  495. package/node_modules/require-main-filename/index.js +18 -0
  496. package/node_modules/require-main-filename/package.json +35 -0
  497. package/node_modules/semver/LICENSE +15 -0
  498. package/node_modules/semver/README.md +680 -0
  499. package/node_modules/semver/bin/semver.js +195 -0
  500. package/node_modules/semver/classes/comparator.js +143 -0
  501. package/node_modules/semver/classes/index.js +7 -0
  502. package/node_modules/semver/classes/range.js +577 -0
  503. package/node_modules/semver/classes/semver.js +350 -0
  504. package/node_modules/semver/functions/clean.js +8 -0
  505. package/node_modules/semver/functions/cmp.js +54 -0
  506. package/node_modules/semver/functions/coerce.js +62 -0
  507. package/node_modules/semver/functions/compare-build.js +9 -0
  508. package/node_modules/semver/functions/compare-loose.js +5 -0
  509. package/node_modules/semver/functions/compare.js +7 -0
  510. package/node_modules/semver/functions/diff.js +60 -0
  511. package/node_modules/semver/functions/eq.js +5 -0
  512. package/node_modules/semver/functions/gt.js +5 -0
  513. package/node_modules/semver/functions/gte.js +5 -0
  514. package/node_modules/semver/functions/inc.js +21 -0
  515. package/node_modules/semver/functions/lt.js +5 -0
  516. package/node_modules/semver/functions/lte.js +5 -0
  517. package/node_modules/semver/functions/major.js +5 -0
  518. package/node_modules/semver/functions/minor.js +5 -0
  519. package/node_modules/semver/functions/neq.js +5 -0
  520. package/node_modules/semver/functions/parse.js +18 -0
  521. package/node_modules/semver/functions/patch.js +5 -0
  522. package/node_modules/semver/functions/prerelease.js +8 -0
  523. package/node_modules/semver/functions/rcompare.js +5 -0
  524. package/node_modules/semver/functions/rsort.js +5 -0
  525. package/node_modules/semver/functions/satisfies.js +12 -0
  526. package/node_modules/semver/functions/sort.js +5 -0
  527. package/node_modules/semver/functions/truncate.js +48 -0
  528. package/node_modules/semver/functions/valid.js +8 -0
  529. package/node_modules/semver/index.js +93 -0
  530. package/node_modules/semver/internal/constants.js +37 -0
  531. package/node_modules/semver/internal/debug.js +11 -0
  532. package/node_modules/semver/internal/identifiers.js +29 -0
  533. package/node_modules/semver/internal/lrucache.js +42 -0
  534. package/node_modules/semver/internal/parse-options.js +17 -0
  535. package/node_modules/semver/internal/re.js +223 -0
  536. package/node_modules/semver/package.json +78 -0
  537. package/node_modules/semver/preload.js +4 -0
  538. package/node_modules/semver/range.bnf +17 -0
  539. package/node_modules/semver/ranges/gtr.js +6 -0
  540. package/node_modules/semver/ranges/intersects.js +9 -0
  541. package/node_modules/semver/ranges/ltr.js +6 -0
  542. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  543. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  544. package/node_modules/semver/ranges/min-version.js +63 -0
  545. package/node_modules/semver/ranges/outside.js +82 -0
  546. package/node_modules/semver/ranges/simplify.js +49 -0
  547. package/node_modules/semver/ranges/subset.js +249 -0
  548. package/node_modules/semver/ranges/to-comparators.js +10 -0
  549. package/node_modules/semver/ranges/valid.js +13 -0
  550. package/node_modules/set-blocking/CHANGELOG.md +26 -0
  551. package/node_modules/set-blocking/LICENSE.txt +14 -0
  552. package/node_modules/set-blocking/README.md +31 -0
  553. package/node_modules/set-blocking/index.js +7 -0
  554. package/node_modules/set-blocking/package.json +42 -0
  555. package/node_modules/sharp/LICENSE +191 -0
  556. package/node_modules/sharp/README.md +112 -0
  557. package/node_modules/sharp/dist/channel.cjs +177 -0
  558. package/node_modules/sharp/dist/channel.mjs +177 -0
  559. package/node_modules/sharp/dist/colour.cjs +199 -0
  560. package/node_modules/sharp/dist/colour.mjs +199 -0
  561. package/node_modules/sharp/dist/composite.cjs +213 -0
  562. package/node_modules/sharp/dist/composite.mjs +213 -0
  563. package/node_modules/sharp/dist/constructor.cjs +511 -0
  564. package/node_modules/sharp/dist/constructor.mjs +511 -0
  565. package/node_modules/sharp/dist/index.cjs +25 -0
  566. package/node_modules/sharp/dist/index.d.cts +1999 -0
  567. package/node_modules/sharp/dist/index.d.mts +2046 -0
  568. package/node_modules/sharp/dist/index.mjs +25 -0
  569. package/node_modules/sharp/dist/input.cjs +819 -0
  570. package/node_modules/sharp/dist/input.mjs +819 -0
  571. package/node_modules/sharp/dist/is.cjs +143 -0
  572. package/node_modules/sharp/dist/is.mjs +143 -0
  573. package/node_modules/sharp/dist/libvips.cjs +212 -0
  574. package/node_modules/sharp/dist/libvips.mjs +212 -0
  575. package/node_modules/sharp/dist/operation.cjs +1002 -0
  576. package/node_modules/sharp/dist/operation.mjs +1002 -0
  577. package/node_modules/sharp/dist/output.cjs +1785 -0
  578. package/node_modules/sharp/dist/output.mjs +1785 -0
  579. package/node_modules/sharp/dist/resize.cjs +617 -0
  580. package/node_modules/sharp/dist/resize.mjs +617 -0
  581. package/node_modules/sharp/dist/sharp.cjs +174 -0
  582. package/node_modules/sharp/dist/sharp.mjs +174 -0
  583. package/node_modules/sharp/dist/utility.cjs +301 -0
  584. package/node_modules/sharp/dist/utility.mjs +301 -0
  585. package/node_modules/sharp/install/build.js +38 -0
  586. package/node_modules/sharp/lib/index.d.ts +1999 -0
  587. package/node_modules/sharp/package.json +227 -0
  588. package/node_modules/sharp/src/binding.gyp +303 -0
  589. package/node_modules/sharp/src/common.cc +1186 -0
  590. package/node_modules/sharp/src/common.h +421 -0
  591. package/node_modules/sharp/src/metadata.cc +404 -0
  592. package/node_modules/sharp/src/metadata.h +95 -0
  593. package/node_modules/sharp/src/operations.cc +516 -0
  594. package/node_modules/sharp/src/operations.h +137 -0
  595. package/node_modules/sharp/src/pipeline.cc +1948 -0
  596. package/node_modules/sharp/src/pipeline.h +422 -0
  597. package/node_modules/sharp/src/sharp.cc +43 -0
  598. package/node_modules/sharp/src/stats.cc +186 -0
  599. package/node_modules/sharp/src/stats.h +62 -0
  600. package/node_modules/sharp/src/utilities.cc +289 -0
  601. package/node_modules/sharp/src/utilities.h +22 -0
  602. package/node_modules/string-width/index.d.ts +29 -0
  603. package/node_modules/string-width/index.js +47 -0
  604. package/node_modules/string-width/license +9 -0
  605. package/node_modules/string-width/package.json +56 -0
  606. package/node_modules/string-width/readme.md +50 -0
  607. package/node_modules/strip-ansi/index.d.ts +17 -0
  608. package/node_modules/strip-ansi/index.js +4 -0
  609. package/node_modules/strip-ansi/license +9 -0
  610. package/node_modules/strip-ansi/package.json +54 -0
  611. package/node_modules/strip-ansi/readme.md +46 -0
  612. package/node_modules/which-module/LICENSE +13 -0
  613. package/node_modules/which-module/README.md +58 -0
  614. package/node_modules/which-module/index.js +9 -0
  615. package/node_modules/which-module/package.json +41 -0
  616. package/node_modules/wrap-ansi/index.js +186 -0
  617. package/node_modules/wrap-ansi/license +9 -0
  618. package/node_modules/wrap-ansi/package.json +61 -0
  619. package/node_modules/wrap-ansi/readme.md +97 -0
  620. package/node_modules/ws/LICENSE +20 -0
  621. package/node_modules/ws/README.md +548 -0
  622. package/node_modules/ws/browser.js +8 -0
  623. package/node_modules/ws/index.js +22 -0
  624. package/node_modules/ws/lib/buffer-util.js +131 -0
  625. package/node_modules/ws/lib/constants.js +19 -0
  626. package/node_modules/ws/lib/event-target.js +292 -0
  627. package/node_modules/ws/lib/extension.js +203 -0
  628. package/node_modules/ws/lib/limiter.js +55 -0
  629. package/node_modules/ws/lib/permessage-deflate.js +530 -0
  630. package/node_modules/ws/lib/receiver.js +743 -0
  631. package/node_modules/ws/lib/sender.js +607 -0
  632. package/node_modules/ws/lib/stream.js +161 -0
  633. package/node_modules/ws/lib/subprotocol.js +62 -0
  634. package/node_modules/ws/lib/validation.js +152 -0
  635. package/node_modules/ws/lib/websocket-server.js +562 -0
  636. package/node_modules/ws/lib/websocket.js +1407 -0
  637. package/node_modules/ws/package.json +74 -0
  638. package/node_modules/ws/wrapper.mjs +21 -0
  639. package/node_modules/y18n/CHANGELOG.md +35 -0
  640. package/node_modules/y18n/LICENSE +13 -0
  641. package/node_modules/y18n/README.md +109 -0
  642. package/node_modules/y18n/index.js +188 -0
  643. package/node_modules/y18n/package.json +39 -0
  644. package/node_modules/yargs/CHANGELOG.md +420 -0
  645. package/node_modules/yargs/LICENSE +21 -0
  646. package/node_modules/yargs/README.md +140 -0
  647. package/node_modules/yargs/build/lib/apply-extends.d.ts +2 -0
  648. package/node_modules/yargs/build/lib/apply-extends.js +65 -0
  649. package/node_modules/yargs/build/lib/argsert.d.ts +2 -0
  650. package/node_modules/yargs/build/lib/argsert.js +65 -0
  651. package/node_modules/yargs/build/lib/command.d.ts +64 -0
  652. package/node_modules/yargs/build/lib/command.js +416 -0
  653. package/node_modules/yargs/build/lib/common-types.d.ts +36 -0
  654. package/node_modules/yargs/build/lib/common-types.js +25 -0
  655. package/node_modules/yargs/build/lib/completion-templates.d.ts +2 -0
  656. package/node_modules/yargs/build/lib/completion-templates.js +50 -0
  657. package/node_modules/yargs/build/lib/completion.d.ts +21 -0
  658. package/node_modules/yargs/build/lib/completion.js +135 -0
  659. package/node_modules/yargs/build/lib/is-promise.d.ts +1 -0
  660. package/node_modules/yargs/build/lib/is-promise.js +9 -0
  661. package/node_modules/yargs/build/lib/levenshtein.d.ts +1 -0
  662. package/node_modules/yargs/build/lib/levenshtein.js +58 -0
  663. package/node_modules/yargs/build/lib/middleware.d.ts +10 -0
  664. package/node_modules/yargs/build/lib/middleware.js +57 -0
  665. package/node_modules/yargs/build/lib/obj-filter.d.ts +1 -0
  666. package/node_modules/yargs/build/lib/obj-filter.js +14 -0
  667. package/node_modules/yargs/build/lib/parse-command.d.ts +11 -0
  668. package/node_modules/yargs/build/lib/parse-command.js +36 -0
  669. package/node_modules/yargs/build/lib/process-argv.d.ts +2 -0
  670. package/node_modules/yargs/build/lib/process-argv.js +31 -0
  671. package/node_modules/yargs/build/lib/usage.d.ts +49 -0
  672. package/node_modules/yargs/build/lib/usage.js +540 -0
  673. package/node_modules/yargs/build/lib/validation.d.ts +34 -0
  674. package/node_modules/yargs/build/lib/validation.js +330 -0
  675. package/node_modules/yargs/build/lib/yargs.d.ts +274 -0
  676. package/node_modules/yargs/build/lib/yargs.js +1190 -0
  677. package/node_modules/yargs/build/lib/yerror.d.ts +4 -0
  678. package/node_modules/yargs/build/lib/yerror.js +11 -0
  679. package/node_modules/yargs/index.js +40 -0
  680. package/node_modules/yargs/locales/be.json +46 -0
  681. package/node_modules/yargs/locales/de.json +46 -0
  682. package/node_modules/yargs/locales/en.json +51 -0
  683. package/node_modules/yargs/locales/es.json +46 -0
  684. package/node_modules/yargs/locales/fi.json +49 -0
  685. package/node_modules/yargs/locales/fr.json +53 -0
  686. package/node_modules/yargs/locales/hi.json +49 -0
  687. package/node_modules/yargs/locales/hu.json +46 -0
  688. package/node_modules/yargs/locales/id.json +50 -0
  689. package/node_modules/yargs/locales/it.json +46 -0
  690. package/node_modules/yargs/locales/ja.json +51 -0
  691. package/node_modules/yargs/locales/ko.json +49 -0
  692. package/node_modules/yargs/locales/nb.json +44 -0
  693. package/node_modules/yargs/locales/nl.json +49 -0
  694. package/node_modules/yargs/locales/nn.json +44 -0
  695. package/node_modules/yargs/locales/pirate.json +13 -0
  696. package/node_modules/yargs/locales/pl.json +49 -0
  697. package/node_modules/yargs/locales/pt.json +45 -0
  698. package/node_modules/yargs/locales/pt_BR.json +48 -0
  699. package/node_modules/yargs/locales/ru.json +46 -0
  700. package/node_modules/yargs/locales/th.json +46 -0
  701. package/node_modules/yargs/locales/tr.json +48 -0
  702. package/node_modules/yargs/locales/zh_CN.json +48 -0
  703. package/node_modules/yargs/locales/zh_TW.json +47 -0
  704. package/node_modules/yargs/package.json +92 -0
  705. package/node_modules/yargs/yargs.js +14 -0
  706. package/node_modules/yargs-parser/CHANGELOG.md +601 -0
  707. package/node_modules/yargs-parser/LICENSE.txt +14 -0
  708. package/node_modules/yargs-parser/README.md +449 -0
  709. package/node_modules/yargs-parser/index.js +1032 -0
  710. package/node_modules/yargs-parser/lib/tokenize-arg-string.js +40 -0
  711. package/node_modules/yargs-parser/package.json +46 -0
  712. package/package.json +50 -0
  713. package/tools/postinstall.mjs +9 -0
@@ -0,0 +1,736 @@
1
+ :root { --color-chart-blue:#339cff; --color-chart-purple:#ad7bf9; color-scheme: dark; font: 14px/1.45 Inter, "Segoe UI", sans-serif; background: #101311; color: #e8eee9; }
2
+ .sidebar-brand > span { touch-action: manipulation; user-select: none; }
3
+ .connection-notice { display:flex; flex:none; align-items:center; gap:8px; padding:6px 10px; color:#87958c; font-size:12px; }
4
+ .connection-notice[hidden] { display:none; }
5
+ .connection-indicator { width:7px; height:7px; border-radius:50%; background:currentColor; flex:none; }
6
+ .connection-notice.connecting .connection-indicator { width:10px; height:10px; background:none; border:1.5px solid currentColor; border-right-color:transparent; animation:connection-spin 1s linear infinite; }
7
+ .connection-notice button { margin-left:auto; padding:3px 6px; border:0; background:transparent; color:inherit; font-size:inherit; }
8
+ @keyframes connection-spin { to { transform:rotate(360deg); } }
9
+ .model-menu[aria-disabled="true"] .model-option, .model-menu[aria-disabled="true"] .effort-track { opacity:.45; }
10
+ .file-action-menu { position:fixed; z-index:80; display:grid; min-width:180px; max-width:min(280px, calc(100vw - 16px)); gap:3px; padding:5px; border:1px solid #465149; border-radius:11px; background:#252d28; box-shadow:0 10px 28px #0007; }
11
+ .file-action-name { display:flex; min-width:0; padding:7px 9px 8px; overflow:hidden; border-bottom:1px solid #465149; color:#b8c4bc; font-size:12px; line-height:16px; white-space:nowrap; }
12
+ .file-action-name-body { min-width:0; overflow:hidden; direction:rtl; text-align:left; text-overflow:ellipsis; unicode-bidi:plaintext; }
13
+ .file-action-name-extension { flex:none; }
14
+ .link-action-url { display:block; overflow:hidden; direction:ltr; text-align:left; text-overflow:ellipsis; }
15
+ .file-action-menu > button { border:0; padding:8px 14px; background:transparent; text-align:left; }
16
+ .file-action-menu > button:hover { background:#ffffff0d; }
17
+ html { height: 100%; overflow: hidden; }
18
+ body { height: 100%; }
19
+ * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
20
+ body { display: flex; flex-direction: column; margin: 0; min-height: 100vh; overflow: hidden; background: radial-gradient(circle at 20% 0%, #203329 0, #101311 38%); }
21
+ header { display: flex; flex: none; align-items: center; gap: 13px; min-width: 0; padding: 10px 18px; border-bottom: 1px solid #2c3830; white-space: nowrap; }
22
+ h1 { flex: none; margin: 0; font-size: 16px; }
23
+ .sub { min-width: 0; overflow: hidden; color: #9fb0a5; font-size: 11px; text-overflow: ellipsis; }
24
+ .status { display: inline-flex; flex: none; align-items: center; gap: 7px; margin-left: auto; color: #b8c8bd; font-size: 12px; }
25
+ .dot { width: 9px; height: 9px; border-radius: 50%; background: #768078; }
26
+ .dot.ok { background: #42d17b; box-shadow: 0 0 12px #42d17b80; }
27
+ main { display: grid; grid-template-columns: minmax(230px, 280px) minmax(0, 1fr); flex: 1; min-height: 0; }
28
+ aside { min-height: 0; overflow-y: auto; overflow-anchor: none; overscroll-behavior: contain; border-right: 1px solid #2c3830; padding: 12px 8px; background: #171c19; scrollbar-width: thin; scrollbar-color: #3b443f transparent; }
29
+ section { position: relative; display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; padding: 14px 22px 18px; }
30
+ button, textarea, select { font: inherit; }
31
+ button { border: 1px solid #405248; background: #1d2821; color: #e8eee9; border-radius: 8px; padding: 8px 12px; cursor: pointer; }
32
+ button:hover { background: #29372e; }
33
+ button:disabled { opacity: .45; cursor: default; }
34
+ button { appearance:none; -webkit-appearance:none; }
35
+ button:focus:not(:focus-visible), [role="button"]:focus:not(:focus-visible) { outline:none; }
36
+ button:focus-visible, [role="button"]:focus-visible { outline:2px solid #6b9fd8; outline-offset:2px; }
37
+ .toolbar { display: flex; align-items: center; justify-content: space-between; min-height: 28px; margin: 0 4px 7px; color: #8d9891; }
38
+ .sidebar-title { font-size: 12px; font-weight: 650; letter-spacing: .04em; }
39
+ .project.recent { margin-top: 24px; }
40
+ .project.recent .project-tasks { margin: 0; padding-left: 0; }
41
+ .recent-heading { margin: 0; padding: 6px 10px; color: #858e89; font-size: 12px; font-weight: 600; }
42
+ .refresh-icon { width: 25px; height: 25px; border: 0; padding: 0; border-radius: 6px; color: #8d9891; background: transparent; font-size: 15px; }
43
+ .project { margin: 0 0 4px; }
44
+ .project-header { display: flex; align-items: center; width: calc(100% - 4px); min-width: 0; margin: 0 2px; border: 0; border-radius: 6px; padding: 2px 4px; color: #d4ddd7; background: transparent; }
45
+ .project-header:hover { background: #222824; }
46
+ .project-toggle { display: flex; flex: 1; min-width: 0; align-items: center; border: 0; padding: 3px 2px; color: inherit; background: transparent; text-align: left; }
47
+ .project-toggle:hover { background: transparent; }
48
+ .project-folder { display: grid; place-items: center; width: 17px; height: 17px; flex: none; margin-right: 8px; color: #aab3ad; }
49
+ .project-folder svg { display: block; width: 17px; height: 17px; overflow: visible; fill: none; stroke: currentColor; stroke-width: 1.35; stroke-linecap: round; stroke-linejoin: round; }
50
+ .project-name { flex: 1; min-width: 0; overflow: hidden; font-size: 12px; font-weight: 500; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
51
+ .project-path, .project-count { display: none; }
52
+ .project-tasks { margin: 0 3px 2px 17px; padding-left: 7px; }
53
+ .project.collapsed .project-tasks { display: none; }
54
+ .task-swipe { position:relative; width:100%; overflow:hidden; border-radius:7px; -webkit-user-select:none; user-select:none; }
55
+ .task { position:relative; z-index:1; display: flex; width: 100%; min-width: 0; align-items: center; gap: 8px; margin: 1px 0; border: 0; border-radius: 7px; padding: 6px 9px; color: #cbd4ce; background: #171c19; text-align: left; touch-action:pan-y; transition:transform .16s ease; }
56
+ .task-swipe-action { position:absolute; z-index:0; inset:1px 0 1px auto; width:104px; display:flex; align-items:center; justify-content:flex-end; pointer-events:none; border:0; padding:0 12px 6px; color:#f3b45f; background:transparent; font-size:12px; }
57
+ .task-swipe.swiping { background:#202823; }
58
+ .task-swipe.swiping .task { border-radius:0; background:#202823; }
59
+ .task-swipe .task-swipe-action { width:max-content; white-space:nowrap; transform:translateX(calc(100% - var(--swipe-offset, 0px))); }
60
+ .task-swipe.swiping::after { content:''; position:absolute; z-index:2; right:0; bottom:2px; width:var(--swipe-threshold); height:2px; border-radius:999px; background:linear-gradient(to left, #f3b45f calc(var(--swipe-progress, 0) * 100%), #f3b45f30 0); pointer-events:none; }
61
+ .task-swipe.swipe-ready::after { background:#ffd08a; }
62
+ .task-swipe.swipe-ready .task-swipe-action { color:#ffd08a; }
63
+ .task-swipe-action[hidden] { display:none; }
64
+ .task:hover { background: #242a26; }
65
+ .task.active { background: #303632; }
66
+ .task-title { flex: 1; min-width: 0; overflow: hidden; font-size: 12px; font-weight: 400; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
67
+ .running-status { width: 13px; height: 13px; flex: none; border: 1.5px solid #5e6962; border-top-color: #c2cbc5; border-radius: 50%; animation: status-spin .9s linear infinite; }
68
+ .approval-status { display: inline-flex; align-items: center; flex: none; color: #f2b65a; font-size: 12px; font-weight: 650; line-height: 1.2; white-space: nowrap; }
69
+ .unread-status { width: 9px; height: 9px; flex: none; border-radius: 50%; background: #4285e8; }
70
+ .project-header > :is(.approval-status, .running-status, .unread-status) { margin: 0 7px 0 auto; }
71
+ .project-actions { display: flex; flex: none; align-items: center; gap: 1px; opacity: 0; pointer-events: none; }
72
+ .project-header:hover > :is(.approval-status, .running-status, .unread-status), .project-header:focus-within > :is(.approval-status, .running-status, .unread-status) { display: none; }
73
+ .project-header:hover .project-actions, .project-header:focus-within .project-actions { opacity: 1; pointer-events: auto; }
74
+ .project-action { display: grid; place-items: center; width: 24px; height: 24px; border: 0; border-radius: 5px; padding: 0; color: #9ca69f; background: transparent; }
75
+ .project-action:hover { color: #e1e7e3; background: #353c38; }
76
+ .project-action.more { font-size: 16px; letter-spacing: 1px; line-height: 1; }
77
+ .project-action[aria-disabled="true"] { cursor: default; }
78
+ .project-action svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
79
+ @keyframes status-spin { to { transform: rotate(360deg); } }
80
+ .task-meta { display: none; }
81
+ .archive-list-entry { display:flex; align-items:center; gap:9px; flex:none; width:100%; padding:9px 8px; border:0; border-radius:0; background:transparent; color:#9eaca3; text-align:left; font-size:12px; }
82
+ .archive-list-entry > span { flex:1; }
83
+ .archive-list-entry[hidden] { display:none; }
84
+ #empty { color: #91a397; padding: 28px 0; }
85
+ #selected { display: flex; flex: 1; min-height: 0; flex-direction: column; }
86
+ #selected[hidden] { display: none; }
87
+ .selected-heading { display: flex; flex: none; align-items: center; min-width: 0; min-height: 28px; padding: 2px; margin-bottom: 4px; background: transparent; white-space: nowrap; }
88
+ #selectedTitle { flex: 0 1 auto; min-width: 0; overflow: hidden; margin: 0; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
89
+ #selectedMeta { display: flex; flex: 1; min-width: 0; flex-wrap: nowrap; align-items: center; gap: 7px; overflow: hidden; color: #91a397; font-size: 11px; }
90
+ #selectedMeta > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
91
+ .live { display: inline-flex; align-items: center; gap: 5px; color: #7d9183; }
92
+ .live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #68736b; }
93
+ .live.connected { color: #71d695; }
94
+ .live.connected::before { background: #42d17b; box-shadow: 0 0 8px #42d17b80; }
95
+ #timeline { display: flex; flex: 1; min-height: 0; flex-direction: column; gap: 12px; overflow-y: auto; overscroll-behavior: contain; padding: 6px 14px 18px 0; scroll-padding-bottom: 18px; scrollbar-width: none; }
96
+ #timeline::-webkit-scrollbar { display: none; }
97
+ .scroll-to-bottom { position: absolute; z-index: 8; right: 34px; bottom: 122px; display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid #3b453f; border-radius: 50%; padding: 0; color: #e1e7e3; background: #202622; transition: background-color .15s ease, opacity .15s ease; }
98
+ .scroll-to-bottom .codex-icon { width: 20px; height: 20px; transform: rotate(180deg); }
99
+ .scroll-to-bottom[hidden] { display: none; }
100
+ .turn { display: flex; flex-direction: column; min-width: 0; gap: 12px; }
101
+ .turn-label { align-self: center; color: #748379; font-size: 11px; margin: 5px 0; }
102
+ .turn-error { display: flex; align-items: flex-start; align-self: stretch; gap: 9px; border: 1px solid #343c37; border-radius: 14px; padding: 12px 14px; color: #e6ebe7; font-size: 12px; line-height: 1.45; }
103
+ .turn-error-icon { display: grid; place-items: center; width: 16px; height: 16px; flex: none; margin-top: 1px; border: 1.5px solid currentColor; border-radius: 50%; font-size: 10px; font-weight: 750; line-height: 1; }
104
+ .turn-error-message { min-width: 0; word-break: break-word; }
105
+ .message { max-width: 88%; border-radius: 12px; padding: 10px 12px; font-size: 13px; line-height: 1.55; word-break: break-word; }
106
+ .message.user { align-self: flex-end; background: #244a35; border: 1px solid #397655; }
107
+ .pending-message { display: flex; flex-direction: column; align-self: stretch; min-width: 0; gap: 6px; }
108
+ .pending-message-status { align-self:flex-end; color:#94a79a; font-size:12px; }
109
+ .pending-message-actions { align-self:flex-end; display:flex; gap:8px; }
110
+ .pending-message-actions[hidden] { display:none; }
111
+ .pending-message-actions button { padding:4px 8px; font-size:12px; background:transparent; color:#94a79a; }
112
+ .message.agent { align-self: stretch; max-width: 100%; padding: 3px 2px; border: 0; border-radius: 0; background: transparent; }
113
+ .message.commentary { color: #b9c9be; border-style: dashed; }
114
+ .message.final { border: 0; background: transparent; }
115
+ .role { display: none; }
116
+ .message-body { min-width: 0; }
117
+ .message-body > :first-child { margin-top: 0; }
118
+ .message-body > :last-child { margin-bottom: 0; }
119
+ .message-body p { margin: .6em 0; }
120
+ .message-body h1, .message-body h2, .message-body h3, .message-body h4 { margin: .9em 0 .45em; line-height: 1.3; }
121
+ .message-body h1 { font-size: 1.35em; }
122
+ .message-body h2 { font-size: 1.22em; }
123
+ .message-body h3, .message-body h4 { font-size: 1.08em; }
124
+ .message-body ul, .message-body ol { margin: .55em 0; padding-left: 1.5em; }
125
+ .message-body blockquote { margin: .7em 0; padding: .1em 0 .1em .9em; border-left: 3px solid #4f765e; color: #b6c5ba; }
126
+ .message-body code { border-radius: 4px; padding: .12em .35em; background: #0b100d; font: .88em/1.45 "Cascadia Mono", Consolas, monospace; }
127
+ .message-body pre { margin: .75em 0; padding: 11px 12px; overflow: auto; border: 1px solid #29372e; border-radius: 8px; background: #090c0a; white-space: pre; }
128
+ .message-body pre code { padding: 0; background: transparent; font-size: 12px; }
129
+ .message-body .code-block { margin: .75em 0; overflow: hidden; border: 1px solid #29372e; border-radius: 12px; background: #090c0a; }
130
+ .message-body .code-block-header { display: flex; min-height: 48px; align-items: center; gap: 8px; padding: 6px 6px 6px 16px; color: #aeb9b2; font-size: 14px; font-weight: 500; line-height: 1.3; user-select: none; }
131
+ .message-body .code-block-language { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
132
+ .message-body .code-block-copy { display: grid; place-items: center; width: 32px; height: 32px; flex: none; margin-left: auto; border: 0; border-radius: 8px; padding: 0; color: #aeb9b2; background: transparent; }
133
+ .message-body .code-block-copy:hover { color: #e8eee9; background: #ffffff0d; }
134
+ .message-body .code-block-copy[data-copy-state="copied"] { color: #e8eee9; }
135
+ .message-body .code-block-copy-icon { display: block; width: 16px; height: 16px; }
136
+ .message-body .code-block pre { margin: 0; padding: 0 16px 12px; border: 0; border-radius: 0; background: transparent; }
137
+ .message-body .code-block code.hljs { color: #d9e3dc; }
138
+ .message-body .hljs-comment, .message-body .hljs-quote { color: #789083; font-style: italic; }
139
+ .message-body .hljs-keyword, .message-body .hljs-selector-tag, .message-body .hljs-literal,
140
+ .message-body .hljs-section, .message-body .hljs-link { color: #c99aef; }
141
+ .message-body .hljs-string, .message-body .hljs-doctag, .message-body .hljs-regexp,
142
+ .message-body .hljs-template-tag, .message-body .hljs-template-variable { color: #a7d08c; }
143
+ .message-body .hljs-number, .message-body .hljs-symbol, .message-body .hljs-bullet { color: #efb36d; }
144
+ .message-body .hljs-title, .message-body .hljs-title.class_, .message-body .hljs-title.function_ { color: #82b7e8; }
145
+ .message-body .hljs-type, .message-body .hljs-built_in, .message-body .hljs-attribute,
146
+ .message-body .hljs-selector-attr, .message-body .hljs-selector-class, .message-body .hljs-selector-pseudo { color: #e4ca82; }
147
+ .message-body .hljs-variable, .message-body .hljs-params, .message-body .hljs-property { color: #d9e3dc; }
148
+ .message-body .hljs-meta, .message-body .hljs-meta .hljs-keyword { color: #85c9c0; }
149
+ .message-body .hljs-addition { color: #85c997; background: #2d694733; }
150
+ .message-body .hljs-deletion { color: #ed9292; background: #7d303033; }
151
+ .message-body .hljs-emphasis { font-style: italic; }
152
+ .message-body .hljs-strong { font-weight: 700; }
153
+ .message-body a { color: #73d99a; text-decoration: none; }
154
+ .message-body a:hover { text-decoration: underline; }
155
+ .message-body table { display: block; max-width: 100%; overflow: auto; border-collapse: collapse; }
156
+ .message-body th, .message-body td { border: 1px solid #35433a; padding: 6px 8px; }
157
+ .message-body hr { border: 0; border-top: 1px solid #35433a; }
158
+ .user-attachments { display: flex; align-self: flex-end; max-width: 88%; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
159
+ .image-thumb { width: 72px; height: 72px; overflow: hidden; padding: 0; border: 1px solid #45564b; border-radius: 8px; background: #0b0e0c; }
160
+ .image-thumb:hover { border-color: #6e8a78; background: #0b0e0c; }
161
+ .image-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
162
+ #draftImages .image-thumb { position: relative; margin-bottom: 8px; }
163
+ .remove-image { position: absolute; right: 2px; top: 2px; width: 20px; height: 20px; border-radius: 50%; background: #101311dd; color: white; line-height: 18px; }
164
+ .message.agent .message-image { display: block; max-width: min(100%, 640px); max-height: 380px; margin-top: 9px; border-radius: 8px; object-fit: contain; }
165
+ .activity { align-self: stretch; border: 0; border-radius: 6px; background: transparent; color: #8f9b93; }
166
+ .activity summary { display: flex; align-items: center; gap: 6px; cursor: pointer; padding: 3px 2px; font-size: 12px; line-height: 1.35; white-space: nowrap; list-style: none; }
167
+ .activity summary::-webkit-details-marker { display: none; }
168
+ .activity-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
169
+ .activity-icon { width: 15px; height: 15px; flex: none; color: #8e9892; }
170
+ .activity-icon svg { display: block; width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
171
+ .activity-icon.filled svg { fill: currentColor; stroke: none; }
172
+ .activity pre { margin: 0; padding: 2px 8px 6px 20px; overflow: auto; white-space: pre-wrap; word-break: break-word; font: 10.5px/1.45 "Cascadia Mono", Consolas, monospace; }
173
+ .activity.compact { display: flex; align-items: center; gap: 6px; padding: 3px 2px; font-size: 12px; line-height: 1.35; }
174
+ .activity-copy { display: grid; place-items: center; width: 26px; height: 26px; flex: none; padding: 0; border: 0; border-radius: 5px; color: #819087; background: transparent; }
175
+ .activity-copy:hover { color: #d5ddd8; background: #ffffff0b; }
176
+ .activity-copy[data-copy-state="copied"] { color: #76d395; }
177
+ .activity-copy .code-block-copy-icon { display: block; width: 14px; height: 14px; }
178
+ .command-shell { margin: 4px 2px 8px 20px; overflow: hidden; border: 1px solid #354039; border-radius: 8px; background: #111713; color: #d5ddd8; }
179
+ .command-shell-command { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: 7px; padding: 7px 8px 7px 10px; border-bottom: 1px solid #2a352e; font: 11px/1.5 "Cascadia Mono", Consolas, monospace; }
180
+ .command-shell-command code { min-width: 0; padding: 3px 0; overflow-wrap: anywhere; white-space: pre-wrap; color: inherit; background: transparent; }
181
+ .command-shell-prompt { padding-top: 3px; color: #76d395; user-select: none; }
182
+ .command-shell-output { position: relative; overflow: hidden; padding: 9px 36px 9px 10px; }
183
+ .command-shell-output pre { min-width: 0; min-height: 16px; max-height: 182px; padding: 0; overflow-x: hidden; overflow-y: auto; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; color: #c2ccc5; font-size: 10.5px; }
184
+ .command-shell-output pre.empty { color: #758279; font-style: italic; white-space: pre-wrap; }
185
+ .command-shell-output .activity-copy { position: absolute; top: 5px; right: 5px; }
186
+ .command-shell-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 28px; padding: 5px 9px 5px 10px; border-top: 1px solid #2a352e; color: #7f8d84; font-size: 10.5px; }
187
+ .command-shell-cwd { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
188
+ .command-shell-status { flex: none; color: #97a59c; }
189
+ .tool-detail { display: flex; flex-direction: column; gap: 8px; margin: 4px 2px 8px 20px; padding: 9px 10px; border: 1px solid #354039; border-radius: 8px; background: #111713; color: #c2ccc5; font-size: 11px; }
190
+ .tool-detail-section { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
191
+ .tool-detail-heading { color: #89968e; font-size: 10.5px; font-weight: 600; }
192
+ .tool-detail-fields { display: grid; grid-template-columns: minmax(58px, max-content) minmax(0, 1fr); gap: 4px 10px; margin: 0; }
193
+ .tool-detail-fields dt { color: #7f8d84; }
194
+ .tool-detail-fields dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
195
+ .tool-detail-fields dd > .tool-detail-fields { margin-top: 4px; }
196
+ .tool-detail .tool-detail-text { max-height: 200px; margin: 0; padding: 7px 8px; overflow: auto; white-space: pre-wrap; word-break: break-word; border-radius: 5px; background: #0b100d; color: #c2ccc5; font: 10.5px/1.5 "Cascadia Mono", Consolas, monospace; }
197
+ .tool-detail-list { display: flex; flex-direction: column; gap: 4px; margin: 0; padding-left: 18px; }
198
+ .tool-detail-section.error { color: #ec8b83; }
199
+ .tool-detail-footer { padding-top: 3px; border-top: 1px solid #2a352e; color: #7f8d84; text-align: right; font-size: 10px; }
200
+ .tool-detail .muted { color: #758279; }
201
+ .image-view-detail { padding: 4px 0 3px 23px; }
202
+ .image-view-thumb { display: block; width: 100px; height: 100px; overflow: hidden; padding: 0; border: 1px solid #354039; border-radius: 9px; background: #0b0e0c; }
203
+ .image-view-thumb:hover { border-color: #66776c; background: #0b0e0c; }
204
+ .image-view-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
205
+ .generated-image { align-self: flex-start; max-width: min(100%, 640px); }
206
+ .generated-image > .image-thumb { width: min(280px, 70vw); height: 160px; color: #89968e; }
207
+ .generated-image-button { display: block; max-width: 100%; overflow: hidden; padding: 0; border: 1px solid #354039; border-radius: 10px; background: #0b0e0c; }
208
+ .generated-image-button:hover { border-color: #66776c; background: #0b0e0c; }
209
+ .generated-image-preview { display: block; max-width: 100%; max-height: min(520px, 65vh); object-fit: contain; }
210
+ .generated-image-group { display: grid; grid-template-columns: minmax(0, 1fr) clamp(42px, 12vw, 56px); align-self: flex-start; width: min(100%, 712px); gap: 8px; }
211
+ .generated-image-stack { position: relative; min-width: 0; aspect-ratio: 1; overflow: hidden; border: 1px solid #354039; border-radius: 10px; background: #0b0e0c; }
212
+ .generated-image-slide { position: absolute; inset: 0; display: grid; place-items: center; }
213
+ .generated-image-slide[hidden] { display: none; }
214
+ .generated-image-slide > .generated-image { width: 100%; height: 100%; max-width: none; }
215
+ .generated-image-slide .generated-image-button, .generated-image-slide .generated-image > .image-thumb { width: 100%; height: 100%; border: 0; border-radius: 0; }
216
+ .generated-image-slide .generated-image-preview { width: 100%; height: 100%; max-height: none; object-fit: contain; }
217
+ .generated-image-controls { display: flex; flex-direction: column; align-items: stretch; position: relative; gap: 8px; height: 0; min-height: 100%; overflow-y: auto; scrollbar-width: thin; }
218
+ .generated-image-thumbnail { flex: none; width: 100%; aspect-ratio: 1; padding: 2px; overflow: hidden; border: 2px solid transparent; border-radius: 7px; background: #151b17; color: #89968e; font-size: 10px; }
219
+ .generated-image-thumbnail[aria-pressed="true"] { border-color: #71d695; }
220
+ .generated-image-thumbnail img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 3px; }
221
+ .process { align-self: stretch; min-width: 0; border: 0; border-radius: 0; background: transparent; }
222
+ .process > summary { display: flex; align-items: center; justify-content: flex-start; gap: 5px; cursor: pointer; padding: 8px 2px; border-bottom: 1px solid #252e28; color: #94a79a; font-size: 12px; font-weight: 650; list-style: none; }
223
+ .process > summary::-webkit-details-marker { display: none; }
224
+ .process > summary[aria-disabled="true"] { cursor:default; pointer-events:none; }
225
+ .disclosure-chevron { display: grid; place-items: center; width: 14px; height: 14px; flex: none; color: #758078; opacity: 0; transform: rotate(0deg); transition: transform .12s ease, opacity .12s ease; }
226
+ .disclosure-chevron svg { display: block; width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
227
+ :is(.process, .activity, .reasoning-history)[open] > summary > .disclosure-chevron { opacity: 1; }
228
+ .process[open] > summary > .disclosure-chevron { transform: rotate(90deg); }
229
+ .activity[open] > summary > .disclosure-chevron { transform: rotate(90deg); }
230
+ .process.running > summary { color: #71d695; }
231
+ .active-process > summary { min-width: 0; overflow: hidden; justify-content: flex-start; border-bottom: 0; color: #818c84; font-weight: 400; white-space: nowrap; }
232
+ .active-process > summary > .activity-title { flex: 0 1 auto; min-width: 0; }
233
+ .active-process > summary > .pulse { flex: 0 0 7px; margin-left: 2px; }
234
+ .active-process[open] > summary { border-bottom: 1px solid #252e28; }
235
+ .settled-process > summary { justify-content: flex-start; border-bottom: 0; color: #969f99; font-weight: 400; }
236
+ .settled-process[open] > summary { border-bottom: 0; }
237
+ .process-body { display: flex; flex-direction: column; gap: 4px; padding: 6px 0 9px; }
238
+ .process-body .settled-process { margin: 1px 0; }
239
+ .process-body .settled-process > summary { padding: 3px 2px; }
240
+ .process-body .settled-process > .process-body { gap: 0; padding: 2px 0 5px 15px; }
241
+ .process-body .message.commentary { max-width: 100%; padding: 2px 0; border: 0; border-radius: 0; background: transparent; color: #c4cec7; }
242
+ .process-body .message.commentary .role { display: none; }
243
+ .process-count { display: none; }
244
+ .turn-duration { align-self: stretch; padding: 9px 2px 8px; border-bottom: 1px solid #252e28; color: #969f99; font-size: 12px; font-weight: 650; }
245
+ .reasoning-history { color: #818c84; font-size: 12px; }
246
+ .reasoning-history > summary { display: flex; align-items: center; gap: 5px; cursor: pointer; padding: 5px 2px; list-style: none; }
247
+ .reasoning-history > summary::-webkit-details-marker { display: none; }
248
+ .reasoning-history[open] > summary > .disclosure-chevron { transform: rotate(90deg); }
249
+ .reasoning-history ol { margin: 3px 0 6px; padding-left: 23px; }
250
+ .reasoning-history li { margin: 5px 0; line-height: 1.45; }
251
+ .live-step { display: flex; align-items: center; gap: 8px; padding: 7px 2px 2px; color: #8f9a92; font-size: 12px; }
252
+ .pulse { width: 7px; height: 7px; border-radius: 50%; background: #52cc7c; animation: pulse 1.2s ease-in-out infinite; }
253
+ @keyframes pulse { 0%, 100% { opacity: .35; transform: scale(.85); } 50% { opacity: 1; transform: scale(1.1); } }
254
+ .attachment { display: inline-block; margin: 8px 6px 0 0; border: 1px solid #43604d; border-radius: 999px; padding: 3px 8px; color: #a8bbad; font-size: 11px; }
255
+ .diff-add { margin-left: 5px; color: #52d883; }
256
+ .diff-remove { margin-left: 3px; color: #ff625d; }
257
+ .queue-panel { display: grid; flex: none; gap: 5px; margin-top: 7px; }
258
+ .queue-panel[hidden] { display: none; }
259
+ .queued-message { display: flex; align-items: center; gap: 8px; min-width: 0; border: 1px solid #343b36; border-radius: 10px; padding: 7px 9px; background: #202421; color: #cbd4ce; font-size: 11px; }
260
+ .queued-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
261
+ .queued-error { color: #ff8c82; }
262
+ .queue-action { flex: none; border: 0; padding: 4px 6px; background: transparent; color: #98a39c; font-size: 10px; }
263
+ .queue-action:hover { color: #e8eee9; background: #303632; }
264
+ .composer { container:composer / inline-size; position: relative; display: grid; flex: none; gap: 2px; margin-top: 8px; padding: 5px 11px; border: 1px solid #354139; border-radius: 15px; background: #181d1a; }
265
+ #draftImages:empty { display:none !important; }
266
+ .pending-settings { display: flex; align-items: center; gap: 5px; color: #9fb2a5; font-size: 11px; line-height: 1.35; }
267
+ .pending-settings[hidden] { display: none; }
268
+ .clear-pending-settings { display: grid; place-items: center; width: 18px; height: 18px; flex: none; border: 0; border-radius: 5px; padding: 0; color: #829087; background: transparent; font-size: 16px; line-height: 1; }
269
+ .clear-pending-settings:hover { color: #e8eee9; background: #303632; }
270
+ textarea { width: 100%; min-height: 62px; resize: none; border: 0; outline: 0; padding: 3px 1px; color: #eef4ef; background: transparent; font-size: 13px; }
271
+ #prompt { width:calc(100% - 40px); height:48px; min-height:48px; overflow-y:auto; font-size:12px; line-height:1.5; }
272
+ .voice-stop-popover { position:absolute; bottom:calc(100% + 6px); left:12px; z-index:20; padding:4px; border:1px solid #465149; border-radius:12px; background:#252d28; box-shadow:0 4px 16px #0003; }
273
+ .voice-stop-popover[hidden] { display:none; }
274
+ #stopVoiceToEdit { min-width:112px; min-height:36px; padding:6px 16px; border:0; border-radius:8px; background:transparent; color:#dce3de; font-size:13px; }
275
+ #stopVoiceToEdit:disabled { opacity:.6; }
276
+ @media (prefers-color-scheme:light) { .voice-stop-popover { background:#f5f7f5; border-color:#d5ddd8; } #stopVoiceToEdit { color:#34443a; } }
277
+ .composer-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
278
+ #actionToast { position:fixed; top:calc(env(safe-area-inset-top, 0px) + 4px); left:50%; transform:translateX(-50%); max-width:calc(100vw - 24px); padding:6px 12px; font-size:12px; line-height:1.4; border-radius:8px; background:#364039; color:#f0f4f1; box-shadow:0 2px 10px #0004; z-index:100; pointer-events:none; }
279
+ .composer-controls { display: flex; align-items: center; gap: 12px; margin-left: auto; }
280
+ .permission-control { position:relative; flex:none; }
281
+ .permission-control[hidden], .permission-menu[hidden], .permission-option[hidden] { display:none; }
282
+ .permission-trigger { display:flex; align-items:center; gap:4px; height:28px; padding:0 6px; border:0; border-radius:7px; color:#aaa; background:transparent; font-size:11px; white-space:nowrap; }
283
+ .permission-trigger .codex-icon { width:14px; height:14px; }
284
+ .permission-trigger.full-access { color:#ef8a43; background:#ef8a4312; }
285
+ .permission-trigger:hover, .permission-trigger[aria-expanded="true"] { background:#ffffff0a; }
286
+ .permission-menu { position:absolute; z-index:21; bottom:calc(100% + 8px); left:0; width:318px; max-width:calc(100vw - 76px); padding:6px; border:1px solid #ffffff14; border-radius:14px; background:#303030; box-shadow:0 12px 28px #0005; }
287
+ .permission-menu-title { padding:4px 6px 7px; color:#aaa; font-size:11px; }
288
+ .permission-option { display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; padding:7px 6px; border:0; border-radius:8px; text-align:left; color:#eee; background:transparent; }
289
+ .permission-option:hover { background:#ffffff0a; }
290
+ .permission-option strong { display:block; font-size:12px; font-weight:600; }
291
+ .permission-option small { display:block; color:#aaa; font-size:11px; }
292
+ .permission-check { visibility:hidden; flex:none; }
293
+ .permission-option[aria-checked="true"] .permission-check { visibility:visible; }
294
+ .permission-option[data-permission="full"], .permission-option[data-permission="full"] small { color:#ef8a43; }
295
+ .model-control { position:relative; min-width: 0; }
296
+ .model-trigger { display: flex; align-items: center; gap: 6px; height: 32px; max-width: 230px; border: 0; padding: 0 7px; border-radius: 8px; color: #dbe3dd; background: transparent; font-size: 12px; }
297
+ .model-trigger[aria-expanded="true"] { background: #252c28; }
298
+ #modelSummary { display:flex; align-items:center; gap:4px; min-width:0; overflow:hidden; white-space:nowrap; }
299
+ #modelSummaryName { min-width:0; overflow:hidden; text-overflow:ellipsis; }
300
+ #modelSummaryEffort { flex:none; }
301
+ .model-fast-indicator { display:flex; flex:none; color:inherit; }
302
+ .model-fast-indicator[hidden] { display:none; }
303
+ .model-fast-indicator .codex-icon { width:14px; height:14px; }
304
+ #modelSummaryEffort { color:#aaa; }
305
+ .codex-icon { display: block; width: 16px; height: 16px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
306
+ .codex-icon.filled { fill: currentColor; stroke: none; }
307
+ .chevron { display: grid; place-items: center; width: 14px; height: 14px; flex: none; color: #8d9a91; }
308
+ .chevron .codex-icon { width: 14px; height: 14px; }
309
+ .context-meter { --context-percent: 0; position: relative; width: 15px; height: 15px; flex: none; border-radius: 50%; background: conic-gradient(#77d99a calc(var(--context-percent) * 1%), #4a554e 0); }
310
+ .context-meter::before { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: #181d1a; }
311
+ .context-meter.warning { background: conic-gradient(#f3bc66 calc(var(--context-percent) * 1%), #364139 0); }
312
+ .context-meter.danger { background: conic-gradient(#ff7d70 calc(var(--context-percent) * 1%), #364139 0); }
313
+ .question-reply + .question-reply { margin-top:12px; }
314
+ .question-history { margin:12px 0; }
315
+ .question-history p { margin:6px 0; }
316
+ .question-history button { margin-top:6px; padding:6px 10px; border:1px solid #8884; border-radius:8px; color:inherit; background:transparent; font-size:12px; }
317
+ .question-form { display:flex; flex-direction:column; margin:12px 0; padding:12px 15px; border:1px solid #8883; border-radius:20px; background:#2d2d2d; }
318
+ .question-header { order:-1; display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; color:#aaa; font-size:12px; }
319
+ .question-form fieldset { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; min-width:0; margin:0; padding:0; border:0; }
320
+ .question-form fieldset[hidden] { display:none; }
321
+ .question-group { display:contents; }
322
+ .question-group > div { grid-column:1/-1; }
323
+ .question-group > div:first-child { font-weight:600; font-size:13px; }
324
+ .question-choices { display:grid; gap:5px; counter-reset:choice; }
325
+ .question-form button { padding:5px 9px; border:1px solid #8884; border-radius:16px; color:inherit; background:transparent; font-size:12px; }
326
+ .question-choices button { display:flex; align-items:center; gap:9px; width:100%; padding:4px 0; border:0; border-radius:8px; text-align:left; counter-increment:choice; }
327
+ .question-choices button::before { content:counter(choice); display:grid; place-items:center; flex:none; width:26px; height:26px; border:1px solid #8884; border-radius:50%; background:#8881; color:#aaa; }
328
+ .question-choices button[aria-pressed="true"] { background:#8882; }
329
+ .question-choices button[aria-pressed="true"]::before { background:#ddd; color:#222; }
330
+ .question-form textarea { grid-column:1/-1; min-height:30px; height:30px; padding:6px 0; border:0; border-radius:0; font-size:13px; }
331
+ .question-group:nth-last-child(2) textarea { grid-column:1; }
332
+ .question-footer { display:flex; align-items:center; gap:8px; }
333
+ .question-form button[type="submit"] { background:#ddd; color:#222; }
334
+ .question-form button:disabled { opacity:.4; }
335
+ .question-header button { border:0; padding:2px 5px; }
336
+ .question-form fieldset:disabled { opacity:.65; }
337
+ @media(prefers-color-scheme:light) { .question-form { background:#f5f5f5; } }
338
+ .question-reply-question { font-size:.9em; opacity:.7; margin-bottom:4px; white-space:pre-wrap; }
339
+ .question-reply-answer { white-space:pre-wrap; overflow-wrap:anywhere; }
340
+ .context-control { position:relative; flex:none; }
341
+ .context-trigger { display:grid; place-items:center; width:26px; height:32px; padding:0; border:0; border-radius:7px; background:transparent; }
342
+ .context-trigger[aria-expanded="true"] { background:#ffffff0a; }
343
+ .context-details { position:absolute; z-index:23; bottom:calc(100% + 8px); left:50%; transform:translateX(-50%); width:220px; max-width:calc(100vw - 24px); padding:10px 12px; border:1px solid #ffffff14; border-radius:10px; color:#ddd; background:#303030; font-size:12px; box-shadow:0 8px 24px #0005; }
344
+ .context-details[hidden] { display:none; }
345
+ .model-menu { --effort-accent:var(--color-chart-blue); position: absolute; z-index: 20; left: 50%; transform:translateX(-50%); bottom: calc(100% + 8px); width: 252px; max-width:calc(100vw - 24px); max-height: 60dvh; overflow-y: auto; border: 1px solid #ffffff14; border-radius: 16px; padding: 7px; background: #2d2d2d; box-shadow: 0 14px 36px #0005; }
346
+ .model-menu[hidden] { display: none; }
347
+ .menu-view[hidden] { display: none; }
348
+ .menu-title { padding: 5px 8px 6px; color: #aab3ad; font-size: 11px; }
349
+ .menu-hint { padding: 6px 8px 3px; color: #818a84; font-size: 10px; }
350
+ .model-option { display: flex; width: 100%; align-items: center; justify-content: space-between; border: 0; border-radius: 8px; padding: 7px 9px; background: transparent; font-size: 12px; text-align: left; }
351
+ .model-option:hover, .model-option.selected { background: #3a3d3b; }
352
+ .model-option small { display: block; margin-top: 1px; color: #8d9690; font-size: 10px; }
353
+ .model-option .check { min-width: 14px; color: #e7eee9; text-align: right; }
354
+ .menu-divider { height: 1px; margin: 6px 5px; background: #414742; }
355
+ .effort-entry { display: flex; width: 100%; align-items: center; justify-content: space-between; border: 0; border-radius: 8px; padding: 8px 9px; color: #cbd3ce; background: transparent; font-size: 11px; }
356
+ .effort-entry:hover { background: #373b38; }
357
+ .effort-entry-value { color: var(--color-chart-blue); }
358
+ .effort-entry-label, .effort-entry-value { display: inline-flex; align-items: center; gap: 6px; }
359
+ .effort-entry-label .codex-icon { width: 14px; height: 14px; color: #9ca59f; }
360
+ .effort-entry-value .codex-icon { width: 12px; height: 12px; }
361
+ .effort-panel { padding: 2px 0 4px; }
362
+ .effort-header { display: grid; grid-template-columns: 28px 1fr 28px; align-items: start; min-height: 49px; }
363
+ .effort-bolt { display: grid; place-items: center; flex:none; width: 28px; height: 28px; padding:0; border:0; border-radius:7px; background:transparent; color: #9ca59f; }
364
+ .effort-bolt:hover { background:#ffffff0a; }
365
+ .effort-bolt[aria-checked="true"] { color:var(--effort-accent); background:transparent; }
366
+ .effort-bolt[aria-checked="true"] .codex-icon { fill:currentColor; }
367
+ .effort-bolt .codex-icon { width: 15px; height: 15px; }
368
+ .effort-heading { justify-self: center; min-width: 70px; border: 0; border-radius: 6px; padding: 3px 8px; text-align: center; color: #aaa; background: transparent; }
369
+ .effort-heading:hover { background: #ffffff0a; }
370
+ .effort-heading strong { display: flex; align-items: center; justify-content: center; gap: 4px; color: var(--effort-accent); font-size: 12px; font-weight: 600; }
371
+ .effort-heading strong .codex-icon { width: 12px; height: 12px; color:#888; }
372
+ .effort-model-name { display: block; margin-top: 2px; font-size: 10px; }
373
+ .effort-track { --effort-progress: 0%; --effort-offset: 20px; --effort-range-offset: 14px; position: relative; height: 32px; margin: 5px 2px 3px; padding: 2px 6px; touch-action: none; user-select: none; cursor: ew-resize; }
374
+ .effort-rail { position: absolute; inset: 4px 6px; height: 24px; overflow: hidden; border:0; border-radius: 12px; background: #ffffff19; }
375
+ .effort-range { position: absolute; inset: 0 auto 0 0; width: calc(var(--effort-progress) + var(--effort-range-offset)); border-radius: 12px 0 0 12px; background: var(--color-chart-blue); }
376
+ .effort-options { position: absolute; inset: 2px 20px; }
377
+ .effort-option { position: absolute; top: 0; width: 28px; height: 28px; border: 0; padding: 0; transform: translateX(-50%); background: transparent; font-size: 0; }
378
+ .effort-option:hover, .effort-option:focus, .effort-option:active, .effort-option.selected { background:transparent; }
379
+ .effort-option:nth-child(1) { left: 0%; }
380
+ .effort-option:nth-child(2) { left: 20%; }
381
+ .effort-option:nth-child(3) { left: 40%; }
382
+ .effort-option:nth-child(4) { left: 60%; }
383
+ .effort-option:nth-child(5) { left: 80%; }
384
+ .effort-option:nth-child(6) { left: 100%; }
385
+ .effort-option::before { content: ""; display: block; width: 4px; height: 4px; margin: auto; border-radius: 50%; background: #7d827f; transition: transform .12s ease, background-color .2s ease; }
386
+ .effort-option.reached::before { background: #ffffff4d; }
387
+ .effort-option:active::before, .effort-option:focus-visible::before { box-shadow:0 0 0 2px #94b6e080; }
388
+ .effort-option:focus { outline:none; }
389
+ @media (hover:hover) and (pointer:fine) { .effort-option:hover::before { box-shadow:0 0 0 2px #94b6e080; } }
390
+ .effort-option:disabled { opacity: .35; }
391
+ .effort-thumb { position: absolute; z-index: 2; top: 2px; left: calc(var(--effort-progress) + var(--effort-offset)); width: 28px; height: 28px; pointer-events: none; transform: translateX(-50%); border:0; border-radius: 50%; background: #fff; }
392
+ .effort-panel.ultra { --effort-accent:var(--color-chart-purple); }
393
+ #modelSummaryEffort.ultra, #effortEntryText.ultra { color:var(--color-chart-purple); }
394
+ .effort-panel.ultra .effort-range { background:linear-gradient(90deg,color-mix(in srgb,var(--color-chart-blue) 60%,var(--color-chart-purple)),var(--color-chart-purple) 55%,color-mix(in srgb,var(--color-chart-purple) 72%,var(--color-chart-blue))); }
395
+ .effort-panel.ultra .effort-range::after { content:""; position:absolute; inset:0; opacity:.18; mix-blend-mode:luminosity; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='128' height='128'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E"); }
396
+ .effort-panel.ultra .effort-option:not(:disabled)::before, .effort-panel.fast .effort-option.reached::before { opacity:0; }
397
+ .setting-select { display: none; }
398
+ .composer-icon-button { flex-shrink: 0; }
399
+ #turnActions[hidden] { display: none; }
400
+ .send-control { position:relative; display:grid; place-items:center; width:26px; height:26px; flex:none; }
401
+ .queue-send-icon { position:absolute; right:0; bottom:calc(100% + 16px); color:#243029; background:#d4ded7; }
402
+ .queue-send-icon[hidden] { display:none; }
403
+ #send { touch-action:manipulation; -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; }
404
+ .composer-icon-button { display: grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: 50%; }
405
+ .composer-add { position:relative; flex:none; }
406
+ .composer-add-menu[hidden], .composer-add-option[hidden] { display:none; }
407
+ #addMenuTrigger { background:transparent; border-radius:0; }
408
+ .composer-add-menu { position:absolute; z-index:24; bottom:calc(100% + 8px); left:0; display:grid; min-width:168px; gap:3px; padding:6px; border:1px solid #465149; border-radius:11px; color:#dce3de; background:#252d28; box-shadow:0 10px 28px #0007; }
409
+ .composer-add-option { display:flex; align-items:center; gap:9px; width:100%; min-height:36px; padding:7px 9px; border:0; border-radius:7px; color:inherit; background:transparent; font-size:12px; text-align:left; white-space:nowrap; }
410
+ .composer-add-option .codex-icon { width:17px; height:17px; }
411
+ .composer-add-option:hover { background:#ffffff10; }
412
+ .composer-add-option:disabled { opacity:.45; }
413
+ .voice-icon { color: #cbd3ce; background: transparent; }
414
+ .voice-icon:hover { background:transparent; }
415
+ .voice-icon .codex-icon { width: 20px; height: 20px; }
416
+ .voice-icon:disabled { cursor: default; color: #8b958f; opacity: .72; }
417
+ .send-icon { width:26px; height:26px; border:1px solid #ffffff8f; color:#111512; background:#f2f5f3; box-shadow:0 2px 8px #0005; transition:transform .12s ease, background-color .12s ease, box-shadow .12s ease; }
418
+ .send-icon .codex-icon { width:20px; height:20px; stroke-width:2.15; }
419
+ .send-icon:hover { background:#fff; box-shadow:0 3px 10px #0006; }
420
+ .send-icon:active { transform:scale(.94); box-shadow:0 1px 4px #0005; }
421
+ .send-icon:disabled { opacity:.46; box-shadow:none; }
422
+ .queue-send-icon:hover { background:#e2e9e4; }
423
+ .image-viewer { max-width: min(94vw, 1200px); max-height: 92vh; padding: 0; border: 0; background: transparent; overflow: visible; }
424
+ .image-viewer::backdrop { background: #000c; backdrop-filter: blur(3px); }
425
+ .image-viewer-shell { position: relative; display: grid; place-items: center; max-width: 94vw; max-height: 92vh; }
426
+ .image-viewer img { display: block; max-width: 94vw; max-height: 92vh; border-radius: 8px; object-fit: contain; box-shadow: 0 18px 60px #000a; }
427
+ .image-viewer-close { position: absolute; top: 10px; right: 10px; width: 34px; height: 34px; padding: 0; border-radius: 50%; border-color: #ffffff55; background: #101311cc; font-size: 20px; line-height: 1; }
428
+ .new-chat-entry { display:flex; flex:none; align-items:center; gap:10px; margin:8px 0; padding:10px 8px; border:0; background:transparent; color:inherit; text-align:left; }
429
+ #newThreadWelcome[hidden], #newThreadProjectBar[hidden], #timeline[hidden], .selected-heading[hidden] { display:none; }
430
+ .new-thread-welcome { flex:1; min-height:0; overflow:auto; display:flex; flex-direction:column; gap:24px; align-items:center; justify-content:center; padding:24px 12px; }
431
+ .new-thread-title { margin:0; font-size:clamp(20px, 2.3vw, 28px); font-weight:500; text-align:center; overflow-wrap:anywhere; }
432
+ #newThreadIcon svg { display:block; width:56px; height:56px; opacity:.3; }
433
+ .new-thread-project { display:flex; align-items:center; gap:24px; margin:0 12px; padding:6px 12px; color:inherit; font-size:12px; background:#1b211d; border-radius:14px 14px 0 0; }
434
+ #newThreadProjectName { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
435
+ #clearNewThreadProject { flex:none; width:24px; height:24px; padding:0; border:0; background:transparent; color:inherit; font-size:18px; }
436
+ #clearNewThreadProject[hidden] { display:none; }
437
+
438
+
439
+ @media (max-width: 760px) {
440
+ header { gap: 8px; padding: 8px 12px; }
441
+ header h1 { font-size: 14px; }
442
+ .sub { font-size: 10px; }
443
+ main { grid-template-columns: 1fr; grid-template-rows: minmax(150px, 34%) minmax(0, 1fr); }
444
+ aside { border-right: 0; border-bottom: 1px solid #2c3830; }
445
+ section { padding: 14px; }
446
+ .scroll-to-bottom { right: 24px; bottom: 114px; }
447
+ }
448
+ body.embedded-client { min-height:0; height:100%; background:#101311; }
449
+ .embedded-client header { display:none; }
450
+ .embedded-client.native-title .selected-heading { display:none; }
451
+ #connectionStatus { flex:none; font-size:12px; color:#42d17b; }
452
+ #connectionStatus.failed { color:#e06c64; }
453
+ .sidebar-brand { display:none; }
454
+ .embedded-client .sidebar-brand { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:1px 8px 3px; font-size:18px; font-weight:600; }
455
+ .embedded-client .new-chat-entry { margin:0; padding:5px 8px; font-size:12px; }
456
+ .embedded-client .toolbar { min-height:20px; margin:0 4px 1px; }
457
+ .embedded-client .project { margin-bottom:1px; }
458
+ .embedded-client .task { margin:0; padding:4px 9px; }
459
+ @media (max-width:760px) {
460
+ .composer-row { min-width:0; }
461
+ .composer-controls { flex:0 1 auto; min-width:0; }
462
+ .model-control { flex:0 1 auto; }
463
+ .model-trigger { width:100%; max-width:100%; min-width:0; gap:3px; padding:0; }
464
+ .model-trigger .chevron { flex-shrink:0; }
465
+ .context-meter { width:14px; height:14px; }
466
+ .model-trigger .chevron, .model-trigger .chevron .codex-icon, .model-fast-indicator .codex-icon { width:12px; height:12px; }
467
+ }
468
+ @container composer (max-width:310px) {
469
+ #permissionLabel { display:none; }
470
+ .permission-trigger { width:26px; padding:0; justify-content:center; }
471
+ }
472
+ .embedded-client .status { margin-left:0; overflow:hidden; }
473
+ .embedded-client #status { overflow:hidden; text-overflow:ellipsis; }
474
+ .embedded-client .project-actions { opacity:1; pointer-events:auto; }
475
+ #connectionSettings, #usageButton, #returnToComputer, #debugMenu, .app-actions { display:none; }
476
+ .embedded-client .app-actions { position:relative; display:flex; align-items:stretch; gap:4px; flex-shrink:0; min-width:0; }
477
+ .embedded-client .app-actions > :is(#returnToComputer:not([hidden]), #debugMenu:not([hidden])) { flex:1 1 0; min-width:0; width:auto; }
478
+ .embedded-client #debugMenu:not([hidden]) { position:static; display:block; }
479
+ #debugMenu > summary { display:flex; align-items:center; gap:9px; height:100%; box-sizing:border-box; padding:5px 8px; color:var(--muted, #94a79a); font-size:12px; cursor:pointer; list-style:none; }
480
+ #debugMenu > summary::-webkit-details-marker { display:none; }
481
+ #debugMenu > summary > span { flex:1; text-align:right; }
482
+ #debugMenu[open] .debug-chevron { transform:rotate(90deg); }
483
+ .debug-menu-items { position:absolute; z-index:30; right:0; bottom:calc(100% + 4px); box-sizing:border-box; width:260px; display:grid; gap:4px; padding:8px; border:1px solid #414a44; border-radius:10px; background:#202522; box-shadow:0 12px 32px #0008; }
484
+ .debug-menu-items > button { width:100%; padding:8px; border:0; background:transparent; text-align:left; }
485
+ #sharedRecoveryConfirm, #sharedRecoveryResult { font-size:12px; line-height:1.5; overflow-wrap:anywhere; color:var(--muted, #94a79a); }
486
+ #sharedRecoveryConfirm button { width:100%; margin-top:6px; text-align:left; }
487
+ .embedded-client aside { display:flex; flex-direction:column; overflow:hidden; padding:2px 8px 6px; font-size:12px; }
488
+ .embedded-client #tasks { flex:1; min-height:0; overflow-y:auto; overflow-anchor:none; }
489
+ .embedded-client :is(#connectionSettings, #usageButton, #archivedThreads:not([hidden]), #returnToComputer:not([hidden])) { display:flex; align-items:center; gap:9px; flex-shrink:0; width:100%; padding:5px 8px; border:0; border-radius:0; background:transparent; color:#9eaca3; text-align:left; font-size:12px; }
490
+ .embedded-client #archivedThreads { margin-top:3px; padding-top:5px; border-top:1px solid #ffffff12; }
491
+ .embedded-client #usageButton { margin-top:0; }
492
+ .embedded-client #archivedThreads[hidden] + #usageButton { margin-top:3px; padding-top:5px; border-top:1px solid #ffffff12; }
493
+ .shared-service-notice { display:none; }
494
+ .embedded-client .shared-service-notice:not([hidden]) { display:grid; grid-template-columns:minmax(0, 1fr) 15px; align-items:center; flex:none; gap:7px; min-width:0; margin:3px 0 2px; padding:8px; border:1px solid #d899494f; border-radius:9px; color:#e5b779; background:#d8994914; cursor:pointer; }
495
+ .embedded-client .shared-service-copy { display:flex; flex-direction:column; min-width:0; gap:2px; }
496
+ .embedded-client .shared-service-notice strong { font-size:12px; line-height:1.35; font-weight:650; white-space:normal; overflow-wrap:anywhere; }
497
+ .embedded-client .shared-service-notice .shared-service-copy > span { color:#c8a77c; font-size:12px; line-height:1.35; white-space:normal; overflow-wrap:anywhere; }
498
+ .embedded-client .shared-service-notice > .codex-icon { width:15px; height:15px; color:#c8a77c; }
499
+ #connectionAddress { min-width:0; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
500
+ .connection-control-mode { font-weight:600; }
501
+ .connection-control-mode.complete { color:#42d17b; }
502
+ .connection-control-mode.basic { color:#dc9b57; }
503
+ .embedded-client :is(#connectionSettings, #usageButton, #archivedThreads, #returnToComputer):hover { color:#e8eee9; }
504
+ #usageButton > span { flex:1; }
505
+ #usageSummary { display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:0; }
506
+ #returnToComputer { margin-top:0; }
507
+ .usage-heading { display:flex; align-items:center; justify-content:space-between; }
508
+ .usage-heading strong { color:inherit; font-size:12px; font-weight:600; }
509
+ .usage-ratio { font-size:12px; font-weight:600; font-variant-numeric:tabular-nums; }
510
+ .usage-summary-ratio { font-weight:600; font-variant-numeric:tabular-nums; }
511
+ .usage-ratio-good { color:#4bb982; }
512
+ .usage-ratio-low { color:#dc9b57; }
513
+ .usage-group { display:grid; gap:5px; }
514
+ .usage-model { color:inherit; font-weight:600; }
515
+ .usage-plan-row { display:grid; grid-template-columns:minmax(0, 1fr) 84px; gap:12px; }
516
+ .usage-plan-row { color:#aeb9b2; font-size:12px; }
517
+ .usage-plan-row > :last-child { text-align:left; }
518
+ #usagePlan { display:flex; align-items:center; justify-content:flex-end; gap:14px; white-space:nowrap; }
519
+ .usage-plan-tier { padding:2px 7px; border:1px solid #8885; border-radius:5px; font-size:11px; }
520
+ .usage-window { display:grid; gap:8px; padding:12px 0; border-top:1px solid #8883; }
521
+ .usage-window > strong { font-size:13px; }
522
+ .usage-timeline { --usage-fill:#4bb982; display:grid; gap:6px; padding:1px 0 2px; color:#aeb9b2; }
523
+ .usage-timeline-ahead { --usage-fill:#dc9b57; }
524
+ .usage-timeline-summary, .usage-timeline-time-summary { display:flex; align-items:center; justify-content:center; min-width:0; text-align:center; font-size:12px; font-variant-numeric:tabular-nums; }
525
+ .usage-timeline-summary > span, .usage-timeline-time-summary > span { display:flex; align-items:center; justify-content:center; gap:5px; }
526
+ .usage-timeline-used::before { width:8px; height:8px; flex:none; border-radius:50%; background:var(--usage-fill); content:""; }
527
+ .usage-timeline-elapsed::before { width:6px; height:6px; flex:none; border:1px solid #202522aa; border-radius:1px; background:currentColor; transform:rotate(45deg); content:""; }
528
+ .usage-percentage { font-weight:600; }
529
+ .usage-timeline-track { position:relative; height:12px; border:1px solid #8885; border-radius:6px; background:#8882; }
530
+ .usage-timeline-fill { position:absolute; inset:0 auto 0 0; min-width:0; border-radius:5px; background:var(--usage-fill); transition:width .2s ease; }
531
+ .usage-timeline-tick { position:absolute; z-index:1; top:0; bottom:0; width:1px; background:#20252266; transform:translateX(-.5px); }
532
+ .usage-timeline-now { position:absolute; z-index:2; top:-5px; bottom:-5px; width:2px; border-radius:1px; background:currentColor; box-shadow:0 0 0 1px #202522aa; transform:translateX(-1px); }
533
+ .usage-timeline-now::before { position:absolute; top:-1px; left:50%; width:6px; height:6px; border:1px solid #202522aa; background:currentColor; transform:translate(-50%, -50%) rotate(45deg); content:""; }
534
+ .usage-timeline-scale { position:relative; height:13px; color:#8f9b94; font-size:9px; font-variant-numeric:tabular-nums; line-height:1; }
535
+ .usage-timeline-scale-label { position:absolute; top:0; white-space:nowrap; transform:translateX(-50%); }
536
+ .usage-timeline-scale-label.is-first { transform:none; }
537
+ .usage-timeline-scale-label.is-last { transform:translateX(-100%); }
538
+ .usage-window-detail { font-size:12px; opacity:.72; line-height:1.5; overflow-wrap:anywhere; }
539
+ .usage-dialog { width:min(430px, calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow-y:auto; border:1px solid #414a44; border-radius:14px; padding:0; color:#e7ede9; background:#202522; box-shadow:0 20px 70px #000b; }
540
+ .usage-dialog::backdrop { background:#0009; backdrop-filter:blur(2px); }
541
+ .usage-dialog-shell { display:grid; gap:14px; padding:16px; }
542
+ .usage-dialog-header { display:flex; align-items:center; justify-content:space-between; }
543
+ .usage-dialog-header h3 { margin:0; font-size:15px; }
544
+ .usage-dialog-close { width:32px; height:32px; padding:0; border:0; background:transparent; font-size:20px; }
545
+ #usageRows { display:grid; gap:9px; min-height:18px; color:#aeb9b2; font-size:12px; }
546
+ @media (prefers-color-scheme:light) {
547
+ .embedded-client :is(#connectionSettings, #usageButton, #archivedThreads, #returnToComputer) { color:#596c60; }
548
+ .embedded-client #archivedThreads { border-top-color:#17212b18; }
549
+ .embedded-client #archivedThreads[hidden] + #usageButton { border-top-color:#17212b18; }
550
+ .embedded-client .shared-service-notice:not([hidden]) { color:#8b5318; background:#d8994914; border-color:#b66b2c45; }
551
+ .embedded-client .shared-service-notice .shared-service-copy > span,
552
+ .embedded-client .shared-service-notice > .codex-icon { color:#76512c; }
553
+ .embedded-client :is(#connectionSettings, #usageButton, #archivedThreads, #returnToComputer):hover { color:#17212b; }
554
+ .composer-add-menu { color:#34443a; background:#f5f7f5; border-color:#d5ddd8; box-shadow:0 10px 28px #17212b24; }
555
+ .file-action-menu { color:#17212b; background:#fff; border-color:#cfd8d2; box-shadow:0 10px 28px #17212b24; }
556
+ .file-action-name { color:#65736a; border-color:#dce3df; }
557
+ .file-action-menu > button:hover { background:#17212b0a; }
558
+ .composer-add-option:hover { background:#17212b0a; }
559
+ .usage-dialog { color:#17212b; background:#f5f7f5; border-color:#cfd8d2; }
560
+ .usage-timeline { color:#596c60; }
561
+ .usage-timeline-tick { background:#f5f7f566; }
562
+ .usage-timeline-now { box-shadow:0 0 0 1px #f5f7f5cc; }
563
+ .usage-timeline-now::before { border-color:#f5f7f5cc; }
564
+ .usage-timeline-elapsed::before { border-color:#f5f7f5cc; }
565
+ .debug-menu-items { color:#17212b; background:#fff; border-color:#cfd8d2; box-shadow:0 12px 32px #17212b24; }
566
+ }
567
+ #sidebarBackdrop { display:none; }
568
+ #wideSidebarToggle, #wideSidebarExpand { display:none; }
569
+ #wideSidebarToggle .codex-icon, #wideSidebarExpand .codex-icon { width:24px; height:24px; stroke-width:1.8; }
570
+ #wideSidebarToggle:hover, #wideSidebarExpand:hover { background:color-mix(in srgb, currentColor 8%, transparent); }
571
+ .embedded-client #voice[aria-pressed="true"] { width:26px; height:26px; margin-inline:3px; color:#ef6868; background:#ef686814; box-shadow:inset 0 0 0 1px #ef686899; }
572
+ .embedded-client #voice[aria-pressed="true"] .codex-icon { width:16px; height:16px; }
573
+ @media (max-width:760px) {
574
+ .embedded-client main { position:relative; display:grid; grid-template-columns:1fr; grid-template-rows:minmax(0,1fr); }
575
+ .embedded-client aside { display:none; position:absolute; inset:0 auto 0 0; width:min(90%,320px); z-index:20; box-shadow:12px 0 30px #0008; }
576
+ .embedded-client.sidebar-open aside { display:flex; }
577
+ .embedded-client.sidebar-open #sidebarBackdrop { display:block; position:absolute; inset:0; z-index:19; background:#0008; border:0; border-radius:0; }
578
+ .embedded-client section { padding:8px 12px; }
579
+ .embedded-client .selected-heading { min-width:0; }
580
+ .embedded-client textarea { font-size:16px; }
581
+ .embedded-client #prompt { font-size:13px; }
582
+ }
583
+ @media (min-width:600px) {
584
+ .embedded-client #wideSidebarToggle { display:grid; place-items:center; flex:none; align-self:center; width:40px; height:40px; padding:8px; border:0; background:transparent; color:inherit; }
585
+ .embedded-client.sidebar-collapsed main { grid-template-columns:minmax(0,1fr); }
586
+ .embedded-client.sidebar-collapsed aside { display:none; }
587
+ .embedded-client.sidebar-collapsed #wideSidebarExpand { display:grid; place-items:center; position:absolute; top:2px; left:8px; width:32px; height:28px; padding:2px; border:0; background:transparent; color:inherit; z-index:9; }
588
+ .embedded-client.sidebar-collapsed .selected-heading { padding-left:36px; }
589
+ .embedded-client section { padding-top:2px; }
590
+ .embedded-client.native-layout .selected-heading { display:flex; }
591
+ .embedded-client.native-layout #selectedTitle { flex:1; }
592
+ .embedded-client main { grid-template-columns: 280px minmax(0, 1fr); grid-template-rows:minmax(0,1fr); }
593
+ .embedded-client aside { display:flex; position:static; width:auto; box-shadow:none; border-right:1px solid #2c3830; border-bottom:0; }
594
+ .embedded-client.sidebar-open #sidebarBackdrop { display:none; }
595
+ }
596
+ @media (prefers-color-scheme: light) {
597
+ :root { color-scheme:light; background:#f5f7fa; color:#17212b; }
598
+ body, body.embedded-client { background:#f5f7fa; }
599
+ aside, .composer, .model-menu, .new-thread-project { background:#fff; border-color:#d5ddd8; color:#17212b; }
600
+ button, select, textarea { color:#17212b; }
601
+ button { background:#eef2ef; border-color:#ccd6ce; }
602
+ button:hover { background:#e2e9e4; }
603
+ textarea, .model-trigger, .voice-icon, .effort-entry, .project-header, .task, .model-option, .queue-action, .project-action { color:#27382e; background:transparent; }
604
+ .model-trigger[aria-expanded="true"], .model-option:hover, .model-option.selected, .task:hover, .project-header:hover, .effort-entry:hover { background:#e8eeea; }
605
+ .task.active { background:#dce8e0; }
606
+ .message.user { background:#dcefe3; border-color:#a4cdb3; }
607
+ .message.commentary, .process-body .message.commentary, .message-body blockquote { color:#44564b; }
608
+ .message-body code, .message-body pre, .message-body .code-block { background:#eaf0ec; border-color:#d2dbd5; }
609
+ .message-body pre code { background:transparent; }
610
+ .message-body .code-block-header, .message-body .code-block-copy { color:#596c60; }
611
+ .message-body .code-block-copy:hover { color:#17212b; background:#17212b0a; }
612
+ .message-body .code-block-copy[data-copy-state="copied"] { color:#17212b; }
613
+ .message-body .code-block code.hljs, .message-body .hljs-variable, .message-body .hljs-params,
614
+ .message-body .hljs-property { color:#24372b; }
615
+ .message-body .hljs-comment, .message-body .hljs-quote { color:#66776c; }
616
+ .message-body .hljs-keyword, .message-body .hljs-selector-tag, .message-body .hljs-literal,
617
+ .message-body .hljs-section, .message-body .hljs-link { color:#7b3fb3; }
618
+ .message-body .hljs-string, .message-body .hljs-doctag, .message-body .hljs-regexp,
619
+ .message-body .hljs-template-tag, .message-body .hljs-template-variable { color:#397947; }
620
+ .message-body .hljs-number, .message-body .hljs-symbol, .message-body .hljs-bullet { color:#a15c1c; }
621
+ .message-body .hljs-title, .message-body .hljs-title.class_, .message-body .hljs-title.function_ { color:#1d64a8; }
622
+ .message-body .hljs-type, .message-body .hljs-built_in, .message-body .hljs-attribute,
623
+ .message-body .hljs-selector-attr, .message-body .hljs-selector-class, .message-body .hljs-selector-pseudo { color:#805d05; }
624
+ .message-body .hljs-meta, .message-body .hljs-meta .hljs-keyword { color:#1f7671; }
625
+ .message-body .hljs-addition { color:#2f7444; background:#78b98a24; }
626
+ .message-body .hljs-deletion { color:#a23d3d; background:#d77a7a24; }
627
+ .message-body a, .process.running > summary { color:#167343; }
628
+ .activity, .activity-icon, .live-step, .reasoning-history, .turn-label, .turn-duration,
629
+ .process > summary, .active-process > summary, .settled-process > summary,
630
+ .toolbar, .refresh-icon, .project-folder, .project-action, .disclosure-chevron,
631
+ .sub, .status, #empty, .pending-settings, .menu-title, .menu-hint, .model-option small, .chevron { color:#596c60; }
632
+ .activity-copy { color:#65766b; }
633
+ .activity-copy:hover { color:#17212b; background:#17212b0a; }
634
+ .activity-copy[data-copy-state="copied"] { color:#167343; }
635
+ .command-shell, .tool-detail { border-color:#d2dbd5; background:#f8faf8; color:#27382e; }
636
+ .command-shell-command, .command-shell-footer, .tool-detail-footer { border-color:#dfe6e1; }
637
+ .command-shell-prompt { color:#167343; }
638
+ .command-shell-output pre, .tool-detail-text { color:#27382e; }
639
+ .command-shell-output pre.empty, .command-shell-footer, .command-shell-status,
640
+ .tool-detail-heading, .tool-detail-fields dt, .tool-detail-footer, .tool-detail .muted { color:#65766b; }
641
+ .tool-detail-text { background:#edf2ef; }
642
+ .tool-detail-section.error { color:#b42318; }
643
+ .process > summary, .turn-duration, .turn-error, header { border-color:#d5ddd8; }
644
+ .turn-error { color:#27382e; }
645
+ .queued-message, .scroll-to-bottom { background:#edf2ef; border-color:#c9d5cd; color:#27382e; }
646
+ .queued-error, .diff-remove { color:#b42318; }
647
+ .diff-add { color:#167343; }
648
+ .send-icon, .send-icon:hover { border-color:#27382e; background:#27382e; color:#fff; box-shadow:0 2px 7px #17212b33; }
649
+ .queue-send-icon, .queue-send-icon:hover { border-color:#91a097; background:#e0e7e2; color:#27382e; }
650
+ .context-meter::before { background:#fff; }
651
+ .context-trigger[aria-expanded="true"] { background:#00000008; }
652
+ .context-details { background:#fff; color:#27382e; border-color:#d5ddd8; }
653
+ .model-option .check { color:#27382e; }
654
+ .menu-divider { background:#d5ddd8; }
655
+ .effort-rail { background:#dce4de; border-color:#a5b3aa; }
656
+ :root { --color-chart-purple:#924ff7; }
657
+ #modelSummaryEffort, .effort-heading { color:#657269; }
658
+ .effort-heading:hover { background:#00000008; }
659
+ .effort-bolt:hover { background:#00000008; }
660
+ .permission-menu { background:#fff; border-color:#d5ddd8; }
661
+ .permission-option { color:#27382e; }
662
+ .permission-trigger, .permission-menu-title, .permission-option small { color:#657269; }
663
+ .permission-option:hover, .permission-trigger:hover, .permission-trigger[aria-expanded="true"] { background:#00000008; }
664
+ .permission-trigger.full-access, .permission-option[data-permission="full"], .permission-option[data-permission="full"] small { color:#bd5b16; }
665
+ .attachment { color:#44564b; border-color:#b7c9be; }
666
+ .image-viewer-close { color:#fff; background:#101311cc; }
667
+ }
668
+
669
+
670
+ #connectionEntry { display:none; }
671
+ body.connection-entry > header, body.connection-entry > main { display:none; }
672
+ body.connection-entry #connectionEntry { display:flex; flex:1; align-items:center; justify-content:center; padding:24px; overflow:auto; }
673
+ .connection-entry-card { width:100%; max-width:420px; }
674
+ .connection-entry-card h1 { font-size:24px; }
675
+ #entryMode { opacity:.65; }
676
+ #entryStatus { white-space:pre-wrap; overflow-wrap:anywhere; }
677
+ .connection-entry-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:24px; }
678
+
679
+ #externalUiOption { align-items:center; justify-content:flex-start; gap:8px; flex-shrink:0; padding:8px; font-size:12px; color:var(--muted, #94a79a); }
680
+ #externalUiOption:not([hidden]) { display:flex; }
681
+ #externalUiOption[data-active-page="builtin"] > span:first-child,
682
+ #externalUiOption[data-active-page="debug"] > span:last-child { color:#73dfa3; font-weight:600; }
683
+ #externalUiToggle { position:relative; width:34px; height:20px; flex:none; margin:0; border:1px solid #6d7971; border-radius:10px; appearance:none; -webkit-appearance:none; background:#303833; transition:background-color .15s, border-color .15s; }
684
+ #externalUiToggle::after { content:""; position:absolute; top:2px; left:2px; width:14px; height:14px; border-radius:50%; background:#d8dfda; transition:transform .15s; }
685
+ #externalUiToggle:checked { border-color:#48c985; background:#2f7650; }
686
+ #externalUiToggle:checked::after { transform:translateX(14px); background:#fff; }
687
+ #externalUiToggle:disabled { opacity:.55; }
688
+
689
+ .model-menu[data-loading="true"] .menu-view { visibility:hidden; }
690
+ .model-menu[data-loading="true"]::before { content:"正在读取模型设置…"; position:absolute; inset:0; display:grid; place-items:center; font-size:13px; color:inherit; }
691
+
692
+ .entry-brand { font-size:12px; letter-spacing:.08em; opacity:.65; }
693
+ .connection-entry-card { padding:24px; border:1px solid #ffffff18; border-radius:20px; background:#ffffff05; }
694
+ .connection-entry-card h1 { margin:10px 0; }
695
+ .entry-steps { display:flex; gap:8px; padding:0; margin:24px 0; list-style:none; }
696
+ .entry-steps[hidden] { display:none; }
697
+ .entry-steps li { flex:1; padding-top:10px; border-top:3px solid #7e898544; font-size:11px; opacity:.5; }
698
+ .entry-steps li[data-state="current"] { border-color:#55bf8b; opacity:1; }
699
+ .entry-steps li[data-state="done"] { border-color:#55bf8b; opacity:.7; }
700
+ .entry-progress { display:flex; align-items:flex-start; gap:12px; margin-top:24px; min-height:94px; }
701
+ .entry-indicator { flex:none; width:18px; height:18px; margin-top:3px; border:2px solid #7e898544; border-top-color:#55bf8b; border-radius:50%; animation:entry-spin 1s linear infinite; }
702
+ #entryStatus { margin:0 0 8px; font-size:16px; font-weight:600; }
703
+ #entryDetail { margin:0; font-size:13px; line-height:1.7; opacity:.7; overflow-wrap:anywhere; }
704
+ .entry-progress[data-state="error"] .entry-indicator { animation:none; border-color:#e58a78; }
705
+ .connection-entry-actions button { min-height:42px; }
706
+ .diagnostic-overview { font-size:17px; font-weight:600; margin-bottom:0; }
707
+ .diagnostic-hint { opacity:.7; line-height:1.6; }
708
+ .usage-dialog details summary { cursor:pointer; padding:10px 0; }
709
+ @keyframes entry-spin { to { transform:rotate(360deg); } }
710
+ @media(prefers-reduced-motion:reduce) { .entry-indicator { animation:none; } }
711
+ @media(prefers-color-scheme:light) { .connection-entry-card { background:#fff; border-color:#d5ddd8; } }
712
+
713
+ .approval-panel { flex: 0 1 auto; min-height: 0; max-height: 42vh; overflow-y: auto; padding: 8px 12px; border-top: 1px solid #45564b; }
714
+ .approval-panel[hidden] { display: none; }
715
+ .approval-card { padding: 10px; border: 1px solid #8883; border-radius: 10px; background: transparent; margin-bottom: 6px; }
716
+ .approval-card p { margin: 6px 0; font-size: 12px; }
717
+ .approval-meta { color:var(--muted, #94a79a); overflow-wrap:anywhere; }
718
+ .approval-card strong { display:block; font-size:14px; font-weight:600; overflow-wrap:anywhere; }
719
+ .approval-card .approval-kind { margin:0 0 4px; opacity:.7; font-size:11px; }
720
+ .approval-body { min-width:0; overflow-wrap:anywhere; }
721
+ .approval-scope-option { width:100%; padding:6px 0; border-top:1px solid #63774b55; }
722
+ .approval-scope-option p { white-space:pre-wrap; overflow-wrap:anywhere; }
723
+ .approval-card pre { margin: 6px 0; white-space: pre-wrap; overflow-wrap: anywhere; font: 12px/1.5 monospace; max-height: 18vh; overflow-y: auto; }
724
+ .approval-details { width: 100%; min-width: 0; margin: 6px 0; }
725
+ .approval-details summary { cursor: pointer; font-size: 12px; }
726
+ .approval-details-title::after { content: ' · 展开'; opacity: .7; }
727
+ .approval-details[open] .approval-details-title::after { content: ' · 收起'; }
728
+ .approval-preview { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; white-space: pre-wrap; overflow-wrap: anywhere; font: 12px/1.5 monospace; margin-top: 4px; }
729
+ .approval-details[open] .approval-preview { display: none; }
730
+ .approval-card form { display: flex; flex-wrap: wrap; gap: 8px; }
731
+ .approval-card label, .approval-card form pre { width: 100%; }
732
+ .approval-card input { display: block; width: 100%; }
733
+ .approval-card button { min-height: 32px; padding: 5px 9px; border: 1px solid #8884; border-radius: 6px; background: transparent; color: inherit; font-size: 12px; }
734
+ .approval-card button:hover:not(:disabled) { background: #8881; border-color: #8887; }
735
+ .approval-actions { display: flex; flex-wrap: nowrap; gap: 6px; width: 100%; overflow-x: auto; padding: 3px 0; }
736
+ .approval-actions button { flex: 0 0 auto; white-space: nowrap; }