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