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.
- package/README.md +103 -1
- package/codemini-web/dist/assets/abap-BRbAAyvE.js +1 -0
- package/codemini-web/dist/assets/actionscript-3-Cj-0sM4g.js +1 -0
- package/codemini-web/dist/assets/ada-DhEA_nP5.js +1 -0
- package/codemini-web/dist/assets/andromeeda-CWmR-N6V.js +1 -0
- package/codemini-web/dist/assets/angular-html-Cde9qVP5.js +1 -0
- package/codemini-web/dist/assets/angular-ts-DefScAWP.js +1 -0
- package/codemini-web/dist/assets/apache-D5R2GKIs.js +1 -0
- package/codemini-web/dist/assets/apex-Qu8W4hal.js +1 -0
- package/codemini-web/dist/assets/apl-w753UHCW.js +1 -0
- package/codemini-web/dist/assets/applescript-CBey3ErE.js +1 -0
- package/codemini-web/dist/assets/ara-CRKnUAN1.js +1 -0
- package/codemini-web/dist/assets/asciidoc-1KYZEB6-.js +1 -0
- package/codemini-web/dist/assets/asm-DAaViY0U.js +1 -0
- package/codemini-web/dist/assets/astro-DBA9Da7s.js +1 -0
- package/codemini-web/dist/assets/aurora-x-LPpmXm4i.js +1 -0
- package/codemini-web/dist/assets/awk-ButuPTaW.js +1 -0
- package/codemini-web/dist/assets/ayu-dark-Dv4ngVMP.js +1 -0
- package/codemini-web/dist/assets/ayu-light-CxeOePuA.js +1 -0
- package/codemini-web/dist/assets/ayu-mirage-i2YLXKmY.js +1 -0
- package/codemini-web/dist/assets/ballerina-DodmBVwR.js +1 -0
- package/codemini-web/dist/assets/bat-jA-YqDhG.js +1 -0
- package/codemini-web/dist/assets/beancount-BCkjWTs-.js +1 -0
- package/codemini-web/dist/assets/berry-DjEHm1kC.js +1 -0
- package/codemini-web/dist/assets/bibtex-aOfmXHFj.js +1 -0
- package/codemini-web/dist/assets/bicep-BZLx0b6B.js +1 -0
- package/codemini-web/dist/assets/bird2-Bs7YDhA3.js +1 -0
- package/codemini-web/dist/assets/blade-B-u5p0Rp.js +1 -0
- package/codemini-web/dist/assets/bsl-CPV9KqsG.js +1 -0
- package/codemini-web/dist/assets/c-Bv0tI3pq.js +1 -0
- package/codemini-web/dist/assets/c3-BDcFIiRd.js +1 -0
- package/codemini-web/dist/assets/cadence-DaglWUgA.js +1 -0
- package/codemini-web/dist/assets/cairo-CyiRuu7R.js +1 -0
- package/codemini-web/dist/assets/catppuccin-frappe-CSAC76is.js +1 -0
- package/codemini-web/dist/assets/catppuccin-latte-Jt6sqtds.js +1 -0
- package/codemini-web/dist/assets/catppuccin-macchiato-HM96_05s.js +1 -0
- package/codemini-web/dist/assets/catppuccin-mocha-CXgIAGBL.js +1 -0
- package/codemini-web/dist/assets/clarity-DS5YLe8G.js +1 -0
- package/codemini-web/dist/assets/clojure-BVGPdaE2.js +1 -0
- package/codemini-web/dist/assets/cmake-CCC7tP43.js +1 -0
- package/codemini-web/dist/assets/cobol-CkQrskif.js +1 -0
- package/codemini-web/dist/assets/codeowners-DXhoR5Ap.js +1 -0
- package/codemini-web/dist/assets/codeql-BGjlu3KC.js +1 -0
- package/codemini-web/dist/assets/coffee-rY-gkJy7.js +1 -0
- package/codemini-web/dist/assets/common-lisp-BE6wRQeA.js +1 -0
- package/codemini-web/dist/assets/coq-CRT8yML1.js +1 -0
- package/codemini-web/dist/assets/cpp-Bw-qV0P6.js +1 -0
- package/codemini-web/dist/assets/crystal-Dh09vXLx.js +1 -0
- package/codemini-web/dist/assets/csharp-Ca2kU4Te.js +1 -0
- package/codemini-web/dist/assets/css-BTi88BmP.js +1 -0
- package/codemini-web/dist/assets/csv-DUpZC5ZD.js +1 -0
- package/codemini-web/dist/assets/cue-DlXQ7arx.js +1 -0
- package/codemini-web/dist/assets/cypher-D6dhuZbo.js +1 -0
- package/codemini-web/dist/assets/d-BUgyoY6k.js +1 -0
- package/codemini-web/dist/assets/dark-plus-DNkJKrcZ.js +1 -0
- package/codemini-web/dist/assets/dart-Czrjv-nr.js +1 -0
- package/codemini-web/dist/assets/dax-sEzq00Tq.js +1 -0
- package/codemini-web/dist/assets/desktop-3VGbzlmJ.js +1 -0
- package/codemini-web/dist/assets/diff-D4HSRbRn.js +1 -0
- package/codemini-web/dist/assets/docker-DkLGgDMo.js +1 -0
- package/codemini-web/dist/assets/dotenv-BWp1FaLo.js +1 -0
- package/codemini-web/dist/assets/dracula-Donvxzd6.js +1 -0
- package/codemini-web/dist/assets/dracula-soft-BqL-kkUg.js +1 -0
- package/codemini-web/dist/assets/dream-maker-DtLD6KM3.js +1 -0
- package/codemini-web/dist/assets/edge-CCRtknu5.js +1 -0
- package/codemini-web/dist/assets/elixir-5EYbFEoC.js +1 -0
- package/codemini-web/dist/assets/elm-Cezz_HNz.js +1 -0
- package/codemini-web/dist/assets/emacs-lisp-D4W-_rAk.js +1 -0
- package/codemini-web/dist/assets/erb-C6pPz4fX.js +1 -0
- package/codemini-web/dist/assets/erlang-BC8wryba.js +1 -0
- package/codemini-web/dist/assets/everforest-dark-pZNhY4MK.js +1 -0
- package/codemini-web/dist/assets/everforest-light-BijKClkf.js +1 -0
- package/codemini-web/dist/assets/fennel-Cd-BhZ0S.js +1 -0
- package/codemini-web/dist/assets/fish-CpsjJ6FK.js +1 -0
- package/codemini-web/dist/assets/fluent-D1peBFgx.js +1 -0
- package/codemini-web/dist/assets/fortran-fixed-form-CyrImzNA.js +1 -0
- package/codemini-web/dist/assets/fortran-free-form-CIAQqF5W.js +1 -0
- package/codemini-web/dist/assets/fsharp-OCW_PZ4J.js +1 -0
- package/codemini-web/dist/assets/gdresource-Cl3bohRI.js +1 -0
- package/codemini-web/dist/assets/gdscript-B_XVILZe.js +1 -0
- package/codemini-web/dist/assets/gdshader-BOrkFM_X.js +1 -0
- package/codemini-web/dist/assets/genie-BE7nKhIq.js +1 -0
- package/codemini-web/dist/assets/gherkin-DzGJhdqS.js +1 -0
- package/codemini-web/dist/assets/git-commit-DJZpdBwB.js +1 -0
- package/codemini-web/dist/assets/git-rebase-BJE30GTP.js +1 -0
- package/codemini-web/dist/assets/github-dark-BB9G20EV.js +1 -0
- package/codemini-web/dist/assets/github-dark-default-CBFNEU03.js +1 -0
- package/codemini-web/dist/assets/github-dark-dimmed-sQhEp72S.js +1 -0
- package/codemini-web/dist/assets/github-dark-high-contrast-C8GVvrcM.js +1 -0
- package/codemini-web/dist/assets/github-light-default-iyEXWnoa.js +1 -0
- package/codemini-web/dist/assets/github-light-high-contrast-DLnsZL7l.js +1 -0
- package/codemini-web/dist/assets/github-light-pT7U8Cnd.js +1 -0
- package/codemini-web/dist/assets/gleam-B9ISJjDl.js +1 -0
- package/codemini-web/dist/assets/glimmer-js-C4PTXfaW.js +1 -0
- package/codemini-web/dist/assets/glimmer-ts-Df1V6YK_.js +1 -0
- package/codemini-web/dist/assets/glsl-C8VPaAWs.js +1 -0
- package/codemini-web/dist/assets/gn-RQRMslrP.js +1 -0
- package/codemini-web/dist/assets/gnuplot-CfIGZWjt.js +1 -0
- package/codemini-web/dist/assets/go-BTh90-YS.js +1 -0
- package/codemini-web/dist/assets/graphql-WZCiqIl-.js +1 -0
- package/codemini-web/dist/assets/groovy-lvGC2zUz.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-hard-CC38iqQ4.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-medium-DaS0IqFN.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-soft-C4niJipy.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-hard-DTfv4LmB.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-medium-m1VBpvsE.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-soft-CiE1IJdk.js +1 -0
- package/codemini-web/dist/assets/hack-zJL_tEH0.js +1 -0
- package/codemini-web/dist/assets/haml-qjVLLTZk.js +1 -0
- package/codemini-web/dist/assets/handlebars-B3RyMMk0.js +1 -0
- package/codemini-web/dist/assets/haskell-DdaZtXdd.js +1 -0
- package/codemini-web/dist/assets/haxe-Df79h8x1.js +1 -0
- package/codemini-web/dist/assets/hcl-BibREsa1.js +1 -0
- package/codemini-web/dist/assets/highlighted-body-OFNGDK62-DjZhmRtv.js +1 -0
- package/codemini-web/dist/assets/hjson-D-iSecYq.js +1 -0
- package/codemini-web/dist/assets/hlsl-CckLjo_3.js +1 -0
- package/codemini-web/dist/assets/horizon-BG-OH9yH.js +1 -0
- package/codemini-web/dist/assets/horizon-bright-CpoqdULz.js +1 -0
- package/codemini-web/dist/assets/houston-C8DdNIgg.js +1 -0
- package/codemini-web/dist/assets/html-DP-V-rfg.js +1 -0
- package/codemini-web/dist/assets/html-derivative-DB9UhNDN.js +1 -0
- package/codemini-web/dist/assets/http-Deln4Vyb.js +1 -0
- package/codemini-web/dist/assets/hurl-CYSuhGkj.js +1 -0
- package/codemini-web/dist/assets/hxml-BmF7ngDz.js +1 -0
- package/codemini-web/dist/assets/hy-6acR1htR.js +1 -0
- package/codemini-web/dist/assets/imba-I9bJJvhi.js +1 -0
- package/codemini-web/dist/assets/index-Boi36rz_.css +2 -0
- package/codemini-web/dist/assets/index-CqDOO9gZ.js +206 -0
- package/codemini-web/dist/assets/ini-ovi-wMtM.js +1 -0
- package/codemini-web/dist/assets/java-X0I2c5Az.js +1 -0
- package/codemini-web/dist/assets/javascript-WC6XFf_S.js +1 -0
- package/codemini-web/dist/assets/jinja-BcRTlqOI.js +1 -0
- package/codemini-web/dist/assets/jison-DuNOGix6.js +1 -0
- package/codemini-web/dist/assets/json-CmuSmrUv.js +1 -0
- package/codemini-web/dist/assets/json5-JNG5kh3j.js +1 -0
- package/codemini-web/dist/assets/jsonc-Bo6bgSpa.js +1 -0
- package/codemini-web/dist/assets/jsonl-eDmbsRcr.js +1 -0
- package/codemini-web/dist/assets/jsonnet-BrmnmEy9.js +1 -0
- package/codemini-web/dist/assets/jssm-C-QfdDgD.js +1 -0
- package/codemini-web/dist/assets/jsx-Bl4e1-KE.js +1 -0
- package/codemini-web/dist/assets/julia-Cqc1ADyw.js +1 -0
- package/codemini-web/dist/assets/just-O9z-zIlY.js +1 -0
- package/codemini-web/dist/assets/kanagawa-dragon-Dc8jzBf8.js +1 -0
- package/codemini-web/dist/assets/kanagawa-lotus-DglQpAHb.js +1 -0
- package/codemini-web/dist/assets/kanagawa-wave-CTxJC692.js +1 -0
- package/codemini-web/dist/assets/kdl-CPujEk7a.js +1 -0
- package/codemini-web/dist/assets/kotlin-GNGS6f4G.js +1 -0
- package/codemini-web/dist/assets/kusto-ByPWIc1b.js +1 -0
- package/codemini-web/dist/assets/laserwave-BLDq6SCM.js +1 -0
- package/codemini-web/dist/assets/latex-BEPTKliI.js +1 -0
- package/codemini-web/dist/assets/lean-CQ4oht2M.js +1 -0
- package/codemini-web/dist/assets/less-DgluPI4Z.js +1 -0
- package/codemini-web/dist/assets/light-plus-Ce6vIMrA.js +1 -0
- package/codemini-web/dist/assets/liquid-BK2PyMjt.js +1 -0
- package/codemini-web/dist/assets/llvm-C_Bk8N51.js +1 -0
- package/codemini-web/dist/assets/log-Cqyx7kYB.js +1 -0
- package/codemini-web/dist/assets/logo-BMyACSNp.js +1 -0
- package/codemini-web/dist/assets/lua-BroxvhVt.js +1 -0
- package/codemini-web/dist/assets/luau-Dw3qkd4h.js +1 -0
- package/codemini-web/dist/assets/make-DRoG6w-e.js +1 -0
- package/codemini-web/dist/assets/markdown-DMIvNSB1.js +1 -0
- package/codemini-web/dist/assets/marko-CTEKS39A.js +1 -0
- package/codemini-web/dist/assets/material-theme-D1yzOeFY.js +1 -0
- package/codemini-web/dist/assets/material-theme-darker-DhWqiNtj.js +1 -0
- package/codemini-web/dist/assets/material-theme-lighter-PKoq0Soa.js +1 -0
- package/codemini-web/dist/assets/material-theme-ocean-TtH-ZZAj.js +1 -0
- package/codemini-web/dist/assets/material-theme-palenight-DPEAidnA.js +1 -0
- package/codemini-web/dist/assets/matlab-Buftnej6.js +1 -0
- package/codemini-web/dist/assets/mdc-BOaCYzzL.js +1 -0
- package/codemini-web/dist/assets/mdx-COL7Vpwq.js +1 -0
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-frRIem48.js +1 -0
- package/codemini-web/dist/assets/mermaid-tvyj1ZQ2.js +1 -0
- package/codemini-web/dist/assets/min-dark-D66g901Q.js +1 -0
- package/codemini-web/dist/assets/min-light-CMnDj2iG.js +1 -0
- package/codemini-web/dist/assets/mipsasm-C6fvALrw.js +1 -0
- package/codemini-web/dist/assets/mojo-B3qnM1a8.js +1 -0
- package/codemini-web/dist/assets/monokai-DCoxt20T.js +1 -0
- package/codemini-web/dist/assets/moonbit-Cjo3d0oi.js +1 -0
- package/codemini-web/dist/assets/move-BZSDQnwS.js +1 -0
- package/codemini-web/dist/assets/narrat-DY5cg5OF.js +1 -0
- package/codemini-web/dist/assets/nextflow-Cto1mpL3.js +1 -0
- package/codemini-web/dist/assets/nextflow-groovy-D1X5Yd05.js +1 -0
- package/codemini-web/dist/assets/nginx-Da_Uewgc.js +1 -0
- package/codemini-web/dist/assets/night-owl-DuMFo77c.js +1 -0
- package/codemini-web/dist/assets/night-owl-light-DihOYNub.js +1 -0
- package/codemini-web/dist/assets/nim-BZyx58NM.js +1 -0
- package/codemini-web/dist/assets/nix-C2G-gZoY.js +1 -0
- package/codemini-web/dist/assets/nord-CqZqLQaJ.js +1 -0
- package/codemini-web/dist/assets/nushell-S11HUHTG.js +1 -0
- package/codemini-web/dist/assets/objective-c-D9GKvYFi.js +1 -0
- package/codemini-web/dist/assets/objective-cpp-SqrtXFXh.js +1 -0
- package/codemini-web/dist/assets/ocaml-C_PTi_Pz.js +1 -0
- package/codemini-web/dist/assets/odin-BWpZDKBG.js +1 -0
- package/codemini-web/dist/assets/one-dark-pro-DpWTHpwg.js +1 -0
- package/codemini-web/dist/assets/one-light-Cu0d64Hp.js +1 -0
- package/codemini-web/dist/assets/openscad-BM4fjXzn.js +1 -0
- package/codemini-web/dist/assets/pascal-DYsRufgb.js +1 -0
- package/codemini-web/dist/assets/perl-BW8t13Xq.js +1 -0
- package/codemini-web/dist/assets/php-Cq5FOhfR.js +1 -0
- package/codemini-web/dist/assets/pkl-Djf8ANrI.js +1 -0
- package/codemini-web/dist/assets/plastic-CmjIC4JL.js +1 -0
- package/codemini-web/dist/assets/plsql-B1bmZxUF.js +1 -0
- package/codemini-web/dist/assets/po-BvnTR3_f.js +1 -0
- package/codemini-web/dist/assets/poimandres-BTndTogr.js +1 -0
- package/codemini-web/dist/assets/polar-CAj5SJyd.js +1 -0
- package/codemini-web/dist/assets/postcss-DrpvRGGG.js +1 -0
- package/codemini-web/dist/assets/powerquery-I1Ei5hrS.js +1 -0
- package/codemini-web/dist/assets/powershell-Coc0WruX.js +1 -0
- package/codemini-web/dist/assets/prisma-Ojgxt2lx.js +1 -0
- package/codemini-web/dist/assets/prolog-C1UOAv4v.js +1 -0
- package/codemini-web/dist/assets/proto-D07RTuB5.js +1 -0
- package/codemini-web/dist/assets/pug-B4WHazil.js +1 -0
- package/codemini-web/dist/assets/puppet-D_zyrMo2.js +1 -0
- package/codemini-web/dist/assets/purescript-CV-DVmZj.js +1 -0
- package/codemini-web/dist/assets/python-DcnbpNOV.js +1 -0
- package/codemini-web/dist/assets/qml-DWxWu28U.js +1 -0
- package/codemini-web/dist/assets/qmldir-BBNnU9RJ.js +1 -0
- package/codemini-web/dist/assets/qss-CC0PKRbL.js +1 -0
- package/codemini-web/dist/assets/r-B4lG5syH.js +1 -0
- package/codemini-web/dist/assets/racket-Cbwns2Cq.js +1 -0
- package/codemini-web/dist/assets/raku-CeV6tH_x.js +1 -0
- package/codemini-web/dist/assets/razor-CQPYUgex.js +1 -0
- package/codemini-web/dist/assets/red-CVEaJbMR.js +1 -0
- package/codemini-web/dist/assets/reg-C_WE1pkC.js +1 -0
- package/codemini-web/dist/assets/regexp-da3KYCEG.js +1 -0
- package/codemini-web/dist/assets/rel-CpHQF4b7.js +1 -0
- package/codemini-web/dist/assets/riscv-Co5eiPIZ.js +1 -0
- package/codemini-web/dist/assets/rolldown-runtime-S-ySWqyJ.js +1 -0
- package/codemini-web/dist/assets/ron-CgTit1dG.js +1 -0
- package/codemini-web/dist/assets/rose-pine-BDTwvYHf.js +1 -0
- package/codemini-web/dist/assets/rose-pine-dawn-CAIk_wLV.js +1 -0
- package/codemini-web/dist/assets/rose-pine-moon-C5gdiznP.js +1 -0
- package/codemini-web/dist/assets/rosmsg-C0tpzWlc.js +1 -0
- package/codemini-web/dist/assets/rst-B-OS2pa5.js +1 -0
- package/codemini-web/dist/assets/ruby-BM15fmxz.js +1 -0
- package/codemini-web/dist/assets/rust-BWAfVMY4.js +1 -0
- package/codemini-web/dist/assets/sas-DYNukvU9.js +1 -0
- package/codemini-web/dist/assets/sass-MovLey2R.js +1 -0
- package/codemini-web/dist/assets/scala-C2w7y2mZ.js +1 -0
- package/codemini-web/dist/assets/scheme-Bf85FNnm.js +1 -0
- package/codemini-web/dist/assets/scss-C0BQ8YVM.js +1 -0
- package/codemini-web/dist/assets/sdbl-DoQ_zDzo.js +1 -0
- package/codemini-web/dist/assets/shaderlab-TbUUdmUb.js +1 -0
- package/codemini-web/dist/assets/shellscript-KUJZnuCi.js +1 -0
- package/codemini-web/dist/assets/shellsession-BeWGuVoR.js +1 -0
- package/codemini-web/dist/assets/slack-dark-BnOYKTBJ.js +1 -0
- package/codemini-web/dist/assets/slack-ochin-43udxtUg.js +1 -0
- package/codemini-web/dist/assets/smalltalk-Mlf5-xbr.js +1 -0
- package/codemini-web/dist/assets/snazzy-light-kw-pZEiM.js +1 -0
- package/codemini-web/dist/assets/solarized-dark-BDezFa9V.js +1 -0
- package/codemini-web/dist/assets/solarized-light-CkoenhS2.js +1 -0
- package/codemini-web/dist/assets/solidity-DYHGECBw.js +1 -0
- package/codemini-web/dist/assets/soy-C6D0Ibo9.js +1 -0
- package/codemini-web/dist/assets/sparql-DIFvSn1n.js +1 -0
- package/codemini-web/dist/assets/splunk-DOdklC0I.js +1 -0
- package/codemini-web/dist/assets/sql-CZAMrWdL.js +1 -0
- package/codemini-web/dist/assets/ssh-config-DwwFW7AS.js +1 -0
- package/codemini-web/dist/assets/stata-C5mLa_ER.js +1 -0
- package/codemini-web/dist/assets/stylus-BO6mlOab.js +1 -0
- package/codemini-web/dist/assets/surrealql-DyoUfV6n.js +1 -0
- package/codemini-web/dist/assets/svelte-DJ-0FpL2.js +1 -0
- package/codemini-web/dist/assets/swift-D9A08YU9.js +1 -0
- package/codemini-web/dist/assets/synthwave-84-C69NN2j9.js +1 -0
- package/codemini-web/dist/assets/system-verilog-DjR3sN6w.js +1 -0
- package/codemini-web/dist/assets/systemd-CJWuVSJU.js +1 -0
- package/codemini-web/dist/assets/talonscript-CXqq0wX-.js +1 -0
- package/codemini-web/dist/assets/tasl-GVNf7pB7.js +1 -0
- package/codemini-web/dist/assets/tcl-DNlfRSl5.js +1 -0
- package/codemini-web/dist/assets/templ-7Bvm-rei.js +1 -0
- package/codemini-web/dist/assets/terraform-DUK0FOOj.js +1 -0
- package/codemini-web/dist/assets/tex-ezg8IclB.js +1 -0
- package/codemini-web/dist/assets/tokyo-night-DWTtuXS3.js +1 -0
- package/codemini-web/dist/assets/toml-X5n3zjEH.js +1 -0
- package/codemini-web/dist/assets/ts-tags-BfuR6EQ0.js +1 -0
- package/codemini-web/dist/assets/tsv-Bqs_rchc.js +1 -0
- package/codemini-web/dist/assets/tsx-CfyUE2pW.js +1 -0
- package/codemini-web/dist/assets/turtle-BsUuoeVK.js +1 -0
- package/codemini-web/dist/assets/twig-_uxJ-QmX.js +1 -0
- package/codemini-web/dist/assets/typescript-C6LvTgbf.js +1 -0
- package/codemini-web/dist/assets/typespec-8nkhqWz6.js +1 -0
- package/codemini-web/dist/assets/typst-CPL77SDw.js +1 -0
- package/codemini-web/dist/assets/v-CoJD3IPx.js +1 -0
- package/codemini-web/dist/assets/vala-C42IfotU.js +1 -0
- package/codemini-web/dist/assets/vb-CVMKTK26.js +1 -0
- package/codemini-web/dist/assets/verilog-P63PhzSt.js +1 -0
- package/codemini-web/dist/assets/vesper-BGr95374.js +1 -0
- package/codemini-web/dist/assets/vhdl-2WwUdgX8.js +1 -0
- package/codemini-web/dist/assets/viml-CGPGWJA6.js +1 -0
- package/codemini-web/dist/assets/vitesse-black-cI0k84-I.js +1 -0
- package/codemini-web/dist/assets/vitesse-dark-SouM0FMW.js +1 -0
- package/codemini-web/dist/assets/vitesse-light-WiCy6lDO.js +1 -0
- package/codemini-web/dist/assets/vue-DkOBu49o.js +1 -0
- package/codemini-web/dist/assets/vue-html-Bx2Sgp8M.js +1 -0
- package/codemini-web/dist/assets/vue-vine-veyFk6GJ.js +1 -0
- package/codemini-web/dist/assets/vyper-DP_vqZO9.js +1 -0
- package/codemini-web/dist/assets/wasm-Db7VBw0n.js +1 -0
- package/codemini-web/dist/assets/wasm-DiIFv9DE.js +1 -0
- package/codemini-web/dist/assets/wenyan-ZEcjghA1.js +1 -0
- package/codemini-web/dist/assets/wgsl-CdusuPLe.js +1 -0
- package/codemini-web/dist/assets/wikitext-CBIB6hmW.js +1 -0
- package/codemini-web/dist/assets/wit-ZhUbVeze.js +1 -0
- package/codemini-web/dist/assets/wolfram-HyMOyERF.js +1 -0
- package/codemini-web/dist/assets/xml-BkdunjRC.js +1 -0
- package/codemini-web/dist/assets/xsl-C66i1pDH.js +1 -0
- package/codemini-web/dist/assets/yaml-D_uvhEF7.js +1 -0
- package/codemini-web/dist/assets/zenscript-C6ZuzgrL.js +1 -0
- package/codemini-web/dist/assets/zig-Do2h8XKj.js +1 -0
- package/codemini-web/dist/index.html +21 -0
- package/codemini-web/lib/approval-manager.js +32 -0
- package/codemini-web/lib/runtime-bridge.js +518 -0
- package/codemini-web/server.js +846 -0
- package/deployment.md +5 -5
- package/package.json +6 -1
- package/src/cli.js +17 -6
- package/src/commands/chat.js +8 -2
- package/src/commands/run.js +9 -3
- package/src/commands/skill.js +1 -1
- package/src/commands/web.js +57 -0
- package/src/core/agent-loop.js +45 -14
- package/src/core/chat-runtime.js +602 -81
- package/src/core/config-store.js +9 -2
- package/src/core/fff-adapter.js +1 -1
- package/src/core/session-store.js +104 -9
- package/src/core/soul.js +13 -0
- package/templates/project-requirements/report-shell.html +2 -1
package/src/core/config-store.js
CHANGED
|
@@ -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: '
|
|
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
|
-
: '
|
|
152
|
+
: 'normal';
|
|
146
153
|
const rawTools = Array.isArray(next.execution.always_allow_tools)
|
|
147
154
|
? next.execution.always_allow_tools
|
|
148
155
|
: [];
|
package/src/core/fff-adapter.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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 {
|