mycode-cli 0.8.1__tar.gz → 0.8.3__tar.gz
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.
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/PKG-INFO +2 -2
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/pyproject.toml +2 -2
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/config.py +2 -176
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/main.py +55 -2
- mycode_cli-0.8.3/src/mycode_cli/runtime.py +51 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/app.py +5 -8
- mycode_cli-0.8.3/src/mycode_cli/server/routers/__init__.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/routers/chat.py +35 -45
- mycode_cli-0.8.3/src/mycode_cli/server/routers/settings.py +348 -0
- mycode_cli-0.8.3/src/mycode_cli/server/static/assets/EditDiff-BKCAMlwm.js +1750 -0
- mycode_cli-0.8.3/src/mycode_cli/server/static/assets/highlighter-C8JbQtWh.js +1 -0
- mycode_cli-0.8.3/src/mycode_cli/server/static/assets/index-BrJMOLuJ.css +1 -0
- mycode_cli-0.8.3/src/mycode_cli/server/static/assets/index-CjDn7O2c.js +361 -0
- mycode_cli-0.8.3/src/mycode_cli/server/static/assets/langs-Dp0061t8.js +153 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/index.html +2 -2
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/tui/chat.py +145 -11
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/tui/render.py +19 -49
- mycode_cli-0.8.1/src/mycode_cli/runtime.py +0 -244
- mycode_cli-0.8.1/src/mycode_cli/server/routers/__init__.py +0 -8
- mycode_cli-0.8.1/src/mycode_cli/server/routers/settings.py +0 -176
- mycode_cli-0.8.1/src/mycode_cli/server/static/assets/EditDiff-DxA6R0oI.js +0 -1750
- mycode_cli-0.8.1/src/mycode_cli/server/static/assets/index-Dq_KP9Ja.js +0 -474
- mycode_cli-0.8.1/src/mycode_cli/server/static/assets/index-y3GNuXtu.css +0 -1
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/.gitignore +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/LICENSE +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/README.md +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/hatch_build.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/__init__.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/permissions.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/__init__.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/deps.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/routers/sessions.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/routers/workspaces.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/run_manager.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/schemas.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/abap-BdImnpbu.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/actionscript-3-CoDkCxhg.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ada-bCR0ucgS.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/andromeeda-C4gqWexZ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/angular-html-CU67Zn6k.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/angular-ts-BwZT4LLn.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/apache-Pmp26Uib.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/apex-D8_7TLub.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/apl-dKokRX4l.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/applescript-Co6uUVPk.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ara-BRHolxvo.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/asciidoc-Ve4PFQV2.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/asm-D_Q5rh1f.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/astro-CbQHKStN.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/aurora-x-D-2ljcwZ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/awk-DMzUqQB5.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ayu-dark-DYE7WIF3.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ayu-light-BA47KaF1.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ayu-mirage-32ctXXKs.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ballerina-BFfxhgS-.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/bat-BkioyH1T.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/beancount-k_qm7-4y.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/berry-uYugtg8r.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/bibtex-CHM0blh-.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/bicep-Bmn6On1c.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/bird2-DPOp833l.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/blade-D4QpJJKB.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/bsl-BO_Y6i37.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/c-BIGW1oBm.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/c3-eo99z4R2.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/cadence-Bv_4Rxtq.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/cairo-KRGpt6FW.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/clarity-D53aC0YG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/clojure-P80f7IUj.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/cmake-D1j8_8rp.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/cobol-nwyudZeR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/codeowners-Bp6g37R7.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/codeql-DsOJ9woJ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/coffee-Ch7k5sss.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/common-lisp-Cg-RD9OK.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/coq-DkFqJrB1.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/cpp-CofmeUqb.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/crystal-tKQVLTB8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/csharp-COcwbKMJ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/css-DPfMkruS.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/csv-fuZLfV_i.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/cue-D82EKSYY.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/cypher-COkxafJQ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/d-85-TOEBH.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/dark-plus-C3mMm8J8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/dart-CF10PKvl.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/dax-CEL-wOlO.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/desktop-BmXAJ9_W.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/diff-D97Zzqfu.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/docker-BcOcwvcX.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/dotenv-Da5cRb03.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/dracula-BzJJZx-M.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/dracula-soft-BXkSAIEj.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/dream-maker-BtqSS_iP.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/edge-BkV0erSs.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/elixir-CDX3lj18.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/elm-DbKCFpqz.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/emacs-lisp-C9XAeP06.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/erb-B12qg9BL.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/erlang-DsQrWhSR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/everforest-dark-BgDCqdQA.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/everforest-light-C8M2exoo.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/fennel-BYunw83y.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/fish-BvzEVeQv.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/fluent-C4IJs8-o.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/fsharp-CXgrBDvD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gdresource-BOOCDP_w.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gdscript-C5YyOfLZ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gdshader-DkwncUOv.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/genie-D0YGMca9.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gherkin-DyxjwDmM.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/git-commit-F4YmCXRG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/git-rebase-r7XF79zn.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/github-dark-DHJKELXO.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/github-light-DAi9KRSo.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/github-light-default-D7oLnXFd.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gleam-BspZqrRM.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/glimmer-ts-U6CK756n.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/glsl-DplSGwfg.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gn-n2N0HUVH.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gnuplot-DdkO51Og.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/go-CxLEBnE3.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/graphql-ChdNCCLP.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/groovy-gcz8RCvz.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/hack-CaT9iCJl.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/haml-B8DHNrY2.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/handlebars-BL8al0AC.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/haskell-Df6bDoY_.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/haxe-CzTSHFRz.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/hcl-BWvSN4gD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/hjson-D5-asLiD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/hlsl-D3lLCCz7.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/horizon-BUw7H-hv.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/horizon-bright-Cn-bp-IR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/houston-DnULxvSX.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/html-GMplVEZG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/html-derivative-BFtXZ54Q.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/http-jrhK8wxY.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/hurl-irOxFIW8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/hxml-Bvhsp5Yf.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/hy-DFXneXwc.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/imba-DGztddWO.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ini-BEwlwnbL.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/java-CylS5w8V.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/javascript-wDzz0qaB.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/jinja-4LBKfQ-Z.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/jison-wvAkD_A8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/json-Cp-IABpG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/json5-C9tS-k6U.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/jsonc-Des-eS-w.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/jsonl-DcaNXYhu.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/jsonnet-DFQXde-d.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/jssm-C2t-YnRu.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/jsx-g9-lgVsj.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/julia-CxzCAyBv.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/just-Cw27pwNe.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/kdl-DV7GczEv.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/kotlin-BdnUsdx6.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/kusto-DZf3V79B.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/laserwave-DUszq2jm.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/latex-CWtU0Tv5.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/lean-BZvkOJ9d.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/less-B1dDrJ26.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/light-plus-B7mTdjB0.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/liquid-DYVedYrR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/llvm-DjAJT7YJ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/log-2UxHyX5q.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/logo-BtOb2qkB.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/lua-BaeVxFsk.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/luau-C-HG3fhB.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/make-CHLpvVh8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/markdown-Cvjx9yec.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/marko-CnJfTvn9.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/material-theme-D5KoaKCx.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/material-theme-ocean-CyktbL80.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/matlab-D7o27uSR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/mdc-BMNejdWA.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/mdx-Cmh6b_Ma.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/mermaid-mWjccvbQ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/min-dark-CafNBF8u.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/min-light-CTRr51gU.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/mipsasm-CKIfxQSi.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/mojo-rZm6bMo-.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/monokai-D4h5O-jR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/moonbit-_H4v1dQx.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/move-IF9eRakj.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/narrat-DRg8JJMk.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/nextflow-Zz6hmt5N.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/nextflow-groovy-BeH2EWoN.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/nginx-BpAMiNFr.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/night-owl-C39BiMTA.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/night-owl-light-CMTm3GFP.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/nim-CVrawwO9.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/nix-CwoSXNpI.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/nord-Ddv68eIx.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/nushell-Cz2AlsmD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/objective-c-DXmwc3jG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/objective-cpp-CLxacb5B.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ocaml-C0hk2d4L.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/odin-BBf5iR-q.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/one-light-C3Wv6jpd.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/openscad-C4EeE6gA.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/pascal-D93ZcfNL.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/perl-C0TMdlhV.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/php-Dhbhpdrm.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/pierre-dark-DF2SEV7i.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/pierre-light-DOlZxES8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/pkl-u5AG7uiY.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/plastic-3e1v2bzS.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/plsql-ChMvpjG-.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/po-BTJTHyun.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/poimandres-CS3Unz2-.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/polar-C0HS_06l.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/postcss-CXtECtnM.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/powerquery-CEu0bR-o.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/powershell-Dpen1YoG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/prisma-Dd19v3D-.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/prolog-CbFg5uaA.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/proto-C7zT0LnQ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/pug-CGlum2m_.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/puppet-BMWR74SV.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/purescript-CklMAg4u.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/python-B6aJPvgy.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/qml-3beO22l8.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/qmldir-C8lEn-DE.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/qss-IeuSbFQv.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/r-Dspwwk_N.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/racket-BqYA7rlc.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/raku-DXvB9xmW.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/razor-Uh8Bk_45.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/red-bN70gL4F.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/reg-C-SQnVFl.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/regexp-CDVJQ6XC.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/rel-C3B-1QV4.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/riscv-BM1_JUlF.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ron-D8l8udqQ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/rose-pine-qdsjHGoJ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/rosmsg-BJDFO7_C.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/rst-BrH8l1NY.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ruby-Dw2BHqvy.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/rust-B1yitclQ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/sas-cz2c8ADy.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/sass-Cj5Yp3dK.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/scala-C151Ov-r.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/scheme-C98Dy4si.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/scss-OYdSNvt2.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/sdbl-DVxCFoDh.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/shellscript-Yzrsuije.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/shellsession-BADoaaVG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/slack-dark-BthQWCQV.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/slack-ochin-DqwNpetd.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/smalltalk-BERRCDM3.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/snazzy-light-Bw305WKR.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/solarized-dark-DXbdFlpD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/solarized-light-L9t79GZl.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/solidity-rGO070M0.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/soy-Brmx7dQM.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/sparql-rVzFXLq3.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/splunk-BtCnVYZw.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/sql-BLtJtn59.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ssh-config-_ykCGR6B.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/stata-BH5u7GGu.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/stylus-BEDo0Tqx.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/surrealql-Bq5Q-fJD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/svelte-C_ipcX3V.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/swift-D82vCrfD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/synthwave-84-CbfX1IO0.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/system-verilog-CnnmHF94.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/systemd-4A_iFExJ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/talonscript-CkByrt1z.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/tasl-QIJgUcNo.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/tcl-dwOrl1Do.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/templ-P3uqSqPl.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/terraform-BETggiCN.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/tex-idrVyKtj.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/tokyo-night-hegEt444.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/toml-vGWfd6FD.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/ts-tags-zn1MmPIZ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/tsv-B_m7g4N7.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/tsx-COt5Ahok.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/turtle-BsS91CYL.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/twig-DNn4PbVi.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/typescript-BPQ3VLAy.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/typespec-BGHnOYBU.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/typst-DHCkPAjA.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/v-BcVCzyr7.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vala-CsfeWuGM.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vb-D17OF-Vu.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/verilog-BQ8w6xss.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vesper-DU1UobuO.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vhdl-CeAyd5Ju.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/viml-CJc9bBzg.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vitesse-light-CVO1_9PV.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vue-DN_0RTcg.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vue-html-AaS7Mt5G.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vue-vine-CQOfvN7w.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/vyper-CDx5xZoG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/wasm-CG6Dc4jp.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/wasm-MzD3tlZU.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/wenyan-BV7otONQ.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/wgsl-Dx-B1_4e.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/wikitext-BhOHFoWU.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/wit-5i3qLPDT.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/wolfram-lXgVvXCa.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/xml-sdJ4AIDG.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/xsl-CtQFsRM5.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/yaml-Buea-lGh.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/zenscript-DVFEvuxE.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/assets/zig-VOosw3JB.js +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/server/static/favicon_slashes.svg +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/system_prompt.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/tui/__init__.py +0 -0
- {mycode_cli-0.8.1 → mycode_cli-0.8.3}/src/mycode_cli/tui/theme.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mycode-cli
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.3
|
|
4
4
|
Summary: Minimal coding agent CLI and web UI built on mycode-sdk.
|
|
5
5
|
Project-URL: Homepage, https://github.com/legibet/mycode
|
|
6
6
|
Project-URL: Repository, https://github.com/legibet/mycode
|
|
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
22
22
|
Classifier: Topic :: Software Development
|
|
23
23
|
Requires-Python: >=3.12
|
|
24
24
|
Requires-Dist: fastapi>=0.115.0
|
|
25
|
-
Requires-Dist: mycode-sdk==0.8.
|
|
25
|
+
Requires-Dist: mycode-sdk==0.8.3
|
|
26
26
|
Requires-Dist: prompt-toolkit>=3.0.52
|
|
27
27
|
Requires-Dist: pyyaml>=6.0.0
|
|
28
28
|
Requires-Dist: rich>=14.2.0
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mycode-cli"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.3"
|
|
8
8
|
description = "Minimal coding agent CLI and web UI built on mycode-sdk."
|
|
9
9
|
requires-python = ">=3.12"
|
|
10
10
|
license = "MIT"
|
|
@@ -26,7 +26,7 @@ classifiers = [
|
|
|
26
26
|
]
|
|
27
27
|
keywords = ["agent", "cli", "llm", "coding-agent", "fastapi"]
|
|
28
28
|
dependencies = [
|
|
29
|
-
"mycode-sdk==0.8.
|
|
29
|
+
"mycode-sdk==0.8.3",
|
|
30
30
|
"fastapi>=0.115.0",
|
|
31
31
|
"uvicorn[standard]>=0.32.0",
|
|
32
32
|
"rich>=14.2.0",
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import json
|
|
6
|
-
import logging
|
|
7
6
|
import os
|
|
8
7
|
import re
|
|
9
8
|
from dataclasses import dataclass, field
|
|
@@ -60,15 +59,6 @@ class ModelConfig:
|
|
|
60
59
|
supports_pdf_input: bool | None = None
|
|
61
60
|
|
|
62
61
|
|
|
63
|
-
_MODEL_OVERRIDE_KEYS = (
|
|
64
|
-
"context_window",
|
|
65
|
-
"max_output_tokens",
|
|
66
|
-
"supports_reasoning",
|
|
67
|
-
"supports_image_input",
|
|
68
|
-
"supports_pdf_input",
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
|
|
72
62
|
@dataclass(frozen=True)
|
|
73
63
|
class ProviderConfig:
|
|
74
64
|
name: str
|
|
@@ -110,6 +100,7 @@ class ResolvedProvider:
|
|
|
110
100
|
api_base: str | None
|
|
111
101
|
reasoning_effort: str | None
|
|
112
102
|
provider_name: str | None = None
|
|
103
|
+
model_config: ModelConfig | None = None
|
|
113
104
|
|
|
114
105
|
|
|
115
106
|
def _load_json(path: Path) -> dict[str, Any] | None:
|
|
@@ -571,170 +562,5 @@ def _resolve_provider_runtime(
|
|
|
571
562
|
api_key=resolved_api_key,
|
|
572
563
|
api_base=resolved_api_base,
|
|
573
564
|
reasoning_effort=reasoning_effort,
|
|
565
|
+
model_config=model_config,
|
|
574
566
|
)
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
def is_api_key_env_ref(value: str) -> str | None:
|
|
578
|
-
"""Return the env var name when ``value`` is a ``${NAME}`` reference."""
|
|
579
|
-
|
|
580
|
-
match = _API_KEY_ENV_REF_RE.fullmatch(value.strip())
|
|
581
|
-
return match.group(1) if match else None
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
def _optional_string(raw: dict[str, Any], key: str, label: str) -> str | None:
|
|
585
|
-
"""Read an optional string field. Returns the trimmed value, or ``None`` when
|
|
586
|
-
absent / null / empty so callers can simply skip the key."""
|
|
587
|
-
|
|
588
|
-
if key not in raw:
|
|
589
|
-
return None
|
|
590
|
-
value = raw[key]
|
|
591
|
-
if value is None or value == "":
|
|
592
|
-
return None
|
|
593
|
-
if not isinstance(value, str):
|
|
594
|
-
raise ValueError(f"{label} must be a string")
|
|
595
|
-
return value.strip() or None
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
def _validate_default(raw: Any) -> dict[str, Any]:
|
|
599
|
-
if not isinstance(raw, dict):
|
|
600
|
-
raise ValueError("default must be an object")
|
|
601
|
-
|
|
602
|
-
out: dict[str, Any] = {}
|
|
603
|
-
for key in ("provider", "model"):
|
|
604
|
-
value = _optional_string(raw, key, f"default.{key}")
|
|
605
|
-
if value:
|
|
606
|
-
out[key] = value
|
|
607
|
-
|
|
608
|
-
effort = raw.get("reasoning_effort")
|
|
609
|
-
if effort not in (None, ""):
|
|
610
|
-
normalize_reasoning_effort(effort)
|
|
611
|
-
out["reasoning_effort"] = effort
|
|
612
|
-
|
|
613
|
-
ct = raw.get("compact_threshold")
|
|
614
|
-
if ct is False:
|
|
615
|
-
out["compact_threshold"] = False
|
|
616
|
-
elif ct is not None:
|
|
617
|
-
if isinstance(ct, bool) or not isinstance(ct, int | float) or not 0 <= ct <= 1:
|
|
618
|
-
raise ValueError("default.compact_threshold must be a number in [0, 1] or false")
|
|
619
|
-
out["compact_threshold"] = float(ct)
|
|
620
|
-
|
|
621
|
-
return out
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
def _validate_permission(raw: Any) -> Any:
|
|
625
|
-
if isinstance(raw, str):
|
|
626
|
-
return normalize_permission_level(raw)
|
|
627
|
-
if not isinstance(raw, dict):
|
|
628
|
-
raise ValueError("permission must be a string or object")
|
|
629
|
-
|
|
630
|
-
out: dict[str, Any] = {}
|
|
631
|
-
if "level" in raw:
|
|
632
|
-
out["level"] = normalize_permission_level(raw.get("level"))
|
|
633
|
-
if "mode" in raw:
|
|
634
|
-
out["mode"] = normalize_permission_mode(raw.get("mode"))
|
|
635
|
-
return out
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
def _validate_provider(name: str, raw: Any) -> dict[str, Any]:
|
|
639
|
-
if not isinstance(raw, dict):
|
|
640
|
-
raise ValueError(f"provider {name!r} must be an object")
|
|
641
|
-
|
|
642
|
-
out: dict[str, Any] = {}
|
|
643
|
-
|
|
644
|
-
raw_type = raw.get("type")
|
|
645
|
-
if raw_type in (None, ""):
|
|
646
|
-
# Built-in name → type fallback; otherwise the user must spell it out.
|
|
647
|
-
if not is_supported_provider(name):
|
|
648
|
-
raise ValueError(f"provider {name!r} must set 'type'")
|
|
649
|
-
elif not isinstance(raw_type, str):
|
|
650
|
-
raise ValueError(f"provider {name!r}: type must be a string")
|
|
651
|
-
elif not is_supported_provider(raw_type):
|
|
652
|
-
supported = ", ".join(list_supported_providers())
|
|
653
|
-
raise ValueError(f"provider {name!r}: unsupported type {raw_type!r}; supported: {supported}")
|
|
654
|
-
else:
|
|
655
|
-
out["type"] = raw_type
|
|
656
|
-
|
|
657
|
-
for key in ("api_key", "base_url"):
|
|
658
|
-
value = _optional_string(raw, key, f"provider {name!r}: {key}")
|
|
659
|
-
if value:
|
|
660
|
-
out[key] = value
|
|
661
|
-
|
|
662
|
-
effort = raw.get("reasoning_effort")
|
|
663
|
-
if effort not in (None, ""):
|
|
664
|
-
normalize_reasoning_effort(effort)
|
|
665
|
-
out["reasoning_effort"] = effort
|
|
666
|
-
|
|
667
|
-
raw_models = raw.get("models")
|
|
668
|
-
if raw_models is not None:
|
|
669
|
-
models = _validate_models(name, raw_models)
|
|
670
|
-
if models:
|
|
671
|
-
out["models"] = models
|
|
672
|
-
|
|
673
|
-
return out
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
def _validate_models(name: str, raw: Any) -> dict[str, dict[str, Any]]:
|
|
677
|
-
# Both list (ids only) and dict (id → metadata overrides) are accepted; we
|
|
678
|
-
# always normalise to the dict form for storage.
|
|
679
|
-
if isinstance(raw, list):
|
|
680
|
-
items: list[tuple[Any, Any]] = [(m, None) for m in raw]
|
|
681
|
-
elif isinstance(raw, dict):
|
|
682
|
-
items = list(raw.items())
|
|
683
|
-
else:
|
|
684
|
-
raise ValueError(f"provider {name!r}: models must be a list or object")
|
|
685
|
-
|
|
686
|
-
out: dict[str, dict[str, Any]] = {}
|
|
687
|
-
for model_id, overrides in items:
|
|
688
|
-
if not isinstance(model_id, str) or not model_id.strip():
|
|
689
|
-
raise ValueError(f"provider {name!r}: model id must be a non-empty string")
|
|
690
|
-
key = model_id.strip()
|
|
691
|
-
if overrides is None:
|
|
692
|
-
out[key] = {}
|
|
693
|
-
elif isinstance(overrides, dict):
|
|
694
|
-
out[key] = {k: v for k, v in overrides.items() if k in _MODEL_OVERRIDE_KEYS and v is not None}
|
|
695
|
-
else:
|
|
696
|
-
raise ValueError(f"provider {name!r}: model {key!r} config must be an object")
|
|
697
|
-
return out
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
def validate_global_config(data: Any) -> dict[str, Any]:
|
|
701
|
-
"""Validate a raw global config payload. Returns a cleaned dict ready to persist.
|
|
702
|
-
|
|
703
|
-
Empty / null fields are dropped. Raises ``ValueError`` on invalid input.
|
|
704
|
-
"""
|
|
705
|
-
|
|
706
|
-
if data is None:
|
|
707
|
-
return {}
|
|
708
|
-
if not isinstance(data, dict):
|
|
709
|
-
raise ValueError("config must be an object")
|
|
710
|
-
|
|
711
|
-
out: dict[str, Any] = {}
|
|
712
|
-
|
|
713
|
-
if data.get("default") is not None:
|
|
714
|
-
default = _validate_default(data["default"])
|
|
715
|
-
if default:
|
|
716
|
-
out["default"] = default
|
|
717
|
-
|
|
718
|
-
if data.get("permission") is not None:
|
|
719
|
-
out["permission"] = _validate_permission(data["permission"])
|
|
720
|
-
|
|
721
|
-
raw_providers = data.get("providers")
|
|
722
|
-
if raw_providers is not None:
|
|
723
|
-
if not isinstance(raw_providers, dict):
|
|
724
|
-
raise ValueError("providers must be an object")
|
|
725
|
-
providers: dict[str, dict[str, Any]] = {}
|
|
726
|
-
for name, raw in raw_providers.items():
|
|
727
|
-
if not isinstance(name, str) or not name.strip():
|
|
728
|
-
raise ValueError("provider name must be a non-empty string")
|
|
729
|
-
cleaned = name.strip()
|
|
730
|
-
providers[cleaned] = _validate_provider(cleaned, raw)
|
|
731
|
-
if providers:
|
|
732
|
-
out["providers"] = providers
|
|
733
|
-
|
|
734
|
-
return out
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
def setup_logging() -> None:
|
|
738
|
-
"""Configure default logging."""
|
|
739
|
-
|
|
740
|
-
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
|
|
@@ -6,7 +6,8 @@ import asyncio
|
|
|
6
6
|
import os
|
|
7
7
|
import sys
|
|
8
8
|
from dataclasses import dataclass, replace
|
|
9
|
-
from typing import Annotated
|
|
9
|
+
from typing import Annotated, Any
|
|
10
|
+
from uuid import uuid4
|
|
10
11
|
|
|
11
12
|
import typer
|
|
12
13
|
|
|
@@ -24,7 +25,7 @@ from mycode_cli.config import (
|
|
|
24
25
|
)
|
|
25
26
|
from mycode_cli.permissions import PERMISSION_DENIED_BY_USER_OUTPUT, PERMISSION_DENIED_OUTPUT
|
|
26
27
|
|
|
27
|
-
from .runtime import
|
|
28
|
+
from .runtime import build_agent
|
|
28
29
|
from .tui.chat import TerminalChat
|
|
29
30
|
from .tui.render import TerminalView
|
|
30
31
|
|
|
@@ -33,6 +34,58 @@ session_app = typer.Typer(help="Session management")
|
|
|
33
34
|
app.add_typer(session_app, name="session")
|
|
34
35
|
|
|
35
36
|
|
|
37
|
+
@dataclass
|
|
38
|
+
class ResolvedSession:
|
|
39
|
+
"""The session selected for the current CLI run.
|
|
40
|
+
|
|
41
|
+
`mode` is either `"new"` or `"resumed"`.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
session_id: str
|
|
45
|
+
session: dict[str, Any]
|
|
46
|
+
messages: list[dict[str, Any]]
|
|
47
|
+
mode: str
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
async def resolve_session(
|
|
51
|
+
*,
|
|
52
|
+
store: SessionStore,
|
|
53
|
+
cwd: str,
|
|
54
|
+
requested_session_id: str | None,
|
|
55
|
+
continue_last: bool,
|
|
56
|
+
) -> ResolvedSession:
|
|
57
|
+
"""Resolve which session the CLI should load before starting."""
|
|
58
|
+
|
|
59
|
+
if requested_session_id:
|
|
60
|
+
data = await store.load_session(requested_session_id)
|
|
61
|
+
if not data or not data.get("session"):
|
|
62
|
+
raise ValueError(f"Unknown session: {requested_session_id}")
|
|
63
|
+
return ResolvedSession(
|
|
64
|
+
requested_session_id,
|
|
65
|
+
data.get("session") or {},
|
|
66
|
+
data.get("messages") or [],
|
|
67
|
+
"resumed",
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
if continue_last:
|
|
71
|
+
latest = await store.latest_session(cwd=cwd)
|
|
72
|
+
if latest and latest.get("id"):
|
|
73
|
+
session_id = str(latest["id"])
|
|
74
|
+
data = await store.load_session(session_id)
|
|
75
|
+
if not data:
|
|
76
|
+
raise ValueError(f"Unknown session: {session_id}")
|
|
77
|
+
return ResolvedSession(
|
|
78
|
+
session_id,
|
|
79
|
+
data.get("session") or latest,
|
|
80
|
+
data.get("messages") or [],
|
|
81
|
+
"resumed",
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
# New sessions: the id is allocated here; the on-disk session is created
|
|
85
|
+
# lazily by Agent.achat on the first persist.
|
|
86
|
+
return ResolvedSession(uuid4().hex, {}, [], "new")
|
|
87
|
+
|
|
88
|
+
|
|
36
89
|
def _show_version(value: bool) -> None:
|
|
37
90
|
if not value:
|
|
38
91
|
return
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Build an Agent from CLI settings — shared by both the TUI and the web server."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from mycode.agent import Agent
|
|
6
|
+
from mycode.session import SessionStore
|
|
7
|
+
from mycode.tools import DEFAULT_TOOL_SPECS
|
|
8
|
+
from mycode_cli.config import ResolvedProvider, Settings
|
|
9
|
+
from mycode_cli.permissions import ToolReviewCallback, build_permission_hooks
|
|
10
|
+
from mycode_cli.system_prompt import build_system_prompt
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def build_agent(
|
|
14
|
+
*,
|
|
15
|
+
store: SessionStore,
|
|
16
|
+
cwd: str,
|
|
17
|
+
settings: Settings,
|
|
18
|
+
resolved_provider: ResolvedProvider,
|
|
19
|
+
session_id: str,
|
|
20
|
+
max_turns: int | None = None,
|
|
21
|
+
reasoning_effort: str | None = None,
|
|
22
|
+
review: ToolReviewCallback | None = None,
|
|
23
|
+
) -> Agent:
|
|
24
|
+
"""Build an agent from the resolved provider, honoring model config overrides.
|
|
25
|
+
|
|
26
|
+
History is auto-loaded from disk when ``session_id`` already exists under
|
|
27
|
+
the store; callers never pass messages explicitly.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
model_config = resolved_provider.model_config
|
|
31
|
+
agent = Agent(
|
|
32
|
+
model=resolved_provider.model,
|
|
33
|
+
provider=resolved_provider.provider,
|
|
34
|
+
cwd=cwd,
|
|
35
|
+
session_dir=store.data_dir,
|
|
36
|
+
session_id=session_id,
|
|
37
|
+
api_key=resolved_provider.api_key,
|
|
38
|
+
api_base=resolved_provider.api_base,
|
|
39
|
+
reasoning_effort=reasoning_effort if reasoning_effort is not None else resolved_provider.reasoning_effort,
|
|
40
|
+
max_tokens=model_config.max_output_tokens if model_config else None,
|
|
41
|
+
context_window=model_config.context_window if model_config else None,
|
|
42
|
+
supports_reasoning=model_config.supports_reasoning if model_config else None,
|
|
43
|
+
supports_image_input=model_config.supports_image_input if model_config else None,
|
|
44
|
+
supports_pdf_input=model_config.supports_pdf_input if model_config else None,
|
|
45
|
+
compact_threshold=settings.compact_threshold,
|
|
46
|
+
max_turns=max_turns,
|
|
47
|
+
system=build_system_prompt(cwd, settings),
|
|
48
|
+
tools=DEFAULT_TOOL_SPECS,
|
|
49
|
+
)
|
|
50
|
+
agent.hooks = build_permission_hooks(settings, review=review, on_user_denied=agent.cancel)
|
|
51
|
+
return agent
|
|
@@ -7,13 +7,10 @@ from fastapi import FastAPI
|
|
|
7
7
|
from fastapi.middleware.cors import CORSMiddleware
|
|
8
8
|
from fastapi.staticfiles import StaticFiles
|
|
9
9
|
|
|
10
|
-
from mycode_cli.
|
|
11
|
-
from mycode_cli.server.routers import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
settings_router,
|
|
15
|
-
workspaces_router,
|
|
16
|
-
)
|
|
10
|
+
from mycode_cli.server.routers.chat import router as chat_router
|
|
11
|
+
from mycode_cli.server.routers.sessions import router as sessions_router
|
|
12
|
+
from mycode_cli.server.routers.settings import router as settings_router
|
|
13
|
+
from mycode_cli.server.routers.workspaces import router as workspaces_router
|
|
17
14
|
|
|
18
15
|
logger = logging.getLogger(__name__)
|
|
19
16
|
|
|
@@ -26,7 +23,7 @@ def web_static_path() -> Path:
|
|
|
26
23
|
|
|
27
24
|
def create_app(*, serve_web: bool = True) -> FastAPI:
|
|
28
25
|
"""Create the FastAPI app."""
|
|
29
|
-
|
|
26
|
+
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
|
|
30
27
|
application = FastAPI(title="mycode")
|
|
31
28
|
|
|
32
29
|
application.add_middleware(
|
|
File without changes
|
|
@@ -95,7 +95,12 @@ async def chat(chat: ChatRequest, store: StoreDep, runs: RunManagerDep):
|
|
|
95
95
|
if chat.message and chat.input:
|
|
96
96
|
raise HTTPException(status_code=400, detail="message and input are mutually exclusive")
|
|
97
97
|
|
|
98
|
-
if chat.input:
|
|
98
|
+
if not chat.input:
|
|
99
|
+
message_text = str(chat.message or "").strip()
|
|
100
|
+
if not message_text:
|
|
101
|
+
raise HTTPException(status_code=400, detail="message or input is required")
|
|
102
|
+
user_message = build_message("user", [text_block(message_text)])
|
|
103
|
+
else:
|
|
99
104
|
blocks: list[dict[str, Any]] = []
|
|
100
105
|
for block in chat.input:
|
|
101
106
|
if block.type == "text":
|
|
@@ -110,59 +115,45 @@ async def chat(chat: ChatRequest, store: StoreDep, runs: RunManagerDep):
|
|
|
110
115
|
)
|
|
111
116
|
elif text:
|
|
112
117
|
blocks.append(text_block(text))
|
|
113
|
-
continue
|
|
114
118
|
|
|
115
|
-
|
|
119
|
+
elif block.type == "document":
|
|
116
120
|
if block.data:
|
|
117
121
|
mime_type = block.mime_type or "application/pdf"
|
|
118
122
|
if mime_type != "application/pdf":
|
|
119
123
|
raise HTTPException(status_code=400, detail="unsupported document mime_type")
|
|
120
124
|
blocks.append(document_block(block.data, mime_type=mime_type, name=block.name or "document.pdf"))
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
blocks.append(
|
|
133
|
-
document_block(
|
|
134
|
-
document_data,
|
|
135
|
-
mime_type=mime_type,
|
|
136
|
-
name=block.name or document_path.name,
|
|
137
|
-
)
|
|
138
|
-
)
|
|
139
|
-
continue
|
|
140
|
-
|
|
141
|
-
if block.data:
|
|
142
|
-
if not block.mime_type:
|
|
143
|
-
raise HTTPException(status_code=400, detail="image data requires mime_type")
|
|
144
|
-
blocks.append(image_block(block.data, mime_type=block.mime_type, name=block.name or "image"))
|
|
145
|
-
continue
|
|
125
|
+
else:
|
|
126
|
+
if not block.path:
|
|
127
|
+
raise HTTPException(status_code=400, detail="document input requires path or data")
|
|
128
|
+
path = Path(resolve_path(block.path, cwd=cwd))
|
|
129
|
+
if not path.is_file():
|
|
130
|
+
raise HTTPException(status_code=400, detail=f"document file not found: {block.path}")
|
|
131
|
+
mime_type = block.mime_type or detect_document_mime_type(path)
|
|
132
|
+
if mime_type != "application/pdf":
|
|
133
|
+
raise HTTPException(status_code=400, detail=f"unsupported document file: {block.path}")
|
|
134
|
+
data = b64encode(path.read_bytes()).decode("utf-8")
|
|
135
|
+
blocks.append(document_block(data, mime_type=mime_type, name=block.name or path.name))
|
|
146
136
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
137
|
+
else: # image
|
|
138
|
+
if block.data:
|
|
139
|
+
if not block.mime_type:
|
|
140
|
+
raise HTTPException(status_code=400, detail="image data requires mime_type")
|
|
141
|
+
blocks.append(image_block(block.data, mime_type=block.mime_type, name=block.name or "image"))
|
|
142
|
+
else:
|
|
143
|
+
if not block.path:
|
|
144
|
+
raise HTTPException(status_code=400, detail="image input requires path or data")
|
|
145
|
+
path = Path(resolve_path(block.path, cwd=cwd))
|
|
146
|
+
if not path.is_file():
|
|
147
|
+
raise HTTPException(status_code=400, detail=f"image file not found: {block.path}")
|
|
148
|
+
mime_type = block.mime_type or detect_image_mime_type(path)
|
|
149
|
+
if not mime_type:
|
|
150
|
+
raise HTTPException(status_code=400, detail=f"unsupported image file: {block.path}")
|
|
151
|
+
data = b64encode(path.read_bytes()).decode("utf-8")
|
|
152
|
+
blocks.append(image_block(data, mime_type=mime_type, name=block.name or path.name))
|
|
157
153
|
|
|
158
154
|
if not blocks:
|
|
159
155
|
raise HTTPException(status_code=400, detail="input must include at least one non-empty block")
|
|
160
156
|
user_message = build_message("user", blocks)
|
|
161
|
-
else:
|
|
162
|
-
message_text = str(chat.message or "").strip()
|
|
163
|
-
if not message_text:
|
|
164
|
-
raise HTTPException(status_code=400, detail="message or input is required")
|
|
165
|
-
user_message = build_message("user", [text_block(message_text)])
|
|
166
157
|
|
|
167
158
|
data = await store.load_session(session_id)
|
|
168
159
|
session = (data or {}).get("session")
|
|
@@ -197,8 +188,7 @@ async def chat(chat: ChatRequest, store: StoreDep, runs: RunManagerDep):
|
|
|
197
188
|
|
|
198
189
|
# Capability check before any disk mutation — a failed check must not
|
|
199
190
|
# leave an empty session on disk or land a premature rewind marker.
|
|
200
|
-
|
|
201
|
-
model_config = provider_config.models.get(resolved.model) if provider_config else None
|
|
191
|
+
model_config = resolved.model_config
|
|
202
192
|
model_meta = resolve_model_metadata(
|
|
203
193
|
provider=resolved.provider,
|
|
204
194
|
model=resolved.model,
|