codemini-cli 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/OPERATIONS.md +1 -1
- package/README.md +25 -25
- package/codemini-web/dist/assets/abap-9R7RjkQK.js +1 -0
- package/codemini-web/dist/assets/actionscript-3-CNowah7a.js +1 -0
- package/codemini-web/dist/assets/ada-D5HmrmpD.js +1 -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/apex-CszkG4lQ.js +1 -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/ara-DpGk8XWf.js +1 -0
- package/codemini-web/dist/assets/asciidoc-BdDORSgx.js +1 -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/awk-B-J9te9x.js +1 -0
- package/codemini-web/dist/assets/ayu-dark-BdNJk5qF.js +1 -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/ballerina-CZ8CAKmi.js +1 -0
- package/codemini-web/dist/assets/bat-fNtaIqKE.js +1 -0
- package/codemini-web/dist/assets/beancount-9imagnS2.js +1 -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/bicep-DLWEubga.js +1 -0
- package/codemini-web/dist/assets/bird2-V7dWeQhQ.js +1 -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-D3u1l2dW.js +1 -0
- package/codemini-web/dist/assets/c-CgTSul4N.js +1 -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/cairo-CoQzhJ_o.js +1 -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-macchiato--32cesHH.js +1 -0
- package/codemini-web/dist/assets/catppuccin-mocha-BBRFilGN.js +1 -0
- package/codemini-web/dist/assets/clarity-BJs8u8xG.js +1 -0
- package/codemini-web/dist/assets/clojure-DpYoDXXl.js +1 -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/codeql-OkUuMGe9.js +1 -0
- package/codemini-web/dist/assets/coffee-DF15_0rk.js +1 -0
- package/codemini-web/dist/assets/common-lisp-DCRDlc4V.js +1 -0
- package/codemini-web/dist/assets/coq-acwo70uY.js +1 -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-Cqz84DXU.js +1 -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/cue-D4-Hq7Jx.js +1 -0
- package/codemini-web/dist/assets/cypher-CXMVfSpG.js +1 -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/dart-CVd7TDni.js +1 -0
- package/codemini-web/dist/assets/dax-DtoJMuz5.js +1 -0
- package/codemini-web/dist/assets/desktop-BkIJ2CMP.js +1 -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/dotenv-DWnlamm2.js +1 -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/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-DPfFNNkG.js +1 -0
- package/codemini-web/dist/assets/emacs-lisp-BHIDiQRU.js +1 -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-CqHCISqs.js +1 -0
- package/codemini-web/dist/assets/everforest-dark-DSK976eP.js +1 -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/fish-CimYqIk1.js +1 -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-free-form-BVNtEstX.js +1 -0
- package/codemini-web/dist/assets/fsharp-Ch5ZVinn.js +1 -0
- package/codemini-web/dist/assets/gdresource-CqNLhJW1.js +1 -0
- package/codemini-web/dist/assets/gdscript-D-FJCTl3.js +1 -0
- package/codemini-web/dist/assets/gdshader-Czvzt8dR.js +1 -0
- package/codemini-web/dist/assets/genie-Mnf_jXpg.js +1 -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-rebase-MUvuytPe.js +1 -0
- package/codemini-web/dist/assets/github-dark-C98YWDhk.js +1 -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-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-high-contrast-DGwHD8Ty.js +1 -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/gn-BNADkWgR.js +1 -0
- package/codemini-web/dist/assets/gnuplot-BRQvwTQM.js +1 -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/groovy-CxG1cXrE.js +1 -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-soft-BghHDwrM.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-hard-BUhLUxUB.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-medium-GXeiXGL9.js +1 -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/haxe-1eAUKQ0B.js +1 -0
- package/codemini-web/dist/assets/hcl-DQqvKq2I.js +1 -0
- package/codemini-web/dist/assets/{highlighted-body-OFNGDK62-0FuBVb0_.js → highlighted-body-OFNGDK62-CDUecv8k.js} +1 -1
- package/codemini-web/dist/assets/hjson-DNWMSWLN.js +1 -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-bright-B0vmEjwb.js +1 -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/hurl-XIpACwjS.js +1 -0
- package/codemini-web/dist/assets/hxml-PnV_FpS-.js +1 -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/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/java-Ds1cyVrp.js +1 -0
- package/codemini-web/dist/assets/javascript-Cx8CXBJR.js +1 -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/json-CY14kIzN.js +1 -0
- package/codemini-web/dist/assets/json5-Cus7zL-r.js +1 -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/jsonnet--7yRuAzt.js +1 -0
- package/codemini-web/dist/assets/jssm-Cid5Rr2Y.js +1 -0
- package/codemini-web/dist/assets/jsx-DmH5dwMF.js +1 -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-lotus-BQyifewU.js +1 -0
- package/codemini-web/dist/assets/kanagawa-wave-BsJGVIZT.js +1 -0
- package/codemini-web/dist/assets/kdl-D2MbAIKj.js +1 -0
- package/codemini-web/dist/assets/kotlin-fpq87Jdo.js +1 -0
- package/codemini-web/dist/assets/kusto-BcKmLn2p.js +1 -0
- package/codemini-web/dist/assets/laserwave-CrjhMkHv.js +1 -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/less-BKjOc0Gl.js +1 -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-XDy97SdL.js +1 -0
- package/codemini-web/dist/assets/log-tjGJZ7jx.js +1 -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/luau-C0wE4YeK.js +1 -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/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-YhiuxyiP.js +1 -0
- package/codemini-web/dist/assets/material-theme-darker-CKeuyK7B.js +1 -0
- package/codemini-web/dist/assets/material-theme-lighter-C56RzTfM.js +1 -0
- package/codemini-web/dist/assets/material-theme-ocean-DUos8xKe.js +1 -0
- package/codemini-web/dist/assets/material-theme-palenight-CZBKx4B1.js +1 -0
- package/codemini-web/dist/assets/matlab-BJwkjxyL.js +1 -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/mermaid-Ctx7uNrT.js +1 -0
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-BWSxGKNn.js +1 -0
- package/codemini-web/dist/assets/min-dark-BA-rwgF3.js +1 -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/mojo-CqhYERP_.js +1 -0
- package/codemini-web/dist/assets/monokai-D3MyQCxG.js +1 -0
- package/codemini-web/dist/assets/moonbit-C4BfwLm6.js +1 -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/{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/nginx-u-hq5m-a.js +1 -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/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-Csr5leD-.js +1 -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/objective-c-DD1i5sf2.js +1 -0
- package/codemini-web/dist/assets/objective-cpp-CtzOCe2w.js +1 -0
- package/codemini-web/dist/assets/ocaml-BlMDMjEj.js +1 -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-light-CEeF6aqP.js +1 -0
- package/codemini-web/dist/assets/openscad-D3gRRPUh.js +1 -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/plastic-CwUA_4-2.js +1 -0
- package/codemini-web/dist/assets/plsql-C2yEtnCG.js +1 -0
- package/codemini-web/dist/assets/po-Dy7ytuR1.js +1 -0
- package/codemini-web/dist/assets/poimandres-u68WOWhl.js +1 -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/powerquery-iC4Ra9LJ.js +1 -0
- package/codemini-web/dist/assets/powershell-Ch2YpFAx.js +1 -0
- package/codemini-web/dist/assets/prisma-HWctQCpn.js +1 -0
- package/codemini-web/dist/assets/prolog-DHAsH4Hf.js +1 -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/purescript-s82m5f0Y.js +1 -0
- package/codemini-web/dist/assets/python-BhsI1K6K.js +1 -0
- package/codemini-web/dist/assets/qml-CysuucQ6.js +1 -0
- package/codemini-web/dist/assets/qmldir-Bzkc2Njy.js +1 -0
- package/codemini-web/dist/assets/qss-CKbozdtF.js +1 -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/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/reg-B0B_plbq.js +1 -0
- package/codemini-web/dist/assets/regexp-CK-1EP63.js +1 -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/ron-qyvgw9vu.js +1 -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-moon-B4Q4DiPG.js +1 -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-CNEVkiWF.js +1 -0
- package/codemini-web/dist/assets/sas-DPGT0TjQ.js +1 -0
- package/codemini-web/dist/assets/sass-D2nye32F.js +1 -0
- package/codemini-web/dist/assets/scala-B8greAnE.js +1 -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/shaderlab-JWcsxey4.js +1 -0
- package/codemini-web/dist/assets/shellscript-CxhArCCJ.js +1 -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-ochin-D4iInQ9w.js +1 -0
- package/codemini-web/dist/assets/smalltalk-BwSireXb.js +1 -0
- package/codemini-web/dist/assets/snazzy-light-B45TfPsv.js +1 -0
- package/codemini-web/dist/assets/solarized-dark-8yYW1wLs.js +1 -0
- package/codemini-web/dist/assets/solarized-light-BY3Hr0Ud.js +1 -0
- package/codemini-web/dist/assets/solidity-CIUlntDs.js +1 -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/splunk-DueVPk5k.js +1 -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/stata-lXN9BRaz.js +1 -0
- package/codemini-web/dist/assets/stylus-oqceM0yt.js +1 -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-foA31xPc.js +1 -0
- package/codemini-web/dist/assets/synthwave-84-B002ZU4p.js +1 -0
- package/codemini-web/dist/assets/system-verilog-CCSGcM60.js +1 -0
- package/codemini-web/dist/assets/systemd-BymS_eIJ.js +1 -0
- package/codemini-web/dist/assets/talonscript-Ccc0122j.js +1 -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/{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-V85Kewcz.js +1 -0
- package/codemini-web/dist/assets/tex-CxEkh6NI.js +1 -0
- package/codemini-web/dist/assets/tokyo-night-BLn5KNCP.js +1 -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-DjGwUc04.js +1 -0
- package/codemini-web/dist/assets/tsx-5O-M05V0.js +1 -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-hRweav8r.js +1 -0
- package/codemini-web/dist/assets/typespec-CKEcF6Kw.js +1 -0
- package/codemini-web/dist/assets/typst-DSQh9HII.js +1 -0
- package/codemini-web/dist/assets/v-obK6h_YW.js +1 -0
- package/codemini-web/dist/assets/vala-DXa9jSo-.js +1 -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/vesper-B7BneC5G.js +1 -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/vitesse-black-D3_12zni.js +1 -0
- package/codemini-web/dist/assets/vitesse-dark-B_iF7INE.js +1 -0
- package/codemini-web/dist/assets/vitesse-light-DbrrMtxY.js +1 -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-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/wasm-BNTPmfEI.js +1 -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/wgsl-BgfkHnVi.js +1 -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/wolfram-vvgPlu2n.js +1 -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/yaml-C-G727Y6.js +1 -0
- package/codemini-web/dist/assets/zenscript-BPjqX0BY.js +1 -0
- package/codemini-web/dist/assets/zig-Bd91oU8r.js +1 -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/runtime-bridge.js +22 -1
- package/codemini-web/server.js +919 -880
- package/deployment.md +5 -5
- package/package.json +1 -1
- package/src/commands/chat.js +1 -1
- package/src/commands/run.js +22 -7
- package/src/core/agent-loop.js +11 -7
- package/src/core/chat-runtime.js +314 -86
- package/src/core/command-evaluator.js +9 -3
- package/src/core/command-risk.js +9 -1
- package/src/core/config-store.js +4 -2
- package/src/core/context-compact.js +65 -3
- package/src/core/default-system-prompt.js +12 -4
- package/src/core/fff-adapter.js +1 -1
- package/src/core/reflect-skill.js +1 -1
- package/src/core/reply-language.js +6 -0
- package/src/core/shell-profile.js +14 -1
- package/src/core/soul.js +1 -3
- package/src/core/system-prompt-composer.js +42 -0
- package/src/core/tools.js +2 -2
- package/src/tui/chat-app.js +13 -3
- package/codemini-web/dist/assets/index-CSYMjBeT.css +0 -2
- package/codemini-web/dist/assets/index-DtiSt5vh.js +0 -206
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-BQrwnoIu.js +0 -1
- /package/codemini-web/dist/assets/{bird2-Bs7YDhA3.js → bird2-VVa6lZ01.js} +0 -0
- /package/codemini-web/dist/assets/{css-BTi88BmP.js → css-Dr0v2l-V.js} +0 -0
- /package/codemini-web/dist/assets/{dart-Czrjv-nr.js → dart-BIyV3H7V.js} +0 -0
- /package/codemini-web/dist/assets/{emacs-lisp-D4W-_rAk.js → emacs-lisp-CVlPXEEa.js} +0 -0
- /package/codemini-web/dist/assets/{go-BTh90-YS.js → go-D6k5URxL.js} +0 -0
- /package/codemini-web/dist/assets/{horizon-bright-CpoqdULz.js → horizon-bright-CXcxBcih.js} +0 -0
- /package/codemini-web/dist/assets/{kusto-ByPWIc1b.js → kusto-B1r4va-8.js} +0 -0
- /package/codemini-web/dist/assets/{nextflow-groovy-D1X5Yd05.js → nextflow-groovy-o7ZjyFmf.js} +0 -0
- /package/codemini-web/dist/assets/{typespec-8nkhqWz6.js → typespec-N7-U_jBZ.js} +0 -0
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',
|
|
@@ -581,16 +585,52 @@ function buildPipelineStepGuidance({ role, stepIndex, totalSteps, isFirst, isLas
|
|
|
581
585
|
return lines.join('\n');
|
|
582
586
|
}
|
|
583
587
|
|
|
584
|
-
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 = '') {
|
|
585
610
|
const source = Array.isArray(session?.messages) ? session.messages : [];
|
|
586
|
-
const
|
|
611
|
+
const candidates = source
|
|
587
612
|
.filter((msg) => msg && (msg.role === 'user' || msg.role === 'assistant'))
|
|
588
|
-
.
|
|
589
|
-
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);
|
|
590
630
|
|
|
591
631
|
const lines = [];
|
|
592
632
|
let usedChars = 0;
|
|
593
|
-
for (const msg of
|
|
633
|
+
for (const { msg } of ranked) {
|
|
594
634
|
const role = msg.role === 'assistant' ? 'assistant' : 'user';
|
|
595
635
|
const text = trimInline(msg.content, 260);
|
|
596
636
|
if (!text) continue;
|
|
@@ -601,7 +641,7 @@ function buildSubAgentContextPacket(session) {
|
|
|
601
641
|
}
|
|
602
642
|
if (lines.length === 0) return '';
|
|
603
643
|
return [
|
|
604
|
-
'Scoped parent context (
|
|
644
|
+
'Scoped parent context (task-relevant snippets, not full history):',
|
|
605
645
|
...lines,
|
|
606
646
|
'Use this context only if it helps the current task.'
|
|
607
647
|
].join('\n');
|
|
@@ -1332,8 +1372,8 @@ function classifyAutoRoute(text = '') {
|
|
|
1332
1372
|
};
|
|
1333
1373
|
}
|
|
1334
1374
|
|
|
1335
|
-
function
|
|
1336
|
-
|
|
1375
|
+
function buildMediumTaskPromptBlock() {
|
|
1376
|
+
return [
|
|
1337
1377
|
'Task Mode: medium',
|
|
1338
1378
|
'Execution guidance:',
|
|
1339
1379
|
'- Give a brief execution outline before coding.',
|
|
@@ -1342,12 +1382,11 @@ function buildMediumTaskSystemPrompt(systemPrompt) {
|
|
|
1342
1382
|
'- Verify the changed behavior before finishing.',
|
|
1343
1383
|
'- If major ambiguity appears mid-task, say so clearly and ask for a plan instead of guessing.'
|
|
1344
1384
|
].join('\n');
|
|
1345
|
-
return `${systemPrompt}\n\n${guidance}`;
|
|
1346
1385
|
}
|
|
1347
1386
|
|
|
1348
|
-
function
|
|
1387
|
+
function buildAutoSkillPromptBlock(commands, config, text) {
|
|
1349
1388
|
const selected = classifyAutoRoute(text).selectedSkills.filter((name) => isSkillEnabled(config, name, commands.get(name)));
|
|
1350
|
-
if (selected.length === 0) return
|
|
1389
|
+
if (selected.length === 0) return '';
|
|
1351
1390
|
|
|
1352
1391
|
const blocks = [];
|
|
1353
1392
|
for (const name of selected) {
|
|
@@ -1355,8 +1394,7 @@ function buildAutoSkillSystemPrompt(baseSystemPrompt, commands, config, text) {
|
|
|
1355
1394
|
if (!skill || skill.metadata?.type !== 'skill') continue;
|
|
1356
1395
|
blocks.push(`[Auto skill: ${name}]\n${skill.content}`);
|
|
1357
1396
|
}
|
|
1358
|
-
|
|
1359
|
-
return `${baseSystemPrompt}\n\n${blocks.join('\n\n')}`;
|
|
1397
|
+
return blocks.join('\n\n');
|
|
1360
1398
|
}
|
|
1361
1399
|
|
|
1362
1400
|
function extractJsonBlock(text) {
|
|
@@ -1843,6 +1881,13 @@ async function buildAutoPlanFinalSummary({
|
|
|
1843
1881
|
}
|
|
1844
1882
|
|
|
1845
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
|
+
});
|
|
1846
1891
|
const result = await createChatCompletion({
|
|
1847
1892
|
sdkProvider: config.sdk?.provider,
|
|
1848
1893
|
baseUrl: config.gateway.base_url,
|
|
@@ -1851,7 +1896,7 @@ async function buildAutoPlanFinalSummary({
|
|
|
1851
1896
|
messages: [
|
|
1852
1897
|
{
|
|
1853
1898
|
role: 'system',
|
|
1854
|
-
content:
|
|
1899
|
+
content: summarySystemPrompt
|
|
1855
1900
|
},
|
|
1856
1901
|
{
|
|
1857
1902
|
role: 'user',
|
|
@@ -1974,6 +2019,13 @@ async function buildSpecWithModel({
|
|
|
1974
2019
|
'## Testing / Validation',
|
|
1975
2020
|
'Make it concrete, scoped, and suitable for turning into a sub-agent implementation plan.'
|
|
1976
2021
|
].join('\n');
|
|
2022
|
+
const specSystemPrompt = await composeSystemPrompt({
|
|
2023
|
+
shellRulesPrompt: systemPrompt,
|
|
2024
|
+
config,
|
|
2025
|
+
skillsPrompt: prompt,
|
|
2026
|
+
includeSoul: false,
|
|
2027
|
+
includeMemory: false
|
|
2028
|
+
});
|
|
1977
2029
|
|
|
1978
2030
|
const result = await createChatCompletion({
|
|
1979
2031
|
sdkProvider: config.sdk?.provider,
|
|
@@ -1981,7 +2033,7 @@ async function buildSpecWithModel({
|
|
|
1981
2033
|
apiKey: config.gateway.api_key,
|
|
1982
2034
|
model: model || config.model.name,
|
|
1983
2035
|
messages: [
|
|
1984
|
-
{ role: 'system', content:
|
|
2036
|
+
{ role: 'system', content: specSystemPrompt },
|
|
1985
2037
|
{ role: 'user', content: `Topic: ${topic}` }
|
|
1986
2038
|
],
|
|
1987
2039
|
timeoutMs: config.gateway.timeout_ms || 1800000,
|
|
@@ -2034,6 +2086,13 @@ async function buildPlanFromSpecWithModel({
|
|
|
2034
2086
|
'## Task Breakdown',
|
|
2035
2087
|
'Make the plan concrete and ordered for a coding agent.'
|
|
2036
2088
|
].join('\n');
|
|
2089
|
+
const planSystemPrompt = await composeSystemPrompt({
|
|
2090
|
+
shellRulesPrompt: systemPrompt,
|
|
2091
|
+
config,
|
|
2092
|
+
skillsPrompt: prompt,
|
|
2093
|
+
includeSoul: false,
|
|
2094
|
+
includeMemory: false
|
|
2095
|
+
});
|
|
2037
2096
|
|
|
2038
2097
|
const result = await createChatCompletion({
|
|
2039
2098
|
sdkProvider: config.sdk?.provider,
|
|
@@ -2041,7 +2100,7 @@ async function buildPlanFromSpecWithModel({
|
|
|
2041
2100
|
apiKey: config.gateway.api_key,
|
|
2042
2101
|
model: model || config.model.name,
|
|
2043
2102
|
messages: [
|
|
2044
|
-
{ role: 'system', content:
|
|
2103
|
+
{ role: 'system', content: planSystemPrompt },
|
|
2045
2104
|
{
|
|
2046
2105
|
role: 'user',
|
|
2047
2106
|
content: `Spec path: ${specPath || '(inline)'}\n\nProject implementation constraints:\n${projectConstraints}\n\n${specText}`
|
|
@@ -2253,6 +2312,17 @@ function buildRuntimeStateSnapshot({ currentSession, config, model, executionMod
|
|
|
2253
2312
|
value: getReplyLanguage(config),
|
|
2254
2313
|
enumerable: false,
|
|
2255
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
|
|
2256
2326
|
}
|
|
2257
2327
|
});
|
|
2258
2328
|
return snapshot;
|
|
@@ -2520,28 +2590,61 @@ async function askModel({
|
|
|
2520
2590
|
signal,
|
|
2521
2591
|
allowedTools,
|
|
2522
2592
|
maxSteps: maxStepsOverride,
|
|
2523
|
-
skipAnalysisNudge = false
|
|
2593
|
+
skipAnalysisNudge = false,
|
|
2594
|
+
compactedForModel: compactedInput = null,
|
|
2595
|
+
onCompactedUpdate = null
|
|
2524
2596
|
}) {
|
|
2597
|
+
let compacted = compactedInput;
|
|
2525
2598
|
const modelInputText = typeof modelText === 'string' && modelText ? modelText : text;
|
|
2526
2599
|
const maxContextTokens = effectiveMaxContextTokens(config);
|
|
2527
|
-
const triggerPct = Number(config.context?.preflight_trigger_pct ||
|
|
2600
|
+
const triggerPct = Number(config.context?.preflight_trigger_pct || 60);
|
|
2528
2601
|
const hardPct = Number(config.context?.hard_limit_pct || 98);
|
|
2529
|
-
const
|
|
2602
|
+
const messagesForEstimate = compacted ?? session.messages;
|
|
2603
|
+
const preflightTokens = estimatePromptTokensForRequest(messagesForEstimate, modelInputText);
|
|
2530
2604
|
const preflightPct = (preflightTokens / maxContextTokens) * 100;
|
|
2531
2605
|
|
|
2532
2606
|
if (persistSession && preflightPct >= triggerPct) {
|
|
2533
|
-
const
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
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
|
+
}
|
|
2545
2648
|
}
|
|
2546
2649
|
}
|
|
2547
2650
|
}
|
|
@@ -2608,9 +2711,15 @@ async function askModel({
|
|
|
2608
2711
|
const projectContextSnippet = await buildProjectContextSnippet(process.cwd(), modelInputText).catch(() => '');
|
|
2609
2712
|
const projectContextGuidance =
|
|
2610
2713
|
'Use this project context as lightweight guidance and verify important details with fresh reads when needed.';
|
|
2611
|
-
const effectiveSystemPrompt =
|
|
2612
|
-
|
|
2613
|
-
|
|
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
|
+
});
|
|
2614
2723
|
|
|
2615
2724
|
const { definitions, handlers, formatters, deferredDefinitions, dispose: disposeTools } = getBuiltinTools({
|
|
2616
2725
|
workspaceRoot: process.cwd(),
|
|
@@ -2745,6 +2854,7 @@ async function askModel({
|
|
|
2745
2854
|
if (onAgentEvent) onAgentEvent(event);
|
|
2746
2855
|
};
|
|
2747
2856
|
|
|
2857
|
+
const sessionLenBeforeLoop = session.messages.length;
|
|
2748
2858
|
const loopUserPrompt = persistSession ? '' : modelInputText;
|
|
2749
2859
|
const expectedModelText = typeof modelText === 'string' && modelText && modelText !== text ? modelText : '';
|
|
2750
2860
|
const loopResult = await runAgentLoop({
|
|
@@ -2754,7 +2864,7 @@ async function askModel({
|
|
|
2754
2864
|
maxSteps: maxStepsOverride ?? Number(config.execution?.max_steps || 16),
|
|
2755
2865
|
toolDefinitions: filteredDefinitions,
|
|
2756
2866
|
toolHandlers: filteredHandlers,
|
|
2757
|
-
initialMessages: toOpenAIMessages(session.messages),
|
|
2867
|
+
initialMessages: toOpenAIMessages(compacted ?? session.messages),
|
|
2758
2868
|
onEvent: wrappedAgentEvent,
|
|
2759
2869
|
executionMode: executionMode || config.execution?.mode || 'normal',
|
|
2760
2870
|
alwaysAllowTools:
|
|
@@ -2804,9 +2914,15 @@ async function askModel({
|
|
|
2804
2914
|
});
|
|
2805
2915
|
|
|
2806
2916
|
if (persistSession) {
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
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
|
|
2810
2926
|
if (expectedModelText) {
|
|
2811
2927
|
for (let i = session.messages.length - 1; i >= 0; i -= 1) {
|
|
2812
2928
|
const message = session.messages[i];
|
|
@@ -2855,7 +2971,7 @@ async function runSubAgentTask({
|
|
|
2855
2971
|
}) {
|
|
2856
2972
|
const subSession = { id: `sub-${Date.now()}`, messages: [] };
|
|
2857
2973
|
const rolePrompt = getSubAgentRolePrompt(role);
|
|
2858
|
-
const contextPacket = buildSubAgentContextPacket(parentSession);
|
|
2974
|
+
const contextPacket = buildSubAgentContextPacket(parentSession, task || goal);
|
|
2859
2975
|
const evidencePacket = buildSubAgentEvidencePacket(parentSession);
|
|
2860
2976
|
const handoffPacket = buildStepArtifactPacket(priorSteps, role);
|
|
2861
2977
|
const handoffFocusPaths = collectStepArtifacts(priorSteps, role)?.focusPaths || [];
|
|
@@ -2910,12 +3026,19 @@ async function runSubAgentTask({
|
|
|
2910
3026
|
};
|
|
2911
3027
|
const roleAllowedTools = ROLE_TOOL_POLICY[role];
|
|
2912
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
|
+
});
|
|
2913
3036
|
const subResult = await askModel({
|
|
2914
3037
|
text: scopedTask,
|
|
2915
3038
|
session: subSession,
|
|
2916
3039
|
config,
|
|
2917
3040
|
model,
|
|
2918
|
-
systemPrompt:
|
|
3041
|
+
systemPrompt: subSystemPrompt,
|
|
2919
3042
|
onAgentEvent: wrappedOnAgentEvent,
|
|
2920
3043
|
persistSession: false,
|
|
2921
3044
|
executionMode: 'auto',
|
|
@@ -3225,13 +3348,20 @@ async function buildAutoPlanAndRun({
|
|
|
3225
3348
|
};
|
|
3226
3349
|
let planningError = '';
|
|
3227
3350
|
try {
|
|
3351
|
+
const plannerSystemPrompt = await composeSystemPrompt({
|
|
3352
|
+
shellRulesPrompt: systemPrompt,
|
|
3353
|
+
config,
|
|
3354
|
+
skillsPrompt: plannerPrompt,
|
|
3355
|
+
includeSoul: false,
|
|
3356
|
+
includeMemory: false
|
|
3357
|
+
});
|
|
3228
3358
|
const planning = await createChatCompletion({
|
|
3229
3359
|
sdkProvider: config.sdk?.provider,
|
|
3230
3360
|
baseUrl: config.gateway.base_url,
|
|
3231
3361
|
apiKey: config.gateway.api_key,
|
|
3232
3362
|
model: model || config.model.name,
|
|
3233
3363
|
messages: [
|
|
3234
|
-
{ role: 'system', content:
|
|
3364
|
+
{ role: 'system', content: plannerSystemPrompt },
|
|
3235
3365
|
{
|
|
3236
3366
|
role: 'user',
|
|
3237
3367
|
content: [
|
|
@@ -3864,13 +3994,20 @@ async function revisePendingPlanWithModel({
|
|
|
3864
3994
|
'Keep roles minimal and only include steps that materially help the goal.',
|
|
3865
3995
|
'Always keep a summarizer as the final step.'
|
|
3866
3996
|
].join('\n');
|
|
3997
|
+
const revisionSystemPrompt = await composeSystemPrompt({
|
|
3998
|
+
shellRulesPrompt: systemPrompt,
|
|
3999
|
+
config,
|
|
4000
|
+
skillsPrompt: prompt,
|
|
4001
|
+
includeSoul: false,
|
|
4002
|
+
includeMemory: false
|
|
4003
|
+
});
|
|
3867
4004
|
const result = await createChatCompletion({
|
|
3868
4005
|
sdkProvider: config.sdk?.provider,
|
|
3869
4006
|
baseUrl: config.gateway.base_url,
|
|
3870
4007
|
apiKey: config.gateway.api_key,
|
|
3871
4008
|
model: model || config.model.name,
|
|
3872
4009
|
messages: [
|
|
3873
|
-
{ role: 'system', content:
|
|
4010
|
+
{ role: 'system', content: revisionSystemPrompt },
|
|
3874
4011
|
{
|
|
3875
4012
|
role: 'user',
|
|
3876
4013
|
content: [
|
|
@@ -4048,6 +4185,13 @@ export async function createChatRuntime({
|
|
|
4048
4185
|
threshold: 60,
|
|
4049
4186
|
mode: 'conservative'
|
|
4050
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
|
+
};
|
|
4051
4195
|
let historyIdCache = [currentSession.id];
|
|
4052
4196
|
let historySessionCache = [
|
|
4053
4197
|
{
|
|
@@ -4106,6 +4250,8 @@ export async function createChatRuntime({
|
|
|
4106
4250
|
'context.tool_result_max_chars',
|
|
4107
4251
|
'context.read_file_default_lines',
|
|
4108
4252
|
'context.read_file_max_chars',
|
|
4253
|
+
'context.microcompact_enabled',
|
|
4254
|
+
'context.microcompact_keep_recent',
|
|
4109
4255
|
'sessions.max_sessions',
|
|
4110
4256
|
'sessions.retention_days',
|
|
4111
4257
|
'shell.timeout_ms',
|
|
@@ -4177,6 +4323,7 @@ export async function createChatRuntime({
|
|
|
4177
4323
|
const compactOptions = [
|
|
4178
4324
|
'--preview',
|
|
4179
4325
|
'--restore',
|
|
4326
|
+
'--micro',
|
|
4180
4327
|
'--aggressive',
|
|
4181
4328
|
'--conservative',
|
|
4182
4329
|
'--default',
|
|
@@ -4653,14 +4800,14 @@ export async function createChatRuntime({
|
|
|
4653
4800
|
};
|
|
4654
4801
|
|
|
4655
4802
|
const buildActiveSystemPrompt = async () => {
|
|
4656
|
-
const soulPrompt = await buildSystemPromptWithSoul(baseSystemPrompt, config);
|
|
4657
|
-
const memorySnapshot = await buildMemorySnapshot({
|
|
4658
|
-
config,
|
|
4659
|
-
workspaceRoot: process.cwd()
|
|
4660
|
-
}).catch(() => '');
|
|
4661
4803
|
const memoryGuide =
|
|
4662
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.';
|
|
4663
|
-
return
|
|
4805
|
+
return composeSystemPrompt({
|
|
4806
|
+
shellRulesPrompt: baseSystemPrompt,
|
|
4807
|
+
config,
|
|
4808
|
+
workspaceRoot: process.cwd(),
|
|
4809
|
+
extraPrompts: [memoryGuide]
|
|
4810
|
+
});
|
|
4664
4811
|
};
|
|
4665
4812
|
|
|
4666
4813
|
const isImmediateLocalInput = (line) => {
|
|
@@ -5434,7 +5581,9 @@ export async function createChatRuntime({
|
|
|
5434
5581
|
onAgentEvent,
|
|
5435
5582
|
requestToolApproval: activeRequestToolApproval,
|
|
5436
5583
|
executionMode,
|
|
5437
|
-
signal
|
|
5584
|
+
signal,
|
|
5585
|
+
compactedForModel,
|
|
5586
|
+
onCompactedUpdate: setCompactedView
|
|
5438
5587
|
});
|
|
5439
5588
|
return { type: 'assistant', text: result.text, aborted: !!result.aborted };
|
|
5440
5589
|
}
|
|
@@ -5498,18 +5647,35 @@ export async function createChatRuntime({
|
|
|
5498
5647
|
if (cargs.mode) compactState.mode = cargs.mode;
|
|
5499
5648
|
|
|
5500
5649
|
if (cargs.restore) {
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
}
|
|
5504
|
-
currentSession.messages = structuredClone(compactState.backupMessages);
|
|
5505
|
-
await saveSession(currentSession);
|
|
5506
|
-
const text = 'Context restored from backup';
|
|
5650
|
+
setCompactedView(null);
|
|
5651
|
+
const text = 'Context restored to full view';
|
|
5507
5652
|
await persistLocalExchange(line, text, { includeUser: false });
|
|
5508
5653
|
return { type: 'system', text };
|
|
5509
5654
|
}
|
|
5510
5655
|
|
|
5511
|
-
const
|
|
5512
|
-
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 });
|
|
5513
5679
|
if (!result.changed) {
|
|
5514
5680
|
return { type: 'system', text: 'Nothing to compact yet' };
|
|
5515
5681
|
}
|
|
@@ -5520,9 +5686,10 @@ export async function createChatRuntime({
|
|
|
5520
5686
|
return { type: 'system', text: `${report}\n\n${result.summary}` };
|
|
5521
5687
|
}
|
|
5522
5688
|
|
|
5523
|
-
|
|
5524
|
-
|
|
5525
|
-
|
|
5689
|
+
setCompactedView(
|
|
5690
|
+
result.compacted.map((m) => ({ ...m, at: new Date().toISOString() })),
|
|
5691
|
+
{ boundaryIndex: result.boundaryIndex, mode: compactState.mode }
|
|
5692
|
+
);
|
|
5526
5693
|
await captureCompactSummary({
|
|
5527
5694
|
summary: result.summary,
|
|
5528
5695
|
mode: compactState.mode,
|
|
@@ -5596,7 +5763,9 @@ export async function createChatRuntime({
|
|
|
5596
5763
|
onAgentEvent,
|
|
5597
5764
|
requestToolApproval: activeRequestToolApproval,
|
|
5598
5765
|
executionMode,
|
|
5599
|
-
signal
|
|
5766
|
+
signal,
|
|
5767
|
+
compactedForModel,
|
|
5768
|
+
onCompactedUpdate: setCompactedView
|
|
5600
5769
|
});
|
|
5601
5770
|
} catch (error) {
|
|
5602
5771
|
if (custom.metadata.type === 'skill' && onAgentEvent) {
|
|
@@ -5699,32 +5868,71 @@ export async function createChatRuntime({
|
|
|
5699
5868
|
}
|
|
5700
5869
|
|
|
5701
5870
|
if (compactState.autoEnabled) {
|
|
5702
|
-
const
|
|
5871
|
+
const compactSource = compactedForModel ?? currentSession.messages;
|
|
5872
|
+
const currentTokens = estimateMessagesTokens(compactSource);
|
|
5703
5873
|
const maxTokens = effectiveMaxContextTokens(config);
|
|
5704
5874
|
const usagePct = (currentTokens / maxTokens) * 100;
|
|
5705
5875
|
if (usagePct >= compactState.threshold) {
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5715
|
-
|
|
5716
|
-
|
|
5717
|
-
|
|
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, {
|
|
5718
5912
|
mode: compactState.mode,
|
|
5719
|
-
|
|
5720
|
-
afterTokens: estimateMessagesTokens(currentSession.messages)
|
|
5913
|
+
force: true
|
|
5721
5914
|
});
|
|
5722
|
-
if (
|
|
5723
|
-
|
|
5724
|
-
|
|
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,
|
|
5725
5925
|
mode: compactState.mode,
|
|
5726
|
-
|
|
5926
|
+
beforeTokens: currentTokens,
|
|
5927
|
+
afterTokens: estimateMessagesTokens(compactedForModel)
|
|
5727
5928
|
});
|
|
5929
|
+
if (onAgentEvent) {
|
|
5930
|
+
onAgentEvent({
|
|
5931
|
+
type: 'compact:auto',
|
|
5932
|
+
mode: compactState.mode,
|
|
5933
|
+
threshold: compactState.threshold
|
|
5934
|
+
});
|
|
5935
|
+
}
|
|
5728
5936
|
}
|
|
5729
5937
|
}
|
|
5730
5938
|
}
|
|
@@ -5766,10 +5974,27 @@ export async function createChatRuntime({
|
|
|
5766
5974
|
names: selectedAutoSkills
|
|
5767
5975
|
});
|
|
5768
5976
|
}
|
|
5769
|
-
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;
|
|
5770
5988
|
const routedSystemPrompt =
|
|
5771
5989
|
autoRoute.mode === 'direct_medium'
|
|
5772
|
-
?
|
|
5990
|
+
? await composeSystemPrompt({
|
|
5991
|
+
shellRulesPrompt: skillPrompt,
|
|
5992
|
+
config,
|
|
5993
|
+
workspaceRoot: process.cwd(),
|
|
5994
|
+
skillsPrompt: buildMediumTaskPromptBlock(),
|
|
5995
|
+
includeSoul: false,
|
|
5996
|
+
includeMemory: false
|
|
5997
|
+
})
|
|
5773
5998
|
: skillPrompt;
|
|
5774
5999
|
const result = await askModel({
|
|
5775
6000
|
text: expandedText,
|
|
@@ -5780,7 +6005,9 @@ export async function createChatRuntime({
|
|
|
5780
6005
|
onAgentEvent,
|
|
5781
6006
|
requestToolApproval: activeRequestToolApproval,
|
|
5782
6007
|
executionMode,
|
|
5783
|
-
signal
|
|
6008
|
+
signal,
|
|
6009
|
+
compactedForModel,
|
|
6010
|
+
onCompactedUpdate: setCompactedView
|
|
5784
6011
|
});
|
|
5785
6012
|
await saveDirectMemoryPrompt(expandedText);
|
|
5786
6013
|
await captureUserPromptForDream(expandedText);
|
|
@@ -5803,6 +6030,7 @@ export async function createChatRuntime({
|
|
|
5803
6030
|
getInputHistory: () => loadInputHistory(),
|
|
5804
6031
|
getCurrentSessionId: () => currentSession.id,
|
|
5805
6032
|
getSessionMessages: () => currentSession.messages || [],
|
|
6033
|
+
getSessionCompact: () => currentSession.compact || null,
|
|
5806
6034
|
reloadConfig: async () => {
|
|
5807
6035
|
config = await loadConfig();
|
|
5808
6036
|
return config;
|