codemini-cli 0.6.2 → 0.6.4
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/codemini-web/dist/assets/{AboutDialog-CBmrZqhV.js → AboutDialog-MRopwNIL.js} +2 -2
- package/codemini-web/dist/assets/CodeWikiPanel-UpK5xGE3.js +1 -0
- package/codemini-web/dist/assets/ConfigDialog-CNl28wsj.js +1 -0
- package/codemini-web/dist/assets/GitDiffDialog-gSysUg2J.js +3 -0
- package/codemini-web/dist/assets/MemoryDialog-DFUmo3Kl.js +3 -0
- package/codemini-web/dist/assets/MessageBubble-CGnnViv0.js +12 -0
- package/codemini-web/dist/assets/PatchDiff-B8rwvEg5.js +230 -0
- package/codemini-web/dist/assets/ProjectSelector-BF59M1zb.js +1 -0
- package/codemini-web/dist/assets/SkillDialog-CQTjbSiw.js +8 -0
- package/codemini-web/dist/assets/SoulDialog-BLjUGqqB.js +1 -0
- package/codemini-web/dist/assets/{angular-html-DQ1gtQ6R.js → angular-html-BtqWAyby.js} +1 -1
- package/codemini-web/dist/assets/{angular-html-kg4tCYym.js → angular-html-Dqm-Ium4.js} +1 -1
- package/codemini-web/dist/assets/{angular-ts-C_VTyikG.js → angular-ts-BUlY5dZZ.js} +1 -1
- package/codemini-web/dist/assets/{angular-ts-QUaQh54x.js → angular-ts-DXMH5pbz.js} +1 -1
- package/codemini-web/dist/assets/{apl-D2YQXnhn.js → apl-B9jkvghZ.js} +1 -1
- package/codemini-web/dist/assets/{apl-DTyfz60o.js → apl-Bt--uCmj.js} +1 -1
- package/codemini-web/dist/assets/{astro-DrBiKBx0.js → astro-P-Wk2Uo3.js} +1 -1
- package/codemini-web/dist/assets/{astro-STdMQy7_.js → astro-ZfS8gVPQ.js} +1 -1
- package/codemini-web/dist/assets/{blade-BzcRYrK8.js → blade-CxVOILUn.js} +1 -1
- package/codemini-web/dist/assets/{blade-DV-5zppA.js → blade-DsiMSXb3.js} +1 -1
- package/codemini-web/dist/assets/{bsl-D8KU0pjR.js → bsl-9Rfj8X2G.js} +1 -1
- package/codemini-web/dist/assets/{bsl-JaCMWPaY.js → bsl-CZ9gUG7G.js} +1 -1
- package/codemini-web/dist/assets/{cairo-D7Xpkdmw.js → cairo-B8t0-PSB.js} +1 -1
- package/codemini-web/dist/assets/{cairo-DcJUH2W4.js → cairo-CZcbsYHl.js} +1 -1
- package/codemini-web/dist/assets/chevron-right--85xg7qk.js +1 -0
- package/codemini-web/dist/assets/{chunk-BO2N2NFS-C-dwTHqR.js → chunk-BO2N2NFS-6uELoidu.js} +6 -6
- package/codemini-web/dist/assets/{cobol-VahErUC5.js → cobol-BdhxDqSp.js} +1 -1
- package/codemini-web/dist/assets/{cobol-DcObg-T7.js → cobol-C67LYEki.js} +1 -1
- package/codemini-web/dist/assets/{coffee-B5QkIGo_.js → coffee-C_zREOQP.js} +1 -1
- package/codemini-web/dist/assets/{coffee-eHrF22jH.js → coffee-DYSdownS.js} +1 -1
- package/codemini-web/dist/assets/{cpp-hpmt0Dm0.js → cpp-BcL70P81.js} +1 -1
- package/codemini-web/dist/assets/{cpp-oPWeBIxQ.js → cpp-CmF4N5qy.js} +1 -1
- package/codemini-web/dist/assets/{crystal-CoivzC9J.js → crystal-CoqbT5f8.js} +1 -1
- package/codemini-web/dist/assets/{crystal-s_8obDZh.js → crystal-N7P3W5Mw.js} +1 -1
- package/codemini-web/dist/assets/{edge--dOGTygN.js → edge-DrMWCZ8c.js} +1 -1
- package/codemini-web/dist/assets/{edge-C-DECmFd.js → edge-DytV3yX5.js} +1 -1
- package/codemini-web/dist/assets/{elixir-9z9mJoua.js → elixir-BLpitXJw.js} +1 -1
- package/codemini-web/dist/assets/{elixir-D3BiPlt5.js → elixir-CNV7hmh2.js} +1 -1
- package/codemini-web/dist/assets/{elm-BuOfOpho.js → elm-C5ZqKzP8.js} +1 -1
- package/codemini-web/dist/assets/{elm-DjcEOkt6.js → elm-DuNA2Kle.js} +1 -1
- package/codemini-web/dist/assets/{erb-B6UlpZlF.js → erb-Cx6GPjju.js} +1 -1
- package/codemini-web/dist/assets/{erb-omHMX7PR.js → erb-CxvZayEs.js} +1 -1
- package/codemini-web/dist/assets/{erlang-DJdyEhn7.js → erlang-3or6Qr_S.js} +1 -1
- package/codemini-web/dist/assets/{erlang-l2na0rr-.js → erlang-CdOz9ruD.js} +1 -1
- package/codemini-web/dist/assets/{fortran-fixed-form-72xY_C5B.js → fortran-fixed-form-BmD2L0UY.js} +1 -1
- package/codemini-web/dist/assets/{fortran-fixed-form-Dyncprn4.js → fortran-fixed-form-Hy2szps7.js} +1 -1
- package/codemini-web/dist/assets/{fsharp-CAeGcLFg.js → fsharp-CgGHW39K.js} +1 -1
- package/codemini-web/dist/assets/{fsharp-D6WYKxtq.js → fsharp-DgKUr7h2.js} +1 -1
- package/codemini-web/dist/assets/{gdresource-Bac2fAQZ.js → gdresource-BqgTfeIa.js} +1 -1
- package/codemini-web/dist/assets/{gdresource-D9tlxSca.js → gdresource-D6abIutu.js} +1 -1
- package/codemini-web/dist/assets/{git-commit-BQ43t81h.js → git-commit-CPnaL3nl.js} +1 -1
- package/codemini-web/dist/assets/{git-commit-CDZnUqIF.js → git-commit-DBwdkqC2.js} +1 -1
- package/codemini-web/dist/assets/{git-rebase-CrM8c9uR.js → git-rebase-BVjWygdV.js} +1 -1
- package/codemini-web/dist/assets/{git-rebase-nf_-tAIT.js → git-rebase-CLt-2irw.js} +1 -1
- package/codemini-web/dist/assets/{glimmer-js-CmAPRjq-.js → glimmer-js-BhZXPPf_.js} +1 -1
- package/codemini-web/dist/assets/{glimmer-js-BG6a3MVV.js → glimmer-js-bG2aM9pf.js} +1 -1
- package/codemini-web/dist/assets/{glimmer-ts-WUsACCRt.js → glimmer-ts-BZwU8tUk.js} +1 -1
- package/codemini-web/dist/assets/{glimmer-ts-CQha3IIl.js → glimmer-ts-D6GU3-HZ.js} +1 -1
- package/codemini-web/dist/assets/{glsl-CAJiER_N.js → glsl-BZXoHx-5.js} +1 -1
- package/codemini-web/dist/assets/{glsl-CUfWCqOt.js → glsl-BsJMlsXZ.js} +1 -1
- package/codemini-web/dist/assets/{graphql-B-xWjhGC.js → graphql-Bzui-_oF.js} +1 -1
- package/codemini-web/dist/assets/{graphql-CufH1FQw.js → graphql-lozg2JzK.js} +1 -1
- package/codemini-web/dist/assets/{hack-6ZyX-jpl.js → hack-BIx3oBuG.js} +1 -1
- package/codemini-web/dist/assets/{hack-D9TV3mFw.js → hack-Dl73UNBo.js} +1 -1
- package/codemini-web/dist/assets/{haml-CXPCOKlR.js → haml-BL3Pq-bL.js} +1 -1
- package/codemini-web/dist/assets/{haml-zf3skXy8.js → haml-CvBskpbA.js} +1 -1
- package/codemini-web/dist/assets/{handlebars-BFZlhIIV.js → handlebars-Ca8Ew3WT.js} +1 -1
- package/codemini-web/dist/assets/{handlebars-BzLrTccQ.js → handlebars-Dl0DZ9iU.js} +1 -1
- package/codemini-web/dist/assets/{highlighted-body-OFNGDK62-BlOR-p_j.js → highlighted-body-OFNGDK62-gb1UMBZ5.js} +1 -1
- package/codemini-web/dist/assets/{html-DLN1MsZQ.js → html-CCOAFbPU.js} +1 -1
- package/codemini-web/dist/assets/{html-CZRPtk7M.js → html-DFeJ4St6.js} +1 -1
- package/codemini-web/dist/assets/{html-derivative-DGaxN6Jm.js → html-derivative-BN80HtRR.js} +1 -1
- package/codemini-web/dist/assets/{html-derivative-Dryc40mO.js → html-derivative-BPYIQd1q.js} +1 -1
- package/codemini-web/dist/assets/{http-B3D7H2pi.js → http-BT0m2fV8.js} +1 -1
- package/codemini-web/dist/assets/{http-CD8xd_ys.js → http-BaSHFqsp.js} +1 -1
- package/codemini-web/dist/assets/{hurl-4R1-_fJo.js → hurl-Cu0t_0Ag.js} +1 -1
- package/codemini-web/dist/assets/{hurl-DhA9rL1f.js → hurl-QdCmCx_B.js} +1 -1
- package/codemini-web/dist/assets/{hxml-BNblpm3P.js → hxml-DlOl0PEf.js} +1 -1
- package/codemini-web/dist/assets/{hxml-y50fEZfK.js → hxml-IWjzRLpN.js} +1 -1
- package/codemini-web/dist/assets/index-1xqD0R5t.css +2 -0
- package/codemini-web/dist/assets/index-CDXQGwPs.js +65 -0
- package/codemini-web/dist/assets/{input-CNJXW0J8.js → input-Ca8O_061.js} +1 -1
- package/codemini-web/dist/assets/{jinja-BGFo9cp_.js → jinja-Cnv9YtxF.js} +1 -1
- package/codemini-web/dist/assets/{jinja-CMJRtHk5.js → jinja-CzKj-PyV.js} +1 -1
- package/codemini-web/dist/assets/{jison-CjADtx7J.js → jison-CMHmT6Zn.js} +1 -1
- package/codemini-web/dist/assets/{jison-DZG53562.js → jison-V0queBoO.js} +1 -1
- package/codemini-web/dist/assets/{julia-CrDH-yy9.js → julia-D6Tp2lkv.js} +1 -1
- package/codemini-web/dist/assets/{julia-DGoXLnGd.js → julia-ssnM4-62.js} +1 -1
- package/codemini-web/dist/assets/{just-BV8ObQSd.js → just-BYVm1Mrm.js} +1 -1
- package/codemini-web/dist/assets/{just-bFDeah4I.js → just-DNL8d4mn.js} +1 -1
- package/codemini-web/dist/assets/{latex-DDcspDwa.js → latex--PKG7pkB.js} +1 -1
- package/codemini-web/dist/assets/{latex-DHgb1D3g.js → latex-BKz2_Nxu.js} +1 -1
- package/codemini-web/dist/assets/lib-BXWizt13.js +1 -0
- package/codemini-web/dist/assets/{liquid-DY_Nh1yB.js → liquid-CmT9c2rW.js} +1 -1
- package/codemini-web/dist/assets/{liquid-CodJB6Oo.js → liquid-CnfwjcTC.js} +1 -1
- package/codemini-web/dist/assets/{lua-CSNL2IG5.js → lua-CG2sJZNs.js} +1 -1
- package/codemini-web/dist/assets/{lua-Mbb_FM_D.js → lua-D82-t9Zc.js} +1 -1
- package/codemini-web/dist/assets/{marko-CoJz_b4R.js → marko-BXWoQ9lL.js} +1 -1
- package/codemini-web/dist/assets/{marko-BtH_ko92.js → marko-CJF04FnX.js} +1 -1
- package/codemini-web/dist/assets/{mdc-U2Od-Be6.js → mdc-DjUuZ2FY.js} +1 -1
- package/codemini-web/dist/assets/{mdc-pc5Bd-NW.js → mdc-uFBHmEgm.js} +1 -1
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-ROliF8Yd.js +1 -0
- package/codemini-web/dist/assets/{nextflow-C240AutA.js → nextflow-CK5HLJvq.js} +1 -1
- package/codemini-web/dist/assets/{nextflow-dLJhzX3Z.js → nextflow-S7dXFF9l.js} +1 -1
- package/codemini-web/dist/assets/{nginx-CeVyuhn6.js → nginx-3W9nM9y_.js} +1 -1
- package/codemini-web/dist/assets/{nginx-9UIFC5W_.js → nginx-BC64-3-i.js} +1 -1
- package/codemini-web/dist/assets/{nim-A60PrBkG.js → nim-DWppal1v.js} +1 -1
- package/codemini-web/dist/assets/{nim-DhQ1Hs8s.js → nim-x_81C3Qr.js} +1 -1
- package/codemini-web/dist/assets/{pencil-CARzRgk1.js → pencil-BhT11Ztp.js} +1 -1
- package/codemini-web/dist/assets/{perl-BPmyA-C2.js → perl-C6Dd0zxb.js} +1 -1
- package/codemini-web/dist/assets/{perl-CA0CUhlR.js → perl-Drip2S24.js} +1 -1
- package/codemini-web/dist/assets/{php-aSpTH15w.js → php-9sDqPlZW.js} +1 -1
- package/codemini-web/dist/assets/{php-DFR1z6f_.js → php-BbiCqfrp.js} +1 -1
- package/codemini-web/dist/assets/{pug-DXmP4Dd5.js → pug-BYheLFcw.js} +1 -1
- package/codemini-web/dist/assets/{pug-2MsinVHa.js → pug-D4U6GWCU.js} +1 -1
- package/codemini-web/dist/assets/{qml-Cp-MkXo2.js → qml-C7Gvixtn.js} +1 -1
- package/codemini-web/dist/assets/{qml-Dmd77dfv.js → qml-D3LW5Eh4.js} +1 -1
- package/codemini-web/dist/assets/{razor-BH58TmZI.js → razor-CeMDYz78.js} +1 -1
- package/codemini-web/dist/assets/{razor-knNn5G4N.js → razor-wtlbOx1Y.js} +1 -1
- package/codemini-web/dist/assets/refresh-cw-D7R5Lth6.js +1 -0
- package/codemini-web/dist/assets/{rst-BkVCrdGo.js → rst-4NiHKVzB.js} +1 -1
- package/codemini-web/dist/assets/{rst-l2oLaq8i.js → rst-CUgtqtsm.js} +1 -1
- package/codemini-web/dist/assets/{ruby-B4GtprLK.js → ruby-DJfS371J.js} +1 -1
- package/codemini-web/dist/assets/{ruby-gJeF3z-Y.js → ruby-DQmpjmxU.js} +1 -1
- package/codemini-web/dist/assets/{sas-CTgoo8hu.js → sas-B3ML-BPY.js} +1 -1
- package/codemini-web/dist/assets/{sas-Dav6qQnM.js → sas-BXFb3Byc.js} +1 -1
- package/codemini-web/dist/assets/{scss-B8ysOo22.js → scss-By7PHVyf.js} +1 -1
- package/codemini-web/dist/assets/{scss-C8Gq31Qt.js → scss-CQGBghOa.js} +1 -1
- package/codemini-web/dist/assets/select-DBvcHBzs.js +1 -0
- package/codemini-web/dist/assets/{shaderlab-BaYU-HWs.js → shaderlab-Ds6Ob14m.js} +1 -1
- package/codemini-web/dist/assets/{shaderlab-CSb6CBXg.js → shaderlab-jhHUXThs.js} +1 -1
- package/codemini-web/dist/assets/{shellsession-Ms8iC_in.js → shellsession-1pj9xPto.js} +1 -1
- package/codemini-web/dist/assets/{shellsession-eIO2JTpk.js → shellsession-mbgkQZNs.js} +1 -1
- package/codemini-web/dist/assets/{soy-CnmcxzZM.js → soy-Brdxowwc.js} +1 -1
- package/codemini-web/dist/assets/{soy-U7sqkat1.js → soy-CyoIOmkE.js} +1 -1
- package/codemini-web/dist/assets/{sparql-DrRAT0nC.js → sparql-D050l-1j.js} +1 -1
- package/codemini-web/dist/assets/{sparql-J1VOnnwM.js → sparql-EV95tWuj.js} +1 -1
- package/codemini-web/dist/assets/{stata-C07HETWZ.js → stata-Cxm-fX20.js} +1 -1
- package/codemini-web/dist/assets/{stata-C84Azx6N.js → stata-rcB48Bwa.js} +1 -1
- package/codemini-web/dist/assets/{surrealql-CHm1_yMm.js → surrealql-BEIq2Ti9.js} +1 -1
- package/codemini-web/dist/assets/{surrealql-D_Sm2j7-.js → surrealql-C89H8_VG.js} +1 -1
- package/codemini-web/dist/assets/{svelte-BgklcIcA.js → svelte-DLivETBJ.js} +1 -1
- package/codemini-web/dist/assets/{svelte-UDeamd-l.js → svelte-DVuJzFhW.js} +1 -1
- package/codemini-web/dist/assets/{templ-C1aXNqxr.js → templ-DCO78tPK.js} +1 -1
- package/codemini-web/dist/assets/{templ-Dej5xCfm.js → templ-Dr4toWAi.js} +1 -1
- package/codemini-web/dist/assets/{tex-CwV6ECg2.js → tex-C26OlX33.js} +1 -1
- package/codemini-web/dist/assets/{tex-DqduegnD.js → tex-CAFucSbn.js} +1 -1
- package/codemini-web/dist/assets/{trash-2-BvANH-oV.js → trash-2-BfNZcWfX.js} +1 -1
- package/codemini-web/dist/assets/{ts-tags-jpfdYtbg.js → ts-tags-DXz1U_l8.js} +1 -1
- package/codemini-web/dist/assets/{ts-tags-JHISWk_W.js → ts-tags-DxtnKICy.js} +1 -1
- package/codemini-web/dist/assets/{twig-Co8p9s-G.js → twig-BOjawstu.js} +1 -1
- package/codemini-web/dist/assets/{twig-Cq6hSxza.js → twig-l2jHuCJP.js} +1 -1
- package/codemini-web/dist/assets/{vue-CopUaTTK.js → vue-DTExrAHq.js} +1 -1
- package/codemini-web/dist/assets/{vue-CL6MdYNh.js → vue-d4Ps-pL3.js} +1 -1
- package/codemini-web/dist/assets/{vue-html-BJ2qlvpA.js → vue-html-Cc_wxOgn.js} +1 -1
- package/codemini-web/dist/assets/{vue-html-BkstOd36.js → vue-html-DF9b1rb0.js} +1 -1
- package/codemini-web/dist/assets/{vue-vine-BpJg_Jgw.js → vue-vine-A_lRwVWt.js} +1 -1
- package/codemini-web/dist/assets/{vue-vine-kdYS8aKZ.js → vue-vine-BDiNGm6C.js} +1 -1
- package/codemini-web/dist/assets/{xml-BVIbPGAO.js → xml-BUsFQ36n.js} +1 -1
- package/codemini-web/dist/assets/{xml-Cd8Ewme9.js → xml-DDsJXW9N.js} +1 -1
- package/codemini-web/dist/assets/{xsl-DsYdc3fS.js → xsl-DjgS9HxR.js} +1 -1
- package/codemini-web/dist/assets/{xsl-JOQu_a5N.js → xsl-TnKTzvHo.js} +1 -1
- package/codemini-web/dist/index.html +2 -2
- package/codemini-web/lib/runtime-bridge.js +325 -296
- package/codemini-web/server.js +482 -276
- package/package.json +1 -1
- package/src/core/agent-loop.js +188 -97
- package/src/core/chat-runtime.js +674 -571
- package/src/core/command-policy.js +73 -23
- package/src/core/config-store.js +11 -3
- package/src/core/git-oplog-change-tracker.js +387 -0
- package/src/core/non-git-backup.js +116 -0
- package/src/core/paths.js +123 -123
- package/src/core/session-store.js +148 -99
- package/src/core/tools.js +474 -396
- package/src/tui/chat-app.js +196 -56
- package/codemini-web/dist/assets/CodeWikiPanel-BjI4vz9H.js +0 -1
- package/codemini-web/dist/assets/ConfigDialog-hxEIuIXJ.js +0 -1
- package/codemini-web/dist/assets/GitDiffDialog-CVpmPcGi.js +0 -222
- package/codemini-web/dist/assets/MessageBubble-BkkfePXe.js +0 -6
- package/codemini-web/dist/assets/ProjectSelector-CjE9gbEY.js +0 -1
- package/codemini-web/dist/assets/SkillDialog-CpX5c2q5.js +0 -6
- package/codemini-web/dist/assets/SoulDialog-5ZMpAJl3.js +0 -1
- package/codemini-web/dist/assets/index-BkhgO3hd.js +0 -65
- package/codemini-web/dist/assets/index-COyr1sc3.css +0 -2
- package/codemini-web/dist/assets/lib-DQpX2ek0.js +0 -11
- package/codemini-web/dist/assets/lib-Dj6FJSN8.js +0 -1
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-DV0jg4UB.js +0 -1
- package/codemini-web/dist/assets/select-BQ3BvnG8.js +0 -1
- /package/codemini-web/dist/assets/{abap-8gQxhw9X.js → abap-B7RnWQOG.js} +0 -0
- /package/codemini-web/dist/assets/{abap-DKGmjV0m.js → abap-NDM6s5zQ.js} +0 -0
- /package/codemini-web/dist/assets/{actionscript-3-Bvx2-wHH.js → actionscript-3-C9nBr3Mh.js} +0 -0
- /package/codemini-web/dist/assets/{actionscript-3-PQHI9sRP.js → actionscript-3-CRl2BRXz.js} +0 -0
- /package/codemini-web/dist/assets/{ada-7dCRqcEc.js → ada-BCQmYIk6.js} +0 -0
- /package/codemini-web/dist/assets/{ada-DXyixiJc.js → ada-CySgk42_.js} +0 -0
- /package/codemini-web/dist/assets/{andromeeda-CvHLbWZU.js → andromeeda-Bnm9WW1a.js} +0 -0
- /package/codemini-web/dist/assets/{andromeeda-D2bWTgXr.js → andromeeda-szAb-NZx.js} +0 -0
- /package/codemini-web/dist/assets/{apache-DuwFT_ko.js → apache-B22kDdQt.js} +0 -0
- /package/codemini-web/dist/assets/{apache-r4zD7Rt3.js → apache-CQgWNR0K.js} +0 -0
- /package/codemini-web/dist/assets/{apex-D3aemokf.js → apex-BkGtsu4e.js} +0 -0
- /package/codemini-web/dist/assets/{apex-ZrILV9y9.js → apex-CFa_x2c9.js} +0 -0
- /package/codemini-web/dist/assets/{applescript-B2uvrvew.js → applescript-CCGt--QU.js} +0 -0
- /package/codemini-web/dist/assets/{applescript-QewDI2Hm.js → applescript-Cb-r3lIv.js} +0 -0
- /package/codemini-web/dist/assets/{ara-CAKYVeDX.js → ara-CJYv1XlV.js} +0 -0
- /package/codemini-web/dist/assets/{ara-bfzpmn9d.js → ara-DKlv0ib1.js} +0 -0
- /package/codemini-web/dist/assets/{asciidoc-CN-ydgfB.js → asciidoc-BUOdyOiP.js} +0 -0
- /package/codemini-web/dist/assets/{asciidoc-xYtH5EEV.js → asciidoc-DxgPoKvx.js} +0 -0
- /package/codemini-web/dist/assets/{asm-DsgOTp4c.js → asm-2LyQSByb.js} +0 -0
- /package/codemini-web/dist/assets/{asm-DuNyKkDV.js → asm-BVk_pKLT.js} +0 -0
- /package/codemini-web/dist/assets/{aurora-x-CUFqx0Kt.js → aurora-x-B7Ot8iN2.js} +0 -0
- /package/codemini-web/dist/assets/{aurora-x-mlfFqJAh.js → aurora-x-DfOR6O80.js} +0 -0
- /package/codemini-web/dist/assets/{awk-BDSWDVpS.js → awk-CRf4hi6L.js} +0 -0
- /package/codemini-web/dist/assets/{awk-DETgsRcQ.js → awk-adfNbTQc.js} +0 -0
- /package/codemini-web/dist/assets/{ayu-dark-BTeHke7b.js → ayu-dark-ADZF52JZ.js} +0 -0
- /package/codemini-web/dist/assets/{ayu-dark-tcpgNy3s.js → ayu-dark-CqtoqjuU.js} +0 -0
- /package/codemini-web/dist/assets/{ayu-light-B3O22CFD.js → ayu-light-CMMeLqXc.js} +0 -0
- /package/codemini-web/dist/assets/{ayu-light-CoZXvb4i.js → ayu-light-OVSih2Vp.js} +0 -0
- /package/codemini-web/dist/assets/{ayu-mirage-DkAXwBmm.js → ayu-mirage-BCL1vSWF.js} +0 -0
- /package/codemini-web/dist/assets/{ayu-mirage-DlGy8b5I.js → ayu-mirage-BZvrYN67.js} +0 -0
- /package/codemini-web/dist/assets/{ballerina-Dj9SHEWp.js → ballerina-D3rdtcDY.js} +0 -0
- /package/codemini-web/dist/assets/{ballerina-eIQtFtZN.js → ballerina-G1jH5Moz.js} +0 -0
- /package/codemini-web/dist/assets/{bat-DVPhDFws.js → bat-BRck8_tt.js} +0 -0
- /package/codemini-web/dist/assets/{bat-Dr7SKqI2.js → bat-CHXtPpft.js} +0 -0
- /package/codemini-web/dist/assets/{beancount-C5lGUCpK.js → beancount-CvA0H4kE.js} +0 -0
- /package/codemini-web/dist/assets/{beancount-DRh4LoEp.js → beancount-EfboDiXG.js} +0 -0
- /package/codemini-web/dist/assets/{berry-BJPWN0aG.js → berry-CnzAF9lD.js} +0 -0
- /package/codemini-web/dist/assets/{berry-C-53c7Cz.js → berry-DAhQzFBm.js} +0 -0
- /package/codemini-web/dist/assets/{bibtex-BXZl-zGT.js → bibtex-CYUaqfOv.js} +0 -0
- /package/codemini-web/dist/assets/{bibtex-c-0Qlbu0.js → bibtex-CanpD3m2.js} +0 -0
- /package/codemini-web/dist/assets/{bicep-CCk_fREF.js → bicep-Cc0u08ve.js} +0 -0
- /package/codemini-web/dist/assets/{bicep-DUhze7H3.js → bicep-JoteVAmD.js} +0 -0
- /package/codemini-web/dist/assets/{bird2-D_94N4Us.js → bird2-BmGSmafQ.js} +0 -0
- /package/codemini-web/dist/assets/{bird2-DIkIj7Bl.js → bird2-CUmLoLjb.js} +0 -0
- /package/codemini-web/dist/assets/{c-6DvQDc19.js → c-Ce4Vw5YJ.js} +0 -0
- /package/codemini-web/dist/assets/{c-C6aegu_R.js → c-DKLNAy6n.js} +0 -0
- /package/codemini-web/dist/assets/{c3-CUFd2ak_.js → c3-Bld9q8eN.js} +0 -0
- /package/codemini-web/dist/assets/{c3-_P-DNRtg.js → c3-Cp6mH0y7.js} +0 -0
- /package/codemini-web/dist/assets/{cadence-CRyyaA0J.js → cadence-CAWv0bgn.js} +0 -0
- /package/codemini-web/dist/assets/{cadence-zuA3Lqsu.js → cadence-_3OaglmQ.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-frappe-C4xh_RpD.js → catppuccin-frappe-Dn0XJ8jj.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-frappe-CptwRcV-.js → catppuccin-frappe-gRmOBxIl.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-latte-B5zTan83.js → catppuccin-latte-CNKGC9SI.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-latte-ZIzlVBYe.js → catppuccin-latte-D25Kwd8S.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-macchiato-D9kD7BY6.js → catppuccin-macchiato-Bc6w_RYC.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-macchiato-DOZXEuSH.js → catppuccin-macchiato-CjoU0lf6.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-mocha-DJlDggGb.js → catppuccin-mocha-DQ4pZxz-.js} +0 -0
- /package/codemini-web/dist/assets/{catppuccin-mocha-rnm_6i_u.js → catppuccin-mocha-Di4PH8Ri.js} +0 -0
- /package/codemini-web/dist/assets/{clarity-CRWl5goA.js → clarity-BnHuUVUS.js} +0 -0
- /package/codemini-web/dist/assets/{clarity-Dp-fzxYs.js → clarity-CVKtZWJu.js} +0 -0
- /package/codemini-web/dist/assets/{clojure-85kagXuc.js → clojure-BBjzfV1L.js} +0 -0
- /package/codemini-web/dist/assets/{clojure-Dva5KkQZ.js → clojure-C4w8xKrn.js} +0 -0
- /package/codemini-web/dist/assets/{cmake-5KZO_J3V.js → cmake-Dn2uxUrm.js} +0 -0
- /package/codemini-web/dist/assets/{cmake-BLlH-zTC.js → cmake-DuxpWyxB.js} +0 -0
- /package/codemini-web/dist/assets/{codeowners-CwITHnrC.js → codeowners-BK44uU1e.js} +0 -0
- /package/codemini-web/dist/assets/{codeowners-EEO8moZM.js → codeowners-BYgLRiPG.js} +0 -0
- /package/codemini-web/dist/assets/{codeql-C3IPOiKP.js → codeql-DmJo4bmm.js} +0 -0
- /package/codemini-web/dist/assets/{codeql-DsuZZPKs.js → codeql-comBgh3D.js} +0 -0
- /package/codemini-web/dist/assets/{common-lisp-DQj0fa1s.js → common-lisp-BKAyevA0.js} +0 -0
- /package/codemini-web/dist/assets/{common-lisp-DtIqam2P.js → common-lisp-xmwdM7sj.js} +0 -0
- /package/codemini-web/dist/assets/{coq-BGPtnnb4.js → coq-D004aLp-.js} +0 -0
- /package/codemini-web/dist/assets/{coq-CcjGcL2N.js → coq-DsaqZ5gv.js} +0 -0
- /package/codemini-web/dist/assets/{csharp-Bz4y1fn8.js → csharp-B1bok3CS.js} +0 -0
- /package/codemini-web/dist/assets/{csharp-CvOkmYFZ.js → csharp-BJRWJrkS.js} +0 -0
- /package/codemini-web/dist/assets/{css-DsnEBqY_.js → css-D2Zgfenk.js} +0 -0
- /package/codemini-web/dist/assets/{css-Cqx-Zivz.js → css-DI4Ka_1L.js} +0 -0
- /package/codemini-web/dist/assets/{csv-92JdhrVb.js → csv-BsMY8_5o.js} +0 -0
- /package/codemini-web/dist/assets/{csv-Cz8IGB-r.js → csv-Cx2EO4hN.js} +0 -0
- /package/codemini-web/dist/assets/{cue-BAtFpXsn.js → cue-5NODdLLQ.js} +0 -0
- /package/codemini-web/dist/assets/{cue-DO5iBckt.js → cue-BFvpulfw.js} +0 -0
- /package/codemini-web/dist/assets/{cypher-DrFFccaV.js → cypher-CloxltJj.js} +0 -0
- /package/codemini-web/dist/assets/{cypher-Dt0SBufN.js → cypher-DwXduOcz.js} +0 -0
- /package/codemini-web/dist/assets/{d-BIzkfvy1.js → d-ByN-nCZx.js} +0 -0
- /package/codemini-web/dist/assets/{d-POAmrdpL.js → d-D90yV2l6.js} +0 -0
- /package/codemini-web/dist/assets/{dark-plus-Ci223Kw7.js → dark-plus-BRQ4k4kr.js} +0 -0
- /package/codemini-web/dist/assets/{dark-plus-D-icMr_O.js → dark-plus-CmLXU_Iq.js} +0 -0
- /package/codemini-web/dist/assets/{dart-BA_zGMIh.js → dart-BL-Rg8Jo.js} +0 -0
- /package/codemini-web/dist/assets/{dart-Cv4z4sEx.js → dart-jaYeqpH7.js} +0 -0
- /package/codemini-web/dist/assets/{dax-CArXkuXO.js → dax-CQDoOssZ.js} +0 -0
- /package/codemini-web/dist/assets/{dax-Cw_LNvcO.js → dax-DfINWKOM.js} +0 -0
- /package/codemini-web/dist/assets/{desktop-BRifweK7.js → desktop-DssJfs2S.js} +0 -0
- /package/codemini-web/dist/assets/{desktop-B_uWbpWi.js → desktop-wuqAc75y.js} +0 -0
- /package/codemini-web/dist/assets/{diff-CTnn6Hu3.js → diff-BYMwyQmB.js} +0 -0
- /package/codemini-web/dist/assets/{diff-pSjjL-ZH.js → diff-DGLbp6Xl.js} +0 -0
- /package/codemini-web/dist/assets/{docker-D0ufKJwE.js → docker-B7aZDRTU.js} +0 -0
- /package/codemini-web/dist/assets/{docker-r0L9bSzI.js → docker-CfFDSeZZ.js} +0 -0
- /package/codemini-web/dist/assets/{dotenv-BKm_YkX-.js → dotenv-D3KyAIK0.js} +0 -0
- /package/codemini-web/dist/assets/{dotenv-DU-Uz6AA.js → dotenv-DVXB2U9o.js} +0 -0
- /package/codemini-web/dist/assets/{dracula-BkVbNmMW.js → dracula-6-t2eOMW.js} +0 -0
- /package/codemini-web/dist/assets/{dracula-C5lq8I7X.js → dracula-Dix5im8F.js} +0 -0
- /package/codemini-web/dist/assets/{dracula-soft-Benyby8y.js → dracula-soft-B4TZzIlp.js} +0 -0
- /package/codemini-web/dist/assets/{dracula-soft-QH3ntlSU.js → dracula-soft-DnrYBWgV.js} +0 -0
- /package/codemini-web/dist/assets/{dream-maker-Cp0hXi31.js → dream-maker-CaguOgbF.js} +0 -0
- /package/codemini-web/dist/assets/{dream-maker-DE3sVgWW.js → dream-maker-CjPuR0vx.js} +0 -0
- /package/codemini-web/dist/assets/{emacs-lisp-aMjKKeFP.js → emacs-lisp-BHg7FqFZ.js} +0 -0
- /package/codemini-web/dist/assets/{emacs-lisp-H4-vgzf_.js → emacs-lisp-BosL1Ugg.js} +0 -0
- /package/codemini-web/dist/assets/{everforest-dark-CDp5hxXO.js → everforest-dark-B4IVVaS6.js} +0 -0
- /package/codemini-web/dist/assets/{everforest-dark-KTiMpaXm.js → everforest-dark-DwEzvfit.js} +0 -0
- /package/codemini-web/dist/assets/{everforest-light-vtFhxTqx.js → everforest-light-CNoEiPUu.js} +0 -0
- /package/codemini-web/dist/assets/{everforest-light-yJZ9a76P.js → everforest-light-DnQkIdPL.js} +0 -0
- /package/codemini-web/dist/assets/{fennel-Bruivvq3.js → fennel-BiQcbtTd.js} +0 -0
- /package/codemini-web/dist/assets/{fennel-DNMUz8BE.js → fennel-DG6hK7z2.js} +0 -0
- /package/codemini-web/dist/assets/{fish-C44z9fhZ.js → fish-D3-ok12J.js} +0 -0
- /package/codemini-web/dist/assets/{fish-CaGhpV7s.js → fish-_zY__9L4.js} +0 -0
- /package/codemini-web/dist/assets/{fluent-BsmQk-nO.js → fluent-BBz3hVA9.js} +0 -0
- /package/codemini-web/dist/assets/{fluent-d_qH0cYL.js → fluent-CrjXrDzk.js} +0 -0
- /package/codemini-web/dist/assets/{fortran-free-form-B9mY58s0.js → fortran-free-form-Cyk1FB1e.js} +0 -0
- /package/codemini-web/dist/assets/{fortran-free-form-DYzg4zHf.js → fortran-free-form-Db24aQuN.js} +0 -0
- /package/codemini-web/dist/assets/{gdscript-B_WUGHIs.js → gdscript-CxxY7zMa.js} +0 -0
- /package/codemini-web/dist/assets/{gdscript-xj-VlIRU.js → gdscript-_NYgB0-E.js} +0 -0
- /package/codemini-web/dist/assets/{gdshader-BR6nyn6z.js → gdshader-Bhkdknye.js} +0 -0
- /package/codemini-web/dist/assets/{gdshader-BbYnAK14.js → gdshader-W85lNgcx.js} +0 -0
- /package/codemini-web/dist/assets/{genie-CNeJKHWH.js → genie-2WOhOayX.js} +0 -0
- /package/codemini-web/dist/assets/{genie-CW-a1unw.js → genie-C6BJUbST.js} +0 -0
- /package/codemini-web/dist/assets/{gherkin-By4Zv-ZP.js → gherkin-BsQJenZD.js} +0 -0
- /package/codemini-web/dist/assets/{gherkin-D8z0Dn14.js → gherkin-BzYX5w19.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-BLlNbGxe.js → github-dark-DH2_Q6FX.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-default-DPZ1YWUU.js → github-dark-default-B2Oq-dUJ.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-default-XYu-6ww7.js → github-dark-default-DTF8deNx.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-dimmed-BlMwpJVf.js → github-dark-dimmed-BvtnYOMy.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-dimmed-XAi8Eb3C.js → github-dark-dimmed-D0X0LfLF.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-C2YvJIRl.js → github-dark-fr8BfBxZ.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-high-contrast-D86iyx7L.js → github-dark-high-contrast-BAQfalyp.js} +0 -0
- /package/codemini-web/dist/assets/{github-dark-high-contrast-KRBg57oP.js → github-dark-high-contrast-CQhqa0EF.js} +0 -0
- /package/codemini-web/dist/assets/{github-light-BLj5WXD_.js → github-light-CEqFW-kl.js} +0 -0
- /package/codemini-web/dist/assets/{github-light-default-BLgrdOV4.js → github-light-default-9rPElOua.js} +0 -0
- /package/codemini-web/dist/assets/{github-light-default-BzOWmaf-.js → github-light-default-Co9J0YT2.js} +0 -0
- /package/codemini-web/dist/assets/{github-light-high-contrast-Bm3JPX7v.js → github-light-high-contrast-BFww7Aed.js} +0 -0
- /package/codemini-web/dist/assets/{github-light-high-contrast-Bmexxccr.js → github-light-high-contrast-Drx2T_ea.js} +0 -0
- /package/codemini-web/dist/assets/{github-light-DxDzpZWY.js → github-light-t2gQwbnC.js} +0 -0
- /package/codemini-web/dist/assets/{gleam-BtOZgVle.js → gleam-BjFNd70h.js} +0 -0
- /package/codemini-web/dist/assets/{gleam-Lf_XYEK-.js → gleam-_RSzgxb1.js} +0 -0
- /package/codemini-web/dist/assets/{gn-CY4VHHa6.js → gn-BlAV1bS1.js} +0 -0
- /package/codemini-web/dist/assets/{gn-JO9YMz2t.js → gn-MXj_EEiV.js} +0 -0
- /package/codemini-web/dist/assets/{gnuplot-DjZHg3_f.js → gnuplot-BTJRjb2O.js} +0 -0
- /package/codemini-web/dist/assets/{gnuplot-MPAbQV9r.js → gnuplot-C40vWoS_.js} +0 -0
- /package/codemini-web/dist/assets/{go-D2GlBE5F.js → go-B2Qj-jpc.js} +0 -0
- /package/codemini-web/dist/assets/{go-C6ThH8Hx.js → go-BF9dg2tN.js} +0 -0
- /package/codemini-web/dist/assets/{groovy-1vEGAvvX.js → groovy-42TXi0JD.js} +0 -0
- /package/codemini-web/dist/assets/{groovy-C_xCWdb_.js → groovy-YtV4YqmI.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-dark-hard-DHhjEKTi.js → gruvbox-dark-hard-DN_E1XFW.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-dark-hard-pdBjrsK5.js → gruvbox-dark-hard-DaxQoAo9.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-dark-medium-CL0I2zDn.js → gruvbox-dark-medium-CR6ynfxn.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-dark-medium-Csp4lPEF.js → gruvbox-dark-medium-xNyLsUVI.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-dark-soft-BpNWvgik.js → gruvbox-dark-soft-CrCUBJhA.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-dark-soft-Dy9vkRG2.js → gruvbox-dark-soft-QoKQNR_B.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-light-hard-CC8CVJp5.js → gruvbox-light-hard-BqLHNay_.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-light-hard-DO2pUUQV.js → gruvbox-light-hard-C3-JuKAe.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-light-medium-B_nBvpHM.js → gruvbox-light-medium-676URJw_.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-light-medium-D2yGUmJd.js → gruvbox-light-medium-86kxSNhL.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-light-soft-C_9RTTTT.js → gruvbox-light-soft-BGpHIYJO.js} +0 -0
- /package/codemini-web/dist/assets/{gruvbox-light-soft-DuLKkKFi.js → gruvbox-light-soft-ByoztTEu.js} +0 -0
- /package/codemini-web/dist/assets/{haskell-BFZjB68l.js → haskell-C5VEzHiR.js} +0 -0
- /package/codemini-web/dist/assets/{haskell-DfX5asxK.js → haskell-KyntJ58h.js} +0 -0
- /package/codemini-web/dist/assets/{haxe-DDQKctJt.js → haxe-Bnka4w1v.js} +0 -0
- /package/codemini-web/dist/assets/{haxe-Me-TWuvr.js → haxe-DxCG7g2C.js} +0 -0
- /package/codemini-web/dist/assets/{hcl-DUAADz_v.js → hcl-B-KEcm-b.js} +0 -0
- /package/codemini-web/dist/assets/{hcl-Ry3nZWbt.js → hcl-nG8lPt58.js} +0 -0
- /package/codemini-web/dist/assets/{hjson-CGFDmpMn.js → hjson-BUjIWbox.js} +0 -0
- /package/codemini-web/dist/assets/{hjson-DyGphq4K.js → hjson-KcqWy6wG.js} +0 -0
- /package/codemini-web/dist/assets/{hlsl-BKWZVvKK.js → hlsl-CU9ay1Rj.js} +0 -0
- /package/codemini-web/dist/assets/{hlsl-BVEJlW36.js → hlsl-CblrQXA-.js} +0 -0
- /package/codemini-web/dist/assets/{horizon-BZmYXqIF.js → horizon-BDDUNMOh.js} +0 -0
- /package/codemini-web/dist/assets/{horizon-D3wQTjs_.js → horizon-MuIr_z-n.js} +0 -0
- /package/codemini-web/dist/assets/{horizon-bright-D0uooZm5.js → horizon-bright-Km86OX7k.js} +0 -0
- /package/codemini-web/dist/assets/{horizon-bright-Cfh8ud4W.js → horizon-bright-QtrMcZM-.js} +0 -0
- /package/codemini-web/dist/assets/{houston-BUtcOxf9.js → houston-CnK3oLKP.js} +0 -0
- /package/codemini-web/dist/assets/{houston-CGv9NbgY.js → houston-L6-nhcqy.js} +0 -0
- /package/codemini-web/dist/assets/{hy-BqI2sCU2.js → hy-9kqolRdI.js} +0 -0
- /package/codemini-web/dist/assets/{hy-oWi_RwAK.js → hy-V3ipcBGo.js} +0 -0
- /package/codemini-web/dist/assets/{imba-DnUn0wai.js → imba-AWBATAYY.js} +0 -0
- /package/codemini-web/dist/assets/{imba-iwzgkuTD.js → imba-rkedaZRd.js} +0 -0
- /package/codemini-web/dist/assets/{ini-BNaakZQr.js → ini-BIn__beW.js} +0 -0
- /package/codemini-web/dist/assets/{ini-DMV_1xp9.js → ini-P5JLg6LV.js} +0 -0
- /package/codemini-web/dist/assets/{java-CTslCthB.js → java-Bb7gkEG1.js} +0 -0
- /package/codemini-web/dist/assets/{java-DbkCw8gs.js → java-X5SW6zDn.js} +0 -0
- /package/codemini-web/dist/assets/{javascript-BzJBge5U.js → javascript-Cn8UGaJe.js} +0 -0
- /package/codemini-web/dist/assets/{javascript-DqHURDA-.js → javascript-DHaqiI3u.js} +0 -0
- /package/codemini-web/dist/assets/{json-Cu3T5nD7.js → json-BlCKYbAr.js} +0 -0
- /package/codemini-web/dist/assets/{json-DZN6rfPx.js → json-Yl_wWztW.js} +0 -0
- /package/codemini-web/dist/assets/{json5-DSzj6NCq.js → json5-B3B8AE2U.js} +0 -0
- /package/codemini-web/dist/assets/{json5-Y2CuQCK-.js → json5-Cj9weIvR.js} +0 -0
- /package/codemini-web/dist/assets/{jsonc-B30nqSUF.js → jsonc-COLeM0mA.js} +0 -0
- /package/codemini-web/dist/assets/{jsonc-DwzKY8NT.js → jsonc-CwVZHrLL.js} +0 -0
- /package/codemini-web/dist/assets/{jsonl-B7UEa0TN.js → jsonl-CfYcxfNz.js} +0 -0
- /package/codemini-web/dist/assets/{jsonl-C8L12LZq.js → jsonl-my2EVZQF.js} +0 -0
- /package/codemini-web/dist/assets/{jsonnet-DYAV3b_U.js → jsonnet-B351KcBZ.js} +0 -0
- /package/codemini-web/dist/assets/{jsonnet-ZiCJB3SD.js → jsonnet-Cg2yxMWZ.js} +0 -0
- /package/codemini-web/dist/assets/{jssm-6UFVEBGg.js → jssm-CVNVxyp8.js} +0 -0
- /package/codemini-web/dist/assets/{jssm-BOfC2rh1.js → jssm-f9sZK7il.js} +0 -0
- /package/codemini-web/dist/assets/{jsx-AgmFDCOF.js → jsx-C-BZR9Er.js} +0 -0
- /package/codemini-web/dist/assets/{jsx-BEmZt5uE.js → jsx-mn0xQF_s.js} +0 -0
- /package/codemini-web/dist/assets/{kanagawa-dragon-BVoApXR6.js → kanagawa-dragon-Bg-BKRuP.js} +0 -0
- /package/codemini-web/dist/assets/{kanagawa-dragon-DF1o80wl.js → kanagawa-dragon-qidiS05d.js} +0 -0
- /package/codemini-web/dist/assets/{kanagawa-lotus-BkVGQkvY.js → kanagawa-lotus-CVGoMXw8.js} +0 -0
- /package/codemini-web/dist/assets/{kanagawa-lotus-C-uV5im6.js → kanagawa-lotus-DCJgGK2A.js} +0 -0
- /package/codemini-web/dist/assets/{kanagawa-wave-BizPisns.js → kanagawa-wave-CVz5XkfW.js} +0 -0
- /package/codemini-web/dist/assets/{kanagawa-wave-Cl5W2OPg.js → kanagawa-wave-CuNbEAGB.js} +0 -0
- /package/codemini-web/dist/assets/{kdl-BCaiqQ4X.js → kdl-B2a5Hdo5.js} +0 -0
- /package/codemini-web/dist/assets/{kdl-Bg7xxjIF.js → kdl-CmBtNZAQ.js} +0 -0
- /package/codemini-web/dist/assets/{kotlin-CNprttl8.js → kotlin-BgCroCiE.js} +0 -0
- /package/codemini-web/dist/assets/{kotlin-DRaoVNCW.js → kotlin-CwntYu9G.js} +0 -0
- /package/codemini-web/dist/assets/{kusto-CW62F42W.js → kusto-Dto5Mt8f.js} +0 -0
- /package/codemini-web/dist/assets/{kusto-D3uRUZFA.js → kusto-DzqQhEgS.js} +0 -0
- /package/codemini-web/dist/assets/{laserwave-B1sGpeV2.js → laserwave-Bf5KiZGG.js} +0 -0
- /package/codemini-web/dist/assets/{laserwave-BypMvj8s.js → laserwave-DqmURGYs.js} +0 -0
- /package/codemini-web/dist/assets/{lean-BbKKg8_U.js → lean-CLemLjY9.js} +0 -0
- /package/codemini-web/dist/assets/{lean-CYwit69O.js → lean-bStt-IHo.js} +0 -0
- /package/codemini-web/dist/assets/{less-6BW8xQaX.js → less-Dycz37IB.js} +0 -0
- /package/codemini-web/dist/assets/{less-CMYX9LBx.js → less-_4Z4Zbgj.js} +0 -0
- /package/codemini-web/dist/assets/{light-plus-CytNlrnF.js → light-plus-BISup5vO.js} +0 -0
- /package/codemini-web/dist/assets/{light-plus-zSYF2DYe.js → light-plus-CUPZt_vJ.js} +0 -0
- /package/codemini-web/dist/assets/{llvm-BFcvUor4.js → llvm-B3vA1z1w.js} +0 -0
- /package/codemini-web/dist/assets/{llvm-OMExIg60.js → llvm-DAbx5jqK.js} +0 -0
- /package/codemini-web/dist/assets/{log-BBfW4u9k.js → log-BRjeW2DW.js} +0 -0
- /package/codemini-web/dist/assets/{log-BrS0_Y6P.js → log-CM4eTPwH.js} +0 -0
- /package/codemini-web/dist/assets/{logo-D8GGcRiY.js → logo-DCYIDlXZ.js} +0 -0
- /package/codemini-web/dist/assets/{logo-L3bKRswG.js → logo-Dyx9NcGm.js} +0 -0
- /package/codemini-web/dist/assets/{luau-B-E69GSh.js → luau-B3LrvOEt.js} +0 -0
- /package/codemini-web/dist/assets/{luau-CZIl0XK4.js → luau-BJOxIq3l.js} +0 -0
- /package/codemini-web/dist/assets/{make-CA9NajZk.js → make-Bep3F-fA.js} +0 -0
- /package/codemini-web/dist/assets/{make-mlZyflos.js → make-BmHGvFNV.js} +0 -0
- /package/codemini-web/dist/assets/{markdown-CppElJDR.js → markdown-BObkjWCp.js} +0 -0
- /package/codemini-web/dist/assets/{markdown-DkXb8qKc.js → markdown-qxcI0Ex1.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-BYnCtUED.js → material-theme-DfbSys7S.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-darker-BNfFk916.js → material-theme-darker-CXzTJODk.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-darker-s0o-qH0l.js → material-theme-darker-DM1OIivA.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-OBz0sIMu.js → material-theme-jZt3rhQh.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-lighter-BXApD6tt.js → material-theme-lighter-C7qz3G7H.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-lighter-D0OJsx_T.js → material-theme-lighter-HtgpH1FU.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-ocean-CKWC7YJB.js → material-theme-ocean-CeFuXoRG.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-ocean-Cl_PEvBf.js → material-theme-ocean-DmL5jMtS.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-palenight-CEFfV_mF.js → material-theme-palenight-BMg4YxS6.js} +0 -0
- /package/codemini-web/dist/assets/{material-theme-palenight-DOTFIR3W.js → material-theme-palenight-CRxwxFv4.js} +0 -0
- /package/codemini-web/dist/assets/{matlab-BiYD-Y7N.js → matlab-BjvFQgI4.js} +0 -0
- /package/codemini-web/dist/assets/{matlab-CwLrY_Ss.js → matlab-CeDNF4Ix.js} +0 -0
- /package/codemini-web/dist/assets/{mdx-OZt5aooY.js → mdx-C_WF1Zvy.js} +0 -0
- /package/codemini-web/dist/assets/{mdx-irdaVRH8.js → mdx-DnKU9cqA.js} +0 -0
- /package/codemini-web/dist/assets/{mermaid-CkReAMVX.js → mermaid-5NtVsV32.js} +0 -0
- /package/codemini-web/dist/assets/{mermaid-mzvznqsh.js → mermaid-CH8Qvaqo.js} +0 -0
- /package/codemini-web/dist/assets/{min-dark-BAbZNtjj.js → min-dark-B95jFnY0.js} +0 -0
- /package/codemini-web/dist/assets/{min-dark-DoFQ3_GG.js → min-dark-BQ7SSUoL.js} +0 -0
- /package/codemini-web/dist/assets/{min-light-BzEisXBR.js → min-light-BGgk1zEi.js} +0 -0
- /package/codemini-web/dist/assets/{min-light-o5Iu4PYL.js → min-light-CqwYUont.js} +0 -0
- /package/codemini-web/dist/assets/{mipsasm-B9ciUcum.js → mipsasm-BIZV50OU.js} +0 -0
- /package/codemini-web/dist/assets/{mipsasm-DONjtc4L.js → mipsasm-OAAwCDEg.js} +0 -0
- /package/codemini-web/dist/assets/{mojo-A9VdeGlD.js → mojo-Bh0Ln9-1.js} +0 -0
- /package/codemini-web/dist/assets/{mojo-CHKQ5hW9.js → mojo-COx3BOEA.js} +0 -0
- /package/codemini-web/dist/assets/{monokai-B8rLeJY_.js → monokai-C988KBom.js} +0 -0
- /package/codemini-web/dist/assets/{monokai-SjnsTHn6.js → monokai-D2lcpl-D.js} +0 -0
- /package/codemini-web/dist/assets/{moonbit-Bb7eeXNq.js → moonbit-C-CVJfEU.js} +0 -0
- /package/codemini-web/dist/assets/{moonbit-CWIHpJf0.js → moonbit-ChOfdbnC.js} +0 -0
- /package/codemini-web/dist/assets/{move-Dy7CmIgW.js → move-DjHf2uHT.js} +0 -0
- /package/codemini-web/dist/assets/{move-MA-qIPBB.js → move-jwG4QUY4.js} +0 -0
- /package/codemini-web/dist/assets/{narrat-Cq6wc063.js → narrat-Bv3slmdi.js} +0 -0
- /package/codemini-web/dist/assets/{narrat-NioX5-_j.js → narrat-CuRqtiDW.js} +0 -0
- /package/codemini-web/dist/assets/{nextflow-groovy-jKlTICX_.js → nextflow-groovy-CYeLXiaP.js} +0 -0
- /package/codemini-web/dist/assets/{nextflow-groovy-BgEBN3iS.js → nextflow-groovy-Dk0GcQpl.js} +0 -0
- /package/codemini-web/dist/assets/{night-owl-C_xVeV9U.js → night-owl-SjOLjRtB.js} +0 -0
- /package/codemini-web/dist/assets/{night-owl-DHaGAA37.js → night-owl-cv0FEuUh.js} +0 -0
- /package/codemini-web/dist/assets/{night-owl-light-B1H1b6pL.js → night-owl-light-CpcKp0OZ.js} +0 -0
- /package/codemini-web/dist/assets/{night-owl-light-C_DkqGGe.js → night-owl-light-DHrEzBAj.js} +0 -0
- /package/codemini-web/dist/assets/{nix-BZVKmCQS.js → nix-BtLlRvM0.js} +0 -0
- /package/codemini-web/dist/assets/{nix-CBdStlCf.js → nix-CcOD1khX.js} +0 -0
- /package/codemini-web/dist/assets/{nord-3ndmnVQb.js → nord-BGjNHkRW.js} +0 -0
- /package/codemini-web/dist/assets/{nord-CrTSutxR.js → nord-DiukgIFA.js} +0 -0
- /package/codemini-web/dist/assets/{nushell-BSMBFYgO.js → nushell-DUqFDYtM.js} +0 -0
- /package/codemini-web/dist/assets/{nushell-C8hgS98n.js → nushell-GFe6C8D1.js} +0 -0
- /package/codemini-web/dist/assets/{objective-c-BUiYTSad.js → objective-c-BUV8AyKp.js} +0 -0
- /package/codemini-web/dist/assets/{objective-c-DGGlUjtt.js → objective-c-Da4gtNmU.js} +0 -0
- /package/codemini-web/dist/assets/{objective-cpp-Bk8vAxra.js → objective-cpp-Du3a_PKx.js} +0 -0
- /package/codemini-web/dist/assets/{objective-cpp-BwY1U2XT.js → objective-cpp-U8QllJj4.js} +0 -0
- /package/codemini-web/dist/assets/{ocaml-D51PiCY5.js → ocaml-4v1g0DKj.js} +0 -0
- /package/codemini-web/dist/assets/{ocaml-KuZ2AeVv.js → ocaml-DwXjJdD9.js} +0 -0
- /package/codemini-web/dist/assets/{odin-CoC4d8pi.js → odin-BlEjbtjb.js} +0 -0
- /package/codemini-web/dist/assets/{odin-CvKV_dam.js → odin-C2CG6fMn.js} +0 -0
- /package/codemini-web/dist/assets/{one-dark-pro-BbI-DLX3.js → one-dark-pro-BL6Mm10K.js} +0 -0
- /package/codemini-web/dist/assets/{one-dark-pro-C9bEA2Dz.js → one-dark-pro-BwcbXd-T.js} +0 -0
- /package/codemini-web/dist/assets/{one-light-DZ_5GYrV.js → one-light-BOQW5zin.js} +0 -0
- /package/codemini-web/dist/assets/{one-light-Do56bP_A.js → one-light-Cx3Ps96S.js} +0 -0
- /package/codemini-web/dist/assets/{openscad-0H6ozqDa.js → openscad-Bs2SxlcB.js} +0 -0
- /package/codemini-web/dist/assets/{openscad-DCmPLSXt.js → openscad-C7dPmpxc.js} +0 -0
- /package/codemini-web/dist/assets/{pascal-BMY45JJO.js → pascal-B6AuHgs_.js} +0 -0
- /package/codemini-web/dist/assets/{pascal-DghlbeLm.js → pascal-ruAwSiza.js} +0 -0
- /package/codemini-web/dist/assets/{pierre-dark-Be9bUWwI.js → pierre-dark-8SGzlI93.js} +0 -0
- /package/codemini-web/dist/assets/{pierre-light-Cq6kCwdb.js → pierre-light-BJzkLopB.js} +0 -0
- /package/codemini-web/dist/assets/{pkl-BlBky-cR.js → pkl-Bdw5peeW.js} +0 -0
- /package/codemini-web/dist/assets/{pkl-BzGvIelR.js → pkl-BuPFXprX.js} +0 -0
- /package/codemini-web/dist/assets/{plastic-C50vuo0c.js → plastic-BiAROaFC.js} +0 -0
- /package/codemini-web/dist/assets/{plastic-CHL2Ec9b.js → plastic-CGwKUd0C.js} +0 -0
- /package/codemini-web/dist/assets/{plsql-B6Eq-lAd.js → plsql-DQ_z5ed2.js} +0 -0
- /package/codemini-web/dist/assets/{plsql-mtL4EDYx.js → plsql-DoG_QfBE.js} +0 -0
- /package/codemini-web/dist/assets/{po-9sFvF4V8.js → po-BvHij3iO.js} +0 -0
- /package/codemini-web/dist/assets/{po-ByS5p8Sz.js → po-DN-mfyYW.js} +0 -0
- /package/codemini-web/dist/assets/{poimandres-Cs9j_baE.js → poimandres-BbdNMHGS.js} +0 -0
- /package/codemini-web/dist/assets/{poimandres-Cu7ZGbJ7.js → poimandres-BdM9d7kg.js} +0 -0
- /package/codemini-web/dist/assets/{polar-COmSbiHW.js → polar-BZ5C-_XH.js} +0 -0
- /package/codemini-web/dist/assets/{polar-Dc9aglFR.js → polar-p_EVOYp2.js} +0 -0
- /package/codemini-web/dist/assets/{postcss-B_ncIJlb.js → postcss-BVVH-mhK.js} +0 -0
- /package/codemini-web/dist/assets/{postcss-D_ArMqNC.js → postcss-C_rkJ2pP.js} +0 -0
- /package/codemini-web/dist/assets/{powerquery-BzHwsYRb.js → powerquery-BBfv-1ce.js} +0 -0
- /package/codemini-web/dist/assets/{powerquery-CnV22x6V.js → powerquery-D2htabf9.js} +0 -0
- /package/codemini-web/dist/assets/{powershell-BGZYhdIS.js → powershell-BcfgzEsQ.js} +0 -0
- /package/codemini-web/dist/assets/{powershell-C6bIwB0M.js → powershell-NfY3J8Uu.js} +0 -0
- /package/codemini-web/dist/assets/{prisma-D5S9vj6g.js → prisma-CMeP8UTm.js} +0 -0
- /package/codemini-web/dist/assets/{prisma-rx7KPY6m.js → prisma-DFAqr_mL.js} +0 -0
- /package/codemini-web/dist/assets/{prolog-BfgX1o85.js → prolog-Cc9yvHML.js} +0 -0
- /package/codemini-web/dist/assets/{prolog-CHVuxG8M.js → prolog-rt-FXeeT.js} +0 -0
- /package/codemini-web/dist/assets/{proto-B_ioi7EM.js → proto-CNBX21YV.js} +0 -0
- /package/codemini-web/dist/assets/{proto-BhkmoXVj.js → proto-CYqgjQUT.js} +0 -0
- /package/codemini-web/dist/assets/{puppet-Brdz8eoo.js → puppet-BAAnN8uU.js} +0 -0
- /package/codemini-web/dist/assets/{puppet-tRlrvlcY.js → puppet-ZnM2F-kY.js} +0 -0
- /package/codemini-web/dist/assets/{purescript-Bwtvgqjl.js → purescript-hu-4rgo5.js} +0 -0
- /package/codemini-web/dist/assets/{purescript-DX3wKXeK.js → purescript-nyLIIaTP.js} +0 -0
- /package/codemini-web/dist/assets/{python-9qQRnRoJ.js → python-Dt6SBvxD.js} +0 -0
- /package/codemini-web/dist/assets/{python-CUtprRpG.js → python-DypNN-aL.js} +0 -0
- /package/codemini-web/dist/assets/{qmldir-BP8WEvx8.js → qmldir-BDEiw2QJ.js} +0 -0
- /package/codemini-web/dist/assets/{qmldir-ftS4SxdQ.js → qmldir-MBz01aYW.js} +0 -0
- /package/codemini-web/dist/assets/{qss-DrZJSiDh.js → qss-B8ZOZZRM.js} +0 -0
- /package/codemini-web/dist/assets/{qss-Mo-j41VR.js → qss-BjslRtqf.js} +0 -0
- /package/codemini-web/dist/assets/{r-BX0U3688.js → r-70IHnSKT.js} +0 -0
- /package/codemini-web/dist/assets/{r-DN76jn9o.js → r-UrwRxojO.js} +0 -0
- /package/codemini-web/dist/assets/{racket-CrTD1_3_.js → racket-emNFhxM0.js} +0 -0
- /package/codemini-web/dist/assets/{racket-DCvJyROq.js → racket-lrWGJ4l7.js} +0 -0
- /package/codemini-web/dist/assets/{raku-Bhig3MAC.js → raku-B1DWL3rh.js} +0 -0
- /package/codemini-web/dist/assets/{raku-CvVnta4t.js → raku-M_VGm79k.js} +0 -0
- /package/codemini-web/dist/assets/{red-CWX-2pbk.js → red-BcYVa2Jk.js} +0 -0
- /package/codemini-web/dist/assets/{red-CztBD70n.js → red-BvMgtCZO.js} +0 -0
- /package/codemini-web/dist/assets/{reg-99qFU_BD.js → reg-DL66XhHR.js} +0 -0
- /package/codemini-web/dist/assets/{reg-C0s7-4s0.js → reg-rRGLqGjW.js} +0 -0
- /package/codemini-web/dist/assets/{regexp-BIytsEkR.js → regexp-CEudNzRJ.js} +0 -0
- /package/codemini-web/dist/assets/{regexp-Cov7gRr6.js → regexp-PTdmEsyL.js} +0 -0
- /package/codemini-web/dist/assets/{rel-BuFiYCnx.js → rel-DlXaqz0b.js} +0 -0
- /package/codemini-web/dist/assets/{rel-D1_XRRAX.js → rel-DqcQFa7Q.js} +0 -0
- /package/codemini-web/dist/assets/{riscv-CdWUuizJ.js → riscv-CanSyeO8.js} +0 -0
- /package/codemini-web/dist/assets/{riscv-QV-e36TY.js → riscv-lk-jjtXM.js} +0 -0
- /package/codemini-web/dist/assets/{ron-B-EB7ZBI.js → ron-BQ46iNCb.js} +0 -0
- /package/codemini-web/dist/assets/{ron-B9EiEQzE.js → ron-CVeChqUp.js} +0 -0
- /package/codemini-web/dist/assets/{rose-pine-B05wARW4.js → rose-pine-BuTm62Vj.js} +0 -0
- /package/codemini-web/dist/assets/{rose-pine-Dxqc8n_1.js → rose-pine-ChTxq_yN.js} +0 -0
- /package/codemini-web/dist/assets/{rose-pine-dawn-CSpx1lq4.js → rose-pine-dawn-B670NuiP.js} +0 -0
- /package/codemini-web/dist/assets/{rose-pine-dawn-pz_3O4ep.js → rose-pine-dawn-RGM_kxZ2.js} +0 -0
- /package/codemini-web/dist/assets/{rose-pine-moon-B27idgkd.js → rose-pine-moon-6KoQonQX.js} +0 -0
- /package/codemini-web/dist/assets/{rose-pine-moon-DXyZaCQX.js → rose-pine-moon-NLV-cJvy.js} +0 -0
- /package/codemini-web/dist/assets/{rosmsg-7fMni2bi.js → rosmsg-Bw0HfGe_.js} +0 -0
- /package/codemini-web/dist/assets/{rosmsg-CcBwQf5j.js → rosmsg-CUVWbdrA.js} +0 -0
- /package/codemini-web/dist/assets/{rust-BHulpgn4.js → rust-CrVJvhfa.js} +0 -0
- /package/codemini-web/dist/assets/{rust-ppknoGus.js → rust-D83UuV7F.js} +0 -0
- /package/codemini-web/dist/assets/{sass-Baw41att.js → sass-CE2YZJdE.js} +0 -0
- /package/codemini-web/dist/assets/{sass-DwJf1cGc.js → sass-Dfpo5TpD.js} +0 -0
- /package/codemini-web/dist/assets/{scala-B_iky--A.js → scala-BjILTRgu.js} +0 -0
- /package/codemini-web/dist/assets/{scala-DtlnBhKt.js → scala-CyYhociv.js} +0 -0
- /package/codemini-web/dist/assets/{scheme-B8EPXl9-.js → scheme-BQ8c0gTd.js} +0 -0
- /package/codemini-web/dist/assets/{scheme-DYQMayIi.js → scheme-BrRWQ1yX.js} +0 -0
- /package/codemini-web/dist/assets/{sdbl-BQ-WHv_b.js → sdbl-CtZR2I6R.js} +0 -0
- /package/codemini-web/dist/assets/{sdbl-D0gXyfL6.js → sdbl-Ds7t3N0Q.js} +0 -0
- /package/codemini-web/dist/assets/{shellscript-B_ROtSU5.js → shellscript-Cim6Loaj.js} +0 -0
- /package/codemini-web/dist/assets/{shellscript-CPlx29kh.js → shellscript-wXQ3AlcS.js} +0 -0
- /package/codemini-web/dist/assets/{slack-dark-D27cdsBY.js → slack-dark-CrWftATe.js} +0 -0
- /package/codemini-web/dist/assets/{slack-dark-D_l_kxUG.js → slack-dark-nxsbRL6U.js} +0 -0
- /package/codemini-web/dist/assets/{slack-ochin-BE7dVjTN.js → slack-ochin-Cx2HX71B.js} +0 -0
- /package/codemini-web/dist/assets/{slack-ochin-BaRZ7cFo.js → slack-ochin-DJ-2OJXN.js} +0 -0
- /package/codemini-web/dist/assets/{smalltalk-B12I7SNP.js → smalltalk-DGeW9hbd.js} +0 -0
- /package/codemini-web/dist/assets/{smalltalk-DRM3jr39.js → smalltalk-FYMOGNo9.js} +0 -0
- /package/codemini-web/dist/assets/{snazzy-light-BayTLer3.js → snazzy-light-508iEJO_.js} +0 -0
- /package/codemini-web/dist/assets/{snazzy-light-CooAwQFN.js → snazzy-light-BxBnzmu0.js} +0 -0
- /package/codemini-web/dist/assets/{solarized-dark-DJyTII3y.js → solarized-dark-B3HMD5k3.js} +0 -0
- /package/codemini-web/dist/assets/{solarized-dark-Y31Htb59.js → solarized-dark-TCkigWjM.js} +0 -0
- /package/codemini-web/dist/assets/{solarized-light-AlAlWTlV.js → solarized-light-B-wiF2HZ.js} +0 -0
- /package/codemini-web/dist/assets/{solarized-light-B-u_T8hk.js → solarized-light-R2Rcjqww.js} +0 -0
- /package/codemini-web/dist/assets/{solidity-CYAp_sJG.js → solidity-46G7JVSr.js} +0 -0
- /package/codemini-web/dist/assets/{solidity-DGySeR8E.js → solidity-Bv4Kww1K.js} +0 -0
- /package/codemini-web/dist/assets/{splunk-DIQhxWy6.js → splunk-DHfVkGsm.js} +0 -0
- /package/codemini-web/dist/assets/{splunk-LsCTpuOP.js → splunk-DKgoBk9o.js} +0 -0
- /package/codemini-web/dist/assets/{sql-BHYM5i23.js → sql-Bx-skccv.js} +0 -0
- /package/codemini-web/dist/assets/{sql-Cl5BmUDB.js → sql-PkTJiLTy.js} +0 -0
- /package/codemini-web/dist/assets/{ssh-config-CTKraw7w.js → ssh-config-B2E5WPpD.js} +0 -0
- /package/codemini-web/dist/assets/{ssh-config-QxQe7y21.js → ssh-config-JoXpWa3y.js} +0 -0
- /package/codemini-web/dist/assets/{stylus-DZvi0832.js → stylus-BPw8WnNN.js} +0 -0
- /package/codemini-web/dist/assets/{stylus-MJorGDSp.js → stylus-C836DBsS.js} +0 -0
- /package/codemini-web/dist/assets/{swift-BBBWvOdl.js → swift-CFG3rDz_.js} +0 -0
- /package/codemini-web/dist/assets/{swift-vEJN8-U8.js → swift-Ce2Nlw8Q.js} +0 -0
- /package/codemini-web/dist/assets/{synthwave-84-CU96aGm9.js → synthwave-84-Br2i7yYN.js} +0 -0
- /package/codemini-web/dist/assets/{synthwave-84-Dq9WAwjJ.js → synthwave-84-CvU6yQ4V.js} +0 -0
- /package/codemini-web/dist/assets/{system-verilog-BNegUpQT.js → system-verilog-BVQtCmAV.js} +0 -0
- /package/codemini-web/dist/assets/{system-verilog-Ddagu-BW.js → system-verilog-Dkc37EdI.js} +0 -0
- /package/codemini-web/dist/assets/{systemd-BxlmhgV_.js → systemd-CcJTFvpw.js} +0 -0
- /package/codemini-web/dist/assets/{systemd-k28iMR-m.js → systemd-svl6VdYY.js} +0 -0
- /package/codemini-web/dist/assets/{talonscript-DprpkXjP.js → talonscript-CHxC2PG4.js} +0 -0
- /package/codemini-web/dist/assets/{talonscript-p-GlmLEL.js → talonscript-CWZYyS8Z.js} +0 -0
- /package/codemini-web/dist/assets/{tasl-BNm9EzXM.js → tasl-BfBucHfV.js} +0 -0
- /package/codemini-web/dist/assets/{tasl-CcWIX7df.js → tasl-woKXKJkx.js} +0 -0
- /package/codemini-web/dist/assets/{tcl-BQwTCs7_.js → tcl-6FTtarFH.js} +0 -0
- /package/codemini-web/dist/assets/{tcl-CDAGOvGJ.js → tcl-iBXrc9W2.js} +0 -0
- /package/codemini-web/dist/assets/{terraform-DLqNQanb.js → terraform-BywKBLRG.js} +0 -0
- /package/codemini-web/dist/assets/{terraform-DQhgYyF5.js → terraform-DHx5Kdyi.js} +0 -0
- /package/codemini-web/dist/assets/{tokyo-night-DxL5lL62.js → tokyo-night-BQsIhA-A.js} +0 -0
- /package/codemini-web/dist/assets/{tokyo-night-mZPbj36U.js → tokyo-night-D2gua4K6.js} +0 -0
- /package/codemini-web/dist/assets/{toml-BncMjmx0.js → toml-B35rd2Aj.js} +0 -0
- /package/codemini-web/dist/assets/{toml-C7zZe7mY.js → toml-BCbG8Uu3.js} +0 -0
- /package/codemini-web/dist/assets/{tsv--yOlbuAc.js → tsv-Bfk0YRxN.js} +0 -0
- /package/codemini-web/dist/assets/{tsv-BYgjC2V4.js → tsv-ZPaCtsKO.js} +0 -0
- /package/codemini-web/dist/assets/{tsx-CQpoSLkt.js → tsx-BPnxgPXu.js} +0 -0
- /package/codemini-web/dist/assets/{tsx-_xvh4DFW.js → tsx-Cvi8n1qy.js} +0 -0
- /package/codemini-web/dist/assets/{turtle-DO1RZ6-t.js → turtle-Cj8ap4C4.js} +0 -0
- /package/codemini-web/dist/assets/{turtle-ZCrKgE8E.js → turtle-DsCF_r1D.js} +0 -0
- /package/codemini-web/dist/assets/{typescript-BGytLZ-E.js → typescript-DESGzanZ.js} +0 -0
- /package/codemini-web/dist/assets/{typescript-Bl_SUyNj.js → typescript-DkKrEyJv.js} +0 -0
- /package/codemini-web/dist/assets/{typespec-9rD7KG94.js → typespec-tsneGPKg.js} +0 -0
- /package/codemini-web/dist/assets/{typespec-Bb7cO9Af.js → typespec-zSWU032W.js} +0 -0
- /package/codemini-web/dist/assets/{typst-CChrusEX.js → typst-BcQNhVIE.js} +0 -0
- /package/codemini-web/dist/assets/{typst-DJ10KoY6.js → typst-C6LmF4pH.js} +0 -0
- /package/codemini-web/dist/assets/{v-CutuAYrg.js → v-CPbK5D5K.js} +0 -0
- /package/codemini-web/dist/assets/{v-DCfT4ti_.js → v-D6v2lknR.js} +0 -0
- /package/codemini-web/dist/assets/{vala-APnq2lEm.js → vala-CTmcnleK.js} +0 -0
- /package/codemini-web/dist/assets/{vala-DJpFErrU.js → vala-CW2V92s6.js} +0 -0
- /package/codemini-web/dist/assets/{vb-2TNZABCr.js → vb-CHzBmKx-.js} +0 -0
- /package/codemini-web/dist/assets/{vb-DQuyY02M.js → vb-iQRhK9Tp.js} +0 -0
- /package/codemini-web/dist/assets/{verilog-Bc6dGayD.js → verilog-BxRFSB3_.js} +0 -0
- /package/codemini-web/dist/assets/{verilog-BuvxZrtu.js → verilog-Cu16TfKw.js} +0 -0
- /package/codemini-web/dist/assets/{vesper-5CiKYnlC.js → vesper-B0T1dCxY.js} +0 -0
- /package/codemini-web/dist/assets/{vesper-bM1AKkiO.js → vesper-D_U9vezF.js} +0 -0
- /package/codemini-web/dist/assets/{vhdl-2NYOzUvZ.js → vhdl-D4h06VsC.js} +0 -0
- /package/codemini-web/dist/assets/{vhdl-pScFq2IF.js → vhdl-suLxFY6N.js} +0 -0
- /package/codemini-web/dist/assets/{viml-AdCpKk5r.js → viml-BQu4-sFk.js} +0 -0
- /package/codemini-web/dist/assets/{viml-LZIbwXqf.js → viml-DMcwh6Y2.js} +0 -0
- /package/codemini-web/dist/assets/{vitesse-black-BhKXUSxn.js → vitesse-black-Dk8H62LF.js} +0 -0
- /package/codemini-web/dist/assets/{vitesse-black-DJ5O_Wf1.js → vitesse-black-sFXfT98A.js} +0 -0
- /package/codemini-web/dist/assets/{vitesse-dark-23Naczwl.js → vitesse-dark-B_8wZgsl.js} +0 -0
- /package/codemini-web/dist/assets/{vitesse-dark-BzqhRcAC.js → vitesse-dark-BuiSS132.js} +0 -0
- /package/codemini-web/dist/assets/{vitesse-light-BDEFVzPq.js → vitesse-light-BFFa4sOZ.js} +0 -0
- /package/codemini-web/dist/assets/{vitesse-light-C6rj90Ld.js → vitesse-light-DfdaVJLv.js} +0 -0
- /package/codemini-web/dist/assets/{vyper-CAC2wkEx.js → vyper-CU9IduFj.js} +0 -0
- /package/codemini-web/dist/assets/{vyper-Cli2Hz-N.js → vyper-DfAPtbtc.js} +0 -0
- /package/codemini-web/dist/assets/{wasm-BYEYHoBh.js → wasm-6aAEIEYl.js} +0 -0
- /package/codemini-web/dist/assets/{wasm-JuQDwMf4.js → wasm-ByDQ9GrP.js} +0 -0
- /package/codemini-web/dist/assets/{wasm-C_1NoYKf.js → wasm-C9fkFrNS.js} +0 -0
- /package/codemini-web/dist/assets/{wasm-DmLFHHUn.js → wasm-CdytVWOW.js} +0 -0
- /package/codemini-web/dist/assets/{wenyan-BtC3dCkd.js → wenyan-B_37P8uK.js} +0 -0
- /package/codemini-web/dist/assets/{wenyan-DZOq1WNp.js → wenyan-DNkN8oQc.js} +0 -0
- /package/codemini-web/dist/assets/{wgsl-BfhDoYq0.js → wgsl-Bggw1Yhv.js} +0 -0
- /package/codemini-web/dist/assets/{wgsl-sEaiSqkk.js → wgsl-by06Hq-s.js} +0 -0
- /package/codemini-web/dist/assets/{wikitext-BBK9d3N8.js → wikitext-CjjhOSjd.js} +0 -0
- /package/codemini-web/dist/assets/{wikitext-BN0a9cMl.js → wikitext-zXy-4mpr.js} +0 -0
- /package/codemini-web/dist/assets/{wit-B5eB3VJ4.js → wit--vc2X9vR.js} +0 -0
- /package/codemini-web/dist/assets/{wit-Drz0L2pK.js → wit-BHjrebka.js} +0 -0
- /package/codemini-web/dist/assets/{wolfram-BjzpXDTC.js → wolfram-Dr60-Zy4.js} +0 -0
- /package/codemini-web/dist/assets/{wolfram-hGtNh8mf.js → wolfram-Mw4XcN1t.js} +0 -0
- /package/codemini-web/dist/assets/{yaml-45PVuYHO.js → yaml--meH0-me.js} +0 -0
- /package/codemini-web/dist/assets/{yaml-CvJwaec9.js → yaml-CZT5eZge.js} +0 -0
- /package/codemini-web/dist/assets/{zenscript-ChrmAB59.js → zenscript-C94GGJ6Y.js} +0 -0
- /package/codemini-web/dist/assets/{zenscript-Dl5s7Kfy.js → zenscript-Cf2Qp-oj.js} +0 -0
- /package/codemini-web/dist/assets/{zig-BYKQoCIF.js → zig-DgUQodsP.js} +0 -0
- /package/codemini-web/dist/assets/{zig-Dashm4F0.js → zig-feO0kYCa.js} +0 -0
|
@@ -206,15 +206,66 @@ function allowedPathRoots(workspaceRoot, config = {}) {
|
|
|
206
206
|
.map((item) => path.resolve(item));
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
function isWithinAnyRoot(candidatePath, roots = []) {
|
|
210
|
-
const resolvedCandidate = path.resolve(candidatePath);
|
|
211
|
-
return roots.some((root) => {
|
|
212
|
-
const relative = path.relative(root, resolvedCandidate);
|
|
213
|
-
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
function
|
|
209
|
+
function isWithinAnyRoot(candidatePath, roots = []) {
|
|
210
|
+
const resolvedCandidate = path.resolve(candidatePath);
|
|
211
|
+
return roots.some((root) => {
|
|
212
|
+
const relative = path.relative(root, resolvedCandidate);
|
|
213
|
+
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function normalizeWindowsPathForCompare(value) {
|
|
218
|
+
return String(value || '').trim().replace(/\//g, '\\').replace(/\\+$/g, '').toLowerCase();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
function isWindowsPathWithinAnyRoot(candidatePath, roots = []) {
|
|
222
|
+
const candidate = normalizeWindowsPathForCompare(candidatePath);
|
|
223
|
+
if (!/^[a-z]:\\/i.test(candidate)) return false;
|
|
224
|
+
return roots.some((root) => {
|
|
225
|
+
const normalizedRoot = normalizeWindowsPathForCompare(root);
|
|
226
|
+
return candidate === normalizedRoot || candidate.startsWith(`${normalizedRoot}\\`);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function collectWindowsAbsolutePathCandidates(command) {
|
|
231
|
+
const text = String(command || '');
|
|
232
|
+
const candidates = [];
|
|
233
|
+
let current = '';
|
|
234
|
+
let quote = '';
|
|
235
|
+
|
|
236
|
+
const flush = () => {
|
|
237
|
+
const token = current.trim();
|
|
238
|
+
current = '';
|
|
239
|
+
if (/^[A-Za-z]:[\\/]/.test(token)) candidates.push(token);
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
for (let i = 0; i < text.length; i += 1) {
|
|
243
|
+
const ch = text[i];
|
|
244
|
+
if (quote) {
|
|
245
|
+
if (ch === quote) {
|
|
246
|
+
flush();
|
|
247
|
+
quote = '';
|
|
248
|
+
} else {
|
|
249
|
+
current += ch;
|
|
250
|
+
}
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
if (ch === '"' || ch === '\'') {
|
|
254
|
+
flush();
|
|
255
|
+
quote = ch;
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (/\s/.test(ch)) {
|
|
259
|
+
flush();
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
current += ch;
|
|
263
|
+
}
|
|
264
|
+
flush();
|
|
265
|
+
return candidates;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function validateCdSegment(command, workspaceRoot, config = {}) {
|
|
218
269
|
const tokens = tokenizeTopLevel(command);
|
|
219
270
|
if (tokens.length === 1) {
|
|
220
271
|
return { allowed: false, reason: 'cd requires a target path in safe mode' };
|
|
@@ -279,20 +330,19 @@ export function evaluateCommandPolicy(command, config, workspaceRoot = process.c
|
|
|
279
330
|
}
|
|
280
331
|
}
|
|
281
332
|
|
|
282
|
-
const
|
|
283
|
-
const windowsAbsPath =
|
|
284
|
-
for (const p of windowsAbsPath) {
|
|
285
|
-
if (!
|
|
286
|
-
return { allowed: false, reason: `absolute path outside workspace or allowed paths: ${p}`, suggestion: suggestionForToken(token, config) };
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
const posixAbsPath = cmd.match(/(?<![:/\w])\/(?!\/)[^\s'"]+/g) || [];
|
|
291
|
-
const
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
333
|
+
const allowedRoots = allowedPathRoots(workspaceRoot, config);
|
|
334
|
+
const windowsAbsPath = collectWindowsAbsolutePathCandidates(cmd);
|
|
335
|
+
for (const p of windowsAbsPath) {
|
|
336
|
+
if (!isWindowsPathWithinAnyRoot(p, allowedRoots)) {
|
|
337
|
+
return { allowed: false, reason: `absolute path outside workspace or allowed paths: ${p}`, suggestion: suggestionForToken(token, config) };
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
const posixAbsPath = cmd.match(/(?<![:/\w])\/(?!\/)[^\s'"]+/g) || [];
|
|
342
|
+
for (const p of posixAbsPath) {
|
|
343
|
+
if (!isWithinAnyRoot(p, allowedRoots)) {
|
|
344
|
+
return { allowed: false, reason: `absolute path outside workspace or allowed paths: ${p}`, suggestion: suggestionForToken(token, config) };
|
|
345
|
+
}
|
|
296
346
|
}
|
|
297
347
|
|
|
298
348
|
return { allowed: true };
|
package/src/core/config-store.js
CHANGED
|
@@ -42,6 +42,7 @@ const DEFAULT_CONFIG = {
|
|
|
42
42
|
},
|
|
43
43
|
execution: {
|
|
44
44
|
mode: 'normal',
|
|
45
|
+
approval_mode: 'review',
|
|
45
46
|
always_allow_tools: [
|
|
46
47
|
'read',
|
|
47
48
|
'grep',
|
|
@@ -148,9 +149,16 @@ function normalizePolicyLists(config) {
|
|
|
148
149
|
}
|
|
149
150
|
next.model.name = String(next.model.name || DEFAULT_CONFIG.model.name).trim() || DEFAULT_CONFIG.model.name;
|
|
150
151
|
next.model.fast_name = String(next.model.fast_name || '').trim();
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
const rawExecutionMode = String(next.execution.mode || '').toLowerCase();
|
|
153
|
+
const rawApprovalMode = String(next.execution.approval_mode || next.execution.approvalMode || '').toLowerCase().replace(/-/g, '_');
|
|
154
|
+
next.execution.mode = ['normal', 'plan'].includes(rawExecutionMode)
|
|
155
|
+
? rawExecutionMode
|
|
156
|
+
: 'normal';
|
|
157
|
+
next.execution.approval_mode = ['review', 'auto', 'full_access'].includes(rawApprovalMode)
|
|
158
|
+
? rawApprovalMode
|
|
159
|
+
: rawExecutionMode === 'auto'
|
|
160
|
+
? 'auto'
|
|
161
|
+
: 'review';
|
|
154
162
|
const rawTools = Array.isArray(next.execution.always_allow_tools)
|
|
155
163
|
? next.execution.always_allow_tools
|
|
156
164
|
: [];
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import { spawn } from 'node:child_process';
|
|
5
|
+
import { normalizePath } from './string-utils.js';
|
|
6
|
+
|
|
7
|
+
const CHANGE_OPLOG_VERSION = 1;
|
|
8
|
+
const FILE_TOOLS = new Set(['edit', 'write', 'delete']);
|
|
9
|
+
|
|
10
|
+
function runGit(args, { cwd, input = null, allowFailure = false, timeoutMs = 120_000 } = {}) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
const child = spawn('git', args, {
|
|
13
|
+
cwd,
|
|
14
|
+
windowsHide: true,
|
|
15
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
16
|
+
});
|
|
17
|
+
const stdoutChunks = [];
|
|
18
|
+
const stderrChunks = [];
|
|
19
|
+
const timer = setTimeout(() => {
|
|
20
|
+
try { child.kill(); } catch {}
|
|
21
|
+
}, timeoutMs);
|
|
22
|
+
child.stdout.on('data', (chunk) => stdoutChunks.push(Buffer.from(chunk)));
|
|
23
|
+
child.stderr.on('data', (chunk) => stderrChunks.push(Buffer.from(chunk)));
|
|
24
|
+
child.on('error', (error) => {
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
reject(error);
|
|
27
|
+
});
|
|
28
|
+
child.on('close', (code) => {
|
|
29
|
+
clearTimeout(timer);
|
|
30
|
+
const stdoutBuffer = Buffer.concat(stdoutChunks);
|
|
31
|
+
const stderrBuffer = Buffer.concat(stderrChunks);
|
|
32
|
+
const result = {
|
|
33
|
+
code,
|
|
34
|
+
stdout: stdoutBuffer.toString('utf8'),
|
|
35
|
+
stderr: stderrBuffer.toString('utf8'),
|
|
36
|
+
stdoutBuffer,
|
|
37
|
+
stderrBuffer
|
|
38
|
+
};
|
|
39
|
+
if (code === 0 || allowFailure) resolve(result);
|
|
40
|
+
else reject(new Error(result.stderr.trim() || result.stdout.trim() || `git exited with code ${code}`));
|
|
41
|
+
});
|
|
42
|
+
if (input != null) child.stdin.end(input);
|
|
43
|
+
else child.stdin.end();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function changeId(prefix = 'op') {
|
|
48
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
49
|
+
const rand = Math.random().toString(36).slice(2, 8);
|
|
50
|
+
return `${prefix}-${stamp}-${rand}`;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function normalizeRelativePath(value, { root = '' } = {}) {
|
|
54
|
+
let text = normalizePath(String(value || '').trim()).replace(/:\d+(?:-\d+)?$/, '');
|
|
55
|
+
if (!text || text === '.') return '';
|
|
56
|
+
if (/^[a-zA-Z]:\//.test(text) || text.startsWith('/')) {
|
|
57
|
+
if (!root) return '';
|
|
58
|
+
const absRoot = path.resolve(root);
|
|
59
|
+
const absTarget = path.resolve(text);
|
|
60
|
+
const rel = path.relative(absRoot, absTarget);
|
|
61
|
+
if (!rel || rel.startsWith('..') || path.isAbsolute(rel)) return '';
|
|
62
|
+
text = normalizePath(rel);
|
|
63
|
+
}
|
|
64
|
+
if (text.startsWith('../')) return '';
|
|
65
|
+
return text;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function extractPathCandidates(args = {}, declaredChanges = [], options = {}) {
|
|
69
|
+
const candidates = [];
|
|
70
|
+
for (const change of Array.isArray(declaredChanges) ? declaredChanges : [declaredChanges]) {
|
|
71
|
+
if (change?.path) candidates.push(change.path);
|
|
72
|
+
}
|
|
73
|
+
for (const value of [
|
|
74
|
+
args?.path,
|
|
75
|
+
args?.file,
|
|
76
|
+
args?.file_path,
|
|
77
|
+
args?.target,
|
|
78
|
+
args?.edit?.path,
|
|
79
|
+
args?.edit?.file,
|
|
80
|
+
args?.edit?.file_path,
|
|
81
|
+
args?.edit?.target?.path
|
|
82
|
+
]) {
|
|
83
|
+
if (typeof value === 'string') candidates.push(value);
|
|
84
|
+
}
|
|
85
|
+
const out = [];
|
|
86
|
+
const seen = new Set();
|
|
87
|
+
for (const value of candidates) {
|
|
88
|
+
const normalized = normalizeRelativePath(value, options);
|
|
89
|
+
if (!normalized || seen.has(normalized)) continue;
|
|
90
|
+
seen.add(normalized);
|
|
91
|
+
out.push(normalized);
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function parseStatusPaths(text) {
|
|
97
|
+
const parts = String(text || '').split('\0').filter(Boolean);
|
|
98
|
+
const paths = [];
|
|
99
|
+
for (let i = 0; i < parts.length; i += 1) {
|
|
100
|
+
const entry = parts[i];
|
|
101
|
+
if (entry.length < 4) continue;
|
|
102
|
+
const status = entry.slice(0, 2);
|
|
103
|
+
const filePath = normalizeRelativePath(entry.slice(3));
|
|
104
|
+
if (filePath) paths.push(filePath);
|
|
105
|
+
if (status.includes('R') || status.includes('C')) {
|
|
106
|
+
i += 1;
|
|
107
|
+
const renamedPath = normalizeRelativePath(parts[i] || '');
|
|
108
|
+
if (renamedPath) paths.push(renamedPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return [...new Set(paths)];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async function readWorktreeSnapshot(root, relativePath) {
|
|
115
|
+
const abs = path.resolve(root, relativePath);
|
|
116
|
+
if (!abs.startsWith(`${root}${path.sep}`) && abs !== root) {
|
|
117
|
+
return { exists: false, content: Buffer.alloc(0), hash: '' };
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const content = await fs.readFile(abs);
|
|
121
|
+
return { exists: true, content, hash: hashBuffer(content) };
|
|
122
|
+
} catch (error) {
|
|
123
|
+
if (error?.code === 'ENOENT') return { exists: false, content: Buffer.alloc(0), hash: '' };
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async function readHeadSnapshot(root, relativePath) {
|
|
129
|
+
try {
|
|
130
|
+
const result = await runGit(['show', `HEAD:${relativePath}`], {
|
|
131
|
+
cwd: root,
|
|
132
|
+
allowFailure: true,
|
|
133
|
+
timeoutMs: 60_000
|
|
134
|
+
});
|
|
135
|
+
if (result.code !== 0) return { exists: false, content: Buffer.alloc(0), hash: '' };
|
|
136
|
+
return { exists: true, content: result.stdoutBuffer, hash: hashBuffer(result.stdoutBuffer) };
|
|
137
|
+
} catch {
|
|
138
|
+
return { exists: false, content: Buffer.alloc(0), hash: '' };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function hashBuffer(buffer) {
|
|
143
|
+
let hash = 5381;
|
|
144
|
+
for (const byte of buffer) hash = ((hash << 5) + hash + byte) >>> 0;
|
|
145
|
+
return hash.toString(16);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function countPatchLines(patch) {
|
|
149
|
+
let added = 0;
|
|
150
|
+
let removed = 0;
|
|
151
|
+
for (const line of String(patch || '').split(/\r?\n/)) {
|
|
152
|
+
if (line.startsWith('+++') || line.startsWith('---')) continue;
|
|
153
|
+
if (line.startsWith('+')) added += 1;
|
|
154
|
+
else if (line.startsWith('-')) removed += 1;
|
|
155
|
+
}
|
|
156
|
+
return { added, removed };
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function firstChangedLineFromPatch(patch) {
|
|
160
|
+
const match = String(patch || '').match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/m);
|
|
161
|
+
return match ? Math.max(1, Number(match[1]) || 1) : 0;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function actionFromSnapshots(before, after) {
|
|
165
|
+
if (!before.exists && after.exists) return 'create';
|
|
166
|
+
if (before.exists && !after.exists) return 'delete';
|
|
167
|
+
return 'edit';
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
async function writeTempSnapshot(dir, name, snapshot) {
|
|
171
|
+
const filePath = path.join(dir, name);
|
|
172
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
173
|
+
await fs.writeFile(filePath, snapshot.content);
|
|
174
|
+
return filePath;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
async function buildPatchForFile(root, relativePath, before, after) {
|
|
178
|
+
if (before.exists === after.exists && before.hash === after.hash) return '';
|
|
179
|
+
const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'codemini-oplog-'));
|
|
180
|
+
try {
|
|
181
|
+
const oldPath = normalizePath(path.posix.join('old', relativePath));
|
|
182
|
+
const newPath = normalizePath(path.posix.join('new', relativePath));
|
|
183
|
+
const beforePath = await writeTempSnapshot(tmp, oldPath, before.exists ? before : { content: Buffer.alloc(0) });
|
|
184
|
+
const afterPath = await writeTempSnapshot(tmp, newPath, after.exists ? after : { content: Buffer.alloc(0) });
|
|
185
|
+
const result = await runGit([
|
|
186
|
+
'diff',
|
|
187
|
+
'--no-index',
|
|
188
|
+
'--no-color',
|
|
189
|
+
'--binary',
|
|
190
|
+
oldPath,
|
|
191
|
+
newPath
|
|
192
|
+
], { cwd: tmp, allowFailure: true, timeoutMs: 120_000 });
|
|
193
|
+
if (result.code !== 1) return '';
|
|
194
|
+
const escaped = relativePath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
195
|
+
return result.stdout
|
|
196
|
+
.replace(new RegExp(`diff --git a/old/${escaped} b/new/${escaped}`), `diff --git a/${relativePath} b/${relativePath}`)
|
|
197
|
+
.replace(new RegExp(`--- a/old/${escaped}`), before.exists ? `--- a/${relativePath}` : '--- /dev/null')
|
|
198
|
+
.replace(new RegExp(`\\+\\+\\+ b/new/${escaped}`), after.exists ? `+++ b/${relativePath}` : '+++ /dev/null');
|
|
199
|
+
} finally {
|
|
200
|
+
await fs.rm(tmp, { recursive: true, force: true }).catch(() => {});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
async function writeJson(filePath, value) {
|
|
205
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
206
|
+
await fs.writeFile(filePath, `${JSON.stringify(value, null, 2)}\n`, 'utf8');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
async function readJson(filePath) {
|
|
210
|
+
return JSON.parse(await fs.readFile(filePath, 'utf8'));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export async function createGitOplogChangeTracker({ workspaceRoot = process.cwd(), sessionId } = {}) {
|
|
214
|
+
const startRoot = path.resolve(workspaceRoot);
|
|
215
|
+
const id = String(sessionId || '').trim();
|
|
216
|
+
if (!id) return { enabled: false, reason: 'missing-session' };
|
|
217
|
+
|
|
218
|
+
try {
|
|
219
|
+
const inside = await runGit(['rev-parse', '--is-inside-work-tree'], { cwd: startRoot, allowFailure: true });
|
|
220
|
+
if (inside.code !== 0 || inside.stdout.trim() !== 'true') {
|
|
221
|
+
return { enabled: false, reason: 'not-git-repo', workspaceRoot: startRoot };
|
|
222
|
+
}
|
|
223
|
+
const root = path.resolve((await runGit(['rev-parse', '--show-toplevel'], { cwd: startRoot })).stdout.trim());
|
|
224
|
+
const head = await runGit(['rev-parse', '--verify', 'HEAD'], { cwd: root, allowFailure: true });
|
|
225
|
+
const hasHead = head.code === 0;
|
|
226
|
+
const gitPath = (await runGit(['rev-parse', '--git-path', `codemini/sessions/${id}`], { cwd: root })).stdout.trim();
|
|
227
|
+
const oplogDir = path.resolve(root, gitPath);
|
|
228
|
+
const patchesDir = path.join(oplogDir, 'patches');
|
|
229
|
+
const opsDir = path.join(oplogDir, 'ops');
|
|
230
|
+
await fs.mkdir(patchesDir, { recursive: true });
|
|
231
|
+
await fs.mkdir(opsDir, { recursive: true });
|
|
232
|
+
if (hasHead) {
|
|
233
|
+
await runGit(['update-ref', `refs/codemini/sessions/${id}`, 'HEAD'], { cwd: root, allowFailure: true });
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
enabled: true,
|
|
237
|
+
mode: 'git-oplog',
|
|
238
|
+
workspaceRoot: root,
|
|
239
|
+
sessionId: id,
|
|
240
|
+
baseCommit: hasHead ? head.stdout.trim() : '',
|
|
241
|
+
oplogDir,
|
|
242
|
+
patchesDir,
|
|
243
|
+
opsDir
|
|
244
|
+
};
|
|
245
|
+
} catch (error) {
|
|
246
|
+
return { enabled: false, reason: error instanceof Error ? error.message : String(error), workspaceRoot: startRoot };
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export function isGitOplogChangeTrackerAvailable(tracker) {
|
|
251
|
+
return Boolean(tracker?.enabled && tracker.mode === 'git-oplog');
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export async function beginGitOplogCapture(tracker, { toolName = '', args = {} } = {}) {
|
|
255
|
+
if (!isGitOplogChangeTrackerAvailable(tracker)) return null;
|
|
256
|
+
const explicitPaths = FILE_TOOLS.has(String(toolName || '')) ? extractPathCandidates(args, [], { root: tracker.workspaceRoot }) : [];
|
|
257
|
+
const status = await runGit(['status', '--porcelain=v1', '-z'], { cwd: tracker.workspaceRoot, allowFailure: true });
|
|
258
|
+
const dirtyPaths = parseStatusPaths(status.stdout);
|
|
259
|
+
const paths = explicitPaths.length ? explicitPaths : dirtyPaths;
|
|
260
|
+
const snapshots = new Map();
|
|
261
|
+
for (const filePath of paths) {
|
|
262
|
+
snapshots.set(filePath, await readWorktreeSnapshot(tracker.workspaceRoot, filePath));
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
toolName,
|
|
266
|
+
explicit: explicitPaths.length > 0,
|
|
267
|
+
beforeDirtyPaths: dirtyPaths,
|
|
268
|
+
paths,
|
|
269
|
+
snapshots
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export async function captureGitOplogChanges(tracker, capture, { toolName = '', toolCallId = '', summary = '', args = {}, declaredFileChanges = [] } = {}) {
|
|
274
|
+
if (!isGitOplogChangeTrackerAvailable(tracker) || !capture) return null;
|
|
275
|
+
const afterStatus = await runGit(['status', '--porcelain=v1', '-z'], { cwd: tracker.workspaceRoot, allowFailure: true });
|
|
276
|
+
const afterDirtyPaths = parseStatusPaths(afterStatus.stdout);
|
|
277
|
+
const declaredPaths = extractPathCandidates(args, declaredFileChanges, { root: tracker.workspaceRoot });
|
|
278
|
+
const candidates = new Set([
|
|
279
|
+
...capture.paths,
|
|
280
|
+
...declaredPaths,
|
|
281
|
+
...(capture.explicit ? [] : capture.beforeDirtyPaths),
|
|
282
|
+
...(capture.explicit ? [] : afterDirtyPaths)
|
|
283
|
+
]);
|
|
284
|
+
|
|
285
|
+
const files = [];
|
|
286
|
+
const patches = [];
|
|
287
|
+
for (const filePath of candidates) {
|
|
288
|
+
const normalized = normalizeRelativePath(filePath, { root: tracker.workspaceRoot });
|
|
289
|
+
if (!normalized) continue;
|
|
290
|
+
let before = capture.snapshots.get(normalized);
|
|
291
|
+
if (!before) before = await readHeadSnapshot(tracker.workspaceRoot, normalized);
|
|
292
|
+
const after = await readWorktreeSnapshot(tracker.workspaceRoot, normalized);
|
|
293
|
+
const patch = await buildPatchForFile(tracker.workspaceRoot, normalized, before, after);
|
|
294
|
+
if (!patch.trim()) continue;
|
|
295
|
+
const stats = countPatchLines(patch);
|
|
296
|
+
files.push({
|
|
297
|
+
path: normalized,
|
|
298
|
+
action: actionFromSnapshots(before, after),
|
|
299
|
+
linesAdded: stats.added,
|
|
300
|
+
linesRemoved: stats.removed,
|
|
301
|
+
changedLine: firstChangedLineFromPatch(patch),
|
|
302
|
+
diffPreview: patch
|
|
303
|
+
});
|
|
304
|
+
patches.push(patch);
|
|
305
|
+
}
|
|
306
|
+
if (!files.length) return null;
|
|
307
|
+
|
|
308
|
+
const opId = changeId('op');
|
|
309
|
+
const patch = patches.join('\n');
|
|
310
|
+
const patchPath = path.join(tracker.patchesDir, `${opId}.patch`);
|
|
311
|
+
const opPath = path.join(tracker.opsDir, `${opId}.json`);
|
|
312
|
+
await fs.writeFile(patchPath, patch, 'utf8');
|
|
313
|
+
const op = {
|
|
314
|
+
version: CHANGE_OPLOG_VERSION,
|
|
315
|
+
id: opId,
|
|
316
|
+
sessionId: tracker.sessionId,
|
|
317
|
+
createdAt: new Date().toISOString(),
|
|
318
|
+
toolName,
|
|
319
|
+
toolCallId,
|
|
320
|
+
summary,
|
|
321
|
+
patchPath,
|
|
322
|
+
files: files.map(({ diffPreview, ...file }) => file),
|
|
323
|
+
revertedAt: null
|
|
324
|
+
};
|
|
325
|
+
await writeJson(opPath, op);
|
|
326
|
+
await fs.appendFile(path.join(tracker.oplogDir, 'ops.jsonl'), `${JSON.stringify({ ...op, patchPath: undefined })}\n`, 'utf8');
|
|
327
|
+
return files.map((file) => ({
|
|
328
|
+
...file,
|
|
329
|
+
changeSetId: opId,
|
|
330
|
+
files: [{ path: file.path, action: file.action, linesAdded: file.linesAdded, linesRemoved: file.linesRemoved }]
|
|
331
|
+
}));
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
export async function listGitOplogChanges(tracker) {
|
|
335
|
+
if (!isGitOplogChangeTrackerAvailable(tracker)) return [];
|
|
336
|
+
let entries = [];
|
|
337
|
+
try {
|
|
338
|
+
entries = await fs.readdir(tracker.opsDir, { withFileTypes: true });
|
|
339
|
+
} catch {
|
|
340
|
+
return [];
|
|
341
|
+
}
|
|
342
|
+
const out = [];
|
|
343
|
+
for (const entry of entries) {
|
|
344
|
+
if (!entry.isFile() || !entry.name.endsWith('.json')) continue;
|
|
345
|
+
try { out.push(await readJson(path.join(tracker.opsDir, entry.name))); } catch {}
|
|
346
|
+
}
|
|
347
|
+
out.sort((a, b) => String(b.createdAt || '').localeCompare(String(a.createdAt || '')));
|
|
348
|
+
return out;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export async function readGitOplogChange(tracker, opId) {
|
|
352
|
+
if (!isGitOplogChangeTrackerAvailable(tracker)) throw new Error('Git change oplog is not available for this session');
|
|
353
|
+
const id = String(opId || '').trim();
|
|
354
|
+
if (!id) throw new Error('Missing change id');
|
|
355
|
+
return readJson(path.join(tracker.opsDir, `${id}.json`));
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
export async function readGitOplogPatch(tracker, opId) {
|
|
359
|
+
const op = await readGitOplogChange(tracker, opId);
|
|
360
|
+
return fs.readFile(op.patchPath, 'utf8');
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export async function undoGitOplogChange(tracker, opId) {
|
|
364
|
+
if (!isGitOplogChangeTrackerAvailable(tracker)) throw new Error('Git change oplog is not available for this session');
|
|
365
|
+
const op = await readGitOplogChange(tracker, opId);
|
|
366
|
+
if (op.revertedAt) {
|
|
367
|
+
return { ok: false, alreadyReverted: true, changeSetId: op.id, message: 'Change already reverted' };
|
|
368
|
+
}
|
|
369
|
+
const patch = await fs.readFile(op.patchPath, 'utf8');
|
|
370
|
+
try {
|
|
371
|
+
await runGit(['apply', '-R', '--check', '--whitespace=nowarn'], {
|
|
372
|
+
cwd: tracker.workspaceRoot,
|
|
373
|
+
input: patch,
|
|
374
|
+
timeoutMs: 120_000
|
|
375
|
+
});
|
|
376
|
+
} catch (error) {
|
|
377
|
+
throw new Error(`Cannot undo this change cleanly because newer edits conflict with it. Undo newer changes first, or revert it manually. ${error?.message || ''}`.trim());
|
|
378
|
+
}
|
|
379
|
+
await runGit(['apply', '-R', '--whitespace=nowarn'], {
|
|
380
|
+
cwd: tracker.workspaceRoot,
|
|
381
|
+
input: patch,
|
|
382
|
+
timeoutMs: 120_000
|
|
383
|
+
});
|
|
384
|
+
op.revertedAt = new Date().toISOString();
|
|
385
|
+
await writeJson(path.join(tracker.opsDir, `${op.id}.json`), op);
|
|
386
|
+
return { ok: true, changeSetId: op.id };
|
|
387
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { normalizePath } from './string-utils.js';
|
|
4
|
+
|
|
5
|
+
function normalizeRelativePath(value) {
|
|
6
|
+
const text = normalizePath(String(value || '').trim()).replace(/:\d+(?:-\d+)?$/, '');
|
|
7
|
+
if (!text || text === '.' || path.isAbsolute(text) || text.startsWith('../')) return '';
|
|
8
|
+
return text;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function safeBackupRelativePath(relativePath) {
|
|
12
|
+
return normalizeRelativePath(relativePath)
|
|
13
|
+
.split('/')
|
|
14
|
+
.map((part) => part.replace(/[<>:"\\|?*\x00-\x1F]/g, '_'))
|
|
15
|
+
.join('/');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function readJson(filePath, fallback) {
|
|
19
|
+
try {
|
|
20
|
+
return JSON.parse(await fs.readFile(filePath, 'utf8'));
|
|
21
|
+
} catch {
|
|
22
|
+
return fallback;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async function writeJson(filePath, value) {
|
|
27
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
28
|
+
await fs.writeFile(filePath, `${JSON.stringify(value, null, 2)}\n`, 'utf8');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export async function createNonGitBackupManager({ workspaceRoot = process.cwd(), sessionId } = {}) {
|
|
32
|
+
const root = path.resolve(workspaceRoot);
|
|
33
|
+
const id = String(sessionId || '').trim();
|
|
34
|
+
if (!id) return null;
|
|
35
|
+
const backupRoot = path.join(root, '.codemini', 'backups', 'sessions', id);
|
|
36
|
+
const filesRoot = path.join(backupRoot, 'files');
|
|
37
|
+
const manifestPath = path.join(backupRoot, 'manifest.json');
|
|
38
|
+
await fs.mkdir(filesRoot, { recursive: true });
|
|
39
|
+
const manifest = await readJson(manifestPath, {
|
|
40
|
+
version: 1,
|
|
41
|
+
sessionId: id,
|
|
42
|
+
createdAt: new Date().toISOString(),
|
|
43
|
+
files: {}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
async function backupOnce(relativePath) {
|
|
47
|
+
const normalized = normalizeRelativePath(relativePath);
|
|
48
|
+
if (!normalized) return { ok: false, reason: 'invalid-path' };
|
|
49
|
+
const existing = manifest.files?.[normalized];
|
|
50
|
+
if (existing) {
|
|
51
|
+
return { ...existing, ok: true, reused: true, created: false };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const target = path.resolve(root, normalized);
|
|
55
|
+
const rel = path.relative(root, target);
|
|
56
|
+
if (rel.startsWith('..') || path.isAbsolute(rel)) {
|
|
57
|
+
return { ok: false, path: normalized, reason: 'outside-workspace' };
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
let stat;
|
|
61
|
+
try {
|
|
62
|
+
stat = await fs.stat(target);
|
|
63
|
+
} catch (error) {
|
|
64
|
+
if (error?.code !== 'ENOENT') throw error;
|
|
65
|
+
const entry = {
|
|
66
|
+
path: normalized,
|
|
67
|
+
existed: false,
|
|
68
|
+
backupPath: '',
|
|
69
|
+
backupRelativePath: '',
|
|
70
|
+
createdAt: new Date().toISOString()
|
|
71
|
+
};
|
|
72
|
+
manifest.files[normalized] = entry;
|
|
73
|
+
await writeJson(manifestPath, manifest);
|
|
74
|
+
return { ...entry, ok: true, reused: false, created: false };
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (!stat.isFile()) {
|
|
78
|
+
const entry = {
|
|
79
|
+
path: normalized,
|
|
80
|
+
existed: true,
|
|
81
|
+
backupPath: '',
|
|
82
|
+
backupRelativePath: '',
|
|
83
|
+
skipped: true,
|
|
84
|
+
reason: stat.isDirectory() ? 'directory' : 'not-file',
|
|
85
|
+
createdAt: new Date().toISOString()
|
|
86
|
+
};
|
|
87
|
+
manifest.files[normalized] = entry;
|
|
88
|
+
await writeJson(manifestPath, manifest);
|
|
89
|
+
return { ...entry, ok: true, reused: false, created: false };
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const safeRelative = safeBackupRelativePath(normalized);
|
|
93
|
+
const backupPath = path.join(filesRoot, safeRelative);
|
|
94
|
+
await fs.mkdir(path.dirname(backupPath), { recursive: true });
|
|
95
|
+
await fs.copyFile(target, backupPath);
|
|
96
|
+
const entry = {
|
|
97
|
+
path: normalized,
|
|
98
|
+
existed: true,
|
|
99
|
+
backupPath,
|
|
100
|
+
backupRelativePath: normalizePath(path.relative(root, backupPath)),
|
|
101
|
+
createdAt: new Date().toISOString()
|
|
102
|
+
};
|
|
103
|
+
manifest.files[normalized] = entry;
|
|
104
|
+
await writeJson(manifestPath, manifest);
|
|
105
|
+
return { ...entry, ok: true, reused: false, created: true };
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
mode: 'non-git-backup',
|
|
110
|
+
workspaceRoot: root,
|
|
111
|
+
sessionId: id,
|
|
112
|
+
backupRoot,
|
|
113
|
+
manifestPath,
|
|
114
|
+
backupOnce
|
|
115
|
+
};
|
|
116
|
+
}
|