codemini-cli 0.4.7 → 0.4.9

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 (325) hide show
  1. package/README.md +103 -1
  2. package/codemini-web/dist/assets/abap-BRbAAyvE.js +1 -0
  3. package/codemini-web/dist/assets/actionscript-3-Cj-0sM4g.js +1 -0
  4. package/codemini-web/dist/assets/ada-DhEA_nP5.js +1 -0
  5. package/codemini-web/dist/assets/andromeeda-CWmR-N6V.js +1 -0
  6. package/codemini-web/dist/assets/angular-html-Cde9qVP5.js +1 -0
  7. package/codemini-web/dist/assets/angular-ts-DefScAWP.js +1 -0
  8. package/codemini-web/dist/assets/apache-D5R2GKIs.js +1 -0
  9. package/codemini-web/dist/assets/apex-Qu8W4hal.js +1 -0
  10. package/codemini-web/dist/assets/apl-w753UHCW.js +1 -0
  11. package/codemini-web/dist/assets/applescript-CBey3ErE.js +1 -0
  12. package/codemini-web/dist/assets/ara-CRKnUAN1.js +1 -0
  13. package/codemini-web/dist/assets/asciidoc-1KYZEB6-.js +1 -0
  14. package/codemini-web/dist/assets/asm-DAaViY0U.js +1 -0
  15. package/codemini-web/dist/assets/astro-DBA9Da7s.js +1 -0
  16. package/codemini-web/dist/assets/aurora-x-LPpmXm4i.js +1 -0
  17. package/codemini-web/dist/assets/awk-ButuPTaW.js +1 -0
  18. package/codemini-web/dist/assets/ayu-dark-Dv4ngVMP.js +1 -0
  19. package/codemini-web/dist/assets/ayu-light-CxeOePuA.js +1 -0
  20. package/codemini-web/dist/assets/ayu-mirage-i2YLXKmY.js +1 -0
  21. package/codemini-web/dist/assets/ballerina-DodmBVwR.js +1 -0
  22. package/codemini-web/dist/assets/bat-jA-YqDhG.js +1 -0
  23. package/codemini-web/dist/assets/beancount-BCkjWTs-.js +1 -0
  24. package/codemini-web/dist/assets/berry-DjEHm1kC.js +1 -0
  25. package/codemini-web/dist/assets/bibtex-aOfmXHFj.js +1 -0
  26. package/codemini-web/dist/assets/bicep-BZLx0b6B.js +1 -0
  27. package/codemini-web/dist/assets/bird2-Bs7YDhA3.js +1 -0
  28. package/codemini-web/dist/assets/blade-B-u5p0Rp.js +1 -0
  29. package/codemini-web/dist/assets/bsl-CPV9KqsG.js +1 -0
  30. package/codemini-web/dist/assets/c-Bv0tI3pq.js +1 -0
  31. package/codemini-web/dist/assets/c3-BDcFIiRd.js +1 -0
  32. package/codemini-web/dist/assets/cadence-DaglWUgA.js +1 -0
  33. package/codemini-web/dist/assets/cairo-CyiRuu7R.js +1 -0
  34. package/codemini-web/dist/assets/catppuccin-frappe-CSAC76is.js +1 -0
  35. package/codemini-web/dist/assets/catppuccin-latte-Jt6sqtds.js +1 -0
  36. package/codemini-web/dist/assets/catppuccin-macchiato-HM96_05s.js +1 -0
  37. package/codemini-web/dist/assets/catppuccin-mocha-CXgIAGBL.js +1 -0
  38. package/codemini-web/dist/assets/clarity-DS5YLe8G.js +1 -0
  39. package/codemini-web/dist/assets/clojure-BVGPdaE2.js +1 -0
  40. package/codemini-web/dist/assets/cmake-CCC7tP43.js +1 -0
  41. package/codemini-web/dist/assets/cobol-CkQrskif.js +1 -0
  42. package/codemini-web/dist/assets/codeowners-DXhoR5Ap.js +1 -0
  43. package/codemini-web/dist/assets/codeql-BGjlu3KC.js +1 -0
  44. package/codemini-web/dist/assets/coffee-rY-gkJy7.js +1 -0
  45. package/codemini-web/dist/assets/common-lisp-BE6wRQeA.js +1 -0
  46. package/codemini-web/dist/assets/coq-CRT8yML1.js +1 -0
  47. package/codemini-web/dist/assets/cpp-Bw-qV0P6.js +1 -0
  48. package/codemini-web/dist/assets/crystal-Dh09vXLx.js +1 -0
  49. package/codemini-web/dist/assets/csharp-Ca2kU4Te.js +1 -0
  50. package/codemini-web/dist/assets/css-BTi88BmP.js +1 -0
  51. package/codemini-web/dist/assets/csv-DUpZC5ZD.js +1 -0
  52. package/codemini-web/dist/assets/cue-DlXQ7arx.js +1 -0
  53. package/codemini-web/dist/assets/cypher-D6dhuZbo.js +1 -0
  54. package/codemini-web/dist/assets/d-BUgyoY6k.js +1 -0
  55. package/codemini-web/dist/assets/dark-plus-DNkJKrcZ.js +1 -0
  56. package/codemini-web/dist/assets/dart-Czrjv-nr.js +1 -0
  57. package/codemini-web/dist/assets/dax-sEzq00Tq.js +1 -0
  58. package/codemini-web/dist/assets/desktop-3VGbzlmJ.js +1 -0
  59. package/codemini-web/dist/assets/diff-D4HSRbRn.js +1 -0
  60. package/codemini-web/dist/assets/docker-DkLGgDMo.js +1 -0
  61. package/codemini-web/dist/assets/dotenv-BWp1FaLo.js +1 -0
  62. package/codemini-web/dist/assets/dracula-Donvxzd6.js +1 -0
  63. package/codemini-web/dist/assets/dracula-soft-BqL-kkUg.js +1 -0
  64. package/codemini-web/dist/assets/dream-maker-DtLD6KM3.js +1 -0
  65. package/codemini-web/dist/assets/edge-CCRtknu5.js +1 -0
  66. package/codemini-web/dist/assets/elixir-5EYbFEoC.js +1 -0
  67. package/codemini-web/dist/assets/elm-Cezz_HNz.js +1 -0
  68. package/codemini-web/dist/assets/emacs-lisp-D4W-_rAk.js +1 -0
  69. package/codemini-web/dist/assets/erb-C6pPz4fX.js +1 -0
  70. package/codemini-web/dist/assets/erlang-BC8wryba.js +1 -0
  71. package/codemini-web/dist/assets/everforest-dark-pZNhY4MK.js +1 -0
  72. package/codemini-web/dist/assets/everforest-light-BijKClkf.js +1 -0
  73. package/codemini-web/dist/assets/fennel-Cd-BhZ0S.js +1 -0
  74. package/codemini-web/dist/assets/fish-CpsjJ6FK.js +1 -0
  75. package/codemini-web/dist/assets/fluent-D1peBFgx.js +1 -0
  76. package/codemini-web/dist/assets/fortran-fixed-form-CyrImzNA.js +1 -0
  77. package/codemini-web/dist/assets/fortran-free-form-CIAQqF5W.js +1 -0
  78. package/codemini-web/dist/assets/fsharp-OCW_PZ4J.js +1 -0
  79. package/codemini-web/dist/assets/gdresource-Cl3bohRI.js +1 -0
  80. package/codemini-web/dist/assets/gdscript-B_XVILZe.js +1 -0
  81. package/codemini-web/dist/assets/gdshader-BOrkFM_X.js +1 -0
  82. package/codemini-web/dist/assets/genie-BE7nKhIq.js +1 -0
  83. package/codemini-web/dist/assets/gherkin-DzGJhdqS.js +1 -0
  84. package/codemini-web/dist/assets/git-commit-DJZpdBwB.js +1 -0
  85. package/codemini-web/dist/assets/git-rebase-BJE30GTP.js +1 -0
  86. package/codemini-web/dist/assets/github-dark-BB9G20EV.js +1 -0
  87. package/codemini-web/dist/assets/github-dark-default-CBFNEU03.js +1 -0
  88. package/codemini-web/dist/assets/github-dark-dimmed-sQhEp72S.js +1 -0
  89. package/codemini-web/dist/assets/github-dark-high-contrast-C8GVvrcM.js +1 -0
  90. package/codemini-web/dist/assets/github-light-default-iyEXWnoa.js +1 -0
  91. package/codemini-web/dist/assets/github-light-high-contrast-DLnsZL7l.js +1 -0
  92. package/codemini-web/dist/assets/github-light-pT7U8Cnd.js +1 -0
  93. package/codemini-web/dist/assets/gleam-B9ISJjDl.js +1 -0
  94. package/codemini-web/dist/assets/glimmer-js-C4PTXfaW.js +1 -0
  95. package/codemini-web/dist/assets/glimmer-ts-Df1V6YK_.js +1 -0
  96. package/codemini-web/dist/assets/glsl-C8VPaAWs.js +1 -0
  97. package/codemini-web/dist/assets/gn-RQRMslrP.js +1 -0
  98. package/codemini-web/dist/assets/gnuplot-CfIGZWjt.js +1 -0
  99. package/codemini-web/dist/assets/go-BTh90-YS.js +1 -0
  100. package/codemini-web/dist/assets/graphql-WZCiqIl-.js +1 -0
  101. package/codemini-web/dist/assets/groovy-lvGC2zUz.js +1 -0
  102. package/codemini-web/dist/assets/gruvbox-dark-hard-CC38iqQ4.js +1 -0
  103. package/codemini-web/dist/assets/gruvbox-dark-medium-DaS0IqFN.js +1 -0
  104. package/codemini-web/dist/assets/gruvbox-dark-soft-C4niJipy.js +1 -0
  105. package/codemini-web/dist/assets/gruvbox-light-hard-DTfv4LmB.js +1 -0
  106. package/codemini-web/dist/assets/gruvbox-light-medium-m1VBpvsE.js +1 -0
  107. package/codemini-web/dist/assets/gruvbox-light-soft-CiE1IJdk.js +1 -0
  108. package/codemini-web/dist/assets/hack-zJL_tEH0.js +1 -0
  109. package/codemini-web/dist/assets/haml-qjVLLTZk.js +1 -0
  110. package/codemini-web/dist/assets/handlebars-B3RyMMk0.js +1 -0
  111. package/codemini-web/dist/assets/haskell-DdaZtXdd.js +1 -0
  112. package/codemini-web/dist/assets/haxe-Df79h8x1.js +1 -0
  113. package/codemini-web/dist/assets/hcl-BibREsa1.js +1 -0
  114. package/codemini-web/dist/assets/highlighted-body-OFNGDK62-DjZhmRtv.js +1 -0
  115. package/codemini-web/dist/assets/hjson-D-iSecYq.js +1 -0
  116. package/codemini-web/dist/assets/hlsl-CckLjo_3.js +1 -0
  117. package/codemini-web/dist/assets/horizon-BG-OH9yH.js +1 -0
  118. package/codemini-web/dist/assets/horizon-bright-CpoqdULz.js +1 -0
  119. package/codemini-web/dist/assets/houston-C8DdNIgg.js +1 -0
  120. package/codemini-web/dist/assets/html-DP-V-rfg.js +1 -0
  121. package/codemini-web/dist/assets/html-derivative-DB9UhNDN.js +1 -0
  122. package/codemini-web/dist/assets/http-Deln4Vyb.js +1 -0
  123. package/codemini-web/dist/assets/hurl-CYSuhGkj.js +1 -0
  124. package/codemini-web/dist/assets/hxml-BmF7ngDz.js +1 -0
  125. package/codemini-web/dist/assets/hy-6acR1htR.js +1 -0
  126. package/codemini-web/dist/assets/imba-I9bJJvhi.js +1 -0
  127. package/codemini-web/dist/assets/index-Boi36rz_.css +2 -0
  128. package/codemini-web/dist/assets/index-CqDOO9gZ.js +206 -0
  129. package/codemini-web/dist/assets/ini-ovi-wMtM.js +1 -0
  130. package/codemini-web/dist/assets/java-X0I2c5Az.js +1 -0
  131. package/codemini-web/dist/assets/javascript-WC6XFf_S.js +1 -0
  132. package/codemini-web/dist/assets/jinja-BcRTlqOI.js +1 -0
  133. package/codemini-web/dist/assets/jison-DuNOGix6.js +1 -0
  134. package/codemini-web/dist/assets/json-CmuSmrUv.js +1 -0
  135. package/codemini-web/dist/assets/json5-JNG5kh3j.js +1 -0
  136. package/codemini-web/dist/assets/jsonc-Bo6bgSpa.js +1 -0
  137. package/codemini-web/dist/assets/jsonl-eDmbsRcr.js +1 -0
  138. package/codemini-web/dist/assets/jsonnet-BrmnmEy9.js +1 -0
  139. package/codemini-web/dist/assets/jssm-C-QfdDgD.js +1 -0
  140. package/codemini-web/dist/assets/jsx-Bl4e1-KE.js +1 -0
  141. package/codemini-web/dist/assets/julia-Cqc1ADyw.js +1 -0
  142. package/codemini-web/dist/assets/just-O9z-zIlY.js +1 -0
  143. package/codemini-web/dist/assets/kanagawa-dragon-Dc8jzBf8.js +1 -0
  144. package/codemini-web/dist/assets/kanagawa-lotus-DglQpAHb.js +1 -0
  145. package/codemini-web/dist/assets/kanagawa-wave-CTxJC692.js +1 -0
  146. package/codemini-web/dist/assets/kdl-CPujEk7a.js +1 -0
  147. package/codemini-web/dist/assets/kotlin-GNGS6f4G.js +1 -0
  148. package/codemini-web/dist/assets/kusto-ByPWIc1b.js +1 -0
  149. package/codemini-web/dist/assets/laserwave-BLDq6SCM.js +1 -0
  150. package/codemini-web/dist/assets/latex-BEPTKliI.js +1 -0
  151. package/codemini-web/dist/assets/lean-CQ4oht2M.js +1 -0
  152. package/codemini-web/dist/assets/less-DgluPI4Z.js +1 -0
  153. package/codemini-web/dist/assets/light-plus-Ce6vIMrA.js +1 -0
  154. package/codemini-web/dist/assets/liquid-BK2PyMjt.js +1 -0
  155. package/codemini-web/dist/assets/llvm-C_Bk8N51.js +1 -0
  156. package/codemini-web/dist/assets/log-Cqyx7kYB.js +1 -0
  157. package/codemini-web/dist/assets/logo-BMyACSNp.js +1 -0
  158. package/codemini-web/dist/assets/lua-BroxvhVt.js +1 -0
  159. package/codemini-web/dist/assets/luau-Dw3qkd4h.js +1 -0
  160. package/codemini-web/dist/assets/make-DRoG6w-e.js +1 -0
  161. package/codemini-web/dist/assets/markdown-DMIvNSB1.js +1 -0
  162. package/codemini-web/dist/assets/marko-CTEKS39A.js +1 -0
  163. package/codemini-web/dist/assets/material-theme-D1yzOeFY.js +1 -0
  164. package/codemini-web/dist/assets/material-theme-darker-DhWqiNtj.js +1 -0
  165. package/codemini-web/dist/assets/material-theme-lighter-PKoq0Soa.js +1 -0
  166. package/codemini-web/dist/assets/material-theme-ocean-TtH-ZZAj.js +1 -0
  167. package/codemini-web/dist/assets/material-theme-palenight-DPEAidnA.js +1 -0
  168. package/codemini-web/dist/assets/matlab-Buftnej6.js +1 -0
  169. package/codemini-web/dist/assets/mdc-BOaCYzzL.js +1 -0
  170. package/codemini-web/dist/assets/mdx-COL7Vpwq.js +1 -0
  171. package/codemini-web/dist/assets/mermaid-GHXKKRXX-frRIem48.js +1 -0
  172. package/codemini-web/dist/assets/mermaid-tvyj1ZQ2.js +1 -0
  173. package/codemini-web/dist/assets/min-dark-D66g901Q.js +1 -0
  174. package/codemini-web/dist/assets/min-light-CMnDj2iG.js +1 -0
  175. package/codemini-web/dist/assets/mipsasm-C6fvALrw.js +1 -0
  176. package/codemini-web/dist/assets/mojo-B3qnM1a8.js +1 -0
  177. package/codemini-web/dist/assets/monokai-DCoxt20T.js +1 -0
  178. package/codemini-web/dist/assets/moonbit-Cjo3d0oi.js +1 -0
  179. package/codemini-web/dist/assets/move-BZSDQnwS.js +1 -0
  180. package/codemini-web/dist/assets/narrat-DY5cg5OF.js +1 -0
  181. package/codemini-web/dist/assets/nextflow-Cto1mpL3.js +1 -0
  182. package/codemini-web/dist/assets/nextflow-groovy-D1X5Yd05.js +1 -0
  183. package/codemini-web/dist/assets/nginx-Da_Uewgc.js +1 -0
  184. package/codemini-web/dist/assets/night-owl-DuMFo77c.js +1 -0
  185. package/codemini-web/dist/assets/night-owl-light-DihOYNub.js +1 -0
  186. package/codemini-web/dist/assets/nim-BZyx58NM.js +1 -0
  187. package/codemini-web/dist/assets/nix-C2G-gZoY.js +1 -0
  188. package/codemini-web/dist/assets/nord-CqZqLQaJ.js +1 -0
  189. package/codemini-web/dist/assets/nushell-S11HUHTG.js +1 -0
  190. package/codemini-web/dist/assets/objective-c-D9GKvYFi.js +1 -0
  191. package/codemini-web/dist/assets/objective-cpp-SqrtXFXh.js +1 -0
  192. package/codemini-web/dist/assets/ocaml-C_PTi_Pz.js +1 -0
  193. package/codemini-web/dist/assets/odin-BWpZDKBG.js +1 -0
  194. package/codemini-web/dist/assets/one-dark-pro-DpWTHpwg.js +1 -0
  195. package/codemini-web/dist/assets/one-light-Cu0d64Hp.js +1 -0
  196. package/codemini-web/dist/assets/openscad-BM4fjXzn.js +1 -0
  197. package/codemini-web/dist/assets/pascal-DYsRufgb.js +1 -0
  198. package/codemini-web/dist/assets/perl-BW8t13Xq.js +1 -0
  199. package/codemini-web/dist/assets/php-Cq5FOhfR.js +1 -0
  200. package/codemini-web/dist/assets/pkl-Djf8ANrI.js +1 -0
  201. package/codemini-web/dist/assets/plastic-CmjIC4JL.js +1 -0
  202. package/codemini-web/dist/assets/plsql-B1bmZxUF.js +1 -0
  203. package/codemini-web/dist/assets/po-BvnTR3_f.js +1 -0
  204. package/codemini-web/dist/assets/poimandres-BTndTogr.js +1 -0
  205. package/codemini-web/dist/assets/polar-CAj5SJyd.js +1 -0
  206. package/codemini-web/dist/assets/postcss-DrpvRGGG.js +1 -0
  207. package/codemini-web/dist/assets/powerquery-I1Ei5hrS.js +1 -0
  208. package/codemini-web/dist/assets/powershell-Coc0WruX.js +1 -0
  209. package/codemini-web/dist/assets/prisma-Ojgxt2lx.js +1 -0
  210. package/codemini-web/dist/assets/prolog-C1UOAv4v.js +1 -0
  211. package/codemini-web/dist/assets/proto-D07RTuB5.js +1 -0
  212. package/codemini-web/dist/assets/pug-B4WHazil.js +1 -0
  213. package/codemini-web/dist/assets/puppet-D_zyrMo2.js +1 -0
  214. package/codemini-web/dist/assets/purescript-CV-DVmZj.js +1 -0
  215. package/codemini-web/dist/assets/python-DcnbpNOV.js +1 -0
  216. package/codemini-web/dist/assets/qml-DWxWu28U.js +1 -0
  217. package/codemini-web/dist/assets/qmldir-BBNnU9RJ.js +1 -0
  218. package/codemini-web/dist/assets/qss-CC0PKRbL.js +1 -0
  219. package/codemini-web/dist/assets/r-B4lG5syH.js +1 -0
  220. package/codemini-web/dist/assets/racket-Cbwns2Cq.js +1 -0
  221. package/codemini-web/dist/assets/raku-CeV6tH_x.js +1 -0
  222. package/codemini-web/dist/assets/razor-CQPYUgex.js +1 -0
  223. package/codemini-web/dist/assets/red-CVEaJbMR.js +1 -0
  224. package/codemini-web/dist/assets/reg-C_WE1pkC.js +1 -0
  225. package/codemini-web/dist/assets/regexp-da3KYCEG.js +1 -0
  226. package/codemini-web/dist/assets/rel-CpHQF4b7.js +1 -0
  227. package/codemini-web/dist/assets/riscv-Co5eiPIZ.js +1 -0
  228. package/codemini-web/dist/assets/rolldown-runtime-S-ySWqyJ.js +1 -0
  229. package/codemini-web/dist/assets/ron-CgTit1dG.js +1 -0
  230. package/codemini-web/dist/assets/rose-pine-BDTwvYHf.js +1 -0
  231. package/codemini-web/dist/assets/rose-pine-dawn-CAIk_wLV.js +1 -0
  232. package/codemini-web/dist/assets/rose-pine-moon-C5gdiznP.js +1 -0
  233. package/codemini-web/dist/assets/rosmsg-C0tpzWlc.js +1 -0
  234. package/codemini-web/dist/assets/rst-B-OS2pa5.js +1 -0
  235. package/codemini-web/dist/assets/ruby-BM15fmxz.js +1 -0
  236. package/codemini-web/dist/assets/rust-BWAfVMY4.js +1 -0
  237. package/codemini-web/dist/assets/sas-DYNukvU9.js +1 -0
  238. package/codemini-web/dist/assets/sass-MovLey2R.js +1 -0
  239. package/codemini-web/dist/assets/scala-C2w7y2mZ.js +1 -0
  240. package/codemini-web/dist/assets/scheme-Bf85FNnm.js +1 -0
  241. package/codemini-web/dist/assets/scss-C0BQ8YVM.js +1 -0
  242. package/codemini-web/dist/assets/sdbl-DoQ_zDzo.js +1 -0
  243. package/codemini-web/dist/assets/shaderlab-TbUUdmUb.js +1 -0
  244. package/codemini-web/dist/assets/shellscript-KUJZnuCi.js +1 -0
  245. package/codemini-web/dist/assets/shellsession-BeWGuVoR.js +1 -0
  246. package/codemini-web/dist/assets/slack-dark-BnOYKTBJ.js +1 -0
  247. package/codemini-web/dist/assets/slack-ochin-43udxtUg.js +1 -0
  248. package/codemini-web/dist/assets/smalltalk-Mlf5-xbr.js +1 -0
  249. package/codemini-web/dist/assets/snazzy-light-kw-pZEiM.js +1 -0
  250. package/codemini-web/dist/assets/solarized-dark-BDezFa9V.js +1 -0
  251. package/codemini-web/dist/assets/solarized-light-CkoenhS2.js +1 -0
  252. package/codemini-web/dist/assets/solidity-DYHGECBw.js +1 -0
  253. package/codemini-web/dist/assets/soy-C6D0Ibo9.js +1 -0
  254. package/codemini-web/dist/assets/sparql-DIFvSn1n.js +1 -0
  255. package/codemini-web/dist/assets/splunk-DOdklC0I.js +1 -0
  256. package/codemini-web/dist/assets/sql-CZAMrWdL.js +1 -0
  257. package/codemini-web/dist/assets/ssh-config-DwwFW7AS.js +1 -0
  258. package/codemini-web/dist/assets/stata-C5mLa_ER.js +1 -0
  259. package/codemini-web/dist/assets/stylus-BO6mlOab.js +1 -0
  260. package/codemini-web/dist/assets/surrealql-DyoUfV6n.js +1 -0
  261. package/codemini-web/dist/assets/svelte-DJ-0FpL2.js +1 -0
  262. package/codemini-web/dist/assets/swift-D9A08YU9.js +1 -0
  263. package/codemini-web/dist/assets/synthwave-84-C69NN2j9.js +1 -0
  264. package/codemini-web/dist/assets/system-verilog-DjR3sN6w.js +1 -0
  265. package/codemini-web/dist/assets/systemd-CJWuVSJU.js +1 -0
  266. package/codemini-web/dist/assets/talonscript-CXqq0wX-.js +1 -0
  267. package/codemini-web/dist/assets/tasl-GVNf7pB7.js +1 -0
  268. package/codemini-web/dist/assets/tcl-DNlfRSl5.js +1 -0
  269. package/codemini-web/dist/assets/templ-7Bvm-rei.js +1 -0
  270. package/codemini-web/dist/assets/terraform-DUK0FOOj.js +1 -0
  271. package/codemini-web/dist/assets/tex-ezg8IclB.js +1 -0
  272. package/codemini-web/dist/assets/tokyo-night-DWTtuXS3.js +1 -0
  273. package/codemini-web/dist/assets/toml-X5n3zjEH.js +1 -0
  274. package/codemini-web/dist/assets/ts-tags-BfuR6EQ0.js +1 -0
  275. package/codemini-web/dist/assets/tsv-Bqs_rchc.js +1 -0
  276. package/codemini-web/dist/assets/tsx-CfyUE2pW.js +1 -0
  277. package/codemini-web/dist/assets/turtle-BsUuoeVK.js +1 -0
  278. package/codemini-web/dist/assets/twig-_uxJ-QmX.js +1 -0
  279. package/codemini-web/dist/assets/typescript-C6LvTgbf.js +1 -0
  280. package/codemini-web/dist/assets/typespec-8nkhqWz6.js +1 -0
  281. package/codemini-web/dist/assets/typst-CPL77SDw.js +1 -0
  282. package/codemini-web/dist/assets/v-CoJD3IPx.js +1 -0
  283. package/codemini-web/dist/assets/vala-C42IfotU.js +1 -0
  284. package/codemini-web/dist/assets/vb-CVMKTK26.js +1 -0
  285. package/codemini-web/dist/assets/verilog-P63PhzSt.js +1 -0
  286. package/codemini-web/dist/assets/vesper-BGr95374.js +1 -0
  287. package/codemini-web/dist/assets/vhdl-2WwUdgX8.js +1 -0
  288. package/codemini-web/dist/assets/viml-CGPGWJA6.js +1 -0
  289. package/codemini-web/dist/assets/vitesse-black-cI0k84-I.js +1 -0
  290. package/codemini-web/dist/assets/vitesse-dark-SouM0FMW.js +1 -0
  291. package/codemini-web/dist/assets/vitesse-light-WiCy6lDO.js +1 -0
  292. package/codemini-web/dist/assets/vue-DkOBu49o.js +1 -0
  293. package/codemini-web/dist/assets/vue-html-Bx2Sgp8M.js +1 -0
  294. package/codemini-web/dist/assets/vue-vine-veyFk6GJ.js +1 -0
  295. package/codemini-web/dist/assets/vyper-DP_vqZO9.js +1 -0
  296. package/codemini-web/dist/assets/wasm-Db7VBw0n.js +1 -0
  297. package/codemini-web/dist/assets/wasm-DiIFv9DE.js +1 -0
  298. package/codemini-web/dist/assets/wenyan-ZEcjghA1.js +1 -0
  299. package/codemini-web/dist/assets/wgsl-CdusuPLe.js +1 -0
  300. package/codemini-web/dist/assets/wikitext-CBIB6hmW.js +1 -0
  301. package/codemini-web/dist/assets/wit-ZhUbVeze.js +1 -0
  302. package/codemini-web/dist/assets/wolfram-HyMOyERF.js +1 -0
  303. package/codemini-web/dist/assets/xml-BkdunjRC.js +1 -0
  304. package/codemini-web/dist/assets/xsl-C66i1pDH.js +1 -0
  305. package/codemini-web/dist/assets/yaml-D_uvhEF7.js +1 -0
  306. package/codemini-web/dist/assets/zenscript-C6ZuzgrL.js +1 -0
  307. package/codemini-web/dist/assets/zig-Do2h8XKj.js +1 -0
  308. package/codemini-web/dist/index.html +21 -0
  309. package/codemini-web/lib/approval-manager.js +32 -0
  310. package/codemini-web/lib/runtime-bridge.js +518 -0
  311. package/codemini-web/server.js +846 -0
  312. package/deployment.md +5 -5
  313. package/package.json +6 -1
  314. package/src/cli.js +17 -6
  315. package/src/commands/chat.js +8 -2
  316. package/src/commands/run.js +9 -3
  317. package/src/commands/skill.js +1 -1
  318. package/src/commands/web.js +57 -0
  319. package/src/core/agent-loop.js +45 -14
  320. package/src/core/chat-runtime.js +602 -81
  321. package/src/core/config-store.js +9 -2
  322. package/src/core/fff-adapter.js +1 -1
  323. package/src/core/session-store.js +104 -9
  324. package/src/core/soul.js +13 -0
  325. package/templates/project-requirements/report-shell.html +2 -1
@@ -24,6 +24,7 @@ const DEFAULT_CONFIG = {
24
24
  },
25
25
  model: {
26
26
  name: 'gpt-4.1-mini',
27
+ fast_name: '',
27
28
  max_context_tokens: 202752
28
29
  },
29
30
  context: {
@@ -36,7 +37,7 @@ const DEFAULT_CONFIG = {
36
37
  prompt_budget_audit: false
37
38
  },
38
39
  execution: {
39
- mode: 'auto',
40
+ mode: 'normal',
40
41
  always_allow_tools: [
41
42
  'read',
42
43
  'grep',
@@ -140,9 +141,15 @@ function normalizePolicyLists(config) {
140
141
  next.shell = next.shell || {};
141
142
  next.shell.default = normalizeShellName(next.shell.default);
142
143
  next.execution = next.execution || {};
144
+ next.model = next.model || {};
145
+ if (typeof next.model.fast_name !== 'string' && typeof next.model.lite_name === 'string') {
146
+ next.model.fast_name = next.model.lite_name;
147
+ }
148
+ next.model.name = String(next.model.name || DEFAULT_CONFIG.model.name).trim() || DEFAULT_CONFIG.model.name;
149
+ next.model.fast_name = String(next.model.fast_name || '').trim();
143
150
  next.execution.mode = ['auto', 'normal', 'plan'].includes(String(next.execution.mode || '').toLowerCase())
144
151
  ? String(next.execution.mode).toLowerCase()
145
- : 'auto';
152
+ : 'normal';
146
153
  const rawTools = Array.isArray(next.execution.always_allow_tools)
147
154
  ? next.execution.always_allow_tools
148
155
  : [];
@@ -111,7 +111,7 @@ class FffMcpClient {
111
111
  capabilities: {},
112
112
  clientInfo: {
113
113
  name: 'codemini-cli',
114
- version: '0.4.7'
114
+ version: '0.4.9'
115
115
  }
116
116
  });
117
117
  this.sendNotification('notifications/initialized', {});
@@ -7,6 +7,7 @@ import { normalizeTodos } from './todo-state.js';
7
7
  const ALLOWED_ROLES = new Set(['system', 'user', 'assistant', 'tool']);
8
8
  const SESSION_LEGACY_EXT = '.json';
9
9
  const SESSION_JSONL_EXT = '.jsonl';
10
+ const DEFAULT_SESSION_TITLE = '新会话';
10
11
 
11
12
  function createSessionId() {
12
13
  const ts = new Date().toISOString().replace(/[:.]/g, '-');
@@ -20,7 +21,7 @@ function sanitizeToolCall(tc, index) {
20
21
  const fnArgsRaw = tc?.function?.arguments ?? tc?.arguments ?? '{}';
21
22
  const fnArgs = typeof fnArgsRaw === 'string' ? fnArgsRaw : JSON.stringify(fnArgsRaw);
22
23
  if (!fnName) return null;
23
- return {
24
+ const out = {
24
25
  id,
25
26
  type: 'function',
26
27
  function: {
@@ -28,6 +29,32 @@ function sanitizeToolCall(tc, index) {
28
29
  arguments: fnArgs
29
30
  }
30
31
  };
32
+ if (Number.isFinite(Number(tc?.durationMs))) out.durationMs = Number(tc.durationMs);
33
+ if (typeof tc?.summary === 'string' && tc.summary.trim()) out.summary = tc.summary.trim();
34
+ if (typeof tc?.status === 'string' && tc.status.trim()) out.status = tc.status.trim();
35
+ return out;
36
+ }
37
+
38
+ function normalizeWhitespace(value) {
39
+ return String(value || '').replace(/\s+/g, ' ').trim();
40
+ }
41
+
42
+ function stripMarkdown(value) {
43
+ return normalizeWhitespace(value)
44
+ .replace(/```[\s\S]*?```/g, ' ')
45
+ .replace(/`([^`]*)`/g, '$1')
46
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
47
+ .replace(/^[#>*\-\d.\s]+/g, '')
48
+ .trim();
49
+ }
50
+
51
+ export function deriveSessionTitle(messages = []) {
52
+ const firstUser = Array.isArray(messages)
53
+ ? messages.find((msg) => msg?.role === 'user' && normalizeWhitespace(msg?.content))
54
+ : null;
55
+ const text = stripMarkdown(firstUser?.content || '');
56
+ if (!text) return DEFAULT_SESSION_TITLE;
57
+ return text.length > 48 ? `${text.slice(0, 45).trimEnd()}...` : text;
31
58
  }
32
59
 
33
60
  function sanitizeMessage(msg) {
@@ -41,7 +68,11 @@ function sanitizeMessage(msg) {
41
68
  content
42
69
  };
43
70
 
71
+ if (typeof msg?.model_content === 'string' && msg.model_content) out.model_content = msg.model_content;
44
72
  if (msg?.tool_call_id) out.tool_call_id = String(msg.tool_call_id);
73
+ if (Number.isFinite(Number(msg?.tool_duration_ms))) out.tool_duration_ms = Number(msg.tool_duration_ms);
74
+ if (typeof msg?.tool_summary === 'string' && msg.tool_summary.trim()) out.tool_summary = msg.tool_summary.trim();
75
+ if (typeof msg?.tool_status === 'string' && msg.tool_status.trim()) out.tool_status = msg.tool_status.trim();
45
76
  if (typeof msg?.name === 'string' && msg.name.trim()) out.name = msg.name.trim();
46
77
  if (typeof msg?.at === 'string' && msg.at.trim()) out.at = msg.at;
47
78
  if (typeof msg?.reasoning_content === 'string' && msg.reasoning_content) {
@@ -58,6 +89,15 @@ function sanitizeMessage(msg) {
58
89
  if (toolCalls.length > 0) out.tool_calls = toolCalls;
59
90
  }
60
91
 
92
+ if (Array.isArray(msg?.plan_transcript)) {
93
+ out.plan_transcript = msg.plan_transcript
94
+ .filter((entry) => entry && typeof entry === 'object')
95
+ .map((entry) => ({
96
+ ...entry,
97
+ segments: Array.isArray(entry.segments) ? entry.segments : []
98
+ }));
99
+ }
100
+
61
101
  return out;
62
102
  }
63
103
 
@@ -73,9 +113,13 @@ function sanitizeSession(session, fallbackId = '') {
73
113
  id,
74
114
  createdAt,
75
115
  updatedAt,
116
+ title: normalizeWhitespace(session?.title) || deriveSessionTitle(messages),
76
117
  messages
77
118
  };
78
119
 
120
+ if (typeof session?.projectDir === 'string' && session.projectDir.trim()) {
121
+ out.projectDir = session.projectDir.trim();
122
+ }
79
123
  if (session?.model) out.model = String(session.model);
80
124
  if (session?.mode) out.mode = String(session.mode);
81
125
  const normalizedPlan = normalizePlanState(session?.planState);
@@ -91,22 +135,40 @@ function sessionPathById(sessionId, ext = SESSION_JSONL_EXT) {
91
135
  return path.join(getSessionsDir(), `${sessionId}${ext}`);
92
136
  }
93
137
 
138
+ function isSafeSessionId(sessionId) {
139
+ return /^[A-Za-z0-9_.-]+$/.test(String(sessionId || ''));
140
+ }
141
+
94
142
  function sessionIdFromFileName(fileName) {
95
143
  if (fileName.endsWith(SESSION_JSONL_EXT)) return fileName.slice(0, -SESSION_JSONL_EXT.length);
96
144
  if (fileName.endsWith(SESSION_LEGACY_EXT)) return fileName.slice(0, -SESSION_LEGACY_EXT.length);
97
145
  return '';
98
146
  }
99
147
 
148
+ async function listSessionFiles() {
149
+ const dir = getSessionsDir();
150
+ await fs.mkdir(dir, { recursive: true });
151
+ const entries = await fs.readdir(dir, { withFileTypes: true });
152
+ return entries
153
+ .filter((e) => e.isFile() && (e.name.endsWith(SESSION_JSONL_EXT) || e.name.endsWith(SESSION_LEGACY_EXT)))
154
+ .map((e) => path.join(dir, e.name));
155
+ }
156
+
100
157
  function summarizeParsedSession(parsed, filePath) {
101
158
  const id = parsed.id || sessionIdFromFileName(path.basename(filePath));
102
159
  const updatedAt = parsed.updatedAt || parsed.createdAt || '';
103
160
  const latestMessage = Array.isArray(parsed.messages) ? parsed.messages.at(-1) : null;
104
161
  const preview = latestMessage?.content ? String(latestMessage.content).replace(/\s+/g, ' ').slice(0, 80) : '';
162
+ const messages = Array.isArray(parsed.messages) ? parsed.messages : [];
105
163
  return {
106
164
  id,
165
+ title: normalizeWhitespace(parsed.title) || deriveSessionTitle(messages),
107
166
  updatedAt,
108
167
  messageCount: Array.isArray(parsed.messages) ? parsed.messages.length : 0,
109
- preview
168
+ preview,
169
+ projectDir: typeof parsed.projectDir === 'string' ? parsed.projectDir : '',
170
+ model: typeof parsed.model === 'string' ? parsed.model : '',
171
+ mode: typeof parsed.mode === 'string' ? parsed.mode : ''
110
172
  };
111
173
  }
112
174
 
@@ -148,7 +210,7 @@ async function loadSessionPayload(sessionId) {
148
210
  }
149
211
  }
150
212
 
151
- export async function createSession() {
213
+ export async function createSession(projectDir = process.cwd()) {
152
214
  const sessionId = createSessionId();
153
215
  const dir = getSessionsDir();
154
216
  await fs.mkdir(dir, { recursive: true });
@@ -157,6 +219,8 @@ export async function createSession() {
157
219
  id: sessionId,
158
220
  createdAt: new Date().toISOString(),
159
221
  updatedAt: new Date().toISOString(),
222
+ title: DEFAULT_SESSION_TITLE,
223
+ projectDir: String(projectDir || process.cwd()),
160
224
  messages: []
161
225
  };
162
226
  await fs.writeFile(filePath, `${JSON.stringify(payload)}\n`, 'utf8');
@@ -185,12 +249,7 @@ export async function resolveSession(sessionId) {
185
249
  }
186
250
 
187
251
  export async function listSessions(limit = 30) {
188
- const dir = getSessionsDir();
189
- await fs.mkdir(dir, { recursive: true });
190
- const entries = await fs.readdir(dir, { withFileTypes: true });
191
- const files = entries
192
- .filter((e) => e.isFile() && (e.name.endsWith(SESSION_JSONL_EXT) || e.name.endsWith(SESSION_LEGACY_EXT)))
193
- .map((e) => path.join(dir, e.name));
252
+ const files = await listSessionFiles();
194
253
 
195
254
  const sessionsById = new Map();
196
255
  for (const file of files) {
@@ -212,6 +271,42 @@ export async function listSessions(limit = 30) {
212
271
  return sessions.filter((s) => Number(s.messageCount || 0) > 0).slice(0, limit);
213
272
  }
214
273
 
274
+ export async function deleteSession(sessionId) {
275
+ const id = String(sessionId || '').trim();
276
+ if (!id || !isSafeSessionId(id)) {
277
+ throw new Error('Invalid session id');
278
+ }
279
+
280
+ const files = await listSessionFiles();
281
+ const targets = new Set();
282
+ for (const file of files) {
283
+ const fileId = sessionIdFromFileName(path.basename(file));
284
+ if (fileId === id) {
285
+ targets.add(file);
286
+ continue;
287
+ }
288
+ try {
289
+ const parsed = file.endsWith(SESSION_JSONL_EXT) ? await loadLatestJsonlObject(file) : await tryReadJson(file);
290
+ if (String(parsed?.id || '').trim() === id) targets.add(file);
291
+ } catch {}
292
+ }
293
+
294
+ let removed = 0;
295
+ const fallbackTargets = [
296
+ sessionPathById(id, SESSION_JSONL_EXT),
297
+ sessionPathById(id, SESSION_LEGACY_EXT)
298
+ ];
299
+ for (const file of [...targets, ...fallbackTargets]) {
300
+ try {
301
+ await fs.unlink(file);
302
+ removed += 1;
303
+ } catch (error) {
304
+ if (error?.code !== 'ENOENT') throw error;
305
+ }
306
+ }
307
+ return { removed };
308
+ }
309
+
215
310
  export async function pruneSessions(policy = {}) {
216
311
  const maxSessions = Number(policy.max_sessions || 100);
217
312
  const retentionDays = Number(policy.retention_days || 30);
package/src/core/soul.js CHANGED
@@ -7,6 +7,12 @@ import { buildSystemPromptWithReplyLanguage } from './reply-language.js';
7
7
  const MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
8
8
  const BUNDLED_SOULS_DIR = path.resolve(MODULE_DIR, '..', '..', 'souls');
9
9
 
10
+ function getCustomSoulsDir() {
11
+ return path.join(getBaseConfigDir(), 'souls');
12
+ }
13
+
14
+ export { BUNDLED_SOULS_DIR, getCustomSoulsDir };
15
+
10
16
  function normalizeSoulName(value) {
11
17
  const name = String(value || '').trim().toLowerCase();
12
18
  return name || 'default';
@@ -32,6 +38,13 @@ export async function loadSoulPrompt(config = {}) {
32
38
  }
33
39
 
34
40
  const preset = normalizeSoulName(config?.soul?.preset);
41
+ // Check custom souls dir first, then bundled
42
+ const customPresetPath = path.join(getCustomSoulsDir(), `${preset}.md`);
43
+ try {
44
+ const content = await fs.readFile(customPresetPath, 'utf8');
45
+ const text = String(content || '').trim();
46
+ if (text) return `[Soul preset: ${preset}]\n${text}`;
47
+ } catch {}
35
48
  const presetPath = path.join(BUNDLED_SOULS_DIR, `${preset}.md`);
36
49
  try {
37
50
  const content = await fs.readFile(presetPath, 'utf8');
@@ -45,6 +45,7 @@
45
45
  padding: 48px min(6vw, 80px) 28px;
46
46
  border-bottom: 1px solid var(--line);
47
47
  background: var(--bg);
48
+ text-align: center;
48
49
  }
49
50
  h1, h2, h3, h4 { line-height: 1.25; color: var(--text); }
50
51
  h1 { margin: 0 0 8px; font-size: clamp(26px, 3.5vw, 38px); font-weight: 700; letter-spacing: -0.02em; }
@@ -56,6 +57,7 @@
56
57
  color: var(--text-secondary);
57
58
  font-size: 13px;
58
59
  display: flex;
60
+ justify-content: center;
59
61
  gap: 16px;
60
62
  flex-wrap: wrap;
61
63
  margin-top: 4px;
@@ -115,7 +117,6 @@
115
117
  nav a.active .nav-dot { background: var(--accent); }
116
118
  /* ── Main Content ── */
117
119
  main {
118
- max-width: 920px;
119
120
  padding: 8px min(5vw, 80px) 80px;
120
121
  }
121
122
  section {