codemini-cli 0.5.1 → 0.5.2

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 (383) hide show
  1. package/OPERATIONS.md +1 -1
  2. package/README.md +25 -25
  3. package/codemini-web/dist/assets/abap-9R7RjkQK.js +1 -0
  4. package/codemini-web/dist/assets/actionscript-3-CNowah7a.js +1 -0
  5. package/codemini-web/dist/assets/ada-D5HmrmpD.js +1 -0
  6. package/codemini-web/dist/assets/andromeeda-i_b3g2bn.js +1 -0
  7. package/codemini-web/dist/assets/{angular-html-Cde9qVP5.js → angular-html-CHsdtmkx.js} +1 -1
  8. package/codemini-web/dist/assets/angular-html-DlSp9HPG.js +1 -0
  9. package/codemini-web/dist/assets/{angular-ts-DefScAWP.js → angular-ts-B29Ypg6B.js} +1 -1
  10. package/codemini-web/dist/assets/angular-ts-JNDGGWj0.js +1 -0
  11. package/codemini-web/dist/assets/apache-D37U8o0r.js +1 -0
  12. package/codemini-web/dist/assets/apex-CszkG4lQ.js +1 -0
  13. package/codemini-web/dist/assets/apl-BASZ7uB_.js +1 -0
  14. package/codemini-web/dist/assets/{apl-w753UHCW.js → apl-Byuv-g-O.js} +1 -1
  15. package/codemini-web/dist/assets/applescript-Ajt9gmC_.js +1 -0
  16. package/codemini-web/dist/assets/ara-DpGk8XWf.js +1 -0
  17. package/codemini-web/dist/assets/asciidoc-BdDORSgx.js +1 -0
  18. package/codemini-web/dist/assets/asm-DGLRM3OU.js +1 -0
  19. package/codemini-web/dist/assets/{astro-DBA9Da7s.js → astro-CTzEugGW.js} +1 -1
  20. package/codemini-web/dist/assets/astro-l-XABzN2.js +1 -0
  21. package/codemini-web/dist/assets/aurora-x-DdfqxvM_.js +1 -0
  22. package/codemini-web/dist/assets/awk-B-J9te9x.js +1 -0
  23. package/codemini-web/dist/assets/ayu-dark-BdNJk5qF.js +1 -0
  24. package/codemini-web/dist/assets/ayu-light-DkLNbAkT.js +1 -0
  25. package/codemini-web/dist/assets/ayu-mirage-BoyGjGHX.js +1 -0
  26. package/codemini-web/dist/assets/ballerina-CZ8CAKmi.js +1 -0
  27. package/codemini-web/dist/assets/bat-fNtaIqKE.js +1 -0
  28. package/codemini-web/dist/assets/beancount-9imagnS2.js +1 -0
  29. package/codemini-web/dist/assets/berry-QTBYpUPn.js +1 -0
  30. package/codemini-web/dist/assets/bibtex-CzFWvn9u.js +1 -0
  31. package/codemini-web/dist/assets/bicep-DLWEubga.js +1 -0
  32. package/codemini-web/dist/assets/bird2-V7dWeQhQ.js +1 -0
  33. package/codemini-web/dist/assets/blade-B3_bxlV2.js +1 -0
  34. package/codemini-web/dist/assets/{blade-B-u5p0Rp.js → blade-Dt6km9YT.js} +1 -1
  35. package/codemini-web/dist/assets/bsl-D3u1l2dW.js +1 -0
  36. package/codemini-web/dist/assets/c-CgTSul4N.js +1 -0
  37. package/codemini-web/dist/assets/c3-SmmwBAzR.js +1 -0
  38. package/codemini-web/dist/assets/cadence-DVNAI4pJ.js +1 -0
  39. package/codemini-web/dist/assets/cairo-CoQzhJ_o.js +1 -0
  40. package/codemini-web/dist/assets/catppuccin-frappe-DXCXlnyU.js +1 -0
  41. package/codemini-web/dist/assets/catppuccin-latte-BXW2qYGv.js +1 -0
  42. package/codemini-web/dist/assets/catppuccin-macchiato--32cesHH.js +1 -0
  43. package/codemini-web/dist/assets/catppuccin-mocha-BBRFilGN.js +1 -0
  44. package/codemini-web/dist/assets/clarity-BJs8u8xG.js +1 -0
  45. package/codemini-web/dist/assets/clojure-DpYoDXXl.js +1 -0
  46. package/codemini-web/dist/assets/cmake-CdseusyP.js +1 -0
  47. package/codemini-web/dist/assets/{cobol-CkQrskif.js → cobol-D_kesMA-.js} +1 -1
  48. package/codemini-web/dist/assets/cobol-DqhY5el-.js +1 -0
  49. package/codemini-web/dist/assets/codeowners-5EAeZxPo.js +1 -0
  50. package/codemini-web/dist/assets/codeql-OkUuMGe9.js +1 -0
  51. package/codemini-web/dist/assets/coffee-DF15_0rk.js +1 -0
  52. package/codemini-web/dist/assets/common-lisp-DCRDlc4V.js +1 -0
  53. package/codemini-web/dist/assets/coq-acwo70uY.js +1 -0
  54. package/codemini-web/dist/assets/cpp-Cudwe5mG.js +1 -0
  55. package/codemini-web/dist/assets/{crystal-Dh09vXLx.js → crystal-Bw1_1hFA.js} +1 -1
  56. package/codemini-web/dist/assets/crystal-DV9Nijjb.js +1 -0
  57. package/codemini-web/dist/assets/csharp-Cqz84DXU.js +1 -0
  58. package/codemini-web/dist/assets/css-z2ijrDWT.js +1 -0
  59. package/codemini-web/dist/assets/csv-CqpUSPyF.js +1 -0
  60. package/codemini-web/dist/assets/cue-D4-Hq7Jx.js +1 -0
  61. package/codemini-web/dist/assets/cypher-CXMVfSpG.js +1 -0
  62. package/codemini-web/dist/assets/d-Cc_KoyiC.js +1 -0
  63. package/codemini-web/dist/assets/dark-plus-C0kLyDb3.js +1 -0
  64. package/codemini-web/dist/assets/dart-CVd7TDni.js +1 -0
  65. package/codemini-web/dist/assets/dax-DtoJMuz5.js +1 -0
  66. package/codemini-web/dist/assets/desktop-BkIJ2CMP.js +1 -0
  67. package/codemini-web/dist/assets/diff-RUsawely.js +1 -0
  68. package/codemini-web/dist/assets/docker-CDpVZYy7.js +1 -0
  69. package/codemini-web/dist/assets/dotenv-DWnlamm2.js +1 -0
  70. package/codemini-web/dist/assets/dracula-QP8aKUFB.js +1 -0
  71. package/codemini-web/dist/assets/dracula-soft-BNzyYlRI.js +1 -0
  72. package/codemini-web/dist/assets/dream-maker-MNBsfIGU.js +1 -0
  73. package/codemini-web/dist/assets/{edge-CCRtknu5.js → edge-BosfXYh1.js} +1 -1
  74. package/codemini-web/dist/assets/edge-r5NIe9Lp.js +1 -0
  75. package/codemini-web/dist/assets/{elixir-5EYbFEoC.js → elixir-B04apOJS.js} +1 -1
  76. package/codemini-web/dist/assets/elixir-Dw_vsdUl.js +1 -0
  77. package/codemini-web/dist/assets/elm-DPfFNNkG.js +1 -0
  78. package/codemini-web/dist/assets/emacs-lisp-BHIDiQRU.js +1 -0
  79. package/codemini-web/dist/assets/{erb-C6pPz4fX.js → erb-BNioEFKQ.js} +1 -1
  80. package/codemini-web/dist/assets/erb-DZuoCU5t.js +1 -0
  81. package/codemini-web/dist/assets/erlang-CqHCISqs.js +1 -0
  82. package/codemini-web/dist/assets/everforest-dark-DSK976eP.js +1 -0
  83. package/codemini-web/dist/assets/everforest-light-BkaBVm1r.js +1 -0
  84. package/codemini-web/dist/assets/fennel-BsP4yvxI.js +1 -0
  85. package/codemini-web/dist/assets/fish-CimYqIk1.js +1 -0
  86. package/codemini-web/dist/assets/fluent-O-Iic89O.js +1 -0
  87. package/codemini-web/dist/assets/fortran-fixed-form-60ZQAHDk.js +1 -0
  88. package/codemini-web/dist/assets/fortran-free-form-BVNtEstX.js +1 -0
  89. package/codemini-web/dist/assets/fsharp-Ch5ZVinn.js +1 -0
  90. package/codemini-web/dist/assets/gdresource-CqNLhJW1.js +1 -0
  91. package/codemini-web/dist/assets/gdscript-D-FJCTl3.js +1 -0
  92. package/codemini-web/dist/assets/gdshader-Czvzt8dR.js +1 -0
  93. package/codemini-web/dist/assets/genie-Mnf_jXpg.js +1 -0
  94. package/codemini-web/dist/assets/gherkin-DzkYuFEO.js +1 -0
  95. package/codemini-web/dist/assets/git-commit-CSWECvqq.js +1 -0
  96. package/codemini-web/dist/assets/git-rebase-MUvuytPe.js +1 -0
  97. package/codemini-web/dist/assets/github-dark-C98YWDhk.js +1 -0
  98. package/codemini-web/dist/assets/github-dark-default-CDGuVkyn.js +1 -0
  99. package/codemini-web/dist/assets/github-dark-dimmed-CarTohA3.js +1 -0
  100. package/codemini-web/dist/assets/github-dark-high-contrast-CsjOICAd.js +1 -0
  101. package/codemini-web/dist/assets/github-light-D17m3GP4.js +1 -0
  102. package/codemini-web/dist/assets/github-light-default-DiMoa1ZI.js +1 -0
  103. package/codemini-web/dist/assets/github-light-high-contrast-DGwHD8Ty.js +1 -0
  104. package/codemini-web/dist/assets/gleam-MAXpOqqF.js +1 -0
  105. package/codemini-web/dist/assets/{glimmer-js-C4PTXfaW.js → glimmer-js-Dn6vjgHP.js} +1 -1
  106. package/codemini-web/dist/assets/glimmer-js-HDDEErW7.js +1 -0
  107. package/codemini-web/dist/assets/glimmer-ts-Dq0_BflX.js +1 -0
  108. package/codemini-web/dist/assets/{glimmer-ts-Df1V6YK_.js → glimmer-ts-mq-Q_zEE.js} +1 -1
  109. package/codemini-web/dist/assets/glsl-C4rvog10.js +1 -0
  110. package/codemini-web/dist/assets/gn-BNADkWgR.js +1 -0
  111. package/codemini-web/dist/assets/gnuplot-BRQvwTQM.js +1 -0
  112. package/codemini-web/dist/assets/go-iV8pwUYW.js +1 -0
  113. package/codemini-web/dist/assets/graphql-Dg0Ewf8Q.js +1 -0
  114. package/codemini-web/dist/assets/groovy-CxG1cXrE.js +1 -0
  115. package/codemini-web/dist/assets/gruvbox-dark-hard-Cnb1fzry.js +1 -0
  116. package/codemini-web/dist/assets/gruvbox-dark-medium-Cu5j8v_d.js +1 -0
  117. package/codemini-web/dist/assets/gruvbox-dark-soft-BghHDwrM.js +1 -0
  118. package/codemini-web/dist/assets/gruvbox-light-hard-BUhLUxUB.js +1 -0
  119. package/codemini-web/dist/assets/gruvbox-light-medium-GXeiXGL9.js +1 -0
  120. package/codemini-web/dist/assets/gruvbox-light-soft-pTZgKx7j.js +1 -0
  121. package/codemini-web/dist/assets/{hack-zJL_tEH0.js → hack-DeD259o6.js} +1 -1
  122. package/codemini-web/dist/assets/hack-DjE76gIx.js +1 -0
  123. package/codemini-web/dist/assets/{haml-qjVLLTZk.js → haml-B8MRe8CS.js} +1 -1
  124. package/codemini-web/dist/assets/haml-DyIc_iO2.js +1 -0
  125. package/codemini-web/dist/assets/handlebars-DQ4X08Zf.js +1 -0
  126. package/codemini-web/dist/assets/{handlebars-B3RyMMk0.js → handlebars-GoJyzhp1.js} +1 -1
  127. package/codemini-web/dist/assets/haskell-BZ8bGMYA.js +1 -0
  128. package/codemini-web/dist/assets/haxe-1eAUKQ0B.js +1 -0
  129. package/codemini-web/dist/assets/hcl-DQqvKq2I.js +1 -0
  130. package/codemini-web/dist/assets/{highlighted-body-OFNGDK62-0FuBVb0_.js → highlighted-body-OFNGDK62-CDUecv8k.js} +1 -1
  131. package/codemini-web/dist/assets/hjson-DNWMSWLN.js +1 -0
  132. package/codemini-web/dist/assets/hlsl-Df5oFh9i.js +1 -0
  133. package/codemini-web/dist/assets/horizon-BCbhfxa1.js +1 -0
  134. package/codemini-web/dist/assets/horizon-bright-B0vmEjwb.js +1 -0
  135. package/codemini-web/dist/assets/houston-DHnjBE42.js +1 -0
  136. package/codemini-web/dist/assets/{html-DP-V-rfg.js → html-B7kk5NVw.js} +1 -1
  137. package/codemini-web/dist/assets/html-GfHBuoLs.js +1 -0
  138. package/codemini-web/dist/assets/{html-derivative-DB9UhNDN.js → html-derivative-Ba28nVB3.js} +1 -1
  139. package/codemini-web/dist/assets/html-derivative-ChSmSZXY.js +1 -0
  140. package/codemini-web/dist/assets/http-DMTBhQm8.js +1 -0
  141. package/codemini-web/dist/assets/hurl-XIpACwjS.js +1 -0
  142. package/codemini-web/dist/assets/hxml-PnV_FpS-.js +1 -0
  143. package/codemini-web/dist/assets/hy-DaILHjW8.js +1 -0
  144. package/codemini-web/dist/assets/imba-BA6_JyKt.js +1 -0
  145. package/codemini-web/dist/assets/index-Cfk9ARKs.js +426 -0
  146. package/codemini-web/dist/assets/index-Dqq2DCEb.css +2 -0
  147. package/codemini-web/dist/assets/ini-DqXMcqXm.js +1 -0
  148. package/codemini-web/dist/assets/java-Ds1cyVrp.js +1 -0
  149. package/codemini-web/dist/assets/javascript-Cx8CXBJR.js +1 -0
  150. package/codemini-web/dist/assets/{jinja-BcRTlqOI.js → jinja-8ATGhxJO.js} +1 -1
  151. package/codemini-web/dist/assets/jinja-Dx5IcFSt.js +1 -0
  152. package/codemini-web/dist/assets/jison-CSsYnr7O.js +1 -0
  153. package/codemini-web/dist/assets/json-CY14kIzN.js +1 -0
  154. package/codemini-web/dist/assets/json5-Cus7zL-r.js +1 -0
  155. package/codemini-web/dist/assets/jsonc-RzqrtWTz.js +1 -0
  156. package/codemini-web/dist/assets/jsonl-CLcLUtvq.js +1 -0
  157. package/codemini-web/dist/assets/jsonnet--7yRuAzt.js +1 -0
  158. package/codemini-web/dist/assets/jssm-Cid5Rr2Y.js +1 -0
  159. package/codemini-web/dist/assets/jsx-DmH5dwMF.js +1 -0
  160. package/codemini-web/dist/assets/julia-vjG00jwO.js +1 -0
  161. package/codemini-web/dist/assets/{just-O9z-zIlY.js → just-BlUYrdKb.js} +1 -1
  162. package/codemini-web/dist/assets/just-C7G3KFgN.js +1 -0
  163. package/codemini-web/dist/assets/kanagawa-dragon-BxDDNs-7.js +1 -0
  164. package/codemini-web/dist/assets/kanagawa-lotus-BQyifewU.js +1 -0
  165. package/codemini-web/dist/assets/kanagawa-wave-BsJGVIZT.js +1 -0
  166. package/codemini-web/dist/assets/kdl-D2MbAIKj.js +1 -0
  167. package/codemini-web/dist/assets/kotlin-fpq87Jdo.js +1 -0
  168. package/codemini-web/dist/assets/kusto-BcKmLn2p.js +1 -0
  169. package/codemini-web/dist/assets/laserwave-CrjhMkHv.js +1 -0
  170. package/codemini-web/dist/assets/latex-D8-NgtPj.js +1 -0
  171. package/codemini-web/dist/assets/lean-B9Xp-kaJ.js +1 -0
  172. package/codemini-web/dist/assets/less-BKjOc0Gl.js +1 -0
  173. package/codemini-web/dist/assets/light-plus-DFt9HI_B.js +1 -0
  174. package/codemini-web/dist/assets/{liquid-BK2PyMjt.js → liquid-BUh7yINm.js} +1 -1
  175. package/codemini-web/dist/assets/liquid-D2m0XXrV.js +1 -0
  176. package/codemini-web/dist/assets/llvm-XDy97SdL.js +1 -0
  177. package/codemini-web/dist/assets/log-tjGJZ7jx.js +1 -0
  178. package/codemini-web/dist/assets/logo-rCQwad-6.js +1 -0
  179. package/codemini-web/dist/assets/lua-BeSXusec.js +1 -0
  180. package/codemini-web/dist/assets/luau-C0wE4YeK.js +1 -0
  181. package/codemini-web/dist/assets/make-DZENZd8z.js +1 -0
  182. package/codemini-web/dist/assets/markdown-CbgVmtS5.js +1 -0
  183. package/codemini-web/dist/assets/marko-DPnRthJQ.js +1 -0
  184. package/codemini-web/dist/assets/{marko-CTEKS39A.js → marko-Dm8xPXkG.js} +1 -1
  185. package/codemini-web/dist/assets/material-theme-YhiuxyiP.js +1 -0
  186. package/codemini-web/dist/assets/material-theme-darker-CKeuyK7B.js +1 -0
  187. package/codemini-web/dist/assets/material-theme-lighter-C56RzTfM.js +1 -0
  188. package/codemini-web/dist/assets/material-theme-ocean-DUos8xKe.js +1 -0
  189. package/codemini-web/dist/assets/material-theme-palenight-CZBKx4B1.js +1 -0
  190. package/codemini-web/dist/assets/matlab-BJwkjxyL.js +1 -0
  191. package/codemini-web/dist/assets/mdc-BLdFHYKv.js +1 -0
  192. package/codemini-web/dist/assets/{mdc-BOaCYzzL.js → mdc-Dzipcsdb.js} +1 -1
  193. package/codemini-web/dist/assets/mdx-BvkytFG9.js +1 -0
  194. package/codemini-web/dist/assets/mermaid-Ctx7uNrT.js +1 -0
  195. package/codemini-web/dist/assets/mermaid-GHXKKRXX-BWSxGKNn.js +1 -0
  196. package/codemini-web/dist/assets/min-dark-BA-rwgF3.js +1 -0
  197. package/codemini-web/dist/assets/min-light-DHUVhXnm.js +1 -0
  198. package/codemini-web/dist/assets/mipsasm-ByaU0dEX.js +1 -0
  199. package/codemini-web/dist/assets/mojo-CqhYERP_.js +1 -0
  200. package/codemini-web/dist/assets/monokai-D3MyQCxG.js +1 -0
  201. package/codemini-web/dist/assets/moonbit-C4BfwLm6.js +1 -0
  202. package/codemini-web/dist/assets/move-DOj5FawL.js +1 -0
  203. package/codemini-web/dist/assets/narrat-CDHYPJWr.js +1 -0
  204. package/codemini-web/dist/assets/{nextflow-Cto1mpL3.js → nextflow-BRiWOV-p.js} +1 -1
  205. package/codemini-web/dist/assets/nextflow-c8YCPRRb.js +1 -0
  206. package/codemini-web/dist/assets/nextflow-groovy-D6rYlJlL.js +1 -0
  207. package/codemini-web/dist/assets/nginx-u-hq5m-a.js +1 -0
  208. package/codemini-web/dist/assets/night-owl-NHZjGVLB.js +1 -0
  209. package/codemini-web/dist/assets/night-owl-light-DcKosvl7.js +1 -0
  210. package/codemini-web/dist/assets/nim-B5b6_jZr.js +1 -0
  211. package/codemini-web/dist/assets/{nim-BZyx58NM.js → nim-CvgRYLO2.js} +1 -1
  212. package/codemini-web/dist/assets/nix-Csr5leD-.js +1 -0
  213. package/codemini-web/dist/assets/nord-DomFMWpF.js +1 -0
  214. package/codemini-web/dist/assets/nushell-IZVQdI7Z.js +1 -0
  215. package/codemini-web/dist/assets/objective-c-DD1i5sf2.js +1 -0
  216. package/codemini-web/dist/assets/objective-cpp-CtzOCe2w.js +1 -0
  217. package/codemini-web/dist/assets/ocaml-BlMDMjEj.js +1 -0
  218. package/codemini-web/dist/assets/odin-CoWSDSNi.js +1 -0
  219. package/codemini-web/dist/assets/one-dark-pro-DWENJxB_.js +1 -0
  220. package/codemini-web/dist/assets/one-light-CEeF6aqP.js +1 -0
  221. package/codemini-web/dist/assets/openscad-D3gRRPUh.js +1 -0
  222. package/codemini-web/dist/assets/pascal-G3gJIkHz.js +1 -0
  223. package/codemini-web/dist/assets/{perl-BW8t13Xq.js → perl-BIcNvyL6.js} +1 -1
  224. package/codemini-web/dist/assets/perl-DdF12AsD.js +1 -0
  225. package/codemini-web/dist/assets/php-BP-3TkW_.js +1 -0
  226. package/codemini-web/dist/assets/{php-Cq5FOhfR.js → php-CyQZnE0l.js} +1 -1
  227. package/codemini-web/dist/assets/pierre-dark-CBqOR10c.js +1 -0
  228. package/codemini-web/dist/assets/pierre-light-sgwdVCEP.js +1 -0
  229. package/codemini-web/dist/assets/pkl-DdsryWcC.js +1 -0
  230. package/codemini-web/dist/assets/plastic-CwUA_4-2.js +1 -0
  231. package/codemini-web/dist/assets/plsql-C2yEtnCG.js +1 -0
  232. package/codemini-web/dist/assets/po-Dy7ytuR1.js +1 -0
  233. package/codemini-web/dist/assets/poimandres-u68WOWhl.js +1 -0
  234. package/codemini-web/dist/assets/polar-CjLVWIyd.js +1 -0
  235. package/codemini-web/dist/assets/postcss-DiNtjF5e.js +1 -0
  236. package/codemini-web/dist/assets/powerquery-iC4Ra9LJ.js +1 -0
  237. package/codemini-web/dist/assets/powershell-Ch2YpFAx.js +1 -0
  238. package/codemini-web/dist/assets/prisma-HWctQCpn.js +1 -0
  239. package/codemini-web/dist/assets/prolog-DHAsH4Hf.js +1 -0
  240. package/codemini-web/dist/assets/proto-mTghX89X.js +1 -0
  241. package/codemini-web/dist/assets/pug-HwoxZo9M.js +1 -0
  242. package/codemini-web/dist/assets/{pug-B4WHazil.js → pug-_XoIcKf3.js} +1 -1
  243. package/codemini-web/dist/assets/puppet-D1Zcnrr5.js +1 -0
  244. package/codemini-web/dist/assets/purescript-s82m5f0Y.js +1 -0
  245. package/codemini-web/dist/assets/python-BhsI1K6K.js +1 -0
  246. package/codemini-web/dist/assets/qml-CysuucQ6.js +1 -0
  247. package/codemini-web/dist/assets/qmldir-Bzkc2Njy.js +1 -0
  248. package/codemini-web/dist/assets/qss-CKbozdtF.js +1 -0
  249. package/codemini-web/dist/assets/r-BKej5r_k.js +1 -0
  250. package/codemini-web/dist/assets/racket-CUDoXUwy.js +1 -0
  251. package/codemini-web/dist/assets/raku-XPAjN9OU.js +1 -0
  252. package/codemini-web/dist/assets/{razor-CQPYUgex.js → razor-DQ6FV4WL.js} +1 -1
  253. package/codemini-web/dist/assets/razor-ZpEr_C9H.js +1 -0
  254. package/codemini-web/dist/assets/red-8aRo80UF.js +1 -0
  255. package/codemini-web/dist/assets/reg-B0B_plbq.js +1 -0
  256. package/codemini-web/dist/assets/regexp-CK-1EP63.js +1 -0
  257. package/codemini-web/dist/assets/rel-DhoFe2Y7.js +1 -0
  258. package/codemini-web/dist/assets/riscv-CKx_Jisq.js +1 -0
  259. package/codemini-web/dist/assets/ron-qyvgw9vu.js +1 -0
  260. package/codemini-web/dist/assets/rose-pine-R3f76h4_.js +1 -0
  261. package/codemini-web/dist/assets/rose-pine-dawn-BS09rtpK.js +1 -0
  262. package/codemini-web/dist/assets/rose-pine-moon-B4Q4DiPG.js +1 -0
  263. package/codemini-web/dist/assets/rosmsg-Dy_ItAfo.js +1 -0
  264. package/codemini-web/dist/assets/rst-CjO4XFKz.js +1 -0
  265. package/codemini-web/dist/assets/{rst-B-OS2pa5.js → rst-DDrWKQ9c.js} +1 -1
  266. package/codemini-web/dist/assets/ruby-BOVYgV5O.js +1 -0
  267. package/codemini-web/dist/assets/{ruby-BM15fmxz.js → ruby-CZgIYPlP.js} +1 -1
  268. package/codemini-web/dist/assets/rust-CNEVkiWF.js +1 -0
  269. package/codemini-web/dist/assets/sas-DPGT0TjQ.js +1 -0
  270. package/codemini-web/dist/assets/sass-D2nye32F.js +1 -0
  271. package/codemini-web/dist/assets/scala-B8greAnE.js +1 -0
  272. package/codemini-web/dist/assets/scheme-Ci_aquns.js +1 -0
  273. package/codemini-web/dist/assets/{scss-C0BQ8YVM.js → scss-CaciJ0Gl.js} +1 -1
  274. package/codemini-web/dist/assets/scss-YARKxu2i.js +1 -0
  275. package/codemini-web/dist/assets/sdbl-D4tJqBiC.js +1 -0
  276. package/codemini-web/dist/assets/shaderlab-JWcsxey4.js +1 -0
  277. package/codemini-web/dist/assets/shellscript-CxhArCCJ.js +1 -0
  278. package/codemini-web/dist/assets/shellsession-DYmuifdt.js +1 -0
  279. package/codemini-web/dist/assets/slack-dark-BcN7KJ02.js +1 -0
  280. package/codemini-web/dist/assets/slack-ochin-D4iInQ9w.js +1 -0
  281. package/codemini-web/dist/assets/smalltalk-BwSireXb.js +1 -0
  282. package/codemini-web/dist/assets/snazzy-light-B45TfPsv.js +1 -0
  283. package/codemini-web/dist/assets/solarized-dark-8yYW1wLs.js +1 -0
  284. package/codemini-web/dist/assets/solarized-light-BY3Hr0Ud.js +1 -0
  285. package/codemini-web/dist/assets/solidity-CIUlntDs.js +1 -0
  286. package/codemini-web/dist/assets/{soy-C6D0Ibo9.js → soy-7iHZG9Jz.js} +1 -1
  287. package/codemini-web/dist/assets/soy-h0dQKbQs.js +1 -0
  288. package/codemini-web/dist/assets/sparql-BGRSvFxd.js +1 -0
  289. package/codemini-web/dist/assets/splunk-DueVPk5k.js +1 -0
  290. package/codemini-web/dist/assets/sql-Q6zkgi_w.js +1 -0
  291. package/codemini-web/dist/assets/ssh-config-DKIMErlp.js +1 -0
  292. package/codemini-web/dist/assets/stata-lXN9BRaz.js +1 -0
  293. package/codemini-web/dist/assets/stylus-oqceM0yt.js +1 -0
  294. package/codemini-web/dist/assets/surrealql-l0SGzwOs.js +1 -0
  295. package/codemini-web/dist/assets/svelte-BM89dRu0.js +1 -0
  296. package/codemini-web/dist/assets/{svelte-DJ-0FpL2.js → svelte-CijnRGul.js} +1 -1
  297. package/codemini-web/dist/assets/swift-foA31xPc.js +1 -0
  298. package/codemini-web/dist/assets/synthwave-84-B002ZU4p.js +1 -0
  299. package/codemini-web/dist/assets/system-verilog-CCSGcM60.js +1 -0
  300. package/codemini-web/dist/assets/systemd-BymS_eIJ.js +1 -0
  301. package/codemini-web/dist/assets/talonscript-Ccc0122j.js +1 -0
  302. package/codemini-web/dist/assets/tasl-o38sfjeU.js +1 -0
  303. package/codemini-web/dist/assets/tcl-DISPE-5Q.js +1 -0
  304. package/codemini-web/dist/assets/{templ-7Bvm-rei.js → templ-CNjJl440.js} +1 -1
  305. package/codemini-web/dist/assets/templ-D1GoDFsp.js +1 -0
  306. package/codemini-web/dist/assets/terraform-V85Kewcz.js +1 -0
  307. package/codemini-web/dist/assets/tex-CxEkh6NI.js +1 -0
  308. package/codemini-web/dist/assets/tokyo-night-BLn5KNCP.js +1 -0
  309. package/codemini-web/dist/assets/toml-uEjeW8NC.js +1 -0
  310. package/codemini-web/dist/assets/{ts-tags-BfuR6EQ0.js → ts-tags-B88Nbzcl.js} +1 -1
  311. package/codemini-web/dist/assets/ts-tags-DV6nguf9.js +1 -0
  312. package/codemini-web/dist/assets/tsv-DjGwUc04.js +1 -0
  313. package/codemini-web/dist/assets/tsx-5O-M05V0.js +1 -0
  314. package/codemini-web/dist/assets/turtle-PTxTluYn.js +1 -0
  315. package/codemini-web/dist/assets/twig-B3Kws0Fb.js +1 -0
  316. package/codemini-web/dist/assets/{twig-_uxJ-QmX.js → twig-BROkIZLg.js} +1 -1
  317. package/codemini-web/dist/assets/typescript-hRweav8r.js +1 -0
  318. package/codemini-web/dist/assets/typespec-CKEcF6Kw.js +1 -0
  319. package/codemini-web/dist/assets/typst-DSQh9HII.js +1 -0
  320. package/codemini-web/dist/assets/v-obK6h_YW.js +1 -0
  321. package/codemini-web/dist/assets/vala-DXa9jSo-.js +1 -0
  322. package/codemini-web/dist/assets/vb-DEPbtYq-.js +1 -0
  323. package/codemini-web/dist/assets/verilog-Bs-185hK.js +1 -0
  324. package/codemini-web/dist/assets/vesper-B7BneC5G.js +1 -0
  325. package/codemini-web/dist/assets/vhdl-CBukgB2Z.js +1 -0
  326. package/codemini-web/dist/assets/viml-C1cRY0x6.js +1 -0
  327. package/codemini-web/dist/assets/vitesse-black-D3_12zni.js +1 -0
  328. package/codemini-web/dist/assets/vitesse-dark-B_iF7INE.js +1 -0
  329. package/codemini-web/dist/assets/vitesse-light-DbrrMtxY.js +1 -0
  330. package/codemini-web/dist/assets/{vue-DkOBu49o.js → vue-BUQP_8VF.js} +1 -1
  331. package/codemini-web/dist/assets/vue-CT36qSUr.js +1 -0
  332. package/codemini-web/dist/assets/vue-html-bJyjqZnI.js +1 -0
  333. package/codemini-web/dist/assets/vue-vine-BLqV15Pm.js +1 -0
  334. package/codemini-web/dist/assets/{vue-vine-veyFk6GJ.js → vue-vine-RK3AHrhp.js} +1 -1
  335. package/codemini-web/dist/assets/vyper-BxVot6rR.js +1 -0
  336. package/codemini-web/dist/assets/wasm-BNTPmfEI.js +1 -0
  337. package/codemini-web/dist/assets/wasm-o5uYkU9G.js +1 -0
  338. package/codemini-web/dist/assets/wenyan-MnC4h24X.js +1 -0
  339. package/codemini-web/dist/assets/wgsl-BgfkHnVi.js +1 -0
  340. package/codemini-web/dist/assets/wikitext-DCOnP3yk.js +1 -0
  341. package/codemini-web/dist/assets/wit-5UDEI7sp.js +1 -0
  342. package/codemini-web/dist/assets/wolfram-vvgPlu2n.js +1 -0
  343. package/codemini-web/dist/assets/xml-DyJ3D9rW.js +1 -0
  344. package/codemini-web/dist/assets/xsl-BOsdDgv_.js +1 -0
  345. package/codemini-web/dist/assets/yaml-C-G727Y6.js +1 -0
  346. package/codemini-web/dist/assets/zenscript-BPjqX0BY.js +1 -0
  347. package/codemini-web/dist/assets/zig-Bd91oU8r.js +1 -0
  348. package/codemini-web/dist/codemini_logo.png +0 -0
  349. package/codemini-web/dist/favicon.ico +0 -0
  350. package/codemini-web/dist/index.html +6 -3
  351. package/codemini-web/lib/runtime-bridge.js +22 -1
  352. package/codemini-web/server.js +919 -880
  353. package/deployment.md +5 -5
  354. package/package.json +1 -1
  355. package/src/commands/chat.js +1 -1
  356. package/src/commands/run.js +22 -7
  357. package/src/core/agent-loop.js +11 -7
  358. package/src/core/chat-runtime.js +314 -86
  359. package/src/core/command-evaluator.js +9 -3
  360. package/src/core/command-risk.js +9 -1
  361. package/src/core/config-store.js +4 -2
  362. package/src/core/context-compact.js +65 -3
  363. package/src/core/default-system-prompt.js +12 -4
  364. package/src/core/fff-adapter.js +1 -1
  365. package/src/core/reflect-skill.js +1 -1
  366. package/src/core/reply-language.js +6 -0
  367. package/src/core/shell-profile.js +14 -1
  368. package/src/core/soul.js +1 -3
  369. package/src/core/system-prompt-composer.js +42 -0
  370. package/src/core/tools.js +2 -2
  371. package/src/tui/chat-app.js +13 -3
  372. package/codemini-web/dist/assets/index-CSYMjBeT.css +0 -2
  373. package/codemini-web/dist/assets/index-DtiSt5vh.js +0 -206
  374. package/codemini-web/dist/assets/mermaid-GHXKKRXX-BQrwnoIu.js +0 -1
  375. /package/codemini-web/dist/assets/{bird2-Bs7YDhA3.js → bird2-VVa6lZ01.js} +0 -0
  376. /package/codemini-web/dist/assets/{css-BTi88BmP.js → css-Dr0v2l-V.js} +0 -0
  377. /package/codemini-web/dist/assets/{dart-Czrjv-nr.js → dart-BIyV3H7V.js} +0 -0
  378. /package/codemini-web/dist/assets/{emacs-lisp-D4W-_rAk.js → emacs-lisp-CVlPXEEa.js} +0 -0
  379. /package/codemini-web/dist/assets/{go-BTh90-YS.js → go-D6k5URxL.js} +0 -0
  380. /package/codemini-web/dist/assets/{horizon-bright-CpoqdULz.js → horizon-bright-CXcxBcih.js} +0 -0
  381. /package/codemini-web/dist/assets/{kusto-ByPWIc1b.js → kusto-B1r4va-8.js} +0 -0
  382. /package/codemini-web/dist/assets/{nextflow-groovy-D1X5Yd05.js → nextflow-groovy-o7ZjyFmf.js} +0 -0
  383. /package/codemini-web/dist/assets/{typespec-8nkhqWz6.js → typespec-N7-U_jBZ.js} +0 -0
@@ -1,16 +1,22 @@
1
1
  import { createChatCompletion } from './provider/index.js';
2
+ import { getReadOnlyCommandTokens } from './command-risk.js';
2
3
 
3
4
  const EVAL_TIMEOUT_MS = 15000;
4
5
 
5
- const SYSTEM_PROMPT = `You are a command safety evaluator for a coding assistant. Analyze the shell command and respond with valid JSON only, no markdown fences:
6
+ function buildSystemPrompt() {
7
+ const readOnlyTokens = getReadOnlyCommandTokens().join(', ');
8
+ return `You are a command safety evaluator for a coding assistant. Analyze the shell command and respond with valid JSON only, no markdown fences:
6
9
  {"risk":"low|medium|high","description":"what this command does in one sentence","sideEffects":"potential side effects in one sentence, or none","recommendation":"allow|deny"}
7
10
 
8
11
  Rules:
9
- - Read-only commands (ls, cat, git status, git diff, grep, find, etc.) are low risk and allow.
12
+ - Read-only command tokens are low risk and allow when used without write/network side effects: ${readOnlyTokens}.
13
+ - Treat common read-only subcommands such as git status, git diff, git log, git show, npm list, npm view, node --version, python --version, rg, fd, bat, Get-ChildItem, Get-Content, Select-String, and Test-Path as low risk.
14
+ - Consider the active shell and OS context, including Windows PowerShell command names and aliases.
10
15
  - Commands that install/uninstall packages, modify files, push code, start servers, or have network side effects are medium or high.
11
16
  - Destructive commands (rm -rf, format, sudo, dd) are high risk and deny.
12
17
  - Consider the workspace context: the command runs in the project directory.
13
18
  - Be concise. Maximum 1 sentence per field.`;
19
+ }
14
20
 
15
21
  const FAIL_CLOSED_RESULT = Object.freeze({
16
22
  risk: 'high',
@@ -51,7 +57,7 @@ export async function evaluateCommandWithLLM({ command, config, workspaceRoot })
51
57
  apiKey: config?.gateway?.api_key,
52
58
  model: config?.model?.name,
53
59
  messages: [
54
- { role: 'system', content: SYSTEM_PROMPT },
60
+ { role: 'system', content: buildSystemPrompt() },
55
61
  { role: 'user', content: `Command: ${cmd}\nWorkspace: ${workspaceRoot || process.cwd()}` }
56
62
  ],
57
63
  temperature: 0,
@@ -1,15 +1,23 @@
1
1
  import { collectCommandTokens, firstToken } from './command-policy.js';
2
2
 
3
3
  /* ── 只读命令 token ───────────────────────────────────────────── */
4
- const READ_ONLY_TOKENS = new Set([
4
+ export const READ_ONLY_TOKENS = new Set([
5
5
  'ls', 'cat', 'head', 'tail', 'pwd', 'wc', 'sort', 'uniq',
6
6
  'cut', 'tr', 'basename', 'dirname', 'test', 'true', 'false',
7
7
  'whoami', 'uname', 'date', 'env', 'printenv', 'hostname',
8
8
  'rg', 'find', 'grep', 'ag', 'ack', 'fd', 'bat',
9
+ 'get-childitem', 'get-content', 'get-location', 'get-command', 'get-help',
10
+ 'get-item', 'get-process', 'select-string', 'select-object', 'where-object',
11
+ 'foreach-object', 'measure-object', 'sort-object', 'compare-object',
12
+ 'resolve-path', 'test-path',
9
13
  'git', 'node', 'npm', 'npx', 'python', 'python3', 'py', 'pip', 'pip3',
10
14
  'echo', 'printf', 'seq', 'yes'
11
15
  ]);
12
16
 
17
+ export function getReadOnlyCommandTokens() {
18
+ return [...READ_ONLY_TOKENS].sort();
19
+ }
20
+
13
21
  /* 只读时需要检查子命令的 token */
14
22
  const READ_ONLY_SUBCOMMANDS = {
15
23
  git: new Set([
@@ -29,12 +29,14 @@ const DEFAULT_CONFIG = {
29
29
  },
30
30
  context: {
31
31
  max_tokens: 32000,
32
- preflight_trigger_pct: 92,
32
+ preflight_trigger_pct: 60,
33
33
  hard_limit_pct: 98,
34
34
  tool_result_max_chars: 12000,
35
35
  read_file_default_lines: 220,
36
36
  read_file_max_chars: 24000,
37
- prompt_budget_audit: false
37
+ prompt_budget_audit: false,
38
+ microcompact_enabled: true,
39
+ microcompact_keep_recent: 5
38
40
  },
39
41
  execution: {
40
42
  mode: 'normal',
@@ -1,6 +1,8 @@
1
1
  import { trimInline } from './string-utils.js';
2
2
  import { summarizeToolResult } from './tool-result-store.js';
3
3
 
4
+ const MICRO_CLEAR_MARKER = '[Old tool result cleared by micro-compact]';
5
+
4
6
  function textFromContent(content) {
5
7
  if (typeof content === 'string') return content;
6
8
  if (Array.isArray(content)) {
@@ -101,9 +103,64 @@ function buildLocalSummary(messages) {
101
103
  return lines.join('\n').trim();
102
104
  }
103
105
 
104
- export function compactMessagesLocally(messages, { mode = 'default' } = {}) {
106
+ /**
107
+ * Micro-compact: in-place clearing of old tool result content.
108
+ * Does NOT change message count or order — only replaces tool result text
109
+ * with a lightweight marker, preserving conversation structure.
110
+ *
111
+ * Strategy inspired by Claude Code's Phase 0 micro-compact:
112
+ * keep recent N tool results intact, clear the rest.
113
+ */
114
+ export function microCompactMessages(messages, { keepRecent = 5, enabled = true } = {}) {
115
+ if (!enabled || !Array.isArray(messages)) {
116
+ return { messages: [...messages], changed: false, tokensSaved: 0 };
117
+ }
118
+
119
+ // Collect indices of all tool-role messages
120
+ const toolIndices = [];
121
+ for (let i = 0; i < messages.length; i++) {
122
+ if (messages[i].role === 'tool') toolIndices.push(i);
123
+ }
124
+
125
+ if (toolIndices.length <= keepRecent) {
126
+ return { messages: [...messages], changed: false, tokensSaved: 0 };
127
+ }
128
+
129
+ // Indices to clear = all except the last keepRecent
130
+ const keepSet = new Set(toolIndices.slice(-keepRecent));
131
+ const clearSet = new Set(toolIndices.filter((idx) => !keepSet.has(idx)));
132
+
133
+ if (clearSet.size === 0) {
134
+ return { messages: [...messages], changed: false, tokensSaved: 0 };
135
+ }
136
+
137
+ const beforeTokens = estimateMessagesTokens(messages);
138
+ const result = messages.map((msg, i) => {
139
+ if (!clearSet.has(i)) return msg;
140
+ const text = textFromContent(msg.content);
141
+ if (!text || text === MICRO_CLEAR_MARKER) return msg;
142
+ return { ...msg, content: MICRO_CLEAR_MARKER };
143
+ });
144
+ const afterTokens = estimateMessagesTokens(result);
145
+ const tokensSaved = beforeTokens - afterTokens;
146
+
147
+ if (tokensSaved <= 0) {
148
+ return { messages: [...messages], changed: false, tokensSaved: 0 };
149
+ }
150
+
151
+ return { messages: result, changed: true, tokensSaved };
152
+ }
153
+
154
+ export function compactMessagesLocally(messages, { mode = 'default', force = false } = {}) {
105
155
  const keepRecent = modeToKeepRecent(mode);
106
- if (!Array.isArray(messages) || messages.length <= keepRecent + 1) {
156
+ if (!Array.isArray(messages) || messages.length <= 1) {
157
+ return {
158
+ compacted: [...(messages || [])],
159
+ changed: false
160
+ };
161
+ }
162
+ // Skip compact when message count is low enough to keep all, unless forced
163
+ if (!force && messages.length <= keepRecent + 1) {
107
164
  return {
108
165
  compacted: [...(messages || [])],
109
166
  changed: false
@@ -115,10 +172,13 @@ export function compactMessagesLocally(messages, { mode = 'default' } = {}) {
115
172
  const summary = buildLocalSummary(older);
116
173
  const compacted = [{ role: 'assistant', content: summary }, ...recent];
117
174
 
175
+ const boundaryIndex = Math.max(0, messages.length - keepRecent);
176
+
118
177
  return {
119
178
  compacted,
120
179
  changed: true,
121
- summary
180
+ summary,
181
+ boundaryIndex
122
182
  };
123
183
  }
124
184
 
@@ -127,6 +187,7 @@ export function parseCompactArgs(args = []) {
127
187
  mode: 'default',
128
188
  preview: false,
129
189
  restore: false,
190
+ micro: false,
130
191
  auto: undefined,
131
192
  threshold: undefined
132
193
  };
@@ -135,6 +196,7 @@ export function parseCompactArgs(args = []) {
135
196
  const arg = args[i];
136
197
  if (arg === '--preview') parsed.preview = true;
137
198
  if (arg === '--restore') parsed.restore = true;
199
+ if (arg === '--micro') parsed.micro = true;
138
200
  if (arg === '--aggressive') parsed.mode = 'aggressive';
139
201
  if (arg === '--conservative') parsed.mode = 'conservative';
140
202
  if (arg === '--default') parsed.mode = 'default';
@@ -1,9 +1,17 @@
1
1
  import os from 'node:os';
2
2
  import fs from 'node:fs';
3
+ import path from 'node:path';
3
4
  import { getShellSystemPrompt } from './shell-profile.js';
4
5
 
6
+ function formatToolPath(...segments) {
7
+ return JSON.stringify(path.join(process.cwd(), ...segments));
8
+ }
9
+
5
10
  function getToolFewShotBlock() {
6
11
  const cwd = process.cwd();
12
+ const authServicePath = formatToolPath('src', 'auth', 'service.ts');
13
+ const reducerRangePath = JSON.stringify(`${path.join(cwd, 'src', 'store', 'reducer.ts')}:110-150`);
14
+ const notesPath = formatToolPath('notes.txt');
7
15
  return `# Tool Examples
8
16
 
9
17
  Use these as style examples for tool calls:
@@ -16,7 +24,7 @@ If the user mentions a project-relative path like src/app.ts, resolve it from ${
16
24
  User: compare the auth flow
17
25
  Assistant: first narrow the search with the project index
18
26
  Tool: query_project_index({"query":"auth flow","path":"src","max_results":3})
19
- Tool: read({"path":"${cwd}/src/auth/service.ts"})
27
+ Tool: read({"path":${authServicePath}})
20
28
 
21
29
  If the visible tool list does not include a needed capability, load it with tool_search instead of assuming it does not exist.
22
30
  Example:
@@ -27,12 +35,12 @@ Tool: glob({"pattern":"src/**/*.ts"})
27
35
  User: rename loginUser to signInUser
28
36
  Assistant: first find the exact occurrences
29
37
  Tool: grep({"pattern":"loginUser","path":"src"})
30
- Tool: edit({"path":"${cwd}/src/auth/service.ts","old_text":"loginUser","new_text":"signInUser"})
38
+ Tool: edit({"path":${authServicePath},"old_text":"loginUser","new_text":"signInUser"})
31
39
 
32
40
  3. Read a specific range
33
41
  User: inspect the reducer around line 120
34
42
  Assistant: read only the needed range
35
- Tool: read({"path":"${cwd}/src/store/reducer.ts:110-150"})
43
+ Tool: read({"path":${reducerRangePath}})
36
44
 
37
45
  4. Track a complex task with todos
38
46
  User: update the login flow and verify it
@@ -43,7 +51,7 @@ Assistant: keep the checklist updated as each phase finishes, and do not give a
43
51
  5. Create a new file
44
52
  User: add a notes file
45
53
  Assistant: create the file directly
46
- Tool: write({"path":"${cwd}/notes.txt","content":"todo\\n"})
54
+ Tool: write({"path":${notesPath},"content":"todo\\n"})
47
55
 
48
56
  6. Save a high-signal observation to memory
49
57
  When you notice a reusable pattern, a user correction, a repeated failure, or a stable preference — save it to persistent memory. Choose scope carefully:
@@ -111,7 +111,7 @@ class FffMcpClient {
111
111
  capabilities: {},
112
112
  clientInfo: {
113
113
  name: 'codemini-cli',
114
- version: '0.5.1'
114
+ version: '0.5.2'
115
115
  }
116
116
  });
117
117
  this.sendNotification('notifications/initialized', {});
@@ -128,7 +128,7 @@ export async function buildReflectSkillDraft({
128
128
  } = {}) {
129
129
  const mode = String(request || '').trim() ? 'directed' : 'exploratory';
130
130
  const prompt = [
131
- 'Create a reusable Codex/CodeMini SKILL.md draft from a successful workflow.',
131
+ 'Create a reusable Codex/Codemini SKILL.md draft from a successful workflow.',
132
132
  `Mode: ${mode}`,
133
133
  `Target scope: ${scope}`,
134
134
  request ? `User reflection request:\n${request}` : 'No explicit request was supplied. Be conservative and return no candidates if the recent context does not show a reusable success pattern.',
@@ -32,3 +32,9 @@ export function buildSystemPromptWithReplyLanguage(baseSystemPrompt, config = {}
32
32
 
33
33
  return `${String(baseSystemPrompt || '').trim()}\n\n${directive}`.trim();
34
34
  }
35
+
36
+ export function stripReplyLanguageDirective(systemPrompt) {
37
+ return String(systemPrompt || '')
38
+ .replace(/\n{0,2}\[Reply language\]\n(?:Respond in (?:English|Simplified Chinese)\.\n)?Write generated documentation, user-facing text, and code comments in (?:English|Simplified Chinese) unless the user explicitly asks for a different language\./g, '')
39
+ .trim();
40
+ }
@@ -29,7 +29,20 @@ const SHELL_PROFILES = {
29
29
  'pip3',
30
30
  'get-childitem',
31
31
  'get-content',
32
+ 'get-location',
33
+ 'get-command',
34
+ 'get-help',
35
+ 'get-item',
36
+ 'get-process',
32
37
  'select-string',
38
+ 'select-object',
39
+ 'where-object',
40
+ 'foreach-object',
41
+ 'measure-object',
42
+ 'sort-object',
43
+ 'compare-object',
44
+ 'resolve-path',
45
+ 'test-path',
33
46
  'set-content',
34
47
  'new-item',
35
48
  'copy-item',
@@ -139,7 +152,7 @@ export function getEffectivePolicy(config) {
139
152
 
140
153
  export function getShellSystemPrompt(value) {
141
154
  const profile = getShellProfile(value);
142
- return `You are CodeMini CLI, an AI coding assistant running in a ${profile.label} shell environment.
155
+ return `You are Codemini CLI, an AI coding assistant running in a ${profile.label} shell environment.
143
156
 
144
157
  # Using your tools
145
158
 
package/src/core/soul.js CHANGED
@@ -2,7 +2,6 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { getBaseConfigDir } from './paths.js';
5
- import { buildSystemPromptWithReplyLanguage } from './reply-language.js';
6
5
 
7
6
  const MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
8
7
  const BUNDLED_SOULS_DIR = path.resolve(MODULE_DIR, '..', '..', 'souls');
@@ -59,7 +58,6 @@ export async function loadSoulPrompt(config = {}) {
59
58
  }
60
59
 
61
60
  export async function buildSystemPromptWithSoul(baseSystemPrompt, config = {}) {
62
- const promptWithReplyLanguage = buildSystemPromptWithReplyLanguage(baseSystemPrompt, config);
63
61
  const soulPrompt = await loadSoulPrompt(config);
64
62
  const guard = [
65
63
  '[Soul guard]',
@@ -67,5 +65,5 @@ export async function buildSystemPromptWithSoul(baseSystemPrompt, config = {}) {
67
65
  'Response tone only: do not change plans, code, tests, file formats, or technical decisions.',
68
66
  'This tone directive has HIGH priority. Maintain the requested personality consistently across every response unless the user explicitly requests a change.'
69
67
  ].join('\n');
70
- return `${soulPrompt}\n\n${guard}\n\n${String(promptWithReplyLanguage || '').trim()}`.trim();
68
+ return [String(baseSystemPrompt || '').trim(), soulPrompt, guard].filter(Boolean).join('\n\n').trim();
71
69
  }
@@ -0,0 +1,42 @@
1
+ import { buildMemorySnapshot } from './memory-prompt.js';
2
+ import { buildSystemPromptWithReplyLanguage, stripReplyLanguageDirective } from './reply-language.js';
3
+ import { buildSystemPromptWithSoul } from './soul.js';
4
+
5
+ function normalizePromptPart(value) {
6
+ return stripReplyLanguageDirective(String(value || '').trim());
7
+ }
8
+
9
+ function joinPromptParts(parts) {
10
+ return parts.map(normalizePromptPart).filter(Boolean).join('\n\n');
11
+ }
12
+
13
+ export async function composeSystemPrompt({
14
+ shellRulesPrompt = '',
15
+ config = {},
16
+ workspaceRoot = process.cwd(),
17
+ skillsPrompt = '',
18
+ memorySnapshot,
19
+ includeMemory = true,
20
+ projectContextSnippet = '',
21
+ projectContextGuidance = '',
22
+ extraPrompts = [],
23
+ includeSoul = true
24
+ } = {}) {
25
+ const shellAndSoul = includeSoul
26
+ ? await buildSystemPromptWithSoul(shellRulesPrompt, config)
27
+ : shellRulesPrompt;
28
+ const memoryPrompt = memorySnapshot !== undefined
29
+ ? memorySnapshot
30
+ : includeMemory
31
+ ? await buildMemorySnapshot({ config, workspaceRoot }).catch(() => '')
32
+ : '';
33
+ const body = joinPromptParts([
34
+ shellAndSoul,
35
+ skillsPrompt,
36
+ memoryPrompt,
37
+ projectContextSnippet,
38
+ projectContextSnippet ? projectContextGuidance : '',
39
+ ...extraPrompts
40
+ ]);
41
+ return buildSystemPromptWithReplyLanguage(body, config);
42
+ }
package/src/core/tools.js CHANGED
@@ -266,7 +266,7 @@ async function webFetchPage(args = {}) {
266
266
  redirect: 'follow',
267
267
  signal: controller.signal,
268
268
  headers: {
269
- 'user-agent': 'CodeMiniCLI/0.4 web_fetch'
269
+ 'user-agent': 'CodeminiCLI/0.4 web_fetch'
270
270
  }
271
271
  });
272
272
  } finally {
@@ -362,7 +362,7 @@ async function webSearchQuery(config, args = {}) {
362
362
  redirect: 'follow',
363
363
  signal: controller.signal,
364
364
  headers: {
365
- 'user-agent': 'CodeMiniCLI/0.4 web_search',
365
+ 'user-agent': 'CodeminiCLI/0.4 web_search',
366
366
  accept: 'application/rss+xml, application/xml;q=0.9, text/xml;q=0.8, */*;q=0.5',
367
367
  'accept-language': `${locale},en;q=0.8`
368
368
  }
@@ -159,7 +159,7 @@ const TUI_COPY = {
159
159
  '🆕 /new 可以新建一个干净的会话,重新开始工作。',
160
160
  '🧠 /memory 查看和管理 AI 的持久记忆,帮助它更好地理解你的偏好。',
161
161
  '🌐 web_fetch 默认轻量读取网页;如需更好读取 JS 渲染页面,可运行 npm install -g playwright && playwright install chromium。',
162
- '💤 CodeMini 会自动"做梦"休息,整理错误信息并自我优化,越用越聪明~'
162
+ '💤 Codemini 会自动"做梦"休息,整理错误信息并自我优化,越用越聪明~'
163
163
  ],
164
164
  toolSummaryExpanded: '工具摘要:已展开',
165
165
  toolSummaryCollapsed: '工具摘要:已收起',
@@ -386,7 +386,7 @@ const TUI_COPY = {
386
386
  '🆕 /new starts a fresh session to begin a clean slate.',
387
387
  '🧠 /memory lets you view and manage the AI\'s persistent memory for better personalization.',
388
388
  '🌐 web_fetch uses a lightweight reader by default. For better JS-rendered pages: npm install -g playwright && playwright install chromium.',
389
- '💤 CodeMini auto-"dreams" to rest, consolidate errors, and self-optimize — it gets smarter over time~'
389
+ '💤 Codemini auto-"dreams" to rest, consolidate errors, and self-optimize — it gets smarter over time~'
390
390
  ],
391
391
  toolSummaryExpanded: 'Tool summary: expanded',
392
392
  toolSummaryCollapsed: 'Tool summary: collapsed',
@@ -2849,6 +2849,15 @@ export function moveSuggestionSelection(currentIndex, itemCount, direction, page
2849
2849
  }
2850
2850
 
2851
2851
  const MessageBubble = React.memo(function MessageBubble({ msg, loaderTick, showToolDetails, rowWindow = null, contentWidth = 72, copy }) {
2852
+ if (msg?.dividerType === 'compact') {
2853
+ return h(
2854
+ Box,
2855
+ { marginY: 1, flexDirection: 'row' },
2856
+ h(Text, { color: 'yellow', dimColor: true }, '─── '),
2857
+ h(Text, { color: 'yellow' }, msg.text || '以上内容已压缩'),
2858
+ h(Text, { color: 'yellow', dimColor: true }, ' ───')
2859
+ );
2860
+ }
2852
2861
  if (msg?.planStrip) {
2853
2862
  return h(PlanStrip, { planState: msg.planState, copy });
2854
2863
  }
@@ -4375,7 +4384,8 @@ export function ChatApp({ runtime, sessionId, model, sdkProvider = 'openai-compa
4375
4384
  ...prev,
4376
4385
  {
4377
4386
  id: nextId(),
4378
- label: 'system',
4387
+ label: 'divider',
4388
+ dividerType: 'compact',
4379
4389
  text: copy.runtime.autoCompactTriggered(event.mode, event.threshold),
4380
4390
  color: 'yellowBright'
4381
4391
  }
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-600:oklch(66.6% .179 58.318);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-500:oklch(62.3% .214 259.815);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:var(--radius-sm);--radius-md:.375rem;--radius-lg:var(--radius-lg);--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius:var(--radius)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[38\%\]{top:38%}.top-\[50\%\]{top:50%}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-7{right:calc(var(--spacing) * 7)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\[220px\]{bottom:220px}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.m-0{margin:calc(var(--spacing) * 0)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-2\.5{margin-inline:calc(var(--spacing) * 2.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-\[22px\]{margin-block:22px}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-\[-12px\]{margin-top:-12px}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[18px\]{height:18px}.h-\[28px\]{height:28px}.h-\[30px\]{height:30px}.h-\[32px\]{height:32px}.h-\[34px\]{height:34px}.h-\[46px\]{height:46px}.h-\[52px\]{height:52px}.h-\[240px\]{height:240px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[calc\(100vh-160px\)\]{height:calc(100vh - 160px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[160px\]{max-height:160px}.max-h-\[320px\]{max-height:320px}.max-h-\[360px\]{max-height:360px}.max-h-\[400px\]{max-height:400px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-\[28px\]{min-height:28px}.min-h-\[30px\]{min-height:30px}.min-h-\[32px\]{min-height:32px}.min-h-\[64px\]{min-height:64px}.min-h-\[200px\]{min-height:200px}.min-h-\[420px\]{min-height:420px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-12{width:calc(var(--spacing) * 12)}.w-20{width:calc(var(--spacing) * 20)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-72{width:calc(var(--spacing) * 72)}.w-\[18px\]{width:18px}.w-\[34px\]{width:34px}.w-\[260px\]{width:260px}.w-\[min\(760px\,calc\(100\%-48px\)\)\]{width:min(760px,100% - 48px)}.w-\[min\(960px\,calc\(100\%-96px\)\)\]{width:min(960px,100% - 96px)}.w-\[min\(980px\,calc\(100\%-64px\)\)\]{width:min(980px,100% - 64px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-75{max-width:calc(var(--spacing) * 75)}.max-w-\[60px\]{max-width:60px}.max-w-\[80px\]{max-width:80px}.max-w-\[860px\]{max-width:860px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[30px\]{min-width:30px}.min-w-\[32px\]{min-width:32px}.min-w-\[34px\]{min-width:34px}.min-w-\[120px\]{min-width:120px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.origin-center{transform-origin:50%}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[22px_minmax\(96px\,180px\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:22px minmax(96px,180px) minmax(0,1fr) auto}.grid-cols-\[260px_minmax\(0\,1fr\)_420px\]{grid-template-columns:260px minmax(0,1fr) 420px}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:var(--radius)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[18px\]{border-radius:18px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--accent-blue\)\/30{border-color:var(--accent-blue)}@supports (color:color-mix(in lab, red, red)){.border-\(--accent-blue\)\/30{border-color:color-mix(in oklab, var(--accent-blue) 30%, transparent)}}.border-\(--accent-cyan\)\/25{border-color:var(--accent-cyan)}@supports (color:color-mix(in lab, red, red)){.border-\(--accent-cyan\)\/25{border-color:color-mix(in oklab, var(--accent-cyan) 25%, transparent)}}.border-\(--accent-purple\)\/25{border-color:var(--accent-purple)}@supports (color:color-mix(in lab, red, red)){.border-\(--accent-purple\)\/25{border-color:color-mix(in oklab, var(--accent-purple) 25%, transparent)}}.border-\(--accent-red\)\/30{border-color:var(--accent-red)}@supports (color:color-mix(in lab, red, red)){.border-\(--accent-red\)\/30{border-color:color-mix(in oklab, var(--accent-red) 30%, transparent)}}.border-\(--border-default\){border-color:var(--border-default)}.border-\(--border-strong\){border-color:var(--border-strong)}.border-\[var\(--accent-orange\)\]\/40{border-color:var(--accent-orange)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--accent-orange\)\]\/40{border-color:color-mix(in oklab, var(--accent-orange) 40%, transparent)}}.border-\[var\(--accent-red\)\]\/40{border-color:var(--accent-red)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--accent-red\)\]\/40{border-color:color-mix(in oklab, var(--accent-red) 40%, transparent)}}.border-\[var\(--border-default\)\]{border-color:var(--border-default)}.border-border{border-color:var(--border)}.border-current{border-color:currentColor}.border-input{border-color:var(--input)}.border-muted-foreground\/30{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/30{border-color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.border-sidebar{border-color:var(--sidebar)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\(--accent-blue\){background-color:var(--accent-blue)}.bg-\(--accent-blue-bg\){background-color:var(--accent-blue-bg)}.bg-\(--accent-cyan\){background-color:var(--accent-cyan)}.bg-\(--accent-cyan-bg\){background-color:var(--accent-cyan-bg)}.bg-\(--accent-green\){background-color:var(--accent-green)}.bg-\(--accent-green-bg\){background-color:var(--accent-green-bg)}.bg-\(--accent-orange\){background-color:var(--accent-orange)}.bg-\(--accent-orange-bg\){background-color:var(--accent-orange-bg)}.bg-\(--accent-purple-bg\){background-color:var(--accent-purple-bg)}.bg-\(--accent-red\){background-color:var(--accent-red)}.bg-\(--accent-red-bg\){background-color:var(--accent-red-bg)}.bg-\(--bg-active\){background-color:var(--bg-active)}.bg-\(--bg-hover\){background-color:var(--bg-hover)}.bg-\(--bg-input\){background-color:var(--bg-input)}.bg-\(--bg-primary\){background-color:var(--bg-primary)}.bg-\(--bg-secondary\){background-color:var(--bg-secondary)}.bg-\(--bg-tertiary\){background-color:var(--bg-tertiary)}.bg-\(--border-default\){background-color:var(--border-default)}.bg-\(--muted\){background-color:var(--muted)}.bg-\(--text-muted\),.bg-\(--text-muted\)\/30{background-color:var(--text-muted)}@supports (color:color-mix(in lab, red, red)){.bg-\(--text-muted\)\/30{background-color:color-mix(in oklab, var(--text-muted) 30%, transparent)}}.bg-\(--text-primary\){background-color:var(--text-primary)}.bg-\[var\(--accent-blue\)\]{background-color:var(--accent-blue)}.bg-\[var\(--accent-green\)\]{background-color:var(--accent-green)}.bg-\[var\(--accent-orange\)\]{background-color:var(--accent-orange)}.bg-\[var\(--accent-red\)\]{background-color:var(--accent-red)}.bg-\[var\(--bg-secondary\)\]{background-color:var(--bg-secondary)}.bg-\[var\(--bg-tertiary\)\]{background-color:var(--bg-tertiary)}.bg-\[var\(--muted\)\]{background-color:var(--muted)}.bg-\[var\(--sdm-tbg\)\]{background-color:var(--sdm-tbg)}.bg-background,.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/90{background-color:color-mix(in oklab, var(--background) 90%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-current{background-color:currentColor}.bg-destructive{background-color:var(--destructive)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-muted,.bg-muted\/80{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/80{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar,.bg-sidebar\/80{background-color:var(--sidebar)}@supports (color:color-mix(in lab, red, red)){.bg-sidebar\/80{background-color:color-mix(in oklab, var(--sidebar) 80%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.fill-\(--bg-secondary\){fill:var(--bg-secondary)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[3px\]{padding:3px}.p-\[12px_14px_10px\]{padding:12px 14px 10px}.p-px{padding:1px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-\[5px\]{padding-inline:5px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-\[44px_0_28px\]{padding-block:44px 0 28px}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.92em\]{font-size:.92em}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[18px\]{font-size:18px}.text-\[clamp\(24px\,2\.4vw\,36px\)\]{font-size:clamp(24px,2.4vw,36px)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[1\.5\]{--tw-leading:1.5;line-height:1.5}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2px\]{--tw-tracking:.2px;letter-spacing:.2px}.tracking-\[0\.3px\]{--tw-tracking:.3px;letter-spacing:.3px}.tracking-\[0\.4px\]{--tw-tracking:.4px;letter-spacing:.4px}.tracking-\[0\.45px\]{--tw-tracking:.45px;letter-spacing:.45px}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\(--accent-blue\){color:var(--accent-blue)}.text-\(--accent-cyan\){color:var(--accent-cyan)}.text-\(--accent-green\){color:var(--accent-green)}.text-\(--accent-orange\){color:var(--accent-orange)}.text-\(--accent-purple\){color:var(--accent-purple)}.text-\(--accent-red\){color:var(--accent-red)}.text-\(--bg-primary\){color:var(--bg-primary)}.text-\(--muted-foreground\){color:var(--muted-foreground)}.text-\(--text-muted\){color:var(--text-muted)}.text-\(--text-primary\){color:var(--text-primary)}.text-\(--text-secondary\){color:var(--text-secondary)}.text-\[var\(--sdm-c\,inherit\)\]{color:var(--sdm-c,inherit)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-accent-purple{color:var(--accent-purple)}.text-amber-600{color:var(--color-amber-600)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.text-green-600{color:var(--color-green-600)}.text-inherit{color:inherit}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-blue-500{accent-color:var(--color-blue-500)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[counter-increment\:line_0\]{counter-increment:line 0}.\[counter-reset\:line\]{counter-reset:line}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\[orientation\=horizontal\]\/tabs\:h-9:is(:where(.group\/tabs)[data-orientation=horizontal] *){height:calc(var(--spacing) * 9)}.group-data-\[orientation\=vertical\]\/tabs\:h-fit:is(:where(.group\/tabs)[data-orientation=vertical] *){height:fit-content}.group-data-\[orientation\=vertical\]\/tabs\:w-full:is(:where(.group\/tabs)[data-orientation=vertical] *){width:100%}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:justify-start:is(:where(.group\/tabs)[data-orientation=vertical] *){justify-content:flex-start}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.placeholder\:text-\(--text-muted\)::placeholder{color:var(--text-muted)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.before\:mr-4:before{content:var(--tw-content);margin-right:calc(var(--spacing) * 4)}.before\:inline-block:before{content:var(--tw-content);display:inline-block}.before\:w-6:before{content:var(--tw-content);width:calc(var(--spacing) * 6)}.before\:text-right:before{content:var(--tw-content);text-align:right}.before\:font-mono:before{content:var(--tw-content);font-family:var(--font-mono)}.before\:text-\[13px\]:before{content:var(--tw-content);font-size:13px}.before\:text-muted-foreground\/50:before{content:var(--tw-content);color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.before\:text-muted-foreground\/50:before{color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.before\:content-\[counter\(line\)\]:before{--tw-content:counter(line);content:var(--tw-content)}.before\:select-none:before{content:var(--tw-content);-webkit-user-select:none;user-select:none}.before\:\[counter-increment\:line\]:before{content:var(--tw-content);counter-increment:line}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-\[orientation\=horizontal\]\/tabs\:after\:inset-x-0:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-\[orientation\=horizontal\]\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);bottom:-5px}.group-data-\[orientation\=horizontal\]\/tabs\:after\:h-0\.5:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-\[orientation\=vertical\]\/tabs\:after\:inset-y-0:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-\[orientation\=vertical\]\/tabs\:after\:-right-1:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-\[orientation\=vertical\]\/tabs\:after\:w-0\.5:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media (hover:hover){.hover\:bg-\(--accent-red-bg\):hover{background-color:var(--accent-red-bg)}.hover\:bg-\(--bg-active\):hover{background-color:var(--bg-active)}.hover\:bg-\(--bg-hover\):hover,.hover\:bg-\[var\(--bg-hover\)\]:hover{background-color:var(--bg-hover)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-background:hover{background-color:var(--background)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/40:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/40:hover{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-\(--accent-red\):hover{color:var(--accent-red)}.hover\:text-\(--text-primary\):hover{color:var(--text-primary)}.hover\:text-\(--text-secondary\):hover{color:var(--text-secondary)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-\(--text-secondary\):focus-visible{border-color:var(--text-secondary)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.has-\[\>svg\]\:px-1\.5:has(>svg){padding-inline:calc(var(--spacing) * 1.5)}.has-\[\>svg\]\:px-2:has(>svg){padding-inline:calc(var(--spacing) * 2)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-\(--text-muted\)[data-placeholder]{color:var(--text-muted)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-\[state\=active\]\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *)[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]:after{content:var(--tw-content);opacity:1}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.supports-\[backdrop-filter\]\:bg-sidebar\/70{background-color:var(--sidebar)}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-sidebar\/70{background-color:color-mix(in oklab, var(--sidebar) 70%, transparent)}}.supports-\[backdrop-filter\]\:backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.supports-\[backdrop-filter\]\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media not all and (width>=80rem){.max-xl\:hidden{display:none}.max-xl\:grid-cols-\[220px_minmax\(0\,1fr\)\]{grid-template-columns:220px minmax(0,1fr)}}@media not all and (width>=64rem){.max-lg\:hidden{display:none}.max-lg\:inline-flex{display:inline-flex}.max-lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}}@media (width>=40rem){.sm\:max-w-160{max-width:calc(var(--spacing) * 160)}.sm\:max-w-\[380px\]{max-width:380px}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-\[640px\]{max-width:640px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}}@media (width>=48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:bg-\[var\(--shiki-dark-bg\,var\(--sdm-tbg\)\)\][data-theme=dark]{background-color:var(--shiki-dark-bg,var(--sdm-tbg))}.dark\:bg-destructive\/60[data-theme=dark]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60[data-theme=dark]{background-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.dark\:bg-input\/30[data-theme=dark]{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30[data-theme=dark]{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:text-\[var\(--shiki-dark\,var\(--sdm-c\,inherit\)\)\][data-theme=dark]{color:var(--shiki-dark,var(--sdm-c,inherit))}.dark\:text-amber-400[data-theme=dark]{color:var(--color-amber-400)}.dark\:text-green-400[data-theme=dark]{color:var(--color-green-400)}.dark\:text-muted-foreground[data-theme=dark]{color:var(--muted-foreground)}@media (hover:hover){.dark\:hover\:text-foreground[data-theme=dark]:hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40[data-theme=dark]:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40[data-theme=dark]:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40[data-theme=dark][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40[data-theme=dark][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input[data-theme=dark][data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30[data-theme=dark][data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[state\=active\]\:bg-input\/30[data-theme=dark][data-state=active]{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:data-\[state\=active\]\:text-foreground[data-theme=dark][data-state=active]{color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-transparent[data-theme=dark]:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent[data-theme=dark]:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:h-auto svg{height:auto}.\[\&_svg\]\:w-auto svg{width:auto}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-\(--text-muted\) svg:not([class*=text-]){color:var(--text-muted)}.\[\&_thead\]\:sticky thead{position:sticky}.\[\&_thead\]\:top-0 thead{top:calc(var(--spacing) * 0)}.\[\&_thead\]\:z-10 thead{z-index:10}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:calc(var(--spacing) * 0)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:calc(var(--spacing) * 0)}.\[\&\>\*\:last-child\]\:after\:inline>:last-child:after{content:var(--tw-content);display:inline}.\[\&\>\*\:last-child\]\:after\:align-baseline>:last-child:after{content:var(--tw-content);vertical-align:baseline}.\[\&\>\*\:last-child\]\:after\:content-\[var\(--streamdown-caret\)\]>:last-child:after{--tw-content:var(--streamdown-caret);content:var(--tw-content)}.\[\&\>p\]\:inline>p{display:inline}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab, var(--secondary) 90%, transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}a.\[a\&\]\:hover\:underline:hover{text-decoration-line:underline}}li .\[li_\&\]\:pl-6{padding-left:calc(var(--spacing) * 6)}}@keyframes sd-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sd-blurIn{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur()}}@keyframes sd-slideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}[data-sd-animate]{animation:var(--sd-animation,sd-fadeIn) var(--sd-duration,.15s) var(--sd-easing,ease) var(--sd-delay,0s) both}@font-face{font-family:Geist;src:url(/assets/Geist-Variable-CrgPqtmy.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Geist;src:url(/assets/Geist-Italic_wght_-vKc54d3Z.woff2)format("woff2");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2)format("woff2");font-weight:100 900;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#fff;--foreground:#0a0a0a;--card:#fff;--card-foreground:#0a0a0a;--popover:#fff;--popover-foreground:#0a0a0a;--primary:#171717;--primary-foreground:#fafafa;--secondary:#f5f5f5;--secondary-foreground:#171717;--muted:#f5f5f5;--muted-foreground:#737373;--accent:#f5f5f5;--accent-foreground:#171717;--destructive:#ef4444;--destructive-foreground:#fafafa;--border:#e5e5e5;--input:#e5e5e5;--ring:#a3a3a3;--sidebar:#fafafa;--sidebar-foreground:#0a0a0a;--bg-primary:#fff;--bg-secondary:#f5f5f5;--bg-tertiary:#f5f5f5;--bg-hover:#e5e5e5;--bg-active:#e5e5e5;--bg-input:#fff;--text-primary:#0a0a0a;--text-secondary:#737373;--text-muted:#a3a3a3;--border-default:#e5e5e5;--border-strong:#d4d4d4;--accent-blue:#2563eb;--accent-blue-bg:#eff6ff;--accent-green:#059669;--accent-green-bg:#ecfdf5;--accent-red:#dc2626;--accent-red-bg:#fef2f2;--accent-orange:#d97706;--accent-orange-bg:#fffbeb;--accent-purple:#7c3aed;--accent-purple-bg:#f5f3ff;--accent-cyan:#0891b2;--accent-cyan-bg:#ecfeff;--accent-hover:#1d4ed8;--shadow-sm:#0000000d 0 1px 2px;--shadow-default:#0000000d 0 0 0 1px, #00000014 0 8px 24px;--shadow-lg:#00000014 0 0 0 1px, #00000029 0 16px 46px;--radius-sm:.25rem;--radius:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--font-sans:"Geist", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--transition:.14s ease}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#0a0a0a;--foreground:#fafafa;--card:#0a0a0a;--card-foreground:#fafafa;--popover:#0a0a0a;--popover-foreground:#fafafa;--primary:#fafafa;--primary-foreground:#0a0a0a;--secondary:#262626;--secondary-foreground:#fafafa;--muted:#262626;--muted-foreground:#a3a3a3;--accent:#262626;--accent-foreground:#fafafa;--destructive:#ef4444;--destructive-foreground:#fafafa;--border:#262626;--input:#262626;--ring:#737373;--sidebar:#0a0a0a;--sidebar-foreground:#fafafa;--bg-primary:#0a0a0a;--bg-secondary:#141414;--bg-tertiary:#262626;--bg-hover:#2e2e2e;--bg-active:#333;--bg-input:#141414;--text-primary:#fafafa;--text-secondary:#a3a3a3;--text-muted:#737373;--border-default:#262626;--border-strong:#404040;--accent-blue:#60a5fa;--accent-blue-bg:#172554;--accent-green:#34d399;--accent-green-bg:#022c22;--accent-red:#f87171;--accent-red-bg:#450a0a;--accent-orange:#fbbf24;--accent-orange-bg:#451a03;--accent-purple:#a78bfa;--accent-purple-bg:#2e1065;--accent-cyan:#22d3ee;--accent-cyan-bg:#083344;--accent-hover:#93c5fd;--shadow-sm:#0000004d 0 1px 2px;--shadow-default:#0006 0 0 0 1px, #0006 0 10px 28px;--shadow-lg:#00000080 0 0 0 1px, #0009 0 18px 60px}#root,#root *{caret-color:#0000;cursor:default;-webkit-user-select:none;user-select:none}#root .msg-body,#root .msg-body *{-webkit-user-select:text;user-select:text}#root button,#root button *,#root [role=button],#root [role=button] *,#root .cursor-pointer,#root .cursor-pointer *,#root a,#root a *,#root select,#root summary,#root summary *{cursor:pointer}#root label:has(input){cursor:pointer}#root label:has(input) *{cursor:pointer}#root input,#root textarea,#root [contenteditable=true],#root [contenteditable=true] *{caret-color:auto;cursor:text;-webkit-user-select:text;user-select:text}#root .cursor-not-allowed,#root .cursor-not-allowed *{cursor:not-allowed}.streaming-cursor:after{content:"";background:var(--accent-blue);vertical-align:text-bottom;width:2px;height:16px;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.msg-body [data-streamdown=table-wrapper],.msg-body [data-streamdown=code-block],.msg-body [data-streamdown=mermaid-block]{background:0 0!important;border:0!important;border-radius:0!important;overflow:visible!important}.msg-body [data-streamdown=table-wrapper]{flex-direction:column;gap:6px;margin:14px 0;padding:0;display:flex;position:relative}.msg-body [data-streamdown=table-wrapper]>div:first-child{z-index:5;justify-content:flex-end;align-items:center;gap:4px;min-height:32px;padding:0;position:relative;display:flex!important}.msg-body [data-streamdown=table-wrapper]>div:nth-child(2){border:1px solid var(--border-default)!important;border-radius:var(--radius-lg)!important;overflow:auto!important}.msg-body [data-streamdown=table-wrapper]>div:first-child>div,.msg-body [data-streamdown=code-block-actions],.msg-body [data-streamdown=mermaid-block-actions]{box-shadow:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:center;align-items:center;gap:4px;padding:2px;display:inline-flex;border:1px solid var(--border-default)!important;border-radius:var(--radius)!important;background:0 0!important}.msg-body [data-streamdown=table-wrapper] button,.msg-body [data-streamdown=code-block] button,.msg-body [data-streamdown=mermaid-block] button{cursor:pointer;border-radius:var(--radius-sm)!important;width:28px!important;min-width:28px!important;height:28px!important;color:var(--text-secondary)!important;white-space:nowrap!important;background:0 0!important;border:0!important;justify-content:center!important;align-items:center!important;gap:0!important;padding:0!important;font-size:0!important;line-height:1!important;display:inline-flex!important}.msg-body [data-streamdown=table-wrapper] button svg,.msg-body [data-streamdown=code-block] button svg,.msg-body [data-streamdown=mermaid-block] button svg{flex:none!important;width:16px!important;height:16px!important}.msg-body [data-streamdown=table-wrapper] button:hover,.msg-body [data-streamdown=code-block] button:hover,.msg-body [data-streamdown=mermaid-block] button:hover{background:var(--bg-hover)!important;color:var(--text-primary)!important}.msg-body [data-streamdown=table-wrapper] [class*=absolute][class*=top-full],.msg-body [data-streamdown=mermaid-block] [class*=absolute][class*=top-full]{z-index:40!important;border:1px solid var(--border-default)!important;border-radius:var(--radius-lg)!important;background:var(--bg-primary)!important;min-width:148px!important;box-shadow:var(--shadow-default)!important;display:grid!important;top:calc(100% + 4px)!important;right:0!important;overflow:hidden!important}.msg-body [data-streamdown=table-wrapper] [class*=absolute][class*=top-full] button,.msg-body [data-streamdown=mermaid-block] [class*=absolute][class*=top-full] button{width:100%!important;min-width:100%!important;height:34px!important;color:var(--text-primary)!important;text-align:left!important;border-radius:0!important;justify-content:flex-start!important;padding:0 12px!important;font-size:13px!important}.msg-body [data-streamdown*=fullscreen],.msg-body [title*=fullscreen i],.msg-body [aria-label*=fullscreen i],.msg-body [data-streamdown=image-wrapper] button,.msg-body [data-streamdown=code-block-actions] [title*=download i],.msg-body [data-streamdown=code-block-actions] [aria-label*=download i],.msg-body [data-streamdown=mermaid-block-actions] [title*=download i],.msg-body [data-streamdown=mermaid-block-actions] [aria-label*=download i]{display:none!important}.msg-body [data-streamdown=code-block]{flex-direction:column;gap:0;display:flex;position:relative;margin:14px 0!important;padding:0!important}.msg-body [data-streamdown=code-block-header]{justify-content:space-between;align-items:center;min-height:34px!important;color:var(--text-muted)!important;padding:0 4px 0 0!important;display:flex!important}.msg-body [data-streamdown=code-block-header] span{text-transform:lowercase;color:var(--text-muted);margin-left:1px;font-family:var(--font-mono)!important;font-size:12px!important}.msg-body [data-streamdown=code-block]>div:nth-child(2):has([data-streamdown=code-block-actions]){z-index:6!important;pointer-events:auto!important;height:auto!important;margin:0!important;position:absolute!important;top:3px!important;right:0!important}.msg-body [data-streamdown=mermaid-block]>div:has([data-streamdown=mermaid-block-actions]){pointer-events:auto!important;position:absolute!important;top:3px!important;right:0!important}.msg-body [data-streamdown=code-block-body]{border:1px solid var(--border-default)!important;border-radius:var(--radius-lg)!important;background:0 0!important;margin-top:8px!important;overflow-x:auto!important}.msg-body [data-streamdown=code-block-body] pre{font-family:var(--font-mono)!important;background:0 0!important;margin:0!important;padding:12px 14px!important;font-size:14px!important;line-height:1.6!important}.msg-body [data-streamdown=code-block-body] code{white-space:pre!important;min-width:max-content!important;font-family:var(--font-mono)!important;display:block!important}.msg-body [data-streamdown=code-block-body] code>span{white-space:pre!important;display:block!important}.msg-body [data-streamdown=code-block-body] code>span:before{content:none!important;display:none!important}[data-theme=light] .msg-body [data-streamdown=code-block-body] span[style*=--shiki-light]{color:var(--shiki-light)!important}[data-theme=dark] .msg-body [data-streamdown=code-block-body] span[style*=--shiki-dark]{color:var(--shiki-dark)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}