dsh-cliworker-now 0.0.0-stage → 0.7.7

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 (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +364 -0
  3. package/README.md +368 -2
  4. package/cordis.patch.yml +3 -0
  5. package/lib/account-models.mjs +262 -0
  6. package/lib/client.js +22139 -0
  7. package/lib/client.js.map +1 -0
  8. package/lib/grok-catalog.mjs +145 -0
  9. package/lib/hermes-native-entry.py +96 -0
  10. package/lib/hermes-nous-refresh.py +331 -0
  11. package/lib/index.js +14544 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/native-launch.mjs +234 -0
  14. package/lib/native-spawn.mjs +32 -0
  15. package/lib/own-account-lease.mjs +105 -0
  16. package/lib/pi-installation.mjs +87 -0
  17. package/lib/pi-login.mjs +80 -0
  18. package/lib/pi-native-catalog.mjs +417 -0
  19. package/lib/pi-omp-bridge.mjs +602 -0
  20. package/lib/pi-omp-environment.mjs +15 -0
  21. package/lib/pi-omp-refresh.mjs +324 -0
  22. package/lib/private-launch.mjs +23 -0
  23. package/lib/terminal-bridge.mjs +18 -0
  24. package/lib/typert.host.d.ts +3 -0
  25. package/lib/typert.host.js +1430 -0
  26. package/lib/typert.remote-client.d.ts +72 -0
  27. package/lib/typert.remote-client.d.ts.map +1 -0
  28. package/lib/typert.remote-client.js +1256 -0
  29. package/lib/types/client/account-query-queue.d.ts +16 -0
  30. package/lib/types/client/account-query-queue.js +61 -0
  31. package/lib/types/client/account-query-queue.js.map +1 -0
  32. package/lib/types/client/account-terminal-css.d.ts +1 -0
  33. package/lib/types/client/account-terminal-css.js +3 -0
  34. package/lib/types/client/account-terminal-css.js.map +1 -0
  35. package/lib/types/client/account-terminal.d.ts +17 -0
  36. package/lib/types/client/account-terminal.js +525 -0
  37. package/lib/types/client/account-terminal.js.map +1 -0
  38. package/lib/types/client/assets/antigravity.png +0 -0
  39. package/lib/types/client/assets/claude-code.png +0 -0
  40. package/lib/types/client/assets/cliworker-now-logo.png +0 -0
  41. package/lib/types/client/assets/codex.png +0 -0
  42. package/lib/types/client/assets/grok.png +0 -0
  43. package/lib/types/client/assets/hermes.png +0 -0
  44. package/lib/types/client/assets/kimi-dark.png +0 -0
  45. package/lib/types/client/assets/kimi-light.png +0 -0
  46. package/lib/types/client/assets/mimo-code.png +0 -0
  47. package/lib/types/client/assets/omp.png +0 -0
  48. package/lib/types/client/assets/opencode.png +0 -0
  49. package/lib/types/client/assets/pi.png +0 -0
  50. package/lib/types/client/assets/zcode.png +0 -0
  51. package/lib/types/client/composer-keymap.d.ts +18 -0
  52. package/lib/types/client/composer-keymap.js +49 -0
  53. package/lib/types/client/composer-keymap.js.map +1 -0
  54. package/lib/types/client/conversation-timeline.d.ts +6 -0
  55. package/lib/types/client/conversation-timeline.js +65 -0
  56. package/lib/types/client/conversation-timeline.js.map +1 -0
  57. package/lib/types/client/copy-text.d.ts +5 -0
  58. package/lib/types/client/copy-text.js +45 -0
  59. package/lib/types/client/copy-text.js.map +1 -0
  60. package/lib/types/client/icons.d.ts +21 -0
  61. package/lib/types/client/icons.js +68 -0
  62. package/lib/types/client/icons.js.map +1 -0
  63. package/lib/types/client/index.d.ts +3 -0
  64. package/lib/types/client/index.js +124 -0
  65. package/lib/types/client/index.js.map +1 -0
  66. package/lib/types/client/management-styles.d.ts +1 -0
  67. package/lib/types/client/management-styles.js +17 -0
  68. package/lib/types/client/management-styles.js.map +1 -0
  69. package/lib/types/client/name-copy.d.ts +5 -0
  70. package/lib/types/client/name-copy.js +107 -0
  71. package/lib/types/client/name-copy.js.map +1 -0
  72. package/lib/types/client/native-job-overlay.d.ts +11 -0
  73. package/lib/types/client/native-job-overlay.js +129 -0
  74. package/lib/types/client/native-job-overlay.js.map +1 -0
  75. package/lib/types/client/operation-error.d.ts +2 -0
  76. package/lib/types/client/operation-error.js +12 -0
  77. package/lib/types/client/operation-error.js.map +1 -0
  78. package/lib/types/client/panel.d.ts +8 -0
  79. package/lib/types/client/panel.js +310 -0
  80. package/lib/types/client/panel.js.map +1 -0
  81. package/lib/types/client/rename-copy-styles.d.ts +1 -0
  82. package/lib/types/client/rename-copy-styles.js +21 -0
  83. package/lib/types/client/rename-copy-styles.js.map +1 -0
  84. package/lib/types/client/rename-worker.d.ts +9 -0
  85. package/lib/types/client/rename-worker.js +53 -0
  86. package/lib/types/client/rename-worker.js.map +1 -0
  87. package/lib/types/client/role-presets.d.ts +6 -0
  88. package/lib/types/client/role-presets.js +111 -0
  89. package/lib/types/client/role-presets.js.map +1 -0
  90. package/lib/types/client/settings-dialog.d.ts +13 -0
  91. package/lib/types/client/settings-dialog.js +442 -0
  92. package/lib/types/client/settings-dialog.js.map +1 -0
  93. package/lib/types/client/stat-popover.d.ts +10 -0
  94. package/lib/types/client/stat-popover.js +32 -0
  95. package/lib/types/client/stat-popover.js.map +1 -0
  96. package/lib/types/client/styles.d.ts +9 -0
  97. package/lib/types/client/styles.js +221 -0
  98. package/lib/types/client/styles.js.map +1 -0
  99. package/lib/types/client/telemetry.d.ts +11 -0
  100. package/lib/types/client/telemetry.js +24 -0
  101. package/lib/types/client/telemetry.js.map +1 -0
  102. package/lib/types/client/worker-card.d.ts +10 -0
  103. package/lib/types/client/worker-card.js +75 -0
  104. package/lib/types/client/worker-card.js.map +1 -0
  105. package/lib/types/client/worker-model-menu.d.ts +9 -0
  106. package/lib/types/client/worker-model-menu.js +136 -0
  107. package/lib/types/client/worker-model-menu.js.map +1 -0
  108. package/lib/types/client/workers.d.ts +21 -0
  109. package/lib/types/client/workers.js +59 -0
  110. package/lib/types/client/workers.js.map +1 -0
  111. package/lib/types/client/zcode-login-link-provider.d.ts +9 -0
  112. package/lib/types/client/zcode-login-link-provider.js +105 -0
  113. package/lib/types/client/zcode-login-link-provider.js.map +1 -0
  114. package/lib/types/client/zcode-login-link.d.ts +16 -0
  115. package/lib/types/client/zcode-login-link.js +194 -0
  116. package/lib/types/client/zcode-login-link.js.map +1 -0
  117. package/lib/types/host/account-identity.d.ts +16 -0
  118. package/lib/types/host/account-identity.js +126 -0
  119. package/lib/types/host/account-identity.js.map +1 -0
  120. package/lib/types/host/account-login.d.ts +10 -0
  121. package/lib/types/host/account-login.js +126 -0
  122. package/lib/types/host/account-login.js.map +1 -0
  123. package/lib/types/host/account-models.d.mts +21 -0
  124. package/lib/types/host/account-models.mjs +262 -0
  125. package/lib/types/host/accounts.d.ts +42 -0
  126. package/lib/types/host/accounts.js +945 -0
  127. package/lib/types/host/accounts.js.map +1 -0
  128. package/lib/types/host/adapters.d.ts +24 -0
  129. package/lib/types/host/adapters.js +380 -0
  130. package/lib/types/host/adapters.js.map +1 -0
  131. package/lib/types/host/agy-context.d.ts +8 -0
  132. package/lib/types/host/agy-context.js +122 -0
  133. package/lib/types/host/agy-context.js.map +1 -0
  134. package/lib/types/host/agy-models.d.ts +5 -0
  135. package/lib/types/host/agy-models.js +37 -0
  136. package/lib/types/host/agy-models.js.map +1 -0
  137. package/lib/types/host/agy-windows-account.d.ts +14 -0
  138. package/lib/types/host/agy-windows-account.js +104 -0
  139. package/lib/types/host/agy-windows-account.js.map +1 -0
  140. package/lib/types/host/authorized-catalog.d.ts +14 -0
  141. package/lib/types/host/authorized-catalog.js +35 -0
  142. package/lib/types/host/authorized-catalog.js.map +1 -0
  143. package/lib/types/host/bridge-protocol.d.ts +15 -0
  144. package/lib/types/host/bridge-protocol.js +80 -0
  145. package/lib/types/host/bridge-protocol.js.map +1 -0
  146. package/lib/types/host/claude-native-oauth.d.ts +17 -0
  147. package/lib/types/host/claude-native-oauth.js +272 -0
  148. package/lib/types/host/claude-native-oauth.js.map +1 -0
  149. package/lib/types/host/claude-own-route.d.ts +33 -0
  150. package/lib/types/host/claude-own-route.js +250 -0
  151. package/lib/types/host/claude-own-route.js.map +1 -0
  152. package/lib/types/host/cli-account-binding.d.ts +33 -0
  153. package/lib/types/host/cli-account-binding.js +540 -0
  154. package/lib/types/host/cli-account-binding.js.map +1 -0
  155. package/lib/types/host/cli-protocol.d.ts +27 -0
  156. package/lib/types/host/cli-protocol.js +212 -0
  157. package/lib/types/host/cli-protocol.js.map +1 -0
  158. package/lib/types/host/codex-account.d.ts +8 -0
  159. package/lib/types/host/codex-account.js +143 -0
  160. package/lib/types/host/codex-account.js.map +1 -0
  161. package/lib/types/host/codex-models.d.ts +6 -0
  162. package/lib/types/host/codex-models.js +169 -0
  163. package/lib/types/host/codex-models.js.map +1 -0
  164. package/lib/types/host/extended-adapters.d.ts +44 -0
  165. package/lib/types/host/extended-adapters.js +207 -0
  166. package/lib/types/host/extended-adapters.js.map +1 -0
  167. package/lib/types/host/first-party-account-context.d.ts +26 -0
  168. package/lib/types/host/first-party-account-context.js +55 -0
  169. package/lib/types/host/first-party-account-context.js.map +1 -0
  170. package/lib/types/host/first-party-models.d.ts +29 -0
  171. package/lib/types/host/first-party-models.js +459 -0
  172. package/lib/types/host/first-party-models.js.map +1 -0
  173. package/lib/types/host/grok-adapter.d.ts +44 -0
  174. package/lib/types/host/grok-adapter.js +293 -0
  175. package/lib/types/host/grok-adapter.js.map +1 -0
  176. package/lib/types/host/grok-models.d.ts +47 -0
  177. package/lib/types/host/grok-models.js +320 -0
  178. package/lib/types/host/grok-models.js.map +1 -0
  179. package/lib/types/host/harness-opencode-accounts.d.ts +17 -0
  180. package/lib/types/host/harness-opencode-accounts.js +80 -0
  181. package/lib/types/host/harness-opencode-accounts.js.map +1 -0
  182. package/lib/types/host/hermes-account-context.d.ts +8 -0
  183. package/lib/types/host/hermes-account-context.js +99 -0
  184. package/lib/types/host/hermes-account-context.js.map +1 -0
  185. package/lib/types/host/hermes-accounts.d.ts +19 -0
  186. package/lib/types/host/hermes-accounts.js +356 -0
  187. package/lib/types/host/hermes-accounts.js.map +1 -0
  188. package/lib/types/host/hermes-adapter.d.ts +93 -0
  189. package/lib/types/host/hermes-adapter.js +455 -0
  190. package/lib/types/host/hermes-adapter.js.map +1 -0
  191. package/lib/types/host/hermes-env.d.ts +4 -0
  192. package/lib/types/host/hermes-env.js +22 -0
  193. package/lib/types/host/hermes-env.js.map +1 -0
  194. package/lib/types/host/hermes-installation.d.ts +10 -0
  195. package/lib/types/host/hermes-installation.js +181 -0
  196. package/lib/types/host/hermes-installation.js.map +1 -0
  197. package/lib/types/host/hermes-models.d.ts +26 -0
  198. package/lib/types/host/hermes-models.js +328 -0
  199. package/lib/types/host/hermes-models.js.map +1 -0
  200. package/lib/types/host/hermes-native-entry.py +96 -0
  201. package/lib/types/host/hermes-nous-refresh.py +331 -0
  202. package/lib/types/host/hermes-nous.d.ts +53 -0
  203. package/lib/types/host/hermes-nous.js +343 -0
  204. package/lib/types/host/hermes-nous.js.map +1 -0
  205. package/lib/types/host/hermes-renewal.d.ts +27 -0
  206. package/lib/types/host/hermes-renewal.js +292 -0
  207. package/lib/types/host/hermes-renewal.js.map +1 -0
  208. package/lib/types/host/hermes-suppression.d.ts +7 -0
  209. package/lib/types/host/hermes-suppression.js +69 -0
  210. package/lib/types/host/hermes-suppression.js.map +1 -0
  211. package/lib/types/host/hermes-windows-installation.d.ts +5 -0
  212. package/lib/types/host/hermes-windows-installation.js +91 -0
  213. package/lib/types/host/hermes-windows-installation.js.map +1 -0
  214. package/lib/types/host/index.d.ts +140 -0
  215. package/lib/types/host/index.js +947 -0
  216. package/lib/types/host/index.js.map +1 -0
  217. package/lib/types/host/kimi-accounts.d.ts +17 -0
  218. package/lib/types/host/kimi-accounts.js +220 -0
  219. package/lib/types/host/kimi-accounts.js.map +1 -0
  220. package/lib/types/host/kimi-oauth-models.d.ts +14 -0
  221. package/lib/types/host/kimi-oauth-models.js +246 -0
  222. package/lib/types/host/kimi-oauth-models.js.map +1 -0
  223. package/lib/types/host/managed-agent.d.ts +4 -0
  224. package/lib/types/host/managed-agent.js +127 -0
  225. package/lib/types/host/managed-agent.js.map +1 -0
  226. package/lib/types/host/mimo-configuration.d.ts +22 -0
  227. package/lib/types/host/mimo-configuration.js +258 -0
  228. package/lib/types/host/mimo-configuration.js.map +1 -0
  229. package/lib/types/host/mimo-metadata-cache.d.ts +22 -0
  230. package/lib/types/host/mimo-metadata-cache.js +121 -0
  231. package/lib/types/host/mimo-metadata-cache.js.map +1 -0
  232. package/lib/types/host/native-capability-cache.d.ts +11 -0
  233. package/lib/types/host/native-capability-cache.js +94 -0
  234. package/lib/types/host/native-capability-cache.js.map +1 -0
  235. package/lib/types/host/native-launch.d.mts +2 -0
  236. package/lib/types/host/native-launch.mjs +234 -0
  237. package/lib/types/host/native-process.d.ts +5 -0
  238. package/lib/types/host/native-process.js +41 -0
  239. package/lib/types/host/native-process.js.map +1 -0
  240. package/lib/types/host/native-spawn.mjs +32 -0
  241. package/lib/types/host/opencode-adapter.d.ts +94 -0
  242. package/lib/types/host/opencode-adapter.js +507 -0
  243. package/lib/types/host/opencode-adapter.js.map +1 -0
  244. package/lib/types/host/opencode-native.d.ts +27 -0
  245. package/lib/types/host/opencode-native.js +403 -0
  246. package/lib/types/host/opencode-native.js.map +1 -0
  247. package/lib/types/host/own-account-lease.d.mts +5 -0
  248. package/lib/types/host/own-account-lease.mjs +105 -0
  249. package/lib/types/host/pi-installation.d.mts +7 -0
  250. package/lib/types/host/pi-installation.mjs +87 -0
  251. package/lib/types/host/pi-omp-accounts.d.ts +28 -0
  252. package/lib/types/host/pi-omp-accounts.js +175 -0
  253. package/lib/types/host/pi-omp-accounts.js.map +1 -0
  254. package/lib/types/host/pi-omp-adapter.d.ts +32 -0
  255. package/lib/types/host/pi-omp-adapter.js +190 -0
  256. package/lib/types/host/pi-omp-adapter.js.map +1 -0
  257. package/lib/types/host/pi-omp-environment.d.mts +1 -0
  258. package/lib/types/host/pi-omp-environment.mjs +15 -0
  259. package/lib/types/host/pi-omp-identity.d.ts +2 -0
  260. package/lib/types/host/pi-omp-identity.js +142 -0
  261. package/lib/types/host/pi-omp-identity.js.map +1 -0
  262. package/lib/types/host/pi-omp-logout.d.ts +3 -0
  263. package/lib/types/host/pi-omp-logout.js +152 -0
  264. package/lib/types/host/pi-omp-logout.js.map +1 -0
  265. package/lib/types/host/pi-omp-native.d.ts +71 -0
  266. package/lib/types/host/pi-omp-native.js +753 -0
  267. package/lib/types/host/pi-omp-native.js.map +1 -0
  268. package/lib/types/host/pi-omp-refresh.d.mts +7 -0
  269. package/lib/types/host/pi-omp-refresh.mjs +324 -0
  270. package/lib/types/host/private-launch.mjs +23 -0
  271. package/lib/types/host/process.d.ts +43 -0
  272. package/lib/types/host/process.js +134 -0
  273. package/lib/types/host/process.js.map +1 -0
  274. package/lib/types/host/protocol.d.ts +23 -0
  275. package/lib/types/host/protocol.js +112 -0
  276. package/lib/types/host/protocol.js.map +1 -0
  277. package/lib/types/host/roles.d.ts +34 -0
  278. package/lib/types/host/roles.js +80 -0
  279. package/lib/types/host/roles.js.map +1 -0
  280. package/lib/types/host/routing.d.ts +31 -0
  281. package/lib/types/host/routing.js +248 -0
  282. package/lib/types/host/routing.js.map +1 -0
  283. package/lib/types/host/runtime.d.ts +60 -0
  284. package/lib/types/host/runtime.js +598 -0
  285. package/lib/types/host/runtime.js.map +1 -0
  286. package/lib/types/host/storage.d.ts +48 -0
  287. package/lib/types/host/storage.js +449 -0
  288. package/lib/types/host/storage.js.map +1 -0
  289. package/lib/types/host/telemetry.d.ts +17 -0
  290. package/lib/types/host/telemetry.js +158 -0
  291. package/lib/types/host/telemetry.js.map +1 -0
  292. package/lib/types/host/windows-account-bootstrap.ps1 +44 -0
  293. package/lib/types/host/windows-account-launch.mjs +47 -0
  294. package/lib/types/host/windows-account-owner.ps1 +137 -0
  295. package/lib/types/host/windows-account-stdio.mjs +19 -0
  296. package/lib/types/host/windows-account-terminal.d.ts +17 -0
  297. package/lib/types/host/windows-account-terminal.js +208 -0
  298. package/lib/types/host/windows-account-terminal.js.map +1 -0
  299. package/lib/types/host/windows-agy-account.ps1 +81 -0
  300. package/lib/types/host/windows-cli-installation.d.ts +31 -0
  301. package/lib/types/host/windows-cli-installation.js +157 -0
  302. package/lib/types/host/windows-cli-installation.js.map +1 -0
  303. package/lib/types/host/windows-hidden-launch.mjs +49 -0
  304. package/lib/types/host/windows-hidden-process.d.ts +12 -0
  305. package/lib/types/host/windows-hidden-process.js +116 -0
  306. package/lib/types/host/windows-hidden-process.js.map +1 -0
  307. package/lib/types/host/zcode-account-models.d.ts +16 -0
  308. package/lib/types/host/zcode-account-models.js +114 -0
  309. package/lib/types/host/zcode-account-models.js.map +1 -0
  310. package/lib/types/host/zcode-adapter.d.ts +93 -0
  311. package/lib/types/host/zcode-adapter.js +808 -0
  312. package/lib/types/host/zcode-adapter.js.map +1 -0
  313. package/lib/types/host/zcode-grok-accounts.d.ts +30 -0
  314. package/lib/types/host/zcode-grok-accounts.js +408 -0
  315. package/lib/types/host/zcode-grok-accounts.js.map +1 -0
  316. package/lib/types/shared/accounts.d.ts +47 -0
  317. package/lib/types/shared/accounts.js +2 -0
  318. package/lib/types/shared/accounts.js.map +1 -0
  319. package/lib/types/shared/builtin-presets.d.ts +2 -0
  320. package/lib/types/shared/builtin-presets.js +231 -0
  321. package/lib/types/shared/builtin-presets.js.map +1 -0
  322. package/lib/types/shared/cli-settings.d.ts +5 -0
  323. package/lib/types/shared/cli-settings.js +2 -0
  324. package/lib/types/shared/cli-settings.js.map +1 -0
  325. package/lib/types/shared/model-presentation.d.ts +10 -0
  326. package/lib/types/shared/model-presentation.js +95 -0
  327. package/lib/types/shared/model-presentation.js.map +1 -0
  328. package/lib/types/shared/models.d.ts +7 -0
  329. package/lib/types/shared/models.js +35 -0
  330. package/lib/types/shared/models.js.map +1 -0
  331. package/lib/types/shared/telemetry.d.ts +18 -0
  332. package/lib/types/shared/telemetry.js +16 -0
  333. package/lib/types/shared/telemetry.js.map +1 -0
  334. package/lib/types/shared/types.d.ts +127 -0
  335. package/lib/types/shared/types.js +147 -0
  336. package/lib/types/shared/types.js.map +1 -0
  337. package/lib/windows-account-bootstrap.ps1 +44 -0
  338. package/lib/windows-account-launch.mjs +47 -0
  339. package/lib/windows-account-owner.ps1 +137 -0
  340. package/lib/windows-account-stdio.mjs +19 -0
  341. package/lib/windows-agy-account.ps1 +81 -0
  342. package/lib/windows-hidden-launch.mjs +49 -0
  343. package/lib/zcode-resume.mjs +423 -0
  344. package/package.json +109 -4
@@ -0,0 +1,9 @@
1
+ export declare const styles = "\n.cwn,.cwn-settings-dialog,.cwn-rename-dialog{--cwn-control-height:36px}\n.cwn-control-input{height:var(--cwn-control-height,36px)}\n.cwn{position:relative;--cwn-accent:var(--dsw-alias-state-business-primary);--cwn-muted:var(--dsw-alias-label-tertiary);--cwn-border:var(--dsw-alias-border-l3);display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;color:var(--dsw-alias-label-primary);font-family:inherit;font-size:var(--dsw-font-s-14-font-size);line-height:var(--dsw-font-s-14-line-height);container-type:inline-size}\n.cwn *{box-sizing:border-box}.cwn svg{flex-shrink:0}.cwn select,.cwn textarea{font-family:inherit}.cwn-worker,.cwn-cli-heading{font:inherit}.cwn button{cursor:pointer}.cwn button:disabled{cursor:default;opacity:.45}.cwn button:focus-visible,.cwn summary:focus-visible,.cwn input:focus-visible,.cwn textarea:focus-visible,.cwn select:focus-visible{outline:2px solid var(--cwn-accent);outline-offset:2px}\n.cwn-brand{display:inline-flex;position:relative;flex-shrink:0;vertical-align:middle}.cwn-brand img{display:block;width:100%;height:100%;object-fit:contain}.cwn-brand .cwn-icon-dark{display:none}body[data-ds-dark-theme] .cwn-brand .cwn-icon-mono{filter:invert(1)}body[data-ds-dark-theme] .cwn-brand .cwn-icon-light{display:none}body[data-ds-dark-theme] .cwn-brand .cwn-icon-dark{display:block}\n.cwn-project-logo{display:block;position:relative;width:100%;height:100%;mask-size:contain;mask-position:center;mask-repeat:no-repeat;mask-mode:alpha;-webkit-mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat}.cwn-project-logo.monochrome{background:#000}body[data-ds-dark-theme] .cwn-project-logo.monochrome{background:#fff}\n.cwn-head{display:flex;align-items:center;gap:9px;min-height:56px;padding:10px 16px;flex-shrink:0}.cwn-head h2{flex:1;min-width:0;font-size:var(--dsw-font-s-14-font-size);line-height:var(--dsw-font-s-14-line-height);font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cwn-back{width:28px!important;padding:0!important;flex-shrink:0}.cwn-settings-button{width:36px!important;padding:0!important;flex-shrink:0;align-self:center}.cwn-settings-button svg{display:block}.cwn-back{border-radius:var(--dsw-radius-md)!important;background:var(--dsw-alias-interactive-bg-hover)!important}\n.cwn-wordmark{display:flex;align-items:center;gap:6px;min-width:0;flex:1;height:36px}.cwn-wordmark h2{display:flex;align-items:center;gap:10px;overflow:visible!important;font-family:var(--dsw-font-family);font-size:21px!important;line-height:28px!important;font-weight:500;letter-spacing:normal}.cwn-wordmark h2 small{display:inline-flex;align-items:center;justify-content:center;height:18px;padding:0 5px;border-radius:3px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-2);font-size:10px;line-height:14px;font-weight:600;letter-spacing:.08em}.cwn-overview{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding-top:4px}.cwn-overview-controls{flex:none;min-width:0;padding:0 14px}.cwn-overview-list{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:8px 14px 20px}.cwn-search{width:100%}\n\n.cwn-filters{display:flex;gap:6px;margin:10px 0 14px}.cwn-filters button{flex:1;min-width:0;padding:0 7px;background:var(--dsw-alias-interactive-bg-hover)!important}.cwn-filters button[aria-pressed=true]{color:var(--cwn-accent)!important;border-color:var(--cwn-border)!important;background:color-mix(in srgb,var(--cwn-accent) 10%,transparent)!important}\n.cwn-cli-group{border:0;border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-base);margin:0 0 12px;overflow:hidden}.cwn-cli-heading{display:flex;align-items:center;gap:9px;width:100%;min-height:45px;padding:10px 12px;border:0;background:transparent;color:inherit;text-align:left}.cwn-cli-heading strong{font-size:var(--dsw-font-s-14-font-size);font-weight:600;flex:1;min-width:0}.cwn-cli-heading>span:not(.cwn-brand){font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);white-space:nowrap}.cwn-cli-heading>svg{width:12px;height:12px;color:var(--cwn-muted);transform:rotate(90deg);transition:transform var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease)}.cwn-cli-heading[aria-expanded=false]>svg{transform:none}.cwn-cli-heading[aria-expanded=true]{border-bottom:.5px solid var(--dsw-alias-border-l2)}\n.cwn-cli-rows{display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease),opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease),visibility var(--ds-transition-duration,.2s)}.cwn-cli-rows[data-expanded=false]{grid-template-rows:0fr;opacity:0;visibility:hidden}.cwn-cli-rows-inner{min-height:0;overflow:hidden}\n@media(prefers-reduced-motion:reduce){.cwn-cli-rows,.cwn-cli-heading>svg,.cwn-cli-heading:after{transition:none!important}}\n.cwn-worker{display:flex;width:100%;align-items:center;gap:10px;padding:12px;background:transparent;color:inherit;border:0;text-align:left;min-height:62px;position:relative}.cwn-worker+.cwn-worker:before{content:'';position:absolute;left:12px;right:12px;top:0;height:.5px;background:var(--dsw-alias-border-l2)}.cwn-worker:hover,.cwn-worker:focus-visible{background:color-mix(in srgb,var(--cwn-accent) 9%,transparent)}.cwn-worker>svg{width:14px;height:14px;color:var(--cwn-muted)}.cwn-worker-content{flex:1;min-width:0}.cwn-worker-line{display:flex;align-items:center;gap:8px;min-width:0}.cwn-worker-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--dsw-font-s-14-font-size);font-weight:500}.cwn-worker-status{display:inline-flex;align-items:center;gap:5px;font-size:var(--dsw-font-xxs-12-font-size);white-space:nowrap;flex-shrink:0;color:var(--cwn-muted)}.cwn-dot{display:inline-block;flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--dsw-alias-state-idle-primary)}.cwn-worker-status.running{color:var(--cwn-accent)}.cwn-dot.running{background:var(--cwn-accent)}.cwn-worker-status.completed{color:var(--dsw-alias-state-success-primary)}.cwn-dot.completed{background:var(--dsw-alias-state-success-primary)}.cwn-worker-status.failed{color:var(--dsw-alias-state-error-primary)}.cwn-dot.failed{background:var(--dsw-alias-state-error-primary)}.cwn-worker-status.queued,.cwn-worker-status.stopping{color:var(--dsw-alias-state-warn-label)}.cwn-dot.queued,.cwn-dot.stopping{background:var(--dsw-alias-state-warn-primary)}.cwn-worker-meta{display:flex;align-items:center;gap:7px;margin-top:5px;color:var(--cwn-muted);font-size:var(--dsw-font-xxs-12-font-size);min-width:0}.cwn-worker-meta>.cwn-worker-name,.cwn-worker-meta>.cwn-worker-model{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cwn-worker-meta>span:last-child{flex-shrink:0;white-space:nowrap}.cwn-worker-name{max-width:38%}.cwn-worker-model{flex:0 1 auto}.cwn-meta-divider{opacity:.5;flex-shrink:0}\n.cwn-actions{position:relative}.cwn-actions>summary{display:flex;width:28px;height:28px;align-items:center;justify-content:center;list-style:none;border-radius:var(--dsw-radius-md);cursor:pointer}.cwn-actions>summary::-webkit-details-marker{display:none}.cwn-actions>summary:hover{background:var(--dsw-alias-interactive-bg-hover)}.cwn-action-menu{position:absolute;right:0;top:34px;width:240px;max-width:calc(100cqw - 32px);z-index:5;padding:12px;background:var(--dsw-alias-bg-layer-1);border:.5px solid var(--cwn-border);border-radius:var(--dsw-radius-lg);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);box-shadow:var(--dsw-elevation-panel);font-size:var(--dsw-font-xxs-12-font-size);overflow-wrap:anywhere}.cwn-action-menu p{color:var(--cwn-muted);margin:8px 0;font-size:var(--dsw-font-xxs-12-font-size)}.cwn-action-menu>button{display:flex;margin-top:8px}\n.cwn-feed{flex:1;overflow:auto;overscroll-behavior:contain;min-height:60px;padding:18px 16px}.cwn-message{width:100%;margin:0 0 22px}.cwn-message.user{width:fit-content;max-width:85%;margin-left:auto}.cwn-message.user .cwn-text{padding:10px 12px;border-radius:var(--dsw-radius-lg);background:var(--dsw-specific-bubble,var(--dsw-alias-interactive-bg-hover))}.cwn-message-label{position:relative;display:flex;justify-content:flex-end;color:var(--cwn-muted);font-size:var(--dsw-font-xxs-12-font-size);margin-bottom:6px}.cwn-message.assistant .cwn-message-label{justify-content:flex-start}.cwn-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:calc(24px + var(--dsh-content-font-delta,0px));font-size:var(--dsh-content-font-size,14px)}.cwn-tool{border:.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-md);margin:8px 0;background:var(--dsw-alias-interactive-bg-hover);font-size:var(--dsw-font-xxs-12-font-size)}.cwn-tool summary{display:flex;align-items:center;gap:7px;padding:10px;cursor:pointer;list-style:none}.cwn-tool summary::-webkit-details-marker{display:none}.cwn-tool summary:before{content:'\u203A';color:var(--cwn-muted)}.cwn-tool[open] summary:before{transform:rotate(90deg)}.cwn-tool-title{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cwn-tool small{font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);max-width:38%;overflow-wrap:anywhere}.cwn-tool pre{white-space:pre-wrap;overflow-wrap:anywhere;font:var(--dsw-font-xxs-12-font-size)/1.6 var(--ds-font-family-code,monospace);margin:0;padding:0 12px 12px;max-height:320px;overflow:auto}.cwn-status{font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);text-align:center;margin:16px 0}\n.cwn-compose{padding:8px 12px 12px;flex-shrink:0}.cwn-compose-state{display:flex;align-items:center;gap:6px;font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);margin:0 4px 7px}.cwn-compose-box{padding:10px;border:0;border-radius:var(--dsw-radius-panel);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);box-shadow:var(--dsw-elevation-soft);background:var(--dsw-specific-input-major,var(--dsw-alias-interactive-bg-hover))}.cwn .cwn-compose textarea:focus-visible{outline:none}.cwn-compose textarea{display:block;width:100%;height:45px;min-height:45px;max-height:140px;resize:vertical;border:0;padding:0 2px;background:transparent;color:inherit;line-height:calc(24px + var(--dsh-content-font-delta,0px));font-size:var(--dsh-content-font-size,14px);outline:none}.cwn-compose textarea::placeholder{color:var(--cwn-muted)}.cwn-compose textarea:disabled{opacity:.6}.cwn-compose-bottom{display:flex;align-items:center;gap:8px;margin-top:6px;min-height:30px}.cwn-compose-model{margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cwn-muted);font-size:var(--dsw-font-xxs-12-font-size)}.cwn-send{width:30px!important;height:30px!important;padding:0!important;border-radius:50%!important;flex-shrink:0}.cwn-resume-hint{font-size:var(--dsw-font-xxs-12-font-size);line-height:1.6;color:var(--cwn-muted);margin:0 4px 8px}\n.cwn-settings{padding:12px 16px;display:grid;gap:9px;overflow:auto;max-height:65%;flex-shrink:0;border-bottom:.5px solid var(--cwn-border)}.cwn-settings label{font-size:var(--dsw-font-xxs-12-font-size);display:grid;gap:5px}.cwn-settings select{width:100%;border:.5px solid var(--cwn-border);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);color:inherit;padding:7px;font-size:var(--dsw-font-s-14-font-size)}.cwn-settings p{font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);line-height:1.6;margin:0}\n.cwn-empty{padding:30px 10px;text-align:center;color:var(--cwn-muted);line-height:1.8}.cwn-empty h3{color:var(--dsw-alias-label-primary);font-weight:500;font-size:var(--dsw-font-s-14-font-size);margin:12px 0}.cwn-empty p{font-size:var(--dsw-font-xxs-12-font-size)}.cwn-empty blockquote{margin:12px 0;padding:12px;border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-interactive-bg-hover);font-size:var(--dsw-font-xxs-12-font-size);text-align:left}.cwn-notice,.cwn-error{font-size:var(--dsw-font-xxs-12-font-size);padding:12px;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);line-height:1.6;overflow-wrap:anywhere;margin:8px 12px;max-height:180px;overflow:auto;flex-shrink:0}.cwn-error{color:var(--dsw-alias-state-error-primary)}.cwn-error button{margin:8px 0}.cwn-error details{font-size:var(--dsw-font-xxs-12-font-size)}.cwn-error summary{cursor:pointer}\n.cwn-history-nav{border-bottom:.5px solid var(--cwn-border);padding:10px 16px;font-size:var(--dsw-font-xxs-12-font-size);flex-shrink:0}.cwn-history-nav>div{display:flex;gap:5px;flex-wrap:wrap;margin:7px 0}.cwn-history-nav small{color:var(--cwn-muted)}.cwn-history-start{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:var(--dsw-font-xxs-12-font-size);margin:0 0 16px;color:var(--cwn-muted)}.cwn-jump{display:flex;justify-content:center;padding:4px 12px 8px}.cwn-copy{display:inline-flex;align-items:center;gap:6px;margin-top:5px;max-width:100%}.cwn-copy button{color:var(--cwn-muted)}.cwn-copy-feedback{font-size:var(--dsw-font-xxs-12-font-size);overflow-wrap:anywhere;color:var(--cwn-muted)}.cwn-sr-only{position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n@container (max-width:320px){.cwn-head{padding:10px 12px}.cwn-overview-controls{padding:0 10px}.cwn-overview-list{padding:8px 10px 10px}.cwn-worker-line{gap:5px}.cwn-worker-status{font-size:var(--dsw-font-xxs-12-font-size)}.cwn-worker-meta{gap:5px}.cwn-filters{gap:4px}.cwn-filters button{padding:0 4px!important}.cwn-feed{padding:14px 12px}}\n";
2
+ export declare const nativeChatStyles = "\n.cwn-entry{width:24px!important;height:24px!important;min-width:24px;padding:3px!important;border-radius:var(--dsw-radius-sm)!important;flex-shrink:0;background:transparent!important;border:0!important;box-shadow:none!important}\n.cwn-entry:hover{background:var(--dsw-alias-interactive-bg-hover)!important}\n.cwn .cwn-search{height:var(--cwn-control-height);border-color:var(--dsw-alias-border-l3);background:var(--dsw-alias-bg-base)}\n.cwn .cwn-search:focus-within{outline:none;box-shadow:none;border-color:var(--dsw-alias-border-l3)}\n.cwn .cwn-search input:focus-visible{outline:none;box-shadow:none}\n.cwn .cwn-search input::placeholder{color:var(--dsw-alias-label-caption)}\n.cwn-back,.cwn-settings select,.cwn-tool{border:.5px solid var(--dsw-alias-border-l3)}\n.cwn-cli-group{--dsw-elevation-stroke-color:var(--dsw-alias-border-l3);box-shadow:var(--dsw-elevation-soft)}\nbody[data-ds-dark-theme] .cwn-cli-group{box-shadow:var(--dsw-elevation-stroke),0 4px 12px #00000040,0 12px 24px -8px #00000059}\n.cwn-feed{padding:16px 24px}\n.cwn-message{margin-bottom:24px}\n.cwn-message.user{max-width:82%}\n.cwn-message.user .cwn-text{padding:10px 16px;border-radius:var(--dsw-radius-xl);line-height:calc(22px + var(--dsh-content-font-delta,0px))}\n.cwn-message-label{height:28px;margin:6px 0 0;gap:8px;align-items:center;font-size:var(--dsh-content-font-size-secondary,13px);line-height:24px}\n.cwn-message.assistant .cwn-message-label{margin-top:16px;margin-left:-6px}\n.cwn-markdown{min-width:0;overflow-wrap:anywhere}\n.cwn-copy{margin:0;position:relative}\n.cwn-copy .cwn-copy-icon{width:28px;height:28px;padding:6px;color:var(--dsw-alias-label-tertiary)}\n.cwn-status{text-align:left;border-bottom:.5px solid var(--dsw-alias-border-l2);padding:8px 0;margin:8px 0 16px;font-size:var(--dsh-content-font-size-secondary,13px)}\n.cwn-compose{padding:0 16px 4px}\n.cwn-compose-box{display:flex;flex-direction:column;gap:12px;padding:8px 0 0}\n.cwn-compose textarea{resize:none;height:36px;min-height:36px;max-height:336px;padding:4px 12px 0 14px;overflow-y:auto;margin:0;box-sizing:border-box}\n.cwn-compose textarea::placeholder{color:var(--dsw-alias-label-caption)}\n.cwn-compose-bottom{justify-content:flex-end;gap:8px;padding:2px 8px 6px;margin:0;min-height:42px}\n.cwn-model-menu{margin-left:auto;min-width:0;max-width:calc(100% - 42px)}\n.cwn .cwn-compose-model{display:flex;align-items:center;gap:6px;height:28px;max-width:100%;padding:0 8px;font-size:var(--dsh-content-font-size-secondary,13px);line-height:20px;color:var(--dsw-alias-label-secondary);border-radius:var(--dsw-radius-sm)}\n.cwn-compose-model>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}\n.cwn-model-effort{flex-shrink:0;color:var(--dsw-alias-label-tertiary)}\n.cwn .cwn-send{corner-shape:round!important;width:34px!important;height:34px!important;border:0!important;border-radius:999px!important;background:var(--dsw-alias-button-info-fill)!important;color:#fff!important;display:grid;place-items:center;transform:translateY(-2px)}\n.cwn .cwn-send:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)!important}\n.cwn .cwn-send:disabled{opacity:.4}\n.cwn-compose-state{height:24px;gap:8px;margin:4px 8px 0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:20px}\n.cwn-compose-cli{margin-left:auto}\n@container(max-width:320px){.cwn-feed{padding:14px 16px}.cwn-compose{padding-left:8px;padding-right:8px}.cwn-model-effort{display:none}}\n";
3
+ export declare const modelPickerStyles = "\n.cwn-progress{margin:12px 0 16px;padding-bottom:12px;border-bottom:.5px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size,14px);line-height:22px}\n.cwn-progress>summary{display:flex;gap:6px;align-items:center;cursor:pointer;list-style:none}.cwn-progress>summary::-webkit-details-marker{display:none}.cwn-progress-chevron{display:inline-flex;transform:rotate(90deg)}.cwn-progress-chevron svg{width:12px;height:12px}.cwn-progress[open] .cwn-progress-chevron{transform:rotate(-90deg)}\n.cwn-process-body{padding-top:12px;display:grid;gap:8px}.cwn-process-note{margin:0;font-size:var(--dsh-content-font-size-secondary,13px);color:var(--dsw-alias-label-tertiary)}.cwn-process-event{font-size:var(--dsh-content-font-size-secondary,13px)}\n\n.cwn-model-popover{width:max-content;min-width:min(240px,calc(100vw - 32px));max-width:min(420px,calc(100vw - 32px));max-height:min(360px,calc(100vh - 96px));padding:4px;color:var(--dsw-alias-label-primary);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);box-shadow:var(--dsw-elevation-prominent)}\n.cwn-model-popover button[role=menuitem]{min-height:34px;padding:5px 7px;font-size:13px;font-weight:400;line-height:20px;border-radius:var(--dsw-radius-md)}\n.cwn-model-cell{display:flex;align-items:center;gap:6px;width:100%;min-width:0}.cwn-model-cell>span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cwn-model-cell-value{color:var(--dsw-alias-label-tertiary);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:230px}\n.cwn-model-search{background:transparent!important;border:0!important;box-shadow:none!important;padding:5px 7px!important;margin:2px 0 3px;height:auto!important}.cwn-model-search input{font-size:12px!important;padding:0!important}.cwn-model-provider,.cwn-model-feedback{font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);padding:8px}.cwn-model-feedback{max-width:280px;white-space:normal}\n/* Scope to plugin buttons, including the portaled menu and header entry. */\n.cwn button,.cwn-entry,.cwn-model-popover button{border:0!important;--dsw-elevation-stroke-color:transparent;box-shadow:none}\n.cwn-cli-heading{position:relative}.cwn-cli-heading:after{content:'';position:absolute;bottom:0;left:0;right:0;height:.5px;background:var(--dsw-alias-border-l2);pointer-events:none;opacity:0;transition:opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease)}.cwn-cli-heading[aria-expanded=true]:after{opacity:1}\n.cwn-back:hover:not(:disabled),.cwn-filters button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)!important}\n.cwn-filters button[aria-pressed=true]:hover:not(:disabled){background:color-mix(in srgb,var(--cwn-accent) 18%,transparent)!important}\n.cwn-cli-heading:hover:not(:disabled),.cwn-model-popover button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}\n.cwn button:focus-visible,.cwn-entry:focus-visible,.cwn-model-popover button:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}\n@media(prefers-reduced-motion:reduce){.cwn button,.cwn-entry,.cwn-model-popover button{transition:none}}\n\n.cwn .cwn-send{padding:0;min-width:34px;min-height:34px;flex:none}.cwn .cwn-send svg{width:16px;height:16px}\n";
4
+ export declare const telemetryStyles = "\n.cwn-stat{display:inline-flex;align-items:center;gap:6px;border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));font-variant-numeric:tabular-nums;white-space:nowrap;padding:1px 8px;min-width:0;transition:background-color 180ms ease,color 180ms ease}\n.cwn-stat>span{overflow:hidden;text-overflow:ellipsis}.cwn-stat:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}\n.cwn-message-label time{white-space:nowrap;flex-shrink:0}.cwn-message-label .cwn-usage{padding-left:0}.cwn-message-label{gap:6px}\n.cwn-telemetry{margin:4px 0 0;gap:0;justify-content:space-between}.cwn-telemetry .cwn-usage{flex:1;justify-content:center}.cwn-run-stat{max-width:35%}.cwn-context{flex-shrink:0}\n.cwn-context-track{fill:none;stroke:var(--dsw-alias-border-l3);stroke-width:2}.cwn-context-fill{fill:none;stroke:var(--dsw-alias-label-tertiary);stroke-width:2;stroke-linecap:round}\n\n\n\n@media(prefers-reduced-motion:reduce){.cwn-stat,.cwn summary{transition:none}}\n@container(max-width:360px){.cwn-message-label{flex-wrap:wrap;height:auto;min-height:28px}.cwn-message-label time{margin-left:0}.cwn-telemetry .cwn-stat{padding-left:4px;padding-right:4px;gap:4px}}\n";
5
+ export declare const nativeInteractionStyles = "\n.cwn-progress{padding-bottom:0;border:0}.cwn-progress>summary{height:calc(33px + var(--dsh-content-font-delta,0px));width:100%;padding:0 0 8px;border-radius:0;border-bottom:.5px solid var(--dsw-alias-border-l2);transition:color .1s;line-height:calc(24px + var(--dsh-content-font-delta,0px));gap:4px}.cwn-progress>summary:hover{color:var(--dsw-alias-label-secondary);background:transparent}.cwn-progress-chevron{transition:transform .1s}.cwn-progress-chevron svg{width:14px;height:14px}\n.cwn-message-label{height:calc(28px + var(--dsh-content-font-delta,0px));gap:8px}.cwn-message-label time{line-height:calc(24px + var(--dsh-content-font-delta,0px))}.cwn-message.assistant .cwn-message-label time{font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px)}\n.cwn-copy .cwn-copy-icon{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));padding:6px;border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-tertiary)}.cwn-copy-icon svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px))}.cwn-message.assistant .cwn-copy-icon svg{width:calc(17px + var(--dsh-content-font-delta,0px));height:calc(17px + var(--dsh-content-font-delta,0px))}.cwn-copy .cwn-copy-icon:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}\n.cwn-stat-anchor{min-width:0;display:inline-flex}.cwn-telemetry{gap:0;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px))}.cwn-telemetry>.cwn-stat-anchor:nth-child(2){flex:1;justify-content:center}\n.cwn-stat{font:inherit;line-height:inherit;transition:none}.cwn-stat:hover{background:transparent;color:var(--dsw-alias-label-tertiary)}.cwn button.cwn-stat{background:transparent;cursor:pointer}.cwn button.cwn-stat:hover,.cwn button.cwn-stat[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}\n.cwn-telemetry .cwn-usage{border-radius:999px;corner-shape:round;padding:1px 8px;gap:6px}.cwn-message-label .cwn-stat-anchor{margin-left:8px}.cwn-message-label .cwn-reply-usage{height:calc(28px + var(--dsh-content-font-delta,0px));font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(24px + var(--dsh-content-font-delta,0px));border-radius:var(--dsw-radius-sm);padding:6px 8px;gap:4px}.cwn-reply-usage svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px))}.cwn button.cwn-reply-usage:hover,.cwn button.cwn-reply-usage[aria-expanded=true]{color:var(--dsw-alias-label-tertiary)}\n.cwn-context{border-radius:var(--dsw-radius-sm);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));padding:1px 8px;gap:6px}\n.cwn-stat-panel{z-index:1100;box-sizing:border-box;border-radius:var(--dsw-radius-lg);background:var(--dsw-specific-menu);width:max-content;min-width:min(300px,100vw - 24px);max-width:min(440px,100vw - 24px);backdrop-filter:var(--dsw-menu-backdrop-filter);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);box-shadow:var(--dsw-elevation-prominent);color:var(--dsw-alias-label-secondary);cursor:default;border:0;padding:16px;font-size:12px;line-height:18px;position:fixed}\n.cwn-stat-title{color:var(--dsw-alias-label-primary);display:flex;justify-content:space-between;gap:16px;margin-bottom:8px;font-weight:500}.cwn-stat-title>span{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}.cwn-stat-rule{border-top:.5px solid var(--dsw-alias-border-l2);margin-bottom:10px}.cwn-stat-details{color:var(--dsw-alias-label-tertiary);display:grid;grid-template-columns:minmax(76px,auto) minmax(0,1fr);gap:6px 16px;margin:0}.cwn-stat-details dt,.cwn-stat-details dd{min-width:0;margin:0}.cwn-stat-details dd{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}\n.cwn-context-panel{width:min(264px,100vw - 24px);min-width:0;padding:12px;line-height:20px}.cwn-context-header{display:flex;align-items:center;gap:6px}.cwn-context-header strong{margin-left:auto;font-weight:500;color:var(--dsw-alias-label-primary);white-space:nowrap}.cwn-context-bar{height:4px;margin:10px 0 12px;background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;corner-shape:round;overflow:hidden}.cwn-context-bar>span{display:block;height:100%;min-width:2px;background:var(--dsw-alias-label-tertiary)}.cwn-context-source{margin:0 0 8px;color:var(--dsw-alias-label-tertiary)}\n.cwn .cwn-compose-model{gap:4px;padding:0 4px 0 8px;max-width:min(360px,45cqw);font-size:13px;line-height:20px}.cwn .cwn-model-effort{color:var(--dsw-alias-label-caption);flex-shrink:1000;min-width:0;overflow:hidden;text-overflow:ellipsis}.cwn-model-chevron{color:var(--dsw-alias-label-caption);transition:transform .12s}.cwn-compose-model[aria-expanded=true] .cwn-model-chevron{transform:rotate(180deg)}.cwn-model-popover button:focus-visible{outline:none;background:var(--dsw-alias-interactive-bg-hover)}\n@media(prefers-reduced-motion:reduce){.cwn-progress>summary,.cwn-progress-chevron,.cwn-model-chevron{transition:none}}\n";
6
+ export declare const hoverFeedbackStyles = "\n.cwn button,.cwn summary,.cwn-entry,.cwn-model-popover button{transition:background-color 180ms ease,color 180ms ease,opacity 180ms ease}\n.cwn button:disabled{pointer-events:auto}\n.cwn button:disabled:not(.cwn-send):hover{background:var(--dsw-alias-interactive-bg-hover)!important;color:var(--dsw-alias-label-secondary)}\n.cwn .cwn-send:disabled:hover{background:var(--dsw-alias-button-info-hover)!important}\n/* On white, hover-solid and the neutral resting fill look identical. Use the\n stronger host active token for a visible neutral hover, retaining the fade. */\nbody:not([data-ds-dark-theme]) .cwn-back:hover:not(:disabled),\nbody:not([data-ds-dark-theme]) .cwn-filters button:not([aria-pressed=true]):hover:not(:disabled),\nbody:not([data-ds-dark-theme]) .cwn button:disabled:not(.cwn-send):hover{background:var(--dsw-alias-interactive-bg-active)!important}\n@media(prefers-reduced-motion:reduce){.cwn button,.cwn summary,.cwn-entry,.cwn-model-popover button{transition:none}}\n";
7
+ export declare const conversationInteractionStyles = "\n.cwn-conversation{position:relative;flex:1;min-height:60px;display:flex;flex-direction:column}\n.cwn-jump{z-index:8;height:0;padding:0;padding-right:max(calc(var(--dsh-composer-side-clearance,16px) + 16px),calc((100% - var(--dsh-chat-content-width,100%))/2));pointer-events:none;justify-content:flex-end;display:flex;position:absolute;bottom:16px;left:0;right:0}\n.cwn .cwn-jump-button{--dsw-elevation-stroke-color:var(--dsw-alias-border-l3);corner-shape:round;width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill);box-shadow:var(--dsw-elevation-panel);cursor:pointer;pointer-events:auto;border:0;border-radius:100px;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex;transition:none}\n.cwn .cwn-jump-button:hover{background:var(--dsw-alias-button-floating-hover)}\n.cwn-message-label button{transition:none}\n@media(hover:hover){\n.cwn [data-actions-reveal=hover] .cwn-message-label{opacity:0;transition:opacity 80ms}\n.cwn [data-actions-reveal=hover]:hover .cwn-message-label,.cwn [data-actions-reveal=hover]:focus-within .cwn-message-label{opacity:1}\n}\n";
8
+ export declare const settingsStyles = "\n.cwn-settings-dialog{width:min(800px,90vw);max-width:90vw;height:700px;max-height:100%}\n.cwn-settings-content{padding-top:4px!important;min-height:0;flex:1;overflow:hidden}\n.cwn-settings-content>div:last-child{flex:1;min-height:0}.cwn-settings-content>div:first-child{flex-shrink:0}\n.cwn-settings-layout{display:grid;grid-template-columns:188px minmax(0,1fr);gap:24px;height:100%;min-height:0;font-family:var(--dsw-font-family);font-size:var(--dsw-font-s-14-font-size);line-height:var(--dsw-font-s-14-line-height);color:var(--dsw-alias-label-primary)}\n.cwn-settings-layout *{box-sizing:border-box}\n.cwn-settings-nav{display:flex;flex-direction:column;gap:6px;align-self:stretch;min-height:0;overflow:auto;overscroll-behavior:contain}.cwn-settings-nav>button{flex-shrink:0}\n.cwn-settings-nav button{justify-content:flex-start;gap:10px;width:100%;font-weight:400}\n.cwn-settings-nav button[aria-pressed=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-state-business-primary)}\n.cwn-settings-nav-primary{padding:0 12px!important}\n.cwn-settings-nav-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}\n.cwn-settings-nav-primary[aria-expanded]{margin-top:6px}\n.cwn-settings-nav-chevron{display:inline-flex;margin-left:auto;transition:transform 220ms cubic-bezier(.2,0,0,1)}\n.cwn-settings-nav-primary[aria-expanded=false] .cwn-settings-nav-chevron{transform:rotate(-90deg)}\n.cwn-settings-cli-group{display:grid;grid-template-rows:1fr;opacity:1;flex-shrink:0;transition:grid-template-rows 220ms cubic-bezier(.2,0,0,1),opacity 180ms ease,visibility 220ms}\n.cwn-settings-cli-group[data-expanded=false]{grid-template-rows:0fr;opacity:0;visibility:hidden}\n.cwn-settings-cli-group-inner{display:flex;flex-direction:column;gap:4px;min-height:0;overflow:hidden;padding-left:14px}\n.cwn-settings-cli-group-inner>button{flex-shrink:0;padding:0 10px!important}\n.cwn-settings-nav-label{flex:1;min-width:0;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.cwn-settings-nav-status{width:14px;height:14px;display:flex;align-items:center;justify-content:center;flex:none}\n.cwn-connection-dot{display:block;width:6px;height:6px;border-radius:50%;background:var(--dsw-alias-label-caption)}\n.cwn-connection-dot[data-state=connected]{background:var(--dsw-alias-state-success-primary)}\n.cwn-connection-dot[data-state=failed]{background:var(--dsw-alias-state-error-primary)}\n.cwn-settings-nav button[data-enabled=false],.cwn-cli-identity[data-enabled=false] .cwn-settings-cli-name{color:var(--dsw-alias-label-caption)}\n.cwn-settings-nav button[data-enabled=false] .cwn-brand,.cwn-cli-identity[data-enabled=false] .cwn-brand{filter:grayscale(1);opacity:.5}\n.cwn-settings-pane{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:0 2px 8px 0}\n.cwn-cli-identity,.cwn-settings-cli-name,.cwn-cli-toggle,.cwn-settings-section-tools{display:flex;align-items:center;gap:10px}\n.cwn-cli-identity{justify-content:space-between;min-height:60px;padding:4px 0 0}\n.cwn-settings-cli-name{gap:14px}.cwn-settings-cli-name h2{margin:0;font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.02em}.cwn-cli-subtitle{margin:4px 0 0;font-size:var(--dsw-font-xxs-12-font-size);line-height:18px;color:var(--dsw-alias-label-tertiary)}\n.cwn-cli-toggle-status{height:20px;overflow:auto;margin:4px 0 4px;font-size:var(--dsw-font-xxs-12-font-size);line-height:18px;color:var(--dsw-alias-label-tertiary)}\n.cwn-section-progress{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:none}\n.cwn-settings-section{min-width:0}.cwn-settings-section+.cwn-settings-section{margin-top:20px;padding-top:16px;border-top:.5px solid var(--dsw-alias-border-l2)}\n.cwn-settings-section-head,.cwn-account-terminal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;min-height:36px}\n.cwn-settings-section-head h3{font-size:inherit;font-weight:500;margin:0}\n.cwn-settings-form{display:flex;flex-direction:column;gap:0}.cwn-settings-form label{display:flex;flex-direction:column;gap:8px;color:var(--dsw-alias-label-secondary)}\n.cwn-settings-choice{display:block;width:min(240px,48%);min-width:0;flex-shrink:0}.cwn-settings-choice>button{width:100%;justify-content:space-between;gap:12px;background:var(--dsw-alias-interactive-bg-hover)}.cwn-settings-choice>button>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.cwn-settings-choice-menu{width:min(300px,85vw);min-width:min(220px,85vw);max-width:min(300px,85vw);max-height:300px;overflow:auto}\n.cwn-settings-hint,.cwn-settings-feedback,.cwn-account-summary,.cwn-account-instruction{margin:0;font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere}\n.cwn-account-row{display:flex;align-items:center;gap:12px;min-height:56px}.cwn-account-summary{display:flex;align-items:center;flex:1;min-width:0;min-height:52px;margin:0;color:var(--dsw-alias-label-secondary)}\n.cwn-account-status-line{display:flex;align-items:center;min-width:0;gap:8px;min-height:24px;font-size:var(--dsw-font-s-14-font-size);line-height:22px}.cwn-account-login{display:inline-flex;align-items:center;gap:6px;min-width:0}.cwn-account-login:not([data-state=failed]){flex-shrink:0;white-space:nowrap}.cwn-account-login[data-state=connected]{color:var(--dsw-alias-state-success-primary)}.cwn-account-login[data-state=failed]{color:var(--dsw-alias-state-error-primary)}.cwn-account-login[data-state=disabled]{color:var(--dsw-alias-label-caption)}.cwn-account-status-dot{display:inline-block;flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--dsw-alias-label-caption)}.cwn-account-status-dot[data-state=connected]{background:var(--dsw-alias-state-success-primary)}.cwn-account-status-dot[data-state=failed]{background:var(--dsw-alias-state-error-primary)}.cwn-account-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary)}\n.cwn-settings-notice{min-height:20px;max-height:56px;overflow:auto;margin:8px 0 0}.cwn-settings-notice:empty{min-height:0;height:0;margin:0}\n.cwn-settings-form .cwn-setting-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:24px;padding:16px 0;border-bottom:.5px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary)}.cwn-setting-row-text{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;font-size:var(--dsw-font-s-14-font-size);line-height:22px}.cwn-setting-description{font-size:var(--dsw-font-xxs-12-font-size);line-height:18px;color:var(--dsw-alias-label-tertiary)}.cwn-settings-save{margin-top:16px;justify-content:flex-end}\n.cwn-settings-feedback-slot{min-height:20px;font-size:12px;line-height:20px;color:var(--dsw-alias-label-tertiary)}\n.cwn-account-summary[data-provider-logins=true] .cwn-account-status-line{width:100%}.cwn-account-summary[data-provider-logins=true] .cwn-account-login{flex-shrink:1}.cwn-account-logins{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.cwn-settings-feedback,.cwn-settings-save,.cwn-account-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n.cwn-account-actions{min-height:36px;flex-shrink:0;justify-content:flex-end;gap:8px}.cwn-account-actions button{background:transparent}.cwn-account-logout{flex-shrink:0;gap:5px!important;padding:0 8px!important;color:var(--dsw-alias-state-error-primary)!important}.cwn-account-logout:hover:not(:disabled){background:color-mix(in srgb,var(--dsw-alias-state-error-primary) 9%,transparent)!important}.cwn-refresh{width:36px!important;padding:0!important}.cwn-account-login-action,.cwn-account-manage{padding:0 10px!important}\n.cwn-local-loading,.cwn-loading{display:flex;align-items:center;gap:8px;color:var(--dsw-alias-label-tertiary);font-size:var(--dsw-font-xxs-12-font-size);line-height:20px}\n/* Native md Button owns the 36px height; native Switch keeps its own 36x20px geometry. */\n.cwn-settings-choice-menu button{border:0;box-shadow:none;--dsw-elevation-stroke-color:transparent}.cwn-settings-layout button:not([role=switch]),.cwn-settings-choice-menu button{transition:background-color 180ms ease,color 180ms ease,opacity 180ms ease}\n.cwn-account-actions button:hover:not(:disabled),.cwn-settings-section-head button:hover:not(:disabled),.cwn-settings-nav button:hover:not(:disabled),.cwn-account-terminal-head button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}\n.cwn-settings-nav button[aria-pressed=true]:hover,.cwn-settings-choice>button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}\n.cwn-settings-layout button:not([role=switch]):disabled{pointer-events:auto}\n.cwn-settings-layout button:not([role=switch]):disabled:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-secondary)}\n.cwn-settings-layout button:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}\n.cwn-account-terminal{margin-top:16px;padding:12px;border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-layer-2);border:.5px solid var(--dsw-alias-border-l2);min-width:0}\n.cwn-account-terminal-head{margin-bottom:8px}.cwn-account-terminal-head strong{font-size:12px;font-weight:500}.cwn-account-terminal-view{height:300px;min-height:200px;margin:12px 0;overflow:hidden}.cwn-account-terminal-view .xterm{height:100%}.cwn-account-terminal-view .xterm-viewport{background-color:var(--dsw-alias-bg-layer-2)!important}.cwn-account-terminal-view .xterm-helper-textarea{resize:none!important;min-height:0!important;max-height:0!important}\n.cwn-native-model-settings>p{margin:0 0 16px;color:var(--dsw-alias-label-secondary);font-size:var(--cwn-font-sm);line-height:1.6}.cwn-account-dialog{width:min(720px,90vw);max-width:90vw}.cwn-account-dialog-content{min-height:0;overflow:auto}.cwn-account-dialog .cwn-account-terminal{margin:0;padding:0;border:0;background:transparent}.cwn-account-dialog .cwn-account-terminal-view{height:300px;max-height:48vh}.cwn-account-dialog .cwn-account-terminal button{border:0!important;transition:background-color 180ms ease,color 180ms ease}.cwn-account-dialog .cwn-account-terminal button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}\n/* OMP onboarding needs room for its native header and provider list. Small screens scroll the modal body. */\n.cwn-account-dialog .cwn-account-terminal[data-cli=\"omp\"] .cwn-account-terminal-view{height:520px;max-height:none}\n@media(max-width:640px){.cwn-account-row{flex-wrap:wrap}.cwn-account-actions{margin-left:auto}.cwn-settings-content{overflow:auto}.cwn-settings-layout{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:16px}.cwn-settings-nav{max-height:190px}.cwn-settings-cli-group-inner{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.cwn-settings-nav button{min-width:0}.cwn-settings-pane{overflow:auto}.cwn-settings-form .cwn-setting-row{gap:12px}.cwn-setting-description{max-width:180px}.cwn-account-terminal-view{height:240px}}\n@media(prefers-reduced-motion:reduce){.cwn-settings-layout button,.cwn-settings-choice-menu button,.cwn-settings-nav-chevron,.cwn-settings-cli-group{transition:none}}\n";
9
+ export declare const rolePresetStyles = "\n.cwn-roles-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0 20px}\n.cwn-roles-heading h2{margin:0;font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.02em}\n.cwn-roles-heading p{margin:8px 0 0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsw-font-s-14-font-size);line-height:22px}\n.cwn-roles-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px}.cwn-roles-toolbar>span{flex:1;min-width:0}.cwn-roles-toolbar>button{flex-shrink:0}\n.cwn-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-height:160px;align-content:start}\n.cwn-role-card{min-width:0;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xl);overflow:hidden;background:var(--dsw-alias-bg-layer-2)}\n.cwn-role-card>button{display:flex;flex-direction:column;gap:7px;width:100%;height:100%;min-height:104px;padding:16px;text-align:left;background:transparent;color:inherit;font:inherit;border:0;cursor:pointer}\n.cwn-role-card>button:hover{background:var(--dsw-alias-interactive-bg-hover)}\n.cwn-role-card-heading{display:flex;align-items:center;justify-content:space-between;width:100%;gap:8px;min-width:0}.cwn-role-card-heading strong{font-size:var(--dsw-font-s-14-font-size);font-weight:500;overflow-wrap:anywhere}.cwn-role-card-heading svg{width:12px;height:12px;color:var(--dsw-alias-label-tertiary);flex-shrink:0;transform:rotate(90deg)}\n.cwn-role-card-summary{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-label-tertiary)}\n.cwn-role-editor{display:flex;flex-direction:column;gap:16px}.cwn-role-back{align-self:flex-start}.cwn-role-editor label{display:flex;flex-direction:column;gap:8px;min-width:0}.cwn-role-editor textarea{display:block;width:100%;min-height:240px;resize:vertical;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);padding:12px;font:inherit;line-height:1.65;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}\n.cwn-role-editor textarea:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}\n.cwn-role-editor-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.cwn-role-editor-actions>.cwn-role-delete{margin-right:auto}.cwn-role-delete{background:var(--dsw-alias-state-error-primary)!important;color:#fff!important}.cwn-role-delete:hover:not(:disabled){background:color-mix(in srgb,var(--dsw-alias-state-error-primary) 88%,#000)!important}.cwn-role-delete-confirm>button+button{margin-left:8px}\n.cwn-role-delete-confirm{padding:12px;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover)}.cwn-role-delete-confirm p{margin:0 0 8px;font-size:var(--dsw-font-xxs-12-font-size)}\n.cwn-role-feedback{min-height:22px;margin-top:12px;font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere}.cwn-role-feedback[role=alert]{color:var(--dsw-alias-state-error-primary)}.cwn-role-empty{color:var(--dsw-alias-label-tertiary);font-size:var(--dsw-font-s-14-font-size)}\n.cwn-rename-dialog{width:min(420px,90vw);max-width:90vw}.cwn-rename-form>p{font-size:var(--dsw-font-xxs-12-font-size);color:var(--dsw-alias-label-tertiary);line-height:20px}\n@media(max-width:700px){.cwn-role-grid{grid-template-columns:1fr}.cwn-roles-toolbar{flex-wrap:wrap}.cwn-roles-toolbar>span{flex-basis:100%}}\n";
@@ -0,0 +1,221 @@
1
+ // Harness 0.2.0-rc.2 typography/radius/elevation tokens are inherited live.
2
+ // Native md Button defines the 36px control height in Harness 0.2.0-rc.2.
3
+ // Input has no size variant, so its wrapper shares that height here.
4
+ // Conversation text uses the same host font-size preference as the main composer.
5
+ export const styles = `
6
+ .cwn,.cwn-settings-dialog,.cwn-rename-dialog{--cwn-control-height:36px}
7
+ .cwn-control-input{height:var(--cwn-control-height,36px)}
8
+ .cwn{position:relative;--cwn-accent:var(--dsw-alias-state-business-primary);--cwn-muted:var(--dsw-alias-label-tertiary);--cwn-border:var(--dsw-alias-border-l3);display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;color:var(--dsw-alias-label-primary);font-family:inherit;font-size:var(--dsw-font-s-14-font-size);line-height:var(--dsw-font-s-14-line-height);container-type:inline-size}
9
+ .cwn *{box-sizing:border-box}.cwn svg{flex-shrink:0}.cwn select,.cwn textarea{font-family:inherit}.cwn-worker,.cwn-cli-heading{font:inherit}.cwn button{cursor:pointer}.cwn button:disabled{cursor:default;opacity:.45}.cwn button:focus-visible,.cwn summary:focus-visible,.cwn input:focus-visible,.cwn textarea:focus-visible,.cwn select:focus-visible{outline:2px solid var(--cwn-accent);outline-offset:2px}
10
+ .cwn-brand{display:inline-flex;position:relative;flex-shrink:0;vertical-align:middle}.cwn-brand img{display:block;width:100%;height:100%;object-fit:contain}.cwn-brand .cwn-icon-dark{display:none}body[data-ds-dark-theme] .cwn-brand .cwn-icon-mono{filter:invert(1)}body[data-ds-dark-theme] .cwn-brand .cwn-icon-light{display:none}body[data-ds-dark-theme] .cwn-brand .cwn-icon-dark{display:block}
11
+ .cwn-project-logo{display:block;position:relative;width:100%;height:100%;mask-size:contain;mask-position:center;mask-repeat:no-repeat;mask-mode:alpha;-webkit-mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat}.cwn-project-logo.monochrome{background:#000}body[data-ds-dark-theme] .cwn-project-logo.monochrome{background:#fff}
12
+ .cwn-head{display:flex;align-items:center;gap:9px;min-height:56px;padding:10px 16px;flex-shrink:0}.cwn-head h2{flex:1;min-width:0;font-size:var(--dsw-font-s-14-font-size);line-height:var(--dsw-font-s-14-line-height);font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cwn-back{width:28px!important;padding:0!important;flex-shrink:0}.cwn-settings-button{width:36px!important;padding:0!important;flex-shrink:0;align-self:center}.cwn-settings-button svg{display:block}.cwn-back{border-radius:var(--dsw-radius-md)!important;background:var(--dsw-alias-interactive-bg-hover)!important}
13
+ .cwn-wordmark{display:flex;align-items:center;gap:6px;min-width:0;flex:1;height:36px}.cwn-wordmark h2{display:flex;align-items:center;gap:10px;overflow:visible!important;font-family:var(--dsw-font-family);font-size:21px!important;line-height:28px!important;font-weight:500;letter-spacing:normal}.cwn-wordmark h2 small{display:inline-flex;align-items:center;justify-content:center;height:18px;padding:0 5px;border-radius:3px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-2);font-size:10px;line-height:14px;font-weight:600;letter-spacing:.08em}.cwn-overview{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding-top:4px}.cwn-overview-controls{flex:none;min-width:0;padding:0 14px}.cwn-overview-list{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:8px 14px 20px}.cwn-search{width:100%}
14
+
15
+ .cwn-filters{display:flex;gap:6px;margin:10px 0 14px}.cwn-filters button{flex:1;min-width:0;padding:0 7px;background:var(--dsw-alias-interactive-bg-hover)!important}.cwn-filters button[aria-pressed=true]{color:var(--cwn-accent)!important;border-color:var(--cwn-border)!important;background:color-mix(in srgb,var(--cwn-accent) 10%,transparent)!important}
16
+ .cwn-cli-group{border:0;border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-base);margin:0 0 12px;overflow:hidden}.cwn-cli-heading{display:flex;align-items:center;gap:9px;width:100%;min-height:45px;padding:10px 12px;border:0;background:transparent;color:inherit;text-align:left}.cwn-cli-heading strong{font-size:var(--dsw-font-s-14-font-size);font-weight:600;flex:1;min-width:0}.cwn-cli-heading>span:not(.cwn-brand){font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);white-space:nowrap}.cwn-cli-heading>svg{width:12px;height:12px;color:var(--cwn-muted);transform:rotate(90deg);transition:transform var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease)}.cwn-cli-heading[aria-expanded=false]>svg{transform:none}.cwn-cli-heading[aria-expanded=true]{border-bottom:.5px solid var(--dsw-alias-border-l2)}
17
+ .cwn-cli-rows{display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease),opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease),visibility var(--ds-transition-duration,.2s)}.cwn-cli-rows[data-expanded=false]{grid-template-rows:0fr;opacity:0;visibility:hidden}.cwn-cli-rows-inner{min-height:0;overflow:hidden}
18
+ @media(prefers-reduced-motion:reduce){.cwn-cli-rows,.cwn-cli-heading>svg,.cwn-cli-heading:after{transition:none!important}}
19
+ .cwn-worker{display:flex;width:100%;align-items:center;gap:10px;padding:12px;background:transparent;color:inherit;border:0;text-align:left;min-height:62px;position:relative}.cwn-worker+.cwn-worker:before{content:'';position:absolute;left:12px;right:12px;top:0;height:.5px;background:var(--dsw-alias-border-l2)}.cwn-worker:hover,.cwn-worker:focus-visible{background:color-mix(in srgb,var(--cwn-accent) 9%,transparent)}.cwn-worker>svg{width:14px;height:14px;color:var(--cwn-muted)}.cwn-worker-content{flex:1;min-width:0}.cwn-worker-line{display:flex;align-items:center;gap:8px;min-width:0}.cwn-worker-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--dsw-font-s-14-font-size);font-weight:500}.cwn-worker-status{display:inline-flex;align-items:center;gap:5px;font-size:var(--dsw-font-xxs-12-font-size);white-space:nowrap;flex-shrink:0;color:var(--cwn-muted)}.cwn-dot{display:inline-block;flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--dsw-alias-state-idle-primary)}.cwn-worker-status.running{color:var(--cwn-accent)}.cwn-dot.running{background:var(--cwn-accent)}.cwn-worker-status.completed{color:var(--dsw-alias-state-success-primary)}.cwn-dot.completed{background:var(--dsw-alias-state-success-primary)}.cwn-worker-status.failed{color:var(--dsw-alias-state-error-primary)}.cwn-dot.failed{background:var(--dsw-alias-state-error-primary)}.cwn-worker-status.queued,.cwn-worker-status.stopping{color:var(--dsw-alias-state-warn-label)}.cwn-dot.queued,.cwn-dot.stopping{background:var(--dsw-alias-state-warn-primary)}.cwn-worker-meta{display:flex;align-items:center;gap:7px;margin-top:5px;color:var(--cwn-muted);font-size:var(--dsw-font-xxs-12-font-size);min-width:0}.cwn-worker-meta>.cwn-worker-name,.cwn-worker-meta>.cwn-worker-model{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cwn-worker-meta>span:last-child{flex-shrink:0;white-space:nowrap}.cwn-worker-name{max-width:38%}.cwn-worker-model{flex:0 1 auto}.cwn-meta-divider{opacity:.5;flex-shrink:0}
20
+ .cwn-actions{position:relative}.cwn-actions>summary{display:flex;width:28px;height:28px;align-items:center;justify-content:center;list-style:none;border-radius:var(--dsw-radius-md);cursor:pointer}.cwn-actions>summary::-webkit-details-marker{display:none}.cwn-actions>summary:hover{background:var(--dsw-alias-interactive-bg-hover)}.cwn-action-menu{position:absolute;right:0;top:34px;width:240px;max-width:calc(100cqw - 32px);z-index:5;padding:12px;background:var(--dsw-alias-bg-layer-1);border:.5px solid var(--cwn-border);border-radius:var(--dsw-radius-lg);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);box-shadow:var(--dsw-elevation-panel);font-size:var(--dsw-font-xxs-12-font-size);overflow-wrap:anywhere}.cwn-action-menu p{color:var(--cwn-muted);margin:8px 0;font-size:var(--dsw-font-xxs-12-font-size)}.cwn-action-menu>button{display:flex;margin-top:8px}
21
+ .cwn-feed{flex:1;overflow:auto;overscroll-behavior:contain;min-height:60px;padding:18px 16px}.cwn-message{width:100%;margin:0 0 22px}.cwn-message.user{width:fit-content;max-width:85%;margin-left:auto}.cwn-message.user .cwn-text{padding:10px 12px;border-radius:var(--dsw-radius-lg);background:var(--dsw-specific-bubble,var(--dsw-alias-interactive-bg-hover))}.cwn-message-label{position:relative;display:flex;justify-content:flex-end;color:var(--cwn-muted);font-size:var(--dsw-font-xxs-12-font-size);margin-bottom:6px}.cwn-message.assistant .cwn-message-label{justify-content:flex-start}.cwn-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:calc(24px + var(--dsh-content-font-delta,0px));font-size:var(--dsh-content-font-size,14px)}.cwn-tool{border:.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-md);margin:8px 0;background:var(--dsw-alias-interactive-bg-hover);font-size:var(--dsw-font-xxs-12-font-size)}.cwn-tool summary{display:flex;align-items:center;gap:7px;padding:10px;cursor:pointer;list-style:none}.cwn-tool summary::-webkit-details-marker{display:none}.cwn-tool summary:before{content:'›';color:var(--cwn-muted)}.cwn-tool[open] summary:before{transform:rotate(90deg)}.cwn-tool-title{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cwn-tool small{font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);max-width:38%;overflow-wrap:anywhere}.cwn-tool pre{white-space:pre-wrap;overflow-wrap:anywhere;font:var(--dsw-font-xxs-12-font-size)/1.6 var(--ds-font-family-code,monospace);margin:0;padding:0 12px 12px;max-height:320px;overflow:auto}.cwn-status{font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);text-align:center;margin:16px 0}
22
+ .cwn-compose{padding:8px 12px 12px;flex-shrink:0}.cwn-compose-state{display:flex;align-items:center;gap:6px;font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);margin:0 4px 7px}.cwn-compose-box{padding:10px;border:0;border-radius:var(--dsw-radius-panel);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);box-shadow:var(--dsw-elevation-soft);background:var(--dsw-specific-input-major,var(--dsw-alias-interactive-bg-hover))}.cwn .cwn-compose textarea:focus-visible{outline:none}.cwn-compose textarea{display:block;width:100%;height:45px;min-height:45px;max-height:140px;resize:vertical;border:0;padding:0 2px;background:transparent;color:inherit;line-height:calc(24px + var(--dsh-content-font-delta,0px));font-size:var(--dsh-content-font-size,14px);outline:none}.cwn-compose textarea::placeholder{color:var(--cwn-muted)}.cwn-compose textarea:disabled{opacity:.6}.cwn-compose-bottom{display:flex;align-items:center;gap:8px;margin-top:6px;min-height:30px}.cwn-compose-model{margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cwn-muted);font-size:var(--dsw-font-xxs-12-font-size)}.cwn-send{width:30px!important;height:30px!important;padding:0!important;border-radius:50%!important;flex-shrink:0}.cwn-resume-hint{font-size:var(--dsw-font-xxs-12-font-size);line-height:1.6;color:var(--cwn-muted);margin:0 4px 8px}
23
+ .cwn-settings{padding:12px 16px;display:grid;gap:9px;overflow:auto;max-height:65%;flex-shrink:0;border-bottom:.5px solid var(--cwn-border)}.cwn-settings label{font-size:var(--dsw-font-xxs-12-font-size);display:grid;gap:5px}.cwn-settings select{width:100%;border:.5px solid var(--cwn-border);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);color:inherit;padding:7px;font-size:var(--dsw-font-s-14-font-size)}.cwn-settings p{font-size:var(--dsw-font-xxs-12-font-size);color:var(--cwn-muted);line-height:1.6;margin:0}
24
+ .cwn-empty{padding:30px 10px;text-align:center;color:var(--cwn-muted);line-height:1.8}.cwn-empty h3{color:var(--dsw-alias-label-primary);font-weight:500;font-size:var(--dsw-font-s-14-font-size);margin:12px 0}.cwn-empty p{font-size:var(--dsw-font-xxs-12-font-size)}.cwn-empty blockquote{margin:12px 0;padding:12px;border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-interactive-bg-hover);font-size:var(--dsw-font-xxs-12-font-size);text-align:left}.cwn-notice,.cwn-error{font-size:var(--dsw-font-xxs-12-font-size);padding:12px;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);line-height:1.6;overflow-wrap:anywhere;margin:8px 12px;max-height:180px;overflow:auto;flex-shrink:0}.cwn-error{color:var(--dsw-alias-state-error-primary)}.cwn-error button{margin:8px 0}.cwn-error details{font-size:var(--dsw-font-xxs-12-font-size)}.cwn-error summary{cursor:pointer}
25
+ .cwn-history-nav{border-bottom:.5px solid var(--cwn-border);padding:10px 16px;font-size:var(--dsw-font-xxs-12-font-size);flex-shrink:0}.cwn-history-nav>div{display:flex;gap:5px;flex-wrap:wrap;margin:7px 0}.cwn-history-nav small{color:var(--cwn-muted)}.cwn-history-start{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:var(--dsw-font-xxs-12-font-size);margin:0 0 16px;color:var(--cwn-muted)}.cwn-jump{display:flex;justify-content:center;padding:4px 12px 8px}.cwn-copy{display:inline-flex;align-items:center;gap:6px;margin-top:5px;max-width:100%}.cwn-copy button{color:var(--cwn-muted)}.cwn-copy-feedback{font-size:var(--dsw-font-xxs-12-font-size);overflow-wrap:anywhere;color:var(--cwn-muted)}.cwn-sr-only{position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
26
+ @container (max-width:320px){.cwn-head{padding:10px 12px}.cwn-overview-controls{padding:0 10px}.cwn-overview-list{padding:8px 10px 10px}.cwn-worker-line{gap:5px}.cwn-worker-status{font-size:var(--dsw-font-xxs-12-font-size)}.cwn-worker-meta{gap:5px}.cwn-filters{gap:4px}.cwn-filters button{padding:0 4px!important}.cwn-feed{padding:14px 12px}}
27
+ `;
28
+ // Geometry below mirrors Harness 0.2.0-rc.2 chat/composer and sidebar New Session.
29
+ export const nativeChatStyles = `
30
+ .cwn-entry{width:24px!important;height:24px!important;min-width:24px;padding:3px!important;border-radius:var(--dsw-radius-sm)!important;flex-shrink:0;background:transparent!important;border:0!important;box-shadow:none!important}
31
+ .cwn-entry:hover{background:var(--dsw-alias-interactive-bg-hover)!important}
32
+ .cwn .cwn-search{height:var(--cwn-control-height);border-color:var(--dsw-alias-border-l3);background:var(--dsw-alias-bg-base)}
33
+ .cwn .cwn-search:focus-within{outline:none;box-shadow:none;border-color:var(--dsw-alias-border-l3)}
34
+ .cwn .cwn-search input:focus-visible{outline:none;box-shadow:none}
35
+ .cwn .cwn-search input::placeholder{color:var(--dsw-alias-label-caption)}
36
+ .cwn-back,.cwn-settings select,.cwn-tool{border:.5px solid var(--dsw-alias-border-l3)}
37
+ .cwn-cli-group{--dsw-elevation-stroke-color:var(--dsw-alias-border-l3);box-shadow:var(--dsw-elevation-soft)}
38
+ body[data-ds-dark-theme] .cwn-cli-group{box-shadow:var(--dsw-elevation-stroke),0 4px 12px #00000040,0 12px 24px -8px #00000059}
39
+ .cwn-feed{padding:16px 24px}
40
+ .cwn-message{margin-bottom:24px}
41
+ .cwn-message.user{max-width:82%}
42
+ .cwn-message.user .cwn-text{padding:10px 16px;border-radius:var(--dsw-radius-xl);line-height:calc(22px + var(--dsh-content-font-delta,0px))}
43
+ .cwn-message-label{height:28px;margin:6px 0 0;gap:8px;align-items:center;font-size:var(--dsh-content-font-size-secondary,13px);line-height:24px}
44
+ .cwn-message.assistant .cwn-message-label{margin-top:16px;margin-left:-6px}
45
+ .cwn-markdown{min-width:0;overflow-wrap:anywhere}
46
+ .cwn-copy{margin:0;position:relative}
47
+ .cwn-copy .cwn-copy-icon{width:28px;height:28px;padding:6px;color:var(--dsw-alias-label-tertiary)}
48
+ .cwn-status{text-align:left;border-bottom:.5px solid var(--dsw-alias-border-l2);padding:8px 0;margin:8px 0 16px;font-size:var(--dsh-content-font-size-secondary,13px)}
49
+ .cwn-compose{padding:0 16px 4px}
50
+ .cwn-compose-box{display:flex;flex-direction:column;gap:12px;padding:8px 0 0}
51
+ .cwn-compose textarea{resize:none;height:36px;min-height:36px;max-height:336px;padding:4px 12px 0 14px;overflow-y:auto;margin:0;box-sizing:border-box}
52
+ .cwn-compose textarea::placeholder{color:var(--dsw-alias-label-caption)}
53
+ .cwn-compose-bottom{justify-content:flex-end;gap:8px;padding:2px 8px 6px;margin:0;min-height:42px}
54
+ .cwn-model-menu{margin-left:auto;min-width:0;max-width:calc(100% - 42px)}
55
+ .cwn .cwn-compose-model{display:flex;align-items:center;gap:6px;height:28px;max-width:100%;padding:0 8px;font-size:var(--dsh-content-font-size-secondary,13px);line-height:20px;color:var(--dsw-alias-label-secondary);border-radius:var(--dsw-radius-sm)}
56
+ .cwn-compose-model>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
57
+ .cwn-model-effort{flex-shrink:0;color:var(--dsw-alias-label-tertiary)}
58
+ .cwn .cwn-send{corner-shape:round!important;width:34px!important;height:34px!important;border:0!important;border-radius:999px!important;background:var(--dsw-alias-button-info-fill)!important;color:#fff!important;display:grid;place-items:center;transform:translateY(-2px)}
59
+ .cwn .cwn-send:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)!important}
60
+ .cwn .cwn-send:disabled{opacity:.4}
61
+ .cwn-compose-state{height:24px;gap:8px;margin:4px 8px 0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:20px}
62
+ .cwn-compose-cli{margin-left:auto}
63
+ @container(max-width:320px){.cwn-feed{padding:14px 16px}.cwn-compose{padding-left:8px;padding-right:8px}.cwn-model-effort{display:none}}
64
+ `;
65
+ export const modelPickerStyles = `
66
+ .cwn-progress{margin:12px 0 16px;padding-bottom:12px;border-bottom:.5px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size,14px);line-height:22px}
67
+ .cwn-progress>summary{display:flex;gap:6px;align-items:center;cursor:pointer;list-style:none}.cwn-progress>summary::-webkit-details-marker{display:none}.cwn-progress-chevron{display:inline-flex;transform:rotate(90deg)}.cwn-progress-chevron svg{width:12px;height:12px}.cwn-progress[open] .cwn-progress-chevron{transform:rotate(-90deg)}
68
+ .cwn-process-body{padding-top:12px;display:grid;gap:8px}.cwn-process-note{margin:0;font-size:var(--dsh-content-font-size-secondary,13px);color:var(--dsw-alias-label-tertiary)}.cwn-process-event{font-size:var(--dsh-content-font-size-secondary,13px)}
69
+
70
+ .cwn-model-popover{width:max-content;min-width:min(240px,calc(100vw - 32px));max-width:min(420px,calc(100vw - 32px));max-height:min(360px,calc(100vh - 96px));padding:4px;color:var(--dsw-alias-label-primary);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);box-shadow:var(--dsw-elevation-prominent)}
71
+ .cwn-model-popover button[role=menuitem]{min-height:34px;padding:5px 7px;font-size:13px;font-weight:400;line-height:20px;border-radius:var(--dsw-radius-md)}
72
+ .cwn-model-cell{display:flex;align-items:center;gap:6px;width:100%;min-width:0}.cwn-model-cell>span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cwn-model-cell-value{color:var(--dsw-alias-label-tertiary);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:230px}
73
+ .cwn-model-search{background:transparent!important;border:0!important;box-shadow:none!important;padding:5px 7px!important;margin:2px 0 3px;height:auto!important}.cwn-model-search input{font-size:12px!important;padding:0!important}.cwn-model-provider,.cwn-model-feedback{font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary);padding:8px}.cwn-model-feedback{max-width:280px;white-space:normal}
74
+ /* Scope to plugin buttons, including the portaled menu and header entry. */
75
+ .cwn button,.cwn-entry,.cwn-model-popover button{border:0!important;--dsw-elevation-stroke-color:transparent;box-shadow:none}
76
+ .cwn-cli-heading{position:relative}.cwn-cli-heading:after{content:'';position:absolute;bottom:0;left:0;right:0;height:.5px;background:var(--dsw-alias-border-l2);pointer-events:none;opacity:0;transition:opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease)}.cwn-cli-heading[aria-expanded=true]:after{opacity:1}
77
+ .cwn-back:hover:not(:disabled),.cwn-filters button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)!important}
78
+ .cwn-filters button[aria-pressed=true]:hover:not(:disabled){background:color-mix(in srgb,var(--cwn-accent) 18%,transparent)!important}
79
+ .cwn-cli-heading:hover:not(:disabled),.cwn-model-popover button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}
80
+ .cwn button:focus-visible,.cwn-entry:focus-visible,.cwn-model-popover button:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}
81
+ @media(prefers-reduced-motion:reduce){.cwn button,.cwn-entry,.cwn-model-popover button{transition:none}}
82
+
83
+ .cwn .cwn-send{padding:0;min-width:34px;min-height:34px;flex:none}.cwn .cwn-send svg{width:16px;height:16px}
84
+ `;
85
+ export const telemetryStyles = `
86
+ .cwn-stat{display:inline-flex;align-items:center;gap:6px;border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));font-variant-numeric:tabular-nums;white-space:nowrap;padding:1px 8px;min-width:0;transition:background-color 180ms ease,color 180ms ease}
87
+ .cwn-stat>span{overflow:hidden;text-overflow:ellipsis}.cwn-stat:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}
88
+ .cwn-message-label time{white-space:nowrap;flex-shrink:0}.cwn-message-label .cwn-usage{padding-left:0}.cwn-message-label{gap:6px}
89
+ .cwn-telemetry{margin:4px 0 0;gap:0;justify-content:space-between}.cwn-telemetry .cwn-usage{flex:1;justify-content:center}.cwn-run-stat{max-width:35%}.cwn-context{flex-shrink:0}
90
+ .cwn-context-track{fill:none;stroke:var(--dsw-alias-border-l3);stroke-width:2}.cwn-context-fill{fill:none;stroke:var(--dsw-alias-label-tertiary);stroke-width:2;stroke-linecap:round}
91
+
92
+
93
+
94
+ @media(prefers-reduced-motion:reduce){.cwn-stat,.cwn summary{transition:none}}
95
+ @container(max-width:360px){.cwn-message-label{flex-wrap:wrap;height:auto;min-height:28px}.cwn-message-label time{margin-left:0}.cwn-telemetry .cwn-stat{padding-left:4px;padding-right:4px;gap:4px}}
96
+ `;
97
+ // Pinned to Harness 0.2.0-rc.2: WorkStatus, MessageIconActions, StatsPills,
98
+ // TurnUsagePanel, ContextMeter and ModelSelect. Native Tooltip/Menu own animations.
99
+ export const nativeInteractionStyles = `
100
+ .cwn-progress{padding-bottom:0;border:0}.cwn-progress>summary{height:calc(33px + var(--dsh-content-font-delta,0px));width:100%;padding:0 0 8px;border-radius:0;border-bottom:.5px solid var(--dsw-alias-border-l2);transition:color .1s;line-height:calc(24px + var(--dsh-content-font-delta,0px));gap:4px}.cwn-progress>summary:hover{color:var(--dsw-alias-label-secondary);background:transparent}.cwn-progress-chevron{transition:transform .1s}.cwn-progress-chevron svg{width:14px;height:14px}
101
+ .cwn-message-label{height:calc(28px + var(--dsh-content-font-delta,0px));gap:8px}.cwn-message-label time{line-height:calc(24px + var(--dsh-content-font-delta,0px))}.cwn-message.assistant .cwn-message-label time{font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px)}
102
+ .cwn-copy .cwn-copy-icon{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));padding:6px;border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-tertiary)}.cwn-copy-icon svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px))}.cwn-message.assistant .cwn-copy-icon svg{width:calc(17px + var(--dsh-content-font-delta,0px));height:calc(17px + var(--dsh-content-font-delta,0px))}.cwn-copy .cwn-copy-icon:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}
103
+ .cwn-stat-anchor{min-width:0;display:inline-flex}.cwn-telemetry{gap:0;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px))}.cwn-telemetry>.cwn-stat-anchor:nth-child(2){flex:1;justify-content:center}
104
+ .cwn-stat{font:inherit;line-height:inherit;transition:none}.cwn-stat:hover{background:transparent;color:var(--dsw-alias-label-tertiary)}.cwn button.cwn-stat{background:transparent;cursor:pointer}.cwn button.cwn-stat:hover,.cwn button.cwn-stat[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}
105
+ .cwn-telemetry .cwn-usage{border-radius:999px;corner-shape:round;padding:1px 8px;gap:6px}.cwn-message-label .cwn-stat-anchor{margin-left:8px}.cwn-message-label .cwn-reply-usage{height:calc(28px + var(--dsh-content-font-delta,0px));font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(24px + var(--dsh-content-font-delta,0px));border-radius:var(--dsw-radius-sm);padding:6px 8px;gap:4px}.cwn-reply-usage svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px))}.cwn button.cwn-reply-usage:hover,.cwn button.cwn-reply-usage[aria-expanded=true]{color:var(--dsw-alias-label-tertiary)}
106
+ .cwn-context{border-radius:var(--dsw-radius-sm);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));padding:1px 8px;gap:6px}
107
+ .cwn-stat-panel{z-index:1100;box-sizing:border-box;border-radius:var(--dsw-radius-lg);background:var(--dsw-specific-menu);width:max-content;min-width:min(300px,100vw - 24px);max-width:min(440px,100vw - 24px);backdrop-filter:var(--dsw-menu-backdrop-filter);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);box-shadow:var(--dsw-elevation-prominent);color:var(--dsw-alias-label-secondary);cursor:default;border:0;padding:16px;font-size:12px;line-height:18px;position:fixed}
108
+ .cwn-stat-title{color:var(--dsw-alias-label-primary);display:flex;justify-content:space-between;gap:16px;margin-bottom:8px;font-weight:500}.cwn-stat-title>span{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}.cwn-stat-rule{border-top:.5px solid var(--dsw-alias-border-l2);margin-bottom:10px}.cwn-stat-details{color:var(--dsw-alias-label-tertiary);display:grid;grid-template-columns:minmax(76px,auto) minmax(0,1fr);gap:6px 16px;margin:0}.cwn-stat-details dt,.cwn-stat-details dd{min-width:0;margin:0}.cwn-stat-details dd{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}
109
+ .cwn-context-panel{width:min(264px,100vw - 24px);min-width:0;padding:12px;line-height:20px}.cwn-context-header{display:flex;align-items:center;gap:6px}.cwn-context-header strong{margin-left:auto;font-weight:500;color:var(--dsw-alias-label-primary);white-space:nowrap}.cwn-context-bar{height:4px;margin:10px 0 12px;background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;corner-shape:round;overflow:hidden}.cwn-context-bar>span{display:block;height:100%;min-width:2px;background:var(--dsw-alias-label-tertiary)}.cwn-context-source{margin:0 0 8px;color:var(--dsw-alias-label-tertiary)}
110
+ .cwn .cwn-compose-model{gap:4px;padding:0 4px 0 8px;max-width:min(360px,45cqw);font-size:13px;line-height:20px}.cwn .cwn-model-effort{color:var(--dsw-alias-label-caption);flex-shrink:1000;min-width:0;overflow:hidden;text-overflow:ellipsis}.cwn-model-chevron{color:var(--dsw-alias-label-caption);transition:transform .12s}.cwn-compose-model[aria-expanded=true] .cwn-model-chevron{transform:rotate(180deg)}.cwn-model-popover button:focus-visible{outline:none;background:var(--dsw-alias-interactive-bg-hover)}
111
+ @media(prefers-reduced-motion:reduce){.cwn-progress>summary,.cwn-progress-chevron,.cwn-model-chevron{transition:none}}
112
+ `;
113
+ // Deliberate user preference: soft hover transitions also on neutral/disabled controls.
114
+ export const hoverFeedbackStyles = `
115
+ .cwn button,.cwn summary,.cwn-entry,.cwn-model-popover button{transition:background-color 180ms ease,color 180ms ease,opacity 180ms ease}
116
+ .cwn button:disabled{pointer-events:auto}
117
+ .cwn button:disabled:not(.cwn-send):hover{background:var(--dsw-alias-interactive-bg-hover)!important;color:var(--dsw-alias-label-secondary)}
118
+ .cwn .cwn-send:disabled:hover{background:var(--dsw-alias-button-info-hover)!important}
119
+ /* On white, hover-solid and the neutral resting fill look identical. Use the
120
+ stronger host active token for a visible neutral hover, retaining the fade. */
121
+ body:not([data-ds-dark-theme]) .cwn-back:hover:not(:disabled),
122
+ body:not([data-ds-dark-theme]) .cwn-filters button:not([aria-pressed=true]):hover:not(:disabled),
123
+ body:not([data-ds-dark-theme]) .cwn button:disabled:not(.cwn-send):hover{background:var(--dsw-alias-interactive-bg-active)!important}
124
+ @media(prefers-reduced-motion:reduce){.cwn button,.cwn summary,.cwn-entry,.cwn-model-popover button{transition:none}}
125
+ `;
126
+ // Harness 0.2.0-rc.2 ui-chat: ChatView / MessageIconActions module styles.
127
+ // These private components are not exported; public icons and theme tokens are
128
+ // reused. Native jump has no transition, and history actions fade in 80ms.
129
+ export const conversationInteractionStyles = `
130
+ .cwn-conversation{position:relative;flex:1;min-height:60px;display:flex;flex-direction:column}
131
+ .cwn-jump{z-index:8;height:0;padding:0;padding-right:max(calc(var(--dsh-composer-side-clearance,16px) + 16px),calc((100% - var(--dsh-chat-content-width,100%))/2));pointer-events:none;justify-content:flex-end;display:flex;position:absolute;bottom:16px;left:0;right:0}
132
+ .cwn .cwn-jump-button{--dsw-elevation-stroke-color:var(--dsw-alias-border-l3);corner-shape:round;width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill);box-shadow:var(--dsw-elevation-panel);cursor:pointer;pointer-events:auto;border:0;border-radius:100px;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex;transition:none}
133
+ .cwn .cwn-jump-button:hover{background:var(--dsw-alias-button-floating-hover)}
134
+ .cwn-message-label button{transition:none}
135
+ @media(hover:hover){
136
+ .cwn [data-actions-reveal=hover] .cwn-message-label{opacity:0;transition:opacity 80ms}
137
+ .cwn [data-actions-reveal=hover]:hover .cwn-message-label,.cwn [data-actions-reveal=hover]:focus-within .cwn-message-label{opacity:1}
138
+ }
139
+ `;
140
+ export const settingsStyles = `
141
+ .cwn-settings-dialog{width:min(800px,90vw);max-width:90vw;height:700px;max-height:100%}
142
+ .cwn-settings-content{padding-top:4px!important;min-height:0;flex:1;overflow:hidden}
143
+ .cwn-settings-content>div:last-child{flex:1;min-height:0}.cwn-settings-content>div:first-child{flex-shrink:0}
144
+ .cwn-settings-layout{display:grid;grid-template-columns:188px minmax(0,1fr);gap:24px;height:100%;min-height:0;font-family:var(--dsw-font-family);font-size:var(--dsw-font-s-14-font-size);line-height:var(--dsw-font-s-14-line-height);color:var(--dsw-alias-label-primary)}
145
+ .cwn-settings-layout *{box-sizing:border-box}
146
+ .cwn-settings-nav{display:flex;flex-direction:column;gap:6px;align-self:stretch;min-height:0;overflow:auto;overscroll-behavior:contain}.cwn-settings-nav>button{flex-shrink:0}
147
+ .cwn-settings-nav button{justify-content:flex-start;gap:10px;width:100%;font-weight:400}
148
+ .cwn-settings-nav button[aria-pressed=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-state-business-primary)}
149
+ .cwn-settings-nav-primary{padding:0 12px!important}
150
+ .cwn-settings-nav-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}
151
+ .cwn-settings-nav-primary[aria-expanded]{margin-top:6px}
152
+ .cwn-settings-nav-chevron{display:inline-flex;margin-left:auto;transition:transform 220ms cubic-bezier(.2,0,0,1)}
153
+ .cwn-settings-nav-primary[aria-expanded=false] .cwn-settings-nav-chevron{transform:rotate(-90deg)}
154
+ .cwn-settings-cli-group{display:grid;grid-template-rows:1fr;opacity:1;flex-shrink:0;transition:grid-template-rows 220ms cubic-bezier(.2,0,0,1),opacity 180ms ease,visibility 220ms}
155
+ .cwn-settings-cli-group[data-expanded=false]{grid-template-rows:0fr;opacity:0;visibility:hidden}
156
+ .cwn-settings-cli-group-inner{display:flex;flex-direction:column;gap:4px;min-height:0;overflow:hidden;padding-left:14px}
157
+ .cwn-settings-cli-group-inner>button{flex-shrink:0;padding:0 10px!important}
158
+ .cwn-settings-nav-label{flex:1;min-width:0;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
159
+ .cwn-settings-nav-status{width:14px;height:14px;display:flex;align-items:center;justify-content:center;flex:none}
160
+ .cwn-connection-dot{display:block;width:6px;height:6px;border-radius:50%;background:var(--dsw-alias-label-caption)}
161
+ .cwn-connection-dot[data-state=connected]{background:var(--dsw-alias-state-success-primary)}
162
+ .cwn-connection-dot[data-state=failed]{background:var(--dsw-alias-state-error-primary)}
163
+ .cwn-settings-nav button[data-enabled=false],.cwn-cli-identity[data-enabled=false] .cwn-settings-cli-name{color:var(--dsw-alias-label-caption)}
164
+ .cwn-settings-nav button[data-enabled=false] .cwn-brand,.cwn-cli-identity[data-enabled=false] .cwn-brand{filter:grayscale(1);opacity:.5}
165
+ .cwn-settings-pane{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:0 2px 8px 0}
166
+ .cwn-cli-identity,.cwn-settings-cli-name,.cwn-cli-toggle,.cwn-settings-section-tools{display:flex;align-items:center;gap:10px}
167
+ .cwn-cli-identity{justify-content:space-between;min-height:60px;padding:4px 0 0}
168
+ .cwn-settings-cli-name{gap:14px}.cwn-settings-cli-name h2{margin:0;font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.02em}.cwn-cli-subtitle{margin:4px 0 0;font-size:var(--dsw-font-xxs-12-font-size);line-height:18px;color:var(--dsw-alias-label-tertiary)}
169
+ .cwn-cli-toggle-status{height:20px;overflow:auto;margin:4px 0 4px;font-size:var(--dsw-font-xxs-12-font-size);line-height:18px;color:var(--dsw-alias-label-tertiary)}
170
+ .cwn-section-progress{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:none}
171
+ .cwn-settings-section{min-width:0}.cwn-settings-section+.cwn-settings-section{margin-top:20px;padding-top:16px;border-top:.5px solid var(--dsw-alias-border-l2)}
172
+ .cwn-settings-section-head,.cwn-account-terminal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;min-height:36px}
173
+ .cwn-settings-section-head h3{font-size:inherit;font-weight:500;margin:0}
174
+ .cwn-settings-form{display:flex;flex-direction:column;gap:0}.cwn-settings-form label{display:flex;flex-direction:column;gap:8px;color:var(--dsw-alias-label-secondary)}
175
+ .cwn-settings-choice{display:block;width:min(240px,48%);min-width:0;flex-shrink:0}.cwn-settings-choice>button{width:100%;justify-content:space-between;gap:12px;background:var(--dsw-alias-interactive-bg-hover)}.cwn-settings-choice>button>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
176
+ .cwn-settings-choice-menu{width:min(300px,85vw);min-width:min(220px,85vw);max-width:min(300px,85vw);max-height:300px;overflow:auto}
177
+ .cwn-settings-hint,.cwn-settings-feedback,.cwn-account-summary,.cwn-account-instruction{margin:0;font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere}
178
+ .cwn-account-row{display:flex;align-items:center;gap:12px;min-height:56px}.cwn-account-summary{display:flex;align-items:center;flex:1;min-width:0;min-height:52px;margin:0;color:var(--dsw-alias-label-secondary)}
179
+ .cwn-account-status-line{display:flex;align-items:center;min-width:0;gap:8px;min-height:24px;font-size:var(--dsw-font-s-14-font-size);line-height:22px}.cwn-account-login{display:inline-flex;align-items:center;gap:6px;min-width:0}.cwn-account-login:not([data-state=failed]){flex-shrink:0;white-space:nowrap}.cwn-account-login[data-state=connected]{color:var(--dsw-alias-state-success-primary)}.cwn-account-login[data-state=failed]{color:var(--dsw-alias-state-error-primary)}.cwn-account-login[data-state=disabled]{color:var(--dsw-alias-label-caption)}.cwn-account-status-dot{display:inline-block;flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--dsw-alias-label-caption)}.cwn-account-status-dot[data-state=connected]{background:var(--dsw-alias-state-success-primary)}.cwn-account-status-dot[data-state=failed]{background:var(--dsw-alias-state-error-primary)}.cwn-account-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-secondary)}
180
+ .cwn-settings-notice{min-height:20px;max-height:56px;overflow:auto;margin:8px 0 0}.cwn-settings-notice:empty{min-height:0;height:0;margin:0}
181
+ .cwn-settings-form .cwn-setting-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:24px;padding:16px 0;border-bottom:.5px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary)}.cwn-setting-row-text{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;font-size:var(--dsw-font-s-14-font-size);line-height:22px}.cwn-setting-description{font-size:var(--dsw-font-xxs-12-font-size);line-height:18px;color:var(--dsw-alias-label-tertiary)}.cwn-settings-save{margin-top:16px;justify-content:flex-end}
182
+ .cwn-settings-feedback-slot{min-height:20px;font-size:12px;line-height:20px;color:var(--dsw-alias-label-tertiary)}
183
+ .cwn-account-summary[data-provider-logins=true] .cwn-account-status-line{width:100%}.cwn-account-summary[data-provider-logins=true] .cwn-account-login{flex-shrink:1}.cwn-account-logins{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
184
+ .cwn-settings-feedback,.cwn-settings-save,.cwn-account-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
185
+ .cwn-account-actions{min-height:36px;flex-shrink:0;justify-content:flex-end;gap:8px}.cwn-account-actions button{background:transparent}.cwn-account-logout{flex-shrink:0;gap:5px!important;padding:0 8px!important;color:var(--dsw-alias-state-error-primary)!important}.cwn-account-logout:hover:not(:disabled){background:color-mix(in srgb,var(--dsw-alias-state-error-primary) 9%,transparent)!important}.cwn-refresh{width:36px!important;padding:0!important}.cwn-account-login-action,.cwn-account-manage{padding:0 10px!important}
186
+ .cwn-local-loading,.cwn-loading{display:flex;align-items:center;gap:8px;color:var(--dsw-alias-label-tertiary);font-size:var(--dsw-font-xxs-12-font-size);line-height:20px}
187
+ /* Native md Button owns the 36px height; native Switch keeps its own 36x20px geometry. */
188
+ .cwn-settings-choice-menu button{border:0;box-shadow:none;--dsw-elevation-stroke-color:transparent}.cwn-settings-layout button:not([role=switch]),.cwn-settings-choice-menu button{transition:background-color 180ms ease,color 180ms ease,opacity 180ms ease}
189
+ .cwn-account-actions button:hover:not(:disabled),.cwn-settings-section-head button:hover:not(:disabled),.cwn-settings-nav button:hover:not(:disabled),.cwn-account-terminal-head button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}
190
+ .cwn-settings-nav button[aria-pressed=true]:hover,.cwn-settings-choice>button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}
191
+ .cwn-settings-layout button:not([role=switch]):disabled{pointer-events:auto}
192
+ .cwn-settings-layout button:not([role=switch]):disabled:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-secondary)}
193
+ .cwn-settings-layout button:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}
194
+ .cwn-account-terminal{margin-top:16px;padding:12px;border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-layer-2);border:.5px solid var(--dsw-alias-border-l2);min-width:0}
195
+ .cwn-account-terminal-head{margin-bottom:8px}.cwn-account-terminal-head strong{font-size:12px;font-weight:500}.cwn-account-terminal-view{height:300px;min-height:200px;margin:12px 0;overflow:hidden}.cwn-account-terminal-view .xterm{height:100%}.cwn-account-terminal-view .xterm-viewport{background-color:var(--dsw-alias-bg-layer-2)!important}.cwn-account-terminal-view .xterm-helper-textarea{resize:none!important;min-height:0!important;max-height:0!important}
196
+ .cwn-native-model-settings>p{margin:0 0 16px;color:var(--dsw-alias-label-secondary);font-size:var(--cwn-font-sm);line-height:1.6}.cwn-account-dialog{width:min(720px,90vw);max-width:90vw}.cwn-account-dialog-content{min-height:0;overflow:auto}.cwn-account-dialog .cwn-account-terminal{margin:0;padding:0;border:0;background:transparent}.cwn-account-dialog .cwn-account-terminal-view{height:300px;max-height:48vh}.cwn-account-dialog .cwn-account-terminal button{border:0!important;transition:background-color 180ms ease,color 180ms ease}.cwn-account-dialog .cwn-account-terminal button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}
197
+ /* OMP onboarding needs room for its native header and provider list. Small screens scroll the modal body. */
198
+ .cwn-account-dialog .cwn-account-terminal[data-cli="omp"] .cwn-account-terminal-view{height:520px;max-height:none}
199
+ @media(max-width:640px){.cwn-account-row{flex-wrap:wrap}.cwn-account-actions{margin-left:auto}.cwn-settings-content{overflow:auto}.cwn-settings-layout{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:16px}.cwn-settings-nav{max-height:190px}.cwn-settings-cli-group-inner{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.cwn-settings-nav button{min-width:0}.cwn-settings-pane{overflow:auto}.cwn-settings-form .cwn-setting-row{gap:12px}.cwn-setting-description{max-width:180px}.cwn-account-terminal-view{height:240px}}
200
+ @media(prefers-reduced-motion:reduce){.cwn-settings-layout button,.cwn-settings-choice-menu button,.cwn-settings-nav-chevron,.cwn-settings-cli-group{transition:none}}
201
+ `;
202
+ export const rolePresetStyles = `
203
+ .cwn-roles-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0 20px}
204
+ .cwn-roles-heading h2{margin:0;font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.02em}
205
+ .cwn-roles-heading p{margin:8px 0 0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsw-font-s-14-font-size);line-height:22px}
206
+ .cwn-roles-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px}.cwn-roles-toolbar>span{flex:1;min-width:0}.cwn-roles-toolbar>button{flex-shrink:0}
207
+ .cwn-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-height:160px;align-content:start}
208
+ .cwn-role-card{min-width:0;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-xl);overflow:hidden;background:var(--dsw-alias-bg-layer-2)}
209
+ .cwn-role-card>button{display:flex;flex-direction:column;gap:7px;width:100%;height:100%;min-height:104px;padding:16px;text-align:left;background:transparent;color:inherit;font:inherit;border:0;cursor:pointer}
210
+ .cwn-role-card>button:hover{background:var(--dsw-alias-interactive-bg-hover)}
211
+ .cwn-role-card-heading{display:flex;align-items:center;justify-content:space-between;width:100%;gap:8px;min-width:0}.cwn-role-card-heading strong{font-size:var(--dsw-font-s-14-font-size);font-weight:500;overflow-wrap:anywhere}.cwn-role-card-heading svg{width:12px;height:12px;color:var(--dsw-alias-label-tertiary);flex-shrink:0;transform:rotate(90deg)}
212
+ .cwn-role-card-summary{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-label-tertiary)}
213
+ .cwn-role-editor{display:flex;flex-direction:column;gap:16px}.cwn-role-back{align-self:flex-start}.cwn-role-editor label{display:flex;flex-direction:column;gap:8px;min-width:0}.cwn-role-editor textarea{display:block;width:100%;min-height:240px;resize:vertical;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);padding:12px;font:inherit;line-height:1.65;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}
214
+ .cwn-role-editor textarea:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}
215
+ .cwn-role-editor-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.cwn-role-editor-actions>.cwn-role-delete{margin-right:auto}.cwn-role-delete{background:var(--dsw-alias-state-error-primary)!important;color:#fff!important}.cwn-role-delete:hover:not(:disabled){background:color-mix(in srgb,var(--dsw-alias-state-error-primary) 88%,#000)!important}.cwn-role-delete-confirm>button+button{margin-left:8px}
216
+ .cwn-role-delete-confirm{padding:12px;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover)}.cwn-role-delete-confirm p{margin:0 0 8px;font-size:var(--dsw-font-xxs-12-font-size)}
217
+ .cwn-role-feedback{min-height:22px;margin-top:12px;font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere}.cwn-role-feedback[role=alert]{color:var(--dsw-alias-state-error-primary)}.cwn-role-empty{color:var(--dsw-alias-label-tertiary);font-size:var(--dsw-font-s-14-font-size)}
218
+ .cwn-rename-dialog{width:min(420px,90vw);max-width:90vw}.cwn-rename-form>p{font-size:var(--dsw-font-xxs-12-font-size);color:var(--dsw-alias-label-tertiary);line-height:20px}
219
+ @media(max-width:700px){.cwn-role-grid{grid-template-columns:1fr}.cwn-roles-toolbar{flex-wrap:wrap}.cwn-roles-toolbar>span{flex-basis:100%}}
220
+ `;
221
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,qEAAqE;AACrE,kFAAkF;AAClF,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBrB,CAAA;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC/B,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;CAmBhC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;CAW9B,CAAA;AAED,4EAA4E;AAC5E,oFAAoF;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;CAatC,CAAA;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;CAWlC,CAAA;AAED,2EAA2E;AAC3E,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;CAU5C,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6D7B,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;CAkB/B,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { type Telemetry, type TokenUsage } from '../shared/telemetry.ts';
2
+ import type { Worker } from '../shared/types.ts';
3
+ export declare function UsageIndicator({ usage, reply }: {
4
+ usage?: TokenUsage;
5
+ reply?: boolean;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export declare function ComposerTelemetry({ worker, telemetry, statusLabel, }: {
8
+ worker: Worker;
9
+ telemetry?: Telemetry;
10
+ statusLabel: string;
11
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { IconDatabaseOutlineRegular } from '@deepseek-ai/dsh-client-ui-primitives';
3
+ import { compactTokens } from "../shared/telemetry.js";
4
+ import { StatPopover } from "./stat-popover.js";
5
+ export function UsageIndicator({ usage, reply = false }) {
6
+ const scope = {
7
+ response: '本次回复',
8
+ run: '本轮任务',
9
+ session: 'CLI 会话累计',
10
+ reported: 'CLI 报告值(不跨轮重复相加)',
11
+ };
12
+ const total = usage ? `${compactTokens(usage.total)} tok` : '— tok';
13
+ return (_jsxs(StatPopover, { label: reply ? `用量 ${total}` : total, className: `cwn-stat cwn-usage${reply ? ' cwn-reply-usage' : ''}`, trigger: _jsxs(_Fragment, { children: [_jsx(IconDatabaseOutlineRegular, { size: 14 }), _jsxs("span", { children: [reply ? '用量 ' : '', total] })] }), children: [_jsxs("div", { className: "cwn-stat-title", children: [_jsxs("span", { children: [_jsx(IconDatabaseOutlineRegular, { size: 14 }), "Token \u7528\u91CF"] }), _jsx("span", { children: usage ? `${usage.total.toLocaleString('en-US')} tok` : '—' })] }), _jsx("div", { className: "cwn-stat-rule" }), usage ? (_jsxs("dl", { className: "cwn-stat-details", children: [_jsx("dt", { children: "\u7EDF\u8BA1\u8303\u56F4" }), _jsx("dd", { children: scope[usage.scope] }), usage.input !== undefined && (_jsxs(_Fragment, { children: [_jsx("dt", { children: "\u8F93\u5165" }), _jsxs("dd", { children: [usage.input.toLocaleString('en-US'), " tok"] })] })), usage.cacheRead !== undefined && (_jsxs(_Fragment, { children: [_jsx("dt", { children: "\u7F13\u5B58\u8BFB\u53D6" }), _jsxs("dd", { children: [usage.cacheRead.toLocaleString('en-US'), " tok"] })] })), usage.output !== undefined && (_jsxs(_Fragment, { children: [_jsx("dt", { children: "\u8F93\u51FA" }), _jsxs("dd", { children: [usage.output.toLocaleString('en-US'), " tok"] })] }))] })) : (_jsx("p", { children: "CLI \u5C1A\u672A\u63D0\u4F9B\u53EF\u6838\u9A8C\u7684\u7528\u91CF\u3002" }))] }));
14
+ }
15
+ export function ComposerTelemetry({ worker, telemetry, statusLabel, }) {
16
+ const used = telemetry?.contextUsed, capacity = telemetry?.contextCapacity;
17
+ const percent = used !== undefined && capacity !== undefined && capacity > 0
18
+ ? Math.min(100, Math.round((used / capacity) * 100))
19
+ : undefined;
20
+ const label = percent === undefined ? '上下文占用暂不可用' : `上下文已用 ${percent}%`;
21
+ return (_jsxs("div", { className: "cwn-compose-state cwn-telemetry", children: [_jsxs("span", { className: "cwn-stat cwn-run-stat", children: [_jsx("span", { className: `cwn-dot ${worker.status}` }), _jsx("span", { children: statusLabel })] }), _jsx(UsageIndicator, { usage: telemetry?.usage }), _jsxs(StatPopover, { label: label, tooltip: label, context: true, className: "cwn-stat cwn-context", trigger: _jsxs(_Fragment, { children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", "aria-hidden": "true", children: [_jsx("circle", { cx: "7", cy: "7", r: "5.5", className: "cwn-context-track" }), percent !== undefined && (_jsx("circle", { cx: "7", cy: "7", r: "5.5", className: "cwn-context-fill", strokeDasharray: `${(percent * Math.PI * 11) / 100} ${Math.PI * 11}`, transform: "rotate(-90 7 7)" }))] }), _jsx("span", { children: percent === undefined ? '—' : `${percent}%` })] }), children: [_jsxs("div", { className: "cwn-context-header", children: [_jsx("span", { children: label }), used !== undefined && capacity !== undefined && (_jsxs("strong", { children: [telemetry?.contextEstimated ? '~' : '', compactTokens(used), " / ", compactTokens(capacity)] }))] }), percent !== undefined && (_jsx("div", { className: "cwn-context-bar", children: _jsx("span", { style: { width: `${percent}%` } }) })), _jsx("p", { className: "cwn-context-source", children: telemetry?.contextSource ??
22
+ (percent === undefined ? 'CLI 尚未提供上下文占用与容量。' : 'CLI 报告的上下文占用') }), used !== undefined && capacity !== undefined && (_jsxs("dl", { className: "cwn-stat-details", children: [_jsx("dt", { children: telemetry?.contextEstimated ? '估算占用' : '已用' }), _jsxs("dd", { children: [used.toLocaleString('en-US'), " tok"] }), _jsx("dt", { children: "\u4E0A\u4E0B\u6587\u5BB9\u91CF" }), _jsxs("dd", { children: [capacity.toLocaleString('en-US'), " tok"] })] }))] })] }));
23
+ }
24
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/client/telemetry.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type Worker } from '../shared/types.ts';
2
+ export type WorkerManagementAction = 'title' | 'name' | 'delete';
3
+ export declare function WorkerCard({ worker, collapsed, unavailable, busy, onOpen, onManage, }: {
4
+ worker: Worker;
5
+ collapsed: boolean;
6
+ unavailable: boolean;
7
+ busy: boolean;
8
+ onOpen: () => void;
9
+ onManage: (action: WorkerManagementAction) => void;
10
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { Menu } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { active, effortLabel, workerName } from "../shared/types.js";
5
+ import { displayModelName } from "../shared/model-presentation.js";
6
+ import { Glyph } from "./icons.js";
7
+ import { NameCopy } from "./name-copy.js";
8
+ const status = {
9
+ queued: '排队中',
10
+ running: '运行中',
11
+ stopping: '正在停止',
12
+ completed: '已完成',
13
+ failed: '失败',
14
+ interrupted: '已中断',
15
+ };
16
+ export function WorkerCard({ worker, collapsed, unavailable, busy, onOpen, onManage, }) {
17
+ const [menu, setMenu] = useState(false);
18
+ const point = useRef();
19
+ const card = useRef(null);
20
+ const openButton = useRef(null);
21
+ useEffect(() => {
22
+ if (collapsed)
23
+ setMenu(false);
24
+ }, [collapsed]);
25
+ const locked = collapsed || unavailable || busy;
26
+ const openMenu = (x, y) => {
27
+ if (collapsed)
28
+ return;
29
+ point.current = x === undefined || y === undefined ? undefined : { x, y };
30
+ setMenu(true);
31
+ };
32
+ const entries = [
33
+ { id: 'open', label: '打开对话', disabled: collapsed },
34
+ { id: 'title', label: '修改聊天标题', disabled: locked },
35
+ { id: 'name', label: '修改智能体名称', disabled: locked },
36
+ { type: 'separator', id: 'separator' },
37
+ { id: 'delete', label: '删除', disabled: locked || active(worker.status), danger: true },
38
+ ];
39
+ return (_jsx("div", { ref: card, className: "cwn-worker", "data-worker-id": worker.id, onClick: (event) => {
40
+ // The native menu portal still bubbles through this React owner. Only
41
+ // bare card/text areas open; every actual button owns its own action.
42
+ if (event.target.closest?.('button,[role="menu"]'))
43
+ return;
44
+ if (!collapsed)
45
+ onOpen();
46
+ }, onContextMenu: (event) => {
47
+ if (collapsed)
48
+ return;
49
+ event.preventDefault();
50
+ event.stopPropagation();
51
+ openMenu(event.clientX, event.clientY);
52
+ }, children: _jsx(Menu, { open: menu, portal: true, autoFocus: true, className: "cwn-worker-menu-anchor", listClassName: "cwn-worker-menu", getAnchorRect: () => {
53
+ if (point.current)
54
+ return new DOMRect(point.current.x, point.current.y, 0, 0);
55
+ return card.current?.getBoundingClientRect() ?? openButton.current?.getBoundingClientRect() ?? null;
56
+ }, onClose: () => setMenu(false), items: entries, onSelect: (id) => {
57
+ setMenu(false);
58
+ if (id === 'open')
59
+ onOpen();
60
+ else if (id === 'title' || id === 'name' || id === 'delete')
61
+ onManage(id);
62
+ }, anchor: _jsxs("div", { className: "cwn-worker-layout", children: [_jsx("button", { ref: openButton, type: "button", className: "cwn-worker-open", "data-open-worker-id": worker.id, "aria-haspopup": "menu", "aria-expanded": menu, "aria-keyshortcuts": "Shift+F10", tabIndex: collapsed ? -1 : undefined, onClick: () => {
63
+ if (!collapsed)
64
+ onOpen();
65
+ }, onKeyDown: (event) => {
66
+ if (event.key === 'ContextMenu' || (event.key === 'F10' && event.shiftKey)) {
67
+ if (collapsed)
68
+ return;
69
+ event.preventDefault();
70
+ event.stopPropagation();
71
+ openMenu();
72
+ }
73
+ }, children: _jsxs("span", { className: "cwn-worker-line", children: [_jsx("span", { className: "cwn-worker-title", children: worker.title }), _jsxs("span", { className: `cwn-worker-status ${worker.status}`, children: [_jsx("span", { className: `cwn-dot ${worker.status}` }), status[worker.status]] })] }) }), _jsxs("div", { className: "cwn-worker-meta", children: [_jsx(NameCopy, { name: workerName(worker), disabled: collapsed }), _jsx("span", { className: "cwn-meta-divider cwn-name-divider", "aria-hidden": "true" }), _jsx("span", { className: "cwn-worker-model", title: displayModelName(worker.preference), children: displayModelName(worker.preference) }), _jsx("span", { className: "cwn-meta-divider", "aria-hidden": "true", children: "\u00B7" }), _jsx("span", { children: effortLabel(worker.preference.effort) })] }), _jsx("span", { className: "cwn-worker-chevron", "aria-hidden": "true", children: _jsx(Glyph, { name: "chevron" }) })] }) }) }));
74
+ }
75
+ //# sourceMappingURL=worker-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-card.js","sourceRoot":"","sources":["../../../src/client/worker-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type Worker } from '../shared/types.ts';
2
+ import { type API } from './workers.ts';
3
+ /** Native menu primitive with the same model / effort drill-in flow as Harness ModelSelect. */
4
+ export declare function WorkerModelMenu({ worker, api, sessionId, disabled, }: {
5
+ worker: Worker;
6
+ api: API;
7
+ sessionId: string;
8
+ disabled: boolean;
9
+ }): import("react/jsx-runtime").JSX.Element;