codemini-cli 0.5.0 → 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.
- package/LICENSE +0 -0
- package/OPERATIONS.md +1 -1
- package/README.md +25 -25
- package/bin/coder.js +0 -0
- package/codemini-web/dist/assets/Geist-Italic_wght_-vKc54d3Z.woff2 +0 -0
- package/codemini-web/dist/assets/Geist-Variable-CrgPqtmy.woff2 +0 -0
- package/codemini-web/dist/assets/GeistMono-Variable-BNLlm6Cd.woff2 +0 -0
- package/codemini-web/dist/assets/abap-9R7RjkQK.js +1 -0
- package/codemini-web/dist/assets/abap-BRbAAyvE.js +0 -0
- package/codemini-web/dist/assets/actionscript-3-CNowah7a.js +1 -0
- package/codemini-web/dist/assets/actionscript-3-Cj-0sM4g.js +0 -0
- package/codemini-web/dist/assets/ada-D5HmrmpD.js +1 -0
- package/codemini-web/dist/assets/ada-DhEA_nP5.js +0 -0
- package/codemini-web/dist/assets/andromeeda-CWmR-N6V.js +0 -0
- package/codemini-web/dist/assets/andromeeda-i_b3g2bn.js +1 -0
- package/codemini-web/dist/assets/{angular-html-Cde9qVP5.js → angular-html-CHsdtmkx.js} +1 -1
- package/codemini-web/dist/assets/angular-html-DlSp9HPG.js +1 -0
- package/codemini-web/dist/assets/{angular-ts-DefScAWP.js → angular-ts-B29Ypg6B.js} +1 -1
- package/codemini-web/dist/assets/angular-ts-JNDGGWj0.js +1 -0
- package/codemini-web/dist/assets/apache-D37U8o0r.js +1 -0
- package/codemini-web/dist/assets/apache-D5R2GKIs.js +0 -0
- package/codemini-web/dist/assets/apex-CszkG4lQ.js +1 -0
- package/codemini-web/dist/assets/apex-Qu8W4hal.js +0 -0
- package/codemini-web/dist/assets/apl-BASZ7uB_.js +1 -0
- package/codemini-web/dist/assets/{apl-w753UHCW.js → apl-Byuv-g-O.js} +1 -1
- package/codemini-web/dist/assets/applescript-Ajt9gmC_.js +1 -0
- package/codemini-web/dist/assets/applescript-CBey3ErE.js +0 -0
- package/codemini-web/dist/assets/ara-CRKnUAN1.js +0 -0
- package/codemini-web/dist/assets/ara-DpGk8XWf.js +1 -0
- package/codemini-web/dist/assets/asciidoc-1KYZEB6-.js +0 -0
- package/codemini-web/dist/assets/asciidoc-BdDORSgx.js +1 -0
- package/codemini-web/dist/assets/asm-DAaViY0U.js +0 -0
- package/codemini-web/dist/assets/asm-DGLRM3OU.js +1 -0
- package/codemini-web/dist/assets/{astro-DBA9Da7s.js → astro-CTzEugGW.js} +1 -1
- package/codemini-web/dist/assets/astro-l-XABzN2.js +1 -0
- package/codemini-web/dist/assets/aurora-x-DdfqxvM_.js +1 -0
- package/codemini-web/dist/assets/aurora-x-LPpmXm4i.js +0 -0
- package/codemini-web/dist/assets/awk-B-J9te9x.js +1 -0
- package/codemini-web/dist/assets/awk-ButuPTaW.js +0 -0
- package/codemini-web/dist/assets/ayu-dark-BdNJk5qF.js +1 -0
- package/codemini-web/dist/assets/ayu-dark-Dv4ngVMP.js +0 -0
- package/codemini-web/dist/assets/ayu-light-CxeOePuA.js +0 -0
- package/codemini-web/dist/assets/ayu-light-DkLNbAkT.js +1 -0
- package/codemini-web/dist/assets/ayu-mirage-BoyGjGHX.js +1 -0
- package/codemini-web/dist/assets/ayu-mirage-i2YLXKmY.js +0 -0
- package/codemini-web/dist/assets/ballerina-CZ8CAKmi.js +1 -0
- package/codemini-web/dist/assets/ballerina-DodmBVwR.js +0 -0
- package/codemini-web/dist/assets/bat-fNtaIqKE.js +1 -0
- package/codemini-web/dist/assets/bat-jA-YqDhG.js +0 -0
- package/codemini-web/dist/assets/beancount-9imagnS2.js +1 -0
- package/codemini-web/dist/assets/beancount-BCkjWTs-.js +0 -0
- package/codemini-web/dist/assets/berry-DjEHm1kC.js +0 -0
- package/codemini-web/dist/assets/berry-QTBYpUPn.js +1 -0
- package/codemini-web/dist/assets/bibtex-CzFWvn9u.js +1 -0
- package/codemini-web/dist/assets/bibtex-aOfmXHFj.js +0 -0
- package/codemini-web/dist/assets/bicep-BZLx0b6B.js +0 -0
- package/codemini-web/dist/assets/bicep-DLWEubga.js +1 -0
- package/codemini-web/dist/assets/bird2-V7dWeQhQ.js +1 -0
- package/codemini-web/dist/assets/{bird2-Bs7YDhA3.js → bird2-VVa6lZ01.js} +0 -0
- package/codemini-web/dist/assets/blade-B3_bxlV2.js +1 -0
- package/codemini-web/dist/assets/{blade-B-u5p0Rp.js → blade-Dt6km9YT.js} +1 -1
- package/codemini-web/dist/assets/bsl-CPV9KqsG.js +0 -0
- package/codemini-web/dist/assets/bsl-D3u1l2dW.js +1 -0
- package/codemini-web/dist/assets/c-Bv0tI3pq.js +0 -0
- package/codemini-web/dist/assets/c-CgTSul4N.js +1 -0
- package/codemini-web/dist/assets/c3-BDcFIiRd.js +0 -0
- package/codemini-web/dist/assets/c3-SmmwBAzR.js +1 -0
- package/codemini-web/dist/assets/cadence-DVNAI4pJ.js +1 -0
- package/codemini-web/dist/assets/cadence-DaglWUgA.js +0 -0
- package/codemini-web/dist/assets/cairo-CoQzhJ_o.js +1 -0
- package/codemini-web/dist/assets/cairo-CyiRuu7R.js +0 -0
- package/codemini-web/dist/assets/catppuccin-frappe-CSAC76is.js +0 -0
- package/codemini-web/dist/assets/catppuccin-frappe-DXCXlnyU.js +1 -0
- package/codemini-web/dist/assets/catppuccin-latte-BXW2qYGv.js +1 -0
- package/codemini-web/dist/assets/catppuccin-latte-Jt6sqtds.js +0 -0
- package/codemini-web/dist/assets/catppuccin-macchiato--32cesHH.js +1 -0
- package/codemini-web/dist/assets/catppuccin-macchiato-HM96_05s.js +0 -0
- package/codemini-web/dist/assets/catppuccin-mocha-BBRFilGN.js +1 -0
- package/codemini-web/dist/assets/catppuccin-mocha-CXgIAGBL.js +0 -0
- package/codemini-web/dist/assets/clarity-BJs8u8xG.js +1 -0
- package/codemini-web/dist/assets/clarity-DS5YLe8G.js +0 -0
- package/codemini-web/dist/assets/clojure-BVGPdaE2.js +0 -0
- package/codemini-web/dist/assets/clojure-DpYoDXXl.js +1 -0
- package/codemini-web/dist/assets/cmake-CCC7tP43.js +0 -0
- package/codemini-web/dist/assets/cmake-CdseusyP.js +1 -0
- package/codemini-web/dist/assets/{cobol-CkQrskif.js → cobol-D_kesMA-.js} +1 -1
- package/codemini-web/dist/assets/cobol-DqhY5el-.js +1 -0
- package/codemini-web/dist/assets/codeowners-5EAeZxPo.js +1 -0
- package/codemini-web/dist/assets/codeowners-DXhoR5Ap.js +0 -0
- package/codemini-web/dist/assets/codeql-BGjlu3KC.js +0 -0
- package/codemini-web/dist/assets/codeql-OkUuMGe9.js +1 -0
- package/codemini-web/dist/assets/coffee-DF15_0rk.js +1 -0
- package/codemini-web/dist/assets/coffee-rY-gkJy7.js +0 -0
- package/codemini-web/dist/assets/common-lisp-BE6wRQeA.js +0 -0
- package/codemini-web/dist/assets/common-lisp-DCRDlc4V.js +1 -0
- package/codemini-web/dist/assets/coq-CRT8yML1.js +0 -0
- package/codemini-web/dist/assets/coq-acwo70uY.js +1 -0
- package/codemini-web/dist/assets/cpp-Bw-qV0P6.js +0 -0
- package/codemini-web/dist/assets/cpp-Cudwe5mG.js +1 -0
- package/codemini-web/dist/assets/{crystal-Dh09vXLx.js → crystal-Bw1_1hFA.js} +1 -1
- package/codemini-web/dist/assets/crystal-DV9Nijjb.js +1 -0
- package/codemini-web/dist/assets/csharp-Ca2kU4Te.js +0 -0
- package/codemini-web/dist/assets/csharp-Cqz84DXU.js +1 -0
- package/codemini-web/dist/assets/{css-BTi88BmP.js → css-Dr0v2l-V.js} +0 -0
- package/codemini-web/dist/assets/css-z2ijrDWT.js +1 -0
- package/codemini-web/dist/assets/csv-CqpUSPyF.js +1 -0
- package/codemini-web/dist/assets/csv-DUpZC5ZD.js +0 -0
- package/codemini-web/dist/assets/cue-D4-Hq7Jx.js +1 -0
- package/codemini-web/dist/assets/cue-DlXQ7arx.js +0 -0
- package/codemini-web/dist/assets/cypher-CXMVfSpG.js +1 -0
- package/codemini-web/dist/assets/cypher-D6dhuZbo.js +0 -0
- package/codemini-web/dist/assets/d-BUgyoY6k.js +0 -0
- package/codemini-web/dist/assets/d-Cc_KoyiC.js +1 -0
- package/codemini-web/dist/assets/dark-plus-C0kLyDb3.js +1 -0
- package/codemini-web/dist/assets/dark-plus-DNkJKrcZ.js +0 -0
- package/codemini-web/dist/assets/{dart-Czrjv-nr.js → dart-BIyV3H7V.js} +0 -0
- package/codemini-web/dist/assets/dart-CVd7TDni.js +1 -0
- package/codemini-web/dist/assets/dax-DtoJMuz5.js +1 -0
- package/codemini-web/dist/assets/dax-sEzq00Tq.js +0 -0
- package/codemini-web/dist/assets/desktop-3VGbzlmJ.js +0 -0
- package/codemini-web/dist/assets/desktop-BkIJ2CMP.js +1 -0
- package/codemini-web/dist/assets/diff-D4HSRbRn.js +0 -0
- package/codemini-web/dist/assets/diff-RUsawely.js +1 -0
- package/codemini-web/dist/assets/docker-CDpVZYy7.js +1 -0
- package/codemini-web/dist/assets/docker-DkLGgDMo.js +0 -0
- package/codemini-web/dist/assets/dotenv-BWp1FaLo.js +0 -0
- package/codemini-web/dist/assets/dotenv-DWnlamm2.js +1 -0
- package/codemini-web/dist/assets/dracula-Donvxzd6.js +0 -0
- package/codemini-web/dist/assets/dracula-QP8aKUFB.js +1 -0
- package/codemini-web/dist/assets/dracula-soft-BNzyYlRI.js +1 -0
- package/codemini-web/dist/assets/dracula-soft-BqL-kkUg.js +0 -0
- package/codemini-web/dist/assets/dream-maker-DtLD6KM3.js +0 -0
- package/codemini-web/dist/assets/dream-maker-MNBsfIGU.js +1 -0
- package/codemini-web/dist/assets/{edge-CCRtknu5.js → edge-BosfXYh1.js} +1 -1
- package/codemini-web/dist/assets/edge-r5NIe9Lp.js +1 -0
- package/codemini-web/dist/assets/{elixir-5EYbFEoC.js → elixir-B04apOJS.js} +1 -1
- package/codemini-web/dist/assets/elixir-Dw_vsdUl.js +1 -0
- package/codemini-web/dist/assets/elm-Cezz_HNz.js +0 -0
- package/codemini-web/dist/assets/elm-DPfFNNkG.js +1 -0
- package/codemini-web/dist/assets/emacs-lisp-BHIDiQRU.js +1 -0
- package/codemini-web/dist/assets/{emacs-lisp-D4W-_rAk.js → emacs-lisp-CVlPXEEa.js} +0 -0
- package/codemini-web/dist/assets/{erb-C6pPz4fX.js → erb-BNioEFKQ.js} +1 -1
- package/codemini-web/dist/assets/erb-DZuoCU5t.js +1 -0
- package/codemini-web/dist/assets/erlang-BC8wryba.js +0 -0
- package/codemini-web/dist/assets/erlang-CqHCISqs.js +1 -0
- package/codemini-web/dist/assets/everforest-dark-DSK976eP.js +1 -0
- package/codemini-web/dist/assets/everforest-dark-pZNhY4MK.js +0 -0
- package/codemini-web/dist/assets/everforest-light-BijKClkf.js +0 -0
- package/codemini-web/dist/assets/everforest-light-BkaBVm1r.js +1 -0
- package/codemini-web/dist/assets/fennel-BsP4yvxI.js +1 -0
- package/codemini-web/dist/assets/fennel-Cd-BhZ0S.js +0 -0
- package/codemini-web/dist/assets/fish-CimYqIk1.js +1 -0
- package/codemini-web/dist/assets/fish-CpsjJ6FK.js +0 -0
- package/codemini-web/dist/assets/fluent-D1peBFgx.js +0 -0
- package/codemini-web/dist/assets/fluent-O-Iic89O.js +1 -0
- package/codemini-web/dist/assets/fortran-fixed-form-60ZQAHDk.js +1 -0
- package/codemini-web/dist/assets/fortran-fixed-form-CyrImzNA.js +0 -0
- package/codemini-web/dist/assets/fortran-free-form-BVNtEstX.js +1 -0
- package/codemini-web/dist/assets/fortran-free-form-CIAQqF5W.js +0 -0
- package/codemini-web/dist/assets/fsharp-Ch5ZVinn.js +1 -0
- package/codemini-web/dist/assets/fsharp-OCW_PZ4J.js +0 -0
- package/codemini-web/dist/assets/gdresource-Cl3bohRI.js +0 -0
- package/codemini-web/dist/assets/gdresource-CqNLhJW1.js +1 -0
- package/codemini-web/dist/assets/gdscript-B_XVILZe.js +0 -0
- package/codemini-web/dist/assets/gdscript-D-FJCTl3.js +1 -0
- package/codemini-web/dist/assets/gdshader-BOrkFM_X.js +0 -0
- package/codemini-web/dist/assets/gdshader-Czvzt8dR.js +1 -0
- package/codemini-web/dist/assets/genie-BE7nKhIq.js +0 -0
- package/codemini-web/dist/assets/genie-Mnf_jXpg.js +1 -0
- package/codemini-web/dist/assets/gherkin-DzGJhdqS.js +0 -0
- package/codemini-web/dist/assets/gherkin-DzkYuFEO.js +1 -0
- package/codemini-web/dist/assets/git-commit-CSWECvqq.js +1 -0
- package/codemini-web/dist/assets/git-commit-DJZpdBwB.js +0 -0
- package/codemini-web/dist/assets/git-rebase-BJE30GTP.js +0 -0
- package/codemini-web/dist/assets/git-rebase-MUvuytPe.js +1 -0
- package/codemini-web/dist/assets/github-dark-BB9G20EV.js +0 -0
- package/codemini-web/dist/assets/github-dark-C98YWDhk.js +1 -0
- package/codemini-web/dist/assets/github-dark-default-CBFNEU03.js +0 -0
- package/codemini-web/dist/assets/github-dark-default-CDGuVkyn.js +1 -0
- package/codemini-web/dist/assets/github-dark-dimmed-CarTohA3.js +1 -0
- package/codemini-web/dist/assets/github-dark-dimmed-sQhEp72S.js +0 -0
- package/codemini-web/dist/assets/github-dark-high-contrast-C8GVvrcM.js +0 -0
- package/codemini-web/dist/assets/github-dark-high-contrast-CsjOICAd.js +1 -0
- package/codemini-web/dist/assets/github-light-D17m3GP4.js +1 -0
- package/codemini-web/dist/assets/github-light-default-DiMoa1ZI.js +1 -0
- package/codemini-web/dist/assets/github-light-default-iyEXWnoa.js +0 -0
- package/codemini-web/dist/assets/github-light-high-contrast-DGwHD8Ty.js +1 -0
- package/codemini-web/dist/assets/github-light-high-contrast-DLnsZL7l.js +0 -0
- package/codemini-web/dist/assets/github-light-pT7U8Cnd.js +0 -0
- package/codemini-web/dist/assets/gleam-B9ISJjDl.js +0 -0
- package/codemini-web/dist/assets/gleam-MAXpOqqF.js +1 -0
- package/codemini-web/dist/assets/{glimmer-js-C4PTXfaW.js → glimmer-js-Dn6vjgHP.js} +1 -1
- package/codemini-web/dist/assets/glimmer-js-HDDEErW7.js +1 -0
- package/codemini-web/dist/assets/glimmer-ts-Dq0_BflX.js +1 -0
- package/codemini-web/dist/assets/{glimmer-ts-Df1V6YK_.js → glimmer-ts-mq-Q_zEE.js} +1 -1
- package/codemini-web/dist/assets/glsl-C4rvog10.js +1 -0
- package/codemini-web/dist/assets/glsl-C8VPaAWs.js +0 -0
- package/codemini-web/dist/assets/gn-BNADkWgR.js +1 -0
- package/codemini-web/dist/assets/gn-RQRMslrP.js +0 -0
- package/codemini-web/dist/assets/gnuplot-BRQvwTQM.js +1 -0
- package/codemini-web/dist/assets/gnuplot-CfIGZWjt.js +0 -0
- package/codemini-web/dist/assets/{go-BTh90-YS.js → go-D6k5URxL.js} +0 -0
- package/codemini-web/dist/assets/go-iV8pwUYW.js +1 -0
- package/codemini-web/dist/assets/graphql-Dg0Ewf8Q.js +1 -0
- package/codemini-web/dist/assets/graphql-WZCiqIl-.js +0 -0
- package/codemini-web/dist/assets/groovy-CxG1cXrE.js +1 -0
- package/codemini-web/dist/assets/groovy-lvGC2zUz.js +0 -0
- package/codemini-web/dist/assets/gruvbox-dark-hard-CC38iqQ4.js +0 -0
- package/codemini-web/dist/assets/gruvbox-dark-hard-Cnb1fzry.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-medium-Cu5j8v_d.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-medium-DaS0IqFN.js +0 -0
- package/codemini-web/dist/assets/gruvbox-dark-soft-BghHDwrM.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-soft-C4niJipy.js +0 -0
- package/codemini-web/dist/assets/gruvbox-light-hard-BUhLUxUB.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-hard-DTfv4LmB.js +0 -0
- package/codemini-web/dist/assets/gruvbox-light-medium-GXeiXGL9.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-medium-m1VBpvsE.js +0 -0
- package/codemini-web/dist/assets/gruvbox-light-soft-CiE1IJdk.js +0 -0
- package/codemini-web/dist/assets/gruvbox-light-soft-pTZgKx7j.js +1 -0
- package/codemini-web/dist/assets/{hack-zJL_tEH0.js → hack-DeD259o6.js} +1 -1
- package/codemini-web/dist/assets/hack-DjE76gIx.js +1 -0
- package/codemini-web/dist/assets/{haml-qjVLLTZk.js → haml-B8MRe8CS.js} +1 -1
- package/codemini-web/dist/assets/haml-DyIc_iO2.js +1 -0
- package/codemini-web/dist/assets/handlebars-DQ4X08Zf.js +1 -0
- package/codemini-web/dist/assets/{handlebars-B3RyMMk0.js → handlebars-GoJyzhp1.js} +1 -1
- package/codemini-web/dist/assets/haskell-BZ8bGMYA.js +1 -0
- package/codemini-web/dist/assets/haskell-DdaZtXdd.js +0 -0
- package/codemini-web/dist/assets/haxe-1eAUKQ0B.js +1 -0
- package/codemini-web/dist/assets/haxe-Df79h8x1.js +0 -0
- package/codemini-web/dist/assets/hcl-BibREsa1.js +0 -0
- package/codemini-web/dist/assets/hcl-DQqvKq2I.js +1 -0
- package/codemini-web/dist/assets/{highlighted-body-OFNGDK62-CJHWad2r.js → highlighted-body-OFNGDK62-CDUecv8k.js} +1 -1
- package/codemini-web/dist/assets/hjson-D-iSecYq.js +0 -0
- package/codemini-web/dist/assets/hjson-DNWMSWLN.js +1 -0
- package/codemini-web/dist/assets/hlsl-CckLjo_3.js +0 -0
- package/codemini-web/dist/assets/hlsl-Df5oFh9i.js +1 -0
- package/codemini-web/dist/assets/horizon-BCbhfxa1.js +1 -0
- package/codemini-web/dist/assets/horizon-BG-OH9yH.js +0 -0
- package/codemini-web/dist/assets/horizon-bright-B0vmEjwb.js +1 -0
- package/codemini-web/dist/assets/{horizon-bright-CpoqdULz.js → horizon-bright-CXcxBcih.js} +0 -0
- package/codemini-web/dist/assets/houston-C8DdNIgg.js +0 -0
- package/codemini-web/dist/assets/houston-DHnjBE42.js +1 -0
- package/codemini-web/dist/assets/{html-DP-V-rfg.js → html-B7kk5NVw.js} +1 -1
- package/codemini-web/dist/assets/html-GfHBuoLs.js +1 -0
- package/codemini-web/dist/assets/{html-derivative-DB9UhNDN.js → html-derivative-Ba28nVB3.js} +1 -1
- package/codemini-web/dist/assets/html-derivative-ChSmSZXY.js +1 -0
- package/codemini-web/dist/assets/http-DMTBhQm8.js +1 -0
- package/codemini-web/dist/assets/http-Deln4Vyb.js +0 -0
- package/codemini-web/dist/assets/hurl-CYSuhGkj.js +0 -0
- package/codemini-web/dist/assets/hurl-XIpACwjS.js +1 -0
- package/codemini-web/dist/assets/hxml-BmF7ngDz.js +0 -0
- package/codemini-web/dist/assets/hxml-PnV_FpS-.js +1 -0
- package/codemini-web/dist/assets/hy-6acR1htR.js +0 -0
- package/codemini-web/dist/assets/hy-DaILHjW8.js +1 -0
- package/codemini-web/dist/assets/imba-BA6_JyKt.js +1 -0
- package/codemini-web/dist/assets/imba-I9bJJvhi.js +0 -0
- package/codemini-web/dist/assets/index-Cfk9ARKs.js +426 -0
- package/codemini-web/dist/assets/index-Dqq2DCEb.css +2 -0
- package/codemini-web/dist/assets/ini-DqXMcqXm.js +1 -0
- package/codemini-web/dist/assets/ini-ovi-wMtM.js +0 -0
- package/codemini-web/dist/assets/java-Ds1cyVrp.js +1 -0
- package/codemini-web/dist/assets/java-X0I2c5Az.js +0 -0
- package/codemini-web/dist/assets/javascript-Cx8CXBJR.js +1 -0
- package/codemini-web/dist/assets/javascript-WC6XFf_S.js +0 -0
- package/codemini-web/dist/assets/{jinja-BcRTlqOI.js → jinja-8ATGhxJO.js} +1 -1
- package/codemini-web/dist/assets/jinja-Dx5IcFSt.js +1 -0
- package/codemini-web/dist/assets/jison-CSsYnr7O.js +1 -0
- package/codemini-web/dist/assets/jison-DuNOGix6.js +0 -0
- package/codemini-web/dist/assets/json-CY14kIzN.js +1 -0
- package/codemini-web/dist/assets/json-CmuSmrUv.js +0 -0
- package/codemini-web/dist/assets/json5-Cus7zL-r.js +1 -0
- package/codemini-web/dist/assets/json5-JNG5kh3j.js +0 -0
- package/codemini-web/dist/assets/jsonc-Bo6bgSpa.js +0 -0
- package/codemini-web/dist/assets/jsonc-RzqrtWTz.js +1 -0
- package/codemini-web/dist/assets/jsonl-CLcLUtvq.js +1 -0
- package/codemini-web/dist/assets/jsonl-eDmbsRcr.js +0 -0
- package/codemini-web/dist/assets/jsonnet--7yRuAzt.js +1 -0
- package/codemini-web/dist/assets/jsonnet-BrmnmEy9.js +0 -0
- package/codemini-web/dist/assets/jssm-C-QfdDgD.js +0 -0
- package/codemini-web/dist/assets/jssm-Cid5Rr2Y.js +1 -0
- package/codemini-web/dist/assets/jsx-Bl4e1-KE.js +0 -0
- package/codemini-web/dist/assets/jsx-DmH5dwMF.js +1 -0
- package/codemini-web/dist/assets/julia-Cqc1ADyw.js +0 -0
- package/codemini-web/dist/assets/julia-vjG00jwO.js +1 -0
- package/codemini-web/dist/assets/{just-O9z-zIlY.js → just-BlUYrdKb.js} +1 -1
- package/codemini-web/dist/assets/just-C7G3KFgN.js +1 -0
- package/codemini-web/dist/assets/kanagawa-dragon-BxDDNs-7.js +1 -0
- package/codemini-web/dist/assets/kanagawa-dragon-Dc8jzBf8.js +0 -0
- package/codemini-web/dist/assets/kanagawa-lotus-BQyifewU.js +1 -0
- package/codemini-web/dist/assets/kanagawa-lotus-DglQpAHb.js +0 -0
- package/codemini-web/dist/assets/kanagawa-wave-BsJGVIZT.js +1 -0
- package/codemini-web/dist/assets/kanagawa-wave-CTxJC692.js +0 -0
- package/codemini-web/dist/assets/kdl-CPujEk7a.js +0 -0
- package/codemini-web/dist/assets/kdl-D2MbAIKj.js +1 -0
- package/codemini-web/dist/assets/kotlin-GNGS6f4G.js +0 -0
- package/codemini-web/dist/assets/kotlin-fpq87Jdo.js +1 -0
- package/codemini-web/dist/assets/{kusto-ByPWIc1b.js → kusto-B1r4va-8.js} +0 -0
- package/codemini-web/dist/assets/kusto-BcKmLn2p.js +1 -0
- package/codemini-web/dist/assets/laserwave-BLDq6SCM.js +0 -0
- package/codemini-web/dist/assets/laserwave-CrjhMkHv.js +1 -0
- package/codemini-web/dist/assets/latex-BEPTKliI.js +0 -0
- package/codemini-web/dist/assets/latex-D8-NgtPj.js +1 -0
- package/codemini-web/dist/assets/lean-B9Xp-kaJ.js +1 -0
- package/codemini-web/dist/assets/lean-CQ4oht2M.js +0 -0
- package/codemini-web/dist/assets/less-BKjOc0Gl.js +1 -0
- package/codemini-web/dist/assets/less-DgluPI4Z.js +0 -0
- package/codemini-web/dist/assets/light-plus-Ce6vIMrA.js +0 -0
- package/codemini-web/dist/assets/light-plus-DFt9HI_B.js +1 -0
- package/codemini-web/dist/assets/{liquid-BK2PyMjt.js → liquid-BUh7yINm.js} +1 -1
- package/codemini-web/dist/assets/liquid-D2m0XXrV.js +1 -0
- package/codemini-web/dist/assets/llvm-C_Bk8N51.js +0 -0
- package/codemini-web/dist/assets/llvm-XDy97SdL.js +1 -0
- package/codemini-web/dist/assets/log-Cqyx7kYB.js +0 -0
- package/codemini-web/dist/assets/log-tjGJZ7jx.js +1 -0
- package/codemini-web/dist/assets/logo-BMyACSNp.js +0 -0
- package/codemini-web/dist/assets/logo-rCQwad-6.js +1 -0
- package/codemini-web/dist/assets/lua-BeSXusec.js +1 -0
- package/codemini-web/dist/assets/lua-BroxvhVt.js +0 -0
- package/codemini-web/dist/assets/luau-C0wE4YeK.js +1 -0
- package/codemini-web/dist/assets/luau-Dw3qkd4h.js +0 -0
- package/codemini-web/dist/assets/make-DRoG6w-e.js +0 -0
- package/codemini-web/dist/assets/make-DZENZd8z.js +1 -0
- package/codemini-web/dist/assets/markdown-CbgVmtS5.js +1 -0
- package/codemini-web/dist/assets/markdown-DMIvNSB1.js +0 -0
- package/codemini-web/dist/assets/marko-DPnRthJQ.js +1 -0
- package/codemini-web/dist/assets/{marko-CTEKS39A.js → marko-Dm8xPXkG.js} +1 -1
- package/codemini-web/dist/assets/material-theme-D1yzOeFY.js +0 -0
- package/codemini-web/dist/assets/material-theme-YhiuxyiP.js +1 -0
- package/codemini-web/dist/assets/material-theme-darker-CKeuyK7B.js +1 -0
- package/codemini-web/dist/assets/material-theme-darker-DhWqiNtj.js +0 -0
- package/codemini-web/dist/assets/material-theme-lighter-C56RzTfM.js +1 -0
- package/codemini-web/dist/assets/material-theme-lighter-PKoq0Soa.js +0 -0
- package/codemini-web/dist/assets/material-theme-ocean-DUos8xKe.js +1 -0
- package/codemini-web/dist/assets/material-theme-ocean-TtH-ZZAj.js +0 -0
- package/codemini-web/dist/assets/material-theme-palenight-CZBKx4B1.js +1 -0
- package/codemini-web/dist/assets/material-theme-palenight-DPEAidnA.js +0 -0
- package/codemini-web/dist/assets/matlab-BJwkjxyL.js +1 -0
- package/codemini-web/dist/assets/matlab-Buftnej6.js +0 -0
- package/codemini-web/dist/assets/mdc-BLdFHYKv.js +1 -0
- package/codemini-web/dist/assets/{mdc-BOaCYzzL.js → mdc-Dzipcsdb.js} +1 -1
- package/codemini-web/dist/assets/mdx-BvkytFG9.js +1 -0
- package/codemini-web/dist/assets/mdx-COL7Vpwq.js +0 -0
- package/codemini-web/dist/assets/mermaid-Ctx7uNrT.js +1 -0
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-BWSxGKNn.js +1 -0
- package/codemini-web/dist/assets/mermaid-tvyj1ZQ2.js +0 -0
- package/codemini-web/dist/assets/min-dark-BA-rwgF3.js +1 -0
- package/codemini-web/dist/assets/min-dark-D66g901Q.js +0 -0
- package/codemini-web/dist/assets/min-light-CMnDj2iG.js +0 -0
- package/codemini-web/dist/assets/min-light-DHUVhXnm.js +1 -0
- package/codemini-web/dist/assets/mipsasm-ByaU0dEX.js +1 -0
- package/codemini-web/dist/assets/mipsasm-C6fvALrw.js +0 -0
- package/codemini-web/dist/assets/mojo-B3qnM1a8.js +0 -0
- package/codemini-web/dist/assets/mojo-CqhYERP_.js +1 -0
- package/codemini-web/dist/assets/monokai-D3MyQCxG.js +1 -0
- package/codemini-web/dist/assets/monokai-DCoxt20T.js +0 -0
- package/codemini-web/dist/assets/moonbit-C4BfwLm6.js +1 -0
- package/codemini-web/dist/assets/moonbit-Cjo3d0oi.js +0 -0
- package/codemini-web/dist/assets/move-BZSDQnwS.js +0 -0
- package/codemini-web/dist/assets/move-DOj5FawL.js +1 -0
- package/codemini-web/dist/assets/narrat-CDHYPJWr.js +1 -0
- package/codemini-web/dist/assets/narrat-DY5cg5OF.js +0 -0
- package/codemini-web/dist/assets/{nextflow-Cto1mpL3.js → nextflow-BRiWOV-p.js} +1 -1
- package/codemini-web/dist/assets/nextflow-c8YCPRRb.js +1 -0
- package/codemini-web/dist/assets/nextflow-groovy-D6rYlJlL.js +1 -0
- package/codemini-web/dist/assets/{nextflow-groovy-D1X5Yd05.js → nextflow-groovy-o7ZjyFmf.js} +0 -0
- package/codemini-web/dist/assets/nginx-Da_Uewgc.js +0 -0
- package/codemini-web/dist/assets/nginx-u-hq5m-a.js +1 -0
- package/codemini-web/dist/assets/night-owl-DuMFo77c.js +0 -0
- package/codemini-web/dist/assets/night-owl-NHZjGVLB.js +1 -0
- package/codemini-web/dist/assets/night-owl-light-DcKosvl7.js +1 -0
- package/codemini-web/dist/assets/night-owl-light-DihOYNub.js +0 -0
- package/codemini-web/dist/assets/nim-B5b6_jZr.js +1 -0
- package/codemini-web/dist/assets/{nim-BZyx58NM.js → nim-CvgRYLO2.js} +1 -1
- package/codemini-web/dist/assets/nix-C2G-gZoY.js +0 -0
- package/codemini-web/dist/assets/nix-Csr5leD-.js +1 -0
- package/codemini-web/dist/assets/nord-CqZqLQaJ.js +0 -0
- package/codemini-web/dist/assets/nord-DomFMWpF.js +1 -0
- package/codemini-web/dist/assets/nushell-IZVQdI7Z.js +1 -0
- package/codemini-web/dist/assets/nushell-S11HUHTG.js +0 -0
- package/codemini-web/dist/assets/objective-c-D9GKvYFi.js +0 -0
- package/codemini-web/dist/assets/objective-c-DD1i5sf2.js +1 -0
- package/codemini-web/dist/assets/objective-cpp-CtzOCe2w.js +1 -0
- package/codemini-web/dist/assets/objective-cpp-SqrtXFXh.js +0 -0
- package/codemini-web/dist/assets/ocaml-BlMDMjEj.js +1 -0
- package/codemini-web/dist/assets/ocaml-C_PTi_Pz.js +0 -0
- package/codemini-web/dist/assets/odin-BWpZDKBG.js +0 -0
- package/codemini-web/dist/assets/odin-CoWSDSNi.js +1 -0
- package/codemini-web/dist/assets/one-dark-pro-DWENJxB_.js +1 -0
- package/codemini-web/dist/assets/one-dark-pro-DpWTHpwg.js +0 -0
- package/codemini-web/dist/assets/one-light-CEeF6aqP.js +1 -0
- package/codemini-web/dist/assets/one-light-Cu0d64Hp.js +0 -0
- package/codemini-web/dist/assets/openscad-BM4fjXzn.js +0 -0
- package/codemini-web/dist/assets/openscad-D3gRRPUh.js +1 -0
- package/codemini-web/dist/assets/pascal-DYsRufgb.js +0 -0
- package/codemini-web/dist/assets/pascal-G3gJIkHz.js +1 -0
- package/codemini-web/dist/assets/{perl-BW8t13Xq.js → perl-BIcNvyL6.js} +1 -1
- package/codemini-web/dist/assets/perl-DdF12AsD.js +1 -0
- package/codemini-web/dist/assets/php-BP-3TkW_.js +1 -0
- package/codemini-web/dist/assets/{php-Cq5FOhfR.js → php-CyQZnE0l.js} +1 -1
- package/codemini-web/dist/assets/pierre-dark-CBqOR10c.js +1 -0
- package/codemini-web/dist/assets/pierre-light-sgwdVCEP.js +1 -0
- package/codemini-web/dist/assets/pkl-DdsryWcC.js +1 -0
- package/codemini-web/dist/assets/pkl-Djf8ANrI.js +0 -0
- package/codemini-web/dist/assets/plastic-CmjIC4JL.js +0 -0
- package/codemini-web/dist/assets/plastic-CwUA_4-2.js +1 -0
- package/codemini-web/dist/assets/plsql-B1bmZxUF.js +0 -0
- package/codemini-web/dist/assets/plsql-C2yEtnCG.js +1 -0
- package/codemini-web/dist/assets/po-BvnTR3_f.js +0 -0
- package/codemini-web/dist/assets/po-Dy7ytuR1.js +1 -0
- package/codemini-web/dist/assets/poimandres-BTndTogr.js +0 -0
- package/codemini-web/dist/assets/poimandres-u68WOWhl.js +1 -0
- package/codemini-web/dist/assets/polar-CAj5SJyd.js +0 -0
- package/codemini-web/dist/assets/polar-CjLVWIyd.js +1 -0
- package/codemini-web/dist/assets/postcss-DiNtjF5e.js +1 -0
- package/codemini-web/dist/assets/postcss-DrpvRGGG.js +0 -0
- package/codemini-web/dist/assets/powerquery-I1Ei5hrS.js +0 -0
- package/codemini-web/dist/assets/powerquery-iC4Ra9LJ.js +1 -0
- package/codemini-web/dist/assets/powershell-Ch2YpFAx.js +1 -0
- package/codemini-web/dist/assets/powershell-Coc0WruX.js +0 -0
- package/codemini-web/dist/assets/prisma-HWctQCpn.js +1 -0
- package/codemini-web/dist/assets/prisma-Ojgxt2lx.js +0 -0
- package/codemini-web/dist/assets/prolog-C1UOAv4v.js +0 -0
- package/codemini-web/dist/assets/prolog-DHAsH4Hf.js +1 -0
- package/codemini-web/dist/assets/proto-D07RTuB5.js +0 -0
- package/codemini-web/dist/assets/proto-mTghX89X.js +1 -0
- package/codemini-web/dist/assets/pug-HwoxZo9M.js +1 -0
- package/codemini-web/dist/assets/{pug-B4WHazil.js → pug-_XoIcKf3.js} +1 -1
- package/codemini-web/dist/assets/puppet-D1Zcnrr5.js +1 -0
- package/codemini-web/dist/assets/puppet-D_zyrMo2.js +0 -0
- package/codemini-web/dist/assets/purescript-CV-DVmZj.js +0 -0
- package/codemini-web/dist/assets/purescript-s82m5f0Y.js +1 -0
- package/codemini-web/dist/assets/python-BhsI1K6K.js +1 -0
- package/codemini-web/dist/assets/python-DcnbpNOV.js +0 -0
- package/codemini-web/dist/assets/qml-CysuucQ6.js +1 -0
- package/codemini-web/dist/assets/qml-DWxWu28U.js +0 -0
- package/codemini-web/dist/assets/qmldir-BBNnU9RJ.js +0 -0
- package/codemini-web/dist/assets/qmldir-Bzkc2Njy.js +1 -0
- package/codemini-web/dist/assets/qss-CC0PKRbL.js +0 -0
- package/codemini-web/dist/assets/qss-CKbozdtF.js +1 -0
- package/codemini-web/dist/assets/r-B4lG5syH.js +0 -0
- package/codemini-web/dist/assets/r-BKej5r_k.js +1 -0
- package/codemini-web/dist/assets/racket-CUDoXUwy.js +1 -0
- package/codemini-web/dist/assets/racket-Cbwns2Cq.js +0 -0
- package/codemini-web/dist/assets/raku-CeV6tH_x.js +0 -0
- package/codemini-web/dist/assets/raku-XPAjN9OU.js +1 -0
- package/codemini-web/dist/assets/{razor-CQPYUgex.js → razor-DQ6FV4WL.js} +1 -1
- package/codemini-web/dist/assets/razor-ZpEr_C9H.js +1 -0
- package/codemini-web/dist/assets/red-8aRo80UF.js +1 -0
- package/codemini-web/dist/assets/red-CVEaJbMR.js +0 -0
- package/codemini-web/dist/assets/reg-B0B_plbq.js +1 -0
- package/codemini-web/dist/assets/reg-C_WE1pkC.js +0 -0
- package/codemini-web/dist/assets/regexp-CK-1EP63.js +1 -0
- package/codemini-web/dist/assets/regexp-da3KYCEG.js +0 -0
- package/codemini-web/dist/assets/rel-CpHQF4b7.js +0 -0
- package/codemini-web/dist/assets/rel-DhoFe2Y7.js +1 -0
- package/codemini-web/dist/assets/riscv-CKx_Jisq.js +1 -0
- package/codemini-web/dist/assets/riscv-Co5eiPIZ.js +0 -0
- package/codemini-web/dist/assets/rolldown-runtime-S-ySWqyJ.js +0 -0
- package/codemini-web/dist/assets/ron-CgTit1dG.js +0 -0
- package/codemini-web/dist/assets/ron-qyvgw9vu.js +1 -0
- package/codemini-web/dist/assets/rose-pine-BDTwvYHf.js +0 -0
- package/codemini-web/dist/assets/rose-pine-R3f76h4_.js +1 -0
- package/codemini-web/dist/assets/rose-pine-dawn-BS09rtpK.js +1 -0
- package/codemini-web/dist/assets/rose-pine-dawn-CAIk_wLV.js +0 -0
- package/codemini-web/dist/assets/rose-pine-moon-B4Q4DiPG.js +1 -0
- package/codemini-web/dist/assets/rose-pine-moon-C5gdiznP.js +0 -0
- package/codemini-web/dist/assets/rosmsg-C0tpzWlc.js +0 -0
- package/codemini-web/dist/assets/rosmsg-Dy_ItAfo.js +1 -0
- package/codemini-web/dist/assets/rst-CjO4XFKz.js +1 -0
- package/codemini-web/dist/assets/{rst-B-OS2pa5.js → rst-DDrWKQ9c.js} +1 -1
- package/codemini-web/dist/assets/ruby-BOVYgV5O.js +1 -0
- package/codemini-web/dist/assets/{ruby-BM15fmxz.js → ruby-CZgIYPlP.js} +1 -1
- package/codemini-web/dist/assets/rust-BWAfVMY4.js +0 -0
- package/codemini-web/dist/assets/rust-CNEVkiWF.js +1 -0
- package/codemini-web/dist/assets/sas-DPGT0TjQ.js +1 -0
- package/codemini-web/dist/assets/sas-DYNukvU9.js +0 -0
- package/codemini-web/dist/assets/sass-D2nye32F.js +1 -0
- package/codemini-web/dist/assets/sass-MovLey2R.js +0 -0
- package/codemini-web/dist/assets/scala-B8greAnE.js +1 -0
- package/codemini-web/dist/assets/scala-C2w7y2mZ.js +0 -0
- package/codemini-web/dist/assets/scheme-Bf85FNnm.js +0 -0
- package/codemini-web/dist/assets/scheme-Ci_aquns.js +1 -0
- package/codemini-web/dist/assets/{scss-C0BQ8YVM.js → scss-CaciJ0Gl.js} +1 -1
- package/codemini-web/dist/assets/scss-YARKxu2i.js +1 -0
- package/codemini-web/dist/assets/sdbl-D4tJqBiC.js +1 -0
- package/codemini-web/dist/assets/sdbl-DoQ_zDzo.js +0 -0
- package/codemini-web/dist/assets/shaderlab-JWcsxey4.js +1 -0
- package/codemini-web/dist/assets/shaderlab-TbUUdmUb.js +0 -0
- package/codemini-web/dist/assets/shellscript-CxhArCCJ.js +1 -0
- package/codemini-web/dist/assets/shellscript-KUJZnuCi.js +0 -0
- package/codemini-web/dist/assets/shellsession-BeWGuVoR.js +0 -0
- package/codemini-web/dist/assets/shellsession-DYmuifdt.js +1 -0
- package/codemini-web/dist/assets/slack-dark-BcN7KJ02.js +1 -0
- package/codemini-web/dist/assets/slack-dark-BnOYKTBJ.js +0 -0
- package/codemini-web/dist/assets/slack-ochin-43udxtUg.js +0 -0
- package/codemini-web/dist/assets/slack-ochin-D4iInQ9w.js +1 -0
- package/codemini-web/dist/assets/smalltalk-BwSireXb.js +1 -0
- package/codemini-web/dist/assets/smalltalk-Mlf5-xbr.js +0 -0
- package/codemini-web/dist/assets/snazzy-light-B45TfPsv.js +1 -0
- package/codemini-web/dist/assets/snazzy-light-kw-pZEiM.js +0 -0
- package/codemini-web/dist/assets/solarized-dark-8yYW1wLs.js +1 -0
- package/codemini-web/dist/assets/solarized-dark-BDezFa9V.js +0 -0
- package/codemini-web/dist/assets/solarized-light-BY3Hr0Ud.js +1 -0
- package/codemini-web/dist/assets/solarized-light-CkoenhS2.js +0 -0
- package/codemini-web/dist/assets/solidity-CIUlntDs.js +1 -0
- package/codemini-web/dist/assets/solidity-DYHGECBw.js +0 -0
- package/codemini-web/dist/assets/{soy-C6D0Ibo9.js → soy-7iHZG9Jz.js} +1 -1
- package/codemini-web/dist/assets/soy-h0dQKbQs.js +1 -0
- package/codemini-web/dist/assets/sparql-BGRSvFxd.js +1 -0
- package/codemini-web/dist/assets/sparql-DIFvSn1n.js +0 -0
- package/codemini-web/dist/assets/splunk-DOdklC0I.js +0 -0
- package/codemini-web/dist/assets/splunk-DueVPk5k.js +1 -0
- package/codemini-web/dist/assets/sql-CZAMrWdL.js +0 -0
- package/codemini-web/dist/assets/sql-Q6zkgi_w.js +1 -0
- package/codemini-web/dist/assets/ssh-config-DKIMErlp.js +1 -0
- package/codemini-web/dist/assets/ssh-config-DwwFW7AS.js +0 -0
- package/codemini-web/dist/assets/stata-C5mLa_ER.js +0 -0
- package/codemini-web/dist/assets/stata-lXN9BRaz.js +1 -0
- package/codemini-web/dist/assets/stylus-BO6mlOab.js +0 -0
- package/codemini-web/dist/assets/stylus-oqceM0yt.js +1 -0
- package/codemini-web/dist/assets/surrealql-DyoUfV6n.js +0 -0
- package/codemini-web/dist/assets/surrealql-l0SGzwOs.js +1 -0
- package/codemini-web/dist/assets/svelte-BM89dRu0.js +1 -0
- package/codemini-web/dist/assets/{svelte-DJ-0FpL2.js → svelte-CijnRGul.js} +1 -1
- package/codemini-web/dist/assets/swift-D9A08YU9.js +0 -0
- package/codemini-web/dist/assets/swift-foA31xPc.js +1 -0
- package/codemini-web/dist/assets/synthwave-84-B002ZU4p.js +1 -0
- package/codemini-web/dist/assets/synthwave-84-C69NN2j9.js +0 -0
- package/codemini-web/dist/assets/system-verilog-CCSGcM60.js +1 -0
- package/codemini-web/dist/assets/system-verilog-DjR3sN6w.js +0 -0
- package/codemini-web/dist/assets/systemd-BymS_eIJ.js +1 -0
- package/codemini-web/dist/assets/systemd-CJWuVSJU.js +0 -0
- package/codemini-web/dist/assets/talonscript-CXqq0wX-.js +0 -0
- package/codemini-web/dist/assets/talonscript-Ccc0122j.js +1 -0
- package/codemini-web/dist/assets/tasl-GVNf7pB7.js +0 -0
- package/codemini-web/dist/assets/tasl-o38sfjeU.js +1 -0
- package/codemini-web/dist/assets/tcl-DISPE-5Q.js +1 -0
- package/codemini-web/dist/assets/tcl-DNlfRSl5.js +0 -0
- package/codemini-web/dist/assets/{templ-7Bvm-rei.js → templ-CNjJl440.js} +1 -1
- package/codemini-web/dist/assets/templ-D1GoDFsp.js +1 -0
- package/codemini-web/dist/assets/terraform-DUK0FOOj.js +0 -0
- package/codemini-web/dist/assets/terraform-V85Kewcz.js +1 -0
- package/codemini-web/dist/assets/tex-CxEkh6NI.js +1 -0
- package/codemini-web/dist/assets/tex-ezg8IclB.js +0 -0
- package/codemini-web/dist/assets/tokyo-night-BLn5KNCP.js +1 -0
- package/codemini-web/dist/assets/tokyo-night-DWTtuXS3.js +0 -0
- package/codemini-web/dist/assets/toml-X5n3zjEH.js +0 -0
- package/codemini-web/dist/assets/toml-uEjeW8NC.js +1 -0
- package/codemini-web/dist/assets/{ts-tags-BfuR6EQ0.js → ts-tags-B88Nbzcl.js} +1 -1
- package/codemini-web/dist/assets/ts-tags-DV6nguf9.js +1 -0
- package/codemini-web/dist/assets/tsv-Bqs_rchc.js +0 -0
- package/codemini-web/dist/assets/tsv-DjGwUc04.js +1 -0
- package/codemini-web/dist/assets/tsx-5O-M05V0.js +1 -0
- package/codemini-web/dist/assets/tsx-CfyUE2pW.js +0 -0
- package/codemini-web/dist/assets/turtle-BsUuoeVK.js +0 -0
- package/codemini-web/dist/assets/turtle-PTxTluYn.js +1 -0
- package/codemini-web/dist/assets/twig-B3Kws0Fb.js +1 -0
- package/codemini-web/dist/assets/{twig-_uxJ-QmX.js → twig-BROkIZLg.js} +1 -1
- package/codemini-web/dist/assets/typescript-C6LvTgbf.js +0 -0
- package/codemini-web/dist/assets/typescript-hRweav8r.js +1 -0
- package/codemini-web/dist/assets/typespec-CKEcF6Kw.js +1 -0
- package/codemini-web/dist/assets/{typespec-8nkhqWz6.js → typespec-N7-U_jBZ.js} +0 -0
- package/codemini-web/dist/assets/typst-CPL77SDw.js +0 -0
- package/codemini-web/dist/assets/typst-DSQh9HII.js +1 -0
- package/codemini-web/dist/assets/v-CoJD3IPx.js +0 -0
- package/codemini-web/dist/assets/v-obK6h_YW.js +1 -0
- package/codemini-web/dist/assets/vala-C42IfotU.js +0 -0
- package/codemini-web/dist/assets/vala-DXa9jSo-.js +1 -0
- package/codemini-web/dist/assets/vb-CVMKTK26.js +0 -0
- package/codemini-web/dist/assets/vb-DEPbtYq-.js +1 -0
- package/codemini-web/dist/assets/verilog-Bs-185hK.js +1 -0
- package/codemini-web/dist/assets/verilog-P63PhzSt.js +0 -0
- package/codemini-web/dist/assets/vesper-B7BneC5G.js +1 -0
- package/codemini-web/dist/assets/vesper-BGr95374.js +0 -0
- package/codemini-web/dist/assets/vhdl-2WwUdgX8.js +0 -0
- package/codemini-web/dist/assets/vhdl-CBukgB2Z.js +1 -0
- package/codemini-web/dist/assets/viml-C1cRY0x6.js +1 -0
- package/codemini-web/dist/assets/viml-CGPGWJA6.js +0 -0
- package/codemini-web/dist/assets/vitesse-black-D3_12zni.js +1 -0
- package/codemini-web/dist/assets/vitesse-black-cI0k84-I.js +0 -0
- package/codemini-web/dist/assets/vitesse-dark-B_iF7INE.js +1 -0
- package/codemini-web/dist/assets/vitesse-dark-SouM0FMW.js +0 -0
- package/codemini-web/dist/assets/vitesse-light-DbrrMtxY.js +1 -0
- package/codemini-web/dist/assets/vitesse-light-WiCy6lDO.js +0 -0
- package/codemini-web/dist/assets/{vue-DkOBu49o.js → vue-BUQP_8VF.js} +1 -1
- package/codemini-web/dist/assets/vue-CT36qSUr.js +1 -0
- package/codemini-web/dist/assets/vue-html-Bx2Sgp8M.js +0 -0
- package/codemini-web/dist/assets/vue-html-bJyjqZnI.js +1 -0
- package/codemini-web/dist/assets/vue-vine-BLqV15Pm.js +1 -0
- package/codemini-web/dist/assets/{vue-vine-veyFk6GJ.js → vue-vine-RK3AHrhp.js} +1 -1
- package/codemini-web/dist/assets/vyper-BxVot6rR.js +1 -0
- package/codemini-web/dist/assets/vyper-DP_vqZO9.js +0 -0
- package/codemini-web/dist/assets/wasm-BNTPmfEI.js +1 -0
- package/codemini-web/dist/assets/wasm-Db7VBw0n.js +0 -0
- package/codemini-web/dist/assets/wasm-DiIFv9DE.js +0 -0
- package/codemini-web/dist/assets/wasm-o5uYkU9G.js +1 -0
- package/codemini-web/dist/assets/wenyan-MnC4h24X.js +1 -0
- package/codemini-web/dist/assets/wenyan-ZEcjghA1.js +0 -0
- package/codemini-web/dist/assets/wgsl-BgfkHnVi.js +1 -0
- package/codemini-web/dist/assets/wgsl-CdusuPLe.js +0 -0
- package/codemini-web/dist/assets/wikitext-CBIB6hmW.js +0 -0
- package/codemini-web/dist/assets/wikitext-DCOnP3yk.js +1 -0
- package/codemini-web/dist/assets/wit-5UDEI7sp.js +1 -0
- package/codemini-web/dist/assets/wit-ZhUbVeze.js +0 -0
- package/codemini-web/dist/assets/wolfram-HyMOyERF.js +0 -0
- package/codemini-web/dist/assets/wolfram-vvgPlu2n.js +1 -0
- package/codemini-web/dist/assets/xml-BkdunjRC.js +0 -0
- package/codemini-web/dist/assets/xml-DyJ3D9rW.js +1 -0
- package/codemini-web/dist/assets/xsl-BOsdDgv_.js +1 -0
- package/codemini-web/dist/assets/xsl-C66i1pDH.js +0 -0
- package/codemini-web/dist/assets/yaml-C-G727Y6.js +1 -0
- package/codemini-web/dist/assets/yaml-D_uvhEF7.js +0 -0
- package/codemini-web/dist/assets/zenscript-BPjqX0BY.js +1 -0
- package/codemini-web/dist/assets/zenscript-C6ZuzgrL.js +0 -0
- package/codemini-web/dist/assets/zig-Bd91oU8r.js +1 -0
- package/codemini-web/dist/assets/zig-Do2h8XKj.js +0 -0
- package/codemini-web/dist/codemini_logo.png +0 -0
- package/codemini-web/dist/favicon.ico +0 -0
- package/codemini-web/dist/index.html +6 -3
- package/codemini-web/lib/approval-manager.js +0 -0
- package/codemini-web/lib/runtime-bridge.js +22 -1
- package/codemini-web/server.js +919 -846
- package/deployment.md +5 -5
- package/package.json +1 -1
- package/skills/brainstorm/SKILL.md +3 -1
- package/skills/grill-me/SKILL.md +0 -0
- package/skills/project-requirements/SKILL.md +293 -291
- package/skills/superpowers-lite/SKILL.md +18 -32
- package/skills/writing-plans/SKILL.md +67 -67
- package/souls/anime.md +0 -0
- package/souls/caveman.md +0 -0
- package/souls/ceo.md +0 -0
- package/souls/default.md +0 -0
- package/souls/pirate.md +0 -0
- package/souls/playful.md +0 -0
- package/souls/professional.md +0 -0
- package/src/cli.js +0 -0
- package/src/commands/chat.js +1 -1
- package/src/commands/config.js +0 -0
- package/src/commands/doctor.js +0 -0
- package/src/commands/run.js +22 -7
- package/src/commands/skill.js +0 -0
- package/src/commands/web.js +0 -0
- package/src/core/agent-loop.js +11 -7
- package/src/core/ast.js +0 -0
- package/src/core/bounded-cache.js +0 -0
- package/src/core/chat-runtime.js +427 -91
- package/src/core/checkpoint-store.js +0 -0
- package/src/core/command-evaluator.js +9 -3
- package/src/core/command-loader.js +0 -0
- package/src/core/command-policy.js +0 -0
- package/src/core/command-risk.js +9 -1
- package/src/core/config-store.js +4 -2
- package/src/core/constants.js +0 -0
- package/src/core/context-compact.js +65 -3
- package/src/core/crypto-utils.js +0 -0
- package/src/core/default-system-prompt.js +12 -4
- package/src/core/dream-audit.js +0 -0
- package/src/core/dream-consolidate.js +0 -0
- package/src/core/dream-evaluator.js +0 -0
- package/src/core/fff-adapter.js +1 -1
- package/src/core/fs-utils.js +0 -0
- package/src/core/input-history-store.js +0 -0
- package/src/core/input-parser.js +0 -0
- package/src/core/memory-policy.js +0 -0
- package/src/core/memory-prompt.js +0 -0
- package/src/core/memory-store.js +0 -0
- package/src/core/paths.js +0 -0
- package/src/core/plan-state.js +0 -0
- package/src/core/project-index.js +0 -0
- package/src/core/provider/anthropic.js +0 -0
- package/src/core/provider/index.js +0 -0
- package/src/core/provider/openai-compatible.js +0 -0
- package/src/core/reflect-skill.js +1 -1
- package/src/core/reply-language.js +16 -1
- package/src/core/session-store.js +0 -0
- package/src/core/shell-profile.js +14 -1
- package/src/core/shell.js +0 -0
- package/src/core/skill-registry.js +0 -0
- package/src/core/soul.js +1 -3
- package/src/core/string-utils.js +0 -0
- package/src/core/system-prompt-composer.js +42 -0
- package/src/core/todo-state.js +0 -0
- package/src/core/tool-args.js +0 -0
- package/src/core/tool-output.js +0 -0
- package/src/core/tool-result-store.js +0 -0
- package/src/core/tools.js +2 -2
- package/src/tui/chat-app.js +13 -3
- package/src/tui/input-escape.js +0 -0
- package/src/tui/skill-activity/index.js +0 -0
- package/src/tui/tool-activity/common.js +0 -0
- package/src/tui/tool-activity/index.js +0 -0
- package/src/tui/tool-activity/presenters/command.js +0 -0
- package/src/tui/tool-activity/presenters/files.js +0 -0
- package/src/tui/tool-activity/presenters/misc.js +0 -0
- package/src/tui/tool-activity/presenters/system.js +0 -0
- package/src/tui/tool-narration/common.js +0 -0
- package/src/tui/tool-narration/presenters/change.js +0 -0
- package/src/tui/tool-narration/presenters/edit.js +0 -0
- package/src/tui/tool-narration/presenters/generic.js +0 -0
- package/src/tui/tool-narration/presenters/glob.js +0 -0
- package/src/tui/tool-narration/presenters/grep.js +0 -0
- package/src/tui/tool-narration/presenters/list.js +0 -0
- package/src/tui/tool-narration/presenters/read.js +0 -0
- package/src/tui/tool-narration/presenters/run.js +0 -0
- package/src/tui/tool-narration/presenters/write.js +0 -0
- package/src/tui/tool-narration.js +0 -0
- package/templates/project-requirements/report-shell.html +46 -46
- package/codemini-web/dist/assets/index-BZ01DHrh.js +0 -206
- package/codemini-web/dist/assets/index-Dq1mwNaQ.css +0 -2
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-BuB6-G4r.js +0 -1
package/src/core/chat-runtime.js
CHANGED
|
@@ -20,13 +20,13 @@ import { createCheckpoint, listCheckpoints, loadCheckpoint } from './checkpoint-
|
|
|
20
20
|
import {
|
|
21
21
|
compactMessagesLocally,
|
|
22
22
|
estimateMessagesTokens,
|
|
23
|
+
microCompactMessages,
|
|
23
24
|
parseCompactArgs
|
|
24
25
|
} from './context-compact.js';
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
26
|
+
import { getReplyLanguage, getReplyLanguageName } from './reply-language.js';
|
|
27
|
+
import { composeSystemPrompt } from './system-prompt-composer.js';
|
|
27
28
|
import { getProjectPlansDir, getProjectSpecsDir, getProjectWorkspaceDir, getSessionsDir } from './paths.js';
|
|
28
29
|
import { buildProjectContextSnippet, initializeProjectIndex } from './project-index.js';
|
|
29
|
-
import { buildMemorySnapshot } from './memory-prompt.js';
|
|
30
30
|
import { forgetMemory, listMemories, rememberMemory, searchMemories, captureToInbox, listInbox } from './memory-store.js';
|
|
31
31
|
import { runDreamConsolidation } from './dream-consolidate.js';
|
|
32
32
|
import { normalizePlanState } from './plan-state.js';
|
|
@@ -115,6 +115,8 @@ function getCompletionCopy(language = 'zh') {
|
|
|
115
115
|
'context.read_file_default_lines': 'read_file 默认行数窗口',
|
|
116
116
|
'context.read_file_max_chars': 'read_file 字符上限',
|
|
117
117
|
'context.prompt_budget_audit': 'Prompt 预算审计开关',
|
|
118
|
+
'context.microcompact_enabled': '微压缩(micro-compact)开关',
|
|
119
|
+
'context.microcompact_keep_recent': '微压缩保留最近工具结果数',
|
|
118
120
|
'sessions.max_sessions': '会话保留上限',
|
|
119
121
|
'sessions.retention_days': '会话保留天数',
|
|
120
122
|
'shell.default': '默认 shell',
|
|
@@ -220,6 +222,8 @@ function getCompletionCopy(language = 'zh') {
|
|
|
220
222
|
'context.read_file_default_lines': 'default read_file line window',
|
|
221
223
|
'context.read_file_max_chars': 'read_file character limit',
|
|
222
224
|
'context.prompt_budget_audit': 'prompt budget audit switch',
|
|
225
|
+
'context.microcompact_enabled': 'micro-compact enabled',
|
|
226
|
+
'context.microcompact_keep_recent': 'micro-compact keep recent tool results',
|
|
223
227
|
'sessions.max_sessions': 'stored session limit',
|
|
224
228
|
'sessions.retention_days': 'session retention days',
|
|
225
229
|
'shell.default': 'default shell',
|
|
@@ -341,6 +345,104 @@ const PROJECT_REQUIREMENTS_SECTION_MARKERS = [
|
|
|
341
345
|
{ key: 'questions', marker: 'REQUIREMENTS_OPEN_QUESTIONS', labels: ['10', 'open questions', 'unknowns', '待确认问题', '待确认', '问题'] },
|
|
342
346
|
{ key: 'evidence', marker: 'REQUIREMENTS_EVIDENCE_INDEX', labels: ['11', 'evidence', 'source evidence', 'source evidence index', '源码证据索引', '证据索引', '源码证据'] }
|
|
343
347
|
];
|
|
348
|
+
const PROJECT_REQUIREMENTS_SHELL_COPY = {
|
|
349
|
+
en: {
|
|
350
|
+
html_lang: 'en',
|
|
351
|
+
title: 'Project Requirements Report',
|
|
352
|
+
meta_workspace: 'Workspace',
|
|
353
|
+
meta_date: 'Date',
|
|
354
|
+
meta_generated: 'Generated',
|
|
355
|
+
nav_label: 'Report sections',
|
|
356
|
+
nav_summary: 'Summary',
|
|
357
|
+
nav_architecture: 'Architecture',
|
|
358
|
+
nav_interfaces: 'Interfaces',
|
|
359
|
+
nav_requirements: 'Requirements',
|
|
360
|
+
nav_flows: 'Flows',
|
|
361
|
+
nav_domain: 'Domain Model',
|
|
362
|
+
nav_security: 'Security',
|
|
363
|
+
nav_errors: 'Errors',
|
|
364
|
+
nav_nonfunctional: 'Non-functional',
|
|
365
|
+
nav_questions: 'Open Questions',
|
|
366
|
+
nav_evidence: 'Evidence',
|
|
367
|
+
search_placeholder: 'Search APIs, modules, evidence...',
|
|
368
|
+
expand_all: 'Expand all',
|
|
369
|
+
collapse_all: 'Collapse all',
|
|
370
|
+
questions_only: 'Questions only',
|
|
371
|
+
show_all_sections: 'Show all sections',
|
|
372
|
+
no_results: 'No matching content found.',
|
|
373
|
+
heading_summary: 'Executive Summary',
|
|
374
|
+
heading_architecture: 'System Architecture',
|
|
375
|
+
heading_interfaces: 'Interface Inventory',
|
|
376
|
+
heading_requirements: 'Requirement Cards',
|
|
377
|
+
heading_flows: 'Core Flows',
|
|
378
|
+
heading_domain: 'Domain Model And Data Ownership',
|
|
379
|
+
heading_security: 'Permissions, Security, And Compliance',
|
|
380
|
+
heading_errors: 'Error Handling And Edge Cases',
|
|
381
|
+
heading_nonfunctional: 'Non-functional Requirements',
|
|
382
|
+
heading_questions: 'Open Questions',
|
|
383
|
+
heading_evidence: 'Source Evidence Index',
|
|
384
|
+
pending_summary: 'Pending summary.',
|
|
385
|
+
pending_architecture: 'Pending architecture map.',
|
|
386
|
+
pending_interfaces: 'Pending interface inventory.',
|
|
387
|
+
pending_requirements: 'Pending requirement cards.',
|
|
388
|
+
pending_flows: 'Pending flow diagrams.',
|
|
389
|
+
pending_domain: 'Pending domain model and data ownership.',
|
|
390
|
+
pending_security: 'Pending permissions, security, and compliance notes.',
|
|
391
|
+
pending_errors: 'Pending error handling and edge cases.',
|
|
392
|
+
pending_nonfunctional: 'Pending non-functional requirements.',
|
|
393
|
+
pending_questions: 'Pending open questions.',
|
|
394
|
+
pending_evidence: 'Pending evidence index.',
|
|
395
|
+
back_to_top: 'Back to top'
|
|
396
|
+
},
|
|
397
|
+
zh: {
|
|
398
|
+
html_lang: 'zh-CN',
|
|
399
|
+
title: '项目需求报告',
|
|
400
|
+
meta_workspace: '工作区',
|
|
401
|
+
meta_date: '日期',
|
|
402
|
+
meta_generated: '生成时间',
|
|
403
|
+
nav_label: '报告章节',
|
|
404
|
+
nav_summary: '摘要',
|
|
405
|
+
nav_architecture: '系统架构',
|
|
406
|
+
nav_interfaces: '接口清单',
|
|
407
|
+
nav_requirements: '需求卡片',
|
|
408
|
+
nav_flows: '核心流程',
|
|
409
|
+
nav_domain: '领域模型',
|
|
410
|
+
nav_security: '权限与安全',
|
|
411
|
+
nav_errors: '异常与边界',
|
|
412
|
+
nav_nonfunctional: '非功能需求',
|
|
413
|
+
nav_questions: '开放问题',
|
|
414
|
+
nav_evidence: '证据索引',
|
|
415
|
+
search_placeholder: '搜索 API、模块、证据...',
|
|
416
|
+
expand_all: '全部展开',
|
|
417
|
+
collapse_all: '全部收起',
|
|
418
|
+
questions_only: '仅看问题',
|
|
419
|
+
show_all_sections: '显示全部章节',
|
|
420
|
+
no_results: '未找到匹配内容。',
|
|
421
|
+
heading_summary: '执行摘要',
|
|
422
|
+
heading_architecture: '系统架构',
|
|
423
|
+
heading_interfaces: '接口清单',
|
|
424
|
+
heading_requirements: '需求卡片',
|
|
425
|
+
heading_flows: '核心流程',
|
|
426
|
+
heading_domain: '领域模型与数据归属',
|
|
427
|
+
heading_security: '权限、安全与合规',
|
|
428
|
+
heading_errors: '异常处理与边界情况',
|
|
429
|
+
heading_nonfunctional: '非功能需求',
|
|
430
|
+
heading_questions: '开放问题',
|
|
431
|
+
heading_evidence: '源码证据索引',
|
|
432
|
+
pending_summary: '等待填写摘要。',
|
|
433
|
+
pending_architecture: '等待填写架构图。',
|
|
434
|
+
pending_interfaces: '等待填写接口清单。',
|
|
435
|
+
pending_requirements: '等待填写需求卡片。',
|
|
436
|
+
pending_flows: '等待填写流程图。',
|
|
437
|
+
pending_domain: '等待填写领域模型与数据归属。',
|
|
438
|
+
pending_security: '等待填写权限、安全与合规说明。',
|
|
439
|
+
pending_errors: '等待填写异常处理与边界情况。',
|
|
440
|
+
pending_nonfunctional: '等待填写非功能需求。',
|
|
441
|
+
pending_questions: '等待填写开放问题。',
|
|
442
|
+
pending_evidence: '等待填写证据索引。',
|
|
443
|
+
back_to_top: '返回顶部'
|
|
444
|
+
}
|
|
445
|
+
};
|
|
344
446
|
const PLAN_MEMORY_MARKERS = {
|
|
345
447
|
findings: ['<!-- plan-findings-start -->', '<!-- plan-findings-end -->'],
|
|
346
448
|
progress: ['<!-- plan-progress-start -->', '<!-- plan-progress-end -->']
|
|
@@ -483,16 +585,52 @@ function buildPipelineStepGuidance({ role, stepIndex, totalSteps, isFirst, isLas
|
|
|
483
585
|
return lines.join('\n');
|
|
484
586
|
}
|
|
485
587
|
|
|
486
|
-
function
|
|
588
|
+
function extractTaskKeywords(task) {
|
|
589
|
+
const text = String(task || '').toLowerCase();
|
|
590
|
+
const tokens = text.match(/[a-z0-9_./:-]{3,}|[\u4e00-\u9fa5]{2,}/g) || [];
|
|
591
|
+
const stop = new Set([
|
|
592
|
+
'the', 'and', 'for', 'with', 'that', 'this', 'from', 'into', 'task',
|
|
593
|
+
'please', 'update', 'change', 'fix', 'implement', 'review', 'test'
|
|
594
|
+
]);
|
|
595
|
+
return [...new Set(tokens.filter((token) => !stop.has(token)))].slice(0, 24);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
function scoreMessageForTask(message, keywords) {
|
|
599
|
+
if (!keywords.length) return 0;
|
|
600
|
+
const text = String(message?.content || '').toLowerCase();
|
|
601
|
+
if (!text) return 0;
|
|
602
|
+
let score = 0;
|
|
603
|
+
for (const keyword of keywords) {
|
|
604
|
+
if (text.includes(keyword)) score += keyword.includes('/') || keyword.includes('.') ? 3 : 1;
|
|
605
|
+
}
|
|
606
|
+
return score;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
function buildSubAgentContextPacket(session, task = '') {
|
|
487
610
|
const source = Array.isArray(session?.messages) ? session.messages : [];
|
|
488
|
-
const
|
|
611
|
+
const candidates = source
|
|
489
612
|
.filter((msg) => msg && (msg.role === 'user' || msg.role === 'assistant'))
|
|
490
|
-
.
|
|
491
|
-
if (
|
|
613
|
+
.map((msg, index) => ({ msg, index }));
|
|
614
|
+
if (candidates.length === 0) return '';
|
|
615
|
+
const keywords = extractTaskKeywords(task);
|
|
616
|
+
const recentStart = Math.max(0, candidates.length - SUB_AGENT_CONTEXT_MAX_MESSAGES);
|
|
617
|
+
const ranked = candidates
|
|
618
|
+
.map((item, order) => ({
|
|
619
|
+
...item,
|
|
620
|
+
score: scoreMessageForTask(item.msg, keywords),
|
|
621
|
+
recentScore: order >= recentStart ? 1 : 0
|
|
622
|
+
}))
|
|
623
|
+
.sort((a, b) => {
|
|
624
|
+
const scoreDelta = (b.score + b.recentScore) - (a.score + a.recentScore);
|
|
625
|
+
if (scoreDelta !== 0) return scoreDelta;
|
|
626
|
+
return b.index - a.index;
|
|
627
|
+
})
|
|
628
|
+
.slice(0, SUB_AGENT_CONTEXT_MAX_MESSAGES)
|
|
629
|
+
.sort((a, b) => a.index - b.index);
|
|
492
630
|
|
|
493
631
|
const lines = [];
|
|
494
632
|
let usedChars = 0;
|
|
495
|
-
for (const msg of
|
|
633
|
+
for (const { msg } of ranked) {
|
|
496
634
|
const role = msg.role === 'assistant' ? 'assistant' : 'user';
|
|
497
635
|
const text = trimInline(msg.content, 260);
|
|
498
636
|
if (!text) continue;
|
|
@@ -503,7 +641,7 @@ function buildSubAgentContextPacket(session) {
|
|
|
503
641
|
}
|
|
504
642
|
if (lines.length === 0) return '';
|
|
505
643
|
return [
|
|
506
|
-
'Scoped parent context (
|
|
644
|
+
'Scoped parent context (task-relevant snippets, not full history):',
|
|
507
645
|
...lines,
|
|
508
646
|
'Use this context only if it helps the current task.'
|
|
509
647
|
].join('\n');
|
|
@@ -1234,8 +1372,8 @@ function classifyAutoRoute(text = '') {
|
|
|
1234
1372
|
};
|
|
1235
1373
|
}
|
|
1236
1374
|
|
|
1237
|
-
function
|
|
1238
|
-
|
|
1375
|
+
function buildMediumTaskPromptBlock() {
|
|
1376
|
+
return [
|
|
1239
1377
|
'Task Mode: medium',
|
|
1240
1378
|
'Execution guidance:',
|
|
1241
1379
|
'- Give a brief execution outline before coding.',
|
|
@@ -1244,12 +1382,11 @@ function buildMediumTaskSystemPrompt(systemPrompt) {
|
|
|
1244
1382
|
'- Verify the changed behavior before finishing.',
|
|
1245
1383
|
'- If major ambiguity appears mid-task, say so clearly and ask for a plan instead of guessing.'
|
|
1246
1384
|
].join('\n');
|
|
1247
|
-
return `${systemPrompt}\n\n${guidance}`;
|
|
1248
1385
|
}
|
|
1249
1386
|
|
|
1250
|
-
function
|
|
1387
|
+
function buildAutoSkillPromptBlock(commands, config, text) {
|
|
1251
1388
|
const selected = classifyAutoRoute(text).selectedSkills.filter((name) => isSkillEnabled(config, name, commands.get(name)));
|
|
1252
|
-
if (selected.length === 0) return
|
|
1389
|
+
if (selected.length === 0) return '';
|
|
1253
1390
|
|
|
1254
1391
|
const blocks = [];
|
|
1255
1392
|
for (const name of selected) {
|
|
@@ -1257,8 +1394,7 @@ function buildAutoSkillSystemPrompt(baseSystemPrompt, commands, config, text) {
|
|
|
1257
1394
|
if (!skill || skill.metadata?.type !== 'skill') continue;
|
|
1258
1395
|
blocks.push(`[Auto skill: ${name}]\n${skill.content}`);
|
|
1259
1396
|
}
|
|
1260
|
-
|
|
1261
|
-
return `${baseSystemPrompt}\n\n${blocks.join('\n\n')}`;
|
|
1397
|
+
return blocks.join('\n\n');
|
|
1262
1398
|
}
|
|
1263
1399
|
|
|
1264
1400
|
function extractJsonBlock(text) {
|
|
@@ -1745,6 +1881,13 @@ async function buildAutoPlanFinalSummary({
|
|
|
1745
1881
|
}
|
|
1746
1882
|
|
|
1747
1883
|
try {
|
|
1884
|
+
const summarySystemPrompt = await composeSystemPrompt({
|
|
1885
|
+
shellRulesPrompt: systemPrompt,
|
|
1886
|
+
config,
|
|
1887
|
+
skillsPrompt: 'You are writing the final execution summary for a completed auto plan. Focus on closure, verification status, and the next action.',
|
|
1888
|
+
includeSoul: false,
|
|
1889
|
+
includeMemory: false
|
|
1890
|
+
});
|
|
1748
1891
|
const result = await createChatCompletion({
|
|
1749
1892
|
sdkProvider: config.sdk?.provider,
|
|
1750
1893
|
baseUrl: config.gateway.base_url,
|
|
@@ -1753,7 +1896,7 @@ async function buildAutoPlanFinalSummary({
|
|
|
1753
1896
|
messages: [
|
|
1754
1897
|
{
|
|
1755
1898
|
role: 'system',
|
|
1756
|
-
content:
|
|
1899
|
+
content: summarySystemPrompt
|
|
1757
1900
|
},
|
|
1758
1901
|
{
|
|
1759
1902
|
role: 'user',
|
|
@@ -1876,6 +2019,13 @@ async function buildSpecWithModel({
|
|
|
1876
2019
|
'## Testing / Validation',
|
|
1877
2020
|
'Make it concrete, scoped, and suitable for turning into a sub-agent implementation plan.'
|
|
1878
2021
|
].join('\n');
|
|
2022
|
+
const specSystemPrompt = await composeSystemPrompt({
|
|
2023
|
+
shellRulesPrompt: systemPrompt,
|
|
2024
|
+
config,
|
|
2025
|
+
skillsPrompt: prompt,
|
|
2026
|
+
includeSoul: false,
|
|
2027
|
+
includeMemory: false
|
|
2028
|
+
});
|
|
1879
2029
|
|
|
1880
2030
|
const result = await createChatCompletion({
|
|
1881
2031
|
sdkProvider: config.sdk?.provider,
|
|
@@ -1883,7 +2033,7 @@ async function buildSpecWithModel({
|
|
|
1883
2033
|
apiKey: config.gateway.api_key,
|
|
1884
2034
|
model: model || config.model.name,
|
|
1885
2035
|
messages: [
|
|
1886
|
-
{ role: 'system', content:
|
|
2036
|
+
{ role: 'system', content: specSystemPrompt },
|
|
1887
2037
|
{ role: 'user', content: `Topic: ${topic}` }
|
|
1888
2038
|
],
|
|
1889
2039
|
timeoutMs: config.gateway.timeout_ms || 1800000,
|
|
@@ -1936,6 +2086,13 @@ async function buildPlanFromSpecWithModel({
|
|
|
1936
2086
|
'## Task Breakdown',
|
|
1937
2087
|
'Make the plan concrete and ordered for a coding agent.'
|
|
1938
2088
|
].join('\n');
|
|
2089
|
+
const planSystemPrompt = await composeSystemPrompt({
|
|
2090
|
+
shellRulesPrompt: systemPrompt,
|
|
2091
|
+
config,
|
|
2092
|
+
skillsPrompt: prompt,
|
|
2093
|
+
includeSoul: false,
|
|
2094
|
+
includeMemory: false
|
|
2095
|
+
});
|
|
1939
2096
|
|
|
1940
2097
|
const result = await createChatCompletion({
|
|
1941
2098
|
sdkProvider: config.sdk?.provider,
|
|
@@ -1943,7 +2100,7 @@ async function buildPlanFromSpecWithModel({
|
|
|
1943
2100
|
apiKey: config.gateway.api_key,
|
|
1944
2101
|
model: model || config.model.name,
|
|
1945
2102
|
messages: [
|
|
1946
|
-
{ role: 'system', content:
|
|
2103
|
+
{ role: 'system', content: planSystemPrompt },
|
|
1947
2104
|
{
|
|
1948
2105
|
role: 'user',
|
|
1949
2106
|
content: `Spec path: ${specPath || '(inline)'}\n\nProject implementation constraints:\n${projectConstraints}\n\n${specText}`
|
|
@@ -2150,6 +2307,22 @@ function buildRuntimeStateSnapshot({ currentSession, config, model, executionMod
|
|
|
2150
2307
|
value: currentSession?.planState?.status === 'pending_reflect_skill',
|
|
2151
2308
|
enumerable: false,
|
|
2152
2309
|
writable: false
|
|
2310
|
+
},
|
|
2311
|
+
replyLanguage: {
|
|
2312
|
+
value: getReplyLanguage(config),
|
|
2313
|
+
enumerable: false,
|
|
2314
|
+
writable: false
|
|
2315
|
+
},
|
|
2316
|
+
toJSON: {
|
|
2317
|
+
value: () => ({
|
|
2318
|
+
...snapshot,
|
|
2319
|
+
currentContextTokens,
|
|
2320
|
+
contextUsagePct,
|
|
2321
|
+
pendingReflectSkill: currentSession?.planState?.status === 'pending_reflect_skill',
|
|
2322
|
+
replyLanguage: getReplyLanguage(config)
|
|
2323
|
+
}),
|
|
2324
|
+
enumerable: false,
|
|
2325
|
+
writable: false
|
|
2153
2326
|
}
|
|
2154
2327
|
});
|
|
2155
2328
|
return snapshot;
|
|
@@ -2417,28 +2590,61 @@ async function askModel({
|
|
|
2417
2590
|
signal,
|
|
2418
2591
|
allowedTools,
|
|
2419
2592
|
maxSteps: maxStepsOverride,
|
|
2420
|
-
skipAnalysisNudge = false
|
|
2593
|
+
skipAnalysisNudge = false,
|
|
2594
|
+
compactedForModel: compactedInput = null,
|
|
2595
|
+
onCompactedUpdate = null
|
|
2421
2596
|
}) {
|
|
2597
|
+
let compacted = compactedInput;
|
|
2422
2598
|
const modelInputText = typeof modelText === 'string' && modelText ? modelText : text;
|
|
2423
2599
|
const maxContextTokens = effectiveMaxContextTokens(config);
|
|
2424
|
-
const triggerPct = Number(config.context?.preflight_trigger_pct ||
|
|
2600
|
+
const triggerPct = Number(config.context?.preflight_trigger_pct || 60);
|
|
2425
2601
|
const hardPct = Number(config.context?.hard_limit_pct || 98);
|
|
2426
|
-
const
|
|
2602
|
+
const messagesForEstimate = compacted ?? session.messages;
|
|
2603
|
+
const preflightTokens = estimatePromptTokensForRequest(messagesForEstimate, modelInputText);
|
|
2427
2604
|
const preflightPct = (preflightTokens / maxContextTokens) * 100;
|
|
2428
2605
|
|
|
2429
2606
|
if (persistSession && preflightPct >= triggerPct) {
|
|
2430
|
-
const
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2607
|
+
const compactSource = compacted ?? session.messages;
|
|
2608
|
+
// Phase 0: try micro-compact first (in-place tool result clearing)
|
|
2609
|
+
const microEnabled = config.context?.microcompact_enabled !== false;
|
|
2610
|
+
const microKeep = Number(config.context?.microcompact_keep_recent || 5);
|
|
2611
|
+
let needsMacro = true;
|
|
2612
|
+
if (microEnabled) {
|
|
2613
|
+
const micro = microCompactMessages(compactSource, { keepRecent: microKeep, enabled: true });
|
|
2614
|
+
if (micro.changed) {
|
|
2615
|
+
compacted = micro.messages.map((m) => ({ ...m, at: new Date().toISOString() }));
|
|
2616
|
+
if (onCompactedUpdate) onCompactedUpdate(compacted);
|
|
2617
|
+
const afterMicroTokens = estimateMessagesTokens(compacted);
|
|
2618
|
+
const afterMicroPct = (afterMicroTokens / maxContextTokens) * 100;
|
|
2619
|
+
if (onAgentEvent) {
|
|
2620
|
+
onAgentEvent({
|
|
2621
|
+
type: 'compact:auto',
|
|
2622
|
+
mode: 'micro',
|
|
2623
|
+
threshold: Math.round(preflightPct),
|
|
2624
|
+
tokensSaved: micro.tokensSaved
|
|
2625
|
+
});
|
|
2626
|
+
}
|
|
2627
|
+
if (afterMicroPct < triggerPct) {
|
|
2628
|
+
needsMacro = false;
|
|
2629
|
+
}
|
|
2630
|
+
}
|
|
2631
|
+
}
|
|
2632
|
+
if (needsMacro) {
|
|
2633
|
+
const macroSource = compacted ?? compactSource;
|
|
2634
|
+
const auto = compactMessagesLocally(macroSource, {
|
|
2635
|
+
mode: preflightPct >= hardPct ? 'aggressive' : 'conservative',
|
|
2636
|
+
force: true
|
|
2637
|
+
});
|
|
2638
|
+
if (auto.changed) {
|
|
2639
|
+
compacted = auto.compacted.map((m) => ({ ...m, at: new Date().toISOString() }));
|
|
2640
|
+
if (onCompactedUpdate) onCompactedUpdate(compacted, { boundaryIndex: auto.boundaryIndex, mode: preflightPct >= hardPct ? 'aggressive' : 'conservative' });
|
|
2641
|
+
if (onAgentEvent) {
|
|
2642
|
+
onAgentEvent({
|
|
2643
|
+
type: 'compact:auto',
|
|
2644
|
+
mode: preflightPct >= hardPct ? 'aggressive' : 'conservative',
|
|
2645
|
+
threshold: Math.round(preflightPct)
|
|
2646
|
+
});
|
|
2647
|
+
}
|
|
2442
2648
|
}
|
|
2443
2649
|
}
|
|
2444
2650
|
}
|
|
@@ -2505,9 +2711,15 @@ async function askModel({
|
|
|
2505
2711
|
const projectContextSnippet = await buildProjectContextSnippet(process.cwd(), modelInputText).catch(() => '');
|
|
2506
2712
|
const projectContextGuidance =
|
|
2507
2713
|
'Use this project context as lightweight guidance and verify important details with fresh reads when needed.';
|
|
2508
|
-
const effectiveSystemPrompt =
|
|
2509
|
-
|
|
2510
|
-
|
|
2714
|
+
const effectiveSystemPrompt = await composeSystemPrompt({
|
|
2715
|
+
shellRulesPrompt: systemPrompt,
|
|
2716
|
+
config,
|
|
2717
|
+
workspaceRoot: process.cwd(),
|
|
2718
|
+
includeSoul: false,
|
|
2719
|
+
includeMemory: false,
|
|
2720
|
+
projectContextSnippet,
|
|
2721
|
+
projectContextGuidance
|
|
2722
|
+
});
|
|
2511
2723
|
|
|
2512
2724
|
const { definitions, handlers, formatters, deferredDefinitions, dispose: disposeTools } = getBuiltinTools({
|
|
2513
2725
|
workspaceRoot: process.cwd(),
|
|
@@ -2642,6 +2854,7 @@ async function askModel({
|
|
|
2642
2854
|
if (onAgentEvent) onAgentEvent(event);
|
|
2643
2855
|
};
|
|
2644
2856
|
|
|
2857
|
+
const sessionLenBeforeLoop = session.messages.length;
|
|
2645
2858
|
const loopUserPrompt = persistSession ? '' : modelInputText;
|
|
2646
2859
|
const expectedModelText = typeof modelText === 'string' && modelText && modelText !== text ? modelText : '';
|
|
2647
2860
|
const loopResult = await runAgentLoop({
|
|
@@ -2651,7 +2864,7 @@ async function askModel({
|
|
|
2651
2864
|
maxSteps: maxStepsOverride ?? Number(config.execution?.max_steps || 16),
|
|
2652
2865
|
toolDefinitions: filteredDefinitions,
|
|
2653
2866
|
toolHandlers: filteredHandlers,
|
|
2654
|
-
initialMessages: toOpenAIMessages(session.messages),
|
|
2867
|
+
initialMessages: toOpenAIMessages(compacted ?? session.messages),
|
|
2655
2868
|
onEvent: wrappedAgentEvent,
|
|
2656
2869
|
executionMode: executionMode || config.execution?.mode || 'normal',
|
|
2657
2870
|
alwaysAllowTools:
|
|
@@ -2701,9 +2914,15 @@ async function askModel({
|
|
|
2701
2914
|
});
|
|
2702
2915
|
|
|
2703
2916
|
if (persistSession) {
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
|
|
2917
|
+
// Sync new messages to compacted view
|
|
2918
|
+
if (compacted) {
|
|
2919
|
+
const newMsgs = session.messages.slice(sessionLenBeforeLoop);
|
|
2920
|
+
for (const msg of newMsgs) {
|
|
2921
|
+
compacted.push({ ...msg });
|
|
2922
|
+
}
|
|
2923
|
+
if (onCompactedUpdate) onCompactedUpdate(compacted);
|
|
2924
|
+
}
|
|
2925
|
+
// Handle model_content rewrite on the new user message
|
|
2707
2926
|
if (expectedModelText) {
|
|
2708
2927
|
for (let i = session.messages.length - 1; i >= 0; i -= 1) {
|
|
2709
2928
|
const message = session.messages[i];
|
|
@@ -2752,7 +2971,7 @@ async function runSubAgentTask({
|
|
|
2752
2971
|
}) {
|
|
2753
2972
|
const subSession = { id: `sub-${Date.now()}`, messages: [] };
|
|
2754
2973
|
const rolePrompt = getSubAgentRolePrompt(role);
|
|
2755
|
-
const contextPacket = buildSubAgentContextPacket(parentSession);
|
|
2974
|
+
const contextPacket = buildSubAgentContextPacket(parentSession, task || goal);
|
|
2756
2975
|
const evidencePacket = buildSubAgentEvidencePacket(parentSession);
|
|
2757
2976
|
const handoffPacket = buildStepArtifactPacket(priorSteps, role);
|
|
2758
2977
|
const handoffFocusPaths = collectStepArtifacts(priorSteps, role)?.focusPaths || [];
|
|
@@ -2807,12 +3026,19 @@ async function runSubAgentTask({
|
|
|
2807
3026
|
};
|
|
2808
3027
|
const roleAllowedTools = ROLE_TOOL_POLICY[role];
|
|
2809
3028
|
if (onSessionActive) onSessionActive(subSession);
|
|
3029
|
+
const subSystemPrompt = await composeSystemPrompt({
|
|
3030
|
+
shellRulesPrompt: systemPrompt,
|
|
3031
|
+
config,
|
|
3032
|
+
skillsPrompt: [rolePrompt, extraRolePrompt].filter(Boolean).join('\n\n'),
|
|
3033
|
+
includeSoul: false,
|
|
3034
|
+
includeMemory: false
|
|
3035
|
+
});
|
|
2810
3036
|
const subResult = await askModel({
|
|
2811
3037
|
text: scopedTask,
|
|
2812
3038
|
session: subSession,
|
|
2813
3039
|
config,
|
|
2814
3040
|
model,
|
|
2815
|
-
systemPrompt:
|
|
3041
|
+
systemPrompt: subSystemPrompt,
|
|
2816
3042
|
onAgentEvent: wrappedOnAgentEvent,
|
|
2817
3043
|
persistSession: false,
|
|
2818
3044
|
executionMode: 'auto',
|
|
@@ -3122,13 +3348,20 @@ async function buildAutoPlanAndRun({
|
|
|
3122
3348
|
};
|
|
3123
3349
|
let planningError = '';
|
|
3124
3350
|
try {
|
|
3351
|
+
const plannerSystemPrompt = await composeSystemPrompt({
|
|
3352
|
+
shellRulesPrompt: systemPrompt,
|
|
3353
|
+
config,
|
|
3354
|
+
skillsPrompt: plannerPrompt,
|
|
3355
|
+
includeSoul: false,
|
|
3356
|
+
includeMemory: false
|
|
3357
|
+
});
|
|
3125
3358
|
const planning = await createChatCompletion({
|
|
3126
3359
|
sdkProvider: config.sdk?.provider,
|
|
3127
3360
|
baseUrl: config.gateway.base_url,
|
|
3128
3361
|
apiKey: config.gateway.api_key,
|
|
3129
3362
|
model: model || config.model.name,
|
|
3130
3363
|
messages: [
|
|
3131
|
-
{ role: 'system', content:
|
|
3364
|
+
{ role: 'system', content: plannerSystemPrompt },
|
|
3132
3365
|
{
|
|
3133
3366
|
role: 'user',
|
|
3134
3367
|
content: [
|
|
@@ -3288,15 +3521,17 @@ function renderProjectRequirementsSectionContract(ignoredSections = []) {
|
|
|
3288
3521
|
return lines.join('\n');
|
|
3289
3522
|
}
|
|
3290
3523
|
|
|
3291
|
-
function buildProjectRequirementsSteps(renderedSkillPrompt, args = []) {
|
|
3524
|
+
function buildProjectRequirementsSteps(renderedSkillPrompt, args = [], config = {}) {
|
|
3292
3525
|
const options = parseProjectRequirementsOptions(args);
|
|
3293
3526
|
const userArgs = options.raw;
|
|
3294
3527
|
const requestedFocus = userArgs ? `User request/focus: ${userArgs}` : 'User request/focus: full workspace requirements report.';
|
|
3528
|
+
const replyLanguageName = getReplyLanguageName(config);
|
|
3295
3529
|
const reportDate = formatLocalDate();
|
|
3296
3530
|
const reportPath = `docs/requirements/${reportDate}-project-requirements.html`;
|
|
3297
3531
|
const companionPath = `docs/requirements/${reportDate}-project-requirements.md`;
|
|
3298
3532
|
const reportContract = [
|
|
3299
3533
|
requestedFocus,
|
|
3534
|
+
`Reply language: write generated report prose, UI labels inserted into the report, review notes, and final user-facing status in ${replyLanguageName} unless the user explicitly requested a different language. Do not translate REQUIREMENTS_* marker names or source code identifiers.`,
|
|
3300
3535
|
`Primary report path: ${reportPath}`,
|
|
3301
3536
|
`Optional companion Markdown path: ${companionPath}`,
|
|
3302
3537
|
'A pre-created HTML shell already exists at the primary report path.',
|
|
@@ -3531,7 +3766,8 @@ async function createProjectRequirementsShell({
|
|
|
3531
3766
|
planFile,
|
|
3532
3767
|
goal,
|
|
3533
3768
|
steps,
|
|
3534
|
-
depth = 'standard'
|
|
3769
|
+
depth = 'standard',
|
|
3770
|
+
config = {}
|
|
3535
3771
|
}) {
|
|
3536
3772
|
const workspaceRoot = process.cwd();
|
|
3537
3773
|
const absoluteReportPath = path.resolve(workspaceRoot, reportPath);
|
|
@@ -3539,8 +3775,9 @@ async function createProjectRequirementsShell({
|
|
|
3539
3775
|
await fs.mkdir(path.dirname(absoluteReportPath), { recursive: true });
|
|
3540
3776
|
const template = await fs.readFile(PROJECT_REQUIREMENTS_TEMPLATE, 'utf8');
|
|
3541
3777
|
const now = new Date().toISOString();
|
|
3778
|
+
const shellCopy = PROJECT_REQUIREMENTS_SHELL_COPY[getReplyLanguage(config)] || PROJECT_REQUIREMENTS_SHELL_COPY.zh;
|
|
3542
3779
|
const html = replaceTemplateVariables(template, {
|
|
3543
|
-
|
|
3780
|
+
...shellCopy,
|
|
3544
3781
|
workspace_name: path.basename(workspaceRoot) || workspaceRoot,
|
|
3545
3782
|
date: formatLocalDate(),
|
|
3546
3783
|
generated_at: now
|
|
@@ -3617,7 +3854,7 @@ async function runProjectRequirementsPipeline({
|
|
|
3617
3854
|
const reportPath = `docs/requirements/${reportDate}-project-requirements.html`;
|
|
3618
3855
|
const companionPath = `docs/requirements/${reportDate}-project-requirements.md`;
|
|
3619
3856
|
const manifestPath = `docs/requirements/${reportDate}-project-requirements.manifest.json`;
|
|
3620
|
-
const steps = buildProjectRequirementsSteps(renderedSkillPrompt, parsedInput.args);
|
|
3857
|
+
const steps = buildProjectRequirementsSteps(renderedSkillPrompt, parsedInput.args, config);
|
|
3621
3858
|
const planFile = await writeMarkdownInProjectDir(
|
|
3622
3859
|
'plans',
|
|
3623
3860
|
'project-requirements-pipeline',
|
|
@@ -3632,7 +3869,8 @@ async function runProjectRequirementsPipeline({
|
|
|
3632
3869
|
planFile,
|
|
3633
3870
|
goal,
|
|
3634
3871
|
steps,
|
|
3635
|
-
depth: options.depth
|
|
3872
|
+
depth: options.depth,
|
|
3873
|
+
config
|
|
3636
3874
|
});
|
|
3637
3875
|
const planState = {
|
|
3638
3876
|
status: 'approved',
|
|
@@ -3756,13 +3994,20 @@ async function revisePendingPlanWithModel({
|
|
|
3756
3994
|
'Keep roles minimal and only include steps that materially help the goal.',
|
|
3757
3995
|
'Always keep a summarizer as the final step.'
|
|
3758
3996
|
].join('\n');
|
|
3997
|
+
const revisionSystemPrompt = await composeSystemPrompt({
|
|
3998
|
+
shellRulesPrompt: systemPrompt,
|
|
3999
|
+
config,
|
|
4000
|
+
skillsPrompt: prompt,
|
|
4001
|
+
includeSoul: false,
|
|
4002
|
+
includeMemory: false
|
|
4003
|
+
});
|
|
3759
4004
|
const result = await createChatCompletion({
|
|
3760
4005
|
sdkProvider: config.sdk?.provider,
|
|
3761
4006
|
baseUrl: config.gateway.base_url,
|
|
3762
4007
|
apiKey: config.gateway.api_key,
|
|
3763
4008
|
model: model || config.model.name,
|
|
3764
4009
|
messages: [
|
|
3765
|
-
{ role: 'system', content:
|
|
4010
|
+
{ role: 'system', content: revisionSystemPrompt },
|
|
3766
4011
|
{
|
|
3767
4012
|
role: 'user',
|
|
3768
4013
|
content: [
|
|
@@ -3940,6 +4185,13 @@ export async function createChatRuntime({
|
|
|
3940
4185
|
threshold: 60,
|
|
3941
4186
|
mode: 'conservative'
|
|
3942
4187
|
};
|
|
4188
|
+
let compactedForModel = currentSession.compact?.view || null;
|
|
4189
|
+
const setCompactedView = (view, meta = {}) => {
|
|
4190
|
+
compactedForModel = view;
|
|
4191
|
+
currentSession.compact = view
|
|
4192
|
+
? { view, timestamp: new Date().toISOString(), ...meta }
|
|
4193
|
+
: null;
|
|
4194
|
+
};
|
|
3943
4195
|
let historyIdCache = [currentSession.id];
|
|
3944
4196
|
let historySessionCache = [
|
|
3945
4197
|
{
|
|
@@ -3998,6 +4250,8 @@ export async function createChatRuntime({
|
|
|
3998
4250
|
'context.tool_result_max_chars',
|
|
3999
4251
|
'context.read_file_default_lines',
|
|
4000
4252
|
'context.read_file_max_chars',
|
|
4253
|
+
'context.microcompact_enabled',
|
|
4254
|
+
'context.microcompact_keep_recent',
|
|
4001
4255
|
'sessions.max_sessions',
|
|
4002
4256
|
'sessions.retention_days',
|
|
4003
4257
|
'shell.timeout_ms',
|
|
@@ -4069,6 +4323,7 @@ export async function createChatRuntime({
|
|
|
4069
4323
|
const compactOptions = [
|
|
4070
4324
|
'--preview',
|
|
4071
4325
|
'--restore',
|
|
4326
|
+
'--micro',
|
|
4072
4327
|
'--aggressive',
|
|
4073
4328
|
'--conservative',
|
|
4074
4329
|
'--default',
|
|
@@ -4545,14 +4800,14 @@ export async function createChatRuntime({
|
|
|
4545
4800
|
};
|
|
4546
4801
|
|
|
4547
4802
|
const buildActiveSystemPrompt = async () => {
|
|
4548
|
-
const soulPrompt = await buildSystemPromptWithSoul(baseSystemPrompt, config);
|
|
4549
|
-
const memorySnapshot = await buildMemorySnapshot({
|
|
4550
|
-
config,
|
|
4551
|
-
workspaceRoot: process.cwd()
|
|
4552
|
-
}).catch(() => '');
|
|
4553
4803
|
const memoryGuide =
|
|
4554
4804
|
'Persistent memory stores durable preferences and stable workflow knowledge. Verify changeable details from files, and only write memory for future-useful, non-sensitive facts.';
|
|
4555
|
-
return
|
|
4805
|
+
return composeSystemPrompt({
|
|
4806
|
+
shellRulesPrompt: baseSystemPrompt,
|
|
4807
|
+
config,
|
|
4808
|
+
workspaceRoot: process.cwd(),
|
|
4809
|
+
extraPrompts: [memoryGuide]
|
|
4810
|
+
});
|
|
4556
4811
|
};
|
|
4557
4812
|
|
|
4558
4813
|
const isImmediateLocalInput = (line) => {
|
|
@@ -5326,7 +5581,9 @@ export async function createChatRuntime({
|
|
|
5326
5581
|
onAgentEvent,
|
|
5327
5582
|
requestToolApproval: activeRequestToolApproval,
|
|
5328
5583
|
executionMode,
|
|
5329
|
-
signal
|
|
5584
|
+
signal,
|
|
5585
|
+
compactedForModel,
|
|
5586
|
+
onCompactedUpdate: setCompactedView
|
|
5330
5587
|
});
|
|
5331
5588
|
return { type: 'assistant', text: result.text, aborted: !!result.aborted };
|
|
5332
5589
|
}
|
|
@@ -5390,18 +5647,35 @@ export async function createChatRuntime({
|
|
|
5390
5647
|
if (cargs.mode) compactState.mode = cargs.mode;
|
|
5391
5648
|
|
|
5392
5649
|
if (cargs.restore) {
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
}
|
|
5396
|
-
currentSession.messages = structuredClone(compactState.backupMessages);
|
|
5397
|
-
await saveSession(currentSession);
|
|
5398
|
-
const text = 'Context restored from backup';
|
|
5650
|
+
setCompactedView(null);
|
|
5651
|
+
const text = 'Context restored to full view';
|
|
5399
5652
|
await persistLocalExchange(line, text, { includeUser: false });
|
|
5400
5653
|
return { type: 'system', text };
|
|
5401
5654
|
}
|
|
5402
5655
|
|
|
5403
|
-
const
|
|
5404
|
-
const
|
|
5656
|
+
const compactSource = compactedForModel ?? currentSession.messages;
|
|
5657
|
+
const beforeTokens = estimateMessagesTokens(compactSource);
|
|
5658
|
+
|
|
5659
|
+
// --micro: only do micro-compact (in-place tool result clearing)
|
|
5660
|
+
if (cargs.micro) {
|
|
5661
|
+
const microKeep = Number(config.context?.microcompact_keep_recent || 5);
|
|
5662
|
+
const micro = microCompactMessages(compactSource, { keepRecent: microKeep, enabled: true });
|
|
5663
|
+
if (!micro.changed) {
|
|
5664
|
+
return { type: 'system', text: 'Micro-compact: nothing to clear' };
|
|
5665
|
+
}
|
|
5666
|
+
const afterTokens = estimateMessagesTokens(micro.messages);
|
|
5667
|
+
const report = `Micro-compact ${cargs.preview ? 'preview' : 'applied'}: ${beforeTokens} -> ${afterTokens} tokens (saved ${micro.tokensSaved})`;
|
|
5668
|
+
|
|
5669
|
+
if (cargs.preview) {
|
|
5670
|
+
return { type: 'system', text: report };
|
|
5671
|
+
}
|
|
5672
|
+
|
|
5673
|
+
setCompactedView(micro.messages.map((m) => ({ ...m, at: new Date().toISOString() })));
|
|
5674
|
+
await persistLocalExchange(line, report, { includeUser: false });
|
|
5675
|
+
return { type: 'system', text: report };
|
|
5676
|
+
}
|
|
5677
|
+
|
|
5678
|
+
const result = compactMessagesLocally(compactSource, { mode: compactState.mode, force: true });
|
|
5405
5679
|
if (!result.changed) {
|
|
5406
5680
|
return { type: 'system', text: 'Nothing to compact yet' };
|
|
5407
5681
|
}
|
|
@@ -5412,9 +5686,10 @@ export async function createChatRuntime({
|
|
|
5412
5686
|
return { type: 'system', text: `${report}\n\n${result.summary}` };
|
|
5413
5687
|
}
|
|
5414
5688
|
|
|
5415
|
-
|
|
5416
|
-
|
|
5417
|
-
|
|
5689
|
+
setCompactedView(
|
|
5690
|
+
result.compacted.map((m) => ({ ...m, at: new Date().toISOString() })),
|
|
5691
|
+
{ boundaryIndex: result.boundaryIndex, mode: compactState.mode }
|
|
5692
|
+
);
|
|
5418
5693
|
await captureCompactSummary({
|
|
5419
5694
|
summary: result.summary,
|
|
5420
5695
|
mode: compactState.mode,
|
|
@@ -5488,7 +5763,9 @@ export async function createChatRuntime({
|
|
|
5488
5763
|
onAgentEvent,
|
|
5489
5764
|
requestToolApproval: activeRequestToolApproval,
|
|
5490
5765
|
executionMode,
|
|
5491
|
-
signal
|
|
5766
|
+
signal,
|
|
5767
|
+
compactedForModel,
|
|
5768
|
+
onCompactedUpdate: setCompactedView
|
|
5492
5769
|
});
|
|
5493
5770
|
} catch (error) {
|
|
5494
5771
|
if (custom.metadata.type === 'skill' && onAgentEvent) {
|
|
@@ -5591,32 +5868,71 @@ export async function createChatRuntime({
|
|
|
5591
5868
|
}
|
|
5592
5869
|
|
|
5593
5870
|
if (compactState.autoEnabled) {
|
|
5594
|
-
const
|
|
5871
|
+
const compactSource = compactedForModel ?? currentSession.messages;
|
|
5872
|
+
const currentTokens = estimateMessagesTokens(compactSource);
|
|
5595
5873
|
const maxTokens = effectiveMaxContextTokens(config);
|
|
5596
5874
|
const usagePct = (currentTokens / maxTokens) * 100;
|
|
5597
5875
|
if (usagePct >= compactState.threshold) {
|
|
5598
|
-
|
|
5599
|
-
|
|
5600
|
-
|
|
5601
|
-
|
|
5602
|
-
|
|
5603
|
-
|
|
5604
|
-
|
|
5605
|
-
|
|
5606
|
-
|
|
5607
|
-
|
|
5608
|
-
|
|
5609
|
-
|
|
5876
|
+
// Phase 0: try micro-compact first
|
|
5877
|
+
const microEnabled = config.context?.microcompact_enabled !== false;
|
|
5878
|
+
const microKeep = Number(config.context?.microcompact_keep_recent || 5);
|
|
5879
|
+
let needsMacro = true;
|
|
5880
|
+
if (microEnabled) {
|
|
5881
|
+
const micro = microCompactMessages(compactSource, { keepRecent: microKeep, enabled: true });
|
|
5882
|
+
if (micro.changed) {
|
|
5883
|
+
setCompactedView(micro.messages.map((m) => ({
|
|
5884
|
+
...m,
|
|
5885
|
+
at: new Date().toISOString()
|
|
5886
|
+
})));
|
|
5887
|
+
const afterMicroTokens = estimateMessagesTokens(compactedForModel);
|
|
5888
|
+
const afterMicroPct = (afterMicroTokens / maxTokens) * 100;
|
|
5889
|
+
if (onAgentEvent) {
|
|
5890
|
+
onAgentEvent({
|
|
5891
|
+
type: 'compact:auto',
|
|
5892
|
+
mode: 'micro',
|
|
5893
|
+
threshold: compactState.threshold,
|
|
5894
|
+
tokensSaved: micro.tokensSaved
|
|
5895
|
+
});
|
|
5896
|
+
}
|
|
5897
|
+
if (afterMicroPct < compactState.threshold) {
|
|
5898
|
+
needsMacro = false;
|
|
5899
|
+
await captureCompactSummary({
|
|
5900
|
+
summary: `Micro-compact saved ${micro.tokensSaved} tokens`,
|
|
5901
|
+
mode: 'micro',
|
|
5902
|
+
beforeTokens: currentTokens,
|
|
5903
|
+
afterTokens: afterMicroTokens
|
|
5904
|
+
});
|
|
5905
|
+
}
|
|
5906
|
+
}
|
|
5907
|
+
}
|
|
5908
|
+
// Phase 1: macro compact if still over threshold
|
|
5909
|
+
if (needsMacro) {
|
|
5910
|
+
const macroSource = compactedForModel ?? compactSource;
|
|
5911
|
+
const autoResult = compactMessagesLocally(macroSource, {
|
|
5610
5912
|
mode: compactState.mode,
|
|
5611
|
-
|
|
5612
|
-
afterTokens: estimateMessagesTokens(currentSession.messages)
|
|
5913
|
+
force: true
|
|
5613
5914
|
});
|
|
5614
|
-
if (
|
|
5615
|
-
|
|
5616
|
-
|
|
5915
|
+
if (autoResult.changed) {
|
|
5916
|
+
setCompactedView(
|
|
5917
|
+
autoResult.compacted.map((m) => ({
|
|
5918
|
+
...m,
|
|
5919
|
+
at: new Date().toISOString()
|
|
5920
|
+
})),
|
|
5921
|
+
{ boundaryIndex: autoResult.boundaryIndex, mode: compactState.mode }
|
|
5922
|
+
);
|
|
5923
|
+
await captureCompactSummary({
|
|
5924
|
+
summary: autoResult.summary,
|
|
5617
5925
|
mode: compactState.mode,
|
|
5618
|
-
|
|
5926
|
+
beforeTokens: currentTokens,
|
|
5927
|
+
afterTokens: estimateMessagesTokens(compactedForModel)
|
|
5619
5928
|
});
|
|
5929
|
+
if (onAgentEvent) {
|
|
5930
|
+
onAgentEvent({
|
|
5931
|
+
type: 'compact:auto',
|
|
5932
|
+
mode: compactState.mode,
|
|
5933
|
+
threshold: compactState.threshold
|
|
5934
|
+
});
|
|
5935
|
+
}
|
|
5620
5936
|
}
|
|
5621
5937
|
}
|
|
5622
5938
|
}
|
|
@@ -5658,10 +5974,27 @@ export async function createChatRuntime({
|
|
|
5658
5974
|
names: selectedAutoSkills
|
|
5659
5975
|
});
|
|
5660
5976
|
}
|
|
5661
|
-
const
|
|
5977
|
+
const autoSkillPrompt = buildAutoSkillPromptBlock(commands, config, expandedText);
|
|
5978
|
+
const skillPrompt = autoSkillPrompt
|
|
5979
|
+
? await composeSystemPrompt({
|
|
5980
|
+
shellRulesPrompt: activeReplySystemPrompt,
|
|
5981
|
+
config,
|
|
5982
|
+
workspaceRoot: process.cwd(),
|
|
5983
|
+
skillsPrompt: autoSkillPrompt,
|
|
5984
|
+
includeSoul: false,
|
|
5985
|
+
includeMemory: false
|
|
5986
|
+
})
|
|
5987
|
+
: activeReplySystemPrompt;
|
|
5662
5988
|
const routedSystemPrompt =
|
|
5663
5989
|
autoRoute.mode === 'direct_medium'
|
|
5664
|
-
?
|
|
5990
|
+
? await composeSystemPrompt({
|
|
5991
|
+
shellRulesPrompt: skillPrompt,
|
|
5992
|
+
config,
|
|
5993
|
+
workspaceRoot: process.cwd(),
|
|
5994
|
+
skillsPrompt: buildMediumTaskPromptBlock(),
|
|
5995
|
+
includeSoul: false,
|
|
5996
|
+
includeMemory: false
|
|
5997
|
+
})
|
|
5665
5998
|
: skillPrompt;
|
|
5666
5999
|
const result = await askModel({
|
|
5667
6000
|
text: expandedText,
|
|
@@ -5672,7 +6005,9 @@ export async function createChatRuntime({
|
|
|
5672
6005
|
onAgentEvent,
|
|
5673
6006
|
requestToolApproval: activeRequestToolApproval,
|
|
5674
6007
|
executionMode,
|
|
5675
|
-
signal
|
|
6008
|
+
signal,
|
|
6009
|
+
compactedForModel,
|
|
6010
|
+
onCompactedUpdate: setCompactedView
|
|
5676
6011
|
});
|
|
5677
6012
|
await saveDirectMemoryPrompt(expandedText);
|
|
5678
6013
|
await captureUserPromptForDream(expandedText);
|
|
@@ -5695,6 +6030,7 @@ export async function createChatRuntime({
|
|
|
5695
6030
|
getInputHistory: () => loadInputHistory(),
|
|
5696
6031
|
getCurrentSessionId: () => currentSession.id,
|
|
5697
6032
|
getSessionMessages: () => currentSession.messages || [],
|
|
6033
|
+
getSessionCompact: () => currentSession.compact || null,
|
|
5698
6034
|
reloadConfig: async () => {
|
|
5699
6035
|
config = await loadConfig();
|
|
5700
6036
|
return config;
|