mycode-cli 0.12.0__tar.gz → 0.13.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.12.0 → mycode_cli-0.13.0}/PKG-INFO +7 -3
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/hatch_build.py +3 -7
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/pyproject.toml +6 -2
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/config.py +105 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/permissions.py +12 -1
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/runtime.py +11 -14
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/routers/sessions.py +5 -29
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/routers/settings.py +49 -23
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/run_manager.py +27 -4
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/schemas.py +4 -2
- mycode_cli-0.12.0/src/mycode_cli/server/static/assets/EditDiff-BdzVMJTv.js → mycode_cli-0.13.0/src/mycode_cli/server/static/assets/EditDiff-DKu81Ilp.js +1 -1
- mycode_cli-0.12.0/src/mycode_cli/server/static/assets/ThemeProvider-iAQ4moZx.js → mycode_cli-0.13.0/src/mycode_cli/server/static/assets/ThemeProvider-zTKbpxjH.js +1 -1
- mycode_cli-0.13.0/src/mycode_cli/server/static/assets/index-CxbWFIm9.css +1 -0
- mycode_cli-0.12.0/src/mycode_cli/server/static/assets/index-BBszk64q.js → mycode_cli-0.13.0/src/mycode_cli/server/static/assets/index-DwIE3pX3.js +64 -64
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/index.html +4 -9
- mycode_cli-0.13.0/src/mycode_cli/tools.py +730 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/tui/chat.py +1 -2
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/tui/render.py +37 -16
- mycode_cli-0.13.0/src/mycode_cli/web_tools.py +490 -0
- mycode_cli-0.12.0/src/mycode_cli/server/static/assets/index-lAFTiS0F.css +0 -1
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/.gitignore +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/LICENSE +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/README.md +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/__init__.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/main.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/__init__.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/app.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/deps.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/routers/__init__.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/routers/chat.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/routers/workspaces.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/abap-CLvhMVsD.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/actionscript-3--17pq3dv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ada-C5qYipkI.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/andromeeda-vGVdxbeo.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/angular-html-BVBpGdXr.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/angular-ts-BfdufMKP.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/apache-U0d_L8uA.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/apex-VAyPSnFM.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/apl-DWBSSoBH.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/applescript-CCn79oCD.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ara-4CJ0cIlV.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/asciidoc-DE70LPWp.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/asm-Cmm7eHzH.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/astro-3LtMP0Sq.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/aurora-x-CDeNXAV0.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/awk-BWXHIvNe.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ayu-dark-DluEY0Gj.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ayu-light-C3h-C4tm.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ayu-mirage-Bqwy1Gya.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ballerina-B7ZEbQpA.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/bat-Bo4NYOV-.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/beancount-D-usSTwE.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/berry-DKpUyyne.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/bibtex-Ci_nEsc7.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/bicep-CUHmPFLl.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/bird2-C6vDhewU.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/blade-llJRbbtR.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/bsl-BkkzgIyY.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/c-Wt1voDr2.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/c3-BFHwR3_K.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/cadence-CQ2zXKGN.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/cairo-DLTphjLi.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/catppuccin-frappe-3VR1Za6u.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/catppuccin-latte-DwIHMF0Q.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/catppuccin-macchiato-DYnBP6_5.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/catppuccin-mocha-DYhrFGRu.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/clarity-SemFz856.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/clojure-DqKBuwfJ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/cmake-Bj61d0ZC.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/cobol-x_HIyl2P.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/codeowners-C8r90Shi.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/codeql-oeQT6MSM.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/coffee-CThvmt4R.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/common-lisp-Cv5bFMCO.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/coq-BrsZFFmf.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/cpp-NtAeskI3.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/crystal-DNu_sX0G.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/csharp-oqKa8noW.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/css-DJp_X0uY.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/csv-Dx-8-gkx.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/cue-CE9AQfxI.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/cypher-ClKdZ_lG.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/d-qD-0Kul2.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/dark-plus-Cs2F2srj.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/dart-CnvKMtbv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/dax-BkyTk9wS.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/desktop-Dlh5hvp9.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/diff-woXpYk--.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/docker-IyjqRm3v.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/dotenv-_5a1GRtc.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/dracula-BHWKrbxM.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/dracula-soft-5eyTD99u.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/dream-maker-DW3nJb8Q.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/edge-ozw5tpLl.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/elixir-VhA6FeZt.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/elm-dREJmIFz.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/emacs-lisp-B4R74twV.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/engine-compile-Cbfz3NVV.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/erb-CIg6G69l.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/erlang-Cphh6RMH.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/everforest-dark-sB-x3p7T.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/everforest-light-Df2xbC6M.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/fennel-DQxkIbk2.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/fish-BJitypiv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/fluent-C03EYrpw.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/fortran-fixed-form-DEKoE2YW.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/fortran-free-form-CYNrtFtB.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/fsharp-D13ZGOAj.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gdresource-C0sCabJj.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gdscript-Cp2uCuqX.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gdshader-CBce3t8t.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/genie-CV2tkWYe.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gherkin-DExj1W_8.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/git-commit-BSykSTBG.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/git-rebase-B44mJPta.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/github-dark-C-LZuMrd.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/github-dark-default-DXG-b-1a.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/github-dark-dimmed-Bx1FflLF.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/github-dark-high-contrast-B_tTalzw.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/github-light-EUqPIrTm.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/github-light-default-BXViO-2h.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/github-light-high-contrast-B68TUdTA.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gleam-CSRkHgEL.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/glimmer-js-vH_gHG0-.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/glimmer-ts--abOzSAQ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/glsl-Dv5r7kPw.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gn-ilITqXS6.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gnuplot-7GGW24-e.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/go-rLFTqkRN.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/graphql-CB4jsw2E.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/groovy-CacY0gHj.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gruvbox-dark-hard-C820rvS2.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gruvbox-dark-medium-BPjhmG05.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gruvbox-light-hard-BC_s9l72.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gruvbox-light-medium-BAWPOn9u.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/gruvbox-light-soft-BSMLrYjP.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/hack-DvEYX148.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/haml-zE6W3STP.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/handlebars-CzBR2SDs.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/haskell-D8IpX4py.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/haxe-OTjmBuCE.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/hcl-Dh228itO.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/highlighter-CZbuWYc3.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/hjson-CxZEssPk.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/hlsl-Cvrh5tZx.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/horizon-CE9ld1lL.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/horizon-bright-DSNQnXHK.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/houston-CsvMBhTu.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/html-C8UlPnhE.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/html-derivative-CY6NRz-J.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/http-Cyd7bS_S.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/hurl-CWPsiEpf.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/hxml-B0Qn7Nwc.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/hy-CZbG8q4J.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/imba-DsUTQ-LC.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ini-B5eOa1yu.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/java-CGc3VwQr.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/javascript-CUt1pgmJ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/jinja-CD-Z-FLd.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/jison-imPNup1l.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/json-Bg9ijW3F.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/json5-BR5RXkoi.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/jsonc-CYpm1nAK.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/jsonl-CmCQp5Yx.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/jsonnet-CJTPZ8u_.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/jssm-DXw9l8Rf.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/jsx-CY6oMTks.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/julia-Dc3O-irA.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/just-BhOq_Kbv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/kanagawa-dragon-CXtmUGW6.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/kanagawa-lotus-BN08jTvb.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/kanagawa-wave-CTweb8Dz.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/kdl-CsD5j6eV.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/kotlin-DhhofPvG.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/kusto-C7mF5XQf.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/laserwave-C_8bwKvT.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/latex-Cu4Y1d5w.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/lean-CewbzKMR.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/less-DVTAwKKz.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/light-plus-DVQuIRkW.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/liquid-CvXMrjlQ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/llvm-Cm23YOpf.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/log-BNLmms1o.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/logo-Cluzi2Zq.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/lua-BjLEUjKY.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/luau-FMPmPwt6.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/make-Dixweg8N.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/markdown-BYOwaDjH.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/marko-DvhNOisQ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/material-theme-Bm3Qr25_.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/material-theme-darker-2IIEA8gg.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/material-theme-lighter-uhdI0v04.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/material-theme-ocean-CHQ94UKr.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/material-theme-palenight-B5W6OYN7.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/matlab-D7qyCx1q.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/mdc-Bm9TpL1X.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/mdx-DQZ5AkYe.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/mermaid-Bk4SNUv9.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/min-dark-BSWPekZh.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/min-light-DDpmG2fV.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/mipsasm-BMqwQI7S.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/mojo-BgCJLMeH.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/monokai-CdkpiU2Y.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/moonbit-CaWjb8XO.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/move-B1IS1UjX.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/narrat-_X_XdTYD.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/nextflow-BJtWHP5T.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/nextflow-groovy-DJMQeKeT.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/nginx-Bhc82uuv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/night-owl-DhmEMT88.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/night-owl-light-eJ-hLW7d.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/nim-DXTVBFnF.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/nix-IvuFDN5E.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/nord-Cb4Vim4T.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/nushell-DcLAeLz5.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/objective-c-D1A_Heim.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/objective-cpp-BsSzOQcm.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ocaml-O90oeIOV.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/odin-B1RWQWA5.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/one-dark-pro-CLwyXe_n.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/one-light-D7Lr4KcI.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/openscad-BUDT5pXO.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pascal-4ZHwLPI5.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/perl-C7veXV9z.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/php-BRiuMnnr.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pierre-dark-sU4Zdns8.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pierre-dark-soft-HXgun5vs.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pierre-dark-vibrant-D4RhcSIK.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pierre-light-DWBk51d8.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pierre-light-soft-CodEzPxf.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pierre-light-vibrant-B76X7i5Y.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pkl-ot-7Btpt.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/plastic-DQwYfKfQ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/plsql-DGHpHOYJ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/po-BiJDBrnU.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/poimandres-DRFjx7u4.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/polar-C7UOKdEL.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/postcss-BXeXVLqQ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/powerquery-DNMTfnFr.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/powershell-DshXNtvi.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/preload-helper-FMEmyu_K.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/prisma-BsRQq5mF.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/prolog-iXnhIJG7.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/proto-DB4EqR-F.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/pug-C5hz5LQ7.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/puppet-CDv2pdJW.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/purescript-9MfHhQsQ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/python-gzcpVVnB.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/qml-BdUV3aTS.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/qmldir-DCQb3MpD.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/qss-Fe1Jh2GI.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/r-8R7vtdQc.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/racket-DcIDlBhZ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/raku-B3gFvitq.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/razor-DRL52XO2.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/red-CJ3rzSJv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/reg-CRGYupPL.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/regexp-Omp9DhTb.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rel-BtDbiS_P.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/riscv-Ckw8ddFX.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rolldown-runtime-QTnfLwEv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ron-VUp2lXgN.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rose-pine-BthvhNj6.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rose-pine-dawn-Dg85fqjY.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rose-pine-moon-hon4tzzS.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rosmsg-CAekHB0j.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rst-BHX71KW9.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ruby-B--HzjGU.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/rust-Cfkwpbl8.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/sas-DrLaYOK_.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/sass-DXrisJhu.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/scala-DKOlJaKm.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/scheme-DQCgrYNe.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/scss-DdSxiZKl.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/sdbl-bTVj8UrX.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/shaderlab-TOUzSsQk.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/shellscript-DwcUjJBL.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/shellsession-CPZkydE6.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/slack-dark-DnToyrRv.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/slack-ochin-B2OO5cIa.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/smalltalk-B16xEiuN.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/snazzy-light-4G7pJPwS.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/solarized-dark-DV17i1UV.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/solarized-light-DSh2HLQt.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/solidity-CKzVLygQ.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/soy-Br5FhD7c.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/sparql-D_iOobhT.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/splunk-BC2Px7Mm.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/sql-DNssxck8.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ssh-config-BgfXC-Er.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/stata-DXn1tqOr.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/stylus-B6D30XZt.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/surrealql-IeLNQw0f.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/svelte-DOdLCIlh.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/swift-DonLKvLd.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/synthwave-84-nFMaYfgc.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/system-verilog-DJ5XKQeo.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/systemd-BxMlprV5.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/talonscript-CohzipZa.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/tasl-DMoTqEGO.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/tcl-CZd0xW_V.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/templ-CIwIngms.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/terraform-DswuEJGm.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/tex-D8QMumu5.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/tokyo-night-oM2G3aXe.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/toml-CcmNWLt0.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/ts-tags-BMVY4q-l.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/tsv-sltzmVWM.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/tsx-5Eka4NBX.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/turtle-ByJddavk.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/twig-C8o_5mgw.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/typescript-DOu2WMV5.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/typespec-BRdr0IET.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/typst-DI99ib-x.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/v-DETTlOr0.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vala-zf12oZj6.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vb-Djn5o6TS.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/verilog-CiiDBU1e.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vesper-DdrHHSXu.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vhdl-BroJfC0k.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/viml-DvXPmvsu.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vitesse-black-fwtXNY1n.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vitesse-dark-BZCL-v6S.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vitesse-light-VbXTXTou.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vue-BU18DNDL.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vue-html-BeluIYX0.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vue-vine-DGUAbOCX.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/vyper-CgoNMtux.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/wasm-BnjxR4X6.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/wasm-ByWQv1Qj.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/wenyan-C8pVoKbM.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/wgsl-BsKzXJz4.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/wikitext-ClFFjSW2.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/wit-DdvCle-K.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/wolfram-DLL8P-h_.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/xml-DIqSwXR3.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/xsl-Ct_-YIAy.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/yaml-DTtCYNlS.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/zenscript-BnlCZFoB.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/assets/zig-CMLA9XwU.js +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/favicon_slashes.svg +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/fonts/OFL.txt +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/fonts/SourceCodePro-Variable.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/server/static/fonts/SourceSans3-Variable.woff2 +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/system_prompt.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/tui/__init__.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/tui/state.py +0 -0
- {mycode_cli-0.12.0 → mycode_cli-0.13.0}/src/mycode_cli/tui/theme.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: mycode-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.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
|
|
@@ -21,9 +21,13 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
22
|
Classifier: Topic :: Software Development
|
|
23
23
|
Requires-Python: >=3.12
|
|
24
|
+
Requires-Dist: beautifulsoup4>=4.15.0
|
|
24
25
|
Requires-Dist: fastapi>=0.139.0
|
|
25
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: httpx2>=2.10.0
|
|
27
|
+
Requires-Dist: markdownify>=1.2.3
|
|
28
|
+
Requires-Dist: mycode-sdk==0.13.0
|
|
26
29
|
Requires-Dist: prompt-toolkit>=3.0.52
|
|
30
|
+
Requires-Dist: pydantic>=2.13.4
|
|
27
31
|
Requires-Dist: pyyaml>=6.0.3
|
|
28
32
|
Requires-Dist: rich>=15.0.0
|
|
29
33
|
Requires-Dist: typer>=0.26.8
|
|
@@ -27,12 +27,9 @@ def _build_web_assets(project_root: Path) -> None:
|
|
|
27
27
|
static_dir = project_root / "src" / "mycode_cli" / "server" / "static"
|
|
28
28
|
|
|
29
29
|
if not (web_dir / "package.json").is_file():
|
|
30
|
-
if static_dir.
|
|
30
|
+
if (static_dir / "index.html").is_file():
|
|
31
31
|
return
|
|
32
|
-
raise RuntimeError(
|
|
33
|
-
f"web sources not found at {web_dir}; the web/ submodule is not "
|
|
34
|
-
"initialized. Run: git submodule update --init --recursive"
|
|
35
|
-
)
|
|
32
|
+
raise RuntimeError(f"web sources not found at {web_dir} and built assets not found at {static_dir}")
|
|
36
33
|
|
|
37
34
|
_run_pnpm(["install", "--frozen-lockfile"], cwd=web_dir)
|
|
38
35
|
_run_pnpm(["build"], cwd=web_dir)
|
|
@@ -48,8 +45,7 @@ def _build_web_assets(project_root: Path) -> None:
|
|
|
48
45
|
class CustomBuildHook(BuildHookInterface[Any]):
|
|
49
46
|
def initialize(self, version: str, build_data: dict[str, Any]) -> None:
|
|
50
47
|
del build_data
|
|
51
|
-
# Editable installs
|
|
52
|
-
# and its web/ submodule + pnpm requirements. Wheel/sdist builds use "standard".
|
|
48
|
+
# Editable installs don't bundle web assets.
|
|
53
49
|
if version == "editable":
|
|
54
50
|
return
|
|
55
51
|
_build_web_assets(Path(self.root))
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mycode-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.13.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,13 +26,17 @@ classifiers = [
|
|
|
26
26
|
]
|
|
27
27
|
keywords = ["agent", "cli", "llm", "coding-agent", "fastapi"]
|
|
28
28
|
dependencies = [
|
|
29
|
-
"mycode-sdk==0.
|
|
29
|
+
"mycode-sdk==0.13.0",
|
|
30
30
|
"fastapi>=0.139.0",
|
|
31
31
|
"uvicorn[standard]>=0.51.0",
|
|
32
32
|
"rich>=15.0.0",
|
|
33
33
|
"prompt-toolkit>=3.0.52",
|
|
34
|
+
"pydantic>=2.13.4",
|
|
34
35
|
"typer>=0.26.8",
|
|
35
36
|
"pyyaml>=6.0.3",
|
|
37
|
+
"httpx2>=2.10.0",
|
|
38
|
+
"beautifulsoup4>=4.15.0",
|
|
39
|
+
"markdownify>=1.2.3",
|
|
36
40
|
]
|
|
37
41
|
|
|
38
42
|
[project.scripts]
|
|
@@ -41,6 +41,13 @@ _EFFORT_OFF_ALIASES = frozenset({"off", "disabled"})
|
|
|
41
41
|
|
|
42
42
|
PermissionLevel = Literal["readonly", "safe", "standard", "yolo"]
|
|
43
43
|
PermissionMode = Literal["ask", "deny"]
|
|
44
|
+
WebFetchProvider = Literal["local", "tavily", "exa"]
|
|
45
|
+
WebSearchProvider = Literal["off", "tavily", "exa"]
|
|
46
|
+
|
|
47
|
+
WEB_PROVIDER_ENV_VARS = {
|
|
48
|
+
"tavily": "TAVILY_API_KEY",
|
|
49
|
+
"exa": "EXA_API_KEY",
|
|
50
|
+
}
|
|
44
51
|
|
|
45
52
|
|
|
46
53
|
@dataclass(frozen=True)
|
|
@@ -71,6 +78,20 @@ class PermissionConfig:
|
|
|
71
78
|
mode: PermissionMode = "ask"
|
|
72
79
|
|
|
73
80
|
|
|
81
|
+
@dataclass(frozen=True)
|
|
82
|
+
class WebProviderConfig:
|
|
83
|
+
api_key: str | None = None
|
|
84
|
+
api_key_env_var: str | None = None
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@dataclass(frozen=True)
|
|
88
|
+
class WebConfig:
|
|
89
|
+
fetch: WebFetchProvider = "local"
|
|
90
|
+
search: WebSearchProvider = "off"
|
|
91
|
+
tavily: WebProviderConfig = field(default_factory=WebProviderConfig)
|
|
92
|
+
exa: WebProviderConfig = field(default_factory=WebProviderConfig)
|
|
93
|
+
|
|
94
|
+
|
|
74
95
|
@dataclass(frozen=True)
|
|
75
96
|
class Settings:
|
|
76
97
|
providers: dict[str, ProviderConfig]
|
|
@@ -81,6 +102,7 @@ class Settings:
|
|
|
81
102
|
project: str
|
|
82
103
|
compact_threshold: float | None = None
|
|
83
104
|
permission: PermissionConfig = field(default_factory=PermissionConfig)
|
|
105
|
+
web: WebConfig = field(default_factory=WebConfig)
|
|
84
106
|
config_paths: list[str] = field(default_factory=list)
|
|
85
107
|
|
|
86
108
|
|
|
@@ -286,6 +308,11 @@ def _clean_config_layer(data: Any) -> dict[str, Any]:
|
|
|
286
308
|
if data.get("permission") is not None:
|
|
287
309
|
out["permission"] = _validate_permission_config(data["permission"])
|
|
288
310
|
|
|
311
|
+
if data.get("web") is not None:
|
|
312
|
+
web = _validate_web_config(data["web"])
|
|
313
|
+
if web:
|
|
314
|
+
out["web"] = web
|
|
315
|
+
|
|
289
316
|
raw_providers = data.get("providers")
|
|
290
317
|
if raw_providers is not None:
|
|
291
318
|
if not isinstance(raw_providers, dict):
|
|
@@ -351,6 +378,36 @@ def _validate_permission_config(raw: Any) -> PermissionLevel | dict[str, Any]:
|
|
|
351
378
|
return out
|
|
352
379
|
|
|
353
380
|
|
|
381
|
+
def _validate_web_config(raw: Any) -> dict[str, Any]:
|
|
382
|
+
if not isinstance(raw, dict):
|
|
383
|
+
raise ValueError("web must be an object")
|
|
384
|
+
|
|
385
|
+
out: dict[str, Any] = {}
|
|
386
|
+
options = {
|
|
387
|
+
"fetch": ("local", "tavily", "exa"),
|
|
388
|
+
"search": ("off", "tavily", "exa"),
|
|
389
|
+
}
|
|
390
|
+
for key, supported in options.items():
|
|
391
|
+
if key not in raw:
|
|
392
|
+
continue
|
|
393
|
+
value = raw[key]
|
|
394
|
+
if value not in supported:
|
|
395
|
+
raise ValueError(f"web.{key} must be one of: {', '.join(supported)}")
|
|
396
|
+
out[key] = value
|
|
397
|
+
|
|
398
|
+
for provider in ("tavily", "exa"):
|
|
399
|
+
if provider not in raw:
|
|
400
|
+
continue
|
|
401
|
+
entry = raw[provider]
|
|
402
|
+
if not isinstance(entry, dict):
|
|
403
|
+
raise ValueError(f"web.{provider} must be an object")
|
|
404
|
+
api_key = _optional_config_string(entry, "api_key", f"web.{provider}.api_key")
|
|
405
|
+
if api_key:
|
|
406
|
+
out[provider] = {"api_key": api_key}
|
|
407
|
+
|
|
408
|
+
return out
|
|
409
|
+
|
|
410
|
+
|
|
354
411
|
def _validate_provider_config(name: str, raw: Any) -> dict[str, Any]:
|
|
355
412
|
if not isinstance(raw, dict):
|
|
356
413
|
raise ValueError(f"provider {name!r} must be an object")
|
|
@@ -434,6 +491,7 @@ def get_settings(cwd: str | None = None) -> Settings:
|
|
|
434
491
|
default_model: str | None = None
|
|
435
492
|
compact_threshold: float | None = None
|
|
436
493
|
permission = PermissionConfig()
|
|
494
|
+
raw_web: dict[str, Any] = {}
|
|
437
495
|
config_paths: list[str] = []
|
|
438
496
|
|
|
439
497
|
for path in _candidate_config_paths(resolved_cwd, resolved_project):
|
|
@@ -482,12 +540,27 @@ def get_settings(cwd: str | None = None) -> Settings:
|
|
|
482
540
|
if "permission" in data:
|
|
483
541
|
permission = parse_permission(data.get("permission"), permission)
|
|
484
542
|
|
|
543
|
+
if data.get("web") is not None:
|
|
544
|
+
web = _validate_web_config(data["web"])
|
|
545
|
+
for key in ("fetch", "search"):
|
|
546
|
+
if key in web:
|
|
547
|
+
raw_web[key] = web[key]
|
|
548
|
+
for provider in ("tavily", "exa"):
|
|
549
|
+
entry = web.get(provider)
|
|
550
|
+
if entry:
|
|
551
|
+
api_key, api_key_env_var = _parse_config_api_key(entry["api_key"])
|
|
552
|
+
raw_web[provider] = {
|
|
553
|
+
"api_key": api_key,
|
|
554
|
+
"api_key_env_var": api_key_env_var,
|
|
555
|
+
}
|
|
556
|
+
|
|
485
557
|
return Settings(
|
|
486
558
|
providers=_build_providers(raw_providers),
|
|
487
559
|
default_provider=default_provider,
|
|
488
560
|
default_model=default_model,
|
|
489
561
|
compact_threshold=compact_threshold,
|
|
490
562
|
permission=permission,
|
|
563
|
+
web=_build_web_config(raw_web),
|
|
491
564
|
port=int(os.environ.get("PORT", "8000")),
|
|
492
565
|
cwd=resolved_cwd,
|
|
493
566
|
project=resolved_project,
|
|
@@ -562,6 +635,38 @@ def _build_providers(raw_providers: dict[str, dict[str, Any]]) -> dict[str, Prov
|
|
|
562
635
|
return providers
|
|
563
636
|
|
|
564
637
|
|
|
638
|
+
def _build_web_config(raw: dict[str, Any]) -> WebConfig:
|
|
639
|
+
def provider(name: str) -> WebProviderConfig:
|
|
640
|
+
entry = raw.get(name)
|
|
641
|
+
if not isinstance(entry, dict):
|
|
642
|
+
return WebProviderConfig()
|
|
643
|
+
return WebProviderConfig(
|
|
644
|
+
api_key=entry.get("api_key") or None,
|
|
645
|
+
api_key_env_var=entry.get("api_key_env_var") or None,
|
|
646
|
+
)
|
|
647
|
+
|
|
648
|
+
return WebConfig(
|
|
649
|
+
fetch=cast(WebFetchProvider, raw.get("fetch") or "local"),
|
|
650
|
+
search=cast(WebSearchProvider, raw.get("search") or "off"),
|
|
651
|
+
tavily=provider("tavily"),
|
|
652
|
+
exa=provider("exa"),
|
|
653
|
+
)
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
def resolve_web_api_key(web: WebConfig, provider: Literal["tavily", "exa"]) -> str | None:
|
|
657
|
+
"""Resolve a web provider key without requiring one to exist."""
|
|
658
|
+
|
|
659
|
+
config = getattr(web, provider)
|
|
660
|
+
if config.api_key:
|
|
661
|
+
return config.api_key
|
|
662
|
+
if config.api_key_env_var:
|
|
663
|
+
value = (os.environ.get(config.api_key_env_var) or "").strip()
|
|
664
|
+
if value:
|
|
665
|
+
return value
|
|
666
|
+
raise ValueError(f"missing API key env var {config.api_key_env_var!r} referenced by web.{provider}")
|
|
667
|
+
return (os.environ.get(WEB_PROVIDER_ENV_VARS[provider]) or "").strip() or None
|
|
668
|
+
|
|
669
|
+
|
|
565
670
|
def provider_has_api_key(provider: ProviderConfig) -> bool:
|
|
566
671
|
"""Return whether a configured provider can authenticate right now."""
|
|
567
672
|
|
|
@@ -123,12 +123,23 @@ def classify_tool(
|
|
|
123
123
|
command = str(ctx.tool_input.get("command") or "").strip()
|
|
124
124
|
return PermissionCheck(_classify_bash(command), command)
|
|
125
125
|
|
|
126
|
+
if name == "webfetch":
|
|
127
|
+
url = str(ctx.tool_input.get("url") or "").strip()
|
|
128
|
+
return PermissionCheck("standard", url)
|
|
129
|
+
|
|
130
|
+
if name == "websearch":
|
|
131
|
+
query = str(ctx.tool_input.get("query") or "").strip()
|
|
132
|
+
return PermissionCheck("standard", query)
|
|
133
|
+
|
|
126
134
|
if name in {"read", "write", "edit"}:
|
|
127
135
|
raw = str(ctx.tool_input.get("path") or "")
|
|
128
136
|
path = resolve_path(raw, cwd=cwd)
|
|
129
137
|
project_path = Path(project).resolve(strict=False)
|
|
130
138
|
preview = raw or str(path)
|
|
131
|
-
if name == "read" and
|
|
139
|
+
if name == "read" and (
|
|
140
|
+
path.is_relative_to(ctx.tool_output_dir.resolve(strict=False))
|
|
141
|
+
or any(path.is_relative_to(root) for root in skill_roots)
|
|
142
|
+
):
|
|
132
143
|
return PermissionCheck("readonly", preview)
|
|
133
144
|
if not path.is_relative_to(project_path):
|
|
134
145
|
return PermissionCheck("yolo", preview)
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from mycode.agent import Agent
|
|
6
|
-
from mycode.models import estimate_cost, resolve_model_metadata
|
|
7
6
|
from mycode.session import SessionStore
|
|
8
|
-
from mycode.tools import bash_tool, edit_tool, read_tool, write_tool
|
|
9
7
|
from mycode_cli.config import ResolvedProvider, Settings
|
|
10
8
|
from mycode_cli.permissions import ToolReviewCallback, build_permission_hooks
|
|
11
9
|
from mycode_cli.system_prompt import build_system_prompt
|
|
10
|
+
from mycode_cli.tools import DEFAULT_TOOLS
|
|
11
|
+
from mycode_cli.web_tools import build_web_tools
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def sum_known_costs(*costs: float | None) -> float | None:
|
|
@@ -17,13 +17,10 @@ def sum_known_costs(*costs: float | None) -> float | None:
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
async def load_session_cost(store: SessionStore, session_id: str) -> float | None:
|
|
20
|
-
"""
|
|
20
|
+
"""Load the session's cumulative USD cost from its raw JSONL timeline.
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
record is priced by its own ``meta.provider``/``meta.model`` through the
|
|
25
|
-
SDK catalog; an upstream-reported ``reported_cost_usd`` wins. Records
|
|
26
|
-
without a usable estimate are skipped.
|
|
22
|
+
Counts persisted costs from tool loops, compact summaries, and turns
|
|
23
|
+
discarded by rewind. Records without a cost are skipped.
|
|
27
24
|
"""
|
|
28
25
|
|
|
29
26
|
total: float | None = None
|
|
@@ -31,12 +28,12 @@ async def load_session_cost(store: SessionStore, session_id: str) -> float | Non
|
|
|
31
28
|
if message.get("role") not in {"assistant", "compact"}:
|
|
32
29
|
continue
|
|
33
30
|
meta = message.get("meta") or {}
|
|
34
|
-
|
|
35
|
-
if not isinstance(
|
|
31
|
+
cost = meta.get("cost")
|
|
32
|
+
if not isinstance(cost, dict):
|
|
36
33
|
continue
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
request_total = cost.get("total")
|
|
35
|
+
if isinstance(request_total, int | float):
|
|
36
|
+
total = sum_known_costs(total, float(request_total))
|
|
40
37
|
return total
|
|
41
38
|
|
|
42
39
|
|
|
@@ -75,6 +72,6 @@ def build_agent(
|
|
|
75
72
|
compact_threshold=settings.compact_threshold,
|
|
76
73
|
max_turns=max_turns,
|
|
77
74
|
system=build_system_prompt(cwd, settings),
|
|
78
|
-
tools=[
|
|
75
|
+
tools=[*DEFAULT_TOOLS, *build_web_tools(settings.web)],
|
|
79
76
|
hooks=hooks,
|
|
80
77
|
)
|
|
@@ -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.models import estimate_cost, resolve_model_metadata
|
|
13
12
|
from mycode_cli.runtime import load_session_cost
|
|
14
13
|
from mycode_cli.server.deps import RunManagerDep, StoreDep, resolve_workspace_cwd
|
|
15
14
|
from mycode_cli.server.schemas import SessionCreateRequest, StatusResponse
|
|
@@ -31,29 +30,6 @@ def _redact_document_data(messages: list[ConversationMessage]) -> list[dict[str,
|
|
|
31
30
|
return redacted
|
|
32
31
|
|
|
33
32
|
|
|
34
|
-
def _with_request_costs(messages: list[ConversationMessage]) -> list[ConversationMessage]:
|
|
35
|
-
"""Stamp the response-only ``meta.request_cost_usd`` on priced records.
|
|
36
|
-
|
|
37
|
-
The UI sums these per turn to show a per-reply cost; pricing stays
|
|
38
|
-
server-side. A record whose usage cannot be priced keeps no field —
|
|
39
|
-
absent means unknown. Nothing is persisted.
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
enriched: list[ConversationMessage] = []
|
|
43
|
-
for message in messages:
|
|
44
|
-
meta = message.get("meta") or {}
|
|
45
|
-
usage = meta.get("usage")
|
|
46
|
-
if message.get("role") in {"assistant", "compact"} and isinstance(usage, dict):
|
|
47
|
-
metadata = resolve_model_metadata(
|
|
48
|
-
provider=str(meta.get("provider") or ""), model=str(meta.get("model") or "")
|
|
49
|
-
)
|
|
50
|
-
cost = estimate_cost(usage, metadata.cost)
|
|
51
|
-
if cost is not None:
|
|
52
|
-
message = {**message, "meta": {**meta, "request_cost_usd": cost}}
|
|
53
|
-
enriched.append(message)
|
|
54
|
-
return enriched
|
|
55
|
-
|
|
56
|
-
|
|
57
33
|
@router.post("")
|
|
58
34
|
async def create_session(req: SessionCreateRequest, store: StoreDep) -> dict[str, Any]:
|
|
59
35
|
cwd = resolve_workspace_cwd(req.cwd)
|
|
@@ -89,19 +65,19 @@ async def load_session(
|
|
|
89
65
|
if active:
|
|
90
66
|
return {
|
|
91
67
|
"session": data["session"] if data else None,
|
|
92
|
-
"messages": _redact_document_data(
|
|
93
|
-
"
|
|
68
|
+
"messages": _redact_document_data(active["messages"]),
|
|
69
|
+
"session_cost": session_cost,
|
|
94
70
|
"active_run": active["run"],
|
|
95
71
|
"pending_events": active["pending_events"],
|
|
96
72
|
}
|
|
97
73
|
|
|
98
74
|
if data is None:
|
|
99
|
-
return {"session": None, "messages": [], "
|
|
75
|
+
return {"session": None, "messages": [], "session_cost": None, "active_run": None, "pending_events": []}
|
|
100
76
|
|
|
101
77
|
return {
|
|
102
78
|
"session": data["session"],
|
|
103
|
-
"messages": _redact_document_data(
|
|
104
|
-
"
|
|
79
|
+
"messages": _redact_document_data(data["messages"]),
|
|
80
|
+
"session_cost": session_cost,
|
|
105
81
|
"active_run": None,
|
|
106
82
|
"pending_events": [],
|
|
107
83
|
}
|
|
@@ -26,6 +26,7 @@ from mycode.providers import (
|
|
|
26
26
|
from mycode_cli.config import (
|
|
27
27
|
PERMISSION_LEVEL_OPTIONS,
|
|
28
28
|
PERMISSION_MODE_OPTIONS,
|
|
29
|
+
WEB_PROVIDER_ENV_VARS,
|
|
29
30
|
is_api_key_env_ref,
|
|
30
31
|
resolve_mycode_home,
|
|
31
32
|
validate_global_config,
|
|
@@ -54,33 +55,39 @@ def _present_config(raw: dict[str, Any]) -> dict[str, Any]:
|
|
|
54
55
|
|
|
55
56
|
out = copy.deepcopy(raw)
|
|
56
57
|
providers = out.get("providers")
|
|
57
|
-
if
|
|
58
|
-
|
|
58
|
+
if isinstance(providers, dict):
|
|
59
|
+
for entry in providers.values():
|
|
60
|
+
if not isinstance(entry, dict):
|
|
61
|
+
continue
|
|
62
|
+
_mask_api_key(entry)
|
|
63
|
+
models = entry.get("models")
|
|
64
|
+
if isinstance(models, dict):
|
|
65
|
+
entry["models"] = list(models.keys())
|
|
66
|
+
overrides = {k: v for k, v in models.items() if isinstance(v, dict) and v}
|
|
67
|
+
if overrides:
|
|
68
|
+
entry["model_overrides"] = overrides
|
|
69
|
+
|
|
70
|
+
web = out.get("web")
|
|
71
|
+
if isinstance(web, dict):
|
|
72
|
+
for provider in ("tavily", "exa"):
|
|
73
|
+
entry = web.get(provider)
|
|
74
|
+
if isinstance(entry, dict):
|
|
75
|
+
_mask_api_key(entry)
|
|
76
|
+
|
|
77
|
+
return out
|
|
59
78
|
|
|
60
|
-
for entry in providers.values():
|
|
61
|
-
if not isinstance(entry, dict):
|
|
62
|
-
continue
|
|
63
79
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
else:
|
|
70
|
-
entry["api_key"] = None
|
|
71
|
-
entry["api_key_saved"] = True
|
|
80
|
+
def _mask_api_key(entry: dict[str, Any]) -> None:
|
|
81
|
+
api_key = entry.get("api_key")
|
|
82
|
+
if isinstance(api_key, str) and api_key.strip():
|
|
83
|
+
if is_api_key_env_ref(api_key):
|
|
84
|
+
entry["api_key_saved"] = False
|
|
72
85
|
else:
|
|
73
86
|
entry["api_key"] = None
|
|
74
|
-
entry["api_key_saved"] =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
entry["models"] = list(models.keys())
|
|
79
|
-
overrides = {k: v for k, v in models.items() if isinstance(v, dict) and v}
|
|
80
|
-
if overrides:
|
|
81
|
-
entry["model_overrides"] = overrides
|
|
82
|
-
|
|
83
|
-
return out
|
|
87
|
+
entry["api_key_saved"] = True
|
|
88
|
+
else:
|
|
89
|
+
entry["api_key"] = None
|
|
90
|
+
entry["api_key_saved"] = False
|
|
84
91
|
|
|
85
92
|
|
|
86
93
|
def _env_presence(raw: dict[str, Any]) -> dict[str, bool]:
|
|
@@ -90,6 +97,7 @@ def _env_presence(raw: dict[str, Any]) -> dict[str, bool]:
|
|
|
90
97
|
names: set[str] = set()
|
|
91
98
|
for provider_id in list_env_discoverable_providers():
|
|
92
99
|
names.update(provider_env_api_key_names(provider_id))
|
|
100
|
+
names.update(WEB_PROVIDER_ENV_VARS.values())
|
|
93
101
|
|
|
94
102
|
for entry in (raw.get("providers") or {}).values():
|
|
95
103
|
if isinstance(entry, dict):
|
|
@@ -99,6 +107,12 @@ def _env_presence(raw: dict[str, Any]) -> dict[str, bool]:
|
|
|
99
107
|
if ref:
|
|
100
108
|
names.add(ref)
|
|
101
109
|
|
|
110
|
+
for entry in (raw.get("web") or {}).values():
|
|
111
|
+
if isinstance(entry, dict):
|
|
112
|
+
api_key = entry.get("api_key")
|
|
113
|
+
if isinstance(api_key, str) and (ref := is_api_key_env_ref(api_key)):
|
|
114
|
+
names.add(ref)
|
|
115
|
+
|
|
102
116
|
return {name: bool((os.environ.get(name) or "").strip()) for name in sorted(names)}
|
|
103
117
|
|
|
104
118
|
|
|
@@ -163,6 +177,18 @@ def put_settings_endpoint(payload: SettingsRequest) -> dict[str, Any]:
|
|
|
163
177
|
else:
|
|
164
178
|
entry.pop("api_key", None)
|
|
165
179
|
|
|
180
|
+
existing_web = existing.get("web") or {}
|
|
181
|
+
incoming_web = incoming.get("web") or {}
|
|
182
|
+
for provider in ("tavily", "exa"):
|
|
183
|
+
entry = incoming_web.get(provider) if isinstance(incoming_web, dict) else None
|
|
184
|
+
if not isinstance(entry, dict) or entry.get("api_key") is not None:
|
|
185
|
+
continue
|
|
186
|
+
prior = existing_web.get(provider) if isinstance(existing_web, dict) else None
|
|
187
|
+
if isinstance(prior, dict) and "api_key" in prior:
|
|
188
|
+
entry["api_key"] = prior["api_key"]
|
|
189
|
+
else:
|
|
190
|
+
entry.pop("api_key", None)
|
|
191
|
+
|
|
166
192
|
try:
|
|
167
193
|
cleaned = validate_global_config(incoming)
|
|
168
194
|
except ValueError as exc:
|
|
@@ -20,6 +20,14 @@ RunStatus = Literal["running", "completed", "failed", "cancelled"]
|
|
|
20
20
|
RunKind = Literal["chat", "compact"]
|
|
21
21
|
FINISHED_RUN_TTL_SECONDS = 300
|
|
22
22
|
RUN_EVENT_BUFFER_SIZE = 2000
|
|
23
|
+
RUN_TOOL_OUTPUT_BUFFER_BYTES = 1_000_000
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _tool_output_bytes(payload: dict[str, Any]) -> int:
|
|
27
|
+
if payload.get("type") != "tool_output":
|
|
28
|
+
return 0
|
|
29
|
+
output = payload.get("output")
|
|
30
|
+
return len(output.encode("utf-8")) if isinstance(output, str) else 0
|
|
23
31
|
|
|
24
32
|
|
|
25
33
|
class ActiveRunError(RuntimeError):
|
|
@@ -57,6 +65,7 @@ class RunState:
|
|
|
57
65
|
status: RunStatus = "running"
|
|
58
66
|
error: str | None = None
|
|
59
67
|
events: list[dict[str, Any]] = field(default_factory=list)
|
|
68
|
+
tool_output_bytes: int = 0
|
|
60
69
|
next_seq: int = 1
|
|
61
70
|
task: asyncio.Task[None] | None = None
|
|
62
71
|
finished_at: float | None = None
|
|
@@ -323,9 +332,11 @@ class RunManager:
|
|
|
323
332
|
if event.type == "error":
|
|
324
333
|
last_error = str(event.data.get("message") or "unknown error")
|
|
325
334
|
elif event.type == "usage":
|
|
335
|
+
turn_cost = event.data.get("turn_cost")
|
|
336
|
+
turn_total = turn_cost.get("total") if isinstance(turn_cost, dict) else None
|
|
326
337
|
session_cost = sum_known_costs(
|
|
327
338
|
state.session_cost_base,
|
|
328
|
-
|
|
339
|
+
turn_total,
|
|
329
340
|
)
|
|
330
341
|
event = Event(
|
|
331
342
|
"usage",
|
|
@@ -333,7 +344,7 @@ class RunManager:
|
|
|
333
344
|
**event.data,
|
|
334
345
|
"context_window": state.agent.context_window,
|
|
335
346
|
"model": state.agent.model,
|
|
336
|
-
"
|
|
347
|
+
"session_cost": session_cost,
|
|
337
348
|
},
|
|
338
349
|
)
|
|
339
350
|
await self._append_event(state, event)
|
|
@@ -360,11 +371,23 @@ class RunManager:
|
|
|
360
371
|
|
|
361
372
|
async def _append_event(self, state: RunState, event: Event) -> None:
|
|
362
373
|
async with state.condition:
|
|
374
|
+
if event.type == "tool_done":
|
|
375
|
+
tool_use_id = event.data.get("tool_use_id")
|
|
376
|
+
retained = [
|
|
377
|
+
payload
|
|
378
|
+
for payload in state.events
|
|
379
|
+
if payload.get("type") != "tool_output" or payload.get("tool_use_id") != tool_use_id
|
|
380
|
+
]
|
|
381
|
+
state.events = retained
|
|
382
|
+
state.tool_output_bytes = sum(_tool_output_bytes(payload) for payload in retained)
|
|
383
|
+
|
|
363
384
|
payload = {"seq": state.next_seq, "type": event.type, **event.data}
|
|
364
385
|
state.next_seq += 1
|
|
365
386
|
state.events.append(payload)
|
|
366
|
-
|
|
367
|
-
|
|
387
|
+
state.tool_output_bytes += _tool_output_bytes(payload)
|
|
388
|
+
while len(state.events) > RUN_EVENT_BUFFER_SIZE or state.tool_output_bytes > RUN_TOOL_OUTPUT_BUFFER_BYTES:
|
|
389
|
+
removed = state.events.pop(0)
|
|
390
|
+
state.tool_output_bytes -= _tool_output_bytes(removed)
|
|
368
391
|
state.condition.notify_all()
|
|
369
392
|
|
|
370
393
|
async def _finish_run(self, state: RunState, *, status: RunStatus, error: str | None = None) -> None:
|
|
@@ -6,6 +6,8 @@ from typing import Any, Literal, Self
|
|
|
6
6
|
|
|
7
7
|
from pydantic import BaseModel, Field, model_validator
|
|
8
8
|
|
|
9
|
+
from mycode.models import Cost
|
|
10
|
+
|
|
9
11
|
RunKind = Literal["chat", "compact"]
|
|
10
12
|
|
|
11
13
|
|
|
@@ -104,8 +106,8 @@ class StreamEvent(BaseModel):
|
|
|
104
106
|
context_window: int | None = None # usage
|
|
105
107
|
model: str | None = None # usage
|
|
106
108
|
turn_usage: dict[str, int] | None = None # usage
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
turn_cost: Cost | None = None # usage
|
|
110
|
+
session_cost: float | None = None # usage; composed by the run manager
|
|
109
111
|
|
|
110
112
|
|
|
111
113
|
class DecideRequest(BaseModel):
|