mycode-cli 0.14.1__tar.gz → 0.15.0__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.14.1 → mycode_cli-0.15.0}/PKG-INFO +2 -2
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/pyproject.toml +2 -2
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/config.py +20 -30
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/main.py +16 -3
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/permissions.py +4 -7
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/runtime.py +2 -13
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/app.py +18 -3
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/deps.py +8 -12
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/routers/chat.py +11 -10
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/routers/sessions.py +13 -15
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/routers/settings.py +10 -8
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/routers/workspaces.py +2 -2
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/run_manager.py +70 -33
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/sessions.py +32 -2
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/system_prompt.py +5 -4
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/tools.py +23 -21
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/tui/chat.py +21 -40
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/tui/render.py +3 -2
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/.gitignore +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/LICENSE +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/README.md +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/hatch_build.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/__init__.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/__init__.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/routers/__init__.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/schemas.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/EditDiff-DOjxGJl-.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ThemeProvider-zTKbpxjH.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/abap-CLvhMVsD.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/actionscript-3--17pq3dv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ada-C5qYipkI.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/andromeeda-vGVdxbeo.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/angular-html-BVBpGdXr.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/angular-ts-BfdufMKP.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/apache-U0d_L8uA.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/apex-VAyPSnFM.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/apl-DWBSSoBH.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/applescript-CCn79oCD.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ara-4CJ0cIlV.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/asciidoc-DE70LPWp.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/asm-Cmm7eHzH.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/astro-3LtMP0Sq.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/aurora-x-CDeNXAV0.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/awk-BWXHIvNe.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ayu-dark-DluEY0Gj.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ayu-light-C3h-C4tm.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ballerina-B7ZEbQpA.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/bat-Bo4NYOV-.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/beancount-D-usSTwE.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/berry-DKpUyyne.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/bibtex-Ci_nEsc7.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/bicep-CUHmPFLl.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/bird2-C6vDhewU.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/blade-llJRbbtR.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/bsl-BkkzgIyY.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/c-Wt1voDr2.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/c3-BFHwR3_K.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/cadence-CQ2zXKGN.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/cairo-DLTphjLi.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/clarity-SemFz856.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/clojure-DqKBuwfJ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/cmake-Bj61d0ZC.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/cobol-x_HIyl2P.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/codeowners-C8r90Shi.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/codeql-oeQT6MSM.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/coffee-CThvmt4R.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/common-lisp-Cv5bFMCO.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/coq-BrsZFFmf.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/cpp-NtAeskI3.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/crystal-DNu_sX0G.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/csharp-oqKa8noW.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/css-DJp_X0uY.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/csv-Dx-8-gkx.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/cue-CE9AQfxI.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/cypher-ClKdZ_lG.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/d-qD-0Kul2.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/dark-plus-Cs2F2srj.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/dart-CnvKMtbv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/dax-BkyTk9wS.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/desktop-Dlh5hvp9.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/diff-woXpYk--.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/docker-IyjqRm3v.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/dotenv-_5a1GRtc.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/dracula-BHWKrbxM.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/dracula-soft-5eyTD99u.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/dream-maker-DW3nJb8Q.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/edge-ozw5tpLl.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/elixir-VhA6FeZt.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/elm-dREJmIFz.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/emacs-lisp-B4R74twV.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/engine-compile-Cbfz3NVV.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/erb-CIg6G69l.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/erlang-Cphh6RMH.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/everforest-dark-sB-x3p7T.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/everforest-light-Df2xbC6M.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/fennel-DQxkIbk2.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/fish-BJitypiv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/fluent-C03EYrpw.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/fsharp-D13ZGOAj.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gdresource-C0sCabJj.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gdscript-Cp2uCuqX.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gdshader-CBce3t8t.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/genie-CV2tkWYe.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gherkin-DExj1W_8.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/git-commit-BSykSTBG.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/git-rebase-B44mJPta.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/github-dark-C-LZuMrd.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/github-dark-default-DXG-b-1a.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/github-light-EUqPIrTm.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/github-light-default-BXViO-2h.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gleam-CSRkHgEL.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/glimmer-js-vH_gHG0-.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/glimmer-ts--abOzSAQ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/glsl-Dv5r7kPw.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gn-ilITqXS6.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gnuplot-7GGW24-e.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/go-rLFTqkRN.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/graphql-CB4jsw2E.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/groovy-CacY0gHj.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/hack-DvEYX148.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/haml-zE6W3STP.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/handlebars-CzBR2SDs.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/haskell-D8IpX4py.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/haxe-OTjmBuCE.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/hcl-Dh228itO.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/highlighter-CZbuWYc3.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/hjson-CxZEssPk.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/hlsl-Cvrh5tZx.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/horizon-CE9ld1lL.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/horizon-bright-DSNQnXHK.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/houston-CsvMBhTu.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/html-C8UlPnhE.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/html-derivative-CY6NRz-J.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/http-Cyd7bS_S.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/hurl-CWPsiEpf.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/hxml-B0Qn7Nwc.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/hy-CZbG8q4J.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/imba-DsUTQ-LC.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/index-DzNDonIR.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/index-g5_LkRCI.css +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ini-B5eOa1yu.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/java-CGc3VwQr.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/javascript-CUt1pgmJ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/jinja-CD-Z-FLd.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/jison-imPNup1l.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/json-Bg9ijW3F.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/json5-BR5RXkoi.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/jsonc-CYpm1nAK.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/jsonl-CmCQp5Yx.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/jsonnet-CJTPZ8u_.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/jssm-DXw9l8Rf.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/jsx-CY6oMTks.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/julia-Dc3O-irA.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/just-BhOq_Kbv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/kdl-CsD5j6eV.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/kotlin-DhhofPvG.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/kusto-C7mF5XQf.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/laserwave-C_8bwKvT.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/latex-Cu4Y1d5w.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/lean-CewbzKMR.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/less-DVTAwKKz.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/light-plus-DVQuIRkW.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/liquid-CvXMrjlQ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/llvm-Cm23YOpf.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/log-BNLmms1o.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/logo-Cluzi2Zq.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/lua-BjLEUjKY.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/luau-FMPmPwt6.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/make-Dixweg8N.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/markdown-BYOwaDjH.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/marko-DvhNOisQ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/material-theme-Bm3Qr25_.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/matlab-D7qyCx1q.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/mdc-Bm9TpL1X.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/mdx-DQZ5AkYe.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/mermaid-Bk4SNUv9.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/min-dark-BSWPekZh.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/min-light-DDpmG2fV.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/mipsasm-BMqwQI7S.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/mojo-BgCJLMeH.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/monokai-CdkpiU2Y.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/moonbit-CaWjb8XO.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/move-B1IS1UjX.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/narrat-_X_XdTYD.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/nextflow-BJtWHP5T.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/nextflow-groovy-DJMQeKeT.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/nginx-Bhc82uuv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/night-owl-DhmEMT88.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/nim-DXTVBFnF.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/nix-IvuFDN5E.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/nord-Cb4Vim4T.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/nushell-DcLAeLz5.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/objective-c-D1A_Heim.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/objective-cpp-BsSzOQcm.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ocaml-O90oeIOV.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/odin-B1RWQWA5.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/one-light-D7Lr4KcI.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/openscad-BUDT5pXO.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pascal-4ZHwLPI5.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/perl-C7veXV9z.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/php-BRiuMnnr.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pierre-dark-sU4Zdns8.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pierre-dark-soft-HXgun5vs.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pierre-dark-vibrant-D4RhcSIK.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pierre-light-DWBk51d8.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pierre-light-soft-CodEzPxf.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pierre-light-vibrant-B76X7i5Y.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pkl-ot-7Btpt.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/plastic-DQwYfKfQ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/plsql-DGHpHOYJ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/po-BiJDBrnU.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/poimandres-DRFjx7u4.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/polar-C7UOKdEL.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/postcss-BXeXVLqQ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/powerquery-DNMTfnFr.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/powershell-DshXNtvi.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/preload-helper-FMEmyu_K.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/prisma-BsRQq5mF.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/prolog-iXnhIJG7.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/proto-DB4EqR-F.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/pug-C5hz5LQ7.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/puppet-CDv2pdJW.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/purescript-9MfHhQsQ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/python-gzcpVVnB.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/qml-BdUV3aTS.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/qmldir-DCQb3MpD.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/qss-Fe1Jh2GI.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/r-8R7vtdQc.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/racket-DcIDlBhZ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/raku-B3gFvitq.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/razor-DRL52XO2.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/red-CJ3rzSJv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/reg-CRGYupPL.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/regexp-Omp9DhTb.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rel-BtDbiS_P.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/riscv-Ckw8ddFX.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rolldown-runtime-QTnfLwEv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ron-VUp2lXgN.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rose-pine-BthvhNj6.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rosmsg-CAekHB0j.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rst-BHX71KW9.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ruby-B--HzjGU.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/rust-Cfkwpbl8.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/sas-DrLaYOK_.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/sass-DXrisJhu.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/scala-DKOlJaKm.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/scheme-DQCgrYNe.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/scss-DdSxiZKl.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/sdbl-bTVj8UrX.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/shaderlab-TOUzSsQk.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/shellscript-DwcUjJBL.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/shellsession-CPZkydE6.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/slack-dark-DnToyrRv.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/slack-ochin-B2OO5cIa.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/smalltalk-B16xEiuN.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/snazzy-light-4G7pJPwS.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/solarized-dark-DV17i1UV.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/solarized-light-DSh2HLQt.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/solidity-CKzVLygQ.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/soy-Br5FhD7c.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/sparql-D_iOobhT.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/splunk-BC2Px7Mm.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/sql-DNssxck8.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ssh-config-BgfXC-Er.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/stata-DXn1tqOr.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/stylus-B6D30XZt.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/surrealql-IeLNQw0f.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/svelte-DOdLCIlh.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/swift-DonLKvLd.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/synthwave-84-nFMaYfgc.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/system-verilog-DJ5XKQeo.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/systemd-BxMlprV5.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/talonscript-CohzipZa.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/tasl-DMoTqEGO.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/tcl-CZd0xW_V.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/templ-CIwIngms.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/terraform-DswuEJGm.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/tex-D8QMumu5.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/tokyo-night-oM2G3aXe.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/toml-CcmNWLt0.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/ts-tags-BMVY4q-l.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/tsv-sltzmVWM.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/tsx-5Eka4NBX.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/turtle-ByJddavk.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/twig-C8o_5mgw.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/typescript-DOu2WMV5.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/typespec-BRdr0IET.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/typst-DI99ib-x.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/v-DETTlOr0.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vala-zf12oZj6.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vb-Djn5o6TS.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/verilog-CiiDBU1e.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vesper-DdrHHSXu.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vhdl-BroJfC0k.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/viml-DvXPmvsu.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vitesse-black-fwtXNY1n.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vitesse-light-VbXTXTou.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vue-BU18DNDL.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vue-html-BeluIYX0.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vue-vine-DGUAbOCX.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/vyper-CgoNMtux.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/wasm-BnjxR4X6.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/wasm-ByWQv1Qj.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/wenyan-C8pVoKbM.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/wgsl-BsKzXJz4.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/wikitext-ClFFjSW2.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/wit-DdvCle-K.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/wolfram-DLL8P-h_.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/xml-DIqSwXR3.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/xsl-Ct_-YIAy.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/yaml-DTtCYNlS.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/zenscript-BnlCZFoB.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/assets/zig-CMLA9XwU.js +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/favicon_slashes.svg +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/fonts/OFL.txt +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/fonts/SourceCodePro-Variable.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/fonts/SourceSans3-Variable.woff2 +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/server/static/index.html +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/tui/__init__.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/tui/state.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/tui/theme.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/web_tools.py +0 -0
- {mycode_cli-0.14.1 → mycode_cli-0.15.0}/src/mycode_cli/workspace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mycode-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.15.0
|
|
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
|
|
@@ -25,7 +25,7 @@ Requires-Dist: beautifulsoup4>=4.15.0
|
|
|
25
25
|
Requires-Dist: fastapi>=0.139.0
|
|
26
26
|
Requires-Dist: httpx2>=2.10.0
|
|
27
27
|
Requires-Dist: markdownify>=1.2.3
|
|
28
|
-
Requires-Dist: mycode-sdk==0.
|
|
28
|
+
Requires-Dist: mycode-sdk==0.15.0
|
|
29
29
|
Requires-Dist: prompt-toolkit>=3.0.52
|
|
30
30
|
Requires-Dist: pydantic>=2.13.4
|
|
31
31
|
Requires-Dist: pyyaml>=6.0.3
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mycode-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.15.0"
|
|
8
8
|
description = "Minimal coding agent CLI and web UI built on mycode-sdk."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -26,7 +26,7 @@ classifiers = [
|
|
|
26
26
|
]
|
|
27
27
|
keywords = ["agent", "cli", "llm", "coding-agent", "fastapi"]
|
|
28
28
|
dependencies = [
|
|
29
|
-
"mycode-sdk==0.
|
|
29
|
+
"mycode-sdk==0.15.0",
|
|
30
30
|
"fastapi>=0.139.0",
|
|
31
31
|
"uvicorn[standard]>=0.51.0",
|
|
32
32
|
"rich>=15.0.0",
|
|
@@ -187,7 +187,7 @@ def parse_compact_threshold(value: Any) -> float | None:
|
|
|
187
187
|
return None
|
|
188
188
|
threshold = float(value)
|
|
189
189
|
|
|
190
|
-
if
|
|
190
|
+
if not 0 <= threshold <= 1:
|
|
191
191
|
return None
|
|
192
192
|
return threshold
|
|
193
193
|
|
|
@@ -504,45 +504,37 @@ def get_settings(cwd: str | None = None) -> Settings:
|
|
|
504
504
|
if resolved_path not in config_paths:
|
|
505
505
|
config_paths.append(resolved_path)
|
|
506
506
|
|
|
507
|
-
for name, raw in
|
|
508
|
-
if not isinstance(name, str) or not isinstance(raw, dict):
|
|
509
|
-
continue
|
|
510
|
-
|
|
507
|
+
for name, raw in data.get("providers", {}).items():
|
|
511
508
|
merged = dict(raw_providers.get(name, {}))
|
|
512
509
|
|
|
513
510
|
if "type" in raw:
|
|
514
|
-
merged["type"] = raw
|
|
511
|
+
merged["type"] = raw["type"]
|
|
515
512
|
if "models" in raw:
|
|
516
|
-
merged["models"] = raw
|
|
513
|
+
merged["models"] = raw["models"]
|
|
517
514
|
if "api_key" in raw:
|
|
518
|
-
api_key, api_key_env_var = _parse_config_api_key(raw
|
|
515
|
+
api_key, api_key_env_var = _parse_config_api_key(raw["api_key"])
|
|
519
516
|
merged["api_key"] = api_key
|
|
520
517
|
merged["api_key_env_var"] = api_key_env_var
|
|
521
518
|
if "base_url" in raw:
|
|
522
|
-
merged["base_url"] = raw
|
|
519
|
+
merged["base_url"] = raw["base_url"]
|
|
523
520
|
if "supports_reasoning_effort" in raw:
|
|
524
|
-
merged["supports_reasoning_effort"] = raw
|
|
521
|
+
merged["supports_reasoning_effort"] = raw["supports_reasoning_effort"]
|
|
525
522
|
|
|
526
523
|
raw_providers[name] = merged
|
|
527
524
|
|
|
528
|
-
default = data.get("default")
|
|
529
|
-
if
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
default_model = v if isinstance(v, str) else None
|
|
536
|
-
if "compact_threshold" in default:
|
|
537
|
-
parsed_threshold = parse_compact_threshold(default.get("compact_threshold"))
|
|
538
|
-
if parsed_threshold is not None:
|
|
539
|
-
compact_threshold = parsed_threshold
|
|
525
|
+
default = data.get("default", {})
|
|
526
|
+
if "provider" in default:
|
|
527
|
+
default_provider = default["provider"]
|
|
528
|
+
if "model" in default:
|
|
529
|
+
default_model = default["model"]
|
|
530
|
+
if "compact_threshold" in default:
|
|
531
|
+
compact_threshold = float(default["compact_threshold"])
|
|
540
532
|
|
|
541
533
|
if "permission" in data:
|
|
542
534
|
permission = parse_permission(data.get("permission"), permission)
|
|
543
535
|
|
|
544
|
-
if
|
|
545
|
-
web =
|
|
536
|
+
if "web" in data:
|
|
537
|
+
web = data["web"]
|
|
546
538
|
for key in ("fetch", "search"):
|
|
547
539
|
if key in web:
|
|
548
540
|
raw_web[key] = web[key]
|
|
@@ -768,14 +760,12 @@ def _available_provider_references(settings: Settings) -> list[str]:
|
|
|
768
760
|
|
|
769
761
|
add(settings.default_provider)
|
|
770
762
|
|
|
771
|
-
for name
|
|
772
|
-
|
|
773
|
-
add(name)
|
|
763
|
+
for name in settings.providers:
|
|
764
|
+
add(name)
|
|
774
765
|
|
|
775
766
|
for provider_id in list_env_discoverable_providers():
|
|
776
|
-
if provider_id in configured_types_with_credentials
|
|
777
|
-
|
|
778
|
-
add(provider_id)
|
|
767
|
+
if provider_id not in configured_types_with_credentials:
|
|
768
|
+
add(provider_id)
|
|
779
769
|
|
|
780
770
|
return available
|
|
781
771
|
|
|
@@ -7,7 +7,7 @@ import os
|
|
|
7
7
|
import sys
|
|
8
8
|
from contextlib import suppress
|
|
9
9
|
from dataclasses import dataclass, replace
|
|
10
|
-
from typing import Annotated, Any, Literal
|
|
10
|
+
from typing import TYPE_CHECKING, Annotated, Any, Literal
|
|
11
11
|
from uuid import uuid4
|
|
12
12
|
|
|
13
13
|
import typer
|
|
@@ -28,8 +28,9 @@ from mycode_cli.permissions import PERMISSION_DENIED_BY_USER_OUTPUT, PERMISSION_
|
|
|
28
28
|
from mycode_cli.sessions import SessionStore
|
|
29
29
|
|
|
30
30
|
from .runtime import build_agent
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
|
|
32
|
+
if TYPE_CHECKING:
|
|
33
|
+
from .tui.render import TerminalView
|
|
33
34
|
|
|
34
35
|
app = typer.Typer(add_completion=False, pretty_exceptions_enable=False)
|
|
35
36
|
session_app = typer.Typer(help="Session management")
|
|
@@ -157,6 +158,8 @@ def _bootstrap(
|
|
|
157
158
|
) -> _BootstrapContext:
|
|
158
159
|
"""Shared setup for the chat and run commands."""
|
|
159
160
|
|
|
161
|
+
from .tui.render import TerminalView
|
|
162
|
+
|
|
160
163
|
if session and continue_last:
|
|
161
164
|
raise typer.BadParameter("--session and --continue are mutually exclusive")
|
|
162
165
|
|
|
@@ -244,6 +247,8 @@ def chat(
|
|
|
244
247
|
if ctx.invoked_subcommand is not None:
|
|
245
248
|
return
|
|
246
249
|
|
|
250
|
+
from .tui.chat import TerminalChat
|
|
251
|
+
|
|
247
252
|
setup = _bootstrap(
|
|
248
253
|
provider=provider,
|
|
249
254
|
model=model,
|
|
@@ -323,6 +328,7 @@ def web(
|
|
|
323
328
|
resolved_port = port or settings.port
|
|
324
329
|
|
|
325
330
|
import uvicorn
|
|
331
|
+
from uvicorn.config import LOGGING_CONFIG
|
|
326
332
|
|
|
327
333
|
app_factory = "mycode_cli.server.app:create_web_app"
|
|
328
334
|
if dev:
|
|
@@ -334,6 +340,11 @@ def web(
|
|
|
334
340
|
port=resolved_port,
|
|
335
341
|
reload=dev,
|
|
336
342
|
factory=True,
|
|
343
|
+
timeout_graceful_shutdown=5,
|
|
344
|
+
log_config={
|
|
345
|
+
**LOGGING_CONFIG,
|
|
346
|
+
"root": {"handlers": ["default"], "level": "INFO"},
|
|
347
|
+
},
|
|
337
348
|
)
|
|
338
349
|
|
|
339
350
|
|
|
@@ -343,6 +354,8 @@ def session_list(
|
|
|
343
354
|
) -> None:
|
|
344
355
|
"""List saved sessions."""
|
|
345
356
|
|
|
357
|
+
from .tui.render import TerminalView
|
|
358
|
+
|
|
346
359
|
cwd = os.path.abspath(os.getcwd())
|
|
347
360
|
store = SessionStore(data_dir=resolve_sessions_dir())
|
|
348
361
|
view = TerminalView()
|
|
@@ -13,7 +13,6 @@ from mycode_cli.config import PermissionConfig, PermissionLevel, Settings
|
|
|
13
13
|
from mycode_cli.system_prompt import discover_skills
|
|
14
14
|
from mycode_cli.workspace import CliDeps, resolve_path
|
|
15
15
|
|
|
16
|
-
PermissionTier = Literal["readonly", "safe", "standard", "yolo"]
|
|
17
16
|
PermissionDecision = Literal["allow", "ask", "deny"]
|
|
18
17
|
ToolReviewDecision = Literal["allow", "deny"]
|
|
19
18
|
|
|
@@ -54,7 +53,7 @@ _FIND_DANGEROUS_FLAGS = {
|
|
|
54
53
|
|
|
55
54
|
|
|
56
55
|
class PermissionCheck(NamedTuple):
|
|
57
|
-
tier:
|
|
56
|
+
tier: PermissionLevel
|
|
58
57
|
preview: str
|
|
59
58
|
|
|
60
59
|
|
|
@@ -102,10 +101,8 @@ def build_permission_hooks(
|
|
|
102
101
|
return hooks
|
|
103
102
|
|
|
104
103
|
|
|
105
|
-
def permission_decision(permission: PermissionConfig, tier:
|
|
106
|
-
if permission.level
|
|
107
|
-
return "allow"
|
|
108
|
-
if tier != "yolo" and _LEVEL_RANK[tier] <= _LEVEL_RANK[permission.level]:
|
|
104
|
+
def permission_decision(permission: PermissionConfig, tier: PermissionLevel) -> PermissionDecision:
|
|
105
|
+
if _LEVEL_RANK[tier] <= _LEVEL_RANK[permission.level]:
|
|
109
106
|
return "allow"
|
|
110
107
|
return permission.mode
|
|
111
108
|
|
|
@@ -147,7 +144,7 @@ def classify_tool(
|
|
|
147
144
|
return PermissionCheck("yolo", ctx.tool_name)
|
|
148
145
|
|
|
149
146
|
|
|
150
|
-
def _classify_bash(command: str) ->
|
|
147
|
+
def _classify_bash(command: str) -> PermissionLevel:
|
|
151
148
|
if not command:
|
|
152
149
|
return "yolo"
|
|
153
150
|
# Newlines and shell expansion bypass static analysis; treat as compound.
|
|
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
from mycode.agent import Agent
|
|
6
6
|
from mycode_cli.config import ResolvedProvider, Settings
|
|
7
7
|
from mycode_cli.permissions import ToolReviewCallback, build_permission_hooks
|
|
8
|
-
from mycode_cli.sessions import SessionStore
|
|
8
|
+
from mycode_cli.sessions import SessionStore, sum_session_cost
|
|
9
9
|
from mycode_cli.system_prompt import build_system_prompt
|
|
10
10
|
from mycode_cli.tools import DEFAULT_TOOLS
|
|
11
11
|
from mycode_cli.web_tools import build_web_tools
|
|
@@ -24,18 +24,7 @@ async def load_session_cost(store: SessionStore, session_id: str) -> float | Non
|
|
|
24
24
|
discarded by rewind. Records without a cost are skipped.
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
for message in await store.load_raw_messages(session_id):
|
|
29
|
-
if message.get("role") not in {"assistant", "compact"}:
|
|
30
|
-
continue
|
|
31
|
-
meta = message.get("meta") or {}
|
|
32
|
-
cost = meta.get("cost")
|
|
33
|
-
if not isinstance(cost, dict):
|
|
34
|
-
continue
|
|
35
|
-
request_total = cost.get("total")
|
|
36
|
-
if isinstance(request_total, int | float):
|
|
37
|
-
total = sum_known_costs(total, float(request_total))
|
|
38
|
-
return total
|
|
27
|
+
return sum_session_cost(await store.load_raw_messages(session_id))
|
|
39
28
|
|
|
40
29
|
|
|
41
30
|
def build_agent(
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
"""FastAPI application entry point."""
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
3
4
|
import logging
|
|
4
|
-
from collections.abc import Sequence
|
|
5
|
+
from collections.abc import AsyncGenerator, Sequence
|
|
6
|
+
from contextlib import asynccontextmanager
|
|
5
7
|
from pathlib import Path
|
|
6
8
|
|
|
7
9
|
from fastapi import FastAPI
|
|
8
10
|
from fastapi.middleware.cors import CORSMiddleware
|
|
9
11
|
from fastapi.staticfiles import StaticFiles
|
|
10
12
|
|
|
13
|
+
from mycode_cli.config import resolve_sessions_dir
|
|
11
14
|
from mycode_cli.server.routers.chat import router as chat_router
|
|
12
15
|
from mycode_cli.server.routers.sessions import router as sessions_router
|
|
13
16
|
from mycode_cli.server.routers.settings import router as settings_router
|
|
14
17
|
from mycode_cli.server.routers.workspaces import router as workspaces_router
|
|
18
|
+
from mycode_cli.server.run_manager import RunManager
|
|
19
|
+
from mycode_cli.sessions import SessionStore
|
|
15
20
|
|
|
16
21
|
logger = logging.getLogger(__name__)
|
|
17
|
-
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
|
|
18
22
|
DEV_CORS_ORIGINS = ("http://localhost:5173", "http://127.0.0.1:5173")
|
|
19
23
|
|
|
20
24
|
|
|
@@ -24,9 +28,20 @@ def web_static_path() -> Path:
|
|
|
24
28
|
return Path(__file__).resolve().parent / "static"
|
|
25
29
|
|
|
26
30
|
|
|
31
|
+
@asynccontextmanager
|
|
32
|
+
async def lifespan(app: FastAPI) -> AsyncGenerator[None]:
|
|
33
|
+
app.state.store = await asyncio.to_thread(SessionStore, data_dir=resolve_sessions_dir())
|
|
34
|
+
runs = RunManager()
|
|
35
|
+
app.state.runs = runs
|
|
36
|
+
try:
|
|
37
|
+
yield
|
|
38
|
+
finally:
|
|
39
|
+
await runs.aclose()
|
|
40
|
+
|
|
41
|
+
|
|
27
42
|
def create_app(*, serve_web: bool = True, cors_origins: Sequence[str] = ()) -> FastAPI:
|
|
28
43
|
"""Create the FastAPI app."""
|
|
29
|
-
application = FastAPI(title="mycode")
|
|
44
|
+
application = FastAPI(title="mycode", lifespan=lifespan)
|
|
30
45
|
|
|
31
46
|
if cors_origins:
|
|
32
47
|
application.add_middleware(
|
|
@@ -3,12 +3,10 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
|
-
from
|
|
7
|
-
from typing import Annotated
|
|
6
|
+
from typing import Annotated, cast
|
|
8
7
|
|
|
9
|
-
from fastapi import Depends, HTTPException
|
|
8
|
+
from fastapi import Depends, HTTPException, Request
|
|
10
9
|
|
|
11
|
-
from mycode_cli.config import resolve_sessions_dir
|
|
12
10
|
from mycode_cli.server.run_manager import RunManager
|
|
13
11
|
from mycode_cli.sessions import SessionStore
|
|
14
12
|
|
|
@@ -22,18 +20,16 @@ def resolve_workspace_cwd(raw: str | None) -> str:
|
|
|
22
20
|
return cwd
|
|
23
21
|
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"""Return the shared session store for server requests."""
|
|
23
|
+
async def get_store(request: Request) -> SessionStore:
|
|
24
|
+
"""Return this application's session store."""
|
|
28
25
|
|
|
29
|
-
return SessionStore
|
|
26
|
+
return cast(SessionStore, request.app.state.store)
|
|
30
27
|
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"""Return the shared in-process run manager."""
|
|
29
|
+
async def get_run_manager(request: Request) -> RunManager:
|
|
30
|
+
"""Return this application's run manager."""
|
|
35
31
|
|
|
36
|
-
return RunManager
|
|
32
|
+
return cast(RunManager, request.app.state.runs)
|
|
37
33
|
|
|
38
34
|
|
|
39
35
|
StoreDep = Annotated[SessionStore, Depends(get_store)]
|
|
@@ -63,7 +63,7 @@ router = APIRouter()
|
|
|
63
63
|
def _resolve_workspace_attachment_path(rel_path: str, *, cwd: str) -> Path:
|
|
64
64
|
base = resolve_path(".", cwd=cwd)
|
|
65
65
|
path = resolve_path(rel_path, cwd=cwd)
|
|
66
|
-
if
|
|
66
|
+
if not path.is_relative_to(base):
|
|
67
67
|
raise HTTPException(status_code=400, detail=f"path outside workspace: {rel_path}")
|
|
68
68
|
return path
|
|
69
69
|
|
|
@@ -97,7 +97,9 @@ async def _build_user_message(chat: ChatRequest, cwd: str) -> ConversationMessag
|
|
|
97
97
|
for block in chat.input:
|
|
98
98
|
if block.type == "text":
|
|
99
99
|
if block.path:
|
|
100
|
-
blocks.extend(
|
|
100
|
+
blocks.extend(
|
|
101
|
+
await asyncio.to_thread(_read_workspace_text_attachment, block.path, name=block.name, cwd=cwd)
|
|
102
|
+
)
|
|
101
103
|
continue
|
|
102
104
|
text = block.text or ""
|
|
103
105
|
if block.is_attachment:
|
|
@@ -145,11 +147,8 @@ def _validate_rewind_request(
|
|
|
145
147
|
*,
|
|
146
148
|
session: dict[str, Any] | None,
|
|
147
149
|
messages: list[ConversationMessage],
|
|
148
|
-
rewind_to: int
|
|
150
|
+
rewind_to: int,
|
|
149
151
|
) -> None:
|
|
150
|
-
if rewind_to is None:
|
|
151
|
-
return
|
|
152
|
-
|
|
153
152
|
if session is None:
|
|
154
153
|
raise HTTPException(status_code=400, detail="rewind_to requires an existing session")
|
|
155
154
|
|
|
@@ -236,10 +235,11 @@ async def chat(chat: ChatRequest, store: StoreDep, runs: RunManagerDep) -> ChatR
|
|
|
236
235
|
detail={"message": "session already has a running task", "run": active},
|
|
237
236
|
)
|
|
238
237
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
238
|
+
if chat.rewind_to is not None:
|
|
239
|
+
data = await store.load_session(session_id)
|
|
240
|
+
session = cast(dict[str, Any] | None, data["session"] if data else None)
|
|
241
|
+
existing_messages = data["messages"] if data else []
|
|
242
|
+
_validate_rewind_request(session=session, messages=existing_messages, rewind_to=chat.rewind_to)
|
|
243
243
|
|
|
244
244
|
# All validation passed. Land the rewind marker (if any) and register
|
|
245
245
|
# the user turn in the catalog: first turn creates the entry and sets
|
|
@@ -374,6 +374,7 @@ async def compact_session(
|
|
|
374
374
|
session_id=session_id,
|
|
375
375
|
base_messages=agent.messages,
|
|
376
376
|
agent=agent,
|
|
377
|
+
session_cost_base=data["session_cost"],
|
|
377
378
|
on_complete=store.touch,
|
|
378
379
|
)
|
|
379
380
|
except ActiveRunError as exc:
|
|
@@ -9,7 +9,6 @@ from fastapi import APIRouter, HTTPException, Query
|
|
|
9
9
|
from fastapi import Path as PathParam
|
|
10
10
|
|
|
11
11
|
from mycode.messages import ConversationMessage
|
|
12
|
-
from mycode_cli.runtime import load_session_cost
|
|
13
12
|
from mycode_cli.server.deps import RunManagerDep, StoreDep, resolve_workspace_cwd
|
|
14
13
|
from mycode_cli.server.schemas import SessionCreateRequest, StatusResponse
|
|
15
14
|
|
|
@@ -57,19 +56,18 @@ async def load_session(
|
|
|
57
56
|
) -> dict[str, Any]:
|
|
58
57
|
"""Load a session, overlaying any active in-memory run state."""
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
59
|
+
async with runs.session_operation(session_id):
|
|
60
|
+
active = await runs.snapshot_session(session_id)
|
|
61
|
+
if active:
|
|
62
|
+
return {
|
|
63
|
+
"session": await store.load_metadata(session_id),
|
|
64
|
+
"messages": _redact_document_data(active["messages"]),
|
|
65
|
+
"session_cost": active["session_cost"],
|
|
66
|
+
"active_run": active["run"],
|
|
67
|
+
"pending_events": active["pending_events"],
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
data = await store.load_session(session_id)
|
|
73
71
|
|
|
74
72
|
if data is None:
|
|
75
73
|
return {"session": None, "messages": [], "session_cost": None, "active_run": None, "pending_events": []}
|
|
@@ -77,7 +75,7 @@ async def load_session(
|
|
|
77
75
|
return {
|
|
78
76
|
"session": data["session"],
|
|
79
77
|
"messages": _redact_document_data(data["messages"]),
|
|
80
|
-
"session_cost": session_cost,
|
|
78
|
+
"session_cost": data["session_cost"],
|
|
81
79
|
"active_run": None,
|
|
82
80
|
"pending_events": [],
|
|
83
81
|
}
|
|
@@ -168,14 +168,16 @@ def put_settings_endpoint(payload: SettingsRequest) -> dict[str, Any]:
|
|
|
168
168
|
# Three-state api_key merge: when the UI sends null / omits it, we copy the
|
|
169
169
|
# existing literal forward so secrets survive a save without round-tripping.
|
|
170
170
|
existing_providers = existing.get("providers") or {}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
171
|
+
incoming_providers = incoming.get("providers")
|
|
172
|
+
if isinstance(incoming_providers, dict):
|
|
173
|
+
for name, entry in incoming_providers.items():
|
|
174
|
+
if not isinstance(entry, dict) or entry.get("api_key") is not None:
|
|
175
|
+
continue
|
|
176
|
+
prior = existing_providers.get(name) if isinstance(existing_providers, dict) else None
|
|
177
|
+
if isinstance(prior, dict) and "api_key" in prior:
|
|
178
|
+
entry["api_key"] = prior["api_key"]
|
|
179
|
+
else:
|
|
180
|
+
entry.pop("api_key", None)
|
|
179
181
|
|
|
180
182
|
existing_web = existing.get("web") or {}
|
|
181
183
|
incoming_web = incoming.get("web") or {}
|
|
@@ -121,7 +121,7 @@ def list_workspace_files(
|
|
|
121
121
|
|
|
122
122
|
target = (base / dir).resolve(strict=False)
|
|
123
123
|
# Reject traversal outside cwd after resolving symlinks.
|
|
124
|
-
if
|
|
124
|
+
if not target.is_relative_to(base):
|
|
125
125
|
return {"entries": [], "truncated": False, "error": "path outside workspace"}
|
|
126
126
|
if not target.is_dir():
|
|
127
127
|
return {"entries": [], "truncated": False, "error": "not a directory"}
|
|
@@ -133,7 +133,7 @@ def list_workspace_files(
|
|
|
133
133
|
continue
|
|
134
134
|
try:
|
|
135
135
|
resolved = entry.resolve()
|
|
136
|
-
if
|
|
136
|
+
if not resolved.is_relative_to(base):
|
|
137
137
|
continue
|
|
138
138
|
is_dir = entry.is_dir()
|
|
139
139
|
except OSError:
|