mycode-cli 0.19.0__tar.gz → 0.19.1__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.19.0 → mycode_cli-0.19.1}/PKG-INFO +2 -2
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/pyproject.toml +2 -2
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/routers/chat.py +60 -16
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/tools.py +110 -48
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/tui/chat.py +9 -5
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/tui/terminal.py +3 -1
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/.gitignore +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/LICENSE +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/README.md +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/hatch_build.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/__init__.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/config.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/main.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/permissions.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/runtime.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/__init__.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/app.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/deps.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/routers/__init__.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/routers/sessions.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/routers/settings.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/routers/workspaces.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/run_manager.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/schemas.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/EditDiff-DOjxGJl-.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ThemeProvider-zTKbpxjH.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/abap-CLvhMVsD.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/actionscript-3--17pq3dv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ada-C5qYipkI.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/andromeeda-vGVdxbeo.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/angular-html-BVBpGdXr.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/angular-ts-BfdufMKP.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/apache-U0d_L8uA.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/apex-VAyPSnFM.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/apl-DWBSSoBH.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/applescript-CCn79oCD.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ara-4CJ0cIlV.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/asciidoc-DE70LPWp.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/asm-Cmm7eHzH.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/astro-3LtMP0Sq.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/aurora-x-CDeNXAV0.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/awk-BWXHIvNe.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ayu-dark-DluEY0Gj.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ayu-light-C3h-C4tm.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ballerina-B7ZEbQpA.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/bat-Bo4NYOV-.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/beancount-D-usSTwE.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/berry-DKpUyyne.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/bibtex-Ci_nEsc7.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/bicep-CUHmPFLl.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/bird2-C6vDhewU.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/blade-llJRbbtR.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/bsl-BkkzgIyY.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/c-Wt1voDr2.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/c3-BFHwR3_K.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/cadence-CQ2zXKGN.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/cairo-DLTphjLi.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/clarity-SemFz856.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/clojure-DqKBuwfJ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/cmake-Bj61d0ZC.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/cobol-x_HIyl2P.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/codeowners-C8r90Shi.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/codeql-oeQT6MSM.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/coffee-CThvmt4R.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/common-lisp-Cv5bFMCO.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/coq-BrsZFFmf.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/cpp-NtAeskI3.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/crystal-DNu_sX0G.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/csharp-oqKa8noW.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/css-DJp_X0uY.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/csv-Dx-8-gkx.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/cue-CE9AQfxI.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/cypher-ClKdZ_lG.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/d-qD-0Kul2.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/dark-plus-Cs2F2srj.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/dart-CnvKMtbv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/dax-BkyTk9wS.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/desktop-Dlh5hvp9.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/diff-woXpYk--.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/docker-IyjqRm3v.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/dotenv-_5a1GRtc.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/dracula-BHWKrbxM.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/dracula-soft-5eyTD99u.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/dream-maker-DW3nJb8Q.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/edge-ozw5tpLl.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/elixir-VhA6FeZt.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/elm-dREJmIFz.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/emacs-lisp-B4R74twV.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/engine-compile-Cbfz3NVV.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/erb-CIg6G69l.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/erlang-Cphh6RMH.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/everforest-dark-sB-x3p7T.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/everforest-light-Df2xbC6M.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/fennel-DQxkIbk2.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/fish-BJitypiv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/fluent-C03EYrpw.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/fsharp-D13ZGOAj.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gdresource-C0sCabJj.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gdscript-Cp2uCuqX.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gdshader-CBce3t8t.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/genie-CV2tkWYe.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gherkin-DExj1W_8.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/git-commit-BSykSTBG.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/git-rebase-B44mJPta.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/github-dark-C-LZuMrd.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/github-dark-default-DXG-b-1a.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/github-light-EUqPIrTm.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/github-light-default-BXViO-2h.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gleam-CSRkHgEL.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/glimmer-js-vH_gHG0-.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/glimmer-ts--abOzSAQ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/glsl-Dv5r7kPw.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gn-ilITqXS6.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gnuplot-7GGW24-e.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/go-rLFTqkRN.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/graphql-CB4jsw2E.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/groovy-CacY0gHj.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/hack-DvEYX148.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/haml-zE6W3STP.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/handlebars-CzBR2SDs.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/haskell-D8IpX4py.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/haxe-OTjmBuCE.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/hcl-Dh228itO.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/highlighter-CZbuWYc3.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/hjson-CxZEssPk.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/hlsl-Cvrh5tZx.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/horizon-CE9ld1lL.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/horizon-bright-DSNQnXHK.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/houston-CsvMBhTu.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/html-C8UlPnhE.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/html-derivative-CY6NRz-J.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/http-Cyd7bS_S.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/hurl-CWPsiEpf.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/hxml-B0Qn7Nwc.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/hy-CZbG8q4J.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/imba-DsUTQ-LC.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/index-CrhooK9g.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/index-D9h4EXyc.css +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ini-B5eOa1yu.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/java-CGc3VwQr.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/javascript-CUt1pgmJ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/jinja-CD-Z-FLd.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/jison-imPNup1l.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/json-Bg9ijW3F.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/json5-BR5RXkoi.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/jsonc-CYpm1nAK.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/jsonl-CmCQp5Yx.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/jsonnet-CJTPZ8u_.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/jssm-DXw9l8Rf.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/jsx-CY6oMTks.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/julia-Dc3O-irA.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/just-BhOq_Kbv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/kdl-CsD5j6eV.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/kotlin-DhhofPvG.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/kusto-C7mF5XQf.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/laserwave-C_8bwKvT.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/latex-Cu4Y1d5w.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/lean-CewbzKMR.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/less-DVTAwKKz.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/light-plus-DVQuIRkW.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/liquid-CvXMrjlQ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/llvm-Cm23YOpf.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/log-BNLmms1o.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/logo-Cluzi2Zq.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/lua-BjLEUjKY.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/luau-FMPmPwt6.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/make-Dixweg8N.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/markdown-BYOwaDjH.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/marko-DvhNOisQ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/material-theme-Bm3Qr25_.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/matlab-D7qyCx1q.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/mdc-Bm9TpL1X.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/mdx-DQZ5AkYe.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/mermaid-Bk4SNUv9.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/min-dark-BSWPekZh.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/min-light-DDpmG2fV.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/mipsasm-BMqwQI7S.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/mojo-BgCJLMeH.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/monokai-CdkpiU2Y.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/moonbit-CaWjb8XO.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/move-B1IS1UjX.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/narrat-_X_XdTYD.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/nextflow-BJtWHP5T.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/nextflow-groovy-DJMQeKeT.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/nginx-Bhc82uuv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/night-owl-DhmEMT88.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/nim-DXTVBFnF.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/nix-IvuFDN5E.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/nord-Cb4Vim4T.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/nushell-DcLAeLz5.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/objective-c-D1A_Heim.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/objective-cpp-BsSzOQcm.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ocaml-O90oeIOV.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/odin-B1RWQWA5.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/one-light-D7Lr4KcI.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/openscad-BUDT5pXO.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pascal-4ZHwLPI5.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/perl-C7veXV9z.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/php-BRiuMnnr.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pierre-dark-sU4Zdns8.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pierre-dark-soft-HXgun5vs.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pierre-dark-vibrant-D4RhcSIK.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pierre-light-DWBk51d8.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pierre-light-soft-CodEzPxf.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pierre-light-vibrant-B76X7i5Y.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pkl-ot-7Btpt.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/plastic-DQwYfKfQ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/plsql-DGHpHOYJ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/po-BiJDBrnU.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/poimandres-DRFjx7u4.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/polar-C7UOKdEL.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/postcss-BXeXVLqQ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/powerquery-DNMTfnFr.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/powershell-DshXNtvi.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/preload-helper-FMEmyu_K.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/prisma-BsRQq5mF.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/prolog-iXnhIJG7.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/proto-DB4EqR-F.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/pug-C5hz5LQ7.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/puppet-CDv2pdJW.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/purescript-9MfHhQsQ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/python-gzcpVVnB.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/qml-BdUV3aTS.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/qmldir-DCQb3MpD.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/qss-Fe1Jh2GI.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/r-8R7vtdQc.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/racket-DcIDlBhZ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/raku-B3gFvitq.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/razor-DRL52XO2.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/red-CJ3rzSJv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/reg-CRGYupPL.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/regexp-Omp9DhTb.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rel-BtDbiS_P.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/riscv-Ckw8ddFX.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rolldown-runtime-QTnfLwEv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ron-VUp2lXgN.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rose-pine-BthvhNj6.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rosmsg-CAekHB0j.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rst-BHX71KW9.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ruby-B--HzjGU.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/rust-Cfkwpbl8.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/sas-DrLaYOK_.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/sass-DXrisJhu.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/scala-DKOlJaKm.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/scheme-DQCgrYNe.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/scss-DdSxiZKl.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/sdbl-bTVj8UrX.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/shaderlab-TOUzSsQk.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/shellscript-DwcUjJBL.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/shellsession-CPZkydE6.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/slack-dark-DnToyrRv.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/slack-ochin-B2OO5cIa.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/smalltalk-B16xEiuN.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/snazzy-light-4G7pJPwS.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/solarized-dark-DV17i1UV.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/solarized-light-DSh2HLQt.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/solidity-CKzVLygQ.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/soy-Br5FhD7c.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/sparql-D_iOobhT.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/splunk-BC2Px7Mm.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/sql-DNssxck8.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ssh-config-BgfXC-Er.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/stata-DXn1tqOr.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/stylus-B6D30XZt.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/surrealql-IeLNQw0f.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/svelte-DOdLCIlh.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/swift-DonLKvLd.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/synthwave-84-nFMaYfgc.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/system-verilog-DJ5XKQeo.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/systemd-BxMlprV5.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/talonscript-CohzipZa.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/tasl-DMoTqEGO.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/tcl-CZd0xW_V.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/templ-CIwIngms.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/terraform-DswuEJGm.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/tex-D8QMumu5.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/tokyo-night-oM2G3aXe.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/toml-CcmNWLt0.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/ts-tags-BMVY4q-l.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/tsv-sltzmVWM.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/tsx-5Eka4NBX.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/turtle-ByJddavk.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/twig-C8o_5mgw.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/typescript-DOu2WMV5.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/typespec-BRdr0IET.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/typst-DI99ib-x.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/v-DETTlOr0.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vala-zf12oZj6.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vb-Djn5o6TS.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/verilog-CiiDBU1e.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vesper-DdrHHSXu.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vhdl-BroJfC0k.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/viml-DvXPmvsu.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vitesse-black-fwtXNY1n.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vitesse-light-VbXTXTou.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vue-BU18DNDL.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vue-html-BeluIYX0.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vue-vine-DGUAbOCX.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/vyper-CgoNMtux.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/wasm-BnjxR4X6.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/wasm-ByWQv1Qj.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/wenyan-C8pVoKbM.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/wgsl-BsKzXJz4.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/wikitext-ClFFjSW2.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/wit-DdvCle-K.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/wolfram-DLL8P-h_.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/xml-DIqSwXR3.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/xsl-Ct_-YIAy.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/yaml-DTtCYNlS.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/zenscript-BnlCZFoB.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/zig-CMLA9XwU.js +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/favicon_slashes.svg +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/fonts/OFL.txt +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/fonts/SourceCodePro-Variable.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/fonts/SourceSans3-Variable.woff2 +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/index.html +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/sessions.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/state.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/system_prompt.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/tui/__init__.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/tui/markdown.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/tui/render.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/tui/theme.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/web_tools.py +0 -0
- {mycode_cli-0.19.0 → mycode_cli-0.19.1}/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.19.
|
|
3
|
+
Version: 0.19.1
|
|
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.19.
|
|
28
|
+
Requires-Dist: mycode-sdk==0.19.1
|
|
29
29
|
Requires-Dist: prompt-toolkit>=3.0.52
|
|
30
30
|
Requires-Dist: pydantic>=2.13.4
|
|
31
31
|
Requires-Dist: pygments>=2.20.0
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mycode-cli"
|
|
7
|
-
version = "0.19.
|
|
7
|
+
version = "0.19.1"
|
|
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.19.
|
|
29
|
+
"mycode-sdk==0.19.1",
|
|
30
30
|
"fastapi>=0.139.0",
|
|
31
31
|
"uvicorn[standard]>=0.51.0",
|
|
32
32
|
"rich>=15.0.0",
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
|
+
import io
|
|
6
7
|
import json
|
|
7
8
|
import os
|
|
8
9
|
from base64 import b64encode
|
|
@@ -10,6 +11,7 @@ from collections.abc import AsyncIterator
|
|
|
10
11
|
from dataclasses import replace
|
|
11
12
|
from pathlib import Path
|
|
12
13
|
from typing import Annotated, Any, cast
|
|
14
|
+
from uuid import uuid4
|
|
13
15
|
|
|
14
16
|
from fastapi import APIRouter, HTTPException, Query, Request
|
|
15
17
|
from fastapi import Path as PathParam
|
|
@@ -58,7 +60,8 @@ from mycode_cli.server.schemas import (
|
|
|
58
60
|
UserInputRequest,
|
|
59
61
|
)
|
|
60
62
|
from mycode_cli.system_prompt import build_skill_snapshot_blocks, discover_slash_skills
|
|
61
|
-
from mycode_cli.
|
|
63
|
+
from mycode_cli.tools import read_text_window
|
|
64
|
+
from mycode_cli.workspace import CliDeps, resolve_path
|
|
62
65
|
|
|
63
66
|
router = APIRouter()
|
|
64
67
|
|
|
@@ -72,7 +75,7 @@ def _resolve_workspace_attachment_path(rel_path: str, *, cwd: str) -> Path:
|
|
|
72
75
|
|
|
73
76
|
|
|
74
77
|
def _read_workspace_text_attachment(rel_path: str, *, name: str | None, cwd: str) -> list[dict[str, Any]]:
|
|
75
|
-
"""Read a workspace text file selected via the @ menu into a `<file>` block
|
|
78
|
+
"""Read a workspace text file selected via the @ menu into a `<file>` block, bounded like ``read``.
|
|
76
79
|
|
|
77
80
|
Re-validates the path at send time: it must resolve inside ``cwd`` (guards
|
|
78
81
|
against a symlink swapped in after selection), be a regular file, and be
|
|
@@ -84,16 +87,40 @@ def _read_workspace_text_attachment(rel_path: str, *, name: str | None, cwd: str
|
|
|
84
87
|
if detect_image_mime_type(path) or detect_document_mime_type(path):
|
|
85
88
|
raise HTTPException(status_code=400, detail=f"not a text file: {rel_path}")
|
|
86
89
|
try:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
with path.open(encoding="utf-8") as file:
|
|
91
|
+
window = read_text_window(file)
|
|
92
|
+
except UnicodeDecodeError as exc:
|
|
93
|
+
raise HTTPException(status_code=400, detail=f"not UTF-8 text: {rel_path}") from exc
|
|
94
|
+
return build_attachment_blocks([Attachment.text(window.render(path), name=name or rel_path)])
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def _write_uploads(uploads: dict[Path, str]) -> None:
|
|
98
|
+
for path, text in uploads.items():
|
|
99
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
100
|
+
path.write_text(text, encoding="utf-8")
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _remove_uploads(uploads: dict[Path, str]) -> None:
|
|
104
|
+
"""Undo ``_write_uploads`` for a message the run refused."""
|
|
105
|
+
|
|
106
|
+
for path in uploads:
|
|
107
|
+
path.unlink(missing_ok=True)
|
|
90
108
|
|
|
91
109
|
|
|
92
|
-
async def _build_user_message(chat: UserInputRequest,
|
|
110
|
+
async def _build_user_message(chat: UserInputRequest, deps: CliDeps) -> tuple[ConversationMessage, dict[Path, str]]:
|
|
111
|
+
"""Build the user message and the uploads to save before it is sent.
|
|
112
|
+
|
|
113
|
+
A text upload that does not fit one read window is shown truncated, and its
|
|
114
|
+
full text is returned for ``tool_output_dir`` so the model can read the rest.
|
|
115
|
+
The caller writes it once the request has passed validation.
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
cwd = str(deps.cwd)
|
|
119
|
+
uploads: dict[Path, str] = {}
|
|
93
120
|
if not chat.input:
|
|
94
121
|
text = str(chat.message or "").strip()
|
|
95
122
|
snapshots = await asyncio.to_thread(build_skill_snapshot_blocks, text, cwd)
|
|
96
|
-
return build_message("user", [*snapshots, text_block(text)])
|
|
123
|
+
return build_message("user", [*snapshots, text_block(text)]), uploads
|
|
97
124
|
|
|
98
125
|
blocks: list[dict[str, Any]] = []
|
|
99
126
|
visible_text: list[str] = []
|
|
@@ -106,7 +133,12 @@ async def _build_user_message(chat: UserInputRequest, cwd: str) -> ConversationM
|
|
|
106
133
|
continue
|
|
107
134
|
text = block.text or ""
|
|
108
135
|
if block.is_attachment:
|
|
109
|
-
|
|
136
|
+
name = str(block.name or "attached-file")
|
|
137
|
+
window = read_text_window(io.StringIO(text, newline=None))
|
|
138
|
+
upload_path = deps.tool_output_dir / f"upload-{uuid4().hex}"
|
|
139
|
+
if window.partial:
|
|
140
|
+
uploads[upload_path] = text
|
|
141
|
+
blocks.extend(build_attachment_blocks([Attachment.text(window.render(upload_path), name=name)]))
|
|
110
142
|
elif text:
|
|
111
143
|
visible_text.append(text)
|
|
112
144
|
blocks.append(text_block(text))
|
|
@@ -143,7 +175,7 @@ async def _build_user_message(chat: UserInputRequest, cwd: str) -> ConversationM
|
|
|
143
175
|
raise HTTPException(status_code=400, detail="input must include at least one non-empty block")
|
|
144
176
|
snapshots = await asyncio.to_thread(build_skill_snapshot_blocks, "\n".join(visible_text), cwd)
|
|
145
177
|
blocks[:0] = snapshots
|
|
146
|
-
return build_message("user", blocks)
|
|
178
|
+
return build_message("user", blocks), uploads
|
|
147
179
|
|
|
148
180
|
|
|
149
181
|
def _check_input_support(message: ConversationMessage, model: ModelMetadata | RunAgent) -> None:
|
|
@@ -193,7 +225,9 @@ async def chat(chat: ChatRequest, store: StoreDep, runs: RunManagerDep) -> ChatR
|
|
|
193
225
|
api_base=chat.api_base,
|
|
194
226
|
)
|
|
195
227
|
session_id = chat.session_id or "default"
|
|
196
|
-
user_message = await _build_user_message(
|
|
228
|
+
user_message, uploads = await _build_user_message(
|
|
229
|
+
chat, CliDeps.for_session(cwd=cwd, data_dir=store.data_dir, session_id=session_id)
|
|
230
|
+
)
|
|
197
231
|
|
|
198
232
|
# Capability check before any disk mutation — a failed check must not
|
|
199
233
|
# leave an empty session on disk or land a premature rewind marker.
|
|
@@ -248,9 +282,10 @@ async def chat(chat: ChatRequest, store: StoreDep, runs: RunManagerDep) -> ChatR
|
|
|
248
282
|
existing_messages = data["messages"] if data else []
|
|
249
283
|
_validate_rewind_request(session=session, messages=existing_messages, rewind_to=chat.rewind_to)
|
|
250
284
|
|
|
251
|
-
# All validation passed.
|
|
252
|
-
# the user turn in the catalog: first turn creates the
|
|
253
|
-
# the title, later turns bump updated_at.
|
|
285
|
+
# All validation passed. Save uploads, land the rewind marker (if any)
|
|
286
|
+
# and register the user turn in the catalog: first turn creates the
|
|
287
|
+
# entry and sets the title, later turns bump updated_at.
|
|
288
|
+
await asyncio.to_thread(_write_uploads, uploads)
|
|
254
289
|
if chat.rewind_to is not None:
|
|
255
290
|
await store.append_rewind(session_id, chat.rewind_to)
|
|
256
291
|
session = await store.record_user_turn(
|
|
@@ -398,17 +433,22 @@ async def compact_session(
|
|
|
398
433
|
|
|
399
434
|
@router.post("/runs/{run_id}/steer")
|
|
400
435
|
async def steer_run(
|
|
401
|
-
run_id: Annotated[str, PathParam(min_length=1)], body: PendingInputRequest, runs: RunManagerDep
|
|
436
|
+
run_id: Annotated[str, PathParam(min_length=1)], body: PendingInputRequest, store: StoreDep, runs: RunManagerDep
|
|
402
437
|
) -> RunResponse:
|
|
403
438
|
"""Hand a user message to the running chat for its next step boundary."""
|
|
404
439
|
|
|
405
440
|
state = await runs.get_run(run_id)
|
|
406
441
|
if state is None:
|
|
407
442
|
raise HTTPException(status_code=404, detail="run not found")
|
|
408
|
-
message = await _build_user_message(
|
|
443
|
+
message, uploads = await _build_user_message(
|
|
444
|
+
body, CliDeps.for_session(cwd=state.cwd, data_dir=store.data_dir, session_id=state.session_id)
|
|
445
|
+
)
|
|
409
446
|
message["meta"] = {"input_id": body.input_id}
|
|
410
447
|
_check_input_support(message, state.agent)
|
|
448
|
+
# Uploads are on disk before the model can see the message; a refusal removes them.
|
|
449
|
+
await asyncio.to_thread(_write_uploads, uploads)
|
|
411
450
|
if not state.agent.steer(message):
|
|
451
|
+
await asyncio.to_thread(_remove_uploads, uploads)
|
|
412
452
|
raise HTTPException(
|
|
413
453
|
status_code=409,
|
|
414
454
|
detail={"message": "run is not accepting steers", "run": state.info()},
|
|
@@ -428,10 +468,14 @@ async def queue_message(
|
|
|
428
468
|
state = await runs.get_active_run(session_id)
|
|
429
469
|
if state is None:
|
|
430
470
|
raise HTTPException(status_code=409, detail={"message": "session has no running chat to queue on"})
|
|
431
|
-
message = await _build_user_message(
|
|
471
|
+
message, uploads = await _build_user_message(
|
|
472
|
+
body, CliDeps.for_session(cwd=state.cwd, data_dir=store.data_dir, session_id=session_id)
|
|
473
|
+
)
|
|
432
474
|
message["meta"] = {"input_id": body.input_id}
|
|
433
475
|
_check_input_support(message, state.agent)
|
|
476
|
+
await asyncio.to_thread(_write_uploads, uploads)
|
|
434
477
|
if not await runs.enqueue(state, message):
|
|
478
|
+
await asyncio.to_thread(_remove_uploads, uploads)
|
|
435
479
|
raise HTTPException(status_code=409, detail={"message": "session has no running chat to queue on"})
|
|
436
480
|
await store.record_user_turn(
|
|
437
481
|
session_id,
|
|
@@ -20,7 +20,7 @@ from contextlib import suppress
|
|
|
20
20
|
from dataclasses import dataclass
|
|
21
21
|
from difflib import SequenceMatcher, unified_diff
|
|
22
22
|
from pathlib import Path
|
|
23
|
-
from typing import BinaryIO
|
|
23
|
+
from typing import BinaryIO, TextIO
|
|
24
24
|
from uuid import uuid4
|
|
25
25
|
|
|
26
26
|
from pydantic import BaseModel, ConfigDict, Field
|
|
@@ -37,6 +37,7 @@ from mycode_cli.workspace import CliDeps, resolve_path
|
|
|
37
37
|
DEFAULT_MAX_LINES = 2000
|
|
38
38
|
DEFAULT_MAX_BYTES = 50 * 1024
|
|
39
39
|
READ_MAX_LINE_CHARS = 2000
|
|
40
|
+
_READ_SKIP_CHUNK_CHARS = 64 * 1024
|
|
40
41
|
BASH_TIMEOUT_SECONDS = 120
|
|
41
42
|
_BASH_READ_CHUNK_SIZE = 64 * 1024
|
|
42
43
|
|
|
@@ -46,6 +47,110 @@ _BASH_READ_CHUNK_SIZE = 64 * 1024
|
|
|
46
47
|
# ---------------------------------------------------------------------------
|
|
47
48
|
|
|
48
49
|
|
|
50
|
+
@dataclass(frozen=True)
|
|
51
|
+
class TextWindow:
|
|
52
|
+
"""One bounded read of a text file: the lines that fit and what was left out."""
|
|
53
|
+
|
|
54
|
+
text: str
|
|
55
|
+
start_line: int
|
|
56
|
+
# Lines consumed from the top of the file, skipped ones included.
|
|
57
|
+
lines_read: int
|
|
58
|
+
# First line not shown because a line or byte limit was reached.
|
|
59
|
+
next_offset: int | None
|
|
60
|
+
first_shortened_line: int | None
|
|
61
|
+
shortened_lines: int
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def partial(self) -> bool:
|
|
65
|
+
"""Whether part of the file from ``start_line`` on is not in ``text``."""
|
|
66
|
+
|
|
67
|
+
return self.next_offset is not None or self.shortened_lines > 0
|
|
68
|
+
|
|
69
|
+
def render(self, path: Path) -> str:
|
|
70
|
+
"""Return ``text`` followed by notices telling the model how to read what was left out of ``path``."""
|
|
71
|
+
|
|
72
|
+
parts = [self.text] if self.text else []
|
|
73
|
+
if self.next_offset is not None:
|
|
74
|
+
parts.append(
|
|
75
|
+
f"[Showing lines {self.start_line}-{self.next_offset - 1} of {path}. "
|
|
76
|
+
+ f"Use read with offset={self.next_offset} to continue.]"
|
|
77
|
+
)
|
|
78
|
+
if self.first_shortened_line is not None:
|
|
79
|
+
quoted = shlex.quote(str(path))
|
|
80
|
+
line = self.first_shortened_line
|
|
81
|
+
prefix = f"[Line {line} was shortened to {READ_MAX_LINE_CHARS} chars."
|
|
82
|
+
if self.shortened_lines > 1:
|
|
83
|
+
prefix = (
|
|
84
|
+
f"[{self.shortened_lines} lines were shortened to {READ_MAX_LINE_CHARS} chars. "
|
|
85
|
+
f"First shortened line: {line}."
|
|
86
|
+
)
|
|
87
|
+
parts.append(
|
|
88
|
+
f"{prefix}\n"
|
|
89
|
+
+ "Use bash to inspect it in bytes:\n"
|
|
90
|
+
+ f"sed -n '{line}p' {quoted} | head -c 2000\n"
|
|
91
|
+
+ f"sed -n '{line}p' {quoted} | tail -c +2001 | head -c 2000]"
|
|
92
|
+
)
|
|
93
|
+
return "\n\n".join(parts)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def read_text_window(file: TextIO, *, offset: int = 1, limit: int = DEFAULT_MAX_LINES) -> TextWindow:
|
|
97
|
+
"""Read up to ``limit`` lines from 1-indexed ``offset``, capped at ``DEFAULT_MAX_BYTES`` of UTF-8.
|
|
98
|
+
|
|
99
|
+
At most ``READ_MAX_LINE_CHARS + 1`` chars of a line are held at once; longer
|
|
100
|
+
lines are shortened. Reading stops once the window is full, without
|
|
101
|
+
scanning the line that did not fit.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
lines: list[str] = []
|
|
105
|
+
size = 0
|
|
106
|
+
lines_read = 0
|
|
107
|
+
next_offset: int | None = None
|
|
108
|
+
first_shortened_line: int | None = None
|
|
109
|
+
shortened_lines = 0
|
|
110
|
+
while True:
|
|
111
|
+
if len(lines) >= limit:
|
|
112
|
+
# Probe one char instead of reading a possibly huge next line.
|
|
113
|
+
if file.read(1):
|
|
114
|
+
next_offset = lines_read + 1
|
|
115
|
+
break
|
|
116
|
+
head = file.readline(READ_MAX_LINE_CHARS + 1)
|
|
117
|
+
if not head:
|
|
118
|
+
break
|
|
119
|
+
lines_read += 1
|
|
120
|
+
shortened = not head.endswith("\n") and len(head) > READ_MAX_LINE_CHARS
|
|
121
|
+
if lines_read < offset:
|
|
122
|
+
if shortened:
|
|
123
|
+
_skip_line(file)
|
|
124
|
+
continue
|
|
125
|
+
line = head[:READ_MAX_LINE_CHARS] + " ... [line truncated]" if shortened else head.rstrip("\r\n")
|
|
126
|
+
line_bytes = len(line.encode("utf-8")) + 1
|
|
127
|
+
# A shortened line is at most a few KB, so the first line always fits.
|
|
128
|
+
if size + line_bytes > DEFAULT_MAX_BYTES:
|
|
129
|
+
next_offset = lines_read
|
|
130
|
+
break
|
|
131
|
+
if shortened:
|
|
132
|
+
_skip_line(file)
|
|
133
|
+
first_shortened_line = first_shortened_line or lines_read
|
|
134
|
+
shortened_lines += 1
|
|
135
|
+
lines.append(line)
|
|
136
|
+
size += line_bytes
|
|
137
|
+
return TextWindow(
|
|
138
|
+
text="\n".join(lines),
|
|
139
|
+
start_line=offset,
|
|
140
|
+
lines_read=lines_read,
|
|
141
|
+
next_offset=next_offset,
|
|
142
|
+
first_shortened_line=first_shortened_line,
|
|
143
|
+
shortened_lines=shortened_lines,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def _skip_line(file: TextIO) -> None:
|
|
148
|
+
"""Consume the rest of the current line in bounded chunks."""
|
|
149
|
+
|
|
150
|
+
while (rest := file.readline(_READ_SKIP_CHUNK_CHARS)) and not rest.endswith("\n"):
|
|
151
|
+
pass
|
|
152
|
+
|
|
153
|
+
|
|
49
154
|
@tool(
|
|
50
155
|
name="read",
|
|
51
156
|
description=(
|
|
@@ -94,28 +199,9 @@ def read_tool(
|
|
|
94
199
|
|
|
95
200
|
start_line = offset if offset is not None and offset > 0 else 1
|
|
96
201
|
line_limit = limit if limit is not None and limit > 0 else DEFAULT_MAX_LINES
|
|
97
|
-
lines: list[str] = []
|
|
98
|
-
total_lines = 0
|
|
99
|
-
next_offset: int | None = None
|
|
100
|
-
first_shortened_line: int | None = None
|
|
101
|
-
shortened_lines = 0
|
|
102
|
-
|
|
103
202
|
try:
|
|
104
203
|
with file_path.open("r", encoding="utf-8") as f:
|
|
105
|
-
|
|
106
|
-
if total_lines < start_line:
|
|
107
|
-
continue
|
|
108
|
-
if len(lines) >= line_limit:
|
|
109
|
-
next_offset = total_lines
|
|
110
|
-
break
|
|
111
|
-
|
|
112
|
-
line = raw_line.rstrip("\r\n")
|
|
113
|
-
if len(line) > READ_MAX_LINE_CHARS:
|
|
114
|
-
if first_shortened_line is None:
|
|
115
|
-
first_shortened_line = total_lines
|
|
116
|
-
shortened_lines += 1
|
|
117
|
-
line = line[:READ_MAX_LINE_CHARS] + " ... [line truncated]"
|
|
118
|
-
lines.append(line)
|
|
204
|
+
window = read_text_window(f, offset=start_line, limit=line_limit)
|
|
119
205
|
except FileNotFoundError:
|
|
120
206
|
return ToolExecutionResult(output=f"error: file not found: {path}", is_error=True)
|
|
121
207
|
except IsADirectoryError:
|
|
@@ -125,37 +211,13 @@ def read_tool(
|
|
|
125
211
|
except Exception as exc:
|
|
126
212
|
return ToolExecutionResult(output=f"error: failed to read file: {exc}", is_error=True)
|
|
127
213
|
|
|
128
|
-
if
|
|
214
|
+
if window.lines_read < start_line and not (window.lines_read == 0 and start_line == 1):
|
|
129
215
|
return ToolExecutionResult(
|
|
130
|
-
output=f"error: offset {offset} beyond end of file ({
|
|
216
|
+
output=f"error: offset {offset} beyond end of file ({window.lines_read} lines)",
|
|
131
217
|
is_error=True,
|
|
132
218
|
)
|
|
133
219
|
|
|
134
|
-
|
|
135
|
-
content = "\n".join(lines)
|
|
136
|
-
if content:
|
|
137
|
-
parts.append(content)
|
|
138
|
-
|
|
139
|
-
if next_offset is not None:
|
|
140
|
-
parts.append(f"[Showing lines {start_line}-{next_offset - 1}. Use offset={next_offset} to continue.]")
|
|
141
|
-
|
|
142
|
-
if first_shortened_line is not None:
|
|
143
|
-
quoted = shlex.quote(str(file_path))
|
|
144
|
-
prefix = f"[Line {first_shortened_line} was shortened to {READ_MAX_LINE_CHARS} chars."
|
|
145
|
-
if shortened_lines > 1:
|
|
146
|
-
prefix = (
|
|
147
|
-
f"[{shortened_lines} lines were shortened to {READ_MAX_LINE_CHARS} chars. "
|
|
148
|
-
f"First shortened line: {first_shortened_line}."
|
|
149
|
-
)
|
|
150
|
-
parts.append(
|
|
151
|
-
f"{prefix}\n"
|
|
152
|
-
+ "Use bash to inspect it in bytes:\n"
|
|
153
|
-
+ f"sed -n '{first_shortened_line}p' {quoted} | head -c 2000\n"
|
|
154
|
-
+ f"sed -n '{first_shortened_line}p' {quoted} | tail -c +2001 | head -c 2000]"
|
|
155
|
-
)
|
|
156
|
-
|
|
157
|
-
joined = "\n\n".join(parts) if parts else ""
|
|
158
|
-
return ToolExecutionResult(output=joined)
|
|
220
|
+
return ToolExecutionResult(output=window.render(file_path))
|
|
159
221
|
|
|
160
222
|
|
|
161
223
|
# ---------------------------------------------------------------------------
|
|
@@ -52,6 +52,7 @@ from mycode_cli.runtime import load_session_totals
|
|
|
52
52
|
from mycode_cli.sessions import SessionStore
|
|
53
53
|
from mycode_cli.state import load_state, save_state
|
|
54
54
|
from mycode_cli.system_prompt import build_skill_snapshot_blocks, discover_slash_skills
|
|
55
|
+
from mycode_cli.tools import read_text_window
|
|
55
56
|
from mycode_cli.workspace import CliDeps, resolve_path
|
|
56
57
|
|
|
57
58
|
from .render import (
|
|
@@ -584,13 +585,16 @@ class TerminalChat:
|
|
|
584
585
|
unsupported_attachment_block(name=path_text, mime_type=pdf, kind="document", path=path_text)
|
|
585
586
|
)
|
|
586
587
|
continue
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
588
|
+
if img or pdf:
|
|
589
|
+
blocks.extend(build_attachment_blocks([Attachment.path(path)]))
|
|
590
|
+
continue
|
|
591
|
+
# Text keeps the resolved path as its visible name; a non-UTF-8 binary is skipped.
|
|
590
592
|
try:
|
|
591
|
-
|
|
592
|
-
|
|
593
|
+
with path.open(encoding="utf-8") as file:
|
|
594
|
+
window = read_text_window(file)
|
|
595
|
+
except UnicodeDecodeError:
|
|
593
596
|
continue
|
|
597
|
+
blocks.extend(build_attachment_blocks([Attachment.text(window.render(path), name=path_text)]))
|
|
594
598
|
|
|
595
599
|
return build_message("user", blocks)
|
|
596
600
|
|
|
@@ -28,7 +28,7 @@ from prompt_toolkit.key_binding import ConditionalKeyBindings, KeyBindings, merg
|
|
|
28
28
|
from prompt_toolkit.key_binding.defaults import load_key_bindings
|
|
29
29
|
from prompt_toolkit.key_binding.key_processor import KeyPressEvent
|
|
30
30
|
from prompt_toolkit.keys import Keys
|
|
31
|
-
from prompt_toolkit.layout import ConditionalContainer, Float, FloatContainer, HSplit, Layout, Window
|
|
31
|
+
from prompt_toolkit.layout import ConditionalContainer, Float, FloatContainer, HSplit, Layout, ScrollOffsets, Window
|
|
32
32
|
from prompt_toolkit.layout.controls import BufferControl, FormattedTextControl
|
|
33
33
|
from prompt_toolkit.layout.dimension import Dimension
|
|
34
34
|
from prompt_toolkit.layout.menus import CompletionsMenu
|
|
@@ -198,6 +198,8 @@ class Terminal:
|
|
|
198
198
|
height=lambda: Dimension(max=self.tail_height),
|
|
199
199
|
dont_extend_height=True,
|
|
200
200
|
always_hide_cursor=True,
|
|
201
|
+
# Keeps the heading above a group's first row in view when scrolling up.
|
|
202
|
+
scroll_offsets=ScrollOffsets(top=1),
|
|
201
203
|
)
|
|
202
204
|
|
|
203
205
|
busy = Condition(lambda: self._busy)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mycode_cli-0.19.0 → mycode_cli-0.19.1}/src/mycode_cli/server/static/assets/EditDiff-DOjxGJl-.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|