codemini-cli 0.6.2 → 0.6.3
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-jgqGjQgl.js} +2 -2
- package/codemini-web/dist/assets/CodeWikiPanel-EPuoerNv.js +1 -0
- package/codemini-web/dist/assets/ConfigDialog-B5IGZCc9.js +1 -0
- package/codemini-web/dist/assets/{GitDiffDialog-CVpmPcGi.js → GitDiffDialog-Bb_Tw5ZK.js} +5 -5
- package/codemini-web/dist/assets/MemoryDialog-BhxQgG0I.js +3 -0
- package/codemini-web/dist/assets/{MessageBubble-BkkfePXe.js → MessageBubble-wUff4GP4.js} +5 -5
- package/codemini-web/dist/assets/ProjectSelector-C0leTf6f.js +1 -0
- package/codemini-web/dist/assets/SkillDialog-DxS43NpR.js +8 -0
- package/codemini-web/dist/assets/SoulDialog-XDTEGWvH.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-Dbzw7YzA.js +1 -0
- package/codemini-web/dist/assets/{chunk-BO2N2NFS-C-dwTHqR.js → chunk-BO2N2NFS-Budy_hfO.js} +4 -4
- 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-CQS1PAvD.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-D0EGtNPr.js +65 -0
- package/codemini-web/dist/assets/index-wOUf3WkN.css +2 -0
- package/codemini-web/dist/assets/{input-CNJXW0J8.js → input-CNQgbKe6.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-DQpX2ek0.js → lib-BOngVP_M.js} +1 -1
- 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-DrBu5KyC.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-Ce_LFiEh.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-BKL-AZu5.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-BZXfigic.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-KmAlCwXd.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/server.js +450 -311
- package/package.json +1 -1
- package/src/core/command-policy.js +73 -23
- package/src/core/tools.js +70 -35
- 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/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/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/{lib-Dj6FJSN8.js → lib-DrOTTm_N.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
package/codemini-web/server.js
CHANGED
|
@@ -8,27 +8,34 @@ import { loadConfig, saveConfig, setConfigValue, getConfigValue } from '../src/c
|
|
|
8
8
|
import { createChatRuntime } from '../src/core/chat-runtime.js';
|
|
9
9
|
import { createSession, loadSession, listSessions, resolveSession, deleteSession } from '../src/core/session-store.js';
|
|
10
10
|
import { buildDefaultSystemPrompt } from '../src/core/default-system-prompt.js';
|
|
11
|
-
import { RuntimeBridge } from './lib/runtime-bridge.js';
|
|
12
|
-
import { installSkillSource, listSkillEntries } from '../src/commands/skill.js';
|
|
13
|
-
import { computeFileSha256, readSkillRegistry, upsertSkillRegistryEntry, writeSkillRegistry } from '../src/core/skill-registry.js';
|
|
11
|
+
import { RuntimeBridge } from './lib/runtime-bridge.js';
|
|
12
|
+
import { installSkillSource, listSkillEntries } from '../src/commands/skill.js';
|
|
13
|
+
import { computeFileSha256, readSkillRegistry, upsertSkillRegistryEntry, writeSkillRegistry } from '../src/core/skill-registry.js';
|
|
14
|
+
import { forgetMemory, listMemories, searchMemories } from '../src/core/memory-store.js';
|
|
14
15
|
import { getReplyLanguage } from '../src/core/reply-language.js';
|
|
15
|
-
import { getBaseConfigDir, getFileIndexPath, getProjectSkillsDir, getSkillsDir } from '../src/core/paths.js';
|
|
16
|
-
import { initializeProjectIndex } from '../src/core/project-index.js';
|
|
17
|
-
import { INDEX_SKIP_DIRS } from '../src/core/constants.js';
|
|
18
|
-
import { VERSION } from '../src/core/version.js';
|
|
16
|
+
import { getBaseConfigDir, getFileIndexPath, getProjectSkillsDir, getSkillsDir } from '../src/core/paths.js';
|
|
17
|
+
import { initializeProjectIndex } from '../src/core/project-index.js';
|
|
18
|
+
import { INDEX_SKIP_DIRS } from '../src/core/constants.js';
|
|
19
|
+
import { VERSION } from '../src/core/version.js';
|
|
19
20
|
|
|
20
21
|
const GENERAL_PROJECT_DIR = (() => {
|
|
21
22
|
const base = getBaseConfigDir();
|
|
22
23
|
return path.join(base, 'workspace');
|
|
23
24
|
})();
|
|
24
25
|
|
|
25
|
-
const SKILL_CATALOG_FILE = 'codemini.skills.json';
|
|
26
|
-
const SKILL_MODES = new Set(['always', 'auto_attach', 'agent_requested', 'manual']);
|
|
27
|
-
const SKILL_SCOPES = new Set(['project', 'global']);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
const SKILL_CATALOG_FILE = 'codemini.skills.json';
|
|
27
|
+
const SKILL_MODES = new Set(['always', 'auto_attach', 'agent_requested', 'manual']);
|
|
28
|
+
const SKILL_SCOPES = new Set(['project', 'global']);
|
|
29
|
+
const MEMORY_SCOPES = new Set(['user', 'global', 'project']);
|
|
30
|
+
|
|
31
|
+
function normalizeSkillScope(scope) {
|
|
32
|
+
return SKILL_SCOPES.has(scope) ? scope : 'project';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function normalizeMemoryScope(scope) {
|
|
36
|
+
const value = String(scope || '').trim().toLowerCase();
|
|
37
|
+
return MEMORY_SCOPES.has(value) ? value : 'user';
|
|
38
|
+
}
|
|
32
39
|
|
|
33
40
|
function isSafeSkillName(name = '') {
|
|
34
41
|
return /^[A-Za-z0-9][A-Za-z0-9_.-]*$/.test(name);
|
|
@@ -275,19 +282,111 @@ function normalizeProjectPath(value) {
|
|
|
275
282
|
return path.resolve(raw);
|
|
276
283
|
}
|
|
277
284
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
285
|
+
function projectNameForDir(projectDir) {
|
|
286
|
+
if (isGeneralProjectDir(projectDir)) return '__codemini_general__';
|
|
287
|
+
return path.basename(path.resolve(projectDir || '')) || projectDir || '';
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
async function validProjectDir(value) {
|
|
291
|
+
const normalized = normalizeProjectPath(value);
|
|
292
|
+
if (!normalized) return '';
|
|
281
293
|
try {
|
|
282
|
-
const stat = await fs.stat(
|
|
283
|
-
|
|
284
|
-
} catch {
|
|
285
|
-
|
|
294
|
+
const stat = await fs.stat(normalized);
|
|
295
|
+
return stat.isDirectory() ? normalized : '';
|
|
296
|
+
} catch {
|
|
297
|
+
return '';
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
async function resolveRequestProjectDir(value, fallbackDir) {
|
|
302
|
+
const resolved = await validProjectDir(value);
|
|
303
|
+
return resolved || fallbackDir;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
async function parseProjectDirsParam(url, fallbackDir) {
|
|
307
|
+
const raw = url.searchParams.get('projects');
|
|
308
|
+
const parsed = raw ? tryParseJson(raw) : [];
|
|
309
|
+
const values = Array.isArray(parsed) ? parsed : [];
|
|
310
|
+
const seen = new Set();
|
|
311
|
+
const dirs = [];
|
|
312
|
+
for (const candidate of [fallbackDir, ...values]) {
|
|
313
|
+
const resolved = await validProjectDir(candidate);
|
|
314
|
+
if (!resolved || seen.has(resolved)) continue;
|
|
315
|
+
seen.add(resolved);
|
|
316
|
+
dirs.push(resolved);
|
|
317
|
+
}
|
|
318
|
+
if (dirs.length === 0 && fallbackDir) {
|
|
319
|
+
dirs.push(fallbackDir);
|
|
320
|
+
}
|
|
321
|
+
return dirs;
|
|
286
322
|
}
|
|
287
323
|
|
|
288
|
-
function
|
|
289
|
-
|
|
324
|
+
async function listSkillsForProjectDirs(projectDirs, fallbackDir) {
|
|
325
|
+
const dirs = projectDirs.length > 0 ? projectDirs : [fallbackDir];
|
|
326
|
+
const seen = new Set();
|
|
327
|
+
const results = [];
|
|
328
|
+
for (let index = 0; index < dirs.length; index += 1) {
|
|
329
|
+
const projectDir = dirs[index];
|
|
330
|
+
const entries = await listSkillEntries({ scope: 'all', cwd: projectDir });
|
|
331
|
+
for (const entry of entries) {
|
|
332
|
+
if (entry.scope !== 'project') {
|
|
333
|
+
const globalKey = `${entry.scope}:${entry.name}:${entry.path || ''}`;
|
|
334
|
+
if (seen.has(globalKey)) continue;
|
|
335
|
+
seen.add(globalKey);
|
|
336
|
+
results.push(entry);
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
const projectKey = `project:${projectDir}:${entry.name}:${entry.path || ''}`;
|
|
340
|
+
if (seen.has(projectKey)) continue;
|
|
341
|
+
seen.add(projectKey);
|
|
342
|
+
results.push({
|
|
343
|
+
...entry,
|
|
344
|
+
projectDir,
|
|
345
|
+
projectName: projectNameForDir(projectDir)
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return results.sort((a, b) => {
|
|
350
|
+
const left = `${a.scope}:${a.projectName || ''}:${a.name}`;
|
|
351
|
+
const right = `${b.scope}:${b.projectName || ''}:${b.name}`;
|
|
352
|
+
return left.localeCompare(right);
|
|
353
|
+
});
|
|
290
354
|
}
|
|
355
|
+
|
|
356
|
+
async function listMemoriesForProjectDirs({ scope, query, projectDirs, fallbackDir }) {
|
|
357
|
+
if (scope !== 'project') {
|
|
358
|
+
const items = query
|
|
359
|
+
? await searchMemories({ scope, query, workspaceRoot: fallbackDir })
|
|
360
|
+
: await listMemories({ scope, workspaceRoot: fallbackDir });
|
|
361
|
+
return items;
|
|
362
|
+
}
|
|
363
|
+
const dirs = projectDirs.length > 0 ? projectDirs : [fallbackDir];
|
|
364
|
+
const chunks = await Promise.all(dirs.map(async (projectDir) => {
|
|
365
|
+
const items = query
|
|
366
|
+
? await searchMemories({ scope, query, workspaceRoot: projectDir })
|
|
367
|
+
: await listMemories({ scope, workspaceRoot: projectDir });
|
|
368
|
+
return (items || []).map((item) => ({
|
|
369
|
+
...item,
|
|
370
|
+
projectDir,
|
|
371
|
+
projectName: projectNameForDir(projectDir)
|
|
372
|
+
}));
|
|
373
|
+
}));
|
|
374
|
+
return chunks.flat();
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
async function resolveCodeWikiProjectDir(url, fallbackDir) {
|
|
378
|
+
const requested = normalizeProjectPath(url.searchParams.get('project') || '');
|
|
379
|
+
if (!requested) return fallbackDir;
|
|
380
|
+
try {
|
|
381
|
+
const stat = await fs.stat(requested);
|
|
382
|
+
if (stat.isDirectory()) return requested;
|
|
383
|
+
} catch {}
|
|
384
|
+
return fallbackDir;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function tryParseJson(value) {
|
|
388
|
+
try { return JSON.parse(String(value || '')); } catch { return null; }
|
|
389
|
+
}
|
|
291
390
|
|
|
292
391
|
function collectSessionPathHints(session) {
|
|
293
392
|
const hints = [];
|
|
@@ -337,164 +436,164 @@ function isCodeWikiReportFile(fileName) {
|
|
|
337
436
|
return CODEWIKI_REPORT_RE.test(String(fileName || ''));
|
|
338
437
|
}
|
|
339
438
|
|
|
340
|
-
function codeWikiReportTitle(fileName) {
|
|
341
|
-
return String(fileName || '')
|
|
342
|
-
.replace(/-project-requirements\.html$/, '')
|
|
343
|
-
.replace(/-/g, ' ');
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
function clipGraphList(values, max = 12) {
|
|
347
|
-
return [...new Set((Array.isArray(values) ? values : []).filter(Boolean))].slice(0, max);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
const CODEWIKI_GRAPH_NOISY_NAMES = new Set([
|
|
351
|
-
'__init__',
|
|
352
|
-
'__enter__',
|
|
353
|
-
'__exit__',
|
|
354
|
-
'__getitem__',
|
|
355
|
-
'__setitem__',
|
|
356
|
-
'__delitem__',
|
|
357
|
-
'__contains__',
|
|
358
|
-
'__len__',
|
|
359
|
-
'__iter__',
|
|
360
|
-
'__next__',
|
|
361
|
-
'__call__',
|
|
362
|
-
'get',
|
|
363
|
-
'set',
|
|
364
|
-
'add',
|
|
365
|
-
'run',
|
|
366
|
-
'close',
|
|
367
|
-
'open',
|
|
368
|
-
'read',
|
|
369
|
-
'write',
|
|
370
|
-
'send',
|
|
371
|
-
'recv',
|
|
372
|
-
'poll',
|
|
373
|
-
'update',
|
|
374
|
-
'copy',
|
|
375
|
-
'size',
|
|
376
|
-
'apply'
|
|
377
|
-
]);
|
|
378
|
-
|
|
379
|
-
function normalizeGraphPath(value = '') {
|
|
380
|
-
return String(value || '').replace(/\\/g, '/').replace(/^\.\/+/, '');
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
function isDependencyLikeGraphPath(file = '') {
|
|
384
|
-
const normalized = normalizeGraphPath(file);
|
|
385
|
-
const segments = normalized.split('/').filter(Boolean);
|
|
386
|
-
return segments.some(
|
|
387
|
-
(segment) =>
|
|
388
|
-
INDEX_SKIP_DIRS.has(segment) ||
|
|
389
|
-
/^venv[-_]/i.test(segment) ||
|
|
390
|
-
/\.egg-info$/i.test(segment) ||
|
|
391
|
-
/^python\d+(?:\.\d+)?$/i.test(segment)
|
|
392
|
-
);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
function isNoisyGraphSymbol(symbol = {}) {
|
|
396
|
-
const name = String(symbol.name || symbol.symbol_id || '').split('.').pop();
|
|
397
|
-
if (!name) return true;
|
|
398
|
-
if (CODEWIKI_GRAPH_NOISY_NAMES.has(name)) return true;
|
|
399
|
-
return /^__.*__$/.test(name);
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
function sourceRootScore(file = '') {
|
|
403
|
-
const normalized = normalizeGraphPath(file);
|
|
404
|
-
if (normalized.startsWith('src/')) return 8;
|
|
405
|
-
if (normalized.startsWith('codemini-web/client/src/')) return 8;
|
|
406
|
-
if (normalized.startsWith('codemini-web/server.js')) return 7;
|
|
407
|
-
if (normalized.startsWith('codemini-web/')) return 5;
|
|
408
|
-
if (normalized.startsWith('tests/')) return 1;
|
|
409
|
-
return 3;
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
function buildCodeWikiSymbolGraph(fileIndex, { maxNodes = 42 } = {}) {
|
|
413
|
-
const files = Array.isArray(fileIndex?.files) ? fileIndex.files : [];
|
|
414
|
-
const sourceFiles = files.filter((entry) => !isDependencyLikeGraphPath(entry.file));
|
|
415
|
-
const symbols = sourceFiles
|
|
416
|
-
.flatMap((entry) =>
|
|
417
|
-
(Array.isArray(entry.symbols) ? entry.symbols : []).map((symbol) => ({
|
|
418
|
-
...symbol,
|
|
419
|
-
file: symbol.file || entry.file
|
|
420
|
-
}))
|
|
421
|
-
)
|
|
422
|
-
.filter((symbol) => !isDependencyLikeGraphPath(symbol.file) && !isNoisyGraphSymbol(symbol));
|
|
423
|
-
const ranked = symbols
|
|
424
|
-
.map((symbol) => {
|
|
425
|
-
const calls = Array.isArray(symbol.calls) ? symbol.calls.length : 0;
|
|
426
|
-
const calledBy = Array.isArray(symbol.called_by) ? symbol.called_by.length : 0;
|
|
427
|
-
const writes = Array.isArray(symbol.writes) ? symbol.writes.length : 0;
|
|
428
|
-
const emits = Array.isArray(symbol.emits) ? symbol.emits.length : 0;
|
|
429
|
-
const typeBoost = symbol.type === 'class' ? 8 : symbol.type === 'method' ? 4 : 2;
|
|
430
|
-
return {
|
|
431
|
-
symbol,
|
|
432
|
-
score: sourceRootScore(symbol.file) + typeBoost + calledBy * 4 + calls * 2 + writes * 2 + emits * 2
|
|
433
|
-
};
|
|
434
|
-
})
|
|
435
|
-
.sort((a, b) => b.score - a.score || String(a.symbol.symbol_id).localeCompare(String(b.symbol.symbol_id)))
|
|
436
|
-
.slice(0, maxNodes)
|
|
437
|
-
.map((item) => item.symbol);
|
|
438
|
-
|
|
439
|
-
const byId = new Map(ranked.map((symbol) => [String(symbol.symbol_id || ''), symbol]));
|
|
440
|
-
const byShortName = new Map();
|
|
441
|
-
for (const symbol of ranked) {
|
|
442
|
-
const shortName = String(symbol.name || '').split('.').pop();
|
|
443
|
-
if (!shortName) continue;
|
|
444
|
-
if (!byShortName.has(shortName)) byShortName.set(shortName, []);
|
|
445
|
-
byShortName.get(shortName).push(symbol);
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
const nodes = ranked.map((symbol) => ({
|
|
449
|
-
id: symbol.symbol_id,
|
|
450
|
-
label: symbol.name || symbol.symbol_id,
|
|
451
|
-
type: symbol.type || 'symbol',
|
|
452
|
-
file: symbol.file || '',
|
|
453
|
-
range: symbol.range || null,
|
|
454
|
-
signature: symbol.signature || '',
|
|
455
|
-
calls: clipGraphList(symbol.calls || [], 8),
|
|
456
|
-
called_by: clipGraphList(symbol.called_by || [], 8),
|
|
457
|
-
imports: clipGraphList(symbol.imports || [], 6),
|
|
458
|
-
writes: clipGraphList(symbol.writes || [], 6),
|
|
459
|
-
emits: clipGraphList(symbol.emits || [], 6)
|
|
460
|
-
}));
|
|
461
|
-
|
|
462
|
-
const edgeMap = new Map();
|
|
463
|
-
const addEdge = (source, target, kind, label = '') => {
|
|
464
|
-
if (!source || !target || source === target) return;
|
|
465
|
-
if (!byId.has(source) || !byId.has(target)) return;
|
|
466
|
-
const key = `${source}->${target}:${kind}`;
|
|
467
|
-
if (!edgeMap.has(key)) edgeMap.set(key, { source, target, kind, label });
|
|
468
|
-
};
|
|
469
|
-
|
|
470
|
-
for (const symbol of ranked) {
|
|
471
|
-
const source = String(symbol.symbol_id || '');
|
|
472
|
-
for (const call of symbol.calls || []) {
|
|
473
|
-
const shortName = String(call || '').split('.').pop();
|
|
474
|
-
for (const target of byShortName.get(shortName) || []) {
|
|
475
|
-
addEdge(source, target.symbol_id, 'calls', call);
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
for (const caller of symbol.called_by || []) {
|
|
479
|
-
addEdge(caller, source, 'called_by');
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
const edges = [...edgeMap.values()].slice(0, 80);
|
|
484
|
-
|
|
485
|
-
return {
|
|
486
|
-
updatedAt: fileIndex?.updatedAt || '',
|
|
487
|
-
stats: {
|
|
488
|
-
files: files.length,
|
|
489
|
-
source_files: sourceFiles.length,
|
|
490
|
-
symbols: symbols.length,
|
|
491
|
-
displayed_nodes: nodes.length,
|
|
492
|
-
displayed_edges: edges.length
|
|
493
|
-
},
|
|
494
|
-
nodes,
|
|
495
|
-
edges
|
|
496
|
-
};
|
|
497
|
-
}
|
|
439
|
+
function codeWikiReportTitle(fileName) {
|
|
440
|
+
return String(fileName || '')
|
|
441
|
+
.replace(/-project-requirements\.html$/, '')
|
|
442
|
+
.replace(/-/g, ' ');
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
function clipGraphList(values, max = 12) {
|
|
446
|
+
return [...new Set((Array.isArray(values) ? values : []).filter(Boolean))].slice(0, max);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
const CODEWIKI_GRAPH_NOISY_NAMES = new Set([
|
|
450
|
+
'__init__',
|
|
451
|
+
'__enter__',
|
|
452
|
+
'__exit__',
|
|
453
|
+
'__getitem__',
|
|
454
|
+
'__setitem__',
|
|
455
|
+
'__delitem__',
|
|
456
|
+
'__contains__',
|
|
457
|
+
'__len__',
|
|
458
|
+
'__iter__',
|
|
459
|
+
'__next__',
|
|
460
|
+
'__call__',
|
|
461
|
+
'get',
|
|
462
|
+
'set',
|
|
463
|
+
'add',
|
|
464
|
+
'run',
|
|
465
|
+
'close',
|
|
466
|
+
'open',
|
|
467
|
+
'read',
|
|
468
|
+
'write',
|
|
469
|
+
'send',
|
|
470
|
+
'recv',
|
|
471
|
+
'poll',
|
|
472
|
+
'update',
|
|
473
|
+
'copy',
|
|
474
|
+
'size',
|
|
475
|
+
'apply'
|
|
476
|
+
]);
|
|
477
|
+
|
|
478
|
+
function normalizeGraphPath(value = '') {
|
|
479
|
+
return String(value || '').replace(/\\/g, '/').replace(/^\.\/+/, '');
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
function isDependencyLikeGraphPath(file = '') {
|
|
483
|
+
const normalized = normalizeGraphPath(file);
|
|
484
|
+
const segments = normalized.split('/').filter(Boolean);
|
|
485
|
+
return segments.some(
|
|
486
|
+
(segment) =>
|
|
487
|
+
INDEX_SKIP_DIRS.has(segment) ||
|
|
488
|
+
/^venv[-_]/i.test(segment) ||
|
|
489
|
+
/\.egg-info$/i.test(segment) ||
|
|
490
|
+
/^python\d+(?:\.\d+)?$/i.test(segment)
|
|
491
|
+
);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
function isNoisyGraphSymbol(symbol = {}) {
|
|
495
|
+
const name = String(symbol.name || symbol.symbol_id || '').split('.').pop();
|
|
496
|
+
if (!name) return true;
|
|
497
|
+
if (CODEWIKI_GRAPH_NOISY_NAMES.has(name)) return true;
|
|
498
|
+
return /^__.*__$/.test(name);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
function sourceRootScore(file = '') {
|
|
502
|
+
const normalized = normalizeGraphPath(file);
|
|
503
|
+
if (normalized.startsWith('src/')) return 8;
|
|
504
|
+
if (normalized.startsWith('codemini-web/client/src/')) return 8;
|
|
505
|
+
if (normalized.startsWith('codemini-web/server.js')) return 7;
|
|
506
|
+
if (normalized.startsWith('codemini-web/')) return 5;
|
|
507
|
+
if (normalized.startsWith('tests/')) return 1;
|
|
508
|
+
return 3;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
function buildCodeWikiSymbolGraph(fileIndex, { maxNodes = 42 } = {}) {
|
|
512
|
+
const files = Array.isArray(fileIndex?.files) ? fileIndex.files : [];
|
|
513
|
+
const sourceFiles = files.filter((entry) => !isDependencyLikeGraphPath(entry.file));
|
|
514
|
+
const symbols = sourceFiles
|
|
515
|
+
.flatMap((entry) =>
|
|
516
|
+
(Array.isArray(entry.symbols) ? entry.symbols : []).map((symbol) => ({
|
|
517
|
+
...symbol,
|
|
518
|
+
file: symbol.file || entry.file
|
|
519
|
+
}))
|
|
520
|
+
)
|
|
521
|
+
.filter((symbol) => !isDependencyLikeGraphPath(symbol.file) && !isNoisyGraphSymbol(symbol));
|
|
522
|
+
const ranked = symbols
|
|
523
|
+
.map((symbol) => {
|
|
524
|
+
const calls = Array.isArray(symbol.calls) ? symbol.calls.length : 0;
|
|
525
|
+
const calledBy = Array.isArray(symbol.called_by) ? symbol.called_by.length : 0;
|
|
526
|
+
const writes = Array.isArray(symbol.writes) ? symbol.writes.length : 0;
|
|
527
|
+
const emits = Array.isArray(symbol.emits) ? symbol.emits.length : 0;
|
|
528
|
+
const typeBoost = symbol.type === 'class' ? 8 : symbol.type === 'method' ? 4 : 2;
|
|
529
|
+
return {
|
|
530
|
+
symbol,
|
|
531
|
+
score: sourceRootScore(symbol.file) + typeBoost + calledBy * 4 + calls * 2 + writes * 2 + emits * 2
|
|
532
|
+
};
|
|
533
|
+
})
|
|
534
|
+
.sort((a, b) => b.score - a.score || String(a.symbol.symbol_id).localeCompare(String(b.symbol.symbol_id)))
|
|
535
|
+
.slice(0, maxNodes)
|
|
536
|
+
.map((item) => item.symbol);
|
|
537
|
+
|
|
538
|
+
const byId = new Map(ranked.map((symbol) => [String(symbol.symbol_id || ''), symbol]));
|
|
539
|
+
const byShortName = new Map();
|
|
540
|
+
for (const symbol of ranked) {
|
|
541
|
+
const shortName = String(symbol.name || '').split('.').pop();
|
|
542
|
+
if (!shortName) continue;
|
|
543
|
+
if (!byShortName.has(shortName)) byShortName.set(shortName, []);
|
|
544
|
+
byShortName.get(shortName).push(symbol);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
const nodes = ranked.map((symbol) => ({
|
|
548
|
+
id: symbol.symbol_id,
|
|
549
|
+
label: symbol.name || symbol.symbol_id,
|
|
550
|
+
type: symbol.type || 'symbol',
|
|
551
|
+
file: symbol.file || '',
|
|
552
|
+
range: symbol.range || null,
|
|
553
|
+
signature: symbol.signature || '',
|
|
554
|
+
calls: clipGraphList(symbol.calls || [], 8),
|
|
555
|
+
called_by: clipGraphList(symbol.called_by || [], 8),
|
|
556
|
+
imports: clipGraphList(symbol.imports || [], 6),
|
|
557
|
+
writes: clipGraphList(symbol.writes || [], 6),
|
|
558
|
+
emits: clipGraphList(symbol.emits || [], 6)
|
|
559
|
+
}));
|
|
560
|
+
|
|
561
|
+
const edgeMap = new Map();
|
|
562
|
+
const addEdge = (source, target, kind, label = '') => {
|
|
563
|
+
if (!source || !target || source === target) return;
|
|
564
|
+
if (!byId.has(source) || !byId.has(target)) return;
|
|
565
|
+
const key = `${source}->${target}:${kind}`;
|
|
566
|
+
if (!edgeMap.has(key)) edgeMap.set(key, { source, target, kind, label });
|
|
567
|
+
};
|
|
568
|
+
|
|
569
|
+
for (const symbol of ranked) {
|
|
570
|
+
const source = String(symbol.symbol_id || '');
|
|
571
|
+
for (const call of symbol.calls || []) {
|
|
572
|
+
const shortName = String(call || '').split('.').pop();
|
|
573
|
+
for (const target of byShortName.get(shortName) || []) {
|
|
574
|
+
addEdge(source, target.symbol_id, 'calls', call);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
for (const caller of symbol.called_by || []) {
|
|
578
|
+
addEdge(caller, source, 'called_by');
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
const edges = [...edgeMap.values()].slice(0, 80);
|
|
583
|
+
|
|
584
|
+
return {
|
|
585
|
+
updatedAt: fileIndex?.updatedAt || '',
|
|
586
|
+
stats: {
|
|
587
|
+
files: files.length,
|
|
588
|
+
source_files: sourceFiles.length,
|
|
589
|
+
symbols: symbols.length,
|
|
590
|
+
displayed_nodes: nodes.length,
|
|
591
|
+
displayed_edges: edges.length
|
|
592
|
+
},
|
|
593
|
+
nodes,
|
|
594
|
+
edges
|
|
595
|
+
};
|
|
596
|
+
}
|
|
498
597
|
|
|
499
598
|
function commonPathPrefix(paths) {
|
|
500
599
|
const normalized = paths.map((p) => path.resolve(p).split(path.sep).filter(Boolean));
|
|
@@ -708,10 +807,10 @@ async function main() {
|
|
|
708
807
|
return;
|
|
709
808
|
}
|
|
710
809
|
|
|
711
|
-
// ── CodeWiki / project requirements reports ──
|
|
712
|
-
if (req.method === 'GET' && url.pathname === '/api/codewiki/reports') {
|
|
713
|
-
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
714
|
-
const requirementsDir = getRequirementsDir(codeWikiProjectDir);
|
|
810
|
+
// ── CodeWiki / project requirements reports ──
|
|
811
|
+
if (req.method === 'GET' && url.pathname === '/api/codewiki/reports') {
|
|
812
|
+
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
813
|
+
const requirementsDir = getRequirementsDir(codeWikiProjectDir);
|
|
715
814
|
try {
|
|
716
815
|
const entries = await fs.readdir(requirementsDir, { withFileTypes: true });
|
|
717
816
|
const reports = [];
|
|
@@ -732,38 +831,38 @@ async function main() {
|
|
|
732
831
|
if (err?.code === 'ENOENT') jsonResponse(res, { reports: [] });
|
|
733
832
|
else jsonResponse(res, { error: true, message: err.message }, 500);
|
|
734
833
|
}
|
|
735
|
-
return;
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
if (req.method === 'GET' && url.pathname === '/api/codewiki/symbol-graph') {
|
|
739
|
-
try {
|
|
740
|
-
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
741
|
-
const initialized = await initializeProjectIndex(codeWikiProjectDir);
|
|
742
|
-
const projectRoot = initialized?.projectRoot || codeWikiProjectDir;
|
|
743
|
-
const fileIndexPath = getFileIndexPath(projectRoot);
|
|
744
|
-
const fileIndex = JSON.parse(await fs.readFile(fileIndexPath, 'utf8'));
|
|
745
|
-
const maxNodes = Math.max(12, Math.min(80, Number(url.searchParams.get('max_nodes') || 42)));
|
|
746
|
-
jsonResponse(res, buildCodeWikiSymbolGraph(fileIndex, { maxNodes }));
|
|
747
|
-
} catch (err) {
|
|
748
|
-
jsonResponse(res, {
|
|
749
|
-
updatedAt: '',
|
|
750
|
-
stats: { files: 0, symbols: 0, displayed_nodes: 0, displayed_edges: 0 },
|
|
751
|
-
nodes: [],
|
|
752
|
-
edges: [],
|
|
753
|
-
error: err?.message || String(err)
|
|
754
|
-
});
|
|
755
|
-
}
|
|
756
|
-
return;
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
if (req.method === 'GET' && url.pathname.startsWith('/api/codewiki/report/')) {
|
|
834
|
+
return;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
if (req.method === 'GET' && url.pathname === '/api/codewiki/symbol-graph') {
|
|
838
|
+
try {
|
|
839
|
+
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
840
|
+
const initialized = await initializeProjectIndex(codeWikiProjectDir);
|
|
841
|
+
const projectRoot = initialized?.projectRoot || codeWikiProjectDir;
|
|
842
|
+
const fileIndexPath = getFileIndexPath(projectRoot);
|
|
843
|
+
const fileIndex = JSON.parse(await fs.readFile(fileIndexPath, 'utf8'));
|
|
844
|
+
const maxNodes = Math.max(12, Math.min(80, Number(url.searchParams.get('max_nodes') || 42)));
|
|
845
|
+
jsonResponse(res, buildCodeWikiSymbolGraph(fileIndex, { maxNodes }));
|
|
846
|
+
} catch (err) {
|
|
847
|
+
jsonResponse(res, {
|
|
848
|
+
updatedAt: '',
|
|
849
|
+
stats: { files: 0, symbols: 0, displayed_nodes: 0, displayed_edges: 0 },
|
|
850
|
+
nodes: [],
|
|
851
|
+
edges: [],
|
|
852
|
+
error: err?.message || String(err)
|
|
853
|
+
});
|
|
854
|
+
}
|
|
855
|
+
return;
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
if (req.method === 'GET' && url.pathname.startsWith('/api/codewiki/report/')) {
|
|
760
859
|
const fileName = decodeURIComponent(url.pathname.slice('/api/codewiki/report/'.length));
|
|
761
860
|
if (!isCodeWikiReportFile(fileName)) {
|
|
762
861
|
jsonResponse(res, { error: true, message: 'Invalid report file' }, 400);
|
|
763
862
|
return;
|
|
764
863
|
}
|
|
765
|
-
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
766
|
-
const requirementsDir = path.resolve(getRequirementsDir(codeWikiProjectDir));
|
|
864
|
+
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
865
|
+
const requirementsDir = path.resolve(getRequirementsDir(codeWikiProjectDir));
|
|
767
866
|
const reportPath = path.resolve(requirementsDir, fileName);
|
|
768
867
|
if (!reportPath.startsWith(`${requirementsDir}${path.sep}`)) {
|
|
769
868
|
jsonResponse(res, { error: true, message: 'Invalid report path' }, 403);
|
|
@@ -779,8 +878,8 @@ async function main() {
|
|
|
779
878
|
jsonResponse(res, { error: true, message: 'Invalid report file' }, 400);
|
|
780
879
|
return;
|
|
781
880
|
}
|
|
782
|
-
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
783
|
-
const requirementsDir = path.resolve(getRequirementsDir(codeWikiProjectDir));
|
|
881
|
+
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
882
|
+
const requirementsDir = path.resolve(getRequirementsDir(codeWikiProjectDir));
|
|
784
883
|
const reportPath = path.resolve(requirementsDir, fileName);
|
|
785
884
|
if (!reportPath.startsWith(`${requirementsDir}${path.sep}`)) {
|
|
786
885
|
jsonResponse(res, { error: true, message: 'Invalid report path' }, 403);
|
|
@@ -801,23 +900,23 @@ async function main() {
|
|
|
801
900
|
jsonResponse(res, { error: true, message: 'Runtime is busy' }, 409);
|
|
802
901
|
return;
|
|
803
902
|
}
|
|
804
|
-
const { depth } = await readBody(req);
|
|
805
|
-
const normalizedDepth = ['fast', 'standard', 'deep'].includes(String(depth || '').toLowerCase())
|
|
806
|
-
? String(depth).toLowerCase()
|
|
807
|
-
: 'standard';
|
|
808
|
-
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
809
|
-
if (codeWikiProjectDir !== currentProjectDir) {
|
|
810
|
-
const { runtime } = await buildRuntimeForSession({
|
|
811
|
-
model: bridge.getState().model,
|
|
812
|
-
projectDir: codeWikiProjectDir
|
|
813
|
-
});
|
|
814
|
-
await bridge.switchRuntime(runtime);
|
|
815
|
-
currentProjectDir = process.cwd();
|
|
816
|
-
}
|
|
817
|
-
const result = bridge.handleCodeWikiGenerate(`/project-requirements --${normalizedDepth}`);
|
|
818
|
-
jsonResponse(res, result);
|
|
819
|
-
return;
|
|
820
|
-
}
|
|
903
|
+
const { depth } = await readBody(req);
|
|
904
|
+
const normalizedDepth = ['fast', 'standard', 'deep'].includes(String(depth || '').toLowerCase())
|
|
905
|
+
? String(depth).toLowerCase()
|
|
906
|
+
: 'standard';
|
|
907
|
+
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
908
|
+
if (codeWikiProjectDir !== currentProjectDir) {
|
|
909
|
+
const { runtime } = await buildRuntimeForSession({
|
|
910
|
+
model: bridge.getState().model,
|
|
911
|
+
projectDir: codeWikiProjectDir
|
|
912
|
+
});
|
|
913
|
+
await bridge.switchRuntime(runtime);
|
|
914
|
+
currentProjectDir = process.cwd();
|
|
915
|
+
}
|
|
916
|
+
const result = bridge.handleCodeWikiGenerate(`/project-requirements --${normalizedDepth}`);
|
|
917
|
+
jsonResponse(res, result);
|
|
918
|
+
return;
|
|
919
|
+
}
|
|
821
920
|
|
|
822
921
|
if (req.method === 'POST' && url.pathname === '/api/codewiki/ask') {
|
|
823
922
|
const { question, reportFile } = await readBody(req);
|
|
@@ -841,16 +940,16 @@ async function main() {
|
|
|
841
940
|
jsonResponse(res, { error: true, message: 'Runtime is busy' }, 409);
|
|
842
941
|
return;
|
|
843
942
|
}
|
|
844
|
-
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
845
|
-
const reportPath = selectedReport
|
|
846
|
-
? path.join(getRequirementsDir(codeWikiProjectDir), selectedReport)
|
|
847
|
-
: getRequirementsDir(codeWikiProjectDir);
|
|
848
|
-
const prompt = buildCodeWikiAskPrompt({
|
|
849
|
-
question,
|
|
850
|
-
reportPath,
|
|
851
|
-
projectDir: codeWikiProjectDir,
|
|
852
|
-
replyLanguage: bridge.getState()?.replyLanguage
|
|
853
|
-
});
|
|
943
|
+
const codeWikiProjectDir = await resolveCodeWikiProjectDir(url, currentProjectDir);
|
|
944
|
+
const reportPath = selectedReport
|
|
945
|
+
? path.join(getRequirementsDir(codeWikiProjectDir), selectedReport)
|
|
946
|
+
: getRequirementsDir(codeWikiProjectDir);
|
|
947
|
+
const prompt = buildCodeWikiAskPrompt({
|
|
948
|
+
question,
|
|
949
|
+
reportPath,
|
|
950
|
+
projectDir: codeWikiProjectDir,
|
|
951
|
+
replyLanguage: bridge.getState()?.replyLanguage
|
|
952
|
+
});
|
|
854
953
|
|
|
855
954
|
res.writeHead(200, {
|
|
856
955
|
'Content-Type': 'application/x-ndjson; charset=utf-8',
|
|
@@ -1114,28 +1213,64 @@ async function main() {
|
|
|
1114
1213
|
}
|
|
1115
1214
|
return;
|
|
1116
1215
|
}
|
|
1117
|
-
if (req.method === 'GET' && url.pathname.startsWith('/api/config/get/')) {
|
|
1118
|
-
const key = url.pathname.slice('/api/config/get/'.length);
|
|
1119
|
-
const value = await getConfigValue(key);
|
|
1120
|
-
jsonResponse(res, { key, value });
|
|
1121
|
-
return;
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
// ──
|
|
1125
|
-
if (req.method === 'GET' && url.pathname === '/api/
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1216
|
+
if (req.method === 'GET' && url.pathname.startsWith('/api/config/get/')) {
|
|
1217
|
+
const key = url.pathname.slice('/api/config/get/'.length);
|
|
1218
|
+
const value = await getConfigValue(key);
|
|
1219
|
+
jsonResponse(res, { key, value });
|
|
1220
|
+
return;
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1223
|
+
// ── Memory management ──
|
|
1224
|
+
if (req.method === 'GET' && url.pathname === '/api/memory') {
|
|
1225
|
+
const scope = normalizeMemoryScope(url.searchParams.get('scope'));
|
|
1226
|
+
const query = String(url.searchParams.get('q') || '').trim();
|
|
1227
|
+
try {
|
|
1228
|
+
const projectDirs = await parseProjectDirsParam(url, currentProjectDir);
|
|
1229
|
+
const items = await listMemoriesForProjectDirs({
|
|
1230
|
+
scope,
|
|
1231
|
+
query,
|
|
1232
|
+
projectDirs,
|
|
1233
|
+
fallbackDir: currentProjectDir
|
|
1234
|
+
});
|
|
1235
|
+
jsonResponse(res, { scope, query, items });
|
|
1236
|
+
} catch (err) {
|
|
1237
|
+
jsonResponse(res, { error: true, message: err.message }, 500);
|
|
1238
|
+
}
|
|
1239
|
+
return;
|
|
1240
|
+
}
|
|
1241
|
+
if (req.method === 'DELETE' && url.pathname.startsWith('/api/memory/')) {
|
|
1242
|
+
const id = decodeURIComponent(url.pathname.slice('/api/memory/'.length));
|
|
1243
|
+
const scope = normalizeMemoryScope(url.searchParams.get('scope'));
|
|
1244
|
+
if (!id) { jsonResponse(res, { error: true, message: 'Missing memory id' }, 400); return; }
|
|
1245
|
+
try {
|
|
1246
|
+
const workspaceRoot = scope === 'project'
|
|
1247
|
+
? await resolveRequestProjectDir(url.searchParams.get('projectDir'), currentProjectDir)
|
|
1248
|
+
: currentProjectDir;
|
|
1249
|
+
const result = await forgetMemory({ scope, id, workspaceRoot });
|
|
1250
|
+
jsonResponse(res, { ok: true, scope, ...result });
|
|
1251
|
+
} catch (err) {
|
|
1252
|
+
jsonResponse(res, { error: true, message: err.message }, 500);
|
|
1253
|
+
}
|
|
1254
|
+
return;
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
// ── Skills management ──
|
|
1258
|
+
if (req.method === 'GET' && url.pathname === '/api/skills') {
|
|
1259
|
+
try {
|
|
1260
|
+
const projectDirs = await parseProjectDirsParam(url, currentProjectDir);
|
|
1261
|
+
const skills = await listSkillsForProjectDirs(projectDirs, currentProjectDir);
|
|
1262
|
+
jsonResponse(res, skills);
|
|
1263
|
+
} catch (err) { jsonResponse(res, { error: true, message: err.message }, 500); }
|
|
1264
|
+
return;
|
|
1265
|
+
}
|
|
1266
|
+
if (req.method === 'GET' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/content')) {
|
|
1267
|
+
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length, -'/content'.length));
|
|
1268
|
+
try {
|
|
1269
|
+
const targetProjectDir = await resolveRequestProjectDir(url.searchParams.get('projectDir'), currentProjectDir);
|
|
1270
|
+
const entries = await listSkillEntries({ scope: 'all', cwd: targetProjectDir });
|
|
1271
|
+
const skill = entries.find(s => s.name === name);
|
|
1272
|
+
if (!skill) { jsonResponse(res, { error: true, message: 'Skill not found' }, 404); return; }
|
|
1273
|
+
const content = await fs.readFile(skill.path, 'utf8');
|
|
1139
1274
|
jsonResponse(res, { name: skill.name, content, scope: skill.scope });
|
|
1140
1275
|
} catch (err) { jsonResponse(res, { error: true, message: err.message }, 500); }
|
|
1141
1276
|
return;
|
|
@@ -1192,38 +1327,40 @@ async function main() {
|
|
|
1192
1327
|
} catch (err) { jsonResponse(res, { error: true, message: err.message }, 500); }
|
|
1193
1328
|
return;
|
|
1194
1329
|
}
|
|
1195
|
-
if (req.method === 'PUT' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/content')) {
|
|
1196
|
-
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length, -'/content'.length));
|
|
1197
|
-
const { content } = await readBody(req);
|
|
1198
|
-
if (!content) { jsonResponse(res, { error: true, message: 'Missing content' }, 400); return; }
|
|
1199
|
-
try {
|
|
1200
|
-
const
|
|
1201
|
-
const
|
|
1202
|
-
|
|
1203
|
-
if (skill
|
|
1330
|
+
if (req.method === 'PUT' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/content')) {
|
|
1331
|
+
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length, -'/content'.length));
|
|
1332
|
+
const { content, projectDir } = await readBody(req);
|
|
1333
|
+
if (!content) { jsonResponse(res, { error: true, message: 'Missing content' }, 400); return; }
|
|
1334
|
+
try {
|
|
1335
|
+
const targetProjectDir = await resolveRequestProjectDir(projectDir, currentProjectDir);
|
|
1336
|
+
const entries = await listSkillEntries({ scope: 'all', cwd: targetProjectDir });
|
|
1337
|
+
const skill = entries.find(s => s.name === name);
|
|
1338
|
+
if (!skill) { jsonResponse(res, { error: true, message: 'Skill not found' }, 404); return; }
|
|
1339
|
+
if (skill.scope === 'builtin') { jsonResponse(res, { error: true, message: 'Cannot edit builtin skill' }, 403); return; }
|
|
1204
1340
|
await fs.writeFile(skill.path, content, 'utf8');
|
|
1205
1341
|
await bridge.reloadCommandsAndSkills();
|
|
1206
1342
|
jsonResponse(res, { ok: true });
|
|
1207
1343
|
} catch (err) { jsonResponse(res, { error: true, message: err.message }, 500); }
|
|
1208
1344
|
return;
|
|
1209
1345
|
}
|
|
1210
|
-
if (req.method === 'DELETE' && url.pathname.startsWith('/api/skills/')) {
|
|
1211
|
-
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length));
|
|
1212
|
-
try {
|
|
1213
|
-
const
|
|
1214
|
-
const
|
|
1215
|
-
|
|
1216
|
-
if (skill
|
|
1346
|
+
if (req.method === 'DELETE' && url.pathname.startsWith('/api/skills/')) {
|
|
1347
|
+
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length));
|
|
1348
|
+
try {
|
|
1349
|
+
const targetProjectDir = await resolveRequestProjectDir(url.searchParams.get('projectDir'), currentProjectDir);
|
|
1350
|
+
const entries = await listSkillEntries({ scope: 'all', cwd: targetProjectDir });
|
|
1351
|
+
const skill = entries.find(s => s.name === name);
|
|
1352
|
+
if (!skill) { jsonResponse(res, { error: true, message: 'Skill not found' }, 404); return; }
|
|
1353
|
+
if (skill.scope === 'builtin') { jsonResponse(res, { error: true, message: 'Cannot delete builtin skill' }, 403); return; }
|
|
1217
1354
|
const dir = path.dirname(skill.path);
|
|
1218
1355
|
await fs.rm(dir, { recursive: true, force: true });
|
|
1219
1356
|
const registry = await readSkillRegistry();
|
|
1220
1357
|
registry.skills = (registry.skills || []).filter(s => s.name !== name);
|
|
1221
1358
|
await writeSkillRegistry(undefined, registry);
|
|
1222
|
-
const catalog = await readProjectSkillCatalog(
|
|
1223
|
-
if (catalog.skills?.[name]) {
|
|
1224
|
-
delete catalog.skills[name];
|
|
1225
|
-
await writeProjectSkillCatalog(
|
|
1226
|
-
}
|
|
1359
|
+
const catalog = await readProjectSkillCatalog(targetProjectDir);
|
|
1360
|
+
if (catalog.skills?.[name]) {
|
|
1361
|
+
delete catalog.skills[name];
|
|
1362
|
+
await writeProjectSkillCatalog(targetProjectDir, catalog);
|
|
1363
|
+
}
|
|
1227
1364
|
await deleteSkillCatalogMetadata(getSkillsDir(), name);
|
|
1228
1365
|
const config = await loadConfig();
|
|
1229
1366
|
if (config.skills?.enabled) delete config.skills.enabled[name];
|
|
@@ -1233,12 +1370,13 @@ async function main() {
|
|
|
1233
1370
|
} catch (err) { jsonResponse(res, { error: true, message: err.message }, 500); }
|
|
1234
1371
|
return;
|
|
1235
1372
|
}
|
|
1236
|
-
if (req.method === 'PUT' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/metadata')) {
|
|
1237
|
-
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length, -'/metadata'.length));
|
|
1238
|
-
const body = await readBody(req);
|
|
1239
|
-
try {
|
|
1240
|
-
const
|
|
1241
|
-
const
|
|
1373
|
+
if (req.method === 'PUT' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/metadata')) {
|
|
1374
|
+
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length, -'/metadata'.length));
|
|
1375
|
+
const body = await readBody(req);
|
|
1376
|
+
try {
|
|
1377
|
+
const targetProjectDir = await resolveRequestProjectDir(body?.projectDir, currentProjectDir);
|
|
1378
|
+
const entries = await listSkillEntries({ scope: 'all', cwd: targetProjectDir });
|
|
1379
|
+
const skill = entries.find(s => s.name === name);
|
|
1242
1380
|
if (!skill) { jsonResponse(res, { error: true, message: 'Skill not found' }, 404); return; }
|
|
1243
1381
|
if (skill.scope === 'builtin' && body?.scope && body.scope !== 'builtin') {
|
|
1244
1382
|
jsonResponse(res, { error: true, message: 'Cannot move builtin skill' }, 403);
|
|
@@ -1250,15 +1388,15 @@ async function main() {
|
|
|
1250
1388
|
let nextScope = skill.scope;
|
|
1251
1389
|
|
|
1252
1390
|
if (skill.scope !== 'builtin' && requestedScope !== skill.scope) {
|
|
1253
|
-
const sourceDir = path.dirname(skill.path);
|
|
1254
|
-
const targetBaseDir = skillBaseDirForScope(requestedScope,
|
|
1255
|
-
const targetDir = path.join(targetBaseDir, name);
|
|
1391
|
+
const sourceDir = path.dirname(skill.path);
|
|
1392
|
+
const targetBaseDir = skillBaseDirForScope(requestedScope, targetProjectDir);
|
|
1393
|
+
const targetDir = path.join(targetBaseDir, name);
|
|
1256
1394
|
await fs.rm(targetDir, { recursive: true, force: true });
|
|
1257
1395
|
await fs.mkdir(path.dirname(targetDir), { recursive: true });
|
|
1258
1396
|
await fs.cp(sourceDir, targetDir, { recursive: true, force: true });
|
|
1259
1397
|
await fs.rm(sourceDir, { recursive: true, force: true });
|
|
1260
|
-
if (requestedScope === 'global') {
|
|
1261
|
-
await deleteSkillCatalogMetadata(getProjectSkillsDir(
|
|
1398
|
+
if (requestedScope === 'global') {
|
|
1399
|
+
await deleteSkillCatalogMetadata(getProjectSkillsDir(targetProjectDir), name);
|
|
1262
1400
|
await upsertSkillRegistryEntry(undefined, {
|
|
1263
1401
|
name,
|
|
1264
1402
|
version: skill.version || '0.0.0',
|
|
@@ -1285,13 +1423,13 @@ async function main() {
|
|
|
1285
1423
|
...(metadataPatch.enabled !== undefined ? { enabled: metadataPatch.enabled } : {})
|
|
1286
1424
|
});
|
|
1287
1425
|
metadata = await upsertSkillCatalogMetadata(getSkillsDir(), name, body || {});
|
|
1288
|
-
} else if (nextScope === 'project') {
|
|
1289
|
-
metadata = await upsertProjectSkillMetadata(
|
|
1290
|
-
} else if (skill.scope !== 'builtin') {
|
|
1291
|
-
metadata = await upsertProjectSkillMetadata(
|
|
1292
|
-
} else {
|
|
1293
|
-
metadata = await upsertProjectSkillMetadata(
|
|
1294
|
-
}
|
|
1426
|
+
} else if (nextScope === 'project') {
|
|
1427
|
+
metadata = await upsertProjectSkillMetadata(targetProjectDir, name, body || {});
|
|
1428
|
+
} else if (skill.scope !== 'builtin') {
|
|
1429
|
+
metadata = await upsertProjectSkillMetadata(targetProjectDir, name, body || {});
|
|
1430
|
+
} else {
|
|
1431
|
+
metadata = await upsertProjectSkillMetadata(targetProjectDir, name, body || {});
|
|
1432
|
+
}
|
|
1295
1433
|
if (skill.scope !== 'builtin' && body?.enabled !== undefined) {
|
|
1296
1434
|
const config = await loadConfig();
|
|
1297
1435
|
config.skills = config.skills || {};
|
|
@@ -1307,15 +1445,16 @@ async function main() {
|
|
|
1307
1445
|
} catch (err) { jsonResponse(res, { error: true, message: err.message }, 500); }
|
|
1308
1446
|
return;
|
|
1309
1447
|
}
|
|
1310
|
-
if (req.method === 'POST' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/toggle')) {
|
|
1311
|
-
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length, -'/toggle'.length));
|
|
1312
|
-
const { enabled } = await readBody(req);
|
|
1313
|
-
try {
|
|
1314
|
-
const
|
|
1315
|
-
const
|
|
1316
|
-
|
|
1317
|
-
if (skill
|
|
1318
|
-
|
|
1448
|
+
if (req.method === 'POST' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/toggle')) {
|
|
1449
|
+
const name = decodeURIComponent(url.pathname.slice('/api/skills/'.length, -'/toggle'.length));
|
|
1450
|
+
const { enabled, projectDir } = await readBody(req);
|
|
1451
|
+
try {
|
|
1452
|
+
const targetProjectDir = await resolveRequestProjectDir(projectDir, currentProjectDir);
|
|
1453
|
+
const entries = await listSkillEntries({ scope: 'all', cwd: targetProjectDir });
|
|
1454
|
+
const skill = entries.find(s => s.name === name);
|
|
1455
|
+
if (!skill) { jsonResponse(res, { error: true, message: 'Skill not found' }, 404); return; }
|
|
1456
|
+
if (skill.scope === 'builtin') {
|
|
1457
|
+
const metadata = await upsertProjectSkillMetadata(targetProjectDir, name, { enabled });
|
|
1319
1458
|
await bridge.reloadCommandsAndSkills();
|
|
1320
1459
|
jsonResponse(res, { ok: true, name, metadata });
|
|
1321
1460
|
return;
|