@rohansguliani/mux-chat-ui 0.3.0 → 0.4.0

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 (802) hide show
  1. package/README.md +47 -55
  2. package/dist/testing.d.ts +17 -13
  3. package/dist/testing.js +72 -58
  4. package/kit/THIRD_PARTY_NOTICES.txt +3696 -0
  5. package/kit/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  6. package/kit/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  7. package/kit/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  8. package/kit/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  9. package/kit/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  10. package/kit/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  11. package/kit/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  12. package/kit/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  13. package/kit/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  14. package/kit/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  15. package/kit/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  16. package/kit/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  17. package/kit/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  18. package/kit/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  19. package/kit/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  20. package/kit/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  21. package/kit/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  22. package/kit/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  23. package/kit/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  24. package/kit/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  25. package/kit/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  26. package/kit/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  27. package/kit/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  28. package/kit/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  29. package/kit/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  30. package/kit/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  31. package/kit/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  32. package/kit/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  33. package/kit/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  34. package/kit/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  35. package/kit/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  36. package/kit/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  37. package/kit/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  38. package/kit/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  39. package/kit/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  40. package/kit/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  41. package/kit/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  42. package/kit/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  43. package/kit/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  44. package/kit/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  45. package/kit/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  46. package/kit/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  47. package/kit/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  48. package/kit/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  49. package/kit/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  50. package/kit/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  51. package/kit/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  52. package/kit/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  53. package/kit/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  54. package/kit/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  55. package/kit/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  56. package/kit/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  57. package/kit/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  58. package/kit/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  59. package/kit/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  60. package/kit/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  61. package/kit/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  62. package/kit/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  63. package/kit/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  64. package/kit/assets/abap-Dg923wIy.js +1 -0
  65. package/kit/assets/actionscript-3-CqOcUQ0w.js +1 -0
  66. package/kit/assets/ada-CTi7YQtL.js +1 -0
  67. package/kit/assets/ahk-BJYYIeOs.js +1 -0
  68. package/kit/assets/ahk2-BLfzmBxo.js +1 -0
  69. package/kit/assets/andromeeda-CT0vplkN.js +1 -0
  70. package/kit/assets/angular-html-DX9ZP5JV.js +1 -0
  71. package/kit/assets/angular-ts-1O2hJJmY.js +1 -0
  72. package/kit/assets/apache-PcO-DBxQ.js +1 -0
  73. package/kit/assets/apex-B4ts4Pdn.js +1 -0
  74. package/kit/assets/apl-Dz5ncP8G.js +1 -0
  75. package/kit/assets/applescript-Ds_W2jPS.js +1 -0
  76. package/kit/assets/ara-C1--7J61.js +1 -0
  77. package/kit/assets/asciidoc-DaaWi4fn.js +1 -0
  78. package/kit/assets/asm-CTFRnVOM.js +1 -0
  79. package/kit/assets/astro-BWgTGUF8.js +1 -0
  80. package/kit/assets/aurora-x-C0VKFdlO.js +1 -0
  81. package/kit/assets/awk-CrWgQKhV.js +1 -0
  82. package/kit/assets/ayu-dark-wZ6ORhBL.js +1 -0
  83. package/kit/assets/ayu-light-xXLJ_Ch1.js +1 -0
  84. package/kit/assets/ayu-mirage-CQckA_sP.js +1 -0
  85. package/kit/assets/ballerina-a0yOSyc5.js +1 -0
  86. package/kit/assets/bat-C1qk1Jq1.js +1 -0
  87. package/kit/assets/beancount-dPJi_gci.js +1 -0
  88. package/kit/assets/berry-CVKoklHx.js +1 -0
  89. package/kit/assets/bibtex-DRcCXNgM.js +1 -0
  90. package/kit/assets/bicep-jWz-hQ8I.js +1 -0
  91. package/kit/assets/bird2-wc5D5_X9.js +1 -0
  92. package/kit/assets/blade-DFktsHST.js +1 -0
  93. package/kit/assets/bsl-BtUDvyR4.js +1 -0
  94. package/kit/assets/c-BG-tZi7o.js +1 -0
  95. package/kit/assets/c3-R-USHpyF.js +1 -0
  96. package/kit/assets/cadence-BuaeHeSu.js +1 -0
  97. package/kit/assets/cairo-BYiDgOF2.js +1 -0
  98. package/kit/assets/catppuccin-frappe-CquLvoVK.js +1 -0
  99. package/kit/assets/catppuccin-latte-G5tdnGFo.js +1 -0
  100. package/kit/assets/catppuccin-macchiato-BZRq1pKO.js +1 -0
  101. package/kit/assets/catppuccin-mocha-Bbf5uIw6.js +1 -0
  102. package/kit/assets/chapel-D6IdCptL.js +1 -0
  103. package/kit/assets/clarity-BJ-KISir.js +1 -0
  104. package/kit/assets/clojure-KnfDkB_V.js +1 -0
  105. package/kit/assets/cmake-bh2MLnkv.js +1 -0
  106. package/kit/assets/cobol-DbURsbuN.js +1 -0
  107. package/kit/assets/codeowners-CtwIM3TN.js +1 -0
  108. package/kit/assets/codeql-D164juXQ.js +1 -0
  109. package/kit/assets/coffee-Bk-z6oI_.js +1 -0
  110. package/kit/assets/common-lisp-DXc9XcIM.js +1 -0
  111. package/kit/assets/coq-BIZj6HM_.js +1 -0
  112. package/kit/assets/cpp-C-tF_bWl.js +1 -0
  113. package/kit/assets/crystal-Dvqzbpz8.js +1 -0
  114. package/kit/assets/csharp-CFxe5pRo.js +1 -0
  115. package/kit/assets/css-Br67jR8j.js +1 -0
  116. package/kit/assets/csv-D5aBhKLr.js +1 -0
  117. package/kit/assets/cue-WCin6O4e.js +1 -0
  118. package/kit/assets/cypher-DYQk2G82.js +1 -0
  119. package/kit/assets/d-DVc-yF-l.js +1 -0
  120. package/kit/assets/dark-plus-DLU5INA3.js +1 -0
  121. package/kit/assets/dart-ByalkS20.js +1 -0
  122. package/kit/assets/dax-oldcCaJg.js +1 -0
  123. package/kit/assets/desktop-DZfyBMgF.js +1 -0
  124. package/kit/assets/diff-jW5kmiru.js +1 -0
  125. package/kit/assets/docker-DG9neUKd.js +1 -0
  126. package/kit/assets/dotenv-Bea-FkXq.js +1 -0
  127. package/kit/assets/dracula-XcYHBZy6.js +1 -0
  128. package/kit/assets/dracula-soft-BPeX9gxW.js +1 -0
  129. package/kit/assets/dream-maker-DAHQwpwp.js +1 -0
  130. package/kit/assets/edge-DTiORMU5.js +1 -0
  131. package/kit/assets/elixir-DnIH90qd.js +1 -0
  132. package/kit/assets/elm-BjIDgKzz.js +1 -0
  133. package/kit/assets/emacs-lisp-Ckw2FTkV.js +1 -0
  134. package/kit/assets/erb-CazEJMPD.js +1 -0
  135. package/kit/assets/erlang-DNeY46SW.js +1 -0
  136. package/kit/assets/everforest-dark-WOub3wle.js +1 -0
  137. package/kit/assets/everforest-light-DCUg8VH8.js +1 -0
  138. package/kit/assets/fennel-DBMsxtrh.js +1 -0
  139. package/kit/assets/fish-BxskpYPN.js +1 -0
  140. package/kit/assets/fluent-Bwo2XpEt.js +1 -0
  141. package/kit/assets/fortran-fixed-form-DFFnVrrY.js +1 -0
  142. package/kit/assets/fortran-free-form-DB5N_DgY.js +1 -0
  143. package/kit/assets/fsharp-DRAF1jsN.js +1 -0
  144. package/kit/assets/gdresource-B0Kp4-ms.js +1 -0
  145. package/kit/assets/gdscript-DKyjuXKv.js +1 -0
  146. package/kit/assets/gdshader-G7X6ysY3.js +1 -0
  147. package/kit/assets/genie-DSsjfZMX.js +1 -0
  148. package/kit/assets/gherkin-Cl2Fw-_0.js +1 -0
  149. package/kit/assets/git-commit-CJPsQObV.js +1 -0
  150. package/kit/assets/git-rebase-DeZqv4fp.js +1 -0
  151. package/kit/assets/github-dark-BQV5ugrc.js +1 -0
  152. package/kit/assets/github-dark-default-DLWDM7FH.js +1 -0
  153. package/kit/assets/github-dark-dimmed-D1FmiR_p.js +1 -0
  154. package/kit/assets/github-dark-high-contrast-BilLoi0o.js +1 -0
  155. package/kit/assets/github-light-Rcb2q3L5.js +1 -0
  156. package/kit/assets/github-light-default-CQ75esMw.js +1 -0
  157. package/kit/assets/github-light-high-contrast-CRF1wyLy.js +1 -0
  158. package/kit/assets/gleam-BeBqoPwE.js +1 -0
  159. package/kit/assets/glimmer-js-F_qk9EQT.js +1 -0
  160. package/kit/assets/glimmer-ts-Dhzi-GJU.js +1 -0
  161. package/kit/assets/glsl-BOG9l2nV.js +1 -0
  162. package/kit/assets/gn-Dxr0sSUf.js +1 -0
  163. package/kit/assets/gnuplot-CtW3R_Hz.js +1 -0
  164. package/kit/assets/go-B7VTfpnm.js +1 -0
  165. package/kit/assets/graphql-B6XHM4uj.js +1 -0
  166. package/kit/assets/groovy-DFxE31Qs.js +1 -0
  167. package/kit/assets/gruvbox-dark-hard-C37G1gbc.js +1 -0
  168. package/kit/assets/gruvbox-dark-medium-C3G9m3TV.js +1 -0
  169. package/kit/assets/gruvbox-dark-soft-eZmcmZ9I.js +1 -0
  170. package/kit/assets/gruvbox-light-hard-BYj-vz_3.js +1 -0
  171. package/kit/assets/gruvbox-light-medium-BdQlDiiF.js +1 -0
  172. package/kit/assets/gruvbox-light-soft-BGNwjiRh.js +1 -0
  173. package/kit/assets/hack-jRhjsWHJ.js +1 -0
  174. package/kit/assets/haml-C4vGXCDX.js +1 -0
  175. package/kit/assets/handlebars-BsldGL5W.js +1 -0
  176. package/kit/assets/haskell-BfdhR_WN.js +1 -0
  177. package/kit/assets/haxe-wmAaY_mP.js +1 -0
  178. package/kit/assets/hcl-B6OePqme.js +1 -0
  179. package/kit/assets/hjson-D2jn7IRw.js +1 -0
  180. package/kit/assets/hlsl-MKeth5V9.js +1 -0
  181. package/kit/assets/horizon-bright-BVMyA0so.js +1 -0
  182. package/kit/assets/horizon-cslQss18.js +1 -0
  183. package/kit/assets/houston-RHIKkNfR.js +1 -0
  184. package/kit/assets/html-BW_6VhB7.js +1 -0
  185. package/kit/assets/html-derivative-BxANmYVz.js +1 -0
  186. package/kit/assets/http-CG3jvXcS.js +1 -0
  187. package/kit/assets/hurl-CxQrh4RI.js +1 -0
  188. package/kit/assets/hxml-In6F2XHE.js +1 -0
  189. package/kit/assets/hy-DI6mCUnw.js +1 -0
  190. package/kit/assets/imba-D-Pk5S0X.js +1 -0
  191. package/kit/assets/index-CN35FGBT.js +2 -0
  192. package/kit/assets/index-CvcU6KJI.js +2 -0
  193. package/kit/assets/index-DKDjvsnq.js +12 -0
  194. package/kit/assets/ini-Dix3pTmg.js +1 -0
  195. package/kit/assets/java-BTDmaRNO.js +1 -0
  196. package/kit/assets/javascript-WyGyM1wV.js +1 -0
  197. package/kit/assets/jinja-CGKoJZuT.js +1 -0
  198. package/kit/assets/jison-B9XHrcYJ.js +1 -0
  199. package/kit/assets/json-B8JryHcM.js +1 -0
  200. package/kit/assets/json5-Cdatmj9n.js +1 -0
  201. package/kit/assets/jsonc-CvUCa1o5.js +1 -0
  202. package/kit/assets/jsonl-9I_GBd5L.js +1 -0
  203. package/kit/assets/jsonnet-XoenQ2oc.js +1 -0
  204. package/kit/assets/jssm-CWE2S0Z5.js +1 -0
  205. package/kit/assets/jsx-8cLv2Six.js +1 -0
  206. package/kit/assets/julia-CHsXSRRi.js +1 -0
  207. package/kit/assets/just-BhMjiL1x.js +1 -0
  208. package/kit/assets/kanagawa-dragon-elpLL9d7.js +1 -0
  209. package/kit/assets/kanagawa-lotus-qwxsXd6N.js +1 -0
  210. package/kit/assets/kanagawa-wave-CmHwPSUq.js +1 -0
  211. package/kit/assets/katex-HP8lGamR.js +257 -0
  212. package/kit/assets/kdl-CMbyIXjQ.js +1 -0
  213. package/kit/assets/kotlin-BQy537ds.js +1 -0
  214. package/kit/assets/kusto-Bh6esMjd.js +1 -0
  215. package/kit/assets/laserwave-si7wuSrt.js +1 -0
  216. package/kit/assets/latex-l4EWm08Q.js +1 -0
  217. package/kit/assets/lean-C4RHkN41.js +1 -0
  218. package/kit/assets/less-XNfgnZC7.js +1 -0
  219. package/kit/assets/light-plus-g_Fi9vkG.js +1 -0
  220. package/kit/assets/liquid-VEiCTF4k.js +1 -0
  221. package/kit/assets/llvm-CQZjIlnZ.js +1 -0
  222. package/kit/assets/log-CcaF_xNv.js +1 -0
  223. package/kit/assets/logo-D9WQLoKQ.js +1 -0
  224. package/kit/assets/lua-8Av-h-ns.js +1 -0
  225. package/kit/assets/luau-CmQFRJk_.js +1 -0
  226. package/kit/assets/make-DXVx14cr.js +1 -0
  227. package/kit/assets/markdown-DX-TNHnc.js +1 -0
  228. package/kit/assets/markdown-parse.worker-D0WrtDJ7.js +59 -0
  229. package/kit/assets/markdown.worker-DQJC0QHv.js +83 -0
  230. package/kit/assets/marko-6XzqJfhW.js +1 -0
  231. package/kit/assets/material-theme-CIJ3cGaW.js +1 -0
  232. package/kit/assets/material-theme-darker-BWg3m1GB.js +1 -0
  233. package/kit/assets/material-theme-lighter-DR8HWMN7.js +1 -0
  234. package/kit/assets/material-theme-ocean-CZf9pk28.js +1 -0
  235. package/kit/assets/material-theme-palenight-BF01YeZy.js +1 -0
  236. package/kit/assets/matlab-DzreyMvm.js +1 -0
  237. package/kit/assets/mdc-DRPSCe6f.js +1 -0
  238. package/kit/assets/mdx-C2fqO2XY.js +1 -0
  239. package/kit/assets/mermaid-B3PwCbv_.js +1 -0
  240. package/kit/assets/min-dark-DhfaepVE.js +1 -0
  241. package/kit/assets/min-light-6xx0uMgm.js +1 -0
  242. package/kit/assets/mipsasm-yE_Aqo9y.js +1 -0
  243. package/kit/assets/mojo-DoyaMtMQ.js +1 -0
  244. package/kit/assets/monokai-CfflZzqd.js +1 -0
  245. package/kit/assets/moonbit-GUn1DCOq.js +1 -0
  246. package/kit/assets/move-DgW29s8x.js +1 -0
  247. package/kit/assets/narrat-DXUZ_ZkW.js +1 -0
  248. package/kit/assets/nextflow-D9i3Mg89.js +1 -0
  249. package/kit/assets/nextflow-groovy-BtKenbWl.js +1 -0
  250. package/kit/assets/nginx-DSXkacNc.js +1 -0
  251. package/kit/assets/night-owl-EdP2Hztp.js +1 -0
  252. package/kit/assets/night-owl-light-Bk-lYVyk.js +1 -0
  253. package/kit/assets/nim-D9lokC5T.js +1 -0
  254. package/kit/assets/nix-Ckjrpg0r.js +1 -0
  255. package/kit/assets/nord-BAu0wM6c.js +1 -0
  256. package/kit/assets/nsis-C1FUr9r5.js +1 -0
  257. package/kit/assets/nushell-D7aJuCS6.js +1 -0
  258. package/kit/assets/objective-c-BoaBTdtz.js +1 -0
  259. package/kit/assets/objective-cpp-DstR8hNy.js +1 -0
  260. package/kit/assets/ocaml-DTbn2Hv7.js +1 -0
  261. package/kit/assets/odin-Bxc4S6Xn.js +1 -0
  262. package/kit/assets/one-dark-pro-utPxbBbJ.js +1 -0
  263. package/kit/assets/one-light-BuCQ22aO.js +1 -0
  264. package/kit/assets/openscad-CXHpNBsb.js +1 -0
  265. package/kit/assets/org-DcqggXXW.js +1 -0
  266. package/kit/assets/pascal-Sr-XLSE6.js +1 -0
  267. package/kit/assets/perl-CP_GSK0L.js +1 -0
  268. package/kit/assets/php-CNeTOyEV.js +1 -0
  269. package/kit/assets/pkl-CRusufhw.js +1 -0
  270. package/kit/assets/plastic-CXnNNlFZ.js +1 -0
  271. package/kit/assets/plsql-Dbm3tV2N.js +1 -0
  272. package/kit/assets/po-LG0lFwH4.js +1 -0
  273. package/kit/assets/poimandres-BrOVMvuE.js +1 -0
  274. package/kit/assets/polar-DjOs3GWb.js +1 -0
  275. package/kit/assets/postcss-GRRkWn2F.js +1 -0
  276. package/kit/assets/powerquery-DHf-dtTS.js +1 -0
  277. package/kit/assets/powershell-CUnxWBRw.js +1 -0
  278. package/kit/assets/prisma-HKDfktb8.js +1 -0
  279. package/kit/assets/prolog-9JcfiY6I.js +1 -0
  280. package/kit/assets/proto-dqx_Sj2i.js +1 -0
  281. package/kit/assets/pug-kUpeg2wB.js +1 -0
  282. package/kit/assets/puppet-Di57VbSS.js +1 -0
  283. package/kit/assets/purescript-BgpM7rDH.js +1 -0
  284. package/kit/assets/python-B6Ihcp-E.js +1 -0
  285. package/kit/assets/qml-DmGQGbca.js +1 -0
  286. package/kit/assets/qmldir-DXd9s5XC.js +1 -0
  287. package/kit/assets/qss-B7NnhfIi.js +1 -0
  288. package/kit/assets/r-C2sK8mqY.js +1 -0
  289. package/kit/assets/racket-CeDx7KO2.js +1 -0
  290. package/kit/assets/raku-BMJwmrCS.js +1 -0
  291. package/kit/assets/razor-C2a5o_rD.js +1 -0
  292. package/kit/assets/rbs-BNdQsBCU.js +1 -0
  293. package/kit/assets/red-D0qvOrrt.js +1 -0
  294. package/kit/assets/reg-Cvyu2Gnx.js +1 -0
  295. package/kit/assets/regexp-DK-WlHNu.js +1 -0
  296. package/kit/assets/rel-BlqNHz8k.js +1 -0
  297. package/kit/assets/riscv-C5dpdlr7.js +1 -0
  298. package/kit/assets/ron-j5NfrB3z.js +1 -0
  299. package/kit/assets/rose-pine-B13eftVv.js +1 -0
  300. package/kit/assets/rose-pine-dawn-BcSoidev.js +1 -0
  301. package/kit/assets/rose-pine-moon-QhZovmiB.js +1 -0
  302. package/kit/assets/rosmsg-ZkSIzPhc.js +1 -0
  303. package/kit/assets/rst-CgFL6KOR.js +1 -0
  304. package/kit/assets/ruby-CoSFdlpl.js +1 -0
  305. package/kit/assets/rust-CxuBE0J8.js +1 -0
  306. package/kit/assets/sas-DPMpzP9X.js +1 -0
  307. package/kit/assets/sass-bfEVHPJ8.js +1 -0
  308. package/kit/assets/scala-DT3kbCHL.js +1 -0
  309. package/kit/assets/scheme-OJppFQF3.js +1 -0
  310. package/kit/assets/scss-n48HZsmL.js +1 -0
  311. package/kit/assets/sdbl-CvZs3G9c.js +1 -0
  312. package/kit/assets/shaderlab-CEJedz68.js +1 -0
  313. package/kit/assets/shellscript-DgJyDXW6.js +1 -0
  314. package/kit/assets/shellsession-DSlzxnCM.js +1 -0
  315. package/kit/assets/slack-dark-CWRQmTmo.js +1 -0
  316. package/kit/assets/slack-ochin-DO_ok7XK.js +1 -0
  317. package/kit/assets/smalltalk-De6KzMWc.js +1 -0
  318. package/kit/assets/smithy-BVTkKWO9.js +1 -0
  319. package/kit/assets/snazzy-light-B5llO_gK.js +1 -0
  320. package/kit/assets/solarized-dark-BWFpDpV1.js +1 -0
  321. package/kit/assets/solarized-light-eZCMDrWD.js +1 -0
  322. package/kit/assets/solidity-SYSxO-p1.js +1 -0
  323. package/kit/assets/soy-DEV4yxgM.js +1 -0
  324. package/kit/assets/sparql-BJh4JEw-.js +1 -0
  325. package/kit/assets/splunk-h-bNAnbk.js +1 -0
  326. package/kit/assets/sprite-Fb-TFjRY.svg +11707 -0
  327. package/kit/assets/sql-Dq2MiB0T.js +1 -0
  328. package/kit/assets/ssh-config-CywOjoXH.js +1 -0
  329. package/kit/assets/stata-BcICKvEt.js +1 -0
  330. package/kit/assets/stylus-CIg617SB.js +1 -0
  331. package/kit/assets/surrealql-CWlK9SzL.js +1 -0
  332. package/kit/assets/svelte-B-Z8GLL9.js +1 -0
  333. package/kit/assets/swift-CGD9CJBj.js +1 -0
  334. package/kit/assets/synthwave-84-DRVv-_m_.js +1 -0
  335. package/kit/assets/system-verilog-CG_VWOG3.js +1 -0
  336. package/kit/assets/systemd-DKMPPZjB.js +1 -0
  337. package/kit/assets/talonscript-eRuyeYHl.js +1 -0
  338. package/kit/assets/tasl-B9CVvjfG.js +1 -0
  339. package/kit/assets/tcl-Bq9dbVAF.js +1 -0
  340. package/kit/assets/templ-W185oS4p.js +1 -0
  341. package/kit/assets/terraform-CAp711iT.js +1 -0
  342. package/kit/assets/tex-DNkCctwf.js +1 -0
  343. package/kit/assets/tokyo-night-BvwC8l2v.js +1 -0
  344. package/kit/assets/toml-Ms459DBw.js +1 -0
  345. package/kit/assets/ts-tags-xUT7JH_c.js +1 -0
  346. package/kit/assets/tsv-BFtm7NXx.js +1 -0
  347. package/kit/assets/tsx-D6116Ycy.js +1 -0
  348. package/kit/assets/turtle-DpRhbQZY.js +1 -0
  349. package/kit/assets/twig-k5g5DPXm.js +1 -0
  350. package/kit/assets/typescript-BqvgUolh.js +1 -0
  351. package/kit/assets/typespec-B09nCZui.js +1 -0
  352. package/kit/assets/typst-Dfd71gQj.js +1 -0
  353. package/kit/assets/v-DUsAht2M.js +1 -0
  354. package/kit/assets/vala-z59IxkFd.js +1 -0
  355. package/kit/assets/vb-A7jYO8Gn.js +1 -0
  356. package/kit/assets/verilog-jqltjd44.js +1 -0
  357. package/kit/assets/vesper-DxfWgk_t.js +1 -0
  358. package/kit/assets/vhdl-DJCsFYgn.js +1 -0
  359. package/kit/assets/viml-pbKHW3Ia.js +1 -0
  360. package/kit/assets/vitesse-black-B_BYPdvp.js +1 -0
  361. package/kit/assets/vitesse-dark-DOSOf2Sz.js +1 -0
  362. package/kit/assets/vitesse-light-gUX51GpB.js +1 -0
  363. package/kit/assets/vue-D2T8AFdP.js +1 -0
  364. package/kit/assets/vue-html-zEfNEgpj.js +1 -0
  365. package/kit/assets/vue-vine-DQRWX4iy.js +1 -0
  366. package/kit/assets/vyper-DpazWNpx.js +1 -0
  367. package/kit/assets/wasm-CFi-k9--.js +1 -0
  368. package/kit/assets/wasm-CG6Dc4jp.js +1 -0
  369. package/kit/assets/wenyan-CYFFG9DK.js +1 -0
  370. package/kit/assets/wgsl-CxjTZs-b.js +1 -0
  371. package/kit/assets/wikitext-Bx2qct8O.js +1 -0
  372. package/kit/assets/wit-DDW3hD69.js +1 -0
  373. package/kit/assets/wolfram-pu21K997.js +1 -0
  374. package/kit/assets/worker-DPHDIlCt.js +156 -0
  375. package/kit/assets/xml-BkAJuBCc.js +1 -0
  376. package/kit/assets/xsl-C6UUWSil.js +1 -0
  377. package/kit/assets/yaml-Bopit2L3.js +1 -0
  378. package/kit/assets/zenscript-BIAKq-aR.js +1 -0
  379. package/kit/assets/zig-bSFrHQ7n.js +1 -0
  380. package/kit/build.json +3 -0
  381. package/kit/chunks/abap-BdImnpbu.js +1 -0
  382. package/kit/chunks/abnfDiagram-VCTEODGH-Ekbmv6AY.js +1 -0
  383. package/kit/chunks/actionscript-3-B3316cI-.js +1 -0
  384. package/kit/chunks/ada-bCR0ucgS.js +1 -0
  385. package/kit/chunks/ahk-CsyLZFj1.js +1 -0
  386. package/kit/chunks/ahk2-8Zs4aa1G.js +1 -0
  387. package/kit/chunks/andromeeda-C4gqWexZ.js +1 -0
  388. package/kit/chunks/angular-html-DA-rfuFy.js +1 -0
  389. package/kit/chunks/angular-ts-BrjP3tb8.js +1 -0
  390. package/kit/chunks/apache-Pmp26Uib.js +1 -0
  391. package/kit/chunks/apex-DhZFqWV2.js +1 -0
  392. package/kit/chunks/apl-CORt7UWP.js +1 -0
  393. package/kit/chunks/app-chat-kit-CmncbKE7.js +885 -0
  394. package/kit/chunks/applescript-Co6uUVPk.js +1 -0
  395. package/kit/chunks/ara-BRHolxvo.js +1 -0
  396. package/kit/chunks/arc-CTvemvxA.js +1 -0
  397. package/kit/chunks/architecture-7GRP2DOG-Ek37_97Z.js +1 -0
  398. package/kit/chunks/architectureDiagram-5GKGNRK7-Dfo6x88c.js +36 -0
  399. package/kit/chunks/asciidoc-CSVQ5wI8.js +1 -0
  400. package/kit/chunks/asm-D_Q5rh1f.js +1 -0
  401. package/kit/chunks/astro-HNnZUWAn.js +1 -0
  402. package/kit/chunks/aurora-x-D-2ljcwZ.js +1 -0
  403. package/kit/chunks/awk-DMzUqQB5.js +1 -0
  404. package/kit/chunks/ayu-dark-DYE7WIF3.js +1 -0
  405. package/kit/chunks/ayu-light-BA47KaF1.js +1 -0
  406. package/kit/chunks/ayu-mirage-32ctXXKs.js +1 -0
  407. package/kit/chunks/ballerina-BFfxhgS-.js +1 -0
  408. package/kit/chunks/bat-CickPsom.js +1 -0
  409. package/kit/chunks/beancount-k_qm7-4y.js +1 -0
  410. package/kit/chunks/berry-uYugtg8r.js +1 -0
  411. package/kit/chunks/bibtex-CHM0blh-.js +1 -0
  412. package/kit/chunks/bicep-Bmn6On1c.js +1 -0
  413. package/kit/chunks/bird2-Bx8U0n9b.js +1 -0
  414. package/kit/chunks/blade-2xfisSek.js +1 -0
  415. package/kit/chunks/blockDiagram-NRAW4CY4-BREhUg_n.js +129 -0
  416. package/kit/chunks/bsl-DlhNcFeZ.js +1 -0
  417. package/kit/chunks/c-BIGW1oBm.js +1 -0
  418. package/kit/chunks/c3-Dp5svz6Z.js +1 -0
  419. package/kit/chunks/c4Diagram-UCG6FXSJ-CAoiRqwq.js +38 -0
  420. package/kit/chunks/cadence-Bv_4Rxtq.js +1 -0
  421. package/kit/chunks/cairo-KRGpt6FW.js +1 -0
  422. package/kit/chunks/catppuccin-frappe-CZL1YF0i.js +1 -0
  423. package/kit/chunks/catppuccin-latte-DH-8KZSZ.js +1 -0
  424. package/kit/chunks/catppuccin-macchiato-B7yYVSCf.js +1 -0
  425. package/kit/chunks/catppuccin-mocha-Ct7hS0mc.js +1 -0
  426. package/kit/chunks/channel-BCuymVz7.js +1 -0
  427. package/kit/chunks/chapel-DTp_pixX.js +1 -0
  428. package/kit/chunks/chunk-2Q5K7J3B-Dfj9NWMK.js +1 -0
  429. package/kit/chunks/chunk-5VM5RSS4-DDPHEz3o.js +15 -0
  430. package/kit/chunks/chunk-F27PBJKO-DjjkcfXV.js +1 -0
  431. package/kit/chunks/chunk-G27WJ6UU-BbKnleUj.js +231 -0
  432. package/kit/chunks/chunk-JWPE2WC7-CTyE03Ky.js +1 -0
  433. package/kit/chunks/chunk-LCL6LL3I-DLCIPv63.js +206 -0
  434. package/kit/chunks/chunk-POPQ4Y6H-vHDe0Ab2.js +1 -0
  435. package/kit/chunks/chunk-RHFEMEQ7-MYjE_XE-.js +168 -0
  436. package/kit/chunks/chunk-SVP7TREG-B-Z53M0l.js +88 -0
  437. package/kit/chunks/chunk-XXDRQBXY-Byur0hqD.js +1 -0
  438. package/kit/chunks/clarity-Dn5IMItf.js +1 -0
  439. package/kit/chunks/classDiagram-DTDB5LWJ-RWAJ513G.js +1 -0
  440. package/kit/chunks/classDiagram-v2-JRS7N3AN-RWAJ513G.js +1 -0
  441. package/kit/chunks/clojure-P80f7IUj.js +1 -0
  442. package/kit/chunks/cmake-D1j8_8rp.js +1 -0
  443. package/kit/chunks/cobol-nBiQ_Alo.js +1 -0
  444. package/kit/chunks/codeowners-Bp6g37R7.js +1 -0
  445. package/kit/chunks/codeql-DsOJ9woJ.js +1 -0
  446. package/kit/chunks/coffee-Ch7k5sss.js +1 -0
  447. package/kit/chunks/common-lisp-Cg-RD9OK.js +1 -0
  448. package/kit/chunks/coq-C7JzOVbR.js +1 -0
  449. package/kit/chunks/cose-bilkent-JH36ORCC-BJBTUpzs.js +1 -0
  450. package/kit/chunks/cpp-BMRokrvK.js +1 -0
  451. package/kit/chunks/crystal-DGywbUpC.js +1 -0
  452. package/kit/chunks/csharp-DSvCPggb.js +1 -0
  453. package/kit/chunks/css-CLj8gQPS.js +1 -0
  454. package/kit/chunks/csv-fuZLfV_i.js +1 -0
  455. package/kit/chunks/cue-D82EKSYY.js +1 -0
  456. package/kit/chunks/cynefin-OW5HDTMX-DximYq9_.js +1 -0
  457. package/kit/chunks/cynefinDiagram-5FMLGOSQ-C_H0NP3V.js +62 -0
  458. package/kit/chunks/cypher-COkxafJQ.js +1 -0
  459. package/kit/chunks/cytoscape.esm-CNiYdHpY.js +331 -0
  460. package/kit/chunks/d-85-TOEBH.js +1 -0
  461. package/kit/chunks/dagre-3AP2YEHR-B40iBpXe.js +4 -0
  462. package/kit/chunks/dark-plus-C3mMm8J8.js +1 -0
  463. package/kit/chunks/dart-bE4Kk8sk.js +1 -0
  464. package/kit/chunks/dax-CEL-wOlO.js +1 -0
  465. package/kit/chunks/defaultLocale-DX6XiGOO.js +1 -0
  466. package/kit/chunks/desktop-BmXAJ9_W.js +1 -0
  467. package/kit/chunks/diagram-S7CK7UJ4-B2xIXmUw.js +30 -0
  468. package/kit/chunks/diagram-UQ7AKVKN-DLWlOhvf.js +41 -0
  469. package/kit/chunks/diagram-VSXAHHWV-CtxWAwpJ.js +3 -0
  470. package/kit/chunks/diagram-VX7I27RA-C0oOsr2R.js +24 -0
  471. package/kit/chunks/diagram-Z3DM3KII-DguGhB-N.js +24 -0
  472. package/kit/chunks/diff-D97Zzqfu.js +1 -0
  473. package/kit/chunks/docker-BcOcwvcX.js +1 -0
  474. package/kit/chunks/dotenv-Da5cRb03.js +1 -0
  475. package/kit/chunks/dracula-BzJJZx-M.js +1 -0
  476. package/kit/chunks/dracula-soft-BXkSAIEj.js +1 -0
  477. package/kit/chunks/dream-maker-BtqSS_iP.js +1 -0
  478. package/kit/chunks/ebnfDiagram-PWID7BFC-CM2jytSc.js +1 -0
  479. package/kit/chunks/edge-FbVlp4U3.js +1 -0
  480. package/kit/chunks/elixir-CkH2-t6x.js +1 -0
  481. package/kit/chunks/elm-DbKCFpqz.js +1 -0
  482. package/kit/chunks/emacs-lisp-C_m_b--Z.js +1 -0
  483. package/kit/chunks/engine-compile-BrcillB_.js +152 -0
  484. package/kit/chunks/erDiagram-SSCWMZ5O-6AVzexk8.js +99 -0
  485. package/kit/chunks/erb-DXfck5VN.js +1 -0
  486. package/kit/chunks/erlang-DsQrWhSR.js +1 -0
  487. package/kit/chunks/eventmodeling-NTZA5JFV-i5VApXqj.js +1 -0
  488. package/kit/chunks/everforest-dark-BgDCqdQA.js +1 -0
  489. package/kit/chunks/everforest-light-C8M2exoo.js +1 -0
  490. package/kit/chunks/fennel-BYunw83y.js +1 -0
  491. package/kit/chunks/file-p1zS5m55.js +1524 -0
  492. package/kit/chunks/fish-BvzEVeQv.js +1 -0
  493. package/kit/chunks/flowDiagram-A5DVABFB-BXMY48By.js +1 -0
  494. package/kit/chunks/fluent-C4IJs8-o.js +1 -0
  495. package/kit/chunks/fortran-fixed-form-CkoXwp7k.js +1 -0
  496. package/kit/chunks/fortran-free-form-BxgE0vQu.js +1 -0
  497. package/kit/chunks/fsharp-CXgrBDvD.js +1 -0
  498. package/kit/chunks/ganttDiagram-EL5Y4UJY-CV7SNBW7.js +292 -0
  499. package/kit/chunks/gdresource-TyuKm33G.js +1 -0
  500. package/kit/chunks/gdscript-DqcFQ5yU.js +1 -0
  501. package/kit/chunks/gdshader-DkwncUOv.js +1 -0
  502. package/kit/chunks/genie-D0YGMca9.js +1 -0
  503. package/kit/chunks/gherkin-DyxjwDmM.js +1 -0
  504. package/kit/chunks/git-commit-F4YmCXRG.js +1 -0
  505. package/kit/chunks/git-rebase-r7XF79zn.js +1 -0
  506. package/kit/chunks/gitGraph-4MIJSDKK-J1V9VTkA.js +1 -0
  507. package/kit/chunks/gitGraphDiagram-WWUBYQGX-BCHc9w_M.js +106 -0
  508. package/kit/chunks/github-dark-DHJKELXO.js +1 -0
  509. package/kit/chunks/github-dark-default-Cuk6v7N8.js +1 -0
  510. package/kit/chunks/github-dark-dimmed-DH5Ifo-i.js +1 -0
  511. package/kit/chunks/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  512. package/kit/chunks/github-light-DAi9KRSo.js +1 -0
  513. package/kit/chunks/github-light-default-D7oLnXFd.js +1 -0
  514. package/kit/chunks/github-light-high-contrast-BfjtVDDH.js +1 -0
  515. package/kit/chunks/gleam-BspZqrRM.js +1 -0
  516. package/kit/chunks/glimmer-js-ByusRIyA.js +1 -0
  517. package/kit/chunks/glimmer-ts-BfAWNZQY.js +1 -0
  518. package/kit/chunks/glsl-DplSGwfg.js +1 -0
  519. package/kit/chunks/gn-n2N0HUVH.js +1 -0
  520. package/kit/chunks/gnuplot-DdkO51Og.js +1 -0
  521. package/kit/chunks/go-C27-OAKa.js +1 -0
  522. package/kit/chunks/graphql-ChdNCCLP.js +1 -0
  523. package/kit/chunks/groovy-gcz8RCvz.js +1 -0
  524. package/kit/chunks/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  525. package/kit/chunks/gruvbox-dark-medium-GsRaNv29.js +1 -0
  526. package/kit/chunks/gruvbox-dark-soft-CVdnzihN.js +1 -0
  527. package/kit/chunks/gruvbox-light-hard-CH1njM8p.js +1 -0
  528. package/kit/chunks/gruvbox-light-medium-DRw_LuNl.js +1 -0
  529. package/kit/chunks/gruvbox-light-soft-hJgmCMqR.js +1 -0
  530. package/kit/chunks/hack-BWmVpMyf.js +1 -0
  531. package/kit/chunks/haml-D5jkg6IW.js +1 -0
  532. package/kit/chunks/handlebars-BpdQsYii.js +1 -0
  533. package/kit/chunks/haskell-Df6bDoY_.js +1 -0
  534. package/kit/chunks/haxe-CfZj7gIn.js +1 -0
  535. package/kit/chunks/hcl-BWvSN4gD.js +1 -0
  536. package/kit/chunks/hjson-D5-asLiD.js +1 -0
  537. package/kit/chunks/hlsl-D3lLCCz7.js +1 -0
  538. package/kit/chunks/horizon-BUw7H-hv.js +1 -0
  539. package/kit/chunks/horizon-bright-CUuTKBJd.js +1 -0
  540. package/kit/chunks/houston-DnULxvSX.js +1 -0
  541. package/kit/chunks/html-derivative-DlHx6ybY.js +1 -0
  542. package/kit/chunks/html-pp8916En.js +1 -0
  543. package/kit/chunks/http-jrhK8wxY.js +1 -0
  544. package/kit/chunks/hurl-irOxFIW8.js +1 -0
  545. package/kit/chunks/hxml-2-FPmUDs.js +1 -0
  546. package/kit/chunks/hy-DFXneXwc.js +1 -0
  547. package/kit/chunks/imba-DGztddWO.js +1 -0
  548. package/kit/chunks/index-CN35FGBT.js +2 -0
  549. package/kit/chunks/index-CvcU6KJI.js +2 -0
  550. package/kit/chunks/index-CzdAxbXm.js +1 -0
  551. package/kit/chunks/index-D-Q6ihx1.js +518 -0
  552. package/kit/chunks/info-A6RAGUB7-Df1RDY9x.js +1 -0
  553. package/kit/chunks/infoDiagram-RXCK75RN-DkViDaAy.js +2 -0
  554. package/kit/chunks/ini-BEwlwnbL.js +1 -0
  555. package/kit/chunks/init-Gi6I4Gst.js +1 -0
  556. package/kit/chunks/ishikawaDiagram-5VMMS53U-DxEqVVmG.js +70 -0
  557. package/kit/chunks/java-CylS5w8V.js +1 -0
  558. package/kit/chunks/javascript-wDzz0qaB.js +1 -0
  559. package/kit/chunks/jinja-f2NsQr07.js +1 -0
  560. package/kit/chunks/jison-wvAkD_A8.js +1 -0
  561. package/kit/chunks/journeyDiagram-EYS64GPL-C6PuEAZM.js +139 -0
  562. package/kit/chunks/json-Cp-IABpG.js +1 -0
  563. package/kit/chunks/json5-C9tS-k6U.js +1 -0
  564. package/kit/chunks/jsonc-Des-eS-w.js +1 -0
  565. package/kit/chunks/jsonl-DcaNXYhu.js +1 -0
  566. package/kit/chunks/jsonnet-DFQXde-d.js +1 -0
  567. package/kit/chunks/jssm-C2t-YnRu.js +1 -0
  568. package/kit/chunks/jsx-g9-lgVsj.js +1 -0
  569. package/kit/chunks/julia-5Bft2YPA.js +1 -0
  570. package/kit/chunks/just-Cwhn7H3k.js +1 -0
  571. package/kit/chunks/kanagawa-dragon-BuwD2xS4.js +1 -0
  572. package/kit/chunks/kanagawa-lotus-C3DzagqV.js +1 -0
  573. package/kit/chunks/kanagawa-wave-DFGoQZhC.js +1 -0
  574. package/kit/chunks/kanban-definition-3QL26DDD-DOTf6YFB.js +89 -0
  575. package/kit/chunks/katex-HP8lGamR.js +257 -0
  576. package/kit/chunks/kdl-DV7GczEv.js +1 -0
  577. package/kit/chunks/kotlin-BdnUsdx6.js +1 -0
  578. package/kit/chunks/kusto-wEQ09or8.js +1 -0
  579. package/kit/chunks/laserwave-DUszq2jm.js +1 -0
  580. package/kit/chunks/latex-D5pSuvFb.js +1 -0
  581. package/kit/chunks/layout-CdSidOqg.js +1 -0
  582. package/kit/chunks/lean-BZvkOJ9d.js +1 -0
  583. package/kit/chunks/less-B1dDrJ26.js +1 -0
  584. package/kit/chunks/light-plus-B7mTdjB0.js +1 -0
  585. package/kit/chunks/linear-2B_RRiLc.js +1 -0
  586. package/kit/chunks/liquid-C0sCDyMI.js +1 -0
  587. package/kit/chunks/llvm-BZoOZj88.js +1 -0
  588. package/kit/chunks/log-2UxHyX5q.js +1 -0
  589. package/kit/chunks/logo-BtOb2qkB.js +1 -0
  590. package/kit/chunks/lua-BaeVxFsk.js +1 -0
  591. package/kit/chunks/luau-BnpPk5vE.js +1 -0
  592. package/kit/chunks/make-CHLpvVh8.js +1 -0
  593. package/kit/chunks/markdown-Cvjx9yec.js +1 -0
  594. package/kit/chunks/markdown-PrvsCtkO.js +7 -0
  595. package/kit/chunks/markdown-code-BP4ED3mK.js +1 -0
  596. package/kit/chunks/markdown-mermaid-C7inlIvD.js +2 -0
  597. package/kit/chunks/marked-parser-ucXGUtxA.js +1 -0
  598. package/kit/chunks/marko-DjSrsDqO.js +1 -0
  599. package/kit/chunks/material-theme-D5KoaKCx.js +1 -0
  600. package/kit/chunks/material-theme-darker-BfHTSMKl.js +1 -0
  601. package/kit/chunks/material-theme-lighter-B0m2ddpp.js +1 -0
  602. package/kit/chunks/material-theme-ocean-CyktbL80.js +1 -0
  603. package/kit/chunks/material-theme-palenight-Csfq5Kiy.js +1 -0
  604. package/kit/chunks/matlab-D7o27uSR.js +1 -0
  605. package/kit/chunks/mdc-D1_yUvq7.js +1 -0
  606. package/kit/chunks/mdx-Cmh6b_Ma.js +1 -0
  607. package/kit/chunks/mermaid-CQcHuHx7.js +1 -0
  608. package/kit/chunks/mermaid-parser.core-mF5sU-Xg.js +178 -0
  609. package/kit/chunks/mermaid.core-xKeJvOaV.js +309 -0
  610. package/kit/chunks/min-dark-CafNBF8u.js +1 -0
  611. package/kit/chunks/min-light-CTRr51gU.js +1 -0
  612. package/kit/chunks/mindmap-definition-FBJOCRG2-YJlqhJDe.js +96 -0
  613. package/kit/chunks/mipsasm-CKIfxQSi.js +1 -0
  614. package/kit/chunks/mojo-Blby8dQK.js +1 -0
  615. package/kit/chunks/monokai-BRVnQi9A.js +1 -0
  616. package/kit/chunks/moonbit-CHtswR0a.js +1 -0
  617. package/kit/chunks/move-el3G9tDJ.js +1 -0
  618. package/kit/chunks/narrat-DRg8JJMk.js +1 -0
  619. package/kit/chunks/nextflow-C-mBbutL.js +1 -0
  620. package/kit/chunks/nextflow-groovy-vE_lwT2v.js +1 -0
  621. package/kit/chunks/nginx-BpAMiNFr.js +1 -0
  622. package/kit/chunks/night-owl-C39BiMTA.js +1 -0
  623. package/kit/chunks/night-owl-light-CMTm3GFP.js +1 -0
  624. package/kit/chunks/nim-BIad80T-.js +1 -0
  625. package/kit/chunks/nix-CwoSXNpI.js +1 -0
  626. package/kit/chunks/nord-Ddv68eIx.js +1 -0
  627. package/kit/chunks/nsis-BlV79W_Q.js +1 -0
  628. package/kit/chunks/nushell-D3jzshHO.js +1 -0
  629. package/kit/chunks/objective-c-DXmwc3jG.js +1 -0
  630. package/kit/chunks/objective-cpp-CLxacb5B.js +1 -0
  631. package/kit/chunks/ocaml-C0hk2d4L.js +1 -0
  632. package/kit/chunks/odin-BBf5iR-q.js +1 -0
  633. package/kit/chunks/one-dark-pro-DVMEJ2y_.js +1 -0
  634. package/kit/chunks/one-light-C3Wv6jpd.js +1 -0
  635. package/kit/chunks/openscad-C4EeE6gA.js +1 -0
  636. package/kit/chunks/ordinal-Cboi1Yqb.js +1 -0
  637. package/kit/chunks/org-DM6o9KBp.js +1 -0
  638. package/kit/chunks/packet-AYTQ26CC-BVWhELL0.js +1 -0
  639. package/kit/chunks/pascal-D93ZcfNL.js +1 -0
  640. package/kit/chunks/pegDiagram-XKGWAZYB-C4MT3RNK.js +1 -0
  641. package/kit/chunks/perl-B9cMNwum.js +1 -0
  642. package/kit/chunks/php-Csjmro_R.js +1 -0
  643. package/kit/chunks/pie-WAS4IAKB-DOImHQUJ.js +1 -0
  644. package/kit/chunks/pieDiagram-E7YTZNPT-Hm0WPgzn.js +39 -0
  645. package/kit/chunks/pierre-dark-CyvmCCZW.js +1 -0
  646. package/kit/chunks/pierre-dark-protanopia-deuteranopia-Rgc0TwpF.js +1 -0
  647. package/kit/chunks/pierre-dark-soft-BHGpRqa4.js +1 -0
  648. package/kit/chunks/pierre-dark-tritanopia-Beq2gCRQ.js +1 -0
  649. package/kit/chunks/pierre-dark-vibrant-BWBVywrn.js +1 -0
  650. package/kit/chunks/pierre-light-480U9XYS.js +1 -0
  651. package/kit/chunks/pierre-light-protanopia-deuteranopia-CaVOBURG.js +1 -0
  652. package/kit/chunks/pierre-light-soft-CVdyfjmI.js +1 -0
  653. package/kit/chunks/pierre-light-tritanopia-B4_gpKOM.js +1 -0
  654. package/kit/chunks/pierre-light-vibrant-DdTDNdfJ.js +1 -0
  655. package/kit/chunks/pkl-u5AG7uiY.js +1 -0
  656. package/kit/chunks/plastic-3e1v2bzS.js +1 -0
  657. package/kit/chunks/plsql-ChMvpjG-.js +1 -0
  658. package/kit/chunks/po-BTJTHyun.js +1 -0
  659. package/kit/chunks/poimandres-CS3Unz2-.js +1 -0
  660. package/kit/chunks/polar-C0HS_06l.js +1 -0
  661. package/kit/chunks/postcss-CXtECtnM.js +1 -0
  662. package/kit/chunks/powerquery-CEu0bR-o.js +1 -0
  663. package/kit/chunks/powershell-BmBUJMz7.js +1 -0
  664. package/kit/chunks/prisma-Vru482bI.js +1 -0
  665. package/kit/chunks/prolog-CbFg5uaA.js +1 -0
  666. package/kit/chunks/proto-C7zT0LnQ.js +1 -0
  667. package/kit/chunks/pug-DKIMFp6K.js +1 -0
  668. package/kit/chunks/puppet-BMWR74SV.js +1 -0
  669. package/kit/chunks/purescript-CklMAg4u.js +1 -0
  670. package/kit/chunks/python-B6aJPvgy.js +1 -0
  671. package/kit/chunks/qml-3beO22l8.js +1 -0
  672. package/kit/chunks/qmldir-C8lEn-DE.js +1 -0
  673. package/kit/chunks/qss-IeuSbFQv.js +1 -0
  674. package/kit/chunks/quadrantDiagram-AXDQQJYC-BZTp7tGN.js +7 -0
  675. package/kit/chunks/r-Cf5RLm7j.js +1 -0
  676. package/kit/chunks/racket-BqYA7rlc.js +1 -0
  677. package/kit/chunks/radar-RG4KPBEZ-KbpEH3G6.js +1 -0
  678. package/kit/chunks/railroad-74A4TZTK-Cy0CCThT.js +1 -0
  679. package/kit/chunks/railroad-abnf-HS5TGJTU-CvknKf9w.js +1 -0
  680. package/kit/chunks/railroad-ebnf-LZEXJU2U-DPsJAhot.js +1 -0
  681. package/kit/chunks/railroad-peg-WCYAUIDC-CAZC7-ro.js +1 -0
  682. package/kit/chunks/railroadDiagram-O6MQD6OU-Cslq_ZZh.js +1 -0
  683. package/kit/chunks/raku-DXvB9xmW.js +1 -0
  684. package/kit/chunks/razor-BjBPvh-w.js +1 -0
  685. package/kit/chunks/rbs-CpoqiR4B.js +1 -0
  686. package/kit/chunks/red-hvxz__6c.js +1 -0
  687. package/kit/chunks/reg-C-SQnVFl.js +1 -0
  688. package/kit/chunks/regexp-CDVJQ6XC.js +1 -0
  689. package/kit/chunks/rel-C3B-1QV4.js +1 -0
  690. package/kit/chunks/requirementDiagram-EFPCY7ZU-CvFiO4QY.js +84 -0
  691. package/kit/chunks/riscv-BM1_JUlF.js +1 -0
  692. package/kit/chunks/ron-D8l8udqQ.js +1 -0
  693. package/kit/chunks/rose-pine-5qJOZa0Y.js +1 -0
  694. package/kit/chunks/rose-pine-dawn-zx0QlTCp.js +1 -0
  695. package/kit/chunks/rose-pine-moon-C9pEdX9L.js +1 -0
  696. package/kit/chunks/rosmsg-BJDFO7_C.js +1 -0
  697. package/kit/chunks/rst-bs7f0vWN.js +1 -0
  698. package/kit/chunks/ruby-C0TQ7zu5.js +1 -0
  699. package/kit/chunks/rust-B1yitclQ.js +1 -0
  700. package/kit/chunks/sankeyDiagram-P5KCCOFB-Da1DpNmD.js +40 -0
  701. package/kit/chunks/sas-DEy46yEz.js +1 -0
  702. package/kit/chunks/sass-Cj5Yp3dK.js +1 -0
  703. package/kit/chunks/scala-CqE71os6.js +1 -0
  704. package/kit/chunks/scheme-C98Dy4si.js +1 -0
  705. package/kit/chunks/scss-D5BDwBP9.js +1 -0
  706. package/kit/chunks/sdbl-DVxCFoDh.js +1 -0
  707. package/kit/chunks/sequenceDiagram-WJ2MYXX4-DxoNyZwj.js +162 -0
  708. package/kit/chunks/shaderlab-Dg9Lc6iA.js +1 -0
  709. package/kit/chunks/shellscript-Yzrsuije.js +1 -0
  710. package/kit/chunks/shellsession-BADoaaVG.js +1 -0
  711. package/kit/chunks/sizeCapture-X5ZJPWSS-BYc4ks_u.js +1 -0
  712. package/kit/chunks/slack-dark-BthQWCQV.js +1 -0
  713. package/kit/chunks/slack-ochin-DqwNpetd.js +1 -0
  714. package/kit/chunks/smalltalk-BOQMe2GC.js +1 -0
  715. package/kit/chunks/smithy-cds9vsN8.js +1 -0
  716. package/kit/chunks/snazzy-light-Bw305WKR.js +1 -0
  717. package/kit/chunks/solarized-dark-CpvCGNkr.js +1 -0
  718. package/kit/chunks/solarized-light-Dlz6yCKv.js +1 -0
  719. package/kit/chunks/solidity-DijEV5ha.js +1 -0
  720. package/kit/chunks/soy-8wufbnw4.js +1 -0
  721. package/kit/chunks/sparql-rVzFXLq3.js +1 -0
  722. package/kit/chunks/splunk-BtCnVYZw.js +1 -0
  723. package/kit/chunks/sql-CRqJ_cUM.js +1 -0
  724. package/kit/chunks/ssh-config-_ykCGR6B.js +1 -0
  725. package/kit/chunks/stata-DI20mbqo.js +1 -0
  726. package/kit/chunks/stateDiagram-HBIQ2CUA-pcNSv_wf.js +1 -0
  727. package/kit/chunks/stateDiagram-v2-4QOOHH4V-BdB1HxLL.js +1 -0
  728. package/kit/chunks/stylus-BEDo0Tqx.js +1 -0
  729. package/kit/chunks/surrealql-Cjom0U5J.js +1 -0
  730. package/kit/chunks/svelte-Cy7k_4gC.js +1 -0
  731. package/kit/chunks/swift-C2oV4EkX.js +1 -0
  732. package/kit/chunks/swimlanes-XN3QIQJK-D7wXTch1.js +1 -0
  733. package/kit/chunks/swimlanesDiagram-VK2B7HYN-BmYbYnek.js +8 -0
  734. package/kit/chunks/synthwave-84-CbfX1IO0.js +1 -0
  735. package/kit/chunks/system-verilog-0hqHdDBg.js +1 -0
  736. package/kit/chunks/systemd-4A_iFExJ.js +1 -0
  737. package/kit/chunks/talonscript-CkByrt1z.js +1 -0
  738. package/kit/chunks/tasl-QIJgUcNo.js +1 -0
  739. package/kit/chunks/tcl-dwOrl1Do.js +1 -0
  740. package/kit/chunks/templ-DhtptRzy.js +1 -0
  741. package/kit/chunks/terraform-BETggiCN.js +1 -0
  742. package/kit/chunks/tex-D96PA37w.js +1 -0
  743. package/kit/chunks/timeline-definition-24CTP7MA-BrPc1tMu.js +120 -0
  744. package/kit/chunks/tokyo-night-hegEt444.js +1 -0
  745. package/kit/chunks/toml-vGWfd6FD.js +1 -0
  746. package/kit/chunks/treeView-Q6P3EWNA-hcKZ8Aqa.js +1 -0
  747. package/kit/chunks/treemap-WGGIJYW6-VledEerh.js +1 -0
  748. package/kit/chunks/ts-tags-D351s5mN.js +1 -0
  749. package/kit/chunks/tsv-B_m7g4N7.js +1 -0
  750. package/kit/chunks/tsx-COt5Ahok.js +1 -0
  751. package/kit/chunks/turtle-BsS91CYL.js +1 -0
  752. package/kit/chunks/twig-27uCiNez.js +1 -0
  753. package/kit/chunks/typescript-BPQ3VLAy.js +1 -0
  754. package/kit/chunks/typespec-CAFt9gP4.js +1 -0
  755. package/kit/chunks/typst-DHCkPAjA.js +1 -0
  756. package/kit/chunks/v-BGw2Nkan.js +1 -0
  757. package/kit/chunks/vala-CsfeWuGM.js +1 -0
  758. package/kit/chunks/vb-Cu-pLBUe.js +1 -0
  759. package/kit/chunks/vennDiagram-4TSXK5OY-CMfntOoF.js +34 -0
  760. package/kit/chunks/verilog-nZwndyjY.js +1 -0
  761. package/kit/chunks/vesper-DRje8inN.js +1 -0
  762. package/kit/chunks/vhdl-CeAyd5Ju.js +1 -0
  763. package/kit/chunks/viml-CJc9bBzg.js +1 -0
  764. package/kit/chunks/vitesse-black-Bkuqu6BP.js +1 -0
  765. package/kit/chunks/vitesse-dark-D0r3Knsf.js +1 -0
  766. package/kit/chunks/vitesse-light-CVO1_9PV.js +1 -0
  767. package/kit/chunks/vue-BqiEGhQt.js +1 -0
  768. package/kit/chunks/vue-html-AaS7Mt5G.js +1 -0
  769. package/kit/chunks/vue-vine-BoDAl6tE.js +1 -0
  770. package/kit/chunks/vyper-CDx5xZoG.js +1 -0
  771. package/kit/chunks/wardley-WFR3VGLG-Bx5FYIM5.js +1 -0
  772. package/kit/chunks/wardleyDiagram-VM6X3IG4-C9foyd_h.js +78 -0
  773. package/kit/chunks/wasm-CG6Dc4jp.js +1 -0
  774. package/kit/chunks/wasm-MzD3tlZU.js +1 -0
  775. package/kit/chunks/wenyan-BV7otONQ.js +1 -0
  776. package/kit/chunks/wgsl-Dx-B1_4e.js +1 -0
  777. package/kit/chunks/wikitext-BhOHFoWU.js +1 -0
  778. package/kit/chunks/wit-5i3qLPDT.js +1 -0
  779. package/kit/chunks/wolfram-lXgVvXCa.js +1 -0
  780. package/kit/chunks/xml-sdJ4AIDG.js +1 -0
  781. package/kit/chunks/xsl-CtQFsRM5.js +1 -0
  782. package/kit/chunks/xychartDiagram-S5SC5T6Z-Bp0MWYj-.js +7 -0
  783. package/kit/chunks/yaml-Buea-lGh.js +1 -0
  784. package/kit/chunks/zenscript-DVFEvuxE.js +1 -0
  785. package/kit/chunks/zig-VOosw3JB.js +1 -0
  786. package/kit/index.d.ts +95 -0
  787. package/kit/index.js +1 -0
  788. package/kit/mux-build.json +1 -0
  789. package/kit/style.css +1 -0
  790. package/package.json +9 -15
  791. package/dist/controller.d.ts +0 -66
  792. package/dist/index.d.ts +0 -2
  793. package/dist/index.js +0 -1237
  794. package/dist/index.js.map +0 -1
  795. package/dist/markdown.d.ts +0 -2
  796. package/dist/model.d.ts +0 -33
  797. package/dist/mount.d.ts +0 -56
  798. package/dist/styles.d.ts +0 -2
  799. package/dist/testing.js.map +0 -1
  800. package/dist/view/Chat.d.ts +0 -26
  801. package/dist/view/parts.d.ts +0 -19
  802. package/dist/view/primitives.d.ts +0 -10
package/dist/index.js DELETED
@@ -1,1237 +0,0 @@
1
- import { className, createComponent, delegateEvents, effect, insert, memo, render, setAttribute, setStyleProperty, style, template, use } from "solid-js/web";
2
- import { For, Match, Show, Switch, batch, createComputed, createEffect, createMemo, createSignal, on, onCleanup, onMount, untrack } from "solid-js";
3
- import { createAppClient, createChatSession, createMemoryStore, createRuntimeTransport, isSessionStreaming, sessionPermissions, sessionQuestions, sessionTurns, textSubmission } from "@rohansguliani/mux-chat-core";
4
- import createDOMPurify from "dompurify";
5
- import { Marked } from "marked";
6
- //#endregion
7
- //#region src/styles.ts
8
- /** Mux's stylesheets in its cascade order, then the embed's layout on top. */
9
- var styles = [
10
- "/* Synced from Mux frontend/src/ui/styles/theme.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n:host {\n --font-family-sans: \"Inter\", \"Inter Fallback\";\n --font-family-sans--font-feature-settings: \"ss03\" 1;\n --font-family-mono: \"IBM Plex Mono\", \"IBM Plex Mono Fallback\";\n --font-family-mono--font-feature-settings: \"ss01\" 1;\n\n --font-size-small: 13px;\n --font-size-base: 14px;\n --font-size-large: 16px;\n --font-size-x-large: 20px;\n --font-weight-regular: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --line-height-normal: 130%;\n --line-height-large: 150%;\n --line-height-x-large: 180%;\n --line-height-2x-large: 200%;\n --letter-spacing-normal: 0;\n --letter-spacing-tight: -0.16px;\n --letter-spacing-tightest: -0.32px;\n --paragraph-spacing-base: 0;\n\n --spacing: 0.25rem;\n\n /* Label track for transcript activity rows (tool/thinking/context triggers).\n Content-sized, so each label sits one 8px gap from its detail text.\n Set a fixed length here to align column 2 across rows instead. */\n --activity-label-width: max-content;\n\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n --container-3xs: 16rem;\n --container-2xs: 18rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-xl: 36rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n\n --radius-xs: 0.125rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.625rem;\n\n --shadow-xs:\n 0 1px 2px -0.5px light-dark(hsl(0 0% 0% / 0.04), hsl(0 0% 0% / 0.06)),\n 0 0.5px 1.5px 0 light-dark(hsl(0 0% 0% / 0.025), hsl(0 0% 0% / 0.08)),\n 0 1px 3px 0 light-dark(hsl(0 0% 0% / 0.05), hsl(0 0% 0% / 0.1));\n --shadow-sm:\n 0 1px 3px 0 light-dark(hsl(0 0% 0% / 0.06), hsl(0 0% 0% / 0.12)),\n 0 1px 2px -1px light-dark(hsl(0 0% 0% / 0.06), hsl(0 0% 0% / 0.12));\n --shadow-md:\n 0 6px 12px -2px light-dark(hsl(0 0% 0% / 0.075), hsl(0 0% 0% / 0.1)),\n 0 4px 8px -2px light-dark(hsl(0 0% 0% / 0.075), hsl(0 0% 0% / 0.15)),\n 0 1px 2px light-dark(hsl(0 0% 0% / 0.1), hsl(0 0% 0% / 0.15));\n --shadow-lg:\n 0 16px 48px -6px light-dark(hsl(0 0% 0% / 0.05), hsl(0 0% 0% / 0.15)),\n 0 6px 12px -2px light-dark(hsl(0 0% 0% / 0.025), hsl(0 0% 0% / 0.1)),\n 0 1px 2.5px light-dark(hsl(0 0% 0% / 0.025), hsl(0 0% 0% / 0.1));\n --shadow-xl:\n 0 24px 64px -12px light-dark(hsl(0 0% 0% / 0.12), hsl(0 0% 0% / 0.4)),\n 0 8px 20px -6px light-dark(hsl(0 0% 0% / 0.06), hsl(0 0% 0% / 0.2));\n --shadow-xxs-border: 0 0 0 0.5px var(--border-weak-base, rgba(0, 0, 0, 0.07));\n --shadow-xs-border:\n 0 0 0 1px var(--border-base, rgba(11, 6, 0, 0.2)), 0 1px 2px -1px rgba(19, 16, 16, 0.04),\n 0 1px 2px 0 rgba(19, 16, 16, 0.06), 0 1px 3px 0 rgba(19, 16, 16, 0.08);\n --shadow-xs-border-base:\n 0 0 0 1px var(--border-weak-base, rgba(17, 0, 0, 0.12)), 0 1px 2px -1px rgba(19, 16, 16, 0.04),\n 0 1px 2px 0 rgba(19, 16, 16, 0.06), 0 1px 3px 0 rgba(19, 16, 16, 0.08);\n --shadow-xs-border-select:\n 0 0 0 3px var(--border-weak-selected, rgba(1, 103, 255, 0.29)),\n 0 0 0 1px var(--border-selected, rgba(0, 74, 255, 0.99)), 0 1px 2px -1px rgba(19, 16, 16, 0.25),\n 0 1px 2px 0 rgba(19, 16, 16, 0.08), 0 1px 3px 0 rgba(19, 16, 16, 0.12);\n --shadow-xs-border-focus:\n 0 0 0 1px var(--border-base, rgba(11, 6, 0, 0.2)), 0 1px 2px -1px rgba(19, 16, 16, 0.25),\n 0 1px 2px 0 rgba(19, 16, 16, 0.08), 0 1px 3px 0 rgba(19, 16, 16, 0.12), 0 0 0 2px var(--background-weak, #f1f0f0),\n 0 0 0 3px var(--border-selected, rgba(0, 74, 255, 0.99));\n --shadow-xs-border-hover:\n 0 0 0 1px var(--border-weak-selected, rgba(0, 112, 255, 0.22)), 0 1px 2px -1px rgba(19, 16, 16, 0.04),\n 0 1px 2px 0 rgba(19, 16, 16, 0.06), 0 1px 3px 0 rgba(19, 16, 16, 0.08);\n --shadow-xs-border-critical-base: 0 0 0 1px var(--border-critical-selected, #fc543a);\n --shadow-xs-border-critical-focus:\n 0 0 0 3px var(--border-critical-weak, rgba(251, 34, 0, 0.18)), 0 0 0 1px var(--border-critical-selected, #fc543a),\n 0 1px 2px -1px rgba(19, 16, 16, 0.25), 0 1px 2px 0 rgba(19, 16, 16, 0.08), 0 1px 3px 0 rgba(19, 16, 16, 0.12);\n --shadow-lg-border-base:\n 0 0 0 1px var(--border-weak-base, rgba(0, 0, 0, 0.07)), 0 36px 80px 0 rgba(0, 0, 0, 0.03),\n 0 13.141px 29.201px 0 rgba(0, 0, 0, 0.04), 0 6.38px 14.177px 0 rgba(0, 0, 0, 0.05),\n 0 3.127px 6.95px 0 rgba(0, 0, 0, 0.06), 0 1.237px 2.748px 0 rgba(0, 0, 0, 0.09);\n\n color-scheme: light;\n --text-mix-blend-mode: multiply;\n\n /* OC-2 fallback variables (light) */\n --background-base: #f8f8f8;\n --background-weak: #f3f3f3;\n --background-strong: #fcfcfc;\n --background-stronger: #fcfcfc;\n --surface-base: rgba(0, 0, 0, 0.031);\n --base: rgba(0, 0, 0, 0.034);\n --surface-base-hover: rgba(0, 0, 0, 0.059);\n --surface-base-active: rgba(0, 0, 0, 0.051);\n --surface-base-interactive-active: rgba(3, 76, 255, 0.09);\n --base2: rgba(0, 0, 0, 0.034);\n --base3: rgba(0, 0, 0, 0.034);\n --surface-inset-base: rgba(0, 0, 0, 0.034);\n --surface-inset-base-hover: rgba(0, 0, 0, 0.055);\n --surface-inset-strong: rgba(0, 0, 0, 0.09);\n --surface-inset-strong-hover: rgba(0, 0, 0, 0.09);\n --surface-raised-base: rgba(0, 0, 0, 0.031);\n --surface-float-base: #161616;\n --surface-float-base-hover: #1c1c1c;\n --surface-raised-base-hover: rgba(0, 0, 0, 0.051);\n --surface-raised-base-active: rgba(0, 0, 0, 0.09);\n --surface-raised-strong: #fcfcfc;\n --surface-raised-strong-hover: #ffffff;\n --surface-raised-stronger: #ffffff;\n --surface-raised-stronger-hover: #ffffff;\n --surface-weak: rgba(0, 0, 0, 0.051);\n --surface-weaker: rgba(0, 0, 0, 0.071);\n --surface-strong: #ffffff;\n --surface-stronger-non-alpha: var(--surface-raised-stronger-non-alpha);\n --surface-raised-stronger-non-alpha: #ffffff;\n --surface-panel: var(--surface-raised-stronger-non-alpha);\n --surface-panel-base: var(--surface-raised-stronger-non-alpha);\n --surface-brand-base: #dcde8d;\n --surface-brand-hover: #d0d283;\n --surface-interactive-base: #ecf3ff;\n --surface-interactive-hover: #e0eaff;\n --surface-interactive-weak: #f7faff;\n --surface-interactive-weak-hover: #ecf3ff;\n --surface-success-base: #dbfed7;\n --surface-success-weak: #f0feee;\n --surface-success-strong: #12c905;\n --surface-warning-base: #fcf3cb;\n --surface-warning-weak: #fdfaec;\n --surface-warning-strong: #fbdd46;\n --surface-critical-base: #fff2f0;\n --surface-critical-weak: #fff8f6;\n --surface-critical-strong: #fc533a;\n --surface-info-base: #fdecfe;\n --surface-info-weak: #fef7ff;\n --surface-info-strong: #a753ae;\n --surface-diff-unchanged-base: #ffffff00;\n --surface-diff-skip-base: #f8f8f8;\n --surface-diff-hidden-base: #eaf4ff;\n --surface-diff-hidden-weak: #f6faff;\n --surface-diff-hidden-weaker: #fbfdff;\n --surface-diff-hidden-strong: #cae3ff;\n --surface-diff-hidden-stronger: #2090f5;\n --surface-diff-add-base: #e3fae1;\n --surface-diff-add-weak: #f4fcf3;\n --surface-diff-add-weaker: #fbfefb;\n --surface-diff-add-strong: #c2eebf;\n --surface-diff-add-stronger: #9ff29a;\n --surface-diff-delete-base: #feefeb;\n --surface-diff-delete-weak: #fff8f6;\n --surface-diff-delete-weaker: #fffcfb;\n --surface-diff-delete-strong: #fdc3b7;\n --surface-diff-delete-stronger: #fc533a;\n --input-base: #fcfcfc;\n --input-hover: #f8f8f8;\n --input-active: #fcfdff;\n --input-selected: #e0eaff;\n --input-focus: #fcfdff;\n --input-disabled: #ededed;\n --text-base: #6f6f6f;\n --text-weak: #8f8f8f;\n --text-weaker: #c7c7c7;\n --text-strong: #171717;\n --text-invert-base: #f8f8f8;\n --text-invert-weak: #f3f3f3;\n --text-invert-weaker: #ededed;\n --text-invert-strong: #fcfcfc;\n --text-interactive-base: #034cff;\n --text-subtle: var(--text-weak);\n --accent: var(--text-interactive-base);\n --accent-base: var(--text-interactive-base);\n --danger-base: #ed4831;\n --danger-muted: rgba(237, 72, 49, 0.12);\n --text-danger-base: var(--danger-base);\n --text-text-danger-base: var(--danger-base);\n --text-on-brand-base: rgba(0, 0, 0, 0.574);\n --text-on-interactive-base: #fcfcfc;\n --text-on-interactive-weak: rgba(0, 0, 0, 0.574);\n --text-on-success-base: #2dba26;\n --text-on-critical-base: #ed4831;\n --text-on-critical-weak: #fe806a;\n --text-on-critical-strong: #601a0f;\n --text-on-warning-base: rgba(0, 0, 0, 0.574);\n --text-on-info-base: rgba(0, 0, 0, 0.574);\n --text-diff-add-base: #3a8437;\n --text-diff-delete-base: #ed4831;\n --text-diff-delete-strong: #601a0f;\n --text-diff-add-strong: #1d3e1c;\n --text-on-info-weak: rgba(0, 0, 0, 0.453);\n --text-on-info-strong: rgba(0, 0, 0, 0.915);\n --text-on-warning-weak: rgba(0, 0, 0, 0.453);\n --text-on-warning-strong: rgba(0, 0, 0, 0.915);\n --text-on-success-weak: #96ec8e;\n --text-on-success-strong: #044202;\n --text-on-brand-weak: rgba(0, 0, 0, 0.453);\n --text-on-brand-weaker: rgba(0, 0, 0, 0.232);\n --text-on-brand-strong: rgba(0, 0, 0, 0.915);\n --button-primary-base: #171717;\n --button-secondary-base: #fcfcfc;\n --button-secondary-hover: #f8f8f8;\n --button-ghost-hover: rgba(0, 0, 0, 0.031);\n --button-ghost-hover2: rgba(0, 0, 0, 0.051);\n --border-base: rgba(0, 0, 0, 0.162);\n --border-hover: rgba(0, 0, 0, 0.236);\n --border-active: rgba(0, 0, 0, 0.46);\n --border-selected: rgba(3, 76, 255, 0.99);\n --border-disabled: rgba(0, 0, 0, 0.236);\n --border-focus: rgba(0, 0, 0, 0.46);\n --border-weak-base: #e5e5e5;\n --border-strong-base: rgba(0, 0, 0, 0.151);\n --border-strong-hover: rgba(0, 0, 0, 0.232);\n --border-strong-active: rgba(0, 0, 0, 0.151);\n --border-strong-selected: rgba(3, 76, 255, 0.31);\n --border-strong-disabled: rgba(0, 0, 0, 0.118);\n --border-strong-focus: rgba(0, 0, 0, 0.151);\n --border-weak-hover: rgba(0, 0, 0, 0.118);\n --border-weak-active: rgba(0, 0, 0, 0.151);\n --border-weak-selected: rgba(3, 76, 255, 0.24);\n --border-weak-disabled: rgba(0, 0, 0, 0.118);\n --border-weak-focus: rgba(0, 0, 0, 0.151);\n --border-weaker-base: #f0f0f0;\n --border-weaker-hover: rgba(0, 0, 0, 0.075);\n --border-weaker-active: rgba(0, 0, 0, 0.118);\n --border-weaker-selected: rgba(3, 76, 255, 0.16);\n --border-weaker-disabled: rgba(0, 0, 0, 0.034);\n --border-weaker-focus: rgba(0, 0, 0, 0.118);\n --border-interactive-base: #a3c1fd;\n --border-interactive-hover: #7ea9ff;\n --border-interactive-active: #034cff;\n --border-interactive-selected: #034cff;\n --border-interactive-disabled: #c7c7c7;\n --border-interactive-focus: #034cff;\n --border-success-base: #96ec8e;\n --border-success-hover: #7add71;\n --border-success-selected: #12c905;\n --border-warning-base: #e8d479;\n --border-warning-hover: #d8c158;\n --border-warning-selected: #fbdd46;\n --border-critical-base: #fdc3b7;\n --border-critical-hover: #ffa796;\n --border-critical-selected: #fc533a;\n --border-info-base: #f4bdf8;\n --border-info-hover: #e6a8ea;\n --border-info-selected: #a753ae;\n --border-color: #ffffff;\n --icon-base: #8f8f8f;\n --icon-hover: #6f6f6f;\n --icon-active: #171717;\n --icon-selected: #171717;\n --icon-disabled: #c7c7c7;\n --icon-focus: #171717;\n --icon-invert-base: #ffffff;\n --icon-weak-base: #dbdbdb;\n --icon-weak-hover: #c7c7c7;\n --icon-weak-active: #8f8f8f;\n --icon-weak-selected: #858585;\n --icon-weak-disabled: #e2e2e2;\n --icon-weak-focus: #8f8f8f;\n --icon-strong-base: #171717;\n --icon-strong-hover: #151313;\n --icon-strong-active: #020202;\n --icon-strong-selected: #020202;\n --icon-strong-disabled: #c7c7c7;\n --icon-strong-focus: #020202;\n --icon-brand-base: #171717;\n --icon-interactive-base: #034cff;\n --icon-success-base: #7add71;\n --icon-success-hover: #4cc944;\n --icon-success-active: #078901;\n --icon-warning-base: #ebb76e;\n --icon-warning-hover: #da9e40;\n --icon-warning-active: #95671b;\n --icon-critical-base: #ed4831;\n --icon-critical-hover: #ca2d17;\n --icon-critical-active: #601a0f;\n --icon-info-base: #e6a8ea;\n --icon-info-hover: #d58cda;\n --icon-info-active: #9b4da1;\n --icon-on-brand-base: rgba(0, 0, 0, 0.574);\n --icon-on-brand-hover: rgba(0, 0, 0, 0.915);\n --icon-on-brand-selected: rgba(0, 0, 0, 0.915);\n --icon-on-interactive-base: #fcfcfc;\n --icon-agent-plan-base: #a753ae;\n --icon-agent-docs-base: #fcb239;\n --icon-agent-ask-base: #2090f5;\n --icon-agent-build-base: #034cff;\n --icon-on-success-base: rgba(18, 201, 5, 0.9);\n --icon-on-success-hover: rgba(45, 186, 38, 0.9);\n --icon-on-success-selected: rgba(7, 137, 1, 0.9);\n --icon-on-warning-base: rgba(252, 178, 57, 0.9);\n --icon-on-warning-hover: rgba(239, 167, 46, 0.9);\n --icon-on-warning-selected: rgba(149, 103, 27, 0.9);\n --icon-on-critical-base: rgba(252, 83, 58, 0.9);\n --icon-on-critical-hover: rgba(237, 72, 49, 0.9);\n --icon-on-critical-selected: rgba(202, 45, 23, 0.9);\n --icon-on-info-base: #a753ae;\n --icon-on-info-hover: rgba(155, 73, 162, 0.9);\n --icon-on-info-selected: rgba(155, 77, 161, 0.9);\n --icon-diff-add-base: #3a8437;\n --icon-diff-add-hover: #1d3e1c;\n --icon-diff-add-active: #1d3e1c;\n --icon-diff-delete-base: #ed4831;\n --icon-diff-delete-hover: #ca2d17;\n --icon-diff-modified-base: #ff8c00;\n --syntax-comment: var(--text-weak);\n --syntax-regexp: var(--text-base);\n --syntax-string: #006656;\n --syntax-keyword: var(--text-weak);\n --syntax-primitive: #fb4804;\n --syntax-operator: var(--text-base);\n --syntax-variable: var(--text-strong);\n --syntax-property: #ed6dc8;\n --syntax-type: #596600;\n --syntax-constant: #007b80;\n --syntax-punctuation: var(--text-base);\n --syntax-object: var(--text-strong);\n --syntax-success: #2dba26;\n --syntax-warning: #efa72e;\n --syntax-critical: #ed4831;\n --syntax-info: #0092a8;\n --syntax-diff-add: #3a8437;\n --syntax-diff-delete: #ca2d17;\n --syntax-diff-unknown: #ff0000;\n --markdown-heading: #d68c27;\n --markdown-text: #1a1a1a;\n --markdown-link: #3b7dd8;\n --markdown-link-text: #318795;\n --markdown-code: #3d9a57;\n --markdown-block-quote: #b0851f;\n --markdown-emph: #b0851f;\n --markdown-strong: #d68c27;\n --markdown-horizontal-rule: #8a8a8a;\n --markdown-list-item: #3b7dd8;\n --markdown-list-enumeration: #318795;\n --markdown-image: #3b7dd8;\n --markdown-image-text: #318795;\n --markdown-code-block: #1a1a1a;\n --avatar-background-pink: #feeef8;\n --avatar-background-mint: #e1fbf4;\n --avatar-background-orange: #fff1e7;\n --avatar-background-purple: #f9f1fe;\n --avatar-background-cyan: #e7f9fb;\n --avatar-background-lime: #eefadc;\n --avatar-text-pink: #cd1d8d;\n --avatar-text-mint: #147d6f;\n --avatar-text-orange: #ed5f00;\n --avatar-text-purple: #8445bc;\n --avatar-text-cyan: #0894b3;\n --avatar-text-lime: #5d770d;\n --text-stronger: #171717;\n\n\n}\n\n@media (prefers-color-scheme: dark) {\n :host(:not([data-theme=\"light\"])) {\n color-scheme: dark;\n --text-mix-blend-mode: plus-lighter;\n\n /* OC-2 fallback variables (dark) */\n --background-base: #101010;\n --background-weak: #1e1e1e;\n --background-strong: #121212;\n --background-stronger: #151515;\n --surface-base: rgba(255, 255, 255, 0.031);\n --base: rgba(255, 255, 255, 0.034);\n --surface-base-hover: rgba(255, 255, 255, 0.039);\n --surface-base-active: rgba(255, 255, 255, 0.059);\n --surface-base-interactive-active: rgba(3, 76, 255, 0.125);\n --base2: rgba(255, 255, 255, 0.034);\n --base3: rgba(255, 255, 255, 0.034);\n --surface-inset-base: rgba(0, 0, 0, 0.5);\n --surface-inset-base-hover: rgba(0, 0, 0, 0.5);\n --surface-inset-strong: rgba(0, 0, 0, 0.8);\n --surface-inset-strong-hover: rgba(0, 0, 0, 0.8);\n --surface-raised-base: rgba(255, 255, 255, 0.059);\n --surface-float-base: #161616;\n --surface-float-base-hover: #1c1c1c;\n --surface-raised-base-hover: rgba(255, 255, 255, 0.078);\n --surface-raised-base-active: rgba(255, 255, 255, 0.102);\n --surface-raised-strong: rgba(255, 255, 255, 0.078);\n --surface-raised-strong-hover: rgba(255, 255, 255, 0.129);\n --surface-raised-stronger: rgba(255, 255, 255, 0.129);\n --surface-raised-stronger-hover: rgba(255, 255, 255, 0.169);\n --surface-weak: rgba(255, 255, 255, 0.078);\n --surface-weaker: rgba(255, 255, 255, 0.102);\n --surface-strong: rgba(255, 255, 255, 0.169);\n --surface-stronger-non-alpha: var(--surface-raised-stronger-non-alpha);\n --surface-raised-stronger-non-alpha: #1c1c1c;\n --surface-panel: var(--surface-raised-stronger-non-alpha);\n --surface-panel-base: var(--surface-raised-stronger-non-alpha);\n --surface-brand-base: #fab283;\n --surface-brand-hover: #eda779;\n --surface-interactive-base: #091f52;\n --surface-interactive-hover: #091f52;\n --surface-interactive-weak: #0b1730;\n --surface-interactive-weak-hover: #ecf3ff;\n --surface-success-base: #062d04;\n --surface-success-weak: #0a1e08;\n --surface-success-strong: #12c905;\n --surface-warning-base: #fdf3cf;\n --surface-warning-weak: #fdfaed;\n --surface-warning-strong: #fcd53a;\n --surface-critical-base: #1f0603;\n --surface-critical-weak: #28110c;\n --surface-critical-strong: #fc533a;\n --surface-info-base: #feecfe;\n --surface-info-weak: #fdf7fe;\n --surface-info-strong: #edb2f1;\n --surface-diff-unchanged-base: #161616;\n --surface-diff-skip-base: #00000000;\n --surface-diff-hidden-base: #0c1928;\n --surface-diff-hidden-weak: #09131d;\n --surface-diff-hidden-weaker: #082542;\n --surface-diff-hidden-strong: #073966;\n --surface-diff-hidden-stronger: #8ec2fc;\n --surface-diff-add-base: #1a2919;\n --surface-diff-add-weak: #1f351e;\n --surface-diff-add-weaker: #1a2919;\n --surface-diff-add-strong: #264024;\n --surface-diff-add-stronger: #9bcd97;\n --surface-diff-delete-base: #42120b;\n --surface-diff-delete-weak: #580f06;\n --surface-diff-delete-weaker: #42120b;\n --surface-diff-delete-strong: #6a1206;\n --surface-diff-delete-stronger: #faa494;\n --input-base: #1c1c1c;\n --input-hover: #1c1c1c;\n --input-active: #091123;\n --input-selected: #0b1730;\n --input-focus: #091123;\n --input-disabled: #282828;\n --text-base: rgba(255, 255, 255, 0.618);\n --text-weak: rgba(255, 255, 255, 0.422);\n --text-weaker: rgba(255, 255, 255, 0.284);\n --text-strong: rgba(255, 255, 255, 0.936);\n --text-invert-base: #a0a0a0;\n --text-invert-weak: #707070;\n --text-invert-weaker: #505050;\n --text-invert-strong: #ededed;\n --text-interactive-base: #9dbefe;\n --text-subtle: var(--text-weak);\n --accent: var(--text-interactive-base);\n --accent-base: var(--text-interactive-base);\n --danger-base: #fc533a;\n --danger-muted: rgba(252, 83, 58, 0.16);\n --text-danger-base: var(--danger-base);\n --text-text-danger-base: var(--danger-base);\n --text-on-brand-base: rgba(255, 255, 255, 0.603);\n --text-on-interactive-base: #ededed;\n --text-on-interactive-weak: rgba(255, 255, 255, 0.603);\n --text-on-success-base: #12c905;\n --text-on-critical-base: #fc533a;\n --text-on-critical-weak: #b72d1a;\n --text-on-critical-strong: #ffe0da;\n --text-on-warning-base: rgba(255, 255, 255, 0.603);\n --text-on-info-base: rgba(255, 255, 255, 0.603);\n --text-diff-add-base: #9bcd97;\n --text-diff-delete-base: #fc533a;\n --text-diff-delete-strong: #ffe0da;\n --text-diff-add-strong: #4a7348;\n --text-on-info-weak: rgba(255, 255, 255, 0.404);\n --text-on-info-strong: rgba(255, 255, 255, 0.928);\n --text-on-warning-weak: rgba(255, 255, 255, 0.404);\n --text-on-warning-strong: rgba(255, 255, 255, 0.928);\n --text-on-success-weak: #127d0d;\n --text-on-success-strong: #bafdb3;\n --text-on-brand-weak: rgba(255, 255, 255, 0.404);\n --text-on-brand-weaker: rgba(255, 255, 255, 0.266);\n --text-on-brand-strong: rgba(255, 255, 255, 0.928);\n --button-primary-base: #ededed;\n --button-secondary-base: #1c1c1c;\n --button-secondary-hover: rgba(255, 255, 255, 0.039);\n --button-ghost-hover: rgba(255, 255, 255, 0.031);\n --button-ghost-hover2: rgba(255, 255, 255, 0.059);\n --border-base: rgba(255, 255, 255, 0.195);\n --border-hover: rgba(255, 255, 255, 0.284);\n --border-active: rgba(255, 255, 255, 0.418);\n --border-selected: #9dbefe;\n --border-disabled: rgba(255, 255, 255, 0.284);\n --border-focus: rgba(255, 255, 255, 0.418);\n --border-weak-base: #282828;\n --border-strong-base: rgba(255, 255, 255, 0.266);\n --border-strong-hover: rgba(255, 255, 255, 0.266);\n --border-strong-active: rgba(255, 255, 255, 0.266);\n --border-strong-selected: rgba(3, 76, 255, 0.62);\n --border-strong-disabled: rgba(255, 255, 255, 0.138);\n --border-strong-focus: rgba(255, 255, 255, 0.266);\n --border-weak-hover: rgba(255, 255, 255, 0.181);\n --border-weak-active: rgba(255, 255, 255, 0.266);\n --border-weak-selected: rgba(3, 76, 255, 0.62);\n --border-weak-disabled: rgba(255, 255, 255, 0.138);\n --border-weak-focus: rgba(255, 255, 255, 0.266);\n --border-weaker-base: #202020;\n --border-weaker-hover: rgba(255, 255, 255, 0.084);\n --border-weaker-active: rgba(255, 255, 255, 0.138);\n --border-weaker-selected: rgba(3, 76, 255, 0.32);\n --border-weaker-disabled: rgba(255, 255, 255, 0.034);\n --border-weaker-focus: rgba(255, 255, 255, 0.138);\n --border-interactive-base: #a3c1fd;\n --border-interactive-hover: #7ea9ff;\n --border-interactive-active: #034cff;\n --border-interactive-selected: #034cff;\n --border-interactive-disabled: #505050;\n --border-interactive-focus: #034cff;\n --border-success-base: #96ec8e;\n --border-success-hover: #7add71;\n --border-success-selected: #12c905;\n --border-warning-base: #e9d282;\n --border-warning-hover: #dac063;\n --border-warning-selected: #fcd53a;\n --border-critical-base: #6a1206;\n --border-critical-hover: #952414;\n --border-critical-selected: #fc533a;\n --border-info-base: #eac5ec;\n --border-info-hover: #dab1dd;\n --border-info-selected: #edb2f1;\n --border-color: #ffffff;\n --icon-base: #7e7e7e;\n --icon-hover: #a0a0a0;\n --icon-active: #ededed;\n --icon-selected: #ededed;\n --icon-disabled: #3e3e3e;\n --icon-focus: #ededed;\n --icon-invert-base: #161616;\n --icon-weak-base: #343434;\n --icon-weak-hover: #d9d9d9;\n --icon-weak-active: #c8c8c8;\n --icon-weak-selected: #707070;\n --icon-weak-disabled: #ededed;\n --icon-weak-focus: #707070;\n --icon-strong-base: #ededed;\n --icon-strong-hover: #f6f3f3;\n --icon-strong-active: #fcfcfc;\n --icon-strong-selected: #fdfcfc;\n --icon-strong-disabled: #3e3e3e;\n --icon-strong-focus: #fdfcfc;\n --icon-brand-base: #ffffff;\n --icon-interactive-base: #034cff;\n --icon-success-base: #12c905;\n --icon-success-hover: #35c02d;\n --icon-success-active: #4de144;\n --icon-warning-base: #fbb73c;\n --icon-warning-hover: #885e08;\n --icon-warning-active: #f1b13f;\n --icon-critical-base: #fc533a;\n --icon-critical-hover: #faa494;\n --icon-critical-active: #ffe0da;\n --icon-info-base: #68446b;\n --icon-info-hover: #815484;\n --icon-info-active: #dfa7e3;\n --icon-on-brand-base: rgba(255, 255, 255, 0.603);\n --icon-on-brand-hover: rgba(255, 255, 255, 0.928);\n --icon-on-brand-selected: rgba(255, 255, 255, 0.928);\n --icon-on-interactive-base: #ededed;\n --icon-agent-plan-base: #edb2f1;\n --icon-agent-docs-base: #fbb73c;\n --icon-agent-ask-base: #2090f5;\n --icon-agent-build-base: #9dbefe;\n --icon-on-success-base: rgba(18, 201, 5, 0.9);\n --icon-on-success-hover: rgba(53, 192, 45, 0.9);\n --icon-on-success-selected: rgba(77, 225, 68, 0.9);\n --icon-on-warning-base: rgba(251, 183, 60, 0.9);\n --icon-on-warning-hover: rgba(245, 178, 56, 0.9);\n --icon-on-warning-selected: rgba(241, 177, 63, 0.9);\n --icon-on-critical-base: rgba(252, 83, 58, 0.9);\n --icon-on-critical-hover: rgba(245, 79, 54, 0.9);\n --icon-on-critical-selected: rgba(250, 164, 148, 0.9);\n --icon-on-info-base: #edb2f1;\n --icon-on-info-hover: rgba(231, 173, 235, 0.9);\n --icon-on-info-selected: rgba(223, 167, 227, 0.9);\n --icon-diff-add-base: #9bcd97;\n --icon-diff-add-hover: #c3f9bf;\n --icon-diff-add-active: #9bcd97;\n --icon-diff-delete-base: #fc533a;\n --icon-diff-delete-hover: #f54f36;\n --icon-diff-modified-base: #ffba92;\n --syntax-comment: var(--text-weak);\n --syntax-regexp: var(--text-base);\n --syntax-string: #00ceb9;\n --syntax-keyword: var(--text-weak);\n --syntax-primitive: #ffba92;\n --syntax-operator: var(--text-weak);\n --syntax-variable: var(--text-strong);\n --syntax-property: #ff9ae2;\n --syntax-type: #ecf58c;\n --syntax-constant: #93e9f6;\n --syntax-punctuation: var(--text-weak);\n --syntax-object: var(--text-strong);\n --syntax-success: #35c02d;\n --syntax-warning: #f5b238;\n --syntax-critical: #f54f36;\n --syntax-info: #93e9f6;\n --syntax-diff-add: #9bcd97;\n --syntax-diff-delete: #faa494;\n --syntax-diff-unknown: #ff0000;\n --markdown-heading: #9d7cd8;\n --markdown-text: #eeeeee;\n --markdown-link: #fab283;\n --markdown-link-text: #56b6c2;\n --markdown-code: #7fd88f;\n --markdown-block-quote: #e5c07b;\n --markdown-emph: #e5c07b;\n --markdown-strong: #f5a742;\n --markdown-horizontal-rule: #808080;\n --markdown-list-item: #fab283;\n --markdown-list-enumeration: #56b6c2;\n --markdown-image: #fab283;\n --markdown-image-text: #56b6c2;\n --markdown-code-block: #eeeeee;\n --avatar-background-pink: #501b3f;\n --avatar-background-mint: #033a34;\n --avatar-background-orange: #5f2a06;\n --avatar-background-purple: #432155;\n --avatar-background-cyan: #0f3058;\n --avatar-background-lime: #2b3711;\n --avatar-text-pink: #e34ba9;\n --avatar-text-mint: #95f3d9;\n --avatar-text-orange: #ff802b;\n --avatar-text-purple: #9d5bd2;\n --avatar-text-cyan: #369eff;\n --avatar-text-lime: #c4f042;\n --text-stronger: rgba(255, 255, 255, 0.936);\n }\n}\n:host([data-theme=\"dark\"]) {\n color-scheme: dark;\n --text-mix-blend-mode: plus-lighter;\n\n /* OC-2 fallback variables (dark) */\n --background-base: #101010;\n --background-weak: #1e1e1e;\n --background-strong: #121212;\n --background-stronger: #151515;\n --surface-base: rgba(255, 255, 255, 0.031);\n --base: rgba(255, 255, 255, 0.034);\n --surface-base-hover: rgba(255, 255, 255, 0.039);\n --surface-base-active: rgba(255, 255, 255, 0.059);\n --surface-base-interactive-active: rgba(3, 76, 255, 0.125);\n --base2: rgba(255, 255, 255, 0.034);\n --base3: rgba(255, 255, 255, 0.034);\n --surface-inset-base: rgba(0, 0, 0, 0.5);\n --surface-inset-base-hover: rgba(0, 0, 0, 0.5);\n --surface-inset-strong: rgba(0, 0, 0, 0.8);\n --surface-inset-strong-hover: rgba(0, 0, 0, 0.8);\n --surface-raised-base: rgba(255, 255, 255, 0.059);\n --surface-float-base: #161616;\n --surface-float-base-hover: #1c1c1c;\n --surface-raised-base-hover: rgba(255, 255, 255, 0.078);\n --surface-raised-base-active: rgba(255, 255, 255, 0.102);\n --surface-raised-strong: rgba(255, 255, 255, 0.078);\n --surface-raised-strong-hover: rgba(255, 255, 255, 0.129);\n --surface-raised-stronger: rgba(255, 255, 255, 0.129);\n --surface-raised-stronger-hover: rgba(255, 255, 255, 0.169);\n --surface-weak: rgba(255, 255, 255, 0.078);\n --surface-weaker: rgba(255, 255, 255, 0.102);\n --surface-strong: rgba(255, 255, 255, 0.169);\n --surface-stronger-non-alpha: var(--surface-raised-stronger-non-alpha);\n --surface-raised-stronger-non-alpha: #1c1c1c;\n --surface-panel: var(--surface-raised-stronger-non-alpha);\n --surface-panel-base: var(--surface-raised-stronger-non-alpha);\n --surface-brand-base: #fab283;\n --surface-brand-hover: #eda779;\n --surface-interactive-base: #091f52;\n --surface-interactive-hover: #091f52;\n --surface-interactive-weak: #0b1730;\n --surface-interactive-weak-hover: #ecf3ff;\n --surface-success-base: #062d04;\n --surface-success-weak: #0a1e08;\n --surface-success-strong: #12c905;\n --surface-warning-base: #fdf3cf;\n --surface-warning-weak: #fdfaed;\n --surface-warning-strong: #fcd53a;\n --surface-critical-base: #1f0603;\n --surface-critical-weak: #28110c;\n --surface-critical-strong: #fc533a;\n --surface-info-base: #feecfe;\n --surface-info-weak: #fdf7fe;\n --surface-info-strong: #edb2f1;\n --surface-diff-unchanged-base: #161616;\n --surface-diff-skip-base: #00000000;\n --surface-diff-hidden-base: #0c1928;\n --surface-diff-hidden-weak: #09131d;\n --surface-diff-hidden-weaker: #082542;\n --surface-diff-hidden-strong: #073966;\n --surface-diff-hidden-stronger: #8ec2fc;\n --surface-diff-add-base: #1a2919;\n --surface-diff-add-weak: #1f351e;\n --surface-diff-add-weaker: #1a2919;\n --surface-diff-add-strong: #264024;\n --surface-diff-add-stronger: #9bcd97;\n --surface-diff-delete-base: #42120b;\n --surface-diff-delete-weak: #580f06;\n --surface-diff-delete-weaker: #42120b;\n --surface-diff-delete-strong: #6a1206;\n --surface-diff-delete-stronger: #faa494;\n --input-base: #1c1c1c;\n --input-hover: #1c1c1c;\n --input-active: #091123;\n --input-selected: #0b1730;\n --input-focus: #091123;\n --input-disabled: #282828;\n --text-base: rgba(255, 255, 255, 0.618);\n --text-weak: rgba(255, 255, 255, 0.422);\n --text-weaker: rgba(255, 255, 255, 0.284);\n --text-strong: rgba(255, 255, 255, 0.936);\n --text-invert-base: #a0a0a0;\n --text-invert-weak: #707070;\n --text-invert-weaker: #505050;\n --text-invert-strong: #ededed;\n --text-interactive-base: #9dbefe;\n --text-subtle: var(--text-weak);\n --accent: var(--text-interactive-base);\n --accent-base: var(--text-interactive-base);\n --danger-base: #fc533a;\n --danger-muted: rgba(252, 83, 58, 0.16);\n --text-danger-base: var(--danger-base);\n --text-text-danger-base: var(--danger-base);\n --text-on-brand-base: rgba(255, 255, 255, 0.603);\n --text-on-interactive-base: #ededed;\n --text-on-interactive-weak: rgba(255, 255, 255, 0.603);\n --text-on-success-base: #12c905;\n --text-on-critical-base: #fc533a;\n --text-on-critical-weak: #b72d1a;\n --text-on-critical-strong: #ffe0da;\n --text-on-warning-base: rgba(255, 255, 255, 0.603);\n --text-on-info-base: rgba(255, 255, 255, 0.603);\n --text-diff-add-base: #9bcd97;\n --text-diff-delete-base: #fc533a;\n --text-diff-delete-strong: #ffe0da;\n --text-diff-add-strong: #4a7348;\n --text-on-info-weak: rgba(255, 255, 255, 0.404);\n --text-on-info-strong: rgba(255, 255, 255, 0.928);\n --text-on-warning-weak: rgba(255, 255, 255, 0.404);\n --text-on-warning-strong: rgba(255, 255, 255, 0.928);\n --text-on-success-weak: #127d0d;\n --text-on-success-strong: #bafdb3;\n --text-on-brand-weak: rgba(255, 255, 255, 0.404);\n --text-on-brand-weaker: rgba(255, 255, 255, 0.266);\n --text-on-brand-strong: rgba(255, 255, 255, 0.928);\n --button-primary-base: #ededed;\n --button-secondary-base: #1c1c1c;\n --button-secondary-hover: rgba(255, 255, 255, 0.039);\n --button-ghost-hover: rgba(255, 255, 255, 0.031);\n --button-ghost-hover2: rgba(255, 255, 255, 0.059);\n --border-base: rgba(255, 255, 255, 0.195);\n --border-hover: rgba(255, 255, 255, 0.284);\n --border-active: rgba(255, 255, 255, 0.418);\n --border-selected: #9dbefe;\n --border-disabled: rgba(255, 255, 255, 0.284);\n --border-focus: rgba(255, 255, 255, 0.418);\n --border-weak-base: #282828;\n --border-strong-base: rgba(255, 255, 255, 0.266);\n --border-strong-hover: rgba(255, 255, 255, 0.266);\n --border-strong-active: rgba(255, 255, 255, 0.266);\n --border-strong-selected: rgba(3, 76, 255, 0.62);\n --border-strong-disabled: rgba(255, 255, 255, 0.138);\n --border-strong-focus: rgba(255, 255, 255, 0.266);\n --border-weak-hover: rgba(255, 255, 255, 0.181);\n --border-weak-active: rgba(255, 255, 255, 0.266);\n --border-weak-selected: rgba(3, 76, 255, 0.62);\n --border-weak-disabled: rgba(255, 255, 255, 0.138);\n --border-weak-focus: rgba(255, 255, 255, 0.266);\n --border-weaker-base: #202020;\n --border-weaker-hover: rgba(255, 255, 255, 0.084);\n --border-weaker-active: rgba(255, 255, 255, 0.138);\n --border-weaker-selected: rgba(3, 76, 255, 0.32);\n --border-weaker-disabled: rgba(255, 255, 255, 0.034);\n --border-weaker-focus: rgba(255, 255, 255, 0.138);\n --border-interactive-base: #a3c1fd;\n --border-interactive-hover: #7ea9ff;\n --border-interactive-active: #034cff;\n --border-interactive-selected: #034cff;\n --border-interactive-disabled: #505050;\n --border-interactive-focus: #034cff;\n --border-success-base: #96ec8e;\n --border-success-hover: #7add71;\n --border-success-selected: #12c905;\n --border-warning-base: #e9d282;\n --border-warning-hover: #dac063;\n --border-warning-selected: #fcd53a;\n --border-critical-base: #6a1206;\n --border-critical-hover: #952414;\n --border-critical-selected: #fc533a;\n --border-info-base: #eac5ec;\n --border-info-hover: #dab1dd;\n --border-info-selected: #edb2f1;\n --border-color: #ffffff;\n --icon-base: #7e7e7e;\n --icon-hover: #a0a0a0;\n --icon-active: #ededed;\n --icon-selected: #ededed;\n --icon-disabled: #3e3e3e;\n --icon-focus: #ededed;\n --icon-invert-base: #161616;\n --icon-weak-base: #343434;\n --icon-weak-hover: #d9d9d9;\n --icon-weak-active: #c8c8c8;\n --icon-weak-selected: #707070;\n --icon-weak-disabled: #ededed;\n --icon-weak-focus: #707070;\n --icon-strong-base: #ededed;\n --icon-strong-hover: #f6f3f3;\n --icon-strong-active: #fcfcfc;\n --icon-strong-selected: #fdfcfc;\n --icon-strong-disabled: #3e3e3e;\n --icon-strong-focus: #fdfcfc;\n --icon-brand-base: #ffffff;\n --icon-interactive-base: #034cff;\n --icon-success-base: #12c905;\n --icon-success-hover: #35c02d;\n --icon-success-active: #4de144;\n --icon-warning-base: #fbb73c;\n --icon-warning-hover: #885e08;\n --icon-warning-active: #f1b13f;\n --icon-critical-base: #fc533a;\n --icon-critical-hover: #faa494;\n --icon-critical-active: #ffe0da;\n --icon-info-base: #68446b;\n --icon-info-hover: #815484;\n --icon-info-active: #dfa7e3;\n --icon-on-brand-base: rgba(255, 255, 255, 0.603);\n --icon-on-brand-hover: rgba(255, 255, 255, 0.928);\n --icon-on-brand-selected: rgba(255, 255, 255, 0.928);\n --icon-on-interactive-base: #ededed;\n --icon-agent-plan-base: #edb2f1;\n --icon-agent-docs-base: #fbb73c;\n --icon-agent-ask-base: #2090f5;\n --icon-agent-build-base: #9dbefe;\n --icon-on-success-base: rgba(18, 201, 5, 0.9);\n --icon-on-success-hover: rgba(53, 192, 45, 0.9);\n --icon-on-success-selected: rgba(77, 225, 68, 0.9);\n --icon-on-warning-base: rgba(251, 183, 60, 0.9);\n --icon-on-warning-hover: rgba(245, 178, 56, 0.9);\n --icon-on-warning-selected: rgba(241, 177, 63, 0.9);\n --icon-on-critical-base: rgba(252, 83, 58, 0.9);\n --icon-on-critical-hover: rgba(245, 79, 54, 0.9);\n --icon-on-critical-selected: rgba(250, 164, 148, 0.9);\n --icon-on-info-base: #edb2f1;\n --icon-on-info-hover: rgba(231, 173, 235, 0.9);\n --icon-on-info-selected: rgba(223, 167, 227, 0.9);\n --icon-diff-add-base: #9bcd97;\n --icon-diff-add-hover: #c3f9bf;\n --icon-diff-add-active: #9bcd97;\n --icon-diff-delete-base: #fc533a;\n --icon-diff-delete-hover: #f54f36;\n --icon-diff-modified-base: #ffba92;\n --syntax-comment: var(--text-weak);\n --syntax-regexp: var(--text-base);\n --syntax-string: #00ceb9;\n --syntax-keyword: var(--text-weak);\n --syntax-primitive: #ffba92;\n --syntax-operator: var(--text-weak);\n --syntax-variable: var(--text-strong);\n --syntax-property: #ff9ae2;\n --syntax-type: #ecf58c;\n --syntax-constant: #93e9f6;\n --syntax-punctuation: var(--text-weak);\n --syntax-object: var(--text-strong);\n --syntax-success: #35c02d;\n --syntax-warning: #f5b238;\n --syntax-critical: #f54f36;\n --syntax-info: #93e9f6;\n --syntax-diff-add: #9bcd97;\n --syntax-diff-delete: #faa494;\n --syntax-diff-unknown: #ff0000;\n --markdown-heading: #9d7cd8;\n --markdown-text: #eeeeee;\n --markdown-link: #fab283;\n --markdown-link-text: #56b6c2;\n --markdown-code: #7fd88f;\n --markdown-block-quote: #e5c07b;\n --markdown-emph: #e5c07b;\n --markdown-strong: #f5a742;\n --markdown-horizontal-rule: #808080;\n --markdown-list-item: #fab283;\n --markdown-list-enumeration: #56b6c2;\n --markdown-image: #fab283;\n --markdown-image-text: #56b6c2;\n --markdown-code-block: #eeeeee;\n --avatar-background-pink: #501b3f;\n --avatar-background-mint: #033a34;\n --avatar-background-orange: #5f2a06;\n --avatar-background-purple: #432155;\n --avatar-background-cyan: #0f3058;\n --avatar-background-lime: #2b3711;\n --avatar-text-pink: #e34ba9;\n --avatar-text-mint: #95f3d9;\n --avatar-text-orange: #ff802b;\n --avatar-text-purple: #9d5bd2;\n --avatar-text-cyan: #369eff;\n --avatar-text-lime: #c4f042;\n --text-stronger: rgba(255, 255, 255, 0.936);\n }\n",
11
- "/* Synced from Mux frontend/src/ui/styles/animations.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n:host {\n --animate-pulse: pulse-opacity 2s ease-in-out infinite;\n --animate-pulse-scale: pulse-scale 1.2s ease-in-out infinite;\n}\n\n@keyframes pulse-opacity {\n 0%,\n 100% {\n opacity: 0.4;\n }\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes pulse-scale {\n 0%,\n 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.6666667);\n }\n}\n\n@keyframes pulse-opacity-dim {\n 0%,\n 100% {\n opacity: 0.15;\n }\n 50% {\n opacity: 0.35;\n }\n}\n\n@keyframes fadeUp {\n from {\n opacity: 0;\n transform: translateY(5px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.fade-up-text {\n animation: fadeUp 0.4s ease-out forwards;\n opacity: 0;\n\n &:nth-child(1) {\n animation-delay: 0.1s;\n }\n &:nth-child(2) {\n animation-delay: 0.2s;\n }\n &:nth-child(3) {\n animation-delay: 0.3s;\n }\n &:nth-child(4) {\n animation-delay: 0.4s;\n }\n &:nth-child(5) {\n animation-delay: 0.5s;\n }\n &:nth-child(6) {\n animation-delay: 0.6s;\n }\n &:nth-child(7) {\n animation-delay: 0.7s;\n }\n &:nth-child(8) {\n animation-delay: 0.8s;\n }\n &:nth-child(9) {\n animation-delay: 0.9s;\n }\n &:nth-child(10) {\n animation-delay: 1s;\n }\n &:nth-child(11) {\n animation-delay: 1.1s;\n }\n &:nth-child(12) {\n animation-delay: 1.2s;\n }\n &:nth-child(13) {\n animation-delay: 1.3s;\n }\n &:nth-child(14) {\n animation-delay: 1.4s;\n }\n &:nth-child(15) {\n animation-delay: 1.5s;\n }\n &:nth-child(16) {\n animation-delay: 1.6s;\n }\n &:nth-child(17) {\n animation-delay: 1.7s;\n }\n &:nth-child(18) {\n animation-delay: 1.8s;\n }\n &:nth-child(19) {\n animation-delay: 1.9s;\n }\n &:nth-child(20) {\n animation-delay: 2s;\n }\n &:nth-child(21) {\n animation-delay: 2.1s;\n }\n &:nth-child(22) {\n animation-delay: 2.2s;\n }\n &:nth-child(23) {\n animation-delay: 2.3s;\n }\n &:nth-child(24) {\n animation-delay: 2.4s;\n }\n &:nth-child(25) {\n animation-delay: 2.5s;\n }\n &:nth-child(26) {\n animation-delay: 2.6s;\n }\n &:nth-child(27) {\n animation-delay: 2.7s;\n }\n &:nth-child(28) {\n animation-delay: 2.8s;\n }\n &:nth-child(29) {\n animation-delay: 2.9s;\n }\n &:nth-child(30) {\n animation-delay: 3s;\n }\n}\n",
12
- "/* Synced from Mux frontend/src/ui/components/icon-button.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n[data-component=\"icon-button\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-sm);\n text-decoration: none;\n user-select: none;\n aspect-ratio: 1;\n flex-shrink: 0;\n\n &[data-variant=\"primary\"] {\n background-color: var(--icon-strong-base);\n\n [data-slot=\"icon-svg\"] {\n /* color: var(--icon-weak-base); */\n color: var(--icon-invert-base);\n\n /* &:hover:not(:disabled) { */\n /* color: var(--icon-weak-hover); */\n /* } */\n /* &:active:not(:disabled) { */\n /* color: var(--icon-strong-active); */\n /* } */\n }\n\n @media (hover: hover) {\n &:hover:not(:disabled) {\n background-color: var(--icon-strong-hover);\n }\n }\n &:focus:not(:disabled) {\n background-color: var(--icon-strong-focus);\n }\n &:active:not(:disabled) {\n background-color: var(--icon-strong-active);\n }\n &:disabled {\n background-color: var(--icon-strong-disabled);\n\n [data-slot=\"icon-svg\"] {\n color: var(--icon-invert-base);\n }\n }\n }\n\n &[data-variant=\"secondary\"] {\n border: transparent;\n background-color: var(--button-secondary-base);\n color: var(--text-strong);\n box-shadow: var(--shadow-xs-border-base);\n\n @media (hover: hover) {\n &:hover:not(:disabled) {\n background-color: var(--button-secondary-hover);\n }\n }\n &:focus:not(:disabled) {\n background-color: var(--button-secondary-base);\n }\n &:focus-visible:not(:active) {\n background-color: var(--button-secondary-base);\n box-shadow: var(--shadow-xs-border-focus);\n }\n &:focus-visible:active {\n box-shadow: none;\n }\n &:active:not(:disabled) {\n background-color: var(--button-secondary-base);\n }\n\n [data-slot=\"icon-svg\"] {\n color: var(--icon-strong-base);\n }\n\n &:disabled {\n background-color: var(--icon-strong-disabled);\n color: var(--icon-invert-base);\n cursor: not-allowed;\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n /* color: var(--icon-base); */\n\n [data-slot=\"icon-svg\"] {\n color: var(--icon-base);\n }\n\n @media (hover: hover) {\n &:hover:not(:disabled) {\n background-color: var(--surface-base-hover);\n\n /* [data-slot=\"icon-svg\"] { */\n /* color: var(--icon-hover); */\n /* } */\n }\n }\n &:focus-visible:not(:disabled) {\n background-color: var(--surface-base-hover);\n }\n &:active:not(:disabled) {\n background-color: var(--surface-base-active);\n /* [data-slot=\"icon-svg\"] { */\n /* color: var(--icon-active); */\n /* } */\n }\n &:selected:not(:disabled) {\n background-color: var(--surface-base-active);\n /* [data-slot=\"icon-svg\"] { */\n /* color: var(--icon-selected); */\n /* } */\n }\n &:disabled {\n color: var(--icon-invert-base);\n cursor: not-allowed;\n }\n }\n\n &[data-size=\"normal\"] {\n width: 24px;\n height: 24px;\n\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n gap: calc(var(--spacing) * 0.5);\n }\n\n &[data-size=\"small\"] {\n width: 20px;\n height: 20px;\n }\n\n &[data-size=\"large\"] {\n height: 32px;\n /* padding: 0 8px 0 6px; */\n gap: 8px;\n\n /* text-12-medium */\n font-family: var(--font-family-sans);\n font-size: var(--font-size-small);\n font-style: normal;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large); /* 166.667% */\n letter-spacing: var(--letter-spacing-normal);\n }\n\n &:focus {\n outline: none;\n }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n [data-component=\"icon-button\"][data-icon=\"stop\"] [data-slot=\"icon-svg\"] rect {\n transform-origin: center;\n transform-box: fill-box;\n animation: stop-pulse 1.8s ease-in-out infinite;\n }\n}\n\n@keyframes stop-pulse {\n 0%,\n 100% {\n transform: scale(0.95);\n }\n 50% {\n transform: scale(1.12);\n }\n}\n\n[data-component=\"icon-button\"].titlebar-icon {\n width: 32px;\n height: 24px;\n aspect-ratio: auto;\n}\n\n[data-component=\"icon-button\"].titlebar-icon[data-variant=\"ghost\"][aria-expanded=\"true\"] {\n background-color: var(--surface-raised-base-active);\n}\n\n[data-component=\"icon-button\"].titlebar-icon[data-variant=\"ghost\"][aria-expanded=\"true\"] [data-slot=\"icon-svg\"] {\n color: var(--icon-strong-base);\n}\n\n@media (hover: hover) {\n [data-component=\"icon-button\"].titlebar-icon[data-variant=\"ghost\"][aria-expanded=\"true\"]:hover:not(:disabled) {\n background-color: var(--surface-raised-base-active);\n }\n}\n",
13
- "/* Synced from Mux frontend/src/ui/components/spinner.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n[data-component=\"spinner\"] {\n color: inherit;\n flex-shrink: 0;\n width: 18px;\n aspect-ratio: 1;\n}\n",
14
- "/* Synced from Mux frontend/src/ui/components/collapsible.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n[data-slot=\"collapsible-collapse\"] {\n min-height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n [data-component=\"icon-button\"] {\n width: 28px;\n height: 28px;\n\n [data-slot=\"icon-svg\"] {\n transform: rotate(180deg);\n }\n }\n}\n\n[data-component=\"collapsible\"] {\n width: 100%;\n display: flex;\n flex-direction: column;\n background-color: transparent;\n border: none;\n transition: background-color 0.15s ease;\n border-radius: var(--radius-md);\n overflow: visible;\n\n &.tool-collapsible {\n gap: 8px;\n }\n\n [data-slot=\"collapsible-trigger\"]:has(\n > [data-layout=\"activity-row\"]\n ) {\n min-height: 28px;\n height: auto;\n }\n\n [data-slot=\"collapsible-trigger\"] {\n width: 100%;\n display: flex;\n height: 32px;\n padding: 0;\n align-items: center;\n align-self: stretch;\n cursor: default;\n user-select: none;\n color: var(--text-base);\n /* Triggers render as <button>, which still defaults to centered text. */\n text-align: start;\n\n [data-slot=\"collapsible-arrow\"] {\n opacity: 0;\n transition: opacity 0.15s ease;\n will-change: opacity;\n transform: translateZ(0);\n }\n\n [data-slot=\"collapsible-arrow-icon\"] {\n display: inline-flex;\n color: var(--icon-weaker);\n transform: translateZ(0) rotate(-90deg);\n transition: transform 0.15s ease;\n will-change: transform;\n }\n\n &:hover [data-slot=\"collapsible-arrow\"] {\n opacity: 1;\n }\n\n /* text-12-medium */\n font-family: var(--font-family-sans);\n font-size: var(--font-size-small);\n font-style: normal;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large); /* 166.667% */\n letter-spacing: var(--letter-spacing-normal);\n\n /* &:hover { */\n /* background-color: var(--surface-base); */\n /* } */\n &:focus-visible {\n outline: none;\n background-color: var(--surface-raised-base-hover);\n }\n &[data-disabled] {\n cursor: not-allowed;\n }\n\n [data-slot=\"collapsible-arrow\"] {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &[data-size=\"compact\"] {\n width: 16px;\n height: 16px;\n }\n }\n }\n\n [data-slot=\"collapsible-trigger\"][aria-expanded=\"true\"] {\n [data-slot=\"collapsible-arrow\"] {\n opacity: 1;\n }\n\n [data-slot=\"collapsible-arrow-icon\"] {\n transform: translateZ(0) rotate(0deg);\n }\n }\n\n [data-slot=\"collapsible-content\"] {\n overflow: hidden;\n\n &[data-expanded] {\n overflow: visible;\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n border: none;\n\n > [data-slot=\"collapsible-trigger\"] {\n background-color: transparent;\n border: none;\n padding: 0;\n\n /* &:hover { */\n /* color: var(--text-strong); */\n /* } */\n &:focus-visible {\n outline: none;\n background-color: var(--surface-raised-base-hover);\n }\n &[data-disabled] {\n cursor: not-allowed;\n }\n }\n }\n\n &[data-variant=\"ghost\"][data-scope=\"filetree\"] {\n > [data-slot=\"collapsible-trigger\"] {\n height: 24px;\n }\n }\n}\n",
15
- "/* Synced from Mux frontend/src/ui/components/basic-tool.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n/* [data-component=\"tool-trigger\"] {\n content-visibility: auto;\n} */\n[data-component=\"tool-trigger\"][data-layout=\"activity-row\"] {\n width: fit-content;\n max-width: 100%;\n min-width: 0;\n display: grid;\n grid-template-columns: var(--activity-label-width) minmax(0, auto) auto auto;\n column-gap: 8px;\n align-items: baseline;\n justify-content: start;\n\n [data-slot=\"basic-tool-tool-trigger-content\"],\n [data-slot=\"basic-tool-tool-info\"],\n [data-slot=\"basic-tool-tool-info-structured\"],\n [data-slot=\"basic-tool-tool-info-main\"] {\n display: contents;\n }\n\n [data-slot=\"basic-tool-tool-title\"] {\n grid-column: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n [data-slot=\"basic-tool-tool-detail\"] {\n grid-column: 2;\n min-width: 0;\n max-width: 100%;\n overflow: hidden;\n }\n\n [data-slot=\"basic-tool-tool-action\"],\n [data-component=\"tool-action\"] {\n grid-column: 3;\n }\n\n > [data-slot=\"collapsible-arrow\"] {\n grid-column: 3;\n align-self: center;\n }\n\n &:has([data-slot=\"basic-tool-tool-action\"], [data-component=\"tool-action\"])\n > [data-slot=\"collapsible-arrow\"] {\n grid-column: 4;\n }\n\n [data-slot=\"basic-tool-tool-indicator\"] {\n width: 16px;\n height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n [data-component=\"spinner\"] {\n width: 16px;\n height: 16px;\n }\n }\n\n [data-slot=\"basic-tool-tool-spinner\"] {\n width: 16px;\n height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--text-weak);\n\n [data-component=\"spinner\"] {\n width: 16px;\n height: 16px;\n }\n }\n\n [data-slot=\"icon-svg\"] {\n flex-shrink: 0;\n }\n\n [data-slot=\"basic-tool-tool-info\"] {\n display: contents;\n font-size: var(--font-size-base);\n }\n\n [data-slot=\"basic-tool-tool-info-structured\"],\n [data-slot=\"basic-tool-tool-info-main\"] {\n display: contents;\n }\n\n [data-slot=\"basic-tool-tool-title\"] {\n flex-shrink: 0;\n font-family: var(--font-family-sans);\n font-size: var(--font-size-base);\n font-style: normal;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n letter-spacing: var(--letter-spacing-normal);\n color: var(--text-strong);\n\n &.capitalize {\n text-transform: capitalize;\n }\n\n &.agent-title {\n color: var(--text-strong);\n font-weight: var(--font-weight-medium);\n }\n }\n\n [data-slot=\"basic-tool-tool-detail\"] {\n display: block;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n direction: ltr;\n unicode-bidi: isolate;\n\n > :not(:first-child) {\n margin-left: 8px;\n }\n }\n\n [data-slot=\"basic-tool-tool-subtitle\"] {\n min-width: 0;\n font-family: var(--font-family-sans);\n font-variant-numeric: tabular-nums;\n font-size: var(--font-size-base);\n font-style: normal;\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n letter-spacing: var(--letter-spacing-normal);\n color: var(--text-base);\n\n &.webfetch-url {\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--font-size-small);\n }\n\n &.clickable {\n cursor: pointer;\n text-decoration: underline;\n transition: color 0.15s ease;\n\n &:hover {\n color: var(--text-base);\n }\n }\n }\n\n [data-slot=\"basic-tool-tool-arg\"] {\n flex-shrink: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: var(--font-family-sans);\n font-variant-numeric: tabular-nums;\n font-size: var(--font-size-base);\n font-style: normal;\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n letter-spacing: var(--letter-spacing-normal);\n color: var(--text-base);\n }\n\n [data-slot=\"basic-tool-tool-action\"] {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n}\n\n/* Consecutive tool rows sit flush; a delegation card needs its own breathing room.\n Cards stop short of the full prose width so two short lines are not boxed\n inside a mostly empty frame. */\n[data-component=\"task-supervision\"] {\n width: 100%;\n max-width: 40rem;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding-block: 4px;\n}\n\n[data-component=\"task-tool-card\"] {\n width: 100%;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n border-radius: 6px;\n border: 1px solid var(--border-weak-base, rgba(255, 255, 255, 0.08));\n background: color-mix(in srgb, var(--background-base) 92%, transparent);\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease,\n color 0.15s ease;\n\n [data-slot=\"task-tool-body\"] {\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: inherit;\n color: inherit;\n text-decoration: none;\n }\n\n a[data-slot=\"task-tool-body\"] {\n cursor: pointer;\n }\n\n [data-slot=\"task-tool-info\"] {\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n [data-slot=\"task-tool-heading\"] {\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n font-family: var(--font-family-sans);\n font-size: var(--font-size-base);\n line-height: var(--line-height-large);\n letter-spacing: var(--letter-spacing-normal);\n }\n\n [data-slot=\"task-tool-description\"] {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--text-strong);\n font-weight: var(--font-weight-regular);\n }\n\n [data-slot=\"task-tool-meta\"] {\n min-width: 0;\n display: flex;\n align-items: baseline;\n white-space: nowrap;\n font-family: var(--font-family-sans);\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n color: var(--text-weak);\n\n > * {\n flex-shrink: 0;\n }\n\n > * + *::before {\n content: \"·\";\n margin-inline: 6px;\n color: var(--text-weaker);\n }\n\n /* The model label is last and gives way on narrow layouts. */\n > :last-child:not(:first-child) {\n flex-shrink: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n [data-slot=\"task-tool-state\"]:is([data-state=\"pending\"], [data-state=\"queued\"], [data-state=\"running\"]) {\n color: var(--text-interactive-base);\n }\n\n [data-slot=\"task-tool-state\"][data-state=\"error\"] {\n color: var(--text-danger-base);\n }\n\n [data-component=\"task-tool-spinner\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n [data-component=\"spinner\"] {\n width: 16px;\n height: 16px;\n }\n }\n\n [data-component=\"task-tool-action\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--icon-weak);\n opacity: 0;\n transition:\n opacity 0.15s ease,\n color 0.15s ease;\n }\n\n [data-component=\"task-tool-title\"] {\n flex-shrink: 0;\n font-weight: var(--font-weight-medium);\n text-transform: capitalize;\n }\n\n > [data-component=\"button\"] {\n flex-shrink: 0;\n margin-inline-end: 8px;\n }\n\n &:hover,\n &:focus-within {\n background: color-mix(in srgb, var(--background-stronger) 88%, transparent);\n\n [data-component=\"task-tool-action\"] {\n opacity: 1;\n }\n }\n\n @media (hover: none) {\n [data-component=\"task-tool-action\"] {\n opacity: 1;\n }\n }\n}\n\n[data-component=\"task-supervision\"] > [data-slot=\"task-tool-failure\"] {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n overflow: hidden;\n padding-inline: 12px;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n color: var(--text-base);\n}\n\n[data-component=\"task-supervision\"] > [data-slot=\"task-tool-status-error\"] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding-inline: 12px;\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n color: var(--text-weak);\n}\n",
16
- "/* Synced from Mux frontend/src/ui/components/text-shimmer.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n[data-component=\"text-shimmer\"] {\n --text-shimmer-step: 45ms;\n --text-shimmer-duration: 1200ms;\n --text-shimmer-swap: 220ms;\n --text-shimmer-index: 0;\n --text-shimmer-angle: 90deg;\n --text-shimmer-spread: 5.2ch;\n --text-shimmer-size: 360%;\n --text-shimmer-base-color: var(--text-weak);\n --text-shimmer-peak-color: var(--text-strong);\n --text-shimmer-sweep: linear-gradient(\n var(--text-shimmer-angle),\n transparent calc(50% - var(--text-shimmer-spread)),\n var(--text-shimmer-peak-color) 50%,\n transparent calc(50% + var(--text-shimmer-spread))\n );\n --text-shimmer-base: linear-gradient(var(--text-shimmer-base-color), var(--text-shimmer-base-color));\n\n display: inline-flex;\n align-items: baseline;\n font: inherit;\n letter-spacing: inherit;\n line-height: inherit;\n}\n\n[data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char\"] {\n display: inline-grid;\n white-space: pre;\n font: inherit;\n letter-spacing: inherit;\n line-height: inherit;\n}\n\n[data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-base\"],\n[data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-shimmer\"] {\n grid-area: 1 / 1;\n white-space: pre;\n transition: opacity var(--text-shimmer-swap) ease-out;\n font: inherit;\n letter-spacing: inherit;\n line-height: inherit;\n}\n\n[data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-base\"] {\n color: inherit;\n opacity: 1;\n}\n\n[data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-shimmer\"] {\n color: var(--text-weaker);\n opacity: 0;\n}\n\n[data-component=\"text-shimmer\"][data-active=\"true\"] [data-slot=\"text-shimmer-char-shimmer\"] {\n opacity: 1;\n}\n\n[data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-shimmer\"][data-run=\"true\"] {\n animation-name: text-shimmer-sweep;\n animation-duration: var(--text-shimmer-duration);\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n animation-fill-mode: both;\n animation-delay: calc(var(--text-shimmer-step) * var(--text-shimmer-index) * -1);\n will-change: background-position;\n}\n\n@keyframes text-shimmer-sweep {\n 0% {\n background-position:\n 100% 0,\n 0 0;\n }\n\n 100% {\n background-position:\n 0% 0,\n 0 0;\n }\n}\n\n@supports ((-webkit-background-clip: text) or (background-clip: text)) {\n [data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-shimmer\"] {\n color: transparent;\n -webkit-text-fill-color: transparent;\n background-image: var(--text-shimmer-sweep), var(--text-shimmer-base);\n background-size:\n var(--text-shimmer-size) 100%,\n 100% 100%;\n background-position:\n 100% 0,\n 0 0;\n background-repeat: no-repeat;\n -webkit-background-clip: text;\n background-clip: text;\n }\n\n [data-component=\"text-shimmer\"][data-active=\"true\"] [data-slot=\"text-shimmer-char-base\"] {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n [data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-base\"],\n [data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-shimmer\"] {\n transition-duration: 0ms;\n }\n\n [data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-shimmer\"] {\n animation: none !important;\n color: inherit;\n -webkit-text-fill-color: currentColor;\n background-image: none;\n }\n\n [data-component=\"text-shimmer\"] [data-slot=\"text-shimmer-char-base\"] {\n opacity: 1 !important;\n }\n}\n",
17
- "/* Synced from Mux frontend/src/ui/components/tool-status-title.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n[data-component=\"tool-status-title\"] {\n display: inline-flex;\n align-items: baseline;\n white-space: nowrap;\n text-align: start;\n\n [data-slot=\"tool-status-suffix\"] {\n display: inline-flex;\n align-items: baseline;\n white-space: nowrap;\n }\n\n [data-slot=\"tool-status-prefix\"] {\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n [data-slot=\"tool-status-swap\"],\n [data-slot=\"tool-status-tail\"] {\n display: inline-grid;\n overflow: hidden;\n justify-items: start;\n transition: width var(--tool-motion-spring-ms, 480ms) var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));\n }\n\n [data-slot=\"tool-status-active\"],\n [data-slot=\"tool-status-done\"] {\n grid-area: 1 / 1;\n white-space: nowrap;\n justify-self: start;\n text-align: start;\n transition-property: opacity, filter, transform;\n transition-duration:\n var(--tool-motion-fade-ms, 240ms), calc(var(--tool-motion-fade-ms, 240ms) * 0.8),\n calc(var(--tool-motion-fade-ms, 240ms) * 0.8);\n transition-timing-function: ease-out, ease-out, ease-out;\n }\n\n &[data-ready=\"false\"] {\n [data-slot=\"tool-status-swap\"],\n [data-slot=\"tool-status-tail\"] {\n transition-duration: 0ms;\n }\n\n [data-slot=\"tool-status-active\"],\n [data-slot=\"tool-status-done\"] {\n transition-duration: 0ms;\n }\n }\n\n [data-slot=\"tool-status-active\"] {\n opacity: 0;\n filter: blur(calc(var(--tool-motion-blur, 2px) * 0.45));\n transform: translateY(0.03em);\n }\n\n [data-slot=\"tool-status-done\"] {\n color: var(--text-strong);\n opacity: 1;\n filter: blur(0);\n transform: translateY(0);\n }\n\n &[data-active=\"true\"] {\n [data-slot=\"tool-status-active\"] {\n opacity: 1;\n filter: blur(0);\n transform: translateY(0);\n }\n\n [data-slot=\"tool-status-done\"] {\n opacity: 0;\n filter: blur(calc(var(--tool-motion-blur, 2px) * 0.45));\n transform: translateY(0.03em);\n }\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n [data-component=\"tool-status-title\"] [data-slot=\"tool-status-swap\"],\n [data-component=\"tool-status-title\"] [data-slot=\"tool-status-tail\"] {\n transition-duration: 0ms;\n }\n\n [data-component=\"tool-status-title\"] [data-slot=\"tool-status-active\"],\n [data-component=\"tool-status-title\"] [data-slot=\"tool-status-done\"] {\n transition-duration: 0ms;\n }\n}\n",
18
- "/* Synced from Mux frontend/src/ui/components/dock-surface.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n[data-dock-surface=\"shell\"] {\n background-color: var(--surface-raised-stronger-non-alpha);\n box-shadow: var(--shadow-xs-border);\n position: relative;\n z-index: 10;\n border-radius: 12px;\n overflow: clip;\n}\n\n[data-dock-surface=\"tray\"] {\n background-color: var(--background-base);\n border: 1px solid var(--border-weak-base);\n position: relative;\n z-index: 0;\n border-radius: 12px;\n overflow: clip;\n}\n\n[data-dock-surface=\"tray\"][data-dock-attach=\"top\"] {\n margin-top: -0.875rem;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n",
19
- "/* Synced from Mux frontend/src/ui/components/markdown.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n[data-component=\"markdown\"] {\n /* Reset & Base Typography */\n min-width: 0;\n max-width: 100%;\n overflow-wrap: break-word;\n color: var(--text-strong);\n font-family: var(--font-family-sans);\n font-size: var(--markdown-font-size, var(--font-size-base));\n line-height: 160%;\n /* Contain outer margins, but let margins collapse across streaming wrappers. */\n display: flow-root;\n\n /* Spacing for flow */\n > *:first-child,\n > [data-markdown-block]:first-child > *:first-child {\n margin-top: 0;\n }\n > *:last-child,\n > [data-markdown-block]:last-child > *:last-child {\n margin-bottom: 0;\n }\n\n /* Headings: Same size, distinguished by color and spacing */\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: var(--markdown-font-size, var(--font-size-base));\n color: var(--text-strong);\n font-weight: var(--font-weight-medium);\n margin-top: 1.5rem;\n margin-bottom: 0.5rem;\n line-height: var(--line-height-large);\n }\n\n /* Emphasis & Strong: Neutral strong color */\n strong,\n b {\n color: var(--text-strong);\n font-weight: var(--font-weight-medium);\n }\n\n /* Paragraphs */\n p {\n margin-bottom: 0.75rem;\n }\n\n /* Links */\n a {\n color: var(--text-interactive-base);\n text-decoration: none;\n font-weight: inherit;\n }\n\n a:hover {\n text-decoration: underline;\n text-underline-offset: 2px;\n }\n\n /* Lists */\n ul,\n ol {\n margin-top: 0.5rem;\n margin-bottom: 0.75rem;\n margin-left: 0;\n padding-left: 1.5rem;\n list-style-position: outside;\n }\n\n ul {\n list-style-type: disc;\n }\n\n ol {\n list-style-type: decimal;\n padding-left: 2.25rem;\n }\n\n li {\n margin-bottom: 0.5rem;\n }\n\n li > p:first-child {\n display: inline;\n margin: 0;\n }\n\n li > p + p {\n display: block;\n margin-top: 0.5rem;\n }\n\n li::marker {\n color: var(--text-weak);\n }\n\n /* Nested lists spacing */\n li > ul,\n li > ol {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n padding-left: 1rem; /* Minimal indent for nesting only */\n }\n\n li > ol {\n padding-left: 1.75rem;\n }\n\n /* Blockquotes */\n blockquote {\n border-left: 2px solid var(--border-weak-base);\n margin: 1rem 0;\n padding-left: 0.5rem;\n color: var(--text-weak);\n font-style: normal;\n }\n\n /* Horizontal Rule - Invisible spacing only */\n hr {\n border: none;\n height: 0;\n margin: 2rem 0;\n }\n\n .shiki,\n .markdown-code-pending {\n font-size: var(--markdown-font-size, 13px);\n line-height: 1.5;\n padding: 8px 12px;\n border-radius: 6px;\n border: 0.5px solid var(--border-weak-base);\n background: var(--surface-raised-base);\n }\n\n .markdown-code-pending code {\n font-family: var(--font-family-mono);\n font-feature-settings: var(--font-family-mono--font-feature-settings);\n }\n\n [data-component=\"markdown-code\"] {\n position: relative;\n\n [data-slot=\"markdown-copy-button\"] {\n position: absolute;\n right: 4px;\n z-index: 10;\n\n &[data-position=\"top\"] {\n top: 4px;\n }\n\n &[data-position=\"bottom\"] {\n bottom: 4px;\n }\n }\n }\n\n [data-slot=\"markdown-copy-button\"] {\n opacity: 0;\n transition: opacity 0.15s ease;\n\n &::after {\n content: attr(data-tooltip);\n position: absolute;\n left: 50%;\n bottom: calc(100% + 4px);\n transform: translateX(-50%);\n z-index: 1000;\n\n max-width: 320px;\n border-radius: var(--radius-sm);\n background: var(--surface-float-base);\n color: var(--text-invert-strong);\n padding: 2px 8px;\n border: 1px solid var(--border-weak-base, rgba(0, 0, 0, 0.07));\n box-shadow: var(--shadow-md);\n\n pointer-events: none;\n white-space: nowrap;\n\n font-family: var(--font-family-sans);\n font-size: var(--font-size-small);\n font-style: normal;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n letter-spacing: var(--letter-spacing-normal);\n\n opacity: 0;\n transition: opacity 0.15s ease;\n }\n }\n\n [data-slot=\"markdown-copy-button\"]:hover::after,\n [data-slot=\"markdown-copy-button\"]:focus-visible::after {\n opacity: 1;\n }\n\n [data-slot=\"markdown-copy-button\"][data-variant=\"secondary\"] {\n box-shadow: none;\n border: 1px solid var(--border-weak-base);\n }\n\n [data-slot=\"markdown-copy-button\"][data-variant=\"secondary\"] [data-slot=\"icon-svg\"] {\n color: var(--icon-base);\n }\n\n [data-component=\"markdown-code\"]:hover [data-slot=\"markdown-copy-button\"],\n [data-component=\"file-viewer\"]:hover [data-slot=\"markdown-copy-button\"] {\n opacity: 1;\n }\n\n [data-slot=\"markdown-copy-button\"] [data-slot=\"check-icon\"] {\n display: none;\n }\n\n [data-slot=\"markdown-copy-button\"][data-copied=\"true\"] [data-slot=\"copy-icon\"] {\n display: none;\n }\n\n [data-slot=\"markdown-copy-button\"][data-copied=\"true\"] [data-slot=\"check-icon\"] {\n display: inline-flex;\n }\n\n pre {\n margin-top: 0.75rem;\n margin-bottom: 1.5rem;\n overflow: auto;\n\n &[data-wrap=\"true\"] {\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n overflow-x: hidden;\n }\n\n &[data-wrap=\"true\"] code,\n &[data-wrap=\"true\"] .line {\n white-space: inherit;\n }\n\n scrollbar-width: none;\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n :not(pre) > code {\n font-family: var(--font-family-mono);\n font-feature-settings: var(--font-family-mono--font-feature-settings);\n color: var(--syntax-string);\n font-weight: var(--font-weight-medium);\n /* font-size: 13px; */\n\n /* padding: 2px 2px; */\n /* margin: 0 1.5px; */\n /* border-radius: 2px; */\n /* background: var(--surface-base); */\n /* box-shadow: 0 0 0 0.5px var(--border-weak-base); */\n }\n\n /* Tables */\n table {\n width: 100%;\n border-collapse: collapse;\n margin: 1.5rem 0;\n font-size: var(--markdown-font-size, var(--font-size-base));\n display: block;\n overflow-x: auto;\n }\n\n th,\n td {\n /* Minimal borders for structure, matching TUI \"lines\" roughly but keeping it web-clean */\n border-bottom: 1px solid var(--border-weaker-base);\n padding: 0.75rem 0.5rem;\n text-align: left;\n vertical-align: top;\n }\n\n th {\n color: var(--text-strong);\n font-weight: var(--font-weight-medium);\n border-bottom: 1px solid var(--border-weak-base);\n }\n\n /* Images */\n img {\n max-width: 100%;\n height: auto;\n border-radius: 4px;\n margin: 1.5rem 0;\n display: block;\n }\n\n [data-component=\"mermaid\"] {\n margin: 2rem 0;\n overflow: auto;\n border: 0.5px solid var(--border-weak-base);\n border-radius: 6px;\n background: var(--surface-raised-base);\n padding: 16px;\n\n svg {\n display: block;\n width: 100%;\n min-width: 320px;\n height: auto;\n margin: 0 auto;\n }\n }\n\n pre[data-mermaid-status=\"error\"]::after {\n content: attr(data-mermaid-error);\n display: block;\n margin-top: 8px;\n color: var(--text-weak);\n font-family: var(--font-family-sans);\n font-size: 12px;\n white-space: normal;\n }\n}\n\n[data-component=\"markdown\"] a.external-link:hover > code {\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n",
20
- "/* Synced from Mux frontend/src/pages/session/transcript/renderers/message-part.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n/* [data-component=\"assistant-message\"] {\n content-visibility: auto;\n} */\n[data-component=\"assistant-message\"] {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n\n [data-slot=\"assistant-message-actions\"] {\n min-height: 24px;\n display: flex;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n will-change: opacity;\n }\n\n &:hover [data-slot=\"assistant-message-actions\"],\n &:focus-within [data-slot=\"assistant-message-actions\"] {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n[data-component=\"user-message\"] {\n font-family: var(--font-family-sans);\n font-size: var(--font-size-base);\n font-style: normal;\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n letter-spacing: var(--letter-spacing-normal);\n color: var(--text-strong);\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n align-self: stretch;\n width: 100%;\n max-width: 100%;\n gap: 0;\n\n [data-slot=\"user-message-attachments\"] {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: 8px;\n width: fit-content;\n max-width: min(82%, 64ch);\n margin-left: auto;\n }\n\n [data-slot=\"user-message-attachment\"] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-width: 0;\n border-radius: 6px;\n overflow: hidden;\n background: var(--surface-weak);\n border: 1px solid var(--border-weak-base);\n cursor: default;\n transition:\n border-color 0.15s ease,\n opacity 0.3s ease;\n\n &:hover {\n border-color: var(--border-strong-base);\n }\n\n &[data-clickable] {\n cursor: pointer;\n }\n\n &[data-type=\"image\"] {\n width: 48px;\n height: 48px;\n }\n\n &[data-type=\"file\"] {\n width: min(220px, 100%);\n height: 48px;\n padding: 0 10px;\n }\n }\n\n [data-slot=\"user-message-attachment-image\"] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n [data-slot=\"user-message-attachment-file\"] {\n width: 100%;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n\n [data-component=\"file-icon\"] {\n width: 20px;\n height: 20px;\n flex: none;\n }\n }\n\n [data-slot=\"user-message-attachment-name\"] {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--text-base);\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n }\n\n [data-slot=\"user-message-body\"] {\n width: fit-content;\n max-width: min(82%, 64ch);\n margin-left: auto;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n\n [data-slot=\"user-message-attachments\"] + [data-slot=\"user-message-body\"] {\n margin-top: 8px;\n }\n\n [data-slot=\"user-message-text\"] {\n display: inline-block;\n white-space: pre-wrap;\n word-break: break-word;\n overflow: hidden;\n background: color-mix(in srgb, var(--surface-weak) 65%, transparent);\n border: 1px solid transparent;\n padding: 8px 12px;\n border-radius: 12px;\n\n [data-highlight=\"file\"] {\n color: var(--syntax-property);\n }\n\n [data-highlight=\"agent\"] {\n color: var(--syntax-type);\n }\n\n max-width: 100%;\n }\n\n [data-slot=\"user-message-copy-wrapper\"] {\n min-height: 24px;\n margin-top: 4px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 10px;\n width: 100%;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n will-change: opacity;\n\n [data-component=\"tooltip-trigger\"] {\n display: inline-flex;\n width: fit-content;\n }\n }\n\n [data-slot=\"user-message-meta\"] {\n user-select: none;\n text-align: right;\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n [data-slot=\"user-message-meta-wrap\"] {\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n overflow: hidden;\n gap: 0;\n }\n\n [data-slot=\"user-message-meta-tail\"] {\n user-select: none;\n flex: 0 0 auto;\n white-space: nowrap;\n text-align: right;\n }\n\n &:hover [data-slot=\"user-message-copy-wrapper\"],\n &:focus-within [data-slot=\"user-message-copy-wrapper\"] {\n opacity: 1;\n pointer-events: auto;\n }\n\n .text-text-strong {\n color: var(--text-strong);\n }\n\n .font-medium {\n font-weight: var(--font-weight-medium);\n }\n}\n\n[data-component=\"text-part\"] {\n width: 100%;\n margin-top: 24px;\n container-type: inline-size;\n container-name: text-part;\n\n [data-slot=\"text-part-body\"] {\n margin-top: 0;\n }\n\n [data-slot=\"text-part-copy-wrapper\"] {\n display: none;\n min-height: 24px;\n margin-top: 4px;\n align-items: center;\n justify-content: flex-start;\n gap: 10px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n will-change: opacity;\n\n &[data-active] {\n display: flex;\n }\n\n [data-component=\"tooltip-trigger\"] {\n display: inline-flex;\n width: fit-content;\n }\n }\n\n [data-slot=\"text-part-meta\"] {\n flex: 0 0 auto;\n white-space: nowrap;\n user-select: none;\n\n > span {\n flex: 0 0 auto;\n }\n }\n\n [data-slot=\"text-part-copy-wrapper\"][data-interrupted] {\n width: 100%;\n justify-content: flex-end;\n gap: 12px;\n }\n\n &:hover [data-slot=\"text-part-copy-wrapper\"],\n &:focus-within [data-slot=\"text-part-copy-wrapper\"] {\n opacity: 1;\n pointer-events: auto;\n }\n\n [data-component=\"markdown\"] {\n margin-top: 0;\n }\n}\n\n@container text-part (max-width: 44rem) {\n [data-slot=\"text-part-copy-wrapper\"] {\n gap: 8px;\n }\n\n [data-slot=\"text-part-meta\"] {\n gap: 4px;\n font-size: calc(var(--font-size-base) * 11 / 14);\n }\n}\n\n@container text-part (max-width: 32rem) {\n [data-slot=\"text-part-copy-wrapper\"] {\n gap: 6px;\n }\n\n [data-slot=\"text-part-meta\"] {\n gap: 3px;\n font-size: calc(var(--font-size-base) * 10 / 14);\n }\n}\n\n[data-component=\"compaction-part\"] {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n\n [data-slot=\"compaction-part-divider\"] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 0;\n width: 100%;\n }\n\n [data-slot=\"compaction-part-line\"] {\n flex: 1 1 auto;\n height: 1px;\n background: var(--border-weak-base);\n }\n\n [data-slot=\"compaction-part-label\"] {\n flex: 0 0 auto;\n white-space: nowrap;\n text-align: center;\n }\n\n [data-slot=\"compaction-part-toggle\"] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n min-height: 24px;\n padding: 0 6px;\n border-radius: var(--radius-md);\n color: inherit;\n cursor: pointer;\n user-select: none;\n\n &:hover,\n &:focus-visible {\n outline: none;\n background-color: var(--surface-raised-base-hover);\n color: var(--text-base);\n }\n }\n\n [data-slot=\"compaction-part-summary\"] {\n padding: 4px 0 8px;\n color: var(--text-weak);\n }\n}\n\n[data-component=\"reasoning-part\"] {\n width: 100%;\n color: var(--text-base);\n line-height: var(--line-height-normal);\n\n [data-component=\"markdown\"] {\n margin-top: 24px;\n font-style: normal;\n color: var(--text-weak);\n\n strong,\n b {\n color: var(--text-weak);\n }\n\n p:has(strong) {\n margin-top: 24px;\n margin-bottom: 0;\n\n &:first-child {\n margin-top: 0;\n }\n }\n }\n}\n\n@media (prefers-color-scheme: dark) {\n [data-component=\"reasoning-part\"]\n [data-component=\"markdown\"]\n :not(pre)\n > code {\n opacity: 0.6;\n }\n}\n\n[data-component=\"tool-output\"] {\n white-space: pre;\n padding: 0;\n margin-bottom: 24px;\n height: fit-content;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n\n [data-component=\"markdown\"] {\n width: 100%;\n min-width: 0;\n\n pre {\n margin: 0;\n padding: 0;\n background-color: transparent !important;\n border: none !important;\n }\n }\n\n pre {\n margin: 0;\n padding: 0;\n background: none;\n }\n\n &[data-scrollable] {\n height: auto;\n max-height: 240px;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n [data-component=\"markdown\"] {\n overflow: visible;\n }\n }\n}\n\n[data-component=\"bash-output\"] {\n width: 100%;\n border: 1px solid var(--border-weak-base);\n border-radius: 6px;\n background: transparent;\n position: relative;\n overflow: hidden;\n\n [data-slot=\"bash-copy\"] {\n position: absolute;\n top: 4px;\n right: 4px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n }\n\n &:hover [data-slot=\"bash-copy\"],\n &:focus-within [data-slot=\"bash-copy\"] {\n opacity: 1;\n pointer-events: auto;\n }\n\n [data-slot=\"bash-copy\"]\n [data-component=\"icon-button\"][data-variant=\"secondary\"] {\n box-shadow: none;\n border: 1px solid var(--border-weak-base);\n }\n\n [data-slot=\"bash-copy\"]\n [data-component=\"icon-button\"][data-variant=\"secondary\"]\n [data-slot=\"icon-svg\"] {\n color: var(--icon-base);\n }\n\n [data-slot=\"bash-scroll\"] {\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 240px;\n\n scrollbar-width: none;\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n [data-slot=\"bash-pre\"] {\n margin: 0;\n padding: 12px;\n }\n\n [data-slot=\"bash-pre\"] code {\n font-family: var(--font-family-mono);\n font-feature-settings: var(--font-family-mono--font-feature-settings);\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n }\n}\n\n[data-component=\"tool-trigger\"][data-layout=\"activity-row\"]:has(\n [data-component=\"edit-trigger\"],\n [data-component=\"write-trigger\"]\n) > [data-slot=\"collapsible-arrow\"] {\n grid-column: 4;\n}\n\n[data-component=\"tool-trigger\"][data-layout=\"activity-row\"]:hover\n [data-slot=\"message-part-view-file\"],\n[data-component=\"tool-trigger\"][data-layout=\"activity-row\"]:focus-within\n [data-slot=\"message-part-view-file\"] {\n opacity: 1;\n}\n\n[data-component=\"edit-trigger\"],\n[data-component=\"write-trigger\"] {\n display: contents;\n\n [data-slot=\"message-part-title\"] {\n grid-column: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n font-family: var(--font-family-sans);\n font-size: var(--font-size-base);\n font-style: normal;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n letter-spacing: var(--letter-spacing-normal);\n color: var(--text-base);\n }\n\n [data-slot=\"message-part-path\"] {\n grid-column: 2;\n display: flex;\n min-width: 0;\n overflow: hidden;\n font-weight: var(--font-weight-regular);\n }\n\n [data-slot=\"message-part-actions\"] {\n grid-column: 3;\n display: flex;\n gap: 4px;\n align-items: center;\n justify-content: flex-end;\n flex-shrink: 0;\n }\n\n [data-slot=\"message-part-actions\"] [data-component=\"diff-changes\"] {\n gap: 4px;\n\n [data-slot=\"diff-changes-additions\"],\n [data-slot=\"diff-changes-deletions\"] {\n min-width: 2ch;\n font-size: var(--font-size-small);\n }\n }\n\n [data-slot=\"message-part-view-file\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1px;\n border-radius: 4px;\n color: var(--text-base);\n cursor: pointer;\n opacity: 0;\n transition: opacity 0.15s ease;\n\n &:hover,\n &:focus-visible {\n color: var(--text-strong);\n background: var(--surface-base);\n outline: none;\n }\n }\n\n [data-slot=\"message-part-title-text\"] {\n flex-shrink: 0;\n text-transform: capitalize;\n color: var(--text-strong);\n }\n\n [data-slot=\"message-part-path\"] {\n display: flex;\n min-width: 0;\n overflow: hidden;\n font-weight: var(--font-weight-regular);\n }\n\n [data-slot=\"message-part-directory\"] {\n color: var(--text-weak);\n flex: 0 1 auto;\n min-width: 0;\n direction: rtl;\n text-align: left;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n [data-slot=\"message-part-path-separator\"] {\n color: var(--text-weak);\n flex: 0 0 auto;\n }\n\n [data-slot=\"message-part-filename\"] {\n color: var(--text-strong);\n flex: 0 0 auto;\n white-space: nowrap;\n }\n}\n\n[data-component=\"edit-content\"],\n[data-component=\"write-content\"],\n[data-component=\"apply-patch-file-diff\"] {\n border-radius: inherit;\n max-height: calc(var(--session-viewport-height, 100dvh) * 0.6);\n overflow-x: hidden;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--border-weak-base) transparent;\n}\n\n[data-component=\"edit-content\"],\n[data-component=\"write-content\"] {\n border-top: 1px solid var(--border-weaker-base);\n}\n\n/* Expanded output belongs to the transcript's vertical scroll in the mobile\n layout, including landscape phones wider than 768px. clip, unlike hidden,\n does not create another scrolling container. */\n:where(html[data-mobile-layout]) [data-mobile-surface=\"session\"] {\n [data-component=\"edit-content\"],\n [data-component=\"write-content\"],\n [data-component=\"apply-patch-file-diff\"],\n [data-component=\"tool-output\"][data-scrollable],\n [data-slot=\"bash-scroll\"] {\n max-height: none;\n overflow-x: clip;\n overflow-y: visible;\n }\n}\n\n[data-component=\"tool-action\"] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n[data-component=\"exa-tool-output\"] {\n width: 100%;\n padding-top: 8px;\n display: flex;\n flex-direction: column;\n}\n\n[data-slot=\"basic-tool-tool-subtitle\"].exa-tool-query {\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n[data-slot=\"exa-tool-links\"] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n[data-slot=\"exa-tool-link\"] {\n display: block;\n max-width: 100%;\n color: var(--text-interactive-base);\n text-decoration: underline;\n text-underline-offset: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover {\n color: var(--text-interactive-base);\n }\n\n &:visited {\n color: var(--text-interactive-base);\n }\n}\n\n[data-slot=\"basic-tool-tool-title\"],\n[data-slot=\"context-tool-group-label\"] {\n min-width: 0;\n}\n\n:is([data-component=\"context-tool-group-trigger\"], [data-component=\"work-tool-group-trigger\"])[data-layout=\"activity-row\"] {\n width: fit-content;\n max-width: 100%;\n min-width: 0;\n min-height: 24px;\n display: grid;\n grid-template-columns: var(--activity-label-width) minmax(0, auto) auto auto;\n align-items: center;\n column-gap: 8px;\n cursor: default;\n\n [data-slot=\"context-tool-group-title\"] {\n display: contents;\n }\n\n [data-slot=\"context-tool-group-label\"] {\n grid-column: 1;\n }\n\n [data-slot=\"context-tool-group-summary\"] {\n grid-column: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n [data-slot=\"context-tool-group-budget\"],\n > [data-component=\"diff-changes\"] {\n grid-column: 3;\n }\n\n > [data-component=\"diff-changes\"] {\n margin-inline-start: 8px;\n gap: 4px;\n white-space: nowrap;\n font-variant-numeric: tabular-nums;\n }\n\n > [data-slot=\"collapsible-arrow\"] {\n grid-column: 4;\n }\n\n &:not(:has([data-slot=\"context-tool-group-budget\"], [data-component=\"diff-changes\"]))\n > [data-slot=\"collapsible-arrow\"] {\n grid-column: 3;\n }\n\n [data-slot=\"collapsible-arrow\"] {\n color: var(--icon-weaker);\n cursor: pointer;\n }\n}\n\n[data-activity-group] > [data-slot=\"collapsible-content\"] > [data-component=\"context-tool-group-list\"] {\n --activity-label-width: calc(var(--font-size-base) * 72 / 14);\n padding: 4px 0 0 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n > [data-slot=\"context-tool-group-item\"] {\n min-width: 0;\n padding: 0;\n }\n\n > [data-slot=\"context-tool-group-item\"] > [data-component=\"tool-trigger\"] {\n min-height: 28px;\n align-items: center;\n }\n\n}\n\n[data-activity-group=\"single\"] > [data-slot=\"collapsible-content\"] > [data-component=\"context-tool-group-list\"] {\n --activity-label-width: max-content;\n padding: 0;\n gap: 0;\n}\n\n[data-component=\"diagnostics\"] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 8px 12px;\n background-color: var(--surface-critical-weak);\n border-top: 1px solid var(--border-critical-base);\n\n [data-slot=\"diagnostic\"] {\n display: flex;\n align-items: baseline;\n gap: 6px;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n }\n}\n\n[data-component=\"user-message\"] [data-slot=\"user-message-text\"],\n[data-component=\"text-part\"],\n[data-component=\"reasoning-part\"],\n[data-component=\"tool-output\"],\n[data-component=\"bash-output\"],\n[data-component=\"edit-content\"],\n[data-component=\"write-content\"],\n[data-component=\"diagnostics\"],\n.error-card {\n -webkit-user-select: text;\n user-select: text;\n}\n\n[data-component=\"tool-part-wrapper\"] {\n width: 100%;\n}\n\n[data-component=\"dock-prompt\"][data-kind=\"permission\"] {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 0;\n min-height: 0;\n max-height: 100dvh;\n\n [data-slot=\"permission-header\"] {\n padding: 0;\n }\n\n [data-slot=\"permission-row\"] {\n display: grid;\n grid-template-columns: 20px 1fr;\n column-gap: 8px;\n align-items: start;\n }\n\n [data-slot=\"permission-row\"][data-variant=\"header\"] {\n align-items: center;\n }\n\n [data-slot=\"permission-icon\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n [data-slot=\"permission-icon\"] [data-component=\"icon\"] {\n color: var(--icon-warning-base);\n }\n\n [data-slot=\"permission-header-title\"] {\n font-family: var(--font-family-sans);\n font-size: 14px;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n color: var(--text-strong);\n min-width: 0;\n }\n\n [data-slot=\"permission-hint\"] {\n font-family: var(--font-family-sans);\n font-size: 14px;\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n color: var(--text-weak);\n padding: 0;\n }\n\n [data-slot=\"permission-patterns\"] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin-top: 8px;\n margin-bottom: 16px;\n padding: 1px 0 8px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n code {\n font-size: 14px;\n line-height: var(--line-height-large);\n }\n }\n\n [data-slot=\"permission-footer\"] {\n display: flex;\n flex-shrink: 0;\n padding: 32px 8px 8px;\n margin-top: -24px;\n }\n\n [data-slot=\"permission-footer-actions\"] {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n width: 100%;\n gap: 8px;\n\n [data-component=\"button\"] {\n padding-left: 12px;\n padding-right: 12px;\n }\n }\n}\n\n[data-component=\"dock-prompt\"][data-kind=\"question\"] {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 0;\n min-height: 0;\n max-height: var(--question-prompt-max-height, 100dvh);\n\n [data-slot=\"question-header\"] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 0 10px;\n }\n\n [data-slot=\"question-header-title\"] {\n font-family: var(--font-family-sans);\n font-size: 14px;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n color: var(--text-strong);\n min-width: 0;\n }\n\n [data-slot=\"question-progress\"] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n }\n\n [data-slot=\"question-progress-segment\"] {\n width: 16px;\n height: 16px;\n padding: 0;\n border: 0;\n background: transparent;\n border-radius: 999px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n touch-action: manipulation;\n\n &::after {\n content: \"\";\n width: 16px;\n height: 2px;\n border-radius: 999px;\n background-color: var(--icon-weak-base);\n transition: background-color 0.2s ease;\n }\n\n &[data-active=\"true\"]::after {\n background-color: var(--icon-strong-base);\n }\n\n &[data-answered=\"true\"]::after {\n background-color: var(--icon-interactive-base);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n }\n\n [data-slot=\"question-text\"] {\n font-family: var(--font-family-sans);\n font-size: 14px;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n color: var(--text-strong);\n padding: 0 10px;\n }\n\n [data-slot=\"question-hint\"] {\n font-family: var(--font-family-sans);\n font-size: 13px;\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n color: var(--text-weak);\n padding: 0 10px;\n }\n\n [data-slot=\"question-options\"] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin-top: 12px;\n padding: 1px 1px 8px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n [data-slot=\"question-option\"] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 8px 8px 8px 10px;\n background-color: var(--surface-raised-stronger-non-alpha);\n border: 1px solid var(--border-weak-base);\n border-radius: 6px;\n box-shadow: none;\n text-align: left;\n width: 100%;\n cursor: pointer;\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease,\n box-shadow 0.15s ease;\n\n &:hover:not([data-picked=\"true\"]) {\n background-color: var(--background-base);\n }\n\n &[data-picked=\"true\"] {\n background-color: var(--surface-interactive-weak);\n border-color: transparent;\n box-shadow: var(--shadow-xs-border-hover);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n }\n\n [data-slot=\"question-option-check\"] {\n display: inline-flex;\n transform: translateY(2px);\n }\n\n [data-slot=\"question-option-box\"] {\n width: 16px;\n height: 16px;\n padding: 2px;\n border-radius: var(--radius-sm);\n border: 1px solid var(--border-weak-base);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background-color: transparent;\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease;\n\n [data-component=\"icon\"] {\n opacity: 0;\n color: var(--icon-base);\n }\n\n &[data-type=\"radio\"] {\n border-radius: 999px;\n }\n\n [data-slot=\"question-option-radio-dot\"] {\n width: 6px;\n height: 6px;\n border-radius: 999px;\n background-color: var(--background-stronger);\n opacity: 0;\n }\n\n &[data-picked=\"true\"] {\n border-color: var(--icon-interactive-base);\n\n [data-component=\"icon\"] {\n opacity: 1;\n color: var(--icon-invert-base);\n }\n\n &[data-type=\"checkbox\"] {\n background-color: var(--icon-interactive-base);\n }\n\n &[data-type=\"radio\"] {\n background-color: var(--icon-interactive-base);\n [data-slot=\"question-option-radio-dot\"] {\n opacity: 1;\n }\n }\n }\n }\n\n [data-slot=\"question-option-main\"] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n flex: 1;\n }\n\n [data-slot=\"option-label\"] {\n font-family: var(--font-family-sans);\n font-size: 14px;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n color: var(--text-strong);\n }\n\n [data-slot=\"option-description\"] {\n font-family: var(--font-family-sans);\n font-size: 14px;\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n color: var(--text-base);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n [data-slot=\"question-option\"][data-custom=\"true\"] {\n [data-slot=\"option-description\"] {\n overflow: visible;\n text-overflow: clip;\n white-space: normal;\n overflow-wrap: anywhere;\n }\n }\n\n [data-slot=\"question-custom\"] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n [data-slot=\"question-custom-input\"] {\n width: 100%;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n outline: none;\n font-family: var(--font-family-sans);\n font-size: 14px;\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n color: var(--text-base);\n min-width: 0;\n cursor: text;\n resize: none;\n overflow: hidden;\n overflow-wrap: anywhere;\n\n &::placeholder {\n color: var(--text-weak);\n }\n\n &:focus-visible {\n outline: 1px solid var(--border-interactive-base);\n outline-offset: 2px;\n border-radius: var(--radius-xs);\n }\n\n &:disabled {\n opacity: 0.6;\n }\n }\n\n [data-slot=\"question-footer\"] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n padding: 32px 8px 8px;\n margin-top: -24px;\n }\n\n [data-slot=\"question-footer-actions\"] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n}\n\n[data-component=\"question-answers\"] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 8px 0;\n\n [data-slot=\"question-answer-item\"] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-size: var(--font-size-small);\n\n [data-slot=\"question-text\"] {\n color: var(--text-weak);\n }\n\n [data-slot=\"answer-text\"] {\n color: var(--text-strong);\n }\n }\n}\n\n[data-component=\"edit-tool\"],\n[data-component=\"write-tool\"],\n[data-component=\"apply-patch-tool\"] {\n > [data-component=\"collapsible\"].tool-collapsible {\n gap: 0px;\n }\n\n > [data-component=\"collapsible\"] > [data-slot=\"collapsible-content\"] {\n border: none;\n background: transparent;\n }\n\n > [data-component=\"collapsible\"] > [data-slot=\"collapsible-trigger\"] {\n min-height: 28px;\n height: auto;\n padding-bottom: 0;\n }\n\n > [data-component=\"collapsible\"]\n > [data-slot=\"collapsible-trigger\"][aria-expanded=\"true\"] {\n z-index: 20;\n background-color: var(--background-stronger);\n }\n}\n\n[data-component=\"accordion\"][data-scope=\"apply-patch\"] {\n [data-slot=\"accordion-trigger\"] {\n background-color: var(--background-stronger) !important;\n }\n\n [data-slot=\"apply-patch-trigger-content\"] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n gap: 20px;\n }\n\n [data-slot=\"apply-patch-file-info\"] {\n flex-grow: 1;\n display: flex;\n align-items: center;\n gap: 20px;\n min-width: 0;\n }\n\n [data-slot=\"apply-patch-file-name-container\"] {\n display: flex;\n flex-grow: 1;\n min-width: 0;\n }\n\n [data-slot=\"apply-patch-directory\"] {\n color: var(--text-base);\n min-width: 0;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n [data-slot=\"apply-patch-filename\"] {\n color: var(--text-strong);\n flex-shrink: 0;\n }\n\n [data-slot=\"apply-patch-trigger-actions\"] {\n flex-shrink: 0;\n display: flex;\n gap: 16px;\n align-items: center;\n justify-content: flex-end;\n }\n\n [data-slot=\"apply-patch-change\"] {\n font-family: var(--font-family-sans);\n font-size: var(--font-size-small);\n font-weight: var(--font-weight-medium);\n }\n\n [data-slot=\"apply-patch-change\"][data-type=\"added\"] {\n color: var(--icon-diff-add-base);\n }\n\n [data-slot=\"apply-patch-change\"][data-type=\"removed\"] {\n color: var(--icon-diff-delete-base);\n }\n\n [data-slot=\"apply-patch-change\"][data-type=\"modified\"] {\n color: var(--icon-diff-modified-base);\n }\n}\n\n[data-component=\"tool-loaded-file\"] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0 4px 28px;\n font-family: var(--font-family-sans);\n font-size: var(--font-size-small);\n font-weight: var(--font-weight-regular);\n line-height: var(--line-height-large);\n color: var(--text-weak);\n\n [data-component=\"icon\"] {\n flex-shrink: 0;\n color: var(--icon-weak);\n }\n}\n",
21
- "/* Synced from Mux frontend/src/pages/session/transcript/renderers/session-turn.css @ 37d6096b450cb33dfe9d7112e9d4ff75975d20b2. Do not edit; run npm run sync-styles. */\n/* Scope the existing typography tokens to transcript rows, not the header,\n composer, file tabs, or portalled menus. Shared renderers inherit this scale. */\n[data-component=\"message-timeline\"] [data-component=\"session-turn\"] {\n --font-size-base: var(--chat-font-size, 14px);\n --font-size-small: calc(var(--font-size-base) * 13 / 14);\n --font-size-large: calc(var(--font-size-base) * 16 / 14);\n --font-size-x-large: calc(var(--font-size-base) * 20 / 14);\n --markdown-font-size: var(--font-size-base);\n --file-font-size: var(--font-size-base);\n font-size: var(--font-size-base);\n}\n\n[data-component=\"session-turn\"] {\n --sticky-header-height: calc(var(--session-title-height, 0px) + 24px);\n height: 100%;\n min-height: 0;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n\n [data-slot=\"session-turn-message-container\"] {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n align-self: stretch;\n min-width: 0;\n gap: 18px;\n overflow-anchor: none;\n }\n\n [data-slot=\"session-turn-message-content\"] {\n margin-top: 0;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n }\n\n [data-slot=\"session-turn-compaction\"] {\n width: 100%;\n min-width: 0;\n align-self: stretch;\n }\n\n [data-slot=\"session-turn-thinking\"][data-layout=\"activity-row\"] {\n display: grid;\n grid-template-columns: var(--activity-label-width) minmax(0, 1fr) auto auto;\n align-items: baseline;\n column-gap: 8px;\n width: 100%;\n min-width: 0;\n color: var(--text-weak);\n font-family: var(--font-family-sans);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-large);\n min-height: 20px;\n\n [data-slot=\"activity-row-label\"] {\n grid-column: 1;\n min-width: 0;\n }\n\n .session-turn-thinking-heading {\n grid-column: 2;\n }\n\n [data-component=\"spinner\"] {\n width: 16px;\n height: 16px;\n }\n }\n\n .session-turn-thinking-heading {\n min-width: 0;\n max-width: 100%;\n overflow: hidden;\n color: var(--text-weaker);\n font-weight: var(--font-weight-regular);\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .error-card {\n color: var(--text-on-critical-base);\n max-height: 240px;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n word-break: break-word;\n overflow-y: auto;\n }\n\n [data-slot=\"session-turn-assistant-content\"] {\n width: 100%;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-self: stretch;\n gap: 12px;\n\n > :first-child > [data-component=\"markdown\"]:first-child {\n margin-top: 0;\n }\n }\n}\n",
22
- "/* The embed's own layout, plus the timeline and composer rules Mux keeps in\n frontend/src/index.css or writes as Tailwind classes (composer-view.tsx).\n Values mirror Mux's; everything else comes from the synced stylesheets. */\n\n:host {\n display: block;\n height: 100%;\n min-height: 0;\n /* Mux ships Inter and IBM Plex Mono; fall back to system faces when the host page lacks them. */\n --font-family-sans: \"Inter\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n --font-family-mono: \"IBM Plex Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nbutton,\ninput,\nselect,\ntextarea {\n font: inherit;\n color: inherit;\n margin: 0;\n}\n\nbutton {\n background: none;\n border: 0;\n padding: 0;\n cursor: pointer;\n}\n\nbutton:disabled {\n cursor: default;\n}\n\n[data-component=\"icon\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n[data-component=\"mux-chat\"] {\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n background: var(--background-stronger);\n color: var(--text-base);\n font-family: var(--font-family-sans);\n font-feature-settings: var(--font-family-sans--font-feature-settings);\n font-size: var(--font-size-base);\n line-height: var(--line-height-large);\n -webkit-font-smoothing: antialiased;\n}\n\n/* ---------------------------------------------------------------- header */\n\n[data-slot=\"mux-chat-header\"] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 44px;\n padding: 8px 10px 8px 18px;\n border-bottom: 1px solid var(--border-weaker-base);\n}\n\n[data-slot=\"mux-chat-heading\"] {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n}\n\n[data-slot=\"mux-chat-title\"] {\n color: var(--text-strong);\n font-weight: var(--font-weight-medium);\n line-height: 20px;\n}\n\n[data-slot=\"mux-chat-subtitle\"] {\n color: var(--text-weak);\n font-size: 12px;\n line-height: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n[data-slot=\"mux-chat-status\"] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: none;\n color: var(--text-weak);\n font-size: 12px;\n line-height: 16px;\n\n &::before {\n content: \"\";\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--icon-weak-base);\n }\n\n &[data-tone=\"ok\"]::before {\n background: var(--icon-success-base);\n }\n\n &[data-tone=\"bad\"]::before {\n background: var(--icon-critical-base);\n }\n\n &[data-tone=\"ok\"] [data-slot=\"mux-chat-status-text\"] {\n display: none;\n }\n}\n\n[data-action=\"new-chat\"] {\n width: 28px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n/* -------------------------------------------------------------- timeline */\n\n[data-component=\"message-timeline\"] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overflow-anchor: auto;\n display: flex;\n flex-direction: column;\n padding: 16px 0;\n scrollbar-width: thin;\n}\n\n[data-component=\"message-timeline\"] [data-slot=\"session-turn-message-container\"] {\n display: flex;\n flex-direction: column;\n gap: 14px;\n padding-inline: 18px;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"assistant-message\"] {\n gap: 8px;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"user-message\"] {\n line-height: var(--line-height-large);\n}\n\n[data-component=\"message-timeline\"] [data-slot=\"user-message-text\"] {\n padding: 6px 9px;\n white-space: pre-wrap;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"text-part\"] {\n width: 100%;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"text-part\"] [data-component=\"markdown\"] {\n line-height: 1.5625;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] p {\n margin-bottom: 0.75rem;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] :is(h1, h2, h3, h4, h5, h6) {\n margin-top: 1.5rem;\n margin-bottom: 0.5rem;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] :is(ul, ol) {\n margin-top: 0.375rem;\n margin-bottom: 0.75rem;\n padding-left: 1.25rem;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] ol {\n padding-left: 1.75rem;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] li {\n margin-bottom: 0.25rem;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] :is(blockquote, pre) {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] hr {\n margin-block: 1.5rem;\n}\n\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] > :last-child {\n margin-bottom: 0;\n}\n\n/* Tables scroll inside a narrow sidebar instead of overflowing it. */\n[data-component=\"message-timeline\"] [data-component=\"markdown\"] table {\n display: block;\n max-width: 100%;\n overflow-x: auto;\n}\n\n[data-slot=\"mux-tool-output\"] {\n padding: 8px 4px 4px;\n\n pre {\n margin: 0;\n max-height: 320px;\n overflow: auto;\n padding: 8px 12px;\n border: 1px solid var(--border-weak-base);\n border-radius: var(--radius-lg);\n background: var(--surface-raised-base);\n color: var(--text-base);\n font-family: var(--font-family-mono);\n font-size: 12px;\n line-height: 18px;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n }\n\n pre[data-status=\"error\"] {\n color: var(--text-critical-base, var(--icon-critical-base));\n }\n}\n\n[data-slot=\"mux-chat-error\"],\n[data-slot=\"mux-chat-notice\"] {\n color: var(--text-critical-base, var(--icon-critical-base));\n font-size: var(--font-size-small);\n line-height: var(--line-height-large);\n}\n\n[data-slot=\"mux-chat-notice\"] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 8px;\n\n > span {\n flex: 1;\n min-width: 0;\n }\n\n [data-action=\"retry\"] {\n flex: none;\n color: var(--text-strong);\n }\n}\n\n/* ----------------------------------------------------------- empty state */\n\n[data-slot=\"mux-chat-empty\"] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin-block: auto;\n padding: 24px 18px;\n}\n\n[data-slot=\"mux-chat-empty-title\"] {\n color: var(--text-strong);\n font-size: var(--font-size-large);\n font-weight: var(--font-weight-medium);\n line-height: 24px;\n}\n\n[data-slot=\"mux-chat-empty-subtitle\"] {\n color: var(--text-weak);\n}\n\n[data-slot=\"mux-chat-suggestions\"] {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n margin-top: 10px;\n}\n\n[data-slot=\"mux-chat-suggestion\"] {\n max-width: 100%;\n padding: 6px 12px;\n border: 1px solid var(--border-weak-base);\n border-radius: 9999px;\n background: var(--surface-raised-base);\n color: var(--text-base);\n font-size: var(--font-size-small);\n line-height: 20px;\n text-align: start;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n\n &:hover {\n background: var(--surface-raised-base-hover);\n border-color: var(--border-base);\n }\n}\n\n/* --------------------------------------------------------- dock/composer */\n\n[data-slot=\"mux-chat-dock\"] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 0 8px;\n}\n\n[data-component=\"prompt-composer-surface\"] {\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: clip;\n border: 1px solid var(--border-weak-base);\n border-bottom-width: 0;\n border-radius: 16px 16px 0 0;\n --prompt-composer-fill: var(--surface-raised-stronger-non-alpha);\n background: var(--prompt-composer-fill);\n\n &:focus-within {\n border-color: var(--border-base);\n }\n\n &[aria-busy=\"true\"] {\n pointer-events: none;\n }\n\n > [data-dock-surface=\"shell\"] {\n border-radius: 0;\n box-shadow: none;\n background: transparent;\n }\n\n > [data-component=\"prompt-controls\"] {\n margin-top: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n }\n}\n\n[data-component=\"prompt-input-shell\"] {\n flex: none;\n min-height: 32px;\n}\n\n[data-component=\"prompt-input-scroll\"] {\n position: relative;\n max-height: 240px;\n overflow-y: auto;\n scrollbar-width: none;\n}\n\n[data-component=\"prompt-input\"] {\n display: block;\n width: 100%;\n min-height: 30px;\n resize: none;\n border: 0;\n outline: none;\n background: transparent;\n padding: 8px 16px var(--prompt-inset);\n color: var(--text-strong);\n font-size: 13px;\n line-height: 20px;\n\n &::placeholder {\n color: var(--text-weaker);\n }\n}\n\n[data-component=\"prompt-controls-inner\"] {\n padding: 1px 10px;\n}\n\n[data-component=\"prompt-control-row\"] {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n min-height: 36px;\n}\n\n[data-component=\"prompt-control-left\"] {\n display: flex;\n align-items: center;\n gap: 2px;\n flex: 1;\n min-width: 0;\n}\n\n[data-component=\"prompt-control-right\"] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: none;\n margin-left: auto;\n}\n\n[data-component=\"prompt-model-control\"] {\n position: relative;\n min-width: 0;\n max-width: 14rem;\n display: flex;\n align-items: center;\n}\n\n[data-action=\"prompt-model\"] {\n appearance: none;\n field-sizing: content;\n height: 28px;\n min-width: 0;\n max-width: 100%;\n padding: 0 22px 0 8px;\n border: 0;\n border-radius: var(--radius-md);\n background: transparent;\n color: var(--text-base);\n font-size: var(--font-size-small);\n font-weight: var(--font-weight-medium);\n text-overflow: ellipsis;\n cursor: pointer;\n transition: background-color 0.15s ease;\n\n &:hover:not(:disabled) {\n background: var(--surface-base-hover);\n }\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--shadow-xs-border-focus);\n }\n\n option,\n optgroup {\n background: var(--background-stronger);\n color: var(--text-base);\n }\n}\n\n[data-slot=\"prompt-model-chevron\"] {\n position: absolute;\n right: 6px;\n display: inline-flex;\n color: var(--icon-weak-base);\n pointer-events: none;\n}\n\n[data-component=\"prompt-submit-control\"] {\n display: flex;\n width: 28px;\n height: 28px;\n flex: none;\n align-items: center;\n justify-content: center;\n}\n\n[data-action=\"prompt-submit\"] {\n width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n}\n\n/* ---------------------------------------------------------- question dock */\n\n[data-component=\"mux-question\"],\n[data-component=\"mux-permission\"] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n border: 1px solid var(--border-weak-base);\n border-radius: 12px;\n background: var(--surface-raised-stronger-non-alpha);\n}\n\n[data-component=\"mux-permission\"] {\n gap: 8px;\n}\n\n[data-slot=\"mux-permission-patterns\"] {\n max-height: 96px;\n overflow: auto;\n padding: 6px 8px;\n border-radius: var(--radius-md);\n background: var(--surface-inset-base);\n color: var(--text-base);\n font-family: var(--font-family-mono);\n font-size: 12px;\n line-height: 18px;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n\n[data-slot=\"mux-question-item\"] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n[data-slot=\"mux-question-header\"] {\n color: var(--text-weak);\n font-size: 12px;\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.02em;\n}\n\n[data-slot=\"mux-question-text\"] {\n color: var(--text-strong);\n font-weight: var(--font-weight-medium);\n}\n\n[data-slot=\"mux-question-options\"] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n[data-slot=\"mux-question-option\"] {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n padding: 8px 10px;\n border: 1px solid var(--border-weak-base);\n border-radius: var(--radius-lg);\n text-align: start;\n transition: background-color 0.15s ease, border-color 0.15s ease;\n\n &:hover {\n background: var(--surface-base-hover);\n }\n\n &[aria-checked=\"true\"] {\n border-color: var(--border-selected);\n background: var(--surface-base-interactive-active);\n }\n}\n\n[data-slot=\"mux-question-option-description\"] {\n color: var(--text-weak);\n font-size: var(--font-size-small);\n}\n\n[data-slot=\"mux-question-custom\"] {\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--border-weak-base);\n border-radius: var(--radius-lg);\n background: transparent;\n outline: none;\n\n &:focus {\n border-color: var(--border-base);\n }\n}\n\n[data-slot=\"mux-question-actions\"] {\n display: flex;\n justify-content: flex-end;\n gap: 6px;\n}\n\n[data-slot=\"mux-button\"] {\n height: 30px;\n padding: 0 12px;\n border-radius: var(--radius-md);\n font-size: var(--font-size-small);\n font-weight: var(--font-weight-medium);\n\n &[data-variant=\"ghost\"]:hover {\n background: var(--surface-base-hover);\n }\n\n &[data-variant=\"primary\"] {\n background: var(--icon-strong-base);\n color: var(--icon-invert-base);\n }\n\n &[data-variant=\"primary\"]:disabled {\n background: var(--icon-strong-disabled);\n }\n}\n"
23
- ].join("\n");
24
- //#endregion
25
- //#region src/model.ts
26
- /** Connected providers and their models, in runtime order. */
27
- function modelGroups(inventory) {
28
- return inventory.all.filter((provider) => inventory.connected.includes(provider.id)).map((provider) => ({
29
- id: provider.id,
30
- label: provider.name || provider.id,
31
- models: Object.values(provider.models).map((model) => ({
32
- value: `${provider.id}/${model.id}`,
33
- label: model.name || model.id
34
- }))
35
- })).filter((group) => group.models.length > 0);
36
- }
37
- /**
38
- * The model to use: the user's stored pick, else the app's preference, else a
39
- * connected provider's default, else the first available. `undefined` when
40
- * nothing is available.
41
- */
42
- function chooseModel(groups, inventory, stored, preferred) {
43
- const available = new Set(groups.flatMap((group) => group.models.map((model) => model.value)));
44
- return [
45
- stored,
46
- preferred,
47
- ...inventory.connected.map((id) => inventory.default[id] ? `${id}/${inventory.default[id]}` : ""),
48
- groups[0]?.models[0]?.value
49
- ].find((value) => !!value && available.has(value));
50
- }
51
- function parseModel(value) {
52
- const slash = value?.indexOf("/") ?? -1;
53
- return value && slash > 0 ? {
54
- providerID: value.slice(0, slash),
55
- modelID: value.slice(slash + 1)
56
- } : void 0;
57
- }
58
- /** Parts a reader sees, in order: text, non-empty reasoning, and tool calls. */
59
- function visibleParts(parts) {
60
- return parts.filter((part) => part.type === "text" && !part.synthetic && !part.ignored && part.text.trim() !== "" || part.type === "reasoning" && part.text.trim() !== "" || part.type === "tool");
61
- }
62
- var BUILTIN_TOOLS = {
63
- websearch: "Searching the web",
64
- webfetch: "Reading page",
65
- question: "Question"
66
- };
67
- /** "add_to_watchlist" → "Add to watchlist". */
68
- var humanize = (name) => {
69
- const words = name.replace(/[_-]+/g, " ").trim();
70
- return words ? words[0].toUpperCase() + words.slice(1) : name;
71
- };
72
- function toolTitle(tool, labels = {}) {
73
- return labels[tool] ?? BUILTIN_TOOLS[tool] ?? humanize(tool);
74
- }
75
- var INPUT_KEYS = [
76
- "description",
77
- "query",
78
- "url",
79
- "name",
80
- "symbol",
81
- "watchlist",
82
- "path",
83
- "pattern"
84
- ];
85
- /** One line under the tool name: the tool's own title once it has one, else its most telling input. */
86
- function toolSubtitle(state) {
87
- if ((state.status === "completed" || state.status === "running") && state.title) return state.title;
88
- const input = state.input ?? {};
89
- for (const key of INPUT_KEYS) {
90
- const value = input[key];
91
- if (typeof value === "string" && value) return value;
92
- }
93
- for (const value of Object.values(input)) {
94
- if (typeof value === "string" && value) return value;
95
- if (Array.isArray(value) && value.length && value.every((item) => typeof item === "string")) return value.join(", ");
96
- }
97
- return "";
98
- }
99
- var toolActive = (part) => part.state.status === "pending" || part.state.status === "running";
100
- function toolDetail(state) {
101
- if (state.status === "error") return state.error;
102
- if (state.status === "completed") return state.output;
103
- if (state.status === "running") return state.output ?? "";
104
- return "";
105
- }
106
- var seconds = (start, end) => `${Math.max(0, (end - start) / 1e3).toFixed(1)}s`;
107
- var sameIDs = (a, b) => a.length === b.length && a.every((id, index) => id === b[index]);
108
- //#endregion
109
- //#region src/controller.ts
110
- var idle = {
111
- connected: false,
112
- ready: false,
113
- historyLoading: false,
114
- historyError: "",
115
- snapshotError: "",
116
- error: "",
117
- ended: false
118
- };
119
- var storage = {
120
- get(key) {
121
- try {
122
- return localStorage.getItem(key) ?? void 0;
123
- } catch {
124
- return;
125
- }
126
- },
127
- set(key, value) {
128
- try {
129
- if (value === void 0) localStorage.removeItem(key);
130
- else localStorage.setItem(key, value);
131
- } catch {}
132
- }
133
- };
134
- function createChatController(options) {
135
- let disposed = false;
136
- const app = createAppClient({ url: options.url });
137
- const { client } = app;
138
- const store = createMemoryStore();
139
- const [state, setState] = createSignal(store.state());
140
- const [view, setView] = createSignal(idle);
141
- const [sessionID, setSessionID] = createSignal();
142
- const [notice, setNotice] = createSignal();
143
- const [grantError, setGrantError] = createSignal();
144
- const [tools, setTools] = createSignal(/* @__PURE__ */ new Map());
145
- const [inventory, setInventory] = createSignal();
146
- const [offline, setOffline] = createSignal(false);
147
- const [delivering, setDelivering] = createSignal(false);
148
- const describe = (error) => error instanceof Error ? error.message : String(error);
149
- const report = (error) => setNotice(describe(error));
150
- const connect = (workspaceID) => createChatSession({
151
- store,
152
- transport: createRuntimeTransport(client, { workspaceID })
153
- });
154
- let session;
155
- let frame;
156
- const publish = () => {
157
- if (frame !== void 0 || disposed) return;
158
- frame = requestAnimationFrame(() => {
159
- frame = void 0;
160
- batch(() => {
161
- setState(store.state());
162
- setView(session ? session.view() : idle);
163
- });
164
- });
165
- };
166
- const unsubscribe = store.subscribe(publish);
167
- const timers = /* @__PURE__ */ new Map();
168
- const schedule = (name, ms, run) => {
169
- clearTimeout(timers.get(name));
170
- timers.set(name, setTimeout(() => {
171
- timers.delete(name);
172
- if (!disposed) run();
173
- }, ms));
174
- };
175
- onCleanup(() => {
176
- disposed = true;
177
- for (const timer of timers.values()) clearTimeout(timer);
178
- if (frame !== void 0) cancelAnimationFrame(frame);
179
- unsubscribe();
180
- session?.dispose();
181
- });
182
- const fetchGrant = async () => {
183
- const next = await app.refreshGrant();
184
- if (!next?.token || !next.workspaceID) throw new Error("Chat is unavailable (invalid grant)");
185
- setTools(new Map((next.tools ?? []).map((tool) => [tool.name, tool])));
186
- setGrantError(void 0);
187
- schedule("grant", Math.max(1e4, (next.expiresAt - Date.now()) * .8), () => void renew(0));
188
- };
189
- const renew = async (attempt) => {
190
- try {
191
- await fetchGrant();
192
- } catch (error) {
193
- setGrantError(describe(error));
194
- schedule("grant", Math.min(6e4, 15e3 * 2 ** attempt), () => void renew(attempt + 1));
195
- }
196
- };
197
- const sessionKey = () => `${options.storageKey}:session:${app.grant()?.workspaceID}`;
198
- const modelKey = `${options.storageKey}:model`;
199
- const open = async (resume) => {
200
- const opened = await client.openSession({
201
- workspaceID: app.grant().workspaceID,
202
- sessionID: resume,
203
- title: options.sessionTitle
204
- });
205
- if (disposed) return;
206
- storage.set(sessionKey(), opened.session.id);
207
- session?.dispose();
208
- session = connect(opened.workspaceID);
209
- session.subscribe(publish);
210
- setSessionID(opened.session.id);
211
- session.start(opened.session.id);
212
- publish();
213
- };
214
- const loadModels = async () => {
215
- try {
216
- setInventory(await client.providers());
217
- setOffline(false);
218
- } catch (error) {
219
- console.warn("[mux-chat]", error);
220
- setOffline(true);
221
- schedule("models", 15e3, () => void loadModels());
222
- }
223
- };
224
- const boot = async () => {
225
- try {
226
- await fetchGrant();
227
- } catch (error) {
228
- setGrantError(describe(error));
229
- schedule("boot", 15e3, () => void boot());
230
- return;
231
- }
232
- try {
233
- await open(storage.get(sessionKey()));
234
- setNotice(void 0);
235
- loadModels();
236
- } catch (error) {
237
- report(error);
238
- schedule("boot", 15e3, () => void boot());
239
- }
240
- };
241
- boot();
242
- const turns = createMemo(() => {
243
- const id = sessionID();
244
- return id ? sessionTurns(state(), id) : [];
245
- });
246
- const turnsByID = createMemo(() => new Map(turns().map((turn) => [turn.message.id, turn])));
247
- const messageIDs = createMemo(() => turns().map((turn) => turn.message.id), [], { equals: sameIDs });
248
- const streaming = createMemo(() => {
249
- const id = sessionID();
250
- return !!id && isSessionStreaming(state(), id);
251
- });
252
- const questions = createMemo(() => {
253
- const id = sessionID();
254
- return id ? sessionQuestions(state(), id) : [];
255
- });
256
- const permissions = createMemo(() => {
257
- const id = sessionID();
258
- return id ? sessionPermissions(state(), id) : [];
259
- });
260
- const seen = /* @__PURE__ */ new Set();
261
- let live = false;
262
- createEffect(on(turns, (current) => {
263
- for (const turn of current) for (const part of turn.parts) {
264
- if (part.type !== "tool" || part.state.status !== "completed" || seen.has(part.id)) continue;
265
- seen.add(part.id);
266
- if (live) options.onToolResult?.({
267
- tool: part.tool,
268
- title: part.state.title,
269
- input: part.state.input,
270
- output: part.state.output,
271
- sessionID: part.sessionID,
272
- readOnly: tools().get(part.tool)?.readOnly ?? true
273
- });
274
- }
275
- if (untrack(view).ready) live = true;
276
- }));
277
- const [modelValue, setModelValue] = createSignal(storage.get(modelKey) ?? "");
278
- const selectModel = (value) => {
279
- setModelValue(value);
280
- storage.set(modelKey, value);
281
- };
282
- const groups = createMemo(() => {
283
- const inv = inventory();
284
- return inv ? modelGroups(inv) : [];
285
- });
286
- createEffect(on(groups, (current) => {
287
- const inv = inventory();
288
- if (!inv || !current.length) return;
289
- const choice = chooseModel(current, inv, untrack(modelValue), options.preferredModel);
290
- if (choice && choice !== untrack(modelValue)) selectModel(choice);
291
- }));
292
- const status = createMemo(() => {
293
- if (offline()) return {
294
- tone: "bad",
295
- text: "Offline"
296
- };
297
- if (inventory() && !groups().length) return {
298
- tone: "bad",
299
- text: "No models available"
300
- };
301
- const current = view();
302
- if (current.connected) return {
303
- tone: "ok",
304
- text: "Connected"
305
- };
306
- return current.ready ? {
307
- tone: "bad",
308
- text: "Reconnecting…"
309
- } : {
310
- tone: "busy",
311
- text: "Connecting…"
312
- };
313
- });
314
- const withSession = (action) => async () => {
315
- const id = sessionID();
316
- if (!id) return;
317
- try {
318
- await action(id);
319
- } catch (error) {
320
- report(error);
321
- }
322
- };
323
- const deliver = async (target, submission) => {
324
- setDelivering(true);
325
- try {
326
- return await target.send(submission);
327
- } finally {
328
- setDelivering(false);
329
- }
330
- };
331
- return {
332
- /** Changes once per rendered frame while the transcript updates. */
333
- changes: state,
334
- sessionID,
335
- /** Labels from the app's tool definitions. */
336
- toolLabels: createMemo(() => Object.fromEntries([...tools()].flatMap(([name, tool]) => tool.label ? [[name, tool.label]] : []))),
337
- messageIDs,
338
- turn: (id) => turnsByID().get(id),
339
- questions,
340
- permissions,
341
- streaming,
342
- ready: () => view().ready,
343
- view,
344
- status,
345
- error: () => view().error || view().snapshotError || grantError() || notice() || "",
346
- /** A message is shown but its delivery was not confirmed; `retry()` completes it. */
347
- unconfirmed: () => !!view().pending && !delivering(),
348
- modelGroups: groups,
349
- modelValue,
350
- selectModel,
351
- async send(text) {
352
- const target = session;
353
- const id = sessionID();
354
- const trimmed = text.trim();
355
- if (!target || !id || !trimmed || !view().ready) return "failed";
356
- setNotice(void 0);
357
- const pending = target.view().pending;
358
- if (pending && !await deliver(target, pending)) return "failed";
359
- const submission = textSubmission({
360
- sessionID: id,
361
- text: trimmed,
362
- agent: options.agent,
363
- model: parseModel(modelValue())
364
- });
365
- if (await deliver(target, submission)) return "sent";
366
- return target.view().pending === submission ? "unconfirmed" : "failed";
367
- },
368
- async retry() {
369
- const target = session;
370
- const pending = target?.view().pending;
371
- if (target && pending && !delivering()) await deliver(target, pending);
372
- },
373
- abort: withSession((id) => client.abort(id)),
374
- answer: (requestID, answers) => withSession(() => client.answerQuestion(requestID, answers))(),
375
- reject: (requestID) => withSession(() => client.rejectQuestion(requestID))(),
376
- replyPermission: (requestID, response) => withSession((id) => client.replyPermission(id, requestID, response))(),
377
- /** Loads the next older page of history, if any. */
378
- older: () => {
379
- if (view().cursor && !view().historyLoading) session?.older();
380
- },
381
- async newChat() {
382
- if (!app.grant()) return;
383
- try {
384
- session?.dispose();
385
- session = void 0;
386
- setSessionID(void 0);
387
- setView(idle);
388
- await open(void 0);
389
- } catch (error) {
390
- report(error);
391
- }
392
- }
393
- };
394
- }
395
- //#endregion
396
- //#region src/markdown.ts
397
- var marked = new Marked({
398
- gfm: true,
399
- breaks: false
400
- });
401
- var purify;
402
- function sanitizer() {
403
- if (!purify) {
404
- purify = createDOMPurify(window);
405
- purify.addHook("afterSanitizeAttributes", (node) => {
406
- if (node.tagName === "A" && node.getAttribute("href")) {
407
- node.setAttribute("target", "_blank");
408
- node.setAttribute("rel", "noopener noreferrer");
409
- }
410
- });
411
- }
412
- return purify;
413
- }
414
- /** Model output as sanitized HTML. */
415
- function renderMarkdown(text) {
416
- return sanitizer().sanitize(marked.parse(text, { async: false }));
417
- }
418
- //#endregion
419
- //#region src/view/primitives.tsx
420
- var _tmpl$$3 = /*#__PURE__*/ template(`<span data-component=text-shimmer style=--text-shimmer-swap:220ms><span data-slot=text-shimmer-char><span data-slot=text-shimmer-char-base aria-hidden=true></span><span data-slot=text-shimmer-char-shimmer aria-hidden=true>`);
421
- var _tmpl$2$2 = /*#__PURE__*/ template(`<span data-component=icon data-size=small><svg data-slot=icon-svg width=16 height=16 viewBox="0 0 16 16"stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path>`);
422
- var SWAP_MS = 220;
423
- /** Mux's text shimmer (ui/components/text-shimmer): an animated sweep while `active`. */
424
- function TextShimmer(props) {
425
- const [run, setRun] = createSignal(props.active);
426
- let timer;
427
- createEffect(() => {
428
- clearTimeout(timer);
429
- if (props.active) setRun(true);
430
- else timer = setTimeout(() => setRun(false), SWAP_MS);
431
- });
432
- onCleanup(() => clearTimeout(timer));
433
- return (() => {
434
- var _el$ = _tmpl$$3(), _el$3 = _el$.firstChild.firstChild, _el$4 = _el$3.nextSibling;
435
- insert(_el$3, () => props.text);
436
- insert(_el$4, () => props.text);
437
- effect((_p$) => {
438
- var _v$ = props.active ? "true" : "false", _v$2 = props.text, _v$3 = `${props.offset ?? 0}`, _v$4 = run() ? "true" : "false";
439
- _v$ !== _p$.e && setAttribute(_el$, "data-active", _p$.e = _v$);
440
- _v$2 !== _p$.t && setAttribute(_el$, "aria-label", _p$.t = _v$2);
441
- _v$3 !== _p$.a && setStyleProperty(_el$, "--text-shimmer-index", _p$.a = _v$3);
442
- _v$4 !== _p$.o && setAttribute(_el$4, "data-run", _p$.o = _v$4);
443
- return _p$;
444
- }, {
445
- e: void 0,
446
- t: void 0,
447
- a: void 0,
448
- o: void 0
449
- });
450
- return _el$;
451
- })();
452
- }
453
- var svg = (path, filled = false) => () => (() => {
454
- var _el$5 = _tmpl$2$2(), _el$6 = _el$5.firstChild, _el$7 = _el$6.firstChild;
455
- setAttribute(_el$6, "fill", filled ? "currentColor" : "none");
456
- setAttribute(_el$6, "stroke", filled ? "none" : "currentColor");
457
- setAttribute(_el$7, "d", path);
458
- return _el$5;
459
- })();
460
- var ChevronDown = svg("M4 6l4 4 4-4");
461
- var ArrowUp = svg("M8 13V3.5M3.5 8 8 3.5 12.5 8");
462
- var Stop = svg("M4.5 4.5h7v7h-7z", true);
463
- var Plus = svg("M8 3v10M3 8h10");
464
- //#endregion
465
- //#region src/view/parts.tsx
466
- var _tmpl$$2 = /*#__PURE__*/ template(`<div data-slot=collapsible-arrow data-size=compact><span data-slot=collapsible-arrow-icon>`);
467
- var _tmpl$2$1 = /*#__PURE__*/ template(`<div data-slot=collapsible-content data-expanded>`);
468
- var _tmpl$3$1 = /*#__PURE__*/ template(`<div data-component=collapsible data-variant=normal class=tool-collapsible><button type=button data-slot=collapsible-trigger><div data-component=tool-trigger data-layout=activity-row><div data-slot=basic-tool-tool-trigger-content><div data-slot=basic-tool-tool-info><div data-slot=basic-tool-tool-info-structured><div data-slot=basic-tool-tool-info-main><span data-slot=basic-tool-tool-title></span><span data-slot=basic-tool-tool-detail dir=ltr>`);
469
- var _tmpl$4$1 = /*#__PURE__*/ template(`<span data-slot=basic-tool-tool-subtitle>`);
470
- var _tmpl$5$1 = /*#__PURE__*/ template(`<div data-slot=mux-tool-output><pre>`);
471
- var _tmpl$6$1 = /*#__PURE__*/ template(`<div data-component=reasoning-part><div data-component=markdown>`);
472
- var _tmpl$7$1 = /*#__PURE__*/ template(`<div data-component=text-part><div data-component=markdown>`);
473
- /** One collapsible activity row (Mux BasicTool). */
474
- function ActivityRow(props) {
475
- const [open, setOpen] = createSignal(false);
476
- const expandable = () => props.children !== void 0;
477
- return (() => {
478
- var _el$ = _tmpl$3$1(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$8 = _el$3.firstChild.firstChild.firstChild.firstChild.firstChild, _el$9 = _el$8.nextSibling;
479
- _el$2.$$click = () => setOpen(!open());
480
- insert(_el$8, createComponent(TextShimmer, {
481
- get text() {
482
- return props.title;
483
- },
484
- get active() {
485
- return props.active;
486
- }
487
- }));
488
- insert(_el$9, createComponent(Show, {
489
- get when() {
490
- return props.subtitle;
491
- },
492
- children: (subtitle) => (() => {
493
- var _el$11 = _tmpl$4$1();
494
- insert(_el$11, subtitle);
495
- return _el$11;
496
- })()
497
- }));
498
- insert(_el$3, createComponent(Show, {
499
- get when() {
500
- return expandable();
501
- },
502
- get children() {
503
- var _el$0 = _tmpl$$2(), _el$1 = _el$0.firstChild;
504
- insert(_el$1, createComponent(ChevronDown, {}));
505
- return _el$0;
506
- }
507
- }), null);
508
- insert(_el$, createComponent(Show, {
509
- get when() {
510
- return memo(() => !!open())() && expandable();
511
- },
512
- get children() {
513
- var _el$10 = _tmpl$2$1();
514
- insert(_el$10, () => props.children);
515
- return _el$10;
516
- }
517
- }), null);
518
- effect((_p$) => {
519
- var _v$ = props.name, _v$2 = props.status, _v$3 = open() ? "" : void 0, _v$4 = open() ? void 0 : "", _v$5 = open(), _v$6 = !expandable();
520
- _v$ !== _p$.e && setAttribute(_el$, "data-tool", _p$.e = _v$);
521
- _v$2 !== _p$.t && setAttribute(_el$, "data-status", _p$.t = _v$2);
522
- _v$3 !== _p$.a && setAttribute(_el$, "data-expanded", _p$.a = _v$3);
523
- _v$4 !== _p$.o && setAttribute(_el$, "data-closed", _p$.o = _v$4);
524
- _v$5 !== _p$.i && setAttribute(_el$2, "aria-expanded", _p$.i = _v$5);
525
- _v$6 !== _p$.n && (_el$2.disabled = _p$.n = _v$6);
526
- return _p$;
527
- }, {
528
- e: void 0,
529
- t: void 0,
530
- a: void 0,
531
- o: void 0,
532
- i: void 0,
533
- n: void 0
534
- });
535
- return _el$;
536
- })();
537
- }
538
- function ToolRow(props) {
539
- const detail = createMemo(() => toolDetail(props.part.state).slice(0, 2e4));
540
- return createComponent(ActivityRow, {
541
- get title() {
542
- return toolTitle(props.part.tool, props.labels);
543
- },
544
- get subtitle() {
545
- return toolSubtitle(props.part.state);
546
- },
547
- get active() {
548
- return toolActive(props.part);
549
- },
550
- get name() {
551
- return props.part.tool;
552
- },
553
- get status() {
554
- return props.part.state.status;
555
- },
556
- get children() {
557
- return memo(() => !!detail())() ? (() => {
558
- var _el$12 = _tmpl$5$1(), _el$13 = _el$12.firstChild;
559
- insert(_el$13, detail);
560
- effect(() => setAttribute(_el$13, "data-status", props.part.state.status));
561
- return _el$12;
562
- })() : void 0;
563
- }
564
- });
565
- }
566
- function ReasoningRow(props) {
567
- const active = () => props.live && props.part.time?.end === void 0;
568
- const duration = () => props.part.time?.end ? seconds(props.part.time.start, props.part.time.end) : void 0;
569
- return createComponent(ActivityRow, {
570
- get title() {
571
- return active() ? "Thinking" : "Thought";
572
- },
573
- get subtitle() {
574
- return duration();
575
- },
576
- get active() {
577
- return active();
578
- },
579
- name: "reasoning",
580
- get children() {
581
- var _el$14 = _tmpl$6$1(), _el$15 = _el$14.firstChild;
582
- effect(() => _el$15.innerHTML = renderMarkdown(props.part.text));
583
- return _el$14;
584
- }
585
- });
586
- }
587
- function TextPartView(props) {
588
- return (() => {
589
- var _el$16 = _tmpl$7$1(), _el$17 = _el$16.firstChild;
590
- effect(() => _el$17.innerHTML = renderMarkdown(props.part.text));
591
- return _el$16;
592
- })();
593
- }
594
- function PartView(props) {
595
- return createComponent(Switch, { get children() {
596
- return [
597
- createComponent(Match, {
598
- get when() {
599
- return memo(() => props.part.type === "text")() && props.part;
600
- },
601
- children: (part) => createComponent(TextPartView, { get part() {
602
- return part();
603
- } })
604
- }),
605
- createComponent(Match, {
606
- get when() {
607
- return memo(() => props.part.type === "reasoning")() && props.part;
608
- },
609
- children: (part) => createComponent(ReasoningRow, {
610
- get part() {
611
- return part();
612
- },
613
- get live() {
614
- return props.live;
615
- }
616
- })
617
- }),
618
- createComponent(Match, {
619
- get when() {
620
- return memo(() => props.part.type === "tool")() && props.part;
621
- },
622
- children: (part) => createComponent(ToolRow, {
623
- get part() {
624
- return part();
625
- },
626
- get labels() {
627
- return props.labels;
628
- }
629
- })
630
- })
631
- ];
632
- } });
633
- }
634
- delegateEvents(["click"]);
635
- //#endregion
636
- //#region src/view/Chat.tsx
637
- var _tmpl$$1 = /*#__PURE__*/ template(`<div data-component=assistant-message>`);
638
- var _tmpl$2 = /*#__PURE__*/ template(`<div data-component=user-message><div data-slot=user-message-body><div data-slot=user-message-text>`);
639
- var _tmpl$3 = /*#__PURE__*/ template(`<div data-slot=mux-chat-error role=alert>`);
640
- var _tmpl$4 = /*#__PURE__*/ template(`<div data-component=mux-question data-dock-surface=shell role=group aria-label="Question from the assistant"><div data-slot=mux-question-actions><button type=button data-slot=mux-button data-variant=ghost>Skip</button><button type=button data-slot=mux-button data-variant=primary>Answer`);
641
- var _tmpl$5 = /*#__PURE__*/ template(`<div data-slot=mux-question-header>`);
642
- var _tmpl$6 = /*#__PURE__*/ template(`<input data-slot=mux-question-custom placeholder="Or type your own answer">`);
643
- var _tmpl$7 = /*#__PURE__*/ template(`<div data-slot=mux-question-item><div data-slot=mux-question-text></div><div data-slot=mux-question-options>`);
644
- var _tmpl$8 = /*#__PURE__*/ template(`<span data-slot=mux-question-option-description>`);
645
- var _tmpl$9 = /*#__PURE__*/ template(`<button type=button data-slot=mux-question-option><span data-slot=mux-question-option-label>`);
646
- var _tmpl$0 = /*#__PURE__*/ template(`<div data-slot=mux-permission-patterns>`);
647
- var _tmpl$1 = /*#__PURE__*/ template(`<div data-component=mux-permission data-dock-surface=shell role=group aria-label="Permission request from the assistant"><div data-slot=mux-question-header>Permission</div><div data-slot=mux-question-text>The assistant wants to use <!>.</div><div data-slot=mux-question-actions><button type=button data-slot=mux-button data-variant=ghost data-reply=reject>Deny</button><button type=button data-slot=mux-button data-variant=ghost data-reply=always>Always allow</button><button type=button data-slot=mux-button data-variant=primary data-reply=once>Allow once`);
648
- var _tmpl$10 = /*#__PURE__*/ template(`<span data-slot=mux-chat-subtitle>`);
649
- var _tmpl$11 = /*#__PURE__*/ template(`<div data-slot=mux-chat-empty-subtitle>`);
650
- var _tmpl$12 = /*#__PURE__*/ template(`<div data-slot=mux-chat-suggestions>`);
651
- var _tmpl$13 = /*#__PURE__*/ template(`<div data-slot=mux-chat-empty><div data-slot=mux-chat-empty-title>`);
652
- var _tmpl$14 = /*#__PURE__*/ template(`<div data-component=assistant-message data-live>`);
653
- var _tmpl$15 = /*#__PURE__*/ template(`<button type=button data-slot=mux-button data-variant=ghost data-action=retry>Retry`);
654
- var _tmpl$16 = /*#__PURE__*/ template(`<div data-slot=mux-chat-notice role=status><span>`);
655
- var _tmpl$17 = /*#__PURE__*/ template(`<div data-component=mux-chat><header data-slot=mux-chat-header><div data-slot=mux-chat-heading><span data-slot=mux-chat-title></span></div><span data-slot=mux-chat-status><span data-slot=mux-chat-status-text></span></span><button type=button data-component=icon-button data-variant=ghost data-size=normal data-action=new-chat aria-label="New chat"title="New chat"></button></header><div data-component=message-timeline><div data-slot=session-turn-message-container></div></div><div data-slot=mux-chat-dock><div data-component=prompt-composer-surface><div data-dock-surface=shell data-component=prompt-input-shell style=--prompt-inset:2px><div data-component=prompt-input-scroll><textarea data-component=prompt-input rows=1></textarea></div></div><div data-dock-surface=tray data-dock-attach=top data-component=prompt-controls><div data-component=prompt-controls-inner><div data-component=prompt-control-row><div data-component=prompt-control-left><div data-component=prompt-model-control><select data-action=prompt-model aria-label=Model></select><span data-slot=prompt-model-chevron></span></div></div><div data-component=prompt-control-right><div data-component=prompt-submit-control><button type=button data-component=icon-button data-variant=primary data-size=normal data-icon-size=small data-action=prompt-submit>`);
656
- var _tmpl$18 = /*#__PURE__*/ template(`<button type=button data-slot=mux-chat-suggestion>`);
657
- var _tmpl$19 = /*#__PURE__*/ template(`<optgroup>`);
658
- var _tmpl$20 = /*#__PURE__*/ template(`<option>`);
659
- function TurnView(props) {
660
- const message = () => props.turn()?.message;
661
- const parts = createMemo(() => visibleParts(props.turn()?.parts ?? []));
662
- const ids = createMemo(() => parts().map((part) => part.id), [], { equals: sameIDs });
663
- const byID = createMemo(() => new Map(parts().map((part) => [part.id, part])));
664
- const live = createMemo(() => {
665
- const m = message();
666
- return m?.role === "assistant" && m.time.completed === void 0 && props.streaming();
667
- });
668
- const error = () => {
669
- const m = message();
670
- const failure = m?.role === "assistant" ? m.error : void 0;
671
- return failure && failure.name !== "MessageAbortedError" ? failure.data?.message ?? failure.name : void 0;
672
- };
673
- const userText = () => (props.turn()?.parts ?? []).flatMap((part) => part.type === "text" && !part.synthetic ? [part.text] : []).join("\n");
674
- return createComponent(Show, {
675
- get when() {
676
- return message();
677
- },
678
- children: (m) => createComponent(Show, {
679
- get when() {
680
- return m().role === "assistant";
681
- },
682
- get fallback() {
683
- return (() => {
684
- var _el$2 = _tmpl$2(), _el$4 = _el$2.firstChild.firstChild;
685
- insert(_el$4, userText);
686
- effect(() => setAttribute(_el$2, "data-message-id", m().id));
687
- return _el$2;
688
- })();
689
- },
690
- get children() {
691
- var _el$ = _tmpl$$1();
692
- insert(_el$, createComponent(For, {
693
- get each() {
694
- return ids();
695
- },
696
- children: (id) => createComponent(Show, {
697
- get when() {
698
- return byID().get(id);
699
- },
700
- children: (part) => createComponent(PartView, {
701
- get part() {
702
- return part();
703
- },
704
- get live() {
705
- return live();
706
- },
707
- get labels() {
708
- return props.labels;
709
- }
710
- })
711
- })
712
- }), null);
713
- insert(_el$, createComponent(Show, {
714
- get when() {
715
- return memo(() => !!live())() && !ids().length;
716
- },
717
- get children() {
718
- return createComponent(ActivityRow, {
719
- title: "Thinking",
720
- active: true,
721
- name: "thinking"
722
- });
723
- }
724
- }), null);
725
- insert(_el$, createComponent(Show, {
726
- get when() {
727
- return error();
728
- },
729
- children: (text) => (() => {
730
- var _el$5 = _tmpl$3();
731
- insert(_el$5, text);
732
- return _el$5;
733
- })()
734
- }), null);
735
- effect((_p$) => {
736
- var _v$ = m().id, _v$2 = live() ? "" : void 0;
737
- _v$ !== _p$.e && setAttribute(_el$, "data-message-id", _p$.e = _v$);
738
- _v$2 !== _p$.t && setAttribute(_el$, "data-live", _p$.t = _v$2);
739
- return _p$;
740
- }, {
741
- e: void 0,
742
- t: void 0
743
- });
744
- return _el$;
745
- }
746
- })
747
- });
748
- }
749
- function QuestionDock(props) {
750
- const [answers, setAnswers] = createSignal(props.request.questions.map(() => []));
751
- const set = (index, value) => setAnswers((previous) => previous.map((current, i) => i === index ? value : current));
752
- const toggle = (index, label, multiple) => {
753
- const current = answers()[index] ?? [];
754
- set(index, multiple ? current.includes(label) ? current.filter((value) => value !== label) : [...current, label] : [label]);
755
- };
756
- return (() => {
757
- var _el$6 = _tmpl$4(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
758
- insert(_el$6, createComponent(For, {
759
- get each() {
760
- return props.request.questions;
761
- },
762
- children: (question, index) => (() => {
763
- var _el$0 = _tmpl$7(), _el$10 = _el$0.firstChild, _el$11 = _el$10.nextSibling;
764
- insert(_el$0, createComponent(Show, {
765
- get when() {
766
- return question.header;
767
- },
768
- get children() {
769
- var _el$1 = _tmpl$5();
770
- insert(_el$1, () => question.header);
771
- return _el$1;
772
- }
773
- }), _el$10);
774
- insert(_el$10, () => question.question);
775
- insert(_el$11, createComponent(For, {
776
- get each() {
777
- return question.options;
778
- },
779
- children: (option) => (() => {
780
- var _el$13 = _tmpl$9(), _el$14 = _el$13.firstChild;
781
- _el$13.$$click = () => toggle(index(), option.label, !!question.multiple);
782
- insert(_el$14, () => option.label);
783
- insert(_el$13, createComponent(Show, {
784
- get when() {
785
- return option.description;
786
- },
787
- get children() {
788
- var _el$15 = _tmpl$8();
789
- insert(_el$15, () => option.description);
790
- return _el$15;
791
- }
792
- }), null);
793
- effect((_p$) => {
794
- var _v$3 = question.multiple ? "checkbox" : "radio", _v$4 = answers()[index()]?.includes(option.label) ?? false;
795
- _v$3 !== _p$.e && setAttribute(_el$13, "role", _p$.e = _v$3);
796
- _v$4 !== _p$.t && setAttribute(_el$13, "aria-checked", _p$.t = _v$4);
797
- return _p$;
798
- }, {
799
- e: void 0,
800
- t: void 0
801
- });
802
- return _el$13;
803
- })()
804
- }));
805
- insert(_el$0, createComponent(Show, {
806
- get when() {
807
- return question.custom !== false;
808
- },
809
- get children() {
810
- var _el$12 = _tmpl$6();
811
- _el$12.$$input = (event) => set(index(), event.currentTarget.value.trim() ? [event.currentTarget.value.trim()] : []);
812
- return _el$12;
813
- }
814
- }), null);
815
- effect(() => setAttribute(_el$11, "role", question.multiple ? "group" : "radiogroup"));
816
- return _el$0;
817
- })()
818
- }), _el$7);
819
- _el$8.$$click = () => props.onSkip();
820
- _el$9.$$click = () => props.onAnswer(answers());
821
- effect(() => _el$9.disabled = !answers().every((answer) => answer.length > 0));
822
- return _el$6;
823
- })();
824
- }
825
- function PermissionDock(props) {
826
- const patterns = () => (props.request.patterns ?? []).filter(Boolean);
827
- const [replied, setReplied] = createSignal(false);
828
- const reply = (response) => {
829
- if (replied()) return;
830
- setReplied(true);
831
- props.onReply(response);
832
- };
833
- return (() => {
834
- var _el$16 = _tmpl$1(), _el$18 = _el$16.firstChild.nextSibling, _el$21 = _el$18.firstChild.nextSibling;
835
- _el$21.nextSibling;
836
- var _el$23 = _el$18.nextSibling, _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling, _el$26 = _el$25.nextSibling;
837
- insert(_el$18, () => props.request.permission ?? "a tool", _el$21);
838
- insert(_el$16, createComponent(Show, {
839
- get when() {
840
- return patterns().length;
841
- },
842
- get children() {
843
- var _el$22 = _tmpl$0();
844
- insert(_el$22, () => patterns().join("\n"));
845
- return _el$22;
846
- }
847
- }), _el$23);
848
- _el$24.$$click = () => reply("reject");
849
- _el$25.$$click = () => reply("always");
850
- _el$26.$$click = () => reply("once");
851
- effect((_p$) => {
852
- var _v$5 = replied(), _v$6 = replied(), _v$7 = replied();
853
- _v$5 !== _p$.e && (_el$24.disabled = _p$.e = _v$5);
854
- _v$6 !== _p$.t && (_el$25.disabled = _p$.t = _v$6);
855
- _v$7 !== _p$.a && (_el$26.disabled = _p$.a = _v$7);
856
- return _p$;
857
- }, {
858
- e: void 0,
859
- t: void 0,
860
- a: void 0
861
- });
862
- return _el$16;
863
- })();
864
- }
865
- function Chat(props) {
866
- const options = props.options;
867
- const chat = createChatController({
868
- url: options.url,
869
- agent: options.agent,
870
- sessionTitle: options.sessionTitle,
871
- storageKey: options.storageKey,
872
- preferredModel: options.preferredModel,
873
- onToolResult: options.onToolResult
874
- });
875
- let timeline;
876
- let input;
877
- const [draft, setDraft] = createSignal("");
878
- const labels = createMemo(() => ({
879
- ...chat.toolLabels(),
880
- ...options.toolLabels
881
- }));
882
- const grow = () => {
883
- input.style.height = "auto";
884
- input.style.height = `${Math.min(input.scrollHeight, 240)}px`;
885
- };
886
- const clear = () => {
887
- input.value = "";
888
- setDraft("");
889
- grow();
890
- };
891
- const restore = (text) => {
892
- input.value = text;
893
- setDraft(text);
894
- grow();
895
- };
896
- /** Sends `text`; text that was not delivered (and is not shown as pending) goes back into an empty composer. */
897
- const sendText = async (text) => {
898
- const result = await chat.send(text);
899
- if (result === "failed" && !draft()) restore(text);
900
- return result === "sent";
901
- };
902
- const submit = async () => {
903
- const text = draft();
904
- if (!text.trim() || !chat.ready()) return;
905
- clear();
906
- await sendText(text);
907
- };
908
- let waiting = [];
909
- let queue = Promise.resolve();
910
- const sendFromHost = (text) => new Promise((resolve) => {
911
- waiting.push({
912
- text,
913
- resolve
914
- });
915
- if (chat.ready()) flush();
916
- });
917
- const flush = () => {
918
- const batch = waiting;
919
- waiting = [];
920
- for (const { text, resolve } of batch) queue = queue.then(() => sendText(text).then(resolve, () => resolve(false)));
921
- };
922
- createEffect(on(chat.ready, (ready) => {
923
- if (ready) flush();
924
- }));
925
- onCleanup(() => {
926
- for (const { resolve } of waiting) resolve(false);
927
- });
928
- const working = () => chat.streaming() && !draft().trim();
929
- const lastTurn = () => {
930
- const ids = chat.messageIDs();
931
- return ids.length ? chat.turn(ids[ids.length - 1]) : void 0;
932
- };
933
- const awaitingReply = () => chat.streaming() && lastTurn()?.message.role === "user";
934
- let pinned = true;
935
- const nearBottom = () => !timeline || timeline.scrollHeight - timeline.scrollTop - timeline.clientHeight < 80;
936
- createComputed(on(chat.changes, () => {
937
- pinned = nearBottom();
938
- }, { defer: true }));
939
- createEffect(on(chat.changes, () => {
940
- if (pinned) timeline.scrollTop = timeline.scrollHeight;
941
- if (timeline.scrollHeight <= timeline.clientHeight + 120) chat.older();
942
- }, { defer: true }));
943
- props.api({
944
- send: sendFromHost,
945
- focus: () => input?.focus(),
946
- newChat: () => chat.newChat()
947
- });
948
- return (() => {
949
- var _el$27 = _tmpl$17(), _el$28 = _el$27.firstChild, _el$29 = _el$28.firstChild, _el$30 = _el$29.firstChild, _el$32 = _el$29.nextSibling, _el$33 = _el$32.firstChild, _el$34 = _el$32.nextSibling, _el$35 = _el$28.nextSibling, _el$40 = _el$35.firstChild, _el$42 = _el$35.nextSibling, _el$46 = _el$42.firstChild, _el$47 = _el$46.firstChild, _el$49 = _el$47.firstChild.firstChild, _el$53 = _el$47.nextSibling.firstChild.firstChild.firstChild, _el$55 = _el$53.firstChild.firstChild, _el$56 = _el$55.nextSibling, _el$59 = _el$53.nextSibling.firstChild.firstChild;
950
- insert(_el$30, () => options.title);
951
- insert(_el$29, createComponent(Show, {
952
- get when() {
953
- return options.subtitle;
954
- },
955
- get children() {
956
- var _el$31 = _tmpl$10();
957
- insert(_el$31, () => options.subtitle);
958
- return _el$31;
959
- }
960
- }), null);
961
- insert(_el$33, () => chat.status().text);
962
- _el$34.$$click = () => {
963
- chat.newChat();
964
- input.focus();
965
- };
966
- insert(_el$34, createComponent(Plus, {}));
967
- _el$35.addEventListener("scroll", () => {
968
- if (timeline.scrollTop < 200) chat.older();
969
- });
970
- var _ref$ = timeline;
971
- typeof _ref$ === "function" ? use(_ref$, _el$35) : timeline = _el$35;
972
- insert(_el$35, createComponent(Show, {
973
- get when() {
974
- return memo(() => chat.messageIDs().length === 0)() && chat.ready();
975
- },
976
- get children() {
977
- var _el$36 = _tmpl$13(), _el$37 = _el$36.firstChild;
978
- insert(_el$37, () => options.title);
979
- insert(_el$36, createComponent(Show, {
980
- get when() {
981
- return options.subtitle;
982
- },
983
- get children() {
984
- var _el$38 = _tmpl$11();
985
- insert(_el$38, () => options.subtitle);
986
- return _el$38;
987
- }
988
- }), null);
989
- insert(_el$36, createComponent(Show, {
990
- get when() {
991
- return options.suggestions.length;
992
- },
993
- get children() {
994
- var _el$39 = _tmpl$12();
995
- insert(_el$39, createComponent(For, {
996
- get each() {
997
- return options.suggestions;
998
- },
999
- children: (suggestion) => (() => {
1000
- var _el$60 = _tmpl$18();
1001
- _el$60.$$click = () => void sendText(suggestion.prompt);
1002
- insert(_el$60, () => suggestion.label);
1003
- return _el$60;
1004
- })()
1005
- }));
1006
- return _el$39;
1007
- }
1008
- }), null);
1009
- return _el$36;
1010
- }
1011
- }), _el$40);
1012
- insert(_el$40, createComponent(For, {
1013
- get each() {
1014
- return chat.messageIDs();
1015
- },
1016
- children: (id) => createComponent(TurnView, {
1017
- turn: () => chat.turn(id),
1018
- get streaming() {
1019
- return chat.streaming;
1020
- },
1021
- get labels() {
1022
- return labels();
1023
- }
1024
- })
1025
- }), null);
1026
- insert(_el$40, createComponent(Show, {
1027
- get when() {
1028
- return awaitingReply();
1029
- },
1030
- get children() {
1031
- var _el$41 = _tmpl$14();
1032
- insert(_el$41, createComponent(ActivityRow, {
1033
- title: "Thinking",
1034
- active: true,
1035
- name: "thinking"
1036
- }));
1037
- return _el$41;
1038
- }
1039
- }), null);
1040
- insert(_el$42, createComponent(Show, {
1041
- get when() {
1042
- return chat.permissions()[0];
1043
- },
1044
- keyed: true,
1045
- children: (request) => createComponent(PermissionDock, {
1046
- request,
1047
- onReply: (response) => void chat.replyPermission(request.id, response)
1048
- })
1049
- }), _el$46);
1050
- insert(_el$42, createComponent(Show, {
1051
- get when() {
1052
- return chat.questions()[0];
1053
- },
1054
- keyed: true,
1055
- children: (request) => createComponent(QuestionDock, {
1056
- request,
1057
- onAnswer: (answers) => void chat.answer(request.id, answers),
1058
- onSkip: () => void chat.reject(request.id)
1059
- })
1060
- }), _el$46);
1061
- insert(_el$42, createComponent(Show, {
1062
- get when() {
1063
- return chat.error() || chat.unconfirmed();
1064
- },
1065
- get children() {
1066
- var _el$43 = _tmpl$16(), _el$44 = _el$43.firstChild;
1067
- insert(_el$44, () => chat.error() || "Your last message may not have been delivered.");
1068
- insert(_el$43, createComponent(Show, {
1069
- get when() {
1070
- return chat.unconfirmed();
1071
- },
1072
- get children() {
1073
- var _el$45 = _tmpl$15();
1074
- _el$45.$$click = () => void chat.retry();
1075
- return _el$45;
1076
- }
1077
- }), null);
1078
- return _el$43;
1079
- }
1080
- }), _el$46);
1081
- _el$49.$$keydown = (event) => {
1082
- if (event.key === "Enter" && !event.shiftKey && !event.isComposing) {
1083
- event.preventDefault();
1084
- submit();
1085
- }
1086
- };
1087
- _el$49.$$input = (event) => {
1088
- setDraft(event.currentTarget.value);
1089
- grow();
1090
- };
1091
- var _ref$2 = input;
1092
- typeof _ref$2 === "function" ? use(_ref$2, _el$49) : input = _el$49;
1093
- _el$55.addEventListener("change", (event) => chat.selectModel(event.currentTarget.value));
1094
- insert(_el$55, createComponent(For, {
1095
- get each() {
1096
- return chat.modelGroups();
1097
- },
1098
- children: (group) => (() => {
1099
- var _el$61 = _tmpl$19();
1100
- insert(_el$61, createComponent(For, {
1101
- get each() {
1102
- return group.models;
1103
- },
1104
- children: (model) => (() => {
1105
- var _el$62 = _tmpl$20();
1106
- insert(_el$62, () => model.label);
1107
- effect(() => _el$62.selected = model.value === chat.modelValue());
1108
- effect(() => _el$62.value = model.value);
1109
- return _el$62;
1110
- })()
1111
- }));
1112
- effect(() => setAttribute(_el$61, "label", group.label));
1113
- return _el$61;
1114
- })()
1115
- }));
1116
- insert(_el$56, createComponent(ChevronDown, {}));
1117
- _el$59.$$click = () => working() ? void chat.abort() : void submit();
1118
- insert(_el$59, createComponent(Show, {
1119
- get when() {
1120
- return working();
1121
- },
1122
- get fallback() {
1123
- return createComponent(ArrowUp, {});
1124
- },
1125
- get children() {
1126
- return createComponent(Stop, {});
1127
- }
1128
- }));
1129
- effect((_p$) => {
1130
- var _v$8 = chat.sessionID() ?? "", _v$9 = chat.status().tone, _v$0 = chat.status().text, _v$1 = !chat.ready(), _v$10 = options.placeholder, _v$11 = options.placeholder, _v$12 = !chat.modelGroups().length, _v$13 = working() ? "" : void 0, _v$14 = working() ? "Stop" : "Send", _v$15 = working() ? false : !chat.ready() || !draft().trim();
1131
- _v$8 !== _p$.e && setAttribute(_el$27, "data-session-id", _p$.e = _v$8);
1132
- _v$9 !== _p$.t && setAttribute(_el$32, "data-tone", _p$.t = _v$9);
1133
- _v$0 !== _p$.a && setAttribute(_el$32, "title", _p$.a = _v$0);
1134
- _v$1 !== _p$.o && setAttribute(_el$46, "aria-busy", _p$.o = _v$1);
1135
- _v$10 !== _p$.i && setAttribute(_el$49, "placeholder", _p$.i = _v$10);
1136
- _v$11 !== _p$.n && setAttribute(_el$49, "aria-label", _p$.n = _v$11);
1137
- _v$12 !== _p$.s && (_el$55.disabled = _p$.s = _v$12);
1138
- _v$13 !== _p$.h && setAttribute(_el$59, "data-working", _p$.h = _v$13);
1139
- _v$14 !== _p$.r && setAttribute(_el$59, "aria-label", _p$.r = _v$14);
1140
- _v$15 !== _p$.d && (_el$59.disabled = _p$.d = _v$15);
1141
- return _p$;
1142
- }, {
1143
- e: void 0,
1144
- t: void 0,
1145
- a: void 0,
1146
- o: void 0,
1147
- i: void 0,
1148
- n: void 0,
1149
- s: void 0,
1150
- h: void 0,
1151
- r: void 0,
1152
- d: void 0
1153
- });
1154
- return _el$27;
1155
- })();
1156
- }
1157
- delegateEvents([
1158
- "click",
1159
- "input",
1160
- "keydown"
1161
- ]);
1162
- //#endregion
1163
- //#region src/mount.tsx
1164
- var _tmpl$ = /*#__PURE__*/ template(`<div>`);
1165
- /**
1166
- * Renders the Mux chat into `host` (inside its shadow root, with Mux's
1167
- * styles). Give `host` a height, e.g. a sidebar column.
1168
- */
1169
- function mountMuxChat(host, options = {}) {
1170
- const root = host.shadowRoot ?? host.attachShadow({ mode: "open" });
1171
- root.replaceChildren();
1172
- const style = document.createElement("style");
1173
- style.textContent = styles;
1174
- const container = document.createElement("div");
1175
- container.style.height = "100%";
1176
- root.append(style, container);
1177
- if (options.theme === "light" || options.theme === "dark") host.setAttribute("data-theme", options.theme);
1178
- else host.removeAttribute("data-theme");
1179
- let api;
1180
- const dispose = render(() => createComponent(Chat, {
1181
- api: (value) => api = value,
1182
- get options() {
1183
- return {
1184
- url: options.url ?? "/api/mux",
1185
- title: options.title ?? "Assistant",
1186
- subtitle: options.subtitle,
1187
- placeholder: options.placeholder ?? "Ask anything…",
1188
- suggestions: options.suggestions ?? [],
1189
- toolLabels: options.toolLabels ?? {},
1190
- agent: options.agent ?? "assistant",
1191
- sessionTitle: options.sessionTitle ?? "Chat",
1192
- storageKey: options.storageKey ?? "mux-chat",
1193
- preferredModel: options.preferredModel,
1194
- onToolResult: options.onToolResult
1195
- };
1196
- }
1197
- }), container);
1198
- return {
1199
- send: (text) => api?.send(text) ?? Promise.resolve(false),
1200
- focus: () => api?.focus(),
1201
- newChat: () => api?.newChat() ?? Promise.resolve(),
1202
- dispose: () => {
1203
- dispose();
1204
- root.replaceChildren();
1205
- }
1206
- };
1207
- }
1208
- /** Solid wrapper around `mountMuxChat`. Options are read once, at mount. */
1209
- function MuxChat(props) {
1210
- let host;
1211
- onMount(() => {
1212
- const handle = mountMuxChat(host, props);
1213
- props.ref?.(handle);
1214
- onCleanup(() => handle.dispose());
1215
- });
1216
- return (() => {
1217
- var _el$ = _tmpl$();
1218
- var _ref$ = host;
1219
- typeof _ref$ === "function" ? use(_ref$, _el$) : host = _el$;
1220
- effect((_p$) => {
1221
- var _v$ = props.id, _v$2 = props.class, _v$3 = props.style;
1222
- _v$ !== _p$.e && setAttribute(_el$, "id", _p$.e = _v$);
1223
- _v$2 !== _p$.t && className(_el$, _p$.t = _v$2);
1224
- _p$.a = style(_el$, _v$3, _p$.a);
1225
- return _p$;
1226
- }, {
1227
- e: void 0,
1228
- t: void 0,
1229
- a: void 0
1230
- });
1231
- return _el$;
1232
- })();
1233
- }
1234
- //#endregion
1235
- export { MuxChat, mountMuxChat };
1236
-
1237
- //# sourceMappingURL=index.js.map