mycode-cli 0.8.10__tar.gz → 0.9.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/PKG-INFO +6 -6
  2. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/pyproject.toml +6 -6
  3. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/config.py +307 -133
  4. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/main.py +2 -3
  5. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/permissions.py +1 -1
  6. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/runtime.py +2 -2
  7. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/app.py +1 -1
  8. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/deps.py +11 -1
  9. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/routers/chat.py +143 -157
  10. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/routers/sessions.py +10 -11
  11. mycode_cli-0.9.1/src/mycode_cli/server/routers/settings.py +175 -0
  12. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/run_manager.py +50 -2
  13. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/EditDiff-BwTMgMSU.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/EditDiff-DXTvyFLa.js +1 -1
  14. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/angular-html-B6qE7Fgr.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/angular-html-zUBHyh8F.js +1 -1
  15. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/angular-ts-CCYXQBsQ.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/angular-ts-D__kA5Sc.js +1 -1
  16. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/apl-BHFdPdwP.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/apl-C3-z3dfi.js +1 -1
  17. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/astro-CdDbCEi0.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/astro-CFoXPPIu.js +1 -1
  18. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/blade-tLtw_1xC.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/blade-D3NE5Ndo.js +1 -1
  19. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/c-gShqJt5_.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/c-XVpTwZ8J.js +1 -1
  20. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/cobol-CKazzhoF.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/cobol-ChCkSIDw.js +1 -1
  21. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/coffee-DsdLebDY.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/coffee-D93Gwvt1.js +1 -1
  22. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/cpp-Cwf1vUUo.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/cpp-CQvSsQrn.js +1 -1
  23. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/crystal-D2D2rLOi.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/crystal-ClKys-4k.js +1 -1
  24. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/css-DCF53qDU.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/css-CqqqlUGN.js +1 -1
  25. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/edge-DQH05KUf.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/edge-1m7mz0oj.js +1 -1
  26. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/elixir-2VpsbiLV.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/elixir-Dhj2SUNE.js +1 -1
  27. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/elm-_CHnbifk.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/elm-Bc9X3CQR.js +1 -1
  28. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/engine-compile-B24DC8pd.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/engine-compile-X009Avpn.js +3 -3
  29. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/erb-Cxmz5KSP.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/erb-DfaOLgXg.js +1 -1
  30. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/git-rebase-C04jMORK.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/git-rebase-DodCdp9O.js +1 -1
  31. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/glimmer-js-D0Nvbzz0.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/glimmer-js-DUUII4Wd.js +1 -1
  32. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/glimmer-ts-ix22zR5c.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/glimmer-ts-BfFaAicF.js +1 -1
  33. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/glsl-C4sVYnlm.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/glsl-De9OvqVZ.js +1 -1
  34. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/graphql-CmkcYwk_.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/graphql-DT_uHyhu.js +1 -1
  35. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/hack-BDK0ocxa.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/hack-wAnhyYPT.js +1 -1
  36. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/haml-wLZoRSkX.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/haml-25rdgz3P.js +1 -1
  37. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/handlebars-Bq6qdew-.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/handlebars-DUoyuSqS.js +1 -1
  38. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/highlighter-Dlz8vejz.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/highlighter-DMEpdwDZ.js +1 -1
  39. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/html-j61brix0.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/html-BUu0DAfb.js +1 -1
  40. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/html-derivative-B16zJ1uM.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/html-derivative-CWrcx4X0.js +1 -1
  41. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/http-0baH_3Dk.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/http-Bvi8ldk2.js +1 -1
  42. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/hurl-CR5A6vqw.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/hurl-HNI3XiYB.js +1 -1
  43. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/index-_MPb8SvH.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/index-Cn7Zu-W8.js +54 -54
  44. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/java-B_NtVZr9.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/java-xN-qDE15.js +1 -1
  45. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/javascript-BJVvvhBF.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/javascript-azPbeGRp.js +1 -1
  46. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/jinja-C_N7wio_.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/jinja-BU1N7s9p.js +1 -1
  47. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/jison-DVVdkBIk.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/jison-iZna58V0.js +1 -1
  48. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/json-sM0x8hNn.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/json-NONbKG7j.js +1 -1
  49. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/jsx-C9BVFirF.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/jsx-DTZAgS-2.js +1 -1
  50. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/julia-ChaP_3F1.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/julia-B_9chSzB.js +1 -1
  51. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/just-CavrxuQ2.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/just-D9lnNwgC.js +1 -1
  52. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/latex-DzKiPX3o.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/latex-CnZdAYwj.js +1 -1
  53. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/liquid-C7DJS0P7.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/liquid-DQ14BZT0.js +1 -1
  54. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/lua-BqiiO-68.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/lua-DnS3-v-y.js +1 -1
  55. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/marko-D6qURI0q.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/marko-D9DfWPi4.js +1 -1
  56. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/mdc-CcWXXq58.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/mdc-BN9Ot7DB.js +1 -1
  57. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/nginx-CpKQIPTm.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/nginx-B58tlfvI.js +1 -1
  58. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/nim-8_0pTVwq.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/nim-av-MfCDE.js +1 -1
  59. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/perl-D3eGItpN.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/perl-0sjrS3Gb.js +1 -1
  60. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/php-DxTfLPo4.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/php-CZvo7wBk.js +1 -1
  61. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/pug-Czlo7T9J.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/pug-BwBS8e4J.js +1 -1
  62. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/qml-DcXsrGQw.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/qml-H5wLT71o.js +1 -1
  63. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/r-p_dzGn9P.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/r-Be5cp8iE.js +1 -1
  64. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/razor-DYXsAW5_.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/razor-Bcc8E2rc.js +1 -1
  65. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/regexp-T_fsBtNr.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/regexp-JVHml1Yu.js +1 -1
  66. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/rst-ORuymkQc.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/rst-BNOEpKF8.js +1 -1
  67. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/ruby-ClzjSQ0l.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/ruby-DHqrbN-C.js +1 -1
  68. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/sas-BRTK3la1.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/sas-CDM1ewMx.js +1 -1
  69. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/scss-DS6I3QcS.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/scss-D2W9OINT.js +1 -1
  70. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/shellscript-CiTYCSib.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/shellscript-CrNyGC08.js +1 -1
  71. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/shellsession-D5DT705X.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/shellsession-4RFKAdWa.js +1 -1
  72. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/soy-NNJOX3cw.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/soy-DYySMI5S.js +1 -1
  73. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/sql-Buaa9QxE.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/sql-DYFlRzi8.js +1 -1
  74. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/stata-ntax-hDY.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/stata-CWzbXmA0.js +1 -1
  75. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/surrealql-DOI7nkTm.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/surrealql-BZiskn5H.js +1 -1
  76. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/svelte-BtWRbgsA.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/svelte-Cb9-B7io.js +1 -1
  77. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/templ-BXLB83Z5.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/templ-B8xKIPfZ.js +1 -1
  78. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/tex-DkP4hQm8.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/tex-CkybcnC8.js +1 -1
  79. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/ts-tags-BhFXwTms.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/ts-tags-CfStMU-y.js +1 -1
  80. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/tsx-Ct4UJ72v.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/tsx-CWJ_UlgO.js +1 -1
  81. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/twig-BVS_f6WM.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/twig-CilVFDAc.js +1 -1
  82. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/typescript-31zaVSb0.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/typescript-Cbhz-HJw.js +1 -1
  83. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/vue-html-BZJQggZA.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/vue-html-D16hSZPs.js +1 -1
  84. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/vue-axzl95W-.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/vue-nvDSqQNS.js +1 -1
  85. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/vue-vine-C0SHPvOF.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/vue-vine-BiAviZSH.js +1 -1
  86. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/xml-DXLyvx5e.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/xml-BZYdfa6I.js +1 -1
  87. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/xsl-C1DaZKBE.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/xsl-foGXcAPU.js +1 -1
  88. mycode_cli-0.8.10/src/mycode_cli/server/static/assets/yaml-BSIzUixy.js → mycode_cli-0.9.1/src/mycode_cli/server/static/assets/yaml-B7b28xXf.js +1 -1
  89. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/index.html +1 -1
  90. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/tui/chat.py +95 -110
  91. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/tui/render.py +20 -34
  92. mycode_cli-0.8.10/src/mycode_cli/server/routers/settings.py +0 -348
  93. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/.gitignore +0 -0
  94. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/LICENSE +0 -0
  95. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/README.md +0 -0
  96. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/hatch_build.py +0 -0
  97. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/__init__.py +0 -0
  98. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/__init__.py +0 -0
  99. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/routers/__init__.py +0 -0
  100. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/routers/workspaces.py +0 -0
  101. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/schemas.py +0 -0
  102. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  103. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  104. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  105. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  106. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  107. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  108. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  109. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  110. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  111. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  112. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  113. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  114. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  115. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  116. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  117. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  118. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  119. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  120. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  121. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  122. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  123. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  124. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  125. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  126. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  127. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  128. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  129. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  130. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  131. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  132. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  133. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  134. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  135. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  136. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  137. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  138. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  139. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  140. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  141. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  142. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  143. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  144. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  145. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  146. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  147. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  148. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  149. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  150. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  151. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  152. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  153. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  154. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  155. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  156. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  157. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  158. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  159. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  160. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  161. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/abap-smLpETzL.js +0 -0
  162. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/actionscript-3-o-aRvjY5.js +0 -0
  163. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ada-D5RRX1i4.js +0 -0
  164. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/andromeeda-N4z3YzmR.js +0 -0
  165. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/apache-DttKlSqg.js +0 -0
  166. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/apex-DL7j-a2n.js +0 -0
  167. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/applescript-DCbL_2FX.js +0 -0
  168. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ara-DqheWJCe.js +0 -0
  169. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/asciidoc-BH2sf2K4.js +0 -0
  170. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/asm-rfjOMz3U.js +0 -0
  171. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/aurora-x-CND-FqEb.js +0 -0
  172. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/awk-CMV5n9Z7.js +0 -0
  173. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ayu-dark-on7xzq_B.js +0 -0
  174. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ayu-light-DnGeGGc2.js +0 -0
  175. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ayu-mirage-DG3LlYC_.js +0 -0
  176. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ballerina-BjMqJjlr.js +0 -0
  177. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/bat-BaVbo_qw.js +0 -0
  178. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/beancount-DBt5Mbc_.js +0 -0
  179. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/berry-Cyjuxiss.js +0 -0
  180. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/bibtex-BV_0nsPq.js +0 -0
  181. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/bicep-C2gEwu4J.js +0 -0
  182. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/bird2-BRyaEJd0.js +0 -0
  183. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/bsl-B1qbqNES.js +0 -0
  184. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/c3-DTTbp5N2.js +0 -0
  185. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/cadence-CPz83cmI.js +0 -0
  186. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/cairo-BDj8wWhy.js +0 -0
  187. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/catppuccin-frappe-Dr22sraq.js +0 -0
  188. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/catppuccin-latte-C57EeX8c.js +0 -0
  189. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/catppuccin-macchiato-CpheI4uD.js +0 -0
  190. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/catppuccin-mocha-D8Lmdks_.js +0 -0
  191. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/clarity-CFJ2Yc3q.js +0 -0
  192. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/clojure-6R01QgJC.js +0 -0
  193. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/cmake-D5rSbMir.js +0 -0
  194. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/codeowners-_3A-ClkN.js +0 -0
  195. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/codeql-DlIhJTR7.js +0 -0
  196. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/common-lisp-BvQzz173.js +0 -0
  197. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/coq-DTNXReIC.js +0 -0
  198. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/csharp-BDKQY1K9.js +0 -0
  199. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/csv-DNUpVBxl.js +0 -0
  200. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/cue-DDdBc2s3.js +0 -0
  201. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/cypher-CguaznO2.js +0 -0
  202. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/d-CHcoyjv3.js +0 -0
  203. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/dark-plus-CqeW_0kH.js +0 -0
  204. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/dart-RM3aRphk.js +0 -0
  205. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/dax-nbnY1d79.js +0 -0
  206. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/desktop-BD76cvxT.js +0 -0
  207. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/diff-CdkWtnkL.js +0 -0
  208. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/docker-ZyPHc6zB.js +0 -0
  209. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/dotenv-BdJZEwA6.js +0 -0
  210. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/dracula-CtqCPLGa.js +0 -0
  211. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/dracula-soft-DmBpwRAy.js +0 -0
  212. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/dream-maker-BJL4qlg3.js +0 -0
  213. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/emacs-lisp-_LyYa2Ky.js +0 -0
  214. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/erlang-Bc4hQuqa.js +0 -0
  215. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/everforest-dark-CrbyKk4n.js +0 -0
  216. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/everforest-light-DRbSh8Tm.js +0 -0
  217. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/fennel-CC2BkRsS.js +0 -0
  218. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/fish-D2ZCzqcE.js +0 -0
  219. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/fluent-DKAm3m7q.js +0 -0
  220. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/fortran-fixed-form-B02FOYI-.js +0 -0
  221. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/fortran-free-form-BPTf0lbT.js +0 -0
  222. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/fsharp-DhdR18vN.js +0 -0
  223. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gdresource-DgnrMPIx.js +0 -0
  224. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gdscript-CsadCSaZ.js +0 -0
  225. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gdshader-PfnN_8tR.js +0 -0
  226. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/genie-Bj-orPAV.js +0 -0
  227. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gherkin-COVWpJ-Q.js +0 -0
  228. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/git-commit-DGJi7qBD.js +0 -0
  229. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/github-dark-default-DX3IG_X0.js +0 -0
  230. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/github-dark-dimmed-CH6p_7ez.js +0 -0
  231. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/github-dark-high-contrast-Bg2sSao5.js +0 -0
  232. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/github-dark-ipGuFGYC.js +0 -0
  233. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/github-light-BxjqOQl0.js +0 -0
  234. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/github-light-default-DwpDd1IQ.js +0 -0
  235. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/github-light-high-contrast-C0QeixPf.js +0 -0
  236. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gleam-BF2NigGj.js +0 -0
  237. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gn-CMIt9roj.js +0 -0
  238. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gnuplot-DgWlRTEj.js +0 -0
  239. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/go-DLnOLj8q.js +0 -0
  240. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/groovy-B9qLWIkE.js +0 -0
  241. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gruvbox-dark-hard-BIMX9ePb.js +0 -0
  242. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gruvbox-dark-medium-DxuwyVzM.js +0 -0
  243. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gruvbox-dark-soft-ba2fjht0.js +0 -0
  244. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gruvbox-light-hard-DAJK2PqC.js +0 -0
  245. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gruvbox-light-medium-WRifDAJD.js +0 -0
  246. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/gruvbox-light-soft-B0dBOoVB.js +0 -0
  247. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/haskell-BaGpmm_c.js +0 -0
  248. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/haxe-DfXTCEOz.js +0 -0
  249. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/hcl-CbCtpSbi.js +0 -0
  250. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/hjson-_4-w-pHU.js +0 -0
  251. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/hlsl-DpuYn7pp.js +0 -0
  252. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/horizon-C5RtD1fY.js +0 -0
  253. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/horizon-bright-pEOice34.js +0 -0
  254. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/houston-A0zg9vNP.js +0 -0
  255. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/hxml-adC65L_J.js +0 -0
  256. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/hy-t9zDXBje.js +0 -0
  257. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/imba-Bxu-TDfw.js +0 -0
  258. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/index-Datomjin.css +0 -0
  259. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ini-D-v34c8N.js +0 -0
  260. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/json5-D0XL1D5m.js +0 -0
  261. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/jsonc-BBgf3TX3.js +0 -0
  262. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/jsonl-KrKLbtB7.js +0 -0
  263. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/jsonnet-B2ZwWMOt.js +0 -0
  264. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/jssm-ByRpI9-B.js +0 -0
  265. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/kanagawa-dragon-CtPmcCMp.js +0 -0
  266. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/kanagawa-lotus-DpOXEGCa.js +0 -0
  267. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/kanagawa-wave-CLVCyc-n.js +0 -0
  268. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/kdl-6FPPEH4H.js +0 -0
  269. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/kotlin-D4L3Nd2D.js +0 -0
  270. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/kusto-D-mmc07O.js +0 -0
  271. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/laserwave-7fEj4XGb.js +0 -0
  272. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/lean-BMVMuP2E.js +0 -0
  273. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/less-C95PyOu0.js +0 -0
  274. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/light-plus-DHI2dh3p.js +0 -0
  275. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/llvm-Dy3qORTl.js +0 -0
  276. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/log-BQop7fzg.js +0 -0
  277. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/logo-DKtnYmrp.js +0 -0
  278. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/luau-Dha4KG0q.js +0 -0
  279. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/make-DfmS6buu.js +0 -0
  280. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/markdown-BaI9LyM4.js +0 -0
  281. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/material-theme-Dm6ETY8i.js +0 -0
  282. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/material-theme-darker-BeyjmM5Z.js +0 -0
  283. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/material-theme-lighter-CCOYYzKL.js +0 -0
  284. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/material-theme-ocean-CUtPiiX3.js +0 -0
  285. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/material-theme-palenight-2L4zMwIM.js +0 -0
  286. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/matlab-BT79Cq_j.js +0 -0
  287. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/mdx-CxGBwLNt.js +0 -0
  288. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/mermaid-DLf3axBN.js +0 -0
  289. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/min-dark-B8TUPGHg.js +0 -0
  290. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/min-light-BDOoBxcA.js +0 -0
  291. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/mipsasm-DXuU_0cI.js +0 -0
  292. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/mojo-1Omp2pIo.js +0 -0
  293. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/monokai-E_VBmXGZ.js +0 -0
  294. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/moonbit-DZzq699o.js +0 -0
  295. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/move-DxDAOJVd.js +0 -0
  296. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/narrat-CxDcPPb9.js +0 -0
  297. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/nextflow-JEyYUlIq.js +0 -0
  298. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/nextflow-groovy-wvmJO4hi.js +0 -0
  299. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/night-owl-DefhalNX.js +0 -0
  300. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/night-owl-light-byb3AbEn.js +0 -0
  301. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/nix-DsFTDHWT.js +0 -0
  302. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/nord-D5rQzHT-.js +0 -0
  303. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/nushell-BQ_rO0AM.js +0 -0
  304. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/objective-c-BMq6JT_m.js +0 -0
  305. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/objective-cpp-DRwojuGv.js +0 -0
  306. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ocaml-e4_gKO6E.js +0 -0
  307. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/odin-mdTPwYOg.js +0 -0
  308. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/one-dark-pro-DxXww9jg.js +0 -0
  309. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/one-light-D9c03w7t.js +0 -0
  310. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/openscad-D2aTdNfr.js +0 -0
  311. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/pascal-D4n_G8vj.js +0 -0
  312. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/pierre-dark-CizZ1Z5z.js +0 -0
  313. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/pierre-light-CHMWfAMe.js +0 -0
  314. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/pkl-DcjhAp0L.js +0 -0
  315. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/plastic-uOsw7z1x.js +0 -0
  316. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/plsql-BSy3Ag0J.js +0 -0
  317. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/po-Be96RYkA.js +0 -0
  318. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/poimandres-CyO4HORD.js +0 -0
  319. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/polar-BmhMKWum.js +0 -0
  320. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/postcss-BTQso3H9.js +0 -0
  321. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/powerquery-DVyQv3M2.js +0 -0
  322. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/powershell-BmtCGJVD.js +0 -0
  323. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/prisma-CCFA9rEj.js +0 -0
  324. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/prolog-DWGEEo78.js +0 -0
  325. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/proto-C3eop1kM.js +0 -0
  326. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/puppet-C0_7Nv5A.js +0 -0
  327. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/purescript-Bv-B8yRw.js +0 -0
  328. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/python-CKg5r0C3.js +0 -0
  329. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/qmldir-Cqfb4Lox.js +0 -0
  330. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/qss-Csho9BH8.js +0 -0
  331. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/racket-D8-uWeQH.js +0 -0
  332. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/raku-Cj4JSa8p.js +0 -0
  333. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/red-z4H4llUY.js +0 -0
  334. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/reg-DXGFiJSl.js +0 -0
  335. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/rel-CunnVTBK.js +0 -0
  336. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/riscv-C8BcOCkS.js +0 -0
  337. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ron-DiDyR9oa.js +0 -0
  338. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/rose-pine-BADquuIH.js +0 -0
  339. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/rose-pine-dawn-BLcEeBoh.js +0 -0
  340. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/rose-pine-moon-BK_tLY1Y.js +0 -0
  341. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/rosmsg-CHmL1Uyj.js +0 -0
  342. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/rust-DjJFInu3.js +0 -0
  343. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/sass-D3xZ5o-v.js +0 -0
  344. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/scala-B0IRml5w.js +0 -0
  345. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/scheme-BhwcV3Av.js +0 -0
  346. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/sdbl-BmWYR-pI.js +0 -0
  347. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/shaderlab-DZ3Lsiak.js +0 -0
  348. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/slack-dark-DOnVms5P.js +0 -0
  349. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/slack-ochin-DcRTft4q.js +0 -0
  350. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/smalltalk-DVQuUMII.js +0 -0
  351. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/snazzy-light-x9CLJ1W9.js +0 -0
  352. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/solarized-dark-BB1sh-pe.js +0 -0
  353. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/solarized-light-9-RPS998.js +0 -0
  354. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/solidity-gQ4WXILB.js +0 -0
  355. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/sparql-B9c85a_o.js +0 -0
  356. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/splunk-OB48_RcD.js +0 -0
  357. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/ssh-config-DA9YMRGV.js +0 -0
  358. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/stylus-sKwvsUaC.js +0 -0
  359. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/swift-C72NbAtg.js +0 -0
  360. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/synthwave-84-eJ9uRN_S.js +0 -0
  361. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/system-verilog-CnWMF7Nq.js +0 -0
  362. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/systemd-DMzItW5N.js +0 -0
  363. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/talonscript-DopQCWDL.js +0 -0
  364. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/tasl-C28SYKbq.js +0 -0
  365. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/tcl-DHq7zmoF.js +0 -0
  366. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/terraform-CogS1YKX.js +0 -0
  367. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/tokyo-night-B9N7LyrF.js +0 -0
  368. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/toml-BH_iPsgK.js +0 -0
  369. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/tsv-BIkdBZX1.js +0 -0
  370. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/turtle-CqNXyJWZ.js +0 -0
  371. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/typespec-CQ9LYD_e.js +0 -0
  372. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/typst-T-Fsk-Sv.js +0 -0
  373. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/v-BhMEOw9x.js +0 -0
  374. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vala-DzajMnwt.js +0 -0
  375. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vb-7Xr8dEYW.js +0 -0
  376. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/verilog-AvXtwZir.js +0 -0
  377. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vesper-CtgQQ2sf.js +0 -0
  378. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vhdl-BHu0zg1P.js +0 -0
  379. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/viml-Di0QpLfC.js +0 -0
  380. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vitesse-black-jXdfyqgD.js +0 -0
  381. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vitesse-dark-B88PxG1r.js +0 -0
  382. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vitesse-light-BXxZh2iV.js +0 -0
  383. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/vyper-C3R5yXgx.js +0 -0
  384. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/wasm-CEUrWlVz.js +0 -0
  385. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/wasm-Chsuwt1A.js +0 -0
  386. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/wenyan-BonVcr2i.js +0 -0
  387. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/wgsl-D59WYmNq.js +0 -0
  388. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/wikitext-ariTI2Wk.js +0 -0
  389. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/wit-EA4fa3Dt.js +0 -0
  390. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/wolfram-DDp7LhyU.js +0 -0
  391. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/zenscript-4WaROUyc.js +0 -0
  392. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/assets/zig-CJoLJGwV.js +0 -0
  393. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/favicon_slashes.svg +0 -0
  394. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/fonts/OFL.txt +0 -0
  395. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/fonts/SourceCodePro-Variable.woff2 +0 -0
  396. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/server/static/fonts/SourceSans3-Variable.woff2 +0 -0
  397. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/system_prompt.py +0 -0
  398. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/src/mycode_cli/tui/__init__.py +0 -0
  399. {mycode_cli-0.8.10 → mycode_cli-0.9.1}/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.10
3
+ Version: 0.9.1
4
4
  Summary: Minimal coding agent CLI and web UI built on mycode-sdk.
5
5
  Project-URL: Homepage, https://github.com/legibet/mycode
6
6
  Project-URL: Repository, https://github.com/legibet/mycode
@@ -21,13 +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: fastapi>=0.135.0
25
- Requires-Dist: mycode-sdk==0.8.10
26
- Requires-Dist: prompt-toolkit>=3.0.52
24
+ Requires-Dist: fastapi>=0.136.0
25
+ Requires-Dist: mycode-sdk==0.9.1
26
+ Requires-Dist: prompt-toolkit>=3.0.0
27
27
  Requires-Dist: pyyaml>=6.0.0
28
28
  Requires-Dist: rich>=15.0.0
29
- Requires-Dist: typer>=0.25.0
30
- Requires-Dist: uvicorn[standard]>=0.45.0
29
+ Requires-Dist: typer>=0.26.0
30
+ Requires-Dist: uvicorn[standard]>=0.49.0
31
31
  Description-Content-Type: text/markdown
32
32
 
33
33
  # mycode
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "mycode-cli"
7
- version = "0.8.10"
7
+ version = "0.9.1"
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,12 +26,12 @@ classifiers = [
26
26
  ]
27
27
  keywords = ["agent", "cli", "llm", "coding-agent", "fastapi"]
28
28
  dependencies = [
29
- "mycode-sdk==0.8.10",
30
- "fastapi>=0.135.0",
31
- "uvicorn[standard]>=0.45.0",
29
+ "mycode-sdk==0.9.1",
30
+ "fastapi>=0.136.0",
31
+ "uvicorn[standard]>=0.49.0",
32
32
  "rich>=15.0.0",
33
- "prompt-toolkit>=3.0.52",
34
- "typer>=0.25.0",
33
+ "prompt-toolkit>=3.0.0",
34
+ "typer>=0.26.0",
35
35
  "pyyaml>=6.0.0",
36
36
  ]
37
37
 
@@ -1,4 +1,4 @@
1
- """Config loading, provider resolution, and CLI-owned filesystem paths."""
1
+ """Configuration document validation, settings loading, and provider resolution."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -22,27 +22,20 @@ from mycode.providers import (
22
22
  from mycode.utils import as_bool, as_int
23
23
 
24
24
  _DEFAULT_MYCODE_HOME = "~/.mycode"
25
-
26
-
27
- def resolve_mycode_home() -> Path:
28
- """Resolve the mycode home directory (``$MYCODE_HOME`` or ``~/.mycode``)."""
29
-
30
- raw = os.environ.get("MYCODE_HOME", _DEFAULT_MYCODE_HOME)
31
- return Path(raw).expanduser().resolve(strict=False)
32
-
33
-
34
- def resolve_sessions_dir() -> Path:
35
- """Resolve the directory used for persisted sessions."""
36
-
37
- return resolve_mycode_home() / "sessions"
38
-
39
-
40
25
  _API_KEY_ENV_REF_RE = re.compile(r"^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$")
41
- # Full set of user-facing choices. "auto" means "do not send an explicit effort
42
- # to the provider" and is represented internally as `None` after normalization.
26
+
27
+ # "auto" means "do not send an explicit effort to the provider"; after
28
+ # normalization it is represented as None.
43
29
  REASONING_EFFORT_OPTIONS = ("auto", "none", "low", "medium", "high", "xhigh")
44
30
  PERMISSION_LEVEL_OPTIONS = ("readonly", "safe", "standard", "yolo")
45
31
  PERMISSION_MODE_OPTIONS = ("ask", "deny")
32
+ MODEL_OVERRIDE_KEYS = (
33
+ "context_window",
34
+ "max_output_tokens",
35
+ "supports_reasoning",
36
+ "supports_image_input",
37
+ "supports_pdf_input",
38
+ )
46
39
  _EFFORT_AUTO_ALIASES = frozenset({"", "auto", "default"})
47
40
  _EFFORT_OFF_ALIASES = frozenset({"off", "disabled"})
48
41
 
@@ -103,14 +96,17 @@ class ResolvedProvider:
103
96
  model_config: ModelConfig | None = None
104
97
 
105
98
 
106
- def _load_json(path: Path) -> dict[str, Any] | None:
107
- if not path.is_file():
108
- return None
109
- try:
110
- data = json.loads(path.read_text(encoding="utf-8"))
111
- except Exception:
112
- return None
113
- return data if isinstance(data, dict) else None
99
+ def resolve_mycode_home() -> Path:
100
+ """Resolve the mycode home directory (``$MYCODE_HOME`` or ``~/.mycode``)."""
101
+
102
+ raw = os.environ.get("MYCODE_HOME", _DEFAULT_MYCODE_HOME)
103
+ return Path(raw).expanduser().resolve(strict=False)
104
+
105
+
106
+ def resolve_sessions_dir() -> Path:
107
+ """Resolve the directory used for persisted sessions."""
108
+
109
+ return resolve_mycode_home() / "sessions"
114
110
 
115
111
 
116
112
  def resolve_project(cwd: str) -> Path:
@@ -127,63 +123,34 @@ def project_dirs(cwd: str, project: str | Path | None = None) -> list[Path]:
127
123
  """Return directories from project to cwd, inclusive."""
128
124
 
129
125
  cwd_path = Path(cwd).expanduser().resolve(strict=False)
130
- project_path = Path(project).expanduser().resolve(strict=False) if project is not None else resolve_project(cwd)
131
-
132
- dirs = [cwd_path]
133
- while dirs[-1] != project_path:
134
- parent = dirs[-1].parent
135
- if parent == dirs[-1]:
136
- break
137
- dirs.append(parent)
138
-
139
- return list(reversed(dirs))
126
+ if project is None:
127
+ project_path = resolve_project(cwd)
128
+ else:
129
+ project_path = Path(project).expanduser().resolve(strict=False)
140
130
 
131
+ ancestors = [cwd_path, *cwd_path.parents]
132
+ if project_path in ancestors:
133
+ ancestors = ancestors[: ancestors.index(project_path) + 1]
134
+ return list(reversed(ancestors))
141
135
 
142
- def _normalize_models(value: Any) -> dict[str, ModelConfig]:
143
- if not isinstance(value, dict):
144
- return {}
145
136
 
146
- models: dict[str, ModelConfig] = {}
147
- for model, raw in value.items():
148
- if not isinstance(model, str):
149
- continue
150
- model_id = model.strip()
151
- if not model_id:
152
- continue
153
- if isinstance(raw, ModelConfig):
154
- models[model_id] = raw
155
- continue
156
- raw_config = raw if isinstance(raw, dict) else {}
157
- models[model_id] = ModelConfig(
158
- context_window=as_int(raw_config.get("context_window")),
159
- max_output_tokens=as_int(raw_config.get("max_output_tokens")),
160
- supports_reasoning=as_bool(raw_config.get("supports_reasoning")),
161
- supports_image_input=as_bool(raw_config.get("supports_image_input")),
162
- supports_pdf_input=as_bool(raw_config.get("supports_pdf_input")),
163
- )
164
- return models
137
+ def _candidate_config_paths(cwd: str, project: str | Path) -> list[Path]:
138
+ """Return config files in override order: global, then project to cwd."""
165
139
 
140
+ paths = [resolve_mycode_home() / "config.json"]
141
+ paths.extend(path / ".mycode" / "config.json" for path in project_dirs(cwd, project))
142
+ return paths
166
143
 
167
- def _parse_config_api_key(value: Any) -> tuple[str | None, str | None]:
168
- if not isinstance(value, str):
169
- return None, None
170
144
 
171
- cleaned = value.strip()
172
- if not cleaned:
173
- return None, None
145
+ def is_api_key_env_ref(value: str) -> str | None:
146
+ """Return the env var name when ``value`` is a ``${NAME}`` reference."""
174
147
 
175
- match = _API_KEY_ENV_REF_RE.fullmatch(cleaned)
176
- if match:
177
- return None, match.group(1)
178
- return cleaned, None
148
+ match = _API_KEY_ENV_REF_RE.fullmatch(value.strip())
149
+ return match.group(1) if match else None
179
150
 
180
151
 
181
152
  def parse_compact_threshold(value: Any) -> float | None:
182
- """Parse compact_threshold from config.
183
-
184
- Returns ``None`` when the key should keep the current/default value, ``0.0``
185
- when compaction is explicitly disabled, or a valid float in ``[0, 1]``.
186
- """
153
+ """Parse compact_threshold from config."""
187
154
 
188
155
  if value is None:
189
156
  return None
@@ -201,13 +168,7 @@ def parse_compact_threshold(value: Any) -> float | None:
201
168
 
202
169
 
203
170
  def normalize_reasoning_effort(value: Any) -> str | None:
204
- """Normalize a reasoning effort setting.
205
-
206
- Returns `None` for "auto"/"default"/empty — the sentinel for "do not send an
207
- explicit effort to the provider". Returns "none" for "off"/"disabled" and
208
- a canonical tier string for recognized levels. Raises `ValueError` for any
209
- other string (or non-string, non-None value).
210
- """
171
+ """Normalize a reasoning effort setting."""
211
172
 
212
173
  if value is None:
213
174
  return None
@@ -225,6 +186,19 @@ def normalize_reasoning_effort(value: Any) -> str | None:
225
186
  raise ValueError(f"unsupported reasoning_effort {value!r}; supported: {supported}")
226
187
 
227
188
 
189
+ def gate_reasoning_effort(
190
+ effort: str | None,
191
+ *,
192
+ supports_reasoning: bool | None,
193
+ adapter_supports_effort: bool,
194
+ ) -> str | None:
195
+ """Return effort only when the model reasons and the adapter accepts the effort knob."""
196
+
197
+ if effort is not None and supports_reasoning is True and adapter_supports_effort:
198
+ return effort
199
+ return None
200
+
201
+
228
202
  def normalize_permission_level(value: Any) -> PermissionLevel:
229
203
  if not isinstance(value, str):
230
204
  raise ValueError(f"permission level must be a string, got {type(value).__name__}")
@@ -258,61 +232,153 @@ def parse_permission(value: Any, current: PermissionConfig | None = None) -> Per
258
232
  raise ValueError(f"permission must be a string or object, got {type(value).__name__}")
259
233
 
260
234
 
261
- def _config_api_key_from_env_var(provider: ProviderConfig, *, require: bool = False) -> str | None:
262
- env_name = provider.api_key_env_var
263
- if not env_name:
264
- return None
235
+ def validate_global_config(data: Any) -> dict[str, Any]:
236
+ """Validate and clean a global config document before writing it to disk."""
265
237
 
266
- value = (os.environ.get(env_name) or "").strip()
267
- if value:
268
- return value
238
+ if data is None:
239
+ return {}
240
+ if not isinstance(data, dict):
241
+ raise ValueError("config must be an object")
269
242
 
270
- if require:
271
- raise ValueError(f"missing API key env var {env_name!r} referenced by provider {provider.name!r}")
272
- return None
243
+ out: dict[str, Any] = {}
273
244
 
245
+ if data.get("default") is not None:
246
+ default = _validate_default_config(data["default"])
247
+ if default:
248
+ out["default"] = default
274
249
 
275
- def provider_has_api_key(provider: ProviderConfig) -> bool:
276
- """Return whether a configured provider can authenticate right now."""
250
+ if data.get("permission") is not None:
251
+ out["permission"] = _validate_permission_config(data["permission"])
277
252
 
278
- if provider.api_key_env_var:
279
- return bool(_config_api_key_from_env_var(provider))
280
- return bool(provider.api_key or provider_api_key_from_env(provider.type))
253
+ raw_providers = data.get("providers")
254
+ if raw_providers is not None:
255
+ if not isinstance(raw_providers, dict):
256
+ raise ValueError("providers must be an object")
257
+ providers: dict[str, dict[str, Any]] = {}
258
+ for name, raw in raw_providers.items():
259
+ if not isinstance(name, str) or not name.strip():
260
+ raise ValueError("provider name must be a non-empty string")
261
+ provider_name = name.strip()
262
+ providers[provider_name] = _validate_provider_config(provider_name, raw)
263
+ if providers:
264
+ out["providers"] = providers
281
265
 
266
+ return out
282
267
 
283
- def _candidate_config_paths(cwd: str, project: str | Path) -> list[Path]:
284
- paths = [resolve_mycode_home() / "config.json"]
285
- paths.extend(path / ".mycode" / "config.json" for path in project_dirs(cwd, project))
286
- return paths
287
268
 
269
+ def _optional_config_string(raw: dict[str, Any], key: str, label: str) -> str | None:
270
+ if key not in raw:
271
+ return None
272
+ value = raw[key]
273
+ if value is None or value == "":
274
+ return None
275
+ if not isinstance(value, str):
276
+ raise ValueError(f"{label} must be a string")
277
+ return value.strip() or None
278
+
279
+
280
+ def _validate_default_config(raw: Any) -> dict[str, Any]:
281
+ if not isinstance(raw, dict):
282
+ raise ValueError("default must be an object")
283
+
284
+ out: dict[str, Any] = {}
285
+ for key in ("provider", "model"):
286
+ value = _optional_config_string(raw, key, f"default.{key}")
287
+ if value:
288
+ out[key] = value
289
+
290
+ effort = raw.get("reasoning_effort")
291
+ if effort not in (None, ""):
292
+ normalize_reasoning_effort(effort)
293
+ out["reasoning_effort"] = effort
294
+
295
+ compact_threshold = raw.get("compact_threshold")
296
+ if compact_threshold is False:
297
+ out["compact_threshold"] = False
298
+ elif compact_threshold is not None:
299
+ if isinstance(compact_threshold, bool):
300
+ raise ValueError("default.compact_threshold must be a number in [0, 1] or false")
301
+ parsed = parse_compact_threshold(compact_threshold)
302
+ if parsed is None:
303
+ raise ValueError("default.compact_threshold must be a number in [0, 1] or false")
304
+ out["compact_threshold"] = parsed
305
+
306
+ return out
307
+
308
+
309
+ def _validate_permission_config(raw: Any) -> PermissionLevel | dict[str, Any]:
310
+ if isinstance(raw, str):
311
+ return normalize_permission_level(raw)
312
+ if not isinstance(raw, dict):
313
+ raise ValueError("permission must be a string or object")
314
+
315
+ out: dict[str, Any] = {}
316
+ if "level" in raw:
317
+ out["level"] = normalize_permission_level(raw.get("level"))
318
+ if "mode" in raw:
319
+ out["mode"] = normalize_permission_mode(raw.get("mode"))
320
+ return out
321
+
322
+
323
+ def _validate_provider_config(name: str, raw: Any) -> dict[str, Any]:
324
+ if not isinstance(raw, dict):
325
+ raise ValueError(f"provider {name!r} must be an object")
326
+
327
+ out: dict[str, Any] = {}
328
+ raw_type = raw.get("type")
329
+ if raw_type in (None, ""):
330
+ if not is_supported_provider(name):
331
+ raise ValueError(f"provider {name!r} must set 'type'")
332
+ elif not isinstance(raw_type, str):
333
+ raise ValueError(f"provider {name!r}: type must be a string")
334
+ elif not is_supported_provider(raw_type):
335
+ supported = ", ".join(list_supported_providers())
336
+ raise ValueError(f"provider {name!r}: unsupported type {raw_type!r}; supported: {supported}")
337
+ else:
338
+ out["type"] = raw_type
288
339
 
289
- def _build_providers(raw_providers: dict[str, dict[str, Any]]) -> dict[str, ProviderConfig]:
290
- providers: dict[str, ProviderConfig] = {}
340
+ for key in ("api_key", "base_url"):
341
+ value = _optional_config_string(raw, key, f"provider {name!r}: {key}")
342
+ if value:
343
+ out[key] = value
291
344
 
292
- for name, raw in raw_providers.items():
293
- raw_type = raw.get("type")
294
- if raw_type:
295
- provider_type = str(raw_type)
296
- elif is_supported_provider(name):
297
- # Built-in providers can be overridden by name without repeating type.
298
- provider_type = name
299
- else:
300
- raise ValueError(f"provider {name!r} must set 'type'")
345
+ effort = raw.get("reasoning_effort")
346
+ if effort not in (None, ""):
347
+ normalize_reasoning_effort(effort)
348
+ out["reasoning_effort"] = effort
301
349
 
302
- models = _normalize_models(raw.get("models"))
303
- if not models:
304
- models = {model: ModelConfig() for model in provider_default_models(provider_type)}
305
- providers[name] = ProviderConfig(
306
- name=name,
307
- type=provider_type,
308
- models=models,
309
- api_key=raw.get("api_key") or None,
310
- api_key_env_var=raw.get("api_key_env_var") or None,
311
- base_url=raw.get("base_url") or None,
312
- reasoning_effort=normalize_reasoning_effort(raw.get("reasoning_effort")),
313
- )
350
+ raw_models = raw.get("models")
351
+ if raw_models is not None:
352
+ models = _validate_model_config_entries(name, raw_models)
353
+ if models:
354
+ out["models"] = models
314
355
 
315
- return providers
356
+ return out
357
+
358
+
359
+ def _validate_model_config_entries(name: str, raw: Any) -> dict[str, dict[str, Any]]:
360
+ # The settings UI sends a model list, while stored config uses a model map.
361
+ if isinstance(raw, list):
362
+ items: list[tuple[Any, Any]] = [(model, None) for model in raw]
363
+ elif isinstance(raw, dict):
364
+ items = list(raw.items())
365
+ else:
366
+ raise ValueError(f"provider {name!r}: models must be a list or object")
367
+
368
+ out: dict[str, dict[str, Any]] = {}
369
+ for model_id, overrides in items:
370
+ if not isinstance(model_id, str) or not model_id.strip():
371
+ raise ValueError(f"provider {name!r}: model id must be a non-empty string")
372
+ key = model_id.strip()
373
+ if overrides is None:
374
+ out[key] = {}
375
+ elif isinstance(overrides, dict):
376
+ out[key] = {
377
+ k: v for k, v in overrides.items() if isinstance(k, str) and k in MODEL_OVERRIDE_KEYS and v is not None
378
+ }
379
+ else:
380
+ raise ValueError(f"provider {name!r}: model {key!r} config must be an object")
381
+ return out
316
382
 
317
383
 
318
384
  def get_settings(cwd: str | None = None) -> Settings:
@@ -392,6 +458,100 @@ def get_settings(cwd: str | None = None) -> Settings:
392
458
  )
393
459
 
394
460
 
461
+ def _load_json(path: Path) -> dict[str, Any] | None:
462
+ """Load a JSON object from a config file; ignore missing or invalid files."""
463
+
464
+ if not path.is_file():
465
+ return None
466
+ try:
467
+ data = json.loads(path.read_text(encoding="utf-8"))
468
+ except Exception:
469
+ return None
470
+ return data if isinstance(data, dict) else None
471
+
472
+
473
+ def _normalize_models(value: Any) -> dict[str, ModelConfig]:
474
+ """Convert raw model overrides into runtime model config objects."""
475
+
476
+ if not isinstance(value, dict):
477
+ return {}
478
+
479
+ models: dict[str, ModelConfig] = {}
480
+ for model, raw in value.items():
481
+ if not isinstance(model, str):
482
+ continue
483
+ model_id = model.strip()
484
+ if not model_id:
485
+ continue
486
+ if isinstance(raw, ModelConfig):
487
+ models[model_id] = raw
488
+ continue
489
+ raw_config = raw if isinstance(raw, dict) else {}
490
+ models[model_id] = ModelConfig(
491
+ context_window=as_int(raw_config.get("context_window")),
492
+ max_output_tokens=as_int(raw_config.get("max_output_tokens")),
493
+ supports_reasoning=as_bool(raw_config.get("supports_reasoning")),
494
+ supports_image_input=as_bool(raw_config.get("supports_image_input")),
495
+ supports_pdf_input=as_bool(raw_config.get("supports_pdf_input")),
496
+ )
497
+ return models
498
+
499
+
500
+ def _parse_config_api_key(value: Any) -> tuple[str | None, str | None]:
501
+ """Return a literal API key or an env var reference from config."""
502
+
503
+ if not isinstance(value, str):
504
+ return None, None
505
+
506
+ cleaned = value.strip()
507
+ if not cleaned:
508
+ return None, None
509
+
510
+ env_name = is_api_key_env_ref(cleaned)
511
+ if env_name:
512
+ return None, env_name
513
+ return cleaned, None
514
+
515
+
516
+ def _build_providers(raw_providers: dict[str, dict[str, Any]]) -> dict[str, ProviderConfig]:
517
+ """Build runtime provider configs after layered config files are merged."""
518
+
519
+ providers: dict[str, ProviderConfig] = {}
520
+
521
+ for name, raw in raw_providers.items():
522
+ raw_type = raw.get("type")
523
+ if raw_type:
524
+ provider_type = str(raw_type)
525
+ elif is_supported_provider(name):
526
+ # Built-in providers can be overridden by name without repeating type.
527
+ provider_type = name
528
+ else:
529
+ raise ValueError(f"provider {name!r} must set 'type'")
530
+
531
+ models = _normalize_models(raw.get("models"))
532
+ if not models:
533
+ models = {model: ModelConfig() for model in provider_default_models(provider_type)}
534
+ providers[name] = ProviderConfig(
535
+ name=name,
536
+ type=provider_type,
537
+ models=models,
538
+ api_key=raw.get("api_key") or None,
539
+ api_key_env_var=raw.get("api_key_env_var") or None,
540
+ base_url=raw.get("base_url") or None,
541
+ reasoning_effort=normalize_reasoning_effort(raw.get("reasoning_effort")),
542
+ )
543
+
544
+ return providers
545
+
546
+
547
+ def provider_has_api_key(provider: ProviderConfig) -> bool:
548
+ """Return whether a configured provider can authenticate right now."""
549
+
550
+ if provider.api_key_env_var:
551
+ return bool(_config_api_key_from_env_var(provider))
552
+ return bool(provider.api_key or provider_api_key_from_env(provider.type))
553
+
554
+
395
555
  def resolve_provider(
396
556
  settings: Settings,
397
557
  *,
@@ -421,7 +581,7 @@ def resolve_provider(
421
581
  if refs:
422
582
  return _resolve_provider_runtime(
423
583
  settings,
424
- selected_name=refs[0][0],
584
+ selected_name=refs[0],
425
585
  model=model,
426
586
  api_key=api_key,
427
587
  api_base=api_base,
@@ -445,7 +605,7 @@ def resolve_provider_choices(settings: Settings) -> list[ResolvedProvider]:
445
605
  """Return currently selectable providers in stable selection order."""
446
606
 
447
607
  choices: list[ResolvedProvider] = []
448
- for selected_name, _ in _available_provider_references(settings):
608
+ for selected_name in _available_provider_references(settings):
449
609
  try:
450
610
  choices.append(_resolve_provider_runtime(settings, selected_name=selected_name))
451
611
  except ValueError:
@@ -453,10 +613,24 @@ def resolve_provider_choices(settings: Settings) -> list[ResolvedProvider]:
453
613
  return choices
454
614
 
455
615
 
456
- def _available_provider_references(settings: Settings) -> list[tuple[str, ProviderConfig | None]]:
457
- """Return usable provider references with the configured default first."""
616
+ def _config_api_key_from_env_var(provider: ProviderConfig, *, require: bool = False) -> str | None:
617
+ env_name = provider.api_key_env_var
618
+ if not env_name:
619
+ return None
620
+
621
+ value = (os.environ.get(env_name) or "").strip()
622
+ if value:
623
+ return value
624
+
625
+ if require:
626
+ raise ValueError(f"missing API key env var {env_name!r} referenced by provider {provider.name!r}")
627
+ return None
628
+
629
+
630
+ def _available_provider_references(settings: Settings) -> list[str]:
631
+ """Return usable provider names with the configured default first."""
458
632
 
459
- available: list[tuple[str, ProviderConfig | None]] = []
633
+ available: list[str] = []
460
634
  seen: set[str] = set()
461
635
  configured_types_with_credentials: set[str] = set()
462
636
 
@@ -478,7 +652,7 @@ def _available_provider_references(settings: Settings) -> list[tuple[str, Provid
478
652
  return
479
653
 
480
654
  seen.add(cleaned)
481
- available.append((cleaned, provider_config))
655
+ available.append(cleaned)
482
656
 
483
657
  add(settings.default_provider)
484
658
 
@@ -541,10 +715,10 @@ def _resolve_provider_runtime(
541
715
  supports_reasoning=model_config.supports_reasoning if model_config else None,
542
716
  )
543
717
  adapter = get_provider_adapter(provider_type)
544
- reasoning_effort = (
545
- configured_effort
546
- if configured_effort is not None and meta.supports_reasoning is True and adapter.supports_reasoning_effort
547
- else None
718
+ reasoning_effort = gate_reasoning_effort(
719
+ configured_effort,
720
+ supports_reasoning=meta.supports_reasoning,
721
+ adapter_supports_effort=adapter.supports_reasoning_effort,
548
722
  )
549
723
 
550
724
  resolved_api_key = api_key
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  import asyncio
6
6
  import os
7
7
  import sys
8
+ from contextlib import suppress
8
9
  from dataclasses import dataclass, replace
9
10
  from typing import Annotated, Any
10
11
  from uuid import uuid4
@@ -250,7 +251,7 @@ def chat(
250
251
  if setup.resolved_session.mode == "resumed":
251
252
  setup.view.print_history_preview(setup.resolved_session.messages)
252
253
 
253
- try:
254
+ with suppress(KeyboardInterrupt):
254
255
  asyncio.run(
255
256
  TerminalChat(
256
257
  agent=setup.agent,
@@ -260,8 +261,6 @@ def chat(
260
261
  view=setup.view,
261
262
  ).run()
262
263
  )
263
- except KeyboardInterrupt:
264
- pass
265
264
 
266
265
 
267
266
  @app.command()
@@ -9,7 +9,7 @@ from pathlib import Path
9
9
  from typing import Literal, NamedTuple
10
10
 
11
11
  from mycode import Hooks, ToolExecutionResult, ToolHookContext
12
- from mycode.tools import resolve_path
12
+ from mycode.utils import resolve_path
13
13
  from mycode_cli.config import PermissionConfig, PermissionLevel, Settings
14
14
  from mycode_cli.system_prompt import discover_skills
15
15
 
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from mycode.agent import Agent
6
6
  from mycode.session import SessionStore
7
- from mycode.tools import DEFAULT_TOOL_SPECS
7
+ from mycode.tools import bash_tool, edit_tool, read_tool, write_tool
8
8
  from mycode_cli.config import ResolvedProvider, Settings
9
9
  from mycode_cli.permissions import ToolReviewCallback, build_permission_hooks
10
10
  from mycode_cli.system_prompt import build_system_prompt
@@ -46,6 +46,6 @@ def build_agent(
46
46
  compact_threshold=settings.compact_threshold,
47
47
  max_turns=max_turns,
48
48
  system=build_system_prompt(cwd, settings),
49
- tools=DEFAULT_TOOL_SPECS,
49
+ tools=[read_tool, write_tool, edit_tool, bash_tool],
50
50
  hooks=hooks,
51
51
  )
@@ -14,6 +14,7 @@ from mycode_cli.server.routers.settings import router as settings_router
14
14
  from mycode_cli.server.routers.workspaces import router as workspaces_router
15
15
 
16
16
  logger = logging.getLogger(__name__)
17
+ logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
17
18
  DEV_CORS_ORIGINS = ("http://localhost:5173", "http://127.0.0.1:5173")
18
19
 
19
20
 
@@ -25,7 +26,6 @@ def web_static_path() -> Path:
25
26
 
26
27
  def create_app(*, serve_web: bool = True, cors_origins: Sequence[str] = ()) -> FastAPI:
27
28
  """Create the FastAPI app."""
28
- logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
29
29
  application = FastAPI(title="mycode")
30
30
 
31
31
  if cors_origins: