codemini-cli 0.4.8 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -1
- package/codemini-web/dist/assets/Geist-Italic_wght_-vKc54d3Z.woff2 +0 -0
- package/codemini-web/dist/assets/Geist-Variable-CrgPqtmy.woff2 +0 -0
- package/codemini-web/dist/assets/GeistMono-Variable-BNLlm6Cd.woff2 +0 -0
- package/codemini-web/dist/assets/abap-BRbAAyvE.js +1 -0
- package/codemini-web/dist/assets/actionscript-3-Cj-0sM4g.js +1 -0
- package/codemini-web/dist/assets/ada-DhEA_nP5.js +1 -0
- package/codemini-web/dist/assets/andromeeda-CWmR-N6V.js +1 -0
- package/codemini-web/dist/assets/angular-html-Cde9qVP5.js +1 -0
- package/codemini-web/dist/assets/angular-ts-DefScAWP.js +1 -0
- package/codemini-web/dist/assets/apache-D5R2GKIs.js +1 -0
- package/codemini-web/dist/assets/apex-Qu8W4hal.js +1 -0
- package/codemini-web/dist/assets/apl-w753UHCW.js +1 -0
- package/codemini-web/dist/assets/applescript-CBey3ErE.js +1 -0
- package/codemini-web/dist/assets/ara-CRKnUAN1.js +1 -0
- package/codemini-web/dist/assets/asciidoc-1KYZEB6-.js +1 -0
- package/codemini-web/dist/assets/asm-DAaViY0U.js +1 -0
- package/codemini-web/dist/assets/astro-DBA9Da7s.js +1 -0
- package/codemini-web/dist/assets/aurora-x-LPpmXm4i.js +1 -0
- package/codemini-web/dist/assets/awk-ButuPTaW.js +1 -0
- package/codemini-web/dist/assets/ayu-dark-Dv4ngVMP.js +1 -0
- package/codemini-web/dist/assets/ayu-light-CxeOePuA.js +1 -0
- package/codemini-web/dist/assets/ayu-mirage-i2YLXKmY.js +1 -0
- package/codemini-web/dist/assets/ballerina-DodmBVwR.js +1 -0
- package/codemini-web/dist/assets/bat-jA-YqDhG.js +1 -0
- package/codemini-web/dist/assets/beancount-BCkjWTs-.js +1 -0
- package/codemini-web/dist/assets/berry-DjEHm1kC.js +1 -0
- package/codemini-web/dist/assets/bibtex-aOfmXHFj.js +1 -0
- package/codemini-web/dist/assets/bicep-BZLx0b6B.js +1 -0
- package/codemini-web/dist/assets/bird2-Bs7YDhA3.js +1 -0
- package/codemini-web/dist/assets/blade-B-u5p0Rp.js +1 -0
- package/codemini-web/dist/assets/bsl-CPV9KqsG.js +1 -0
- package/codemini-web/dist/assets/c-Bv0tI3pq.js +1 -0
- package/codemini-web/dist/assets/c3-BDcFIiRd.js +1 -0
- package/codemini-web/dist/assets/cadence-DaglWUgA.js +1 -0
- package/codemini-web/dist/assets/cairo-CyiRuu7R.js +1 -0
- package/codemini-web/dist/assets/catppuccin-frappe-CSAC76is.js +1 -0
- package/codemini-web/dist/assets/catppuccin-latte-Jt6sqtds.js +1 -0
- package/codemini-web/dist/assets/catppuccin-macchiato-HM96_05s.js +1 -0
- package/codemini-web/dist/assets/catppuccin-mocha-CXgIAGBL.js +1 -0
- package/codemini-web/dist/assets/clarity-DS5YLe8G.js +1 -0
- package/codemini-web/dist/assets/clojure-BVGPdaE2.js +1 -0
- package/codemini-web/dist/assets/cmake-CCC7tP43.js +1 -0
- package/codemini-web/dist/assets/cobol-CkQrskif.js +1 -0
- package/codemini-web/dist/assets/codeowners-DXhoR5Ap.js +1 -0
- package/codemini-web/dist/assets/codeql-BGjlu3KC.js +1 -0
- package/codemini-web/dist/assets/coffee-rY-gkJy7.js +1 -0
- package/codemini-web/dist/assets/common-lisp-BE6wRQeA.js +1 -0
- package/codemini-web/dist/assets/coq-CRT8yML1.js +1 -0
- package/codemini-web/dist/assets/cpp-Bw-qV0P6.js +1 -0
- package/codemini-web/dist/assets/crystal-Dh09vXLx.js +1 -0
- package/codemini-web/dist/assets/csharp-Ca2kU4Te.js +1 -0
- package/codemini-web/dist/assets/css-BTi88BmP.js +1 -0
- package/codemini-web/dist/assets/csv-DUpZC5ZD.js +1 -0
- package/codemini-web/dist/assets/cue-DlXQ7arx.js +1 -0
- package/codemini-web/dist/assets/cypher-D6dhuZbo.js +1 -0
- package/codemini-web/dist/assets/d-BUgyoY6k.js +1 -0
- package/codemini-web/dist/assets/dark-plus-DNkJKrcZ.js +1 -0
- package/codemini-web/dist/assets/dart-Czrjv-nr.js +1 -0
- package/codemini-web/dist/assets/dax-sEzq00Tq.js +1 -0
- package/codemini-web/dist/assets/desktop-3VGbzlmJ.js +1 -0
- package/codemini-web/dist/assets/diff-D4HSRbRn.js +1 -0
- package/codemini-web/dist/assets/docker-DkLGgDMo.js +1 -0
- package/codemini-web/dist/assets/dotenv-BWp1FaLo.js +1 -0
- package/codemini-web/dist/assets/dracula-Donvxzd6.js +1 -0
- package/codemini-web/dist/assets/dracula-soft-BqL-kkUg.js +1 -0
- package/codemini-web/dist/assets/dream-maker-DtLD6KM3.js +1 -0
- package/codemini-web/dist/assets/edge-CCRtknu5.js +1 -0
- package/codemini-web/dist/assets/elixir-5EYbFEoC.js +1 -0
- package/codemini-web/dist/assets/elm-Cezz_HNz.js +1 -0
- package/codemini-web/dist/assets/emacs-lisp-D4W-_rAk.js +1 -0
- package/codemini-web/dist/assets/erb-C6pPz4fX.js +1 -0
- package/codemini-web/dist/assets/erlang-BC8wryba.js +1 -0
- package/codemini-web/dist/assets/everforest-dark-pZNhY4MK.js +1 -0
- package/codemini-web/dist/assets/everforest-light-BijKClkf.js +1 -0
- package/codemini-web/dist/assets/fennel-Cd-BhZ0S.js +1 -0
- package/codemini-web/dist/assets/fish-CpsjJ6FK.js +1 -0
- package/codemini-web/dist/assets/fluent-D1peBFgx.js +1 -0
- package/codemini-web/dist/assets/fortran-fixed-form-CyrImzNA.js +1 -0
- package/codemini-web/dist/assets/fortran-free-form-CIAQqF5W.js +1 -0
- package/codemini-web/dist/assets/fsharp-OCW_PZ4J.js +1 -0
- package/codemini-web/dist/assets/gdresource-Cl3bohRI.js +1 -0
- package/codemini-web/dist/assets/gdscript-B_XVILZe.js +1 -0
- package/codemini-web/dist/assets/gdshader-BOrkFM_X.js +1 -0
- package/codemini-web/dist/assets/genie-BE7nKhIq.js +1 -0
- package/codemini-web/dist/assets/gherkin-DzGJhdqS.js +1 -0
- package/codemini-web/dist/assets/git-commit-DJZpdBwB.js +1 -0
- package/codemini-web/dist/assets/git-rebase-BJE30GTP.js +1 -0
- package/codemini-web/dist/assets/github-dark-BB9G20EV.js +1 -0
- package/codemini-web/dist/assets/github-dark-default-CBFNEU03.js +1 -0
- package/codemini-web/dist/assets/github-dark-dimmed-sQhEp72S.js +1 -0
- package/codemini-web/dist/assets/github-dark-high-contrast-C8GVvrcM.js +1 -0
- package/codemini-web/dist/assets/github-light-default-iyEXWnoa.js +1 -0
- package/codemini-web/dist/assets/github-light-high-contrast-DLnsZL7l.js +1 -0
- package/codemini-web/dist/assets/github-light-pT7U8Cnd.js +1 -0
- package/codemini-web/dist/assets/gleam-B9ISJjDl.js +1 -0
- package/codemini-web/dist/assets/glimmer-js-C4PTXfaW.js +1 -0
- package/codemini-web/dist/assets/glimmer-ts-Df1V6YK_.js +1 -0
- package/codemini-web/dist/assets/glsl-C8VPaAWs.js +1 -0
- package/codemini-web/dist/assets/gn-RQRMslrP.js +1 -0
- package/codemini-web/dist/assets/gnuplot-CfIGZWjt.js +1 -0
- package/codemini-web/dist/assets/go-BTh90-YS.js +1 -0
- package/codemini-web/dist/assets/graphql-WZCiqIl-.js +1 -0
- package/codemini-web/dist/assets/groovy-lvGC2zUz.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-hard-CC38iqQ4.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-medium-DaS0IqFN.js +1 -0
- package/codemini-web/dist/assets/gruvbox-dark-soft-C4niJipy.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-hard-DTfv4LmB.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-medium-m1VBpvsE.js +1 -0
- package/codemini-web/dist/assets/gruvbox-light-soft-CiE1IJdk.js +1 -0
- package/codemini-web/dist/assets/hack-zJL_tEH0.js +1 -0
- package/codemini-web/dist/assets/haml-qjVLLTZk.js +1 -0
- package/codemini-web/dist/assets/handlebars-B3RyMMk0.js +1 -0
- package/codemini-web/dist/assets/haskell-DdaZtXdd.js +1 -0
- package/codemini-web/dist/assets/haxe-Df79h8x1.js +1 -0
- package/codemini-web/dist/assets/hcl-BibREsa1.js +1 -0
- package/codemini-web/dist/assets/highlighted-body-OFNGDK62-CJHWad2r.js +1 -0
- package/codemini-web/dist/assets/hjson-D-iSecYq.js +1 -0
- package/codemini-web/dist/assets/hlsl-CckLjo_3.js +1 -0
- package/codemini-web/dist/assets/horizon-BG-OH9yH.js +1 -0
- package/codemini-web/dist/assets/horizon-bright-CpoqdULz.js +1 -0
- package/codemini-web/dist/assets/houston-C8DdNIgg.js +1 -0
- package/codemini-web/dist/assets/html-DP-V-rfg.js +1 -0
- package/codemini-web/dist/assets/html-derivative-DB9UhNDN.js +1 -0
- package/codemini-web/dist/assets/http-Deln4Vyb.js +1 -0
- package/codemini-web/dist/assets/hurl-CYSuhGkj.js +1 -0
- package/codemini-web/dist/assets/hxml-BmF7ngDz.js +1 -0
- package/codemini-web/dist/assets/hy-6acR1htR.js +1 -0
- package/codemini-web/dist/assets/imba-I9bJJvhi.js +1 -0
- package/codemini-web/dist/assets/index-BZ01DHrh.js +206 -0
- package/codemini-web/dist/assets/index-Dq1mwNaQ.css +2 -0
- package/codemini-web/dist/assets/ini-ovi-wMtM.js +1 -0
- package/codemini-web/dist/assets/java-X0I2c5Az.js +1 -0
- package/codemini-web/dist/assets/javascript-WC6XFf_S.js +1 -0
- package/codemini-web/dist/assets/jinja-BcRTlqOI.js +1 -0
- package/codemini-web/dist/assets/jison-DuNOGix6.js +1 -0
- package/codemini-web/dist/assets/json-CmuSmrUv.js +1 -0
- package/codemini-web/dist/assets/json5-JNG5kh3j.js +1 -0
- package/codemini-web/dist/assets/jsonc-Bo6bgSpa.js +1 -0
- package/codemini-web/dist/assets/jsonl-eDmbsRcr.js +1 -0
- package/codemini-web/dist/assets/jsonnet-BrmnmEy9.js +1 -0
- package/codemini-web/dist/assets/jssm-C-QfdDgD.js +1 -0
- package/codemini-web/dist/assets/jsx-Bl4e1-KE.js +1 -0
- package/codemini-web/dist/assets/julia-Cqc1ADyw.js +1 -0
- package/codemini-web/dist/assets/just-O9z-zIlY.js +1 -0
- package/codemini-web/dist/assets/kanagawa-dragon-Dc8jzBf8.js +1 -0
- package/codemini-web/dist/assets/kanagawa-lotus-DglQpAHb.js +1 -0
- package/codemini-web/dist/assets/kanagawa-wave-CTxJC692.js +1 -0
- package/codemini-web/dist/assets/kdl-CPujEk7a.js +1 -0
- package/codemini-web/dist/assets/kotlin-GNGS6f4G.js +1 -0
- package/codemini-web/dist/assets/kusto-ByPWIc1b.js +1 -0
- package/codemini-web/dist/assets/laserwave-BLDq6SCM.js +1 -0
- package/codemini-web/dist/assets/latex-BEPTKliI.js +1 -0
- package/codemini-web/dist/assets/lean-CQ4oht2M.js +1 -0
- package/codemini-web/dist/assets/less-DgluPI4Z.js +1 -0
- package/codemini-web/dist/assets/light-plus-Ce6vIMrA.js +1 -0
- package/codemini-web/dist/assets/liquid-BK2PyMjt.js +1 -0
- package/codemini-web/dist/assets/llvm-C_Bk8N51.js +1 -0
- package/codemini-web/dist/assets/log-Cqyx7kYB.js +1 -0
- package/codemini-web/dist/assets/logo-BMyACSNp.js +1 -0
- package/codemini-web/dist/assets/lua-BroxvhVt.js +1 -0
- package/codemini-web/dist/assets/luau-Dw3qkd4h.js +1 -0
- package/codemini-web/dist/assets/make-DRoG6w-e.js +1 -0
- package/codemini-web/dist/assets/markdown-DMIvNSB1.js +1 -0
- package/codemini-web/dist/assets/marko-CTEKS39A.js +1 -0
- package/codemini-web/dist/assets/material-theme-D1yzOeFY.js +1 -0
- package/codemini-web/dist/assets/material-theme-darker-DhWqiNtj.js +1 -0
- package/codemini-web/dist/assets/material-theme-lighter-PKoq0Soa.js +1 -0
- package/codemini-web/dist/assets/material-theme-ocean-TtH-ZZAj.js +1 -0
- package/codemini-web/dist/assets/material-theme-palenight-DPEAidnA.js +1 -0
- package/codemini-web/dist/assets/matlab-Buftnej6.js +1 -0
- package/codemini-web/dist/assets/mdc-BOaCYzzL.js +1 -0
- package/codemini-web/dist/assets/mdx-COL7Vpwq.js +1 -0
- package/codemini-web/dist/assets/mermaid-GHXKKRXX-BuB6-G4r.js +1 -0
- package/codemini-web/dist/assets/mermaid-tvyj1ZQ2.js +1 -0
- package/codemini-web/dist/assets/min-dark-D66g901Q.js +1 -0
- package/codemini-web/dist/assets/min-light-CMnDj2iG.js +1 -0
- package/codemini-web/dist/assets/mipsasm-C6fvALrw.js +1 -0
- package/codemini-web/dist/assets/mojo-B3qnM1a8.js +1 -0
- package/codemini-web/dist/assets/monokai-DCoxt20T.js +1 -0
- package/codemini-web/dist/assets/moonbit-Cjo3d0oi.js +1 -0
- package/codemini-web/dist/assets/move-BZSDQnwS.js +1 -0
- package/codemini-web/dist/assets/narrat-DY5cg5OF.js +1 -0
- package/codemini-web/dist/assets/nextflow-Cto1mpL3.js +1 -0
- package/codemini-web/dist/assets/nextflow-groovy-D1X5Yd05.js +1 -0
- package/codemini-web/dist/assets/nginx-Da_Uewgc.js +1 -0
- package/codemini-web/dist/assets/night-owl-DuMFo77c.js +1 -0
- package/codemini-web/dist/assets/night-owl-light-DihOYNub.js +1 -0
- package/codemini-web/dist/assets/nim-BZyx58NM.js +1 -0
- package/codemini-web/dist/assets/nix-C2G-gZoY.js +1 -0
- package/codemini-web/dist/assets/nord-CqZqLQaJ.js +1 -0
- package/codemini-web/dist/assets/nushell-S11HUHTG.js +1 -0
- package/codemini-web/dist/assets/objective-c-D9GKvYFi.js +1 -0
- package/codemini-web/dist/assets/objective-cpp-SqrtXFXh.js +1 -0
- package/codemini-web/dist/assets/ocaml-C_PTi_Pz.js +1 -0
- package/codemini-web/dist/assets/odin-BWpZDKBG.js +1 -0
- package/codemini-web/dist/assets/one-dark-pro-DpWTHpwg.js +1 -0
- package/codemini-web/dist/assets/one-light-Cu0d64Hp.js +1 -0
- package/codemini-web/dist/assets/openscad-BM4fjXzn.js +1 -0
- package/codemini-web/dist/assets/pascal-DYsRufgb.js +1 -0
- package/codemini-web/dist/assets/perl-BW8t13Xq.js +1 -0
- package/codemini-web/dist/assets/php-Cq5FOhfR.js +1 -0
- package/codemini-web/dist/assets/pkl-Djf8ANrI.js +1 -0
- package/codemini-web/dist/assets/plastic-CmjIC4JL.js +1 -0
- package/codemini-web/dist/assets/plsql-B1bmZxUF.js +1 -0
- package/codemini-web/dist/assets/po-BvnTR3_f.js +1 -0
- package/codemini-web/dist/assets/poimandres-BTndTogr.js +1 -0
- package/codemini-web/dist/assets/polar-CAj5SJyd.js +1 -0
- package/codemini-web/dist/assets/postcss-DrpvRGGG.js +1 -0
- package/codemini-web/dist/assets/powerquery-I1Ei5hrS.js +1 -0
- package/codemini-web/dist/assets/powershell-Coc0WruX.js +1 -0
- package/codemini-web/dist/assets/prisma-Ojgxt2lx.js +1 -0
- package/codemini-web/dist/assets/prolog-C1UOAv4v.js +1 -0
- package/codemini-web/dist/assets/proto-D07RTuB5.js +1 -0
- package/codemini-web/dist/assets/pug-B4WHazil.js +1 -0
- package/codemini-web/dist/assets/puppet-D_zyrMo2.js +1 -0
- package/codemini-web/dist/assets/purescript-CV-DVmZj.js +1 -0
- package/codemini-web/dist/assets/python-DcnbpNOV.js +1 -0
- package/codemini-web/dist/assets/qml-DWxWu28U.js +1 -0
- package/codemini-web/dist/assets/qmldir-BBNnU9RJ.js +1 -0
- package/codemini-web/dist/assets/qss-CC0PKRbL.js +1 -0
- package/codemini-web/dist/assets/r-B4lG5syH.js +1 -0
- package/codemini-web/dist/assets/racket-Cbwns2Cq.js +1 -0
- package/codemini-web/dist/assets/raku-CeV6tH_x.js +1 -0
- package/codemini-web/dist/assets/razor-CQPYUgex.js +1 -0
- package/codemini-web/dist/assets/red-CVEaJbMR.js +1 -0
- package/codemini-web/dist/assets/reg-C_WE1pkC.js +1 -0
- package/codemini-web/dist/assets/regexp-da3KYCEG.js +1 -0
- package/codemini-web/dist/assets/rel-CpHQF4b7.js +1 -0
- package/codemini-web/dist/assets/riscv-Co5eiPIZ.js +1 -0
- package/codemini-web/dist/assets/rolldown-runtime-S-ySWqyJ.js +1 -0
- package/codemini-web/dist/assets/ron-CgTit1dG.js +1 -0
- package/codemini-web/dist/assets/rose-pine-BDTwvYHf.js +1 -0
- package/codemini-web/dist/assets/rose-pine-dawn-CAIk_wLV.js +1 -0
- package/codemini-web/dist/assets/rose-pine-moon-C5gdiznP.js +1 -0
- package/codemini-web/dist/assets/rosmsg-C0tpzWlc.js +1 -0
- package/codemini-web/dist/assets/rst-B-OS2pa5.js +1 -0
- package/codemini-web/dist/assets/ruby-BM15fmxz.js +1 -0
- package/codemini-web/dist/assets/rust-BWAfVMY4.js +1 -0
- package/codemini-web/dist/assets/sas-DYNukvU9.js +1 -0
- package/codemini-web/dist/assets/sass-MovLey2R.js +1 -0
- package/codemini-web/dist/assets/scala-C2w7y2mZ.js +1 -0
- package/codemini-web/dist/assets/scheme-Bf85FNnm.js +1 -0
- package/codemini-web/dist/assets/scss-C0BQ8YVM.js +1 -0
- package/codemini-web/dist/assets/sdbl-DoQ_zDzo.js +1 -0
- package/codemini-web/dist/assets/shaderlab-TbUUdmUb.js +1 -0
- package/codemini-web/dist/assets/shellscript-KUJZnuCi.js +1 -0
- package/codemini-web/dist/assets/shellsession-BeWGuVoR.js +1 -0
- package/codemini-web/dist/assets/slack-dark-BnOYKTBJ.js +1 -0
- package/codemini-web/dist/assets/slack-ochin-43udxtUg.js +1 -0
- package/codemini-web/dist/assets/smalltalk-Mlf5-xbr.js +1 -0
- package/codemini-web/dist/assets/snazzy-light-kw-pZEiM.js +1 -0
- package/codemini-web/dist/assets/solarized-dark-BDezFa9V.js +1 -0
- package/codemini-web/dist/assets/solarized-light-CkoenhS2.js +1 -0
- package/codemini-web/dist/assets/solidity-DYHGECBw.js +1 -0
- package/codemini-web/dist/assets/soy-C6D0Ibo9.js +1 -0
- package/codemini-web/dist/assets/sparql-DIFvSn1n.js +1 -0
- package/codemini-web/dist/assets/splunk-DOdklC0I.js +1 -0
- package/codemini-web/dist/assets/sql-CZAMrWdL.js +1 -0
- package/codemini-web/dist/assets/ssh-config-DwwFW7AS.js +1 -0
- package/codemini-web/dist/assets/stata-C5mLa_ER.js +1 -0
- package/codemini-web/dist/assets/stylus-BO6mlOab.js +1 -0
- package/codemini-web/dist/assets/surrealql-DyoUfV6n.js +1 -0
- package/codemini-web/dist/assets/svelte-DJ-0FpL2.js +1 -0
- package/codemini-web/dist/assets/swift-D9A08YU9.js +1 -0
- package/codemini-web/dist/assets/synthwave-84-C69NN2j9.js +1 -0
- package/codemini-web/dist/assets/system-verilog-DjR3sN6w.js +1 -0
- package/codemini-web/dist/assets/systemd-CJWuVSJU.js +1 -0
- package/codemini-web/dist/assets/talonscript-CXqq0wX-.js +1 -0
- package/codemini-web/dist/assets/tasl-GVNf7pB7.js +1 -0
- package/codemini-web/dist/assets/tcl-DNlfRSl5.js +1 -0
- package/codemini-web/dist/assets/templ-7Bvm-rei.js +1 -0
- package/codemini-web/dist/assets/terraform-DUK0FOOj.js +1 -0
- package/codemini-web/dist/assets/tex-ezg8IclB.js +1 -0
- package/codemini-web/dist/assets/tokyo-night-DWTtuXS3.js +1 -0
- package/codemini-web/dist/assets/toml-X5n3zjEH.js +1 -0
- package/codemini-web/dist/assets/ts-tags-BfuR6EQ0.js +1 -0
- package/codemini-web/dist/assets/tsv-Bqs_rchc.js +1 -0
- package/codemini-web/dist/assets/tsx-CfyUE2pW.js +1 -0
- package/codemini-web/dist/assets/turtle-BsUuoeVK.js +1 -0
- package/codemini-web/dist/assets/twig-_uxJ-QmX.js +1 -0
- package/codemini-web/dist/assets/typescript-C6LvTgbf.js +1 -0
- package/codemini-web/dist/assets/typespec-8nkhqWz6.js +1 -0
- package/codemini-web/dist/assets/typst-CPL77SDw.js +1 -0
- package/codemini-web/dist/assets/v-CoJD3IPx.js +1 -0
- package/codemini-web/dist/assets/vala-C42IfotU.js +1 -0
- package/codemini-web/dist/assets/vb-CVMKTK26.js +1 -0
- package/codemini-web/dist/assets/verilog-P63PhzSt.js +1 -0
- package/codemini-web/dist/assets/vesper-BGr95374.js +1 -0
- package/codemini-web/dist/assets/vhdl-2WwUdgX8.js +1 -0
- package/codemini-web/dist/assets/viml-CGPGWJA6.js +1 -0
- package/codemini-web/dist/assets/vitesse-black-cI0k84-I.js +1 -0
- package/codemini-web/dist/assets/vitesse-dark-SouM0FMW.js +1 -0
- package/codemini-web/dist/assets/vitesse-light-WiCy6lDO.js +1 -0
- package/codemini-web/dist/assets/vue-DkOBu49o.js +1 -0
- package/codemini-web/dist/assets/vue-html-Bx2Sgp8M.js +1 -0
- package/codemini-web/dist/assets/vue-vine-veyFk6GJ.js +1 -0
- package/codemini-web/dist/assets/vyper-DP_vqZO9.js +1 -0
- package/codemini-web/dist/assets/wasm-Db7VBw0n.js +1 -0
- package/codemini-web/dist/assets/wasm-DiIFv9DE.js +1 -0
- package/codemini-web/dist/assets/wenyan-ZEcjghA1.js +1 -0
- package/codemini-web/dist/assets/wgsl-CdusuPLe.js +1 -0
- package/codemini-web/dist/assets/wikitext-CBIB6hmW.js +1 -0
- package/codemini-web/dist/assets/wit-ZhUbVeze.js +1 -0
- package/codemini-web/dist/assets/wolfram-HyMOyERF.js +1 -0
- package/codemini-web/dist/assets/xml-BkdunjRC.js +1 -0
- package/codemini-web/dist/assets/xsl-C66i1pDH.js +1 -0
- package/codemini-web/dist/assets/yaml-D_uvhEF7.js +1 -0
- package/codemini-web/dist/assets/zenscript-C6ZuzgrL.js +1 -0
- package/codemini-web/dist/assets/zig-Do2h8XKj.js +1 -0
- package/codemini-web/dist/index.html +21 -0
- package/codemini-web/lib/approval-manager.js +32 -0
- package/codemini-web/lib/runtime-bridge.js +518 -0
- package/codemini-web/server.js +846 -0
- package/deployment.md +5 -5
- package/package.json +6 -1
- package/src/cli.js +12 -1
- package/src/commands/web.js +57 -0
- package/src/core/chat-runtime.js +2 -1
- package/src/core/fff-adapter.js +1 -1
- package/templates/project-requirements/report-shell.html +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-S-ySWqyJ.js";import{t}from"./java-X0I2c5Az.js";var n=e({default:()=>i}),r=Object.freeze(JSON.parse(`{"displayName":"XML","name":"xml","patterns":[{"begin":"(<\\\\?)\\\\s*([-0-9A-Z_a-z]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"}},"end":"(\\\\?>)","name":"meta.tag.preprocessor.xml","patterns":[{"match":" ([-A-Za-z]+)","name":"entity.other.attribute-name.xml"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"begin":"(<!)(DOCTYPE)\\\\s+([:A-Z_a-z][-.0-:A-Z_a-z]*)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.doctype.xml"},"3":{"name":"variable.language.documentroot.xml"}},"end":"\\\\s*(>)","name":"meta.tag.sgml.doctype.xml","patterns":[{"include":"#internalSubset"}]},{"include":"#comments"},{"begin":"(<)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(?=(\\\\s[^>]*)?></\\\\2>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)(</)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"punctuation.definition.tag.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"entity.name.tag.namespace.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"},"7":{"name":"punctuation.definition.tag.xml"}},"name":"meta.tag.no-content.xml","patterns":[{"include":"#tagStuff"}]},{"begin":"(</?)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(/?>)","name":"meta.tag.xml","patterns":[{"include":"#tagStuff"}]},{"include":"#entity"},{"include":"#bare-ampersand"},{"begin":"<%@","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java-props.embedded.xml","patterns":[{"match":"page|include|taglib","name":"keyword.other.page-props.xml"}]},{"begin":"<%[!=]?(?!--)","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"(?!--)%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java.embedded.xml","patterns":[{"include":"source.java"}]},{"begin":"<!\\\\[CDATA\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"]]>","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.unquoted.cdata.xml"}],"repository":{"EntityDecl":{"begin":"(<!)(ENTITY)\\\\s+(%\\\\s+)?([:A-Z_a-z][-.0-:A-Z_a-z]*)(\\\\s+(?:SYSTEM|PUBLIC)\\\\s+)?","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.entity.xml"},"3":{"name":"punctuation.definition.entity.xml"},"4":{"name":"variable.language.entity.xml"},"5":{"name":"keyword.other.entitytype.xml"}},"end":"(>)","patterns":[{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},"bare-ampersand":{"match":"&","name":"invalid.illegal.bad-ampersand.xml"},"comments":{"patterns":[{"begin":"<%--","captures":{"0":{"name":"punctuation.definition.comment.xml"},"end":"--%>","name":"comment.block.xml"}},{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.xml"}},"end":"-->","name":"comment.block.xml","patterns":[{"begin":"--(?!>)","captures":{"0":{"name":"invalid.illegal.bad-comments-or-CDATA.xml"}}}]}]},"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"entity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(&)([:A-Z_a-z][-.0-:A-Z_a-z]*|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.xml"},"internalSubset":{"begin":"(\\\\[)","captures":{"1":{"name":"punctuation.definition.constant.xml"}},"end":"(])","name":"meta.internalsubset.xml","patterns":[{"include":"#EntityDecl"},{"include":"#parameterEntity"},{"include":"#comments"}]},"parameterEntity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(%)([:A-Z_a-z][-.0-:A-Z_a-z]*)(;)","name":"constant.character.parameter-entity.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"tagStuff":{"patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":"(?:^|\\\\s+)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)\\\\s*="},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]}},"scopeName":"text.xml","embeddedLangs":["java"]}`)),i=[...t,r];export{n,i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./xml-BkdunjRC.js";var t=Object.freeze(JSON.parse(`{"displayName":"XSL","name":"xsl","patterns":[{"begin":"(<)(xsl)((:))(template)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)","name":"meta.tag.xml.template","patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":" (?:([-0-9A-Z_a-z]+)((:)))?([-A-Za-z]+)"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"include":"text.xml"}],"repository":{"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml"}},"scopeName":"text.xml.xsl","embeddedLangs":["xml"]}`)),n=[...e,t];export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-S-ySWqyJ.js";var t=e({default:()=>n}),n=[Object.freeze(JSON.parse(`{"displayName":"YAML","fileTypes":["yaml","yml","rviz","reek","clang-format","yaml-tmlanguage","syntax","sublime-syntax"],"firstLineMatch":"^%YAML( ?1.\\\\d+)?","name":"yaml","patterns":[{"include":"#comment"},{"include":"#property"},{"include":"#directive"},{"match":"^---","name":"entity.other.document.begin.yaml"},{"match":"^\\\\.{3}","name":"entity.other.document.end.yaml"},{"include":"#node"}],"repository":{"block-collection":{"patterns":[{"include":"#block-sequence"},{"include":"#block-mapping"}]},"block-mapping":{"patterns":[{"include":"#block-pair"}]},"block-node":{"patterns":[{"include":"#prototype"},{"include":"#block-scalar"},{"include":"#block-collection"},{"include":"#flow-scalar-plain-out"},{"include":"#flow-node"}]},"block-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"1":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=\\\\?)|^ *(:)|(:)","endCaptures":{"1":{"name":"punctuation.separator.key-value.mapping.yaml"},"2":{"name":"invalid.illegal.expected-newline.yaml"}},"name":"meta.block-mapping.yaml","patterns":[{"include":"#block-node"}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S)([^:\\\\s]|:\\\\S|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},{"match":":(?=\\\\s|$)","name":"punctuation.separator.key-value.mapping.yaml"}]},"block-scalar":{"begin":"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)","beginCaptures":{"1":{"name":"keyword.control.flow.block-scalar.literal.yaml"},"2":{"name":"keyword.control.flow.block-scalar.folded.yaml"},"3":{"name":"constant.numeric.indentation-indicator.yaml"},"4":{"name":"storage.modifier.chomping-indicator.yaml"},"5":{"patterns":[{"include":"#comment"},{"match":".+","name":"invalid.illegal.expected-comment-or-newline.yaml"}]}},"end":"^(?=\\\\S)|(?!\\\\G)","patterns":[{"begin":"^( +)(?! )","end":"^(?!\\\\1|\\\\s*$)","name":"string.unquoted.block.yaml"}]},"block-sequence":{"match":"(-)(?!\\\\S)","name":"punctuation.definition.block.sequence.item.yaml"},"comment":{"begin":"(?:^([\\\\t ]*)|[\\\\t ]+)(?=#\\\\p{print}*$)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.yaml"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.yaml"}},"end":"\\\\n","name":"comment.line.number-sign.yaml"}]},"directive":{"begin":"^%","beginCaptures":{"0":{"name":"punctuation.definition.directive.begin.yaml"}},"end":"(?=$|[\\\\t ]+($|#))","name":"meta.directive.yaml","patterns":[{"captures":{"1":{"name":"keyword.other.directive.yaml.yaml"},"2":{"name":"constant.numeric.yaml-version.yaml"}},"match":"\\\\G(YAML)[\\\\t ]+(\\\\d+\\\\.\\\\d+)"},{"captures":{"1":{"name":"keyword.other.directive.tag.yaml"},"2":{"name":"storage.type.tag-handle.yaml"},"3":{"name":"support.type.tag-prefix.yaml"}},"match":"\\\\G(TAG)(?:[\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\t ]+(!(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])*|(?![]!,\\\\[{}])(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+))?)?"},{"captures":{"1":{"name":"support.other.directive.reserved.yaml"},"2":{"name":"string.unquoted.directive-name.yaml"},"3":{"name":"string.unquoted.directive-parameter.yaml"}},"match":"\\\\G(\\\\w+)(?:[\\\\t ]+(\\\\w+)(?:[\\\\t ]+(\\\\w+))?)?"},{"match":"\\\\S+","name":"invalid.illegal.unrecognized.yaml"}]},"flow-alias":{"captures":{"1":{"name":"keyword.control.flow.alias.yaml"},"2":{"name":"punctuation.definition.alias.yaml"},"3":{"name":"variable.other.alias.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"((\\\\*))([^],/\\\\[{}\\\\s]+)([^],}\\\\s]\\\\S*)?"},"flow-collection":{"patterns":[{"include":"#flow-sequence"},{"include":"#flow-mapping"}]},"flow-mapping":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.mapping.begin.yaml"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.mapping.end.yaml"}},"name":"meta.flow-mapping.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.mapping.yaml"},{"include":"#flow-pair"}]},"flow-node":{"patterns":[{"include":"#prototype"},{"include":"#flow-alias"},{"include":"#flow-collection"},{"include":"#flow-scalar"}]},"flow-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.explicit.yaml","patterns":[{"include":"#prototype"},{"include":"#flow-pair"},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","beginCaptures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","patterns":[{"include":"#flow-value"}]}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s])([^],:\\\\[{}\\\\s]|:[^],\\\\[{}\\\\s]|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"meta.flow-pair.key.yaml","patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","captures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.yaml","patterns":[{"include":"#flow-value"}]}]},"flow-scalar":{"patterns":[{"include":"#flow-scalar-double-quoted"},{"include":"#flow-scalar-single-quoted"},{"include":"#flow-scalar-plain-in"}]},"flow-scalar-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.double.yaml","patterns":[{"match":"\\\\\\\\([ \\"/0LN\\\\\\\\_abefnprtv]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})","name":"constant.character.escape.yaml"},{"match":"\\\\\\\\\\\\n","name":"constant.character.escape.double-quoted.newline.yaml"}]},"flow-scalar-plain-in":{"patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},"flow-scalar-plain-in-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])"}]},"flow-scalar-plain-out":{"patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},"flow-scalar-plain-out-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))"}]},"flow-scalar-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"'(?!')","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.single.yaml","patterns":[{"match":"''","name":"constant.character.escape.single-quoted.yaml"}]},"flow-sequence":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.sequence.begin.yaml"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.sequence.end.yaml"}},"name":"meta.flow-sequence.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.sequence.yaml"},{"include":"#flow-pair"},{"include":"#flow-node"}]},"flow-value":{"patterns":[{"begin":"\\\\G(?![],}])","end":"(?=[],}])","name":"meta.flow-pair.value.yaml","patterns":[{"include":"#flow-node"}]}]},"node":{"patterns":[{"include":"#block-node"}]},"property":{"begin":"(?=[!\\\\&])","end":"(?!\\\\G)","name":"meta.property.yaml","patterns":[{"captures":{"1":{"name":"keyword.control.property.anchor.yaml"},"2":{"name":"punctuation.definition.anchor.yaml"},"3":{"name":"entity.name.type.anchor.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"\\\\G((&))([^],/\\\\[{}\\\\s]+)(\\\\S+)?"},{"match":"\\\\G!(?:<(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\h{2}|[#$\\\\&-+\\\\--;=?-Z_a-z~])+|)(?=[\\\\t ]|$)","name":"storage.type.tag-handle.yaml"},{"match":"\\\\S+","name":"invalid.illegal.tag-handle.yaml"}]},"prototype":{"patterns":[{"include":"#comment"},{"include":"#property"}]}},"scopeName":"source.yaml","aliases":["yml"]}`))];export{t as n,n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=[Object.freeze(JSON.parse(`{"displayName":"ZenScript","fileTypes":["zs"],"name":"zenscript","patterns":[{"match":"\\\\b((0([Xx])\\\\h*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))(([Ee])([-+])?[0-9]+)?)([DFLUdflu]|UL|ul)?\\\\b","name":"constant.numeric.zenscript"},{"match":"\\\\b-?(0[BOXbox])(0|[1-9A-Fa-f][_\\\\h]*)[A-Z_a-z]*\\\\b","name":"constant.numeric.zenscript"},{"include":"#code"},{"match":"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*)(?=\\\\[)","name":"storage.type.object.array.zenscript"}],"repository":{"brackets":{"patterns":[{"captures":{"1":{"name":"keyword.control.zenscript"},"2":{"name":"keyword.other.zenscript"},"3":{"name":"keyword.control.zenscript"},"4":{"name":"variable.other.zenscript"},"5":{"name":"keyword.control.zenscript"},"6":{"name":"constant.numeric.zenscript"},"7":{"name":"keyword.control.zenscript"}},"match":"(<)\\\\b(.*?)(:(.*?(:(\\\\*|\\\\d+)?)?)?)(>)","name":"keyword.other.zenscript"}]},"class":{"captures":{"1":{"name":"storage.type.zenscript"},"2":{"name":"entity.name.type.class.zenscript"}},"match":"(zenClass)\\\\s+(\\\\w+)","name":"meta.class.zenscript"},"code":{"patterns":[{"include":"#class"},{"include":"#functions"},{"include":"#dots"},{"include":"#quotes"},{"include":"#brackets"},{"include":"#comments"},{"include":"#var"},{"include":"#keywords"},{"include":"#constants"},{"include":"#operators"}]},"comments":{"patterns":[{"match":"//[^\\\\n]*","name":"comment.line.double=slash"},{"begin":"/\\\\*","beginCaptures":{"0":{"name":"comment.block"}},"end":"\\\\*/","endCaptures":{"0":{"name":"comment.block"}},"name":"comment.block"}]},"dots":{"captures":{"1":{"name":"storage.type.zenscript"},"2":{"name":"keyword.control.zenscript"},"5":{"name":"keyword.control.zenscript"}},"match":"\\\\b(\\\\w+)(\\\\.)(\\\\w+)((\\\\.)(\\\\w+))*","name":"plain.text.zenscript"},"functions":{"captures":{"0":{"name":"storage.type.function.zenscript"},"1":{"name":"entity.name.function.zenscript"}},"match":"function\\\\s+([$A-Z_a-z][$\\\\w]*)\\\\s*(?=\\\\()","name":"meta.function.zenscript"},"keywords":{"patterns":[{"match":"\\\\b(instanceof|get|implements|set|import|function|override|const|if|else|do|while|for|throw|panic|lock|try|catch|finally|return|break|continue|switch|case|default|in|is|as|match|throws|super|new)\\\\b","name":"keyword.control.zenscript"},{"match":"\\\\b(zenClass|zenConstructor|alias|class|interface|enum|struct|expand|variant|set|void|bool|byte|sbyte|short|ushort|int|uint|long|ulong|usize|float|double|char|string)\\\\b","name":"storage.type.zenscript"},{"match":"\\\\b(variant|abstract|final|private|public|export|internal|static|protected|implicit|virtual|extern|immutable)\\\\b","name":"storage.modifier.zenscript"},{"match":"\\\\b(Native|Precondition)\\\\b","name":"entity.other.attribute-name"},{"match":"\\\\b(null|true|false)\\\\b","name":"constant.language"}]},"operators":{"patterns":[{"match":"\\\\b(\\\\.\\\\.??|\\\\.\\\\.\\\\.|[+,]|\\\\+=|\\\\+\\\\+|-=??|--|~=??|\\\\*=??|/=??|%=??|\\\\|=??|\\\\|\\\\||&=??|&&|\\\\^=??|\\\\?\\\\.??|\\\\?\\\\?|<=??|<<=??|>=??|>>=??|>>>=??|=>?|===??|!=??|!==|[$\`])\\\\b","name":"keyword.control"},{"match":"\\\\b([:;])\\\\b","name":"keyword.control"}]},"quotes":{"patterns":[{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.zenscript"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.zenscript"}},"name":"string.quoted.double.zenscript","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.zenscript"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.zenscript"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.zenscript"}},"name":"string.quoted.single.zenscript","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.zenscript"}]}]},"var":{"match":"\\\\b(va[lr])\\\\b","name":"storage.type"}},"scopeName":"source.zenscript"}`))];export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=[Object.freeze(JSON.parse(`{"displayName":"Zig","fileTypes":["zig","zon"],"name":"zig","patterns":[{"include":"#comments"},{"include":"#strings"},{"include":"#keywords"},{"include":"#operators"},{"include":"#punctuation"},{"include":"#numbers"},{"include":"#support"},{"include":"#variables"}],"repository":{"commentContents":{"patterns":[{"match":"\\\\b(TODO|FIXME|XXX|NOTE)\\\\b:?","name":"keyword.todo.zig"}]},"comments":{"patterns":[{"begin":"//[!/](?=[^/])","end":"$","name":"comment.line.documentation.zig","patterns":[{"include":"#commentContents"}]},{"begin":"//","end":"$","name":"comment.line.double-slash.zig","patterns":[{"include":"#commentContents"}]}]},"keywords":{"patterns":[{"match":"\\\\binline\\\\b(?!\\\\s*\\\\bfn\\\\b)","name":"keyword.control.repeat.zig"},{"match":"\\\\b(while|for)\\\\b","name":"keyword.control.repeat.zig"},{"match":"\\\\b(extern|packed|export|pub|noalias|inline|comptime|volatile|align|linksection|threadlocal|allowzero|noinline|callconv)\\\\b","name":"keyword.storage.zig"},{"match":"\\\\b(struct|enum|union|opaque)\\\\b","name":"keyword.structure.zig"},{"match":"\\\\b(asm|unreachable)\\\\b","name":"keyword.statement.zig"},{"match":"\\\\b(break|return|continue|defer|errdefer)\\\\b","name":"keyword.control.flow.zig"},{"match":"\\\\b(resume|suspend|nosuspend)\\\\b","name":"keyword.control.async.zig"},{"match":"\\\\b(try|catch)\\\\b","name":"keyword.control.trycatch.zig"},{"match":"\\\\b(if|else|switch|orelse)\\\\b","name":"keyword.control.conditional.zig"},{"match":"\\\\b(null|undefined)\\\\b","name":"keyword.constant.default.zig"},{"match":"\\\\b(true|false)\\\\b","name":"keyword.constant.bool.zig"},{"match":"\\\\b(test|and|or)\\\\b","name":"keyword.default.zig"},{"match":"\\\\b(bool|void|noreturn|type|error|anyerror|anyframe|anytype|anyopaque)\\\\b","name":"keyword.type.zig"},{"match":"\\\\b(f16|f32|f64|f80|f128|u\\\\d+|i\\\\d+|isize|usize|comptime_int|comptime_float)\\\\b","name":"keyword.type.integer.zig"},{"match":"\\\\b(c_(?:char|short|ushort|int|uint|long|ulong|longlong|ulonglong|longdouble))\\\\b","name":"keyword.type.c.zig"}]},"numbers":{"patterns":[{"match":"\\\\b0x\\\\h[_\\\\h]*(\\\\.\\\\h[_\\\\h]*)?([Pp][-+]?[_\\\\h]+)?\\\\b","name":"constant.numeric.hexfloat.zig"},{"match":"\\\\b[0-9][0-9_]*(\\\\.[0-9][0-9_]*)?([Ee][-+]?[0-9_]+)?\\\\b","name":"constant.numeric.float.zig"},{"match":"\\\\b[0-9][0-9_]*\\\\b","name":"constant.numeric.decimal.zig"},{"match":"\\\\b0x[_\\\\h]+\\\\b","name":"constant.numeric.hexadecimal.zig"},{"match":"\\\\b0o[0-7_]+\\\\b","name":"constant.numeric.octal.zig"},{"match":"\\\\b0b[01_]+\\\\b","name":"constant.numeric.binary.zig"},{"match":"\\\\b[0-9](([EPep][-+])|[0-9A-Z_a-z])*(\\\\.(([EPep][-+])|[0-9A-Z_a-z])*)?([EPep][-+])?[0-9A-Z_a-z]*\\\\b","name":"constant.numeric.invalid.zig"}]},"operators":{"patterns":[{"match":"(?<=\\\\[)\\\\*c(?=])","name":"keyword.operator.c-pointer.zig"},{"match":"\\\\b((and|or))\\\\b|(==|!=|<=|>=|[<>])","name":"keyword.operator.comparison.zig"},{"match":"(-%?|\\\\+%?|\\\\*%?|[%/])=?","name":"keyword.operator.arithmetic.zig"},{"match":"(<<%?|>>|[!\\\\&^|~])=?","name":"keyword.operator.bitwise.zig"},{"match":"(==|\\\\+\\\\+|\\\\*\\\\*|->)","name":"keyword.operator.special.zig"},{"match":"=","name":"keyword.operator.assignment.zig"},{"match":"\\\\?","name":"keyword.operator.question.zig"}]},"punctuation":{"patterns":[{"match":"\\\\.","name":"punctuation.accessor.zig"},{"match":",","name":"punctuation.comma.zig"},{"match":":","name":"punctuation.separator.key-value.zig"},{"match":";","name":"punctuation.terminator.statement.zig"}]},"stringcontent":{"patterns":[{"match":"\\\\\\\\([\\"'\\\\\\\\nrt]|(x\\\\h{2})|(u\\\\{\\\\h+}))","name":"constant.character.escape.zig"},{"match":"\\\\\\\\.","name":"invalid.illegal.unrecognized-string-escape.zig"}]},"strings":{"patterns":[{"begin":"\\"","end":"\\"","name":"string.quoted.double.zig","patterns":[{"include":"#stringcontent"}]},{"begin":"\\\\\\\\\\\\\\\\","end":"$","name":"string.multiline.zig"},{"match":"'([^'\\\\\\\\]|\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.))'","name":"string.quoted.single.zig"}]},"support":{"patterns":[{"match":"@[A-Z_a-z][0-9A-Z_a-z]*","name":"support.function.builtin.zig"}]},"variables":{"patterns":[{"name":"meta.function.declaration.zig","patterns":[{"captures":{"1":{"name":"storage.type.function.zig"},"2":{"name":"entity.name.type.zig"}},"match":"\\\\b(fn)\\\\s+([A-Z][0-9A-Za-z]*)\\\\b"},{"captures":{"1":{"name":"storage.type.function.zig"},"2":{"name":"entity.name.function.zig"}},"match":"\\\\b(fn)\\\\s+([A-Z_a-z][0-9A-Z_a-z]*)\\\\b"},{"begin":"\\\\b(fn)\\\\s+@\\"","beginCaptures":{"1":{"name":"storage.type.function.zig"}},"end":"\\"","name":"entity.name.function.string.zig","patterns":[{"include":"#stringcontent"}]},{"match":"\\\\b(const|var|fn)\\\\b","name":"keyword.default.zig"}]},{"name":"meta.function.call.zig","patterns":[{"match":"([A-Z][0-9A-Za-z]*)(?=\\\\s*\\\\()","name":"entity.name.type.zig"},{"match":"([A-Z_a-z][0-9A-Z_a-z]*)(?=\\\\s*\\\\()","name":"entity.name.function.zig"}]},{"name":"meta.variable.zig","patterns":[{"match":"\\\\b[A-Z_a-z][0-9A-Z_a-z]*\\\\b","name":"variable.zig"},{"begin":"@\\"","end":"\\"","name":"variable.string.zig","patterns":[{"include":"#stringcontent"}]}]}]}},"scopeName":"source.zig"}`))];export{e as default};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>CodeMini</title>
|
|
7
|
+
<script>
|
|
8
|
+
(() => {
|
|
9
|
+
const stored = localStorage.getItem('codemini-theme');
|
|
10
|
+
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
11
|
+
document.documentElement.dataset.theme = stored || (prefersDark ? 'dark' : 'light');
|
|
12
|
+
})();
|
|
13
|
+
</script>
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-BZ01DHrh.js"></script>
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-S-ySWqyJ.js">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Dq1mwNaQ.css">
|
|
17
|
+
</head>
|
|
18
|
+
<body class="font-sans antialiased">
|
|
19
|
+
<div id="root"></div>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const APPROVAL_TIMEOUT_MS = 5 * 60 * 1000;
|
|
2
|
+
|
|
3
|
+
export class ApprovalManager {
|
|
4
|
+
#pending = new Map();
|
|
5
|
+
|
|
6
|
+
create(id) {
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
const timer = setTimeout(() => {
|
|
9
|
+
this.#pending.delete(id);
|
|
10
|
+
resolve({ approved: false });
|
|
11
|
+
}, APPROVAL_TIMEOUT_MS);
|
|
12
|
+
this.#pending.set(id, { resolve, timer });
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
resolve(id, approved) {
|
|
17
|
+
const entry = this.#pending.get(id);
|
|
18
|
+
if (!entry) return false;
|
|
19
|
+
clearTimeout(entry.timer);
|
|
20
|
+
this.#pending.delete(id);
|
|
21
|
+
entry.resolve({ approved });
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
has(id) {
|
|
26
|
+
return this.#pending.has(id);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get pendingCount() {
|
|
30
|
+
return this.#pending.size;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
import { ApprovalManager } from './approval-manager.js';
|
|
2
|
+
import { summarizeToolResult } from '../../src/core/tool-result-store.js';
|
|
3
|
+
import fs from 'node:fs/promises';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { getSessionsDir } from '../../src/core/paths.js';
|
|
6
|
+
|
|
7
|
+
function webTranscriptPath(sessionId) {
|
|
8
|
+
return path.join(getSessionsDir(), 'web-ui-transcripts', `${String(sessionId || 'unknown')}.json`);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function parseToolContent(content) {
|
|
12
|
+
if (typeof content !== 'string') return content;
|
|
13
|
+
const text = content.trim();
|
|
14
|
+
if (!text) return '';
|
|
15
|
+
try {
|
|
16
|
+
return JSON.parse(text);
|
|
17
|
+
} catch {
|
|
18
|
+
return text;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function summarizeHistoricalToolMessage(message) {
|
|
23
|
+
const explicit = String(message?.tool_summary || '').trim();
|
|
24
|
+
if (explicit) return explicit;
|
|
25
|
+
return summarizeToolResult(parseToolContent(message?.content || ''));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function stripPlanProgressText(text) {
|
|
29
|
+
return String(text || '').replace(/(?:^|\n)\[plan\]\s+Step\s+\d+\/\d+\s+->[^\n]*\n?/g, '');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function addToolToSegments(segments, toolCard) {
|
|
33
|
+
if (!Array.isArray(segments) || segments.length === 0) return [{ type: 'tools', cards: [toolCard] }];
|
|
34
|
+
const last = segments[segments.length - 1];
|
|
35
|
+
if (last.type === 'tools') return [...segments.slice(0, -1), { ...last, cards: [...last.cards, toolCard] }];
|
|
36
|
+
return [...segments, { type: 'tools', cards: [toolCard] }];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function updateToolInSegments(segments, toolId, updater) {
|
|
40
|
+
return (Array.isArray(segments) ? segments : []).map((seg) => {
|
|
41
|
+
if (seg.type !== 'tools') return seg;
|
|
42
|
+
const idx = seg.cards.findIndex((card) => card.id === toolId);
|
|
43
|
+
if (idx === -1) return seg;
|
|
44
|
+
const cards = [...seg.cards];
|
|
45
|
+
cards[idx] = updater(cards[idx]);
|
|
46
|
+
return { ...seg, cards };
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function appendTextSegment(segments, delta, isStreaming = true) {
|
|
51
|
+
const value = String(delta || '');
|
|
52
|
+
if (!value) return segments || [];
|
|
53
|
+
const current = Array.isArray(segments) ? segments : [];
|
|
54
|
+
const last = current[current.length - 1];
|
|
55
|
+
if (last?.type === 'text') {
|
|
56
|
+
return [
|
|
57
|
+
...current.slice(0, -1),
|
|
58
|
+
{ ...last, text: `${last.text || ''}${value}`, isStreaming }
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
return [...current, { type: 'text', text: value, isStreaming }];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function createPlanStepUiMessage(event) {
|
|
65
|
+
return {
|
|
66
|
+
id: `plan-step-${event.step}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
67
|
+
role: event.role || 'general',
|
|
68
|
+
text: '',
|
|
69
|
+
segments: [],
|
|
70
|
+
skillBadges: [],
|
|
71
|
+
fileChanges: [],
|
|
72
|
+
timestamp: new Date().toISOString(),
|
|
73
|
+
planStep: {
|
|
74
|
+
step: event.step,
|
|
75
|
+
total: event.total,
|
|
76
|
+
role: event.role || 'general',
|
|
77
|
+
title: event.title || '',
|
|
78
|
+
status: 'running',
|
|
79
|
+
summary: ''
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export class RuntimeBridge {
|
|
85
|
+
#runtime = null;
|
|
86
|
+
#clients = new Set();
|
|
87
|
+
#approval = new ApprovalManager();
|
|
88
|
+
#busy = false;
|
|
89
|
+
#startupConsumed = false;
|
|
90
|
+
#uiMessages = [];
|
|
91
|
+
#uiActiveMsgId = null;
|
|
92
|
+
#uiPlanStepIds = new Map();
|
|
93
|
+
#uiTranscriptSessionId = '';
|
|
94
|
+
#uiPersisting = false;
|
|
95
|
+
#uiPersistQueued = false;
|
|
96
|
+
|
|
97
|
+
constructor(runtime) {
|
|
98
|
+
this.#runtime = runtime;
|
|
99
|
+
this.#installApprovalHandler();
|
|
100
|
+
this.#uiTranscriptSessionId = this.getSessionId();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#installApprovalHandler() {
|
|
104
|
+
this.#runtime.setRequestToolApproval((request) => {
|
|
105
|
+
const { id, name, displayName, arguments: args, approvalDetails } = request;
|
|
106
|
+
this.#broadcast({ type: 'approval:request', id, toolName: name, displayName, arguments: args, details: approvalDetails });
|
|
107
|
+
return this.#approval.create(id);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
#broadcast(event) {
|
|
112
|
+
const data = `data: ${JSON.stringify(event)}\n\n`;
|
|
113
|
+
for (const res of this.#clients) {
|
|
114
|
+
try { res.write(data); } catch {}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async #writeUiTranscriptSnapshot() {
|
|
119
|
+
const sessionId = this.getSessionId();
|
|
120
|
+
if (!sessionId) return;
|
|
121
|
+
try {
|
|
122
|
+
const filePath = webTranscriptPath(sessionId);
|
|
123
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
124
|
+
await fs.writeFile(filePath, JSON.stringify({
|
|
125
|
+
sessionId,
|
|
126
|
+
updatedAt: new Date().toISOString(),
|
|
127
|
+
messages: this.#uiMessages
|
|
128
|
+
}), 'utf8');
|
|
129
|
+
} catch {}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
#persistUiTranscriptSoon() {
|
|
133
|
+
this.#uiPersistQueued = true;
|
|
134
|
+
if (this.#uiPersisting) return;
|
|
135
|
+
this.#uiPersisting = true;
|
|
136
|
+
(async () => {
|
|
137
|
+
while (this.#uiPersistQueued) {
|
|
138
|
+
this.#uiPersistQueued = false;
|
|
139
|
+
await this.#writeUiTranscriptSnapshot();
|
|
140
|
+
}
|
|
141
|
+
this.#uiPersisting = false;
|
|
142
|
+
})();
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
#resetUiTranscriptIfSessionChanged() {
|
|
146
|
+
const sessionId = this.getSessionId();
|
|
147
|
+
if (sessionId === this.#uiTranscriptSessionId) return;
|
|
148
|
+
this.#uiTranscriptSessionId = sessionId;
|
|
149
|
+
this.#uiMessages = [];
|
|
150
|
+
this.#uiActiveMsgId = null;
|
|
151
|
+
this.#uiPlanStepIds = new Map();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
#addUiMessage(message) {
|
|
155
|
+
const next = {
|
|
156
|
+
...message,
|
|
157
|
+
id: message.id || `ui-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
158
|
+
segments: Array.isArray(message.segments)
|
|
159
|
+
? message.segments
|
|
160
|
+
: (message.text ? [{ type: 'text', text: message.text, isStreaming: false }] : []),
|
|
161
|
+
skillBadges: Array.isArray(message.skillBadges) ? message.skillBadges : [],
|
|
162
|
+
fileChanges: Array.isArray(message.fileChanges) ? message.fileChanges : []
|
|
163
|
+
};
|
|
164
|
+
this.#uiMessages = [...this.#uiMessages, next];
|
|
165
|
+
this.#persistUiTranscriptSoon();
|
|
166
|
+
return next.id;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
#updateUiMessage(id, mapper) {
|
|
170
|
+
if (!id) return;
|
|
171
|
+
this.#uiMessages = this.#uiMessages.map((message) => message.id === id ? mapper(message) : message);
|
|
172
|
+
this.#persistUiTranscriptSoon();
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
#removeUiTransientWaiting() {
|
|
176
|
+
this.#uiMessages = this.#uiMessages.filter((message) => message.transientKey !== 'waiting-response');
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
#recordUiEvent(event) {
|
|
180
|
+
if (!event?.type) return;
|
|
181
|
+
this.#resetUiTranscriptIfSessionChanged();
|
|
182
|
+
const activeId = this.#uiActiveMsgId;
|
|
183
|
+
|
|
184
|
+
switch (event.type) {
|
|
185
|
+
case 'assistant:start': {
|
|
186
|
+
this.#removeUiTransientWaiting();
|
|
187
|
+
if (!activeId) {
|
|
188
|
+
this.#uiActiveMsgId = this.#addUiMessage({
|
|
189
|
+
role: 'general',
|
|
190
|
+
text: '',
|
|
191
|
+
timestamp: new Date().toISOString()
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
case 'assistant:delta': {
|
|
197
|
+
const delta = stripPlanProgressText(event.text);
|
|
198
|
+
if (this.#uiActiveMsgId && delta) {
|
|
199
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
200
|
+
...message,
|
|
201
|
+
segments: appendTextSegment(message.segments, delta, true)
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case 'assistant:response': {
|
|
207
|
+
if (this.#uiActiveMsgId && event.text) {
|
|
208
|
+
const text = stripPlanProgressText(event.text);
|
|
209
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
210
|
+
...message,
|
|
211
|
+
segments: text ? [{ type: 'text', text, isStreaming: false }] : message.segments
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
case 'tool:start': {
|
|
217
|
+
if (this.#uiActiveMsgId) {
|
|
218
|
+
const toolCard = { id: event.id, name: event.name, arguments: event.arguments, status: 'running', durationMs: null, summary: '', result: '' };
|
|
219
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
220
|
+
...message,
|
|
221
|
+
segments: addToolToSegments(message.segments, toolCard)
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
case 'tool:end': {
|
|
227
|
+
if (this.#uiActiveMsgId) {
|
|
228
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
229
|
+
...message,
|
|
230
|
+
segments: updateToolInSegments(message.segments, event.id, (card) => ({
|
|
231
|
+
...card,
|
|
232
|
+
status: 'done',
|
|
233
|
+
durationMs: event.durationMs,
|
|
234
|
+
summary: event.summary || card.summary
|
|
235
|
+
}))
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
case 'tool:result': {
|
|
241
|
+
if (this.#uiActiveMsgId) {
|
|
242
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
243
|
+
...message,
|
|
244
|
+
segments: updateToolInSegments(message.segments, event.id, (card) => ({ ...card, result: event.content || '' }))
|
|
245
|
+
}));
|
|
246
|
+
}
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
case 'tool:error': {
|
|
250
|
+
if (this.#uiActiveMsgId) {
|
|
251
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
252
|
+
...message,
|
|
253
|
+
segments: updateToolInSegments(message.segments, event.id, (card) => ({
|
|
254
|
+
...card,
|
|
255
|
+
status: 'error',
|
|
256
|
+
durationMs: event.durationMs,
|
|
257
|
+
summary: event.summary || card.summary
|
|
258
|
+
}))
|
|
259
|
+
}));
|
|
260
|
+
}
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
case 'tool:blocked': {
|
|
264
|
+
if (this.#uiActiveMsgId) {
|
|
265
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
266
|
+
...message,
|
|
267
|
+
segments: updateToolInSegments(message.segments, event.id, (card) => ({
|
|
268
|
+
...card,
|
|
269
|
+
status: 'blocked',
|
|
270
|
+
summary: card.summary || 'Tool blocked'
|
|
271
|
+
}))
|
|
272
|
+
}));
|
|
273
|
+
}
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
case 'plan:steps': {
|
|
277
|
+
if (this.#uiActiveMsgId) {
|
|
278
|
+
this.#uiMessages = this.#uiMessages.filter((message) => {
|
|
279
|
+
if (message.id !== this.#uiActiveMsgId) return true;
|
|
280
|
+
return message.planStep || (Array.isArray(message.segments) && message.segments.length > 0);
|
|
281
|
+
});
|
|
282
|
+
this.#uiActiveMsgId = null;
|
|
283
|
+
this.#persistUiTranscriptSoon();
|
|
284
|
+
}
|
|
285
|
+
this.#uiPlanStepIds = new Map();
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
case 'plan:step_start': {
|
|
289
|
+
const key = String(event.step);
|
|
290
|
+
let msgId = this.#uiPlanStepIds.get(key);
|
|
291
|
+
if (!msgId) {
|
|
292
|
+
const message = createPlanStepUiMessage(event);
|
|
293
|
+
msgId = message.id;
|
|
294
|
+
this.#uiPlanStepIds.set(key, msgId);
|
|
295
|
+
this.#uiMessages = [...this.#uiMessages.filter((message) => message.transientKey !== 'waiting-response'), message];
|
|
296
|
+
this.#persistUiTranscriptSoon();
|
|
297
|
+
} else {
|
|
298
|
+
this.#updateUiMessage(msgId, (message) => ({
|
|
299
|
+
...message,
|
|
300
|
+
planStep: { ...(message.planStep || {}), status: 'running' }
|
|
301
|
+
}));
|
|
302
|
+
}
|
|
303
|
+
this.#uiActiveMsgId = msgId;
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
case 'plan:step_done': {
|
|
307
|
+
const msgId = this.#uiPlanStepIds.get(String(event.step));
|
|
308
|
+
if (msgId) {
|
|
309
|
+
this.#updateUiMessage(msgId, (message) => ({
|
|
310
|
+
...message,
|
|
311
|
+
segments: message.segments.map((seg) => seg.type === 'text' ? { ...seg, isStreaming: false } : seg),
|
|
312
|
+
planStep: {
|
|
313
|
+
...(message.planStep || {}),
|
|
314
|
+
status: event.status || 'done',
|
|
315
|
+
summary: event.summary || ''
|
|
316
|
+
}
|
|
317
|
+
}));
|
|
318
|
+
}
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
default:
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
addClient(res) {
|
|
327
|
+
res.writeHead(200, {
|
|
328
|
+
'Content-Type': 'text/event-stream',
|
|
329
|
+
'Cache-Control': 'no-cache',
|
|
330
|
+
Connection: 'keep-alive',
|
|
331
|
+
'X-Accel-Buffering': 'no'
|
|
332
|
+
});
|
|
333
|
+
res.write(`data: ${JSON.stringify({ type: 'connected' })}\n\n`);
|
|
334
|
+
this.#clients.add(res);
|
|
335
|
+
res.on('close', () => this.#clients.delete(res));
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
async handleStartupEvents() {
|
|
339
|
+
if (this.#startupConsumed) return [];
|
|
340
|
+
this.#startupConsumed = true;
|
|
341
|
+
return this.#runtime.consumeStartupEvents();
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
handleSubmit(line, options = {}) {
|
|
345
|
+
if (this.#busy) return { error: true, message: 'A request is already in progress' };
|
|
346
|
+
this.#resetUiTranscriptIfSessionChanged();
|
|
347
|
+
const trimmed = String(line || '').trim();
|
|
348
|
+
const lower = trimmed.toLowerCase();
|
|
349
|
+
const planControl = ['/yes', '/plan approve', '/no', '/reject'].includes(lower) || lower.startsWith('/edit ');
|
|
350
|
+
if (!options?.readOnlyCodeWiki && trimmed && !planControl) {
|
|
351
|
+
this.#addUiMessage({
|
|
352
|
+
role: 'you',
|
|
353
|
+
text: line,
|
|
354
|
+
timestamp: new Date().toISOString()
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
this.#busy = true;
|
|
358
|
+
this.#runtime.submit(line, (event) => {
|
|
359
|
+
this.#recordUiEvent(event);
|
|
360
|
+
this.#broadcast(event);
|
|
361
|
+
}, options).then((result) => {
|
|
362
|
+
if (this.#uiActiveMsgId) {
|
|
363
|
+
this.#updateUiMessage(this.#uiActiveMsgId, (message) => ({
|
|
364
|
+
...message,
|
|
365
|
+
segments: message.segments.map((seg) => seg.type === 'text' ? { ...seg, isStreaming: false } : seg)
|
|
366
|
+
}));
|
|
367
|
+
}
|
|
368
|
+
this.#uiActiveMsgId = null;
|
|
369
|
+
this.#uiPlanStepIds = new Map();
|
|
370
|
+
this.#broadcast({ type: 'submit:done', result: { type: result.type, aborted: result.aborted, text: result.text } });
|
|
371
|
+
}).catch((err) => {
|
|
372
|
+
this.#addUiMessage({
|
|
373
|
+
role: 'error',
|
|
374
|
+
text: `Failed: ${err.message}`,
|
|
375
|
+
timestamp: new Date().toISOString()
|
|
376
|
+
});
|
|
377
|
+
this.#broadcast({ type: 'submit:done', result: { type: 'error', text: err.message } });
|
|
378
|
+
}).finally(() => {
|
|
379
|
+
this.#busy = false;
|
|
380
|
+
});
|
|
381
|
+
return { accepted: true };
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
async handleCodeWikiAsk(line, onEvent = null) {
|
|
385
|
+
if (this.#busy) return { error: true, message: 'A request is already in progress' };
|
|
386
|
+
this.#busy = true;
|
|
387
|
+
const emit = (event) => {
|
|
388
|
+
if (typeof onEvent === 'function' && event?.type) onEvent(event);
|
|
389
|
+
};
|
|
390
|
+
try {
|
|
391
|
+
const result = await this.#runtime.submit(line, emit, { readOnlyCodeWiki: true });
|
|
392
|
+
const payload = {
|
|
393
|
+
ok: true,
|
|
394
|
+
type: result?.type || 'assistant',
|
|
395
|
+
text: result?.text || '',
|
|
396
|
+
aborted: !!result?.aborted
|
|
397
|
+
};
|
|
398
|
+
emit({ type: 'codewiki:done', result: payload });
|
|
399
|
+
return payload;
|
|
400
|
+
} catch (err) {
|
|
401
|
+
const payload = { error: true, message: err?.message || 'Request failed' };
|
|
402
|
+
emit({ type: 'codewiki:error', message: payload.message });
|
|
403
|
+
return payload;
|
|
404
|
+
} finally {
|
|
405
|
+
this.#busy = false;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
isBusy() {
|
|
410
|
+
return this.#busy;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
handleAbort() {
|
|
414
|
+
return this.#runtime.abort();
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
async setExecutionMode(mode) {
|
|
418
|
+
if (this.#busy) return false;
|
|
419
|
+
const ok = await this.#runtime.setExecutionMode(mode);
|
|
420
|
+
if (ok) this.#broadcast({ type: 'mode:changed', mode, ...this.getState() });
|
|
421
|
+
return ok;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
handleApproval(id, approved) {
|
|
425
|
+
return this.#approval.resolve(id, approved);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
getState() {
|
|
429
|
+
const state = this.#runtime.getRuntimeState();
|
|
430
|
+
return {
|
|
431
|
+
...state,
|
|
432
|
+
busy: this.#busy,
|
|
433
|
+
requestInFlight: this.#busy,
|
|
434
|
+
pendingPlanApproval: this.#busy ? null : state.pendingPlanApproval
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
getSessionMessages() {
|
|
439
|
+
const messages = this.#runtime.getSessionMessages();
|
|
440
|
+
if (!Array.isArray(messages)) return [];
|
|
441
|
+
return messages
|
|
442
|
+
.filter(m => m.role !== 'system')
|
|
443
|
+
.map(m => ({
|
|
444
|
+
role: m.role,
|
|
445
|
+
content: typeof m.content === 'string' ? m.content : (Array.isArray(m.content) ? m.content.map(c => c.text || '').join('') : ''),
|
|
446
|
+
toolCalls: m.tool_calls || [],
|
|
447
|
+
toolCallId: m.tool_call_id || null,
|
|
448
|
+
toolSummary: m.role === 'tool' ? summarizeHistoricalToolMessage(m) : null,
|
|
449
|
+
toolDurationMs: Number.isFinite(Number(m.tool_duration_ms)) ? Number(m.tool_duration_ms) : null,
|
|
450
|
+
toolStatus: m.tool_status || null,
|
|
451
|
+
planTranscript: Array.isArray(m.plan_transcript) ? m.plan_transcript : null,
|
|
452
|
+
at: m.at || null
|
|
453
|
+
}));
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
async getUiMessages() {
|
|
457
|
+
this.#resetUiTranscriptIfSessionChanged();
|
|
458
|
+
if (this.#uiMessages.length > 0) return this.#uiMessages;
|
|
459
|
+
const sessionId = this.getSessionId();
|
|
460
|
+
if (!sessionId) return [];
|
|
461
|
+
try {
|
|
462
|
+
const raw = await fs.readFile(webTranscriptPath(sessionId), 'utf8');
|
|
463
|
+
const parsed = JSON.parse(raw);
|
|
464
|
+
return Array.isArray(parsed?.messages) ? parsed.messages : [];
|
|
465
|
+
} catch {
|
|
466
|
+
return [];
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
getCompletions(input) {
|
|
471
|
+
return this.#runtime.getCompletionOptions(input);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
getHistory() {
|
|
475
|
+
return this.#runtime.getInputHistory();
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
getCommands() {
|
|
479
|
+
return this.#runtime.listCommandNames();
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
getSessionId() {
|
|
483
|
+
return this.#runtime.getCurrentSessionId();
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
get busy() { return this.#busy; }
|
|
487
|
+
|
|
488
|
+
get runtime() { return this.#runtime; }
|
|
489
|
+
|
|
490
|
+
async switchRuntime(newRuntime) {
|
|
491
|
+
// Abort anything in-flight
|
|
492
|
+
if (this.#busy) {
|
|
493
|
+
try { this.#runtime.abort(); } catch {}
|
|
494
|
+
this.#busy = false;
|
|
495
|
+
}
|
|
496
|
+
// Dispose old runtime
|
|
497
|
+
try { await this.#runtime.dispose?.(); } catch {}
|
|
498
|
+
// Swap
|
|
499
|
+
this.#runtime = newRuntime;
|
|
500
|
+
this.#startupConsumed = false;
|
|
501
|
+
this.#approval = new ApprovalManager();
|
|
502
|
+
this.#uiMessages = [];
|
|
503
|
+
this.#uiActiveMsgId = null;
|
|
504
|
+
this.#uiPlanStepIds = new Map();
|
|
505
|
+
this.#uiTranscriptSessionId = newRuntime.getCurrentSessionId?.() || '';
|
|
506
|
+
this.#installApprovalHandler();
|
|
507
|
+
// Notify clients
|
|
508
|
+
this.#broadcast({ type: 'runtime:switched', sessionId: newRuntime.getCurrentSessionId?.() });
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
async dispose() {
|
|
512
|
+
for (const res of this.#clients) {
|
|
513
|
+
try { res.end(); } catch {}
|
|
514
|
+
}
|
|
515
|
+
this.#clients.clear();
|
|
516
|
+
await this.#runtime.dispose?.();
|
|
517
|
+
}
|
|
518
|
+
}
|