mycode-cli 0.1.0__tar.gz → 0.1.2__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 (485) hide show
  1. mycode_cli-0.1.2/.github/workflows/ci.yml +105 -0
  2. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/.github/workflows/publish.yml +1 -1
  3. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/.pre-commit-config.yaml +1 -1
  4. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/AGENTS.md +8 -9
  5. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/PKG-INFO +4 -4
  6. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/README.md +3 -3
  7. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/docs/api.md +4 -4
  8. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/docs/providers.md +1 -1
  9. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/docs/sessions.md +1 -1
  10. mycode_cli-0.1.0/docs/frontend.md → mycode_cli-0.1.2/docs/web.md +10 -10
  11. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/hatch_build.py +5 -5
  12. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/cli/main.py +2 -2
  13. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/cli/render.py +88 -46
  14. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/agent.py +10 -14
  15. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/config.py +23 -40
  16. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/models.py +10 -31
  17. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/providers/openai_chat.py +1 -1
  18. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/providers/openai_responses.py +1 -1
  19. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/session.py +40 -52
  20. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/system_prompt.py +15 -7
  21. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/tools.py +40 -38
  22. mycode_cli-0.1.2/mycode/core/utils.py +33 -0
  23. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/app.py +9 -9
  24. mycode_cli-0.1.2/mycode/server/static/assets/EditDiff-B_aujzJQ.js +12 -0
  25. mycode_cli-0.1.2/mycode/server/static/assets/index-BhG63UMx.css +1 -0
  26. mycode_cli-0.1.2/mycode/server/static/assets/index-DpmWOCHa.js +206 -0
  27. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/index.html +2 -2
  28. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/pyproject.toml +2 -1
  29. mycode_cli-0.1.2/scripts/build_web.py +38 -0
  30. mycode_cli-0.1.2/scripts/release.sh +35 -0
  31. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_models.py +6 -11
  32. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_rewind.py +2 -2
  33. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_server_app.py +8 -8
  34. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_tools.py +26 -2
  35. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/uv.lock +141 -3
  36. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/package.json +1 -1
  37. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/EditDiff.tsx +22 -4
  38. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/InputArea.tsx +5 -5
  39. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/MessageBubble.tsx +1 -1
  40. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/ReasoningBlock.tsx +7 -7
  41. mycode_cli-0.1.2/web/src/components/Chat/ToolCard.tsx +479 -0
  42. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Sidebar.tsx +65 -66
  43. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/WorkspacePicker.tsx +139 -122
  44. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/index.css +14 -2
  45. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/messages.ts +6 -7
  46. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/storage.ts +2 -0
  47. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/tailwind.config.js +2 -1
  48. mycode_cli-0.1.0/frontend/src/components/Chat/ToolCard.tsx +0 -248
  49. mycode_cli-0.1.0/mycode/core/system_prompt.md +0 -10
  50. mycode_cli-0.1.0/mycode/server/static/assets/EditDiff-C1ql7kft.js +0 -12
  51. mycode_cli-0.1.0/mycode/server/static/assets/index-B4e4WQPq.css +0 -1
  52. mycode_cli-0.1.0/mycode/server/static/assets/index-C2xTNJGd.js +0 -203
  53. mycode_cli-0.1.0/scripts/build_frontend.py +0 -38
  54. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/.gitignore +0 -0
  55. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/LICENSE +0 -0
  56. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/biome.json +0 -0
  57. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/docs/config.md +0 -0
  58. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/__init__.py +0 -0
  59. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/cli/__init__.py +0 -0
  60. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/cli/chat.py +0 -0
  61. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/cli/runtime.py +0 -0
  62. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/cli/theme.py +0 -0
  63. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/__init__.py +0 -0
  64. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/messages.py +0 -0
  65. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/models_catalog.json +0 -0
  66. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/providers/__init__.py +0 -0
  67. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/providers/anthropic_like.py +0 -0
  68. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/providers/base.py +0 -0
  69. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/core/providers/gemini.py +0 -0
  70. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/__init__.py +0 -0
  71. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/deps.py +0 -0
  72. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/routers/__init__.py +0 -0
  73. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/routers/chat.py +0 -0
  74. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/routers/sessions.py +0 -0
  75. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/routers/workspaces.py +0 -0
  76. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/run_manager.py +0 -0
  77. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/schemas.py +0 -0
  78. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  79. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  80. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  81. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  82. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  83. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  84. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  85. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  86. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  87. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  88. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  89. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  90. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  91. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  92. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  93. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  94. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  95. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  96. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  97. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  98. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  99. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  100. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  101. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  102. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  103. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  104. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  105. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  106. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  107. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  108. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  109. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  110. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  111. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  112. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  113. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  114. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  115. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  116. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  117. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  118. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  119. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  120. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  121. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  122. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  123. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  124. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  125. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  126. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  127. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  128. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  129. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  130. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  131. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  132. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  133. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  134. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  135. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  136. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  137. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/abap-BdImnpbu.js +0 -0
  138. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/actionscript-3-CoDkCxhg.js +0 -0
  139. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ada-bCR0ucgS.js +0 -0
  140. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/andromeeda-C4gqWexZ.js +0 -0
  141. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/angular-html-DA-rfuFy.js +0 -0
  142. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/angular-ts-BrjP3tb8.js +0 -0
  143. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/apache-Pmp26Uib.js +0 -0
  144. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/apex-D8_7TLub.js +0 -0
  145. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/apl-CORt7UWP.js +0 -0
  146. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/applescript-Co6uUVPk.js +0 -0
  147. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ara-BRHolxvo.js +0 -0
  148. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/asciidoc-Ve4PFQV2.js +0 -0
  149. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/asm-D_Q5rh1f.js +0 -0
  150. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/astro-HNnZUWAn.js +0 -0
  151. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/aurora-x-D-2ljcwZ.js +0 -0
  152. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/auto-render-xntwXHOX.js +0 -0
  153. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/awk-DMzUqQB5.js +0 -0
  154. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ayu-dark-DYE7WIF3.js +0 -0
  155. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ayu-light-BA47KaF1.js +0 -0
  156. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ayu-mirage-32ctXXKs.js +0 -0
  157. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ballerina-BFfxhgS-.js +0 -0
  158. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/bat-BkioyH1T.js +0 -0
  159. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/beancount-k_qm7-4y.js +0 -0
  160. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/berry-uYugtg8r.js +0 -0
  161. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/bibtex-CHM0blh-.js +0 -0
  162. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/bicep-Bmn6On1c.js +0 -0
  163. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/bird2-BIv1doCn.js +0 -0
  164. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/blade-BjGOyj-B.js +0 -0
  165. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/bsl-BO_Y6i37.js +0 -0
  166. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/c-BIGW1oBm.js +0 -0
  167. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/c3-eo99z4R2.js +0 -0
  168. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/cadence-Bv_4Rxtq.js +0 -0
  169. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/cairo-KRGpt6FW.js +0 -0
  170. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/catppuccin-frappe-DFWUc33u.js +0 -0
  171. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
  172. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
  173. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
  174. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/clarity-D53aC0YG.js +0 -0
  175. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/clojure-P80f7IUj.js +0 -0
  176. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/cmake-D1j8_8rp.js +0 -0
  177. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/cobol-nBiQ_Alo.js +0 -0
  178. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/codeowners-Bp6g37R7.js +0 -0
  179. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/codeql-DsOJ9woJ.js +0 -0
  180. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/coffee-Ch7k5sss.js +0 -0
  181. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/common-lisp-Cg-RD9OK.js +0 -0
  182. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/coq-DkFqJrB1.js +0 -0
  183. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/cpp-CofmeUqb.js +0 -0
  184. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/crystal-DNxU26gB.js +0 -0
  185. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/csharp-COcwbKMJ.js +0 -0
  186. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/css-CLj8gQPS.js +0 -0
  187. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/csv-fuZLfV_i.js +0 -0
  188. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/cue-D82EKSYY.js +0 -0
  189. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/cypher-COkxafJQ.js +0 -0
  190. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/d-85-TOEBH.js +0 -0
  191. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/dark-plus-C3mMm8J8.js +0 -0
  192. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/dart-bE4Kk8sk.js +0 -0
  193. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/dax-CEL-wOlO.js +0 -0
  194. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/desktop-BmXAJ9_W.js +0 -0
  195. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/diff-D97Zzqfu.js +0 -0
  196. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/docker-BcOcwvcX.js +0 -0
  197. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/dotenv-Da5cRb03.js +0 -0
  198. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/dracula-BzJJZx-M.js +0 -0
  199. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/dracula-soft-BXkSAIEj.js +0 -0
  200. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/dream-maker-BtqSS_iP.js +0 -0
  201. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/edge-FbVlp4U3.js +0 -0
  202. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/elixir-CkH2-t6x.js +0 -0
  203. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/elm-DbKCFpqz.js +0 -0
  204. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/emacs-lisp-CXvaQtF9.js +0 -0
  205. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/erb-BYCe7drp.js +0 -0
  206. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/erlang-DsQrWhSR.js +0 -0
  207. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/everforest-dark-BgDCqdQA.js +0 -0
  208. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/everforest-light-C8M2exoo.js +0 -0
  209. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/fennel-BYunw83y.js +0 -0
  210. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/fish-BvzEVeQv.js +0 -0
  211. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/fluent-C4IJs8-o.js +0 -0
  212. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
  213. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/fortran-free-form-BxgE0vQu.js +0 -0
  214. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/fsharp-CXgrBDvD.js +0 -0
  215. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gdresource-BOOCDP_w.js +0 -0
  216. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gdscript-C5YyOfLZ.js +0 -0
  217. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gdshader-DkwncUOv.js +0 -0
  218. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/genie-D0YGMca9.js +0 -0
  219. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gherkin-DyxjwDmM.js +0 -0
  220. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/git-commit-F4YmCXRG.js +0 -0
  221. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/git-rebase-r7XF79zn.js +0 -0
  222. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/github-dark-DHJKELXO.js +0 -0
  223. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/github-dark-default-Cuk6v7N8.js +0 -0
  224. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
  225. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
  226. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/github-light-DAi9KRSo.js +0 -0
  227. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/github-light-default-D7oLnXFd.js +0 -0
  228. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
  229. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gleam-BspZqrRM.js +0 -0
  230. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/glimmer-js-ByusRIyA.js +0 -0
  231. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/glimmer-ts-BfAWNZQY.js +0 -0
  232. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/glsl-DplSGwfg.js +0 -0
  233. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gn-n2N0HUVH.js +0 -0
  234. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gnuplot-DdkO51Og.js +0 -0
  235. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/go-C27-OAKa.js +0 -0
  236. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/graphql-ChdNCCLP.js +0 -0
  237. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/groovy-gcz8RCvz.js +0 -0
  238. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
  239. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
  240. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
  241. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
  242. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
  243. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
  244. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/hack-i7_Ulhet.js +0 -0
  245. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/haml-D5jkg6IW.js +0 -0
  246. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/handlebars-BpdQsYii.js +0 -0
  247. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/haskell-Df6bDoY_.js +0 -0
  248. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/haxe-CzTSHFRz.js +0 -0
  249. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/hcl-BWvSN4gD.js +0 -0
  250. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/hjson-D5-asLiD.js +0 -0
  251. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/hlsl-D3lLCCz7.js +0 -0
  252. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/horizon-BUw7H-hv.js +0 -0
  253. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/horizon-bright-CUuTKBJd.js +0 -0
  254. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/houston-DnULxvSX.js +0 -0
  255. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/html-derivative-DlHx6ybY.js +0 -0
  256. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/html-pp8916En.js +0 -0
  257. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/http-jrhK8wxY.js +0 -0
  258. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/hurl-irOxFIW8.js +0 -0
  259. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/hxml-Bvhsp5Yf.js +0 -0
  260. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/hy-DFXneXwc.js +0 -0
  261. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/imba-DGztddWO.js +0 -0
  262. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ini-BEwlwnbL.js +0 -0
  263. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/java-CylS5w8V.js +0 -0
  264. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/javascript-wDzz0qaB.js +0 -0
  265. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/jinja-f2NsQr07.js +0 -0
  266. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/jison-wvAkD_A8.js +0 -0
  267. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/json-Cp-IABpG.js +0 -0
  268. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/json5-C9tS-k6U.js +0 -0
  269. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/jsonc-Des-eS-w.js +0 -0
  270. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/jsonl-DcaNXYhu.js +0 -0
  271. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/jsonnet-DFQXde-d.js +0 -0
  272. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/jssm-C2t-YnRu.js +0 -0
  273. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/jsx-g9-lgVsj.js +0 -0
  274. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/julia-CxzCAyBv.js +0 -0
  275. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/just-VxiPbLrw.js +0 -0
  276. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
  277. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
  278. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/kanagawa-wave-DWedfzmr.js +0 -0
  279. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/katex-DnJR2-55.css +0 -0
  280. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/kdl-DV7GczEv.js +0 -0
  281. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/kotlin-BdnUsdx6.js +0 -0
  282. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/kusto-wEQ09or8.js +0 -0
  283. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/laserwave-DUszq2jm.js +0 -0
  284. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/latex-CWtU0Tv5.js +0 -0
  285. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/lean-BZvkOJ9d.js +0 -0
  286. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/less-B1dDrJ26.js +0 -0
  287. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/light-plus-B7mTdjB0.js +0 -0
  288. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/liquid-C0sCDyMI.js +0 -0
  289. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/llvm-DjAJT7YJ.js +0 -0
  290. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/log-2UxHyX5q.js +0 -0
  291. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/logo-BtOb2qkB.js +0 -0
  292. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/lua-BaeVxFsk.js +0 -0
  293. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/luau-C-HG3fhB.js +0 -0
  294. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/make-CHLpvVh8.js +0 -0
  295. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/markdown-Cvjx9yec.js +0 -0
  296. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/marko-DjSrsDqO.js +0 -0
  297. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/material-theme-D5KoaKCx.js +0 -0
  298. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/material-theme-darker-BfHTSMKl.js +0 -0
  299. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/material-theme-lighter-B0m2ddpp.js +0 -0
  300. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/material-theme-ocean-CyktbL80.js +0 -0
  301. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
  302. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/matlab-D7o27uSR.js +0 -0
  303. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/mdc-DTYItulj.js +0 -0
  304. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/mdx-Cmh6b_Ma.js +0 -0
  305. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/mermaid-mWjccvbQ.js +0 -0
  306. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/min-dark-CafNBF8u.js +0 -0
  307. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/min-light-CTRr51gU.js +0 -0
  308. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/mipsasm-CKIfxQSi.js +0 -0
  309. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/mojo-rZm6bMo-.js +0 -0
  310. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/monokai-D4h5O-jR.js +0 -0
  311. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/moonbit-_H4v1dQx.js +0 -0
  312. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/move-IF9eRakj.js +0 -0
  313. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/narrat-DRg8JJMk.js +0 -0
  314. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/nextflow-C-mBbutL.js +0 -0
  315. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/nextflow-groovy-vE_lwT2v.js +0 -0
  316. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/nginx-BpAMiNFr.js +0 -0
  317. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/night-owl-C39BiMTA.js +0 -0
  318. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/night-owl-light-CMTm3GFP.js +0 -0
  319. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/nim-BIad80T-.js +0 -0
  320. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/nix-CwoSXNpI.js +0 -0
  321. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/nord-Ddv68eIx.js +0 -0
  322. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/nushell-Cz2AlsmD.js +0 -0
  323. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/objective-c-DXmwc3jG.js +0 -0
  324. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/objective-cpp-CLxacb5B.js +0 -0
  325. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ocaml-C0hk2d4L.js +0 -0
  326. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/odin-BBf5iR-q.js +0 -0
  327. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/one-dark-pro-DVMEJ2y_.js +0 -0
  328. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/one-light-C3Wv6jpd.js +0 -0
  329. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/openscad-C4EeE6gA.js +0 -0
  330. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/pascal-D93ZcfNL.js +0 -0
  331. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/perl-NvoQZIq0.js +0 -0
  332. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/php-R6g_5hLQ.js +0 -0
  333. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/pkl-u5AG7uiY.js +0 -0
  334. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/plastic-3e1v2bzS.js +0 -0
  335. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/plsql-ChMvpjG-.js +0 -0
  336. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/po-BTJTHyun.js +0 -0
  337. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/poimandres-CS3Unz2-.js +0 -0
  338. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/polar-C0HS_06l.js +0 -0
  339. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/postcss-CXtECtnM.js +0 -0
  340. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/powerquery-CEu0bR-o.js +0 -0
  341. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/powershell-Dpen1YoG.js +0 -0
  342. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/prisma-Dd19v3D-.js +0 -0
  343. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/prolog-CbFg5uaA.js +0 -0
  344. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/proto-C7zT0LnQ.js +0 -0
  345. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/pug-DKIMFp6K.js +0 -0
  346. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/puppet-BMWR74SV.js +0 -0
  347. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/purescript-CklMAg4u.js +0 -0
  348. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/python-B6aJPvgy.js +0 -0
  349. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/qml-3beO22l8.js +0 -0
  350. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/qmldir-C8lEn-DE.js +0 -0
  351. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/qss-IeuSbFQv.js +0 -0
  352. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/r-Dspwwk_N.js +0 -0
  353. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/racket-BqYA7rlc.js +0 -0
  354. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/raku-DXvB9xmW.js +0 -0
  355. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/razor-BDqjjVU7.js +0 -0
  356. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/red-bN70gL4F.js +0 -0
  357. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/reg-C-SQnVFl.js +0 -0
  358. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/regexp-CDVJQ6XC.js +0 -0
  359. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/rel-C3B-1QV4.js +0 -0
  360. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/riscv-BM1_JUlF.js +0 -0
  361. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ron-D8l8udqQ.js +0 -0
  362. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
  363. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/rose-pine-moon-D4_iv3hh.js +0 -0
  364. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/rose-pine-qdsjHGoJ.js +0 -0
  365. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/rosmsg-BJDFO7_C.js +0 -0
  366. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/rst-CRjBmOyv.js +0 -0
  367. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ruby-Wjq7vjNf.js +0 -0
  368. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/rust-B1yitclQ.js +0 -0
  369. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/sas-cz2c8ADy.js +0 -0
  370. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/sass-Cj5Yp3dK.js +0 -0
  371. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/scala-C151Ov-r.js +0 -0
  372. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/scheme-C98Dy4si.js +0 -0
  373. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/scss-D5BDwBP9.js +0 -0
  374. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/sdbl-DVxCFoDh.js +0 -0
  375. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/shaderlab-Dg9Lc6iA.js +0 -0
  376. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/shellscript-Yzrsuije.js +0 -0
  377. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/shellsession-BADoaaVG.js +0 -0
  378. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/slack-dark-BthQWCQV.js +0 -0
  379. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/slack-ochin-DqwNpetd.js +0 -0
  380. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/smalltalk-BERRCDM3.js +0 -0
  381. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/snazzy-light-Bw305WKR.js +0 -0
  382. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/solarized-dark-DXbdFlpD.js +0 -0
  383. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/solarized-light-L9t79GZl.js +0 -0
  384. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/solidity-rGO070M0.js +0 -0
  385. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/soy-8wufbnw4.js +0 -0
  386. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/sparql-rVzFXLq3.js +0 -0
  387. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/splunk-BtCnVYZw.js +0 -0
  388. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/sql-BLtJtn59.js +0 -0
  389. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ssh-config-_ykCGR6B.js +0 -0
  390. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/stata-BH5u7GGu.js +0 -0
  391. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/stylus-BEDo0Tqx.js +0 -0
  392. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/surrealql-Bq5Q-fJD.js +0 -0
  393. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/svelte-Cy7k_4gC.js +0 -0
  394. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/swift-D82vCrfD.js +0 -0
  395. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/synthwave-84-CbfX1IO0.js +0 -0
  396. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/system-verilog-CnnmHF94.js +0 -0
  397. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/systemd-4A_iFExJ.js +0 -0
  398. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/talonscript-CkByrt1z.js +0 -0
  399. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/tasl-QIJgUcNo.js +0 -0
  400. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/tcl-dwOrl1Do.js +0 -0
  401. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/templ-DhtptRzy.js +0 -0
  402. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/terraform-BETggiCN.js +0 -0
  403. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/tex-idrVyKtj.js +0 -0
  404. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/tokyo-night-hegEt444.js +0 -0
  405. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/toml-vGWfd6FD.js +0 -0
  406. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/ts-tags-DQrlYJgV.js +0 -0
  407. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/tsv-B_m7g4N7.js +0 -0
  408. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/tsx-COt5Ahok.js +0 -0
  409. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/turtle-BsS91CYL.js +0 -0
  410. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/twig-xg9kU7Mw.js +0 -0
  411. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/typescript-BPQ3VLAy.js +0 -0
  412. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/typespec-CAFt9gP4.js +0 -0
  413. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/typst-DHCkPAjA.js +0 -0
  414. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/v-BcVCzyr7.js +0 -0
  415. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vala-CsfeWuGM.js +0 -0
  416. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vb-D17OF-Vu.js +0 -0
  417. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/verilog-BQ8w6xss.js +0 -0
  418. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vesper-DU1UobuO.js +0 -0
  419. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vhdl-CeAyd5Ju.js +0 -0
  420. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/viml-CJc9bBzg.js +0 -0
  421. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vitesse-black-Bkuqu6BP.js +0 -0
  422. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vitesse-dark-D0r3Knsf.js +0 -0
  423. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vitesse-light-CVO1_9PV.js +0 -0
  424. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vue-D2xRrEX4.js +0 -0
  425. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vue-html-AaS7Mt5G.js +0 -0
  426. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vue-vine-BoDAl6tE.js +0 -0
  427. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/vyper-CDx5xZoG.js +0 -0
  428. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/wasm-CG6Dc4jp.js +0 -0
  429. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/wasm-MzD3tlZU.js +0 -0
  430. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/wenyan-BV7otONQ.js +0 -0
  431. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/wgsl-Dx-B1_4e.js +0 -0
  432. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/wikitext-BhOHFoWU.js +0 -0
  433. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/wit-5i3qLPDT.js +0 -0
  434. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/wolfram-lXgVvXCa.js +0 -0
  435. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/xml-sdJ4AIDG.js +0 -0
  436. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/xsl-CtQFsRM5.js +0 -0
  437. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/yaml-Buea-lGh.js +0 -0
  438. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/zenscript-DVFEvuxE.js +0 -0
  439. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/mycode/server/static/assets/zig-VOosw3JB.js +0 -0
  440. {mycode_cli-0.1.0/frontend/public → mycode_cli-0.1.2/mycode/server/static}/favicon_slashes.svg +0 -0
  441. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/scripts/__init__.py +0 -0
  442. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/scripts/update_models_catalog.py +0 -0
  443. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/conftest.py +0 -0
  444. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_agent_loop.py +0 -0
  445. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_agent_provider_request.py +0 -0
  446. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_bash.py +0 -0
  447. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_cli.py +0 -0
  448. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_cli_imports.py +0 -0
  449. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_compact.py +0 -0
  450. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_config.py +0 -0
  451. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_instructions.py +0 -0
  452. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_provider_adapters.py +0 -0
  453. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_run_manager.py +0 -0
  454. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_session.py +0 -0
  455. {mycode_cli-0.1.0 → mycode_cli-0.1.2}/tests/test_skills.py +0 -0
  456. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/index.html +0 -0
  457. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/pnpm-lock.yaml +0 -0
  458. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/postcss.config.js +0 -0
  459. {mycode_cli-0.1.0/mycode/server/static → mycode_cli-0.1.2/web/public}/favicon_slashes.svg +0 -0
  460. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/App.tsx +0 -0
  461. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/CodeBlock.tsx +0 -0
  462. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/HighlightedCode.tsx +0 -0
  463. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/MarkdownBlock.tsx +0 -0
  464. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Chat/MessageList.tsx +0 -0
  465. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/Layout.tsx +0 -0
  466. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/MobileHeader.tsx +0 -0
  467. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/ThemeProvider.tsx +0 -0
  468. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/components/UI/Button.tsx +0 -0
  469. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/hooks/sessionSelection.test.ts +0 -0
  470. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/hooks/sessionSelection.ts +0 -0
  471. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/hooks/useChat.test.tsx +0 -0
  472. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/hooks/useChat.ts +0 -0
  473. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/main.tsx +0 -0
  474. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/test/setup.ts +0 -0
  475. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/types.ts +0 -0
  476. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/clipboard.ts +0 -0
  477. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/cn.ts +0 -0
  478. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/config.ts +0 -0
  479. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/highlighter.ts +0 -0
  480. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/messages.test.ts +0 -0
  481. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/utils/storage.test.ts +0 -0
  482. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/src/vite-env.d.ts +0 -0
  483. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/tsconfig.json +0 -0
  484. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/vite.config.ts +0 -0
  485. {mycode_cli-0.1.0/frontend → mycode_cli-0.1.2/web}/vitest.config.ts +0 -0
@@ -0,0 +1,105 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ concurrency:
10
+ group: ci-${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ python:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@v6
19
+
20
+ - name: Install uv
21
+ uses: astral-sh/setup-uv@v7
22
+
23
+ - name: Install pnpm
24
+ uses: pnpm/action-setup@v4
25
+ with:
26
+ version: 10
27
+
28
+ - name: Install Node.js
29
+ uses: actions/setup-node@v6
30
+ with:
31
+ node-version: 20
32
+ cache: pnpm
33
+ cache-dependency-path: web/pnpm-lock.yaml
34
+
35
+ - name: Install Python
36
+ run: uv python install 3.12
37
+
38
+ - name: Sync Python dependencies
39
+ run: uv sync --locked --dev
40
+
41
+ - name: Lint Python
42
+ run: uv run ruff check .
43
+
44
+ - name: Run Python tests
45
+ run: uv run pytest
46
+
47
+ web:
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - name: Checkout
51
+ uses: actions/checkout@v6
52
+
53
+ - name: Install pnpm
54
+ uses: pnpm/action-setup@v4
55
+ with:
56
+ version: 10
57
+
58
+ - name: Install Node.js
59
+ uses: actions/setup-node@v6
60
+ with:
61
+ node-version: 20
62
+ cache: pnpm
63
+ cache-dependency-path: web/pnpm-lock.yaml
64
+
65
+ - name: Install web dependencies
66
+ run: pnpm --dir web install --frozen-lockfile
67
+
68
+ - name: Lint web
69
+ run: pnpm --dir web check
70
+
71
+ - name: Typecheck web
72
+ run: pnpm --dir web typecheck
73
+
74
+ - name: Run web tests
75
+ run: pnpm --dir web test:run
76
+
77
+ package:
78
+ runs-on: ubuntu-latest
79
+ steps:
80
+ - name: Checkout
81
+ uses: actions/checkout@v6
82
+
83
+ - name: Install uv
84
+ uses: astral-sh/setup-uv@v7
85
+
86
+ - name: Install pnpm
87
+ uses: pnpm/action-setup@v4
88
+ with:
89
+ version: 10
90
+
91
+ - name: Install Node.js
92
+ uses: actions/setup-node@v6
93
+ with:
94
+ node-version: 20
95
+ cache: pnpm
96
+ cache-dependency-path: web/pnpm-lock.yaml
97
+
98
+ - name: Install Python
99
+ run: uv python install 3.12
100
+
101
+ - name: Build package
102
+ run: uv build --no-sources
103
+
104
+ - name: Verify wheel import
105
+ run: uv run --isolated --no-project --with dist/*.whl -- python -c "import mycode"
@@ -31,7 +31,7 @@ jobs:
31
31
  with:
32
32
  node-version: 20
33
33
  cache: pnpm
34
- cache-dependency-path: frontend/pnpm-lock.yaml
34
+ cache-dependency-path: web/pnpm-lock.yaml
35
35
 
36
36
  - name: Install Python
37
37
  run: uv python install 3.12
@@ -27,4 +27,4 @@ repos:
27
27
  - id: biome-check
28
28
  additional_dependencies: ["@biomejs/biome@2.4.7"]
29
29
  args: ["--config-path=biome.json"]
30
- files: ^frontend/
30
+ files: ^web/
@@ -27,8 +27,7 @@ Core runtime (`mycode/core/`):
27
27
  - `session.py` — append-only JSONL session storage, compact/rewind events, interrupted tool repair
28
28
  - `config.py` — layered config loading and provider resolution
29
29
  - `models.py` — bundled model metadata lookup (`context_window`, `supports_reasoning`, `supports_image_input`)
30
- - `system_prompt.py` — runtime system prompt assembly, AGENTS.md discovery, skills discovery
31
- - `system_prompt.md` — system prompt template
30
+ - `system_prompt.py` — runtime system prompt assembly, inlined base prompt, AGENTS.md discovery, skills discovery
32
31
  - `providers/base.py` — ProviderAdapter abstract interface
33
32
  - `providers/__init__.py` — adapter registry and provider lookup helpers
34
33
  - `providers/anthropic_like.py` — adapters: `anthropic`, `moonshotai`, `minimax`
@@ -52,7 +51,7 @@ Server (`mycode/server/`):
52
51
  - `run_manager.py` — concurrent run management
53
52
  - `schemas.py` — Pydantic request/response models
54
53
 
55
- Frontend (`frontend/src/`):
54
+ Web UI (`web/src/`):
56
55
 
57
56
  - `hooks/useChat.ts` — chat state, SSE streaming, tool runtime
58
57
  - `utils/messages.ts` — buildRenderMessages() — canonical blocks → UI messages
@@ -125,7 +124,7 @@ All adapters implement `ProviderAdapter.stream_turn()`. Message projection to pr
125
124
 
126
125
  ## SSE Contract
127
126
 
128
- **Do not change event names or payload shapes without updating server, CLI, and frontend.**
127
+ **Do not change event names or payload shapes without updating server, CLI, and web UI.**
129
128
 
130
129
  | event | payload |
131
130
  | ------------- | ------------------------------------------------------- |
@@ -143,7 +142,7 @@ All adapters implement `ProviderAdapter.stream_turn()`. Message projection to pr
143
142
  - `docs/config.md` — Config files, schema, API key resolution, reasoning effort, skills/instructions discovery
144
143
  - `docs/providers.md` — Per-adapter details: SDK, base URL, env vars, reasoning effort mapping, quirks
145
144
  - `docs/sessions.md` — Storage layout, JSONL record types, compact/rewind/repair, format version
146
- - `docs/frontend.md` — Component structure, message state model, build process
145
+ - `docs/web.md` — Component structure, message state model, build process
147
146
 
148
147
  ## Interfaces
149
148
 
@@ -161,7 +160,7 @@ All adapters implement `ProviderAdapter.stream_turn()`. Message projection to pr
161
160
  - `POST /api/chat` — start a run from `message` or `input`; returns `{run, session}` JSON immediately
162
161
  - `GET /api/runs/{run_id}/stream` — SSE stream for a run
163
162
  - `POST /api/runs/{run_id}/cancel` — cancel a run
164
- - `GET /api/config` — provider, reasoning, and image-input metadata for frontend
163
+ - `GET /api/config` — provider, reasoning, and image-input metadata for the web UI
165
164
  - Session CRUD at `/api/sessions`
166
165
  - Workspace browser at `/api/workspaces`
167
166
 
@@ -171,9 +170,9 @@ All adapters implement `ProviderAdapter.stream_turn()`. Message projection to pr
171
170
  uv sync --dev # Python setup
172
171
  uv run mycode # run CLI
173
172
  uv run mycode web --dev # API only (backend for Vite dev)
174
- pnpm --dir frontend test:run # run frontend tests once
175
- pnpm --dir frontend dev # Vite frontend dev server
176
- uv run --no-project python scripts/build_frontend.py # rebuild packaged frontend
173
+ pnpm --dir web test:run # run web UI tests once
174
+ pnpm --dir web dev # Vite web UI dev server
175
+ uv run --no-project python scripts/build_web.py # rebuild packaged web UI
177
176
  uv build # build wheel + sdist
178
177
  ```
179
178
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mycode-cli
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Minimal coding agent with web UI
5
5
  Project-URL: Homepage, https://github.com/legibet/mycode
6
6
  Project-URL: Repository, https://github.com/legibet/mycode
@@ -166,13 +166,13 @@ Web development (backend + Vite dev server):
166
166
 
167
167
  ```bash
168
168
  uv run mycode web --dev
169
- pnpm --dir frontend install && pnpm --dir frontend dev
169
+ pnpm --dir web install && pnpm --dir web dev
170
170
  ```
171
171
 
172
- Rebuild packaged frontend assets:
172
+ Rebuild packaged web assets:
173
173
 
174
174
  ```bash
175
- uv run --no-project python scripts/build_frontend.py
175
+ uv run --no-project python scripts/build_web.py
176
176
  ```
177
177
 
178
178
  Build distributable artifacts:
@@ -133,13 +133,13 @@ Web development (backend + Vite dev server):
133
133
 
134
134
  ```bash
135
135
  uv run mycode web --dev
136
- pnpm --dir frontend install && pnpm --dir frontend dev
136
+ pnpm --dir web install && pnpm --dir web dev
137
137
  ```
138
138
 
139
- Rebuild packaged frontend assets:
139
+ Rebuild packaged web assets:
140
140
 
141
141
  ```bash
142
- uv run --no-project python scripts/build_frontend.py
142
+ uv run --no-project python scripts/build_web.py
143
143
  ```
144
144
 
145
145
  Build distributable artifacts:
@@ -77,7 +77,7 @@ Cancel a running agent run. Returns `{status: "ok", run: {...}}`.
77
77
 
78
78
  ### `GET /api/config?cwd=...`
79
79
 
80
- Returns current provider configuration for the frontend.
80
+ Returns current provider configuration for the web UI.
81
81
 
82
82
  Response:
83
83
 
@@ -148,7 +148,7 @@ Load session with full message history. If the session has an active run, overla
148
148
  }
149
149
  ```
150
150
 
151
- `pending_events` contains the active run's buffered SSE events. The frontend reapplies them, then reconnects with `after=<last seq>`.
151
+ `pending_events` contains the active run's buffered SSE events. The web UI reapplies them, then reconnects with `after=<last seq>`.
152
152
 
153
153
  ### `DELETE /api/sessions/{id}`
154
154
 
@@ -194,7 +194,7 @@ Response: `{cwd: "...", exists: true}`
194
194
 
195
195
  `GET /api/runs/{run_id}/stream` produces the following event types. The `StreamEvent` schema is in `mycode/server/schemas.py`.
196
196
 
197
- **Do not change event names or payload shapes without updating server, CLI, and frontend.**
197
+ **Do not change event names or payload shapes without updating server, CLI, and web UI.**
198
198
 
199
199
  | event | payload fields |
200
200
  | ------------- | ---------------------------------------------------------------------------- |
@@ -206,7 +206,7 @@ Response: `{cwd: "...", exists: true}`
206
206
  | `compact` | `message: str` |
207
207
  | `error` | `message: str` |
208
208
 
209
- Every event also carries `seq: int` for reconnect support. The frontend uses `after` parameter to resume from a specific seq number.
209
+ Every event also carries `seq: int` for reconnect support. The web UI uses `after` parameter to resume from a specific seq number.
210
210
 
211
211
  ## Run Manager
212
212
 
@@ -18,7 +18,7 @@ class ProviderAdapter(ABC):
18
18
  def project_tool_call_id(tool_call_id: str, used_tool_call_ids: set[str]) -> str: ...
19
19
  ```
20
20
 
21
- `prepare_messages()` converts canonical session history to provider-safe wire format. The base implementation (`_project_messages_for_replay` in `base.py`) handles:
21
+ `prepare_messages()` converts canonical session history to provider-safe wire format. The base implementation in `base.py` handles:
22
22
  - Stripping error/aborted/cancelled assistant turns
23
23
  - Projecting tool call IDs (some providers restrict charset/length)
24
24
  - Dropping replay images when `request.supports_image_input` is false
@@ -83,7 +83,7 @@ Triggered in `Agent._compact_if_needed()` after a successful turn completes:
83
83
  3. Build a compact event with the summary text and `compacted_count`
84
84
  4. Persist the compact event (append-only — original messages stay in JSONL)
85
85
  5. Apply `apply_compact()` in memory to rebuild the message list
86
- 6. Emit SSE `compact` event to frontend
86
+ 6. Emit SSE `compact` event to the web UI
87
87
 
88
88
  `should_compact()` checks multiple usage field names: `input_tokens`, `prompt_tokens`, `prompt_token_count`.
89
89
 
@@ -1,18 +1,18 @@
1
- # Frontend
1
+ # Web UI
2
2
 
3
- React + Vite app in `frontend/`. Built assets are copied to `mycode/server/static/` for packaged serving.
3
+ React + Vite app in `web/`. Built assets are copied to `mycode/server/static/` for packaged serving.
4
4
 
5
5
  ## Serving Modes
6
6
 
7
- - `mycode web` — serves packaged frontend from `mycode/server/static/`
8
- - `mycode web --dev` — API only; no static files (pair with `pnpm --dir frontend dev`)
7
+ - `mycode web` — serves packaged web assets from `mycode/server/static/`
8
+ - `mycode web --dev` — API only; no static files (pair with `pnpm --dir web dev`)
9
9
 
10
10
  CORS is enabled for all origins in the FastAPI app.
11
11
 
12
12
  ## Component Structure
13
13
 
14
14
  ```
15
- frontend/src/
15
+ web/src/
16
16
  App.tsx # root layout, config loading, session init
17
17
  main.tsx # React entry
18
18
  types.ts # shared TypeScript types
@@ -96,7 +96,7 @@ Image input:
96
96
 
97
97
  ## Config Persistence
98
98
 
99
- Frontend config is persisted to `localStorage`:
99
+ Web UI config is persisted to `localStorage`:
100
100
 
101
101
  - `provider`, `model`, `cwd`, `reasoningEffort`
102
102
  - `auto` and empty string both mean "do not send reasoning_effort to server"
@@ -105,12 +105,12 @@ Frontend config is persisted to `localStorage`:
105
105
  ## Build
106
106
 
107
107
  ```bash
108
- pnpm --dir frontend test:run # run frontend tests once
109
- pnpm --dir frontend dev # dev server (Vite HMR)
110
- uv run --no-project python scripts/build_frontend.py # production build → mycode/server/static/
108
+ pnpm --dir web test:run # run web UI tests once
109
+ pnpm --dir web dev # dev server (Vite HMR)
110
+ uv run --no-project python scripts/build_web.py # production build → mycode/server/static/
111
111
  uv build # packages static/ into wheel/sdist
112
112
  ```
113
113
 
114
- Built `frontend/dist/` is **not** the serving path. `scripts/build_frontend.py` copies the built output into `mycode/server/static/` which is what gets packaged and served.
114
+ Built `web/dist/` is **not** the serving path. `scripts/build_web.py` copies the built output into `mycode/server/static/` which is what gets packaged and served.
115
115
 
116
116
  If `mycode/server/static/` is missing at startup, the server falls back to API-only mode with a warning log.
@@ -10,17 +10,17 @@ if str(ROOT_DIR) not in sys.path:
10
10
  sys.path.insert(0, str(ROOT_DIR))
11
11
 
12
12
 
13
- def build_frontend_assets() -> None:
14
- from scripts.build_frontend import build_frontend
13
+ def build_web_assets() -> None:
14
+ from scripts.build_web import build_web
15
15
 
16
- build_frontend()
16
+ build_web()
17
17
 
18
18
 
19
19
  class CustomBuildHook(BuildHookInterface):
20
20
  def initialize(self, version: str, build_data: dict) -> None:
21
21
  del version, build_data
22
- build_frontend_assets()
22
+ build_web_assets()
23
23
 
24
24
 
25
25
  if __name__ == "__main__":
26
- build_frontend_assets()
26
+ build_web_assets()
@@ -206,7 +206,7 @@ def run(
206
206
  def web(
207
207
  hostname: Annotated[str, typer.Option(help="Hostname to listen on")] = "127.0.0.1",
208
208
  port: Annotated[int | None, typer.Option(help="Port to listen on")] = None,
209
- dev: Annotated[bool, typer.Option(help="API-only backend for frontend dev workflows")] = False,
209
+ dev: Annotated[bool, typer.Option(help="API-only backend for web UI dev workflows")] = False,
210
210
  ) -> None:
211
211
  """Start the web server."""
212
212
 
@@ -218,7 +218,7 @@ def web(
218
218
 
219
219
  from mycode.server.app import create_app
220
220
 
221
- uvicorn.run(create_app(serve_frontend=not dev), host=hostname, port=resolved_port)
221
+ uvicorn.run(create_app(serve_web=not dev), host=hostname, port=resolved_port)
222
222
 
223
223
 
224
224
  @session_app.command("list")
@@ -106,6 +106,19 @@ _TOOL_PREVIEW_KEY: dict[str, str] = {
106
106
  }
107
107
 
108
108
 
109
+ def _tool_preview(name: str, args: dict[str, Any]) -> str:
110
+ """Extract a one-line preview string for a tool call."""
111
+
112
+ if not args:
113
+ return ""
114
+ key = _TOOL_PREVIEW_KEY.get(name.lower())
115
+ raw = args.get(key) if key else next(iter(args.values()), "")
116
+ preview = str(raw or "")
117
+ if len(preview) > 60:
118
+ preview = preview[:60] + "…"
119
+ return preview
120
+
121
+
109
122
  def format_local_timestamp(value: str, display_format: str) -> str:
110
123
  """Format an ISO timestamp with a simple local fallback."""
111
124
 
@@ -199,14 +212,7 @@ class TerminalView:
199
212
  self.console.print(_LeftMarkdown(str(content), code_theme=CODE_THEME))
200
213
  else:
201
214
  name, args = content
202
- preview = ""
203
- if isinstance(args, dict) and args:
204
- key = _TOOL_PREVIEW_KEY.get(name.lower())
205
- raw = args.get(key) if key else next(iter(args.values()), "")
206
- preview = str(raw or "")
207
- if len(preview) > 60:
208
- preview = preview[:60] + "…"
209
-
215
+ preview = _tool_preview(name, args if isinstance(args, dict) else {})
210
216
  line = Text()
211
217
  line.append(f"{TOOL_MARKER} ", style=SUCCESS)
212
218
  line.append(name.capitalize(), style=TOOL_NAME)
@@ -356,6 +362,7 @@ class ReplyRenderer:
356
362
  self._tool_name: str = ""
357
363
  self._tool_args: dict[str, Any] = {}
358
364
  self._tool_buffered = False
365
+ self._tool_live: Live | None = None
359
366
  self._usage: dict[str, Any] | None = None
360
367
 
361
368
  async def render(
@@ -446,13 +453,21 @@ class ReplyRenderer:
446
453
  self._tool_name = name
447
454
  self._tool_args = args
448
455
 
449
- # Bash streams output — print header immediately.
450
- # Other tools are fast — defer to tool_done for single-line display.
451
456
  if name.lower() == "bash":
457
+ # Bash streams output — print header immediately.
452
458
  self._print_tool_header(name, args)
453
459
  self._tool_buffered = False
454
460
  else:
461
+ # Other tools are fast — show spinner until tool_done.
455
462
  self._tool_buffered = True
463
+ if self._live_mode:
464
+ self._tool_live = Live(
465
+ self._build_tool_spinner(name, args),
466
+ console=self._console,
467
+ refresh_per_second=12,
468
+ transient=True,
469
+ )
470
+ self._tool_live.start()
456
471
 
457
472
  def tool_output(self, line: str) -> None:
458
473
  """Render one streamed output line from a running tool."""
@@ -476,14 +491,14 @@ class ReplyRenderer:
476
491
  duration = f"{elapsed:.1f}s" if elapsed >= 0.5 else ""
477
492
 
478
493
  if self._tool_buffered:
479
- # Non-streaming tools (read, write, edit): single-line output
494
+ self._stop_tool_live()
480
495
  self._tool_buffered = False
481
496
  if is_error:
482
497
  self._print_tool_header(self._tool_name, self._tool_args)
483
498
  first_line = shown_text.split("\n", 1)[0][:100]
484
499
  self._console.print(Text(f" {first_line}", style=ERROR))
485
500
  else:
486
- suffix = self._format_edit_suffix(self._tool_name, self._tool_args)
501
+ suffix = self._format_tool_suffix(self._tool_name, self._tool_args, duration)
487
502
  self._print_tool_header(self._tool_name, self._tool_args, suffix=suffix)
488
503
  else:
489
504
  # Bash: streaming tool
@@ -511,13 +526,7 @@ class ReplyRenderer:
511
526
  ) -> None:
512
527
  """Print the ``⏺ Name preview [suffix]`` tool header line."""
513
528
 
514
- preview = ""
515
- if args:
516
- key = _TOOL_PREVIEW_KEY.get(name.lower())
517
- raw = args.get(key) if key else next(iter(args.values()), "")
518
- preview = str(raw or "")
519
- if len(preview) > 60:
520
- preview = preview[:60] + "…"
529
+ preview = _tool_preview(name, args)
521
530
 
522
531
  text = Text()
523
532
  text.append(f"{TOOL_MARKER} ", style=SUCCESS)
@@ -529,34 +538,66 @@ class ReplyRenderer:
529
538
  text.append_text(suffix)
530
539
  self._console.print(text)
531
540
 
541
+ def _build_tool_spinner(self, name: str, args: dict[str, Any]) -> Spinner:
542
+ """Build a transient spinner shown while a buffered tool runs."""
543
+
544
+ preview = _tool_preview(name, args)
545
+ label = Text()
546
+ label.append(f" {name.capitalize()}", style=TOOL_NAME)
547
+ if preview:
548
+ label.append(f" {preview}", style=MUTED)
549
+ return Spinner("dots", text=label, style="dim")
550
+
551
+ def _stop_tool_live(self) -> None:
552
+ if self._tool_live is not None:
553
+ self._tool_live.stop()
554
+ self._tool_live = None
555
+
532
556
  @staticmethod
533
- def _format_edit_suffix(name: str, args: dict[str, Any]) -> Text | None:
534
- """Return the real added/removed line counts for one edit call."""
535
-
536
- if name.lower() != "edit":
537
- return None
538
-
539
- old_text = args.get("oldText")
540
- new_text = args.get("newText")
541
- if not isinstance(old_text, str) or not isinstance(new_text, str):
542
- return None
543
-
544
- added = 0
545
- removed = 0
546
- for tag, old_start, old_end, new_start, new_end in SequenceMatcher(
547
- None,
548
- old_text.splitlines(),
549
- new_text.splitlines(),
550
- ).get_opcodes():
551
- if tag in {"replace", "delete"}:
552
- removed += old_end - old_start
553
- if tag in {"replace", "insert"}:
554
- added += new_end - new_start
555
-
556
- suffix = Text()
557
- suffix.append(f"+{added}", style="green")
558
- suffix.append(f" −{removed}", style="red")
559
- return suffix
557
+ def _format_tool_suffix(name: str, args: dict[str, Any], duration: str) -> Text | None:
558
+ """Build the inline suffix shown after the tool preview on success."""
559
+
560
+ parts = Text()
561
+ lower = name.lower()
562
+
563
+ if lower == "edit":
564
+ old_text = args.get("oldText")
565
+ new_text = args.get("newText")
566
+ if isinstance(old_text, str) and isinstance(new_text, str):
567
+ added = 0
568
+ removed = 0
569
+ for tag, old_start, old_end, new_start, new_end in SequenceMatcher(
570
+ None,
571
+ old_text.splitlines(),
572
+ new_text.splitlines(),
573
+ ).get_opcodes():
574
+ if tag in {"replace", "delete"}:
575
+ removed += old_end - old_start
576
+ if tag in {"replace", "insert"}:
577
+ added += new_end - new_start
578
+ parts.append(f"+{added}", style="green")
579
+ parts.append(f" −{removed}", style="red")
580
+ elif lower == "read":
581
+ offset = args.get("offset")
582
+ limit = args.get("limit")
583
+ if isinstance(offset, int) and isinstance(limit, int):
584
+ parts.append(f":{offset}-{offset + limit}", style=MUTED)
585
+ elif isinstance(offset, int):
586
+ parts.append(f":{offset}", style=MUTED)
587
+ elif isinstance(limit, int):
588
+ parts.append(f":1-{limit}", style=MUTED)
589
+ elif lower == "write":
590
+ content = args.get("content")
591
+ if isinstance(content, str):
592
+ lines = content.count("\n") + 1
593
+ parts.append(f"({lines} lines)", style=MUTED)
594
+
595
+ if duration:
596
+ if parts.plain:
597
+ parts.append(" · ", style=MUTED)
598
+ parts.append(duration, style=MUTED)
599
+
600
+ return parts if parts.plain else None
560
601
 
561
602
  def compact(self, message: str) -> None:
562
603
  """Render a context compaction notification."""
@@ -663,6 +704,7 @@ class ReplyRenderer:
663
704
  if self._live is not None:
664
705
  self._live.stop()
665
706
  self._live = None
707
+ self._stop_tool_live()
666
708
  self._reasoning.clear()
667
709
  self._text.clear()
668
710
  self._printed_static_reasoning = False
@@ -241,7 +241,7 @@ class Agent:
241
241
  if self._cancel_event.is_set():
242
242
  raise asyncio.CancelledError
243
243
 
244
- self._provider_event_task = asyncio.ensure_future(anext(provider_stream))
244
+ self._provider_event_task = asyncio.create_task(anext(provider_stream))
245
245
  try:
246
246
  yield await self._provider_event_task
247
247
  except StopAsyncIteration:
@@ -384,24 +384,20 @@ class Agent:
384
384
  if event.type != "tool_done":
385
385
  continue
386
386
 
387
- result_data = event.data
388
- result_tool_id = str(result_data.get("tool_use_id") or "")
389
- result_model_text = str(result_data.get("model_text") or "")
390
- result_display_text = str(result_data.get("display_text") or "")
391
- result_is_error = bool(result_data.get("is_error"))
392
- result_content = result_data.get("content")
387
+ d = event.data
388
+ model_text = str(d.get("model_text") or "")
389
+ content = d.get("content")
393
390
  tool_results.append(
394
391
  tool_result_block(
395
- tool_use_id=result_tool_id,
396
- model_text=result_model_text,
397
- display_text=result_display_text,
398
- is_error=result_is_error,
399
- content=result_content if isinstance(result_content, list) else None,
392
+ tool_use_id=str(d.get("tool_use_id") or ""),
393
+ model_text=model_text,
394
+ display_text=str(d.get("display_text") or ""),
395
+ is_error=bool(d.get("is_error")),
396
+ content=content if isinstance(content, list) else None,
400
397
  )
401
398
  )
402
399
 
403
- tool_was_cancelled = result_model_text == "error: cancelled"
404
- if tool_was_cancelled and self._cancel_event.is_set():
400
+ if model_text == "error: cancelled" and self._cancel_event.is_set():
405
401
  tool_result_message = build_message("user", tool_results)
406
402
  self.messages.append(tool_result_message)
407
403
  if on_persist: