mycode-cli 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mycode_cli-0.1.0/.github/workflows/publish.yml +46 -0
- mycode_cli-0.1.0/.gitignore +88 -0
- mycode_cli-0.1.0/.pre-commit-config.yaml +30 -0
- mycode_cli-0.1.0/AGENTS.md +190 -0
- mycode_cli-0.1.0/LICENSE +21 -0
- mycode_cli-0.1.0/PKG-INFO +186 -0
- mycode_cli-0.1.0/README.md +153 -0
- mycode_cli-0.1.0/biome.json +56 -0
- mycode_cli-0.1.0/docs/api.md +218 -0
- mycode_cli-0.1.0/docs/config.md +157 -0
- mycode_cli-0.1.0/docs/frontend.md +116 -0
- mycode_cli-0.1.0/docs/providers.md +169 -0
- mycode_cli-0.1.0/docs/sessions.md +121 -0
- mycode_cli-0.1.0/frontend/index.html +34 -0
- mycode_cli-0.1.0/frontend/package.json +48 -0
- mycode_cli-0.1.0/frontend/pnpm-lock.yaml +3586 -0
- mycode_cli-0.1.0/frontend/postcss.config.js +6 -0
- mycode_cli-0.1.0/frontend/public/favicon_slashes.svg +12 -0
- mycode_cli-0.1.0/frontend/src/App.tsx +259 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/CodeBlock.tsx +103 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/EditDiff.tsx +351 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/HighlightedCode.tsx +110 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/InputArea.tsx +256 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/MarkdownBlock.tsx +103 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/MessageBubble.tsx +375 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/MessageList.tsx +89 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/ReasoningBlock.tsx +68 -0
- mycode_cli-0.1.0/frontend/src/components/Chat/ToolCard.tsx +248 -0
- mycode_cli-0.1.0/frontend/src/components/Layout.tsx +24 -0
- mycode_cli-0.1.0/frontend/src/components/MobileHeader.tsx +43 -0
- mycode_cli-0.1.0/frontend/src/components/Sidebar.tsx +410 -0
- mycode_cli-0.1.0/frontend/src/components/ThemeProvider.tsx +108 -0
- mycode_cli-0.1.0/frontend/src/components/UI/Button.tsx +68 -0
- mycode_cli-0.1.0/frontend/src/components/WorkspacePicker.tsx +509 -0
- mycode_cli-0.1.0/frontend/src/hooks/sessionSelection.test.ts +59 -0
- mycode_cli-0.1.0/frontend/src/hooks/sessionSelection.ts +62 -0
- mycode_cli-0.1.0/frontend/src/hooks/useChat.test.tsx +67 -0
- mycode_cli-0.1.0/frontend/src/hooks/useChat.ts +1008 -0
- mycode_cli-0.1.0/frontend/src/index.css +416 -0
- mycode_cli-0.1.0/frontend/src/main.tsx +16 -0
- mycode_cli-0.1.0/frontend/src/test/setup.ts +7 -0
- mycode_cli-0.1.0/frontend/src/types.ts +288 -0
- mycode_cli-0.1.0/frontend/src/utils/clipboard.ts +16 -0
- mycode_cli-0.1.0/frontend/src/utils/cn.ts +10 -0
- mycode_cli-0.1.0/frontend/src/utils/config.ts +58 -0
- mycode_cli-0.1.0/frontend/src/utils/highlighter.ts +121 -0
- mycode_cli-0.1.0/frontend/src/utils/messages.test.ts +211 -0
- mycode_cli-0.1.0/frontend/src/utils/messages.ts +620 -0
- mycode_cli-0.1.0/frontend/src/utils/storage.test.ts +48 -0
- mycode_cli-0.1.0/frontend/src/utils/storage.ts +168 -0
- mycode_cli-0.1.0/frontend/src/vite-env.d.ts +17 -0
- mycode_cli-0.1.0/frontend/tailwind.config.js +76 -0
- mycode_cli-0.1.0/frontend/tsconfig.json +25 -0
- mycode_cli-0.1.0/frontend/vite.config.ts +12 -0
- mycode_cli-0.1.0/frontend/vitest.config.ts +13 -0
- mycode_cli-0.1.0/hatch_build.py +26 -0
- mycode_cli-0.1.0/mycode/__init__.py +1 -0
- mycode_cli-0.1.0/mycode/cli/__init__.py +1 -0
- mycode_cli-0.1.0/mycode/cli/chat.py +650 -0
- mycode_cli-0.1.0/mycode/cli/main.py +245 -0
- mycode_cli-0.1.0/mycode/cli/render.py +693 -0
- mycode_cli-0.1.0/mycode/cli/runtime.py +271 -0
- mycode_cli-0.1.0/mycode/cli/theme.py +109 -0
- mycode_cli-0.1.0/mycode/core/__init__.py +30 -0
- mycode_cli-0.1.0/mycode/core/agent.py +515 -0
- mycode_cli-0.1.0/mycode/core/config.py +551 -0
- mycode_cli-0.1.0/mycode/core/messages.py +166 -0
- mycode_cli-0.1.0/mycode/core/models.py +144 -0
- mycode_cli-0.1.0/mycode/core/models_catalog.json +2090 -0
- mycode_cli-0.1.0/mycode/core/providers/__init__.py +86 -0
- mycode_cli-0.1.0/mycode/core/providers/anthropic_like.py +366 -0
- mycode_cli-0.1.0/mycode/core/providers/base.py +351 -0
- mycode_cli-0.1.0/mycode/core/providers/gemini.py +321 -0
- mycode_cli-0.1.0/mycode/core/providers/openai_chat.py +356 -0
- mycode_cli-0.1.0/mycode/core/providers/openai_responses.py +326 -0
- mycode_cli-0.1.0/mycode/core/session.py +537 -0
- mycode_cli-0.1.0/mycode/core/system_prompt.md +10 -0
- mycode_cli-0.1.0/mycode/core/system_prompt.py +319 -0
- mycode_cli-0.1.0/mycode/core/tools.py +898 -0
- mycode_cli-0.1.0/mycode/server/__init__.py +1 -0
- mycode_cli-0.1.0/mycode/server/app.py +52 -0
- mycode_cli-0.1.0/mycode/server/deps.py +29 -0
- mycode_cli-0.1.0/mycode/server/routers/__init__.py +7 -0
- mycode_cli-0.1.0/mycode/server/routers/chat.py +320 -0
- mycode_cli-0.1.0/mycode/server/routers/sessions.py +77 -0
- mycode_cli-0.1.0/mycode/server/routers/workspaces.py +92 -0
- mycode_cli-0.1.0/mycode/server/run_manager.py +195 -0
- mycode_cli-0.1.0/mycode/server/schemas.py +66 -0
- mycode_cli-0.1.0/mycode/server/static/assets/EditDiff-C1ql7kft.js +12 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- mycode_cli-0.1.0/mycode/server/static/assets/abap-BdImnpbu.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/actionscript-3-CoDkCxhg.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ada-bCR0ucgS.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/andromeeda-C4gqWexZ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/angular-html-DA-rfuFy.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/angular-ts-BrjP3tb8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/apache-Pmp26Uib.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/apex-D8_7TLub.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/apl-CORt7UWP.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/applescript-Co6uUVPk.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ara-BRHolxvo.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/asciidoc-Ve4PFQV2.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/asm-D_Q5rh1f.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/astro-HNnZUWAn.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/aurora-x-D-2ljcwZ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/auto-render-xntwXHOX.js +261 -0
- mycode_cli-0.1.0/mycode/server/static/assets/awk-DMzUqQB5.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ayu-dark-DYE7WIF3.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ayu-light-BA47KaF1.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ayu-mirage-32ctXXKs.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ballerina-BFfxhgS-.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/bat-BkioyH1T.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/beancount-k_qm7-4y.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/berry-uYugtg8r.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/bibtex-CHM0blh-.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/bicep-Bmn6On1c.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/bird2-BIv1doCn.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/blade-BjGOyj-B.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/bsl-BO_Y6i37.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/c-BIGW1oBm.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/c3-eo99z4R2.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/cadence-Bv_4Rxtq.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/cairo-KRGpt6FW.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/clarity-D53aC0YG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/clojure-P80f7IUj.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/cmake-D1j8_8rp.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/cobol-nBiQ_Alo.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/codeowners-Bp6g37R7.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/codeql-DsOJ9woJ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/coffee-Ch7k5sss.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/common-lisp-Cg-RD9OK.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/coq-DkFqJrB1.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/cpp-CofmeUqb.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/crystal-DNxU26gB.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/csharp-COcwbKMJ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/css-CLj8gQPS.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/csv-fuZLfV_i.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/cue-D82EKSYY.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/cypher-COkxafJQ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/d-85-TOEBH.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/dark-plus-C3mMm8J8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/dart-bE4Kk8sk.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/dax-CEL-wOlO.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/desktop-BmXAJ9_W.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/diff-D97Zzqfu.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/docker-BcOcwvcX.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/dotenv-Da5cRb03.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/dracula-BzJJZx-M.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/dracula-soft-BXkSAIEj.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/dream-maker-BtqSS_iP.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/edge-FbVlp4U3.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/elixir-CkH2-t6x.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/elm-DbKCFpqz.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/emacs-lisp-CXvaQtF9.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/erb-BYCe7drp.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/erlang-DsQrWhSR.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/everforest-dark-BgDCqdQA.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/everforest-light-C8M2exoo.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/fennel-BYunw83y.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/fish-BvzEVeQv.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/fluent-C4IJs8-o.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/fortran-free-form-BxgE0vQu.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/fsharp-CXgrBDvD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gdresource-BOOCDP_w.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gdscript-C5YyOfLZ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gdshader-DkwncUOv.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/genie-D0YGMca9.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gherkin-DyxjwDmM.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/git-commit-F4YmCXRG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/git-rebase-r7XF79zn.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/github-dark-DHJKELXO.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/github-dark-default-Cuk6v7N8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/github-light-DAi9KRSo.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/github-light-default-D7oLnXFd.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gleam-BspZqrRM.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/glimmer-js-ByusRIyA.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/glimmer-ts-BfAWNZQY.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/glsl-DplSGwfg.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gn-n2N0HUVH.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gnuplot-DdkO51Og.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/go-C27-OAKa.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/graphql-ChdNCCLP.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/groovy-gcz8RCvz.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/hack-i7_Ulhet.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/haml-D5jkg6IW.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/handlebars-BpdQsYii.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/haskell-Df6bDoY_.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/haxe-CzTSHFRz.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/hcl-BWvSN4gD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/hjson-D5-asLiD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/hlsl-D3lLCCz7.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/horizon-BUw7H-hv.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/horizon-bright-CUuTKBJd.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/houston-DnULxvSX.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/html-derivative-DlHx6ybY.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/html-pp8916En.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/http-jrhK8wxY.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/hurl-irOxFIW8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/hxml-Bvhsp5Yf.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/hy-DFXneXwc.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/imba-DGztddWO.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/index-B4e4WQPq.css +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/index-C2xTNJGd.js +203 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ini-BEwlwnbL.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/java-CylS5w8V.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/javascript-wDzz0qaB.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/jinja-f2NsQr07.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/jison-wvAkD_A8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/json-Cp-IABpG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/json5-C9tS-k6U.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/jsonc-Des-eS-w.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/jsonl-DcaNXYhu.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/jsonnet-DFQXde-d.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/jssm-C2t-YnRu.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/jsx-g9-lgVsj.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/julia-CxzCAyBv.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/just-VxiPbLrw.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/kanagawa-wave-DWedfzmr.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/katex-DnJR2-55.css +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/kdl-DV7GczEv.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/kotlin-BdnUsdx6.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/kusto-wEQ09or8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/laserwave-DUszq2jm.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/latex-CWtU0Tv5.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/lean-BZvkOJ9d.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/less-B1dDrJ26.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/light-plus-B7mTdjB0.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/liquid-C0sCDyMI.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/llvm-DjAJT7YJ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/log-2UxHyX5q.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/logo-BtOb2qkB.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/lua-BaeVxFsk.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/luau-C-HG3fhB.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/make-CHLpvVh8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/markdown-Cvjx9yec.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/marko-DjSrsDqO.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/material-theme-D5KoaKCx.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/material-theme-darker-BfHTSMKl.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/material-theme-ocean-CyktbL80.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/matlab-D7o27uSR.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/mdc-DTYItulj.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/mdx-Cmh6b_Ma.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/mermaid-mWjccvbQ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/min-dark-CafNBF8u.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/min-light-CTRr51gU.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/mipsasm-CKIfxQSi.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/mojo-rZm6bMo-.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/monokai-D4h5O-jR.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/moonbit-_H4v1dQx.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/move-IF9eRakj.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/narrat-DRg8JJMk.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/nextflow-C-mBbutL.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/nextflow-groovy-vE_lwT2v.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/nginx-BpAMiNFr.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/night-owl-C39BiMTA.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/night-owl-light-CMTm3GFP.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/nim-BIad80T-.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/nix-CwoSXNpI.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/nord-Ddv68eIx.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/nushell-Cz2AlsmD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/objective-c-DXmwc3jG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/objective-cpp-CLxacb5B.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ocaml-C0hk2d4L.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/odin-BBf5iR-q.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/one-light-C3Wv6jpd.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/openscad-C4EeE6gA.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/pascal-D93ZcfNL.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/perl-NvoQZIq0.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/php-R6g_5hLQ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/pkl-u5AG7uiY.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/plastic-3e1v2bzS.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/plsql-ChMvpjG-.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/po-BTJTHyun.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/poimandres-CS3Unz2-.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/polar-C0HS_06l.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/postcss-CXtECtnM.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/powerquery-CEu0bR-o.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/powershell-Dpen1YoG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/prisma-Dd19v3D-.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/prolog-CbFg5uaA.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/proto-C7zT0LnQ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/pug-DKIMFp6K.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/puppet-BMWR74SV.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/purescript-CklMAg4u.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/python-B6aJPvgy.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/qml-3beO22l8.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/qmldir-C8lEn-DE.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/qss-IeuSbFQv.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/r-Dspwwk_N.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/racket-BqYA7rlc.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/raku-DXvB9xmW.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/razor-BDqjjVU7.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/red-bN70gL4F.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/reg-C-SQnVFl.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/regexp-CDVJQ6XC.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/rel-C3B-1QV4.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/riscv-BM1_JUlF.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ron-D8l8udqQ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/rose-pine-qdsjHGoJ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/rosmsg-BJDFO7_C.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/rst-CRjBmOyv.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ruby-Wjq7vjNf.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/rust-B1yitclQ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/sas-cz2c8ADy.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/sass-Cj5Yp3dK.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/scala-C151Ov-r.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/scheme-C98Dy4si.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/scss-D5BDwBP9.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/sdbl-DVxCFoDh.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/shaderlab-Dg9Lc6iA.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/shellscript-Yzrsuije.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/shellsession-BADoaaVG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/slack-dark-BthQWCQV.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/slack-ochin-DqwNpetd.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/smalltalk-BERRCDM3.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/snazzy-light-Bw305WKR.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/solarized-dark-DXbdFlpD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/solarized-light-L9t79GZl.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/solidity-rGO070M0.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/soy-8wufbnw4.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/sparql-rVzFXLq3.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/splunk-BtCnVYZw.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/sql-BLtJtn59.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ssh-config-_ykCGR6B.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/stata-BH5u7GGu.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/stylus-BEDo0Tqx.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/surrealql-Bq5Q-fJD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/svelte-Cy7k_4gC.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/swift-D82vCrfD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/synthwave-84-CbfX1IO0.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/system-verilog-CnnmHF94.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/systemd-4A_iFExJ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/talonscript-CkByrt1z.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/tasl-QIJgUcNo.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/tcl-dwOrl1Do.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/templ-DhtptRzy.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/terraform-BETggiCN.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/tex-idrVyKtj.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/tokyo-night-hegEt444.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/toml-vGWfd6FD.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/ts-tags-DQrlYJgV.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/tsv-B_m7g4N7.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/tsx-COt5Ahok.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/turtle-BsS91CYL.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/twig-xg9kU7Mw.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/typescript-BPQ3VLAy.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/typespec-CAFt9gP4.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/typst-DHCkPAjA.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/v-BcVCzyr7.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vala-CsfeWuGM.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vb-D17OF-Vu.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/verilog-BQ8w6xss.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vesper-DU1UobuO.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vhdl-CeAyd5Ju.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/viml-CJc9bBzg.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vitesse-black-Bkuqu6BP.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vitesse-dark-D0r3Knsf.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vitesse-light-CVO1_9PV.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vue-D2xRrEX4.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vue-html-AaS7Mt5G.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vue-vine-BoDAl6tE.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/vyper-CDx5xZoG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/wasm-CG6Dc4jp.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/wasm-MzD3tlZU.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/wenyan-BV7otONQ.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/wgsl-Dx-B1_4e.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/wikitext-BhOHFoWU.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/wit-5i3qLPDT.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/wolfram-lXgVvXCa.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/xml-sdJ4AIDG.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/xsl-CtQFsRM5.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/yaml-Buea-lGh.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/zenscript-DVFEvuxE.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/assets/zig-VOosw3JB.js +1 -0
- mycode_cli-0.1.0/mycode/server/static/favicon_slashes.svg +12 -0
- mycode_cli-0.1.0/mycode/server/static/index.html +35 -0
- mycode_cli-0.1.0/pyproject.toml +97 -0
- mycode_cli-0.1.0/scripts/__init__.py +1 -0
- mycode_cli-0.1.0/scripts/build_frontend.py +38 -0
- mycode_cli-0.1.0/scripts/update_models_catalog.py +75 -0
- mycode_cli-0.1.0/tests/conftest.py +3 -0
- mycode_cli-0.1.0/tests/test_agent_loop.py +373 -0
- mycode_cli-0.1.0/tests/test_agent_provider_request.py +126 -0
- mycode_cli-0.1.0/tests/test_bash.py +177 -0
- mycode_cli-0.1.0/tests/test_cli.py +573 -0
- mycode_cli-0.1.0/tests/test_cli_imports.py +13 -0
- mycode_cli-0.1.0/tests/test_compact.py +130 -0
- mycode_cli-0.1.0/tests/test_config.py +802 -0
- mycode_cli-0.1.0/tests/test_instructions.py +68 -0
- mycode_cli-0.1.0/tests/test_models.py +110 -0
- mycode_cli-0.1.0/tests/test_provider_adapters.py +1446 -0
- mycode_cli-0.1.0/tests/test_rewind.py +341 -0
- mycode_cli-0.1.0/tests/test_run_manager.py +164 -0
- mycode_cli-0.1.0/tests/test_server_app.py +44 -0
- mycode_cli-0.1.0/tests/test_session.py +281 -0
- mycode_cli-0.1.0/tests/test_skills.py +245 -0
- mycode_cli-0.1.0/tests/test_tools.py +447 -0
- mycode_cli-0.1.0/uv.lock +1003 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
environment:
|
|
12
|
+
name: pypi
|
|
13
|
+
url: https://pypi.org/project/mycode-cli/
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
id-token: write
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout
|
|
19
|
+
uses: actions/checkout@v6
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v7
|
|
23
|
+
|
|
24
|
+
- name: Install pnpm
|
|
25
|
+
uses: pnpm/action-setup@v4
|
|
26
|
+
with:
|
|
27
|
+
version: 10
|
|
28
|
+
|
|
29
|
+
- name: Install Node.js
|
|
30
|
+
uses: actions/setup-node@v6
|
|
31
|
+
with:
|
|
32
|
+
node-version: 20
|
|
33
|
+
cache: pnpm
|
|
34
|
+
cache-dependency-path: frontend/pnpm-lock.yaml
|
|
35
|
+
|
|
36
|
+
- name: Install Python
|
|
37
|
+
run: uv python install 3.12
|
|
38
|
+
|
|
39
|
+
- name: Build
|
|
40
|
+
run: uv build --no-sources
|
|
41
|
+
|
|
42
|
+
- name: Verify wheel import
|
|
43
|
+
run: uv run --isolated --no-project --with dist/*.whl -- python -c "import mycode"
|
|
44
|
+
|
|
45
|
+
- name: Publish to PyPI
|
|
46
|
+
run: uv publish
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# OS specific
|
|
2
|
+
.DS_Store
|
|
3
|
+
.DS_Store?
|
|
4
|
+
._*
|
|
5
|
+
.Spotlight-V100
|
|
6
|
+
.Trashes
|
|
7
|
+
ehthumbs.db
|
|
8
|
+
Thumbs.db
|
|
9
|
+
*.swp
|
|
10
|
+
*.swo
|
|
11
|
+
*~
|
|
12
|
+
|
|
13
|
+
# IDEs and Editors
|
|
14
|
+
.vscode/
|
|
15
|
+
!.vscode/extensions.json
|
|
16
|
+
.idea/
|
|
17
|
+
*.suo
|
|
18
|
+
*.ntvs*
|
|
19
|
+
*.njsproj
|
|
20
|
+
*.sln
|
|
21
|
+
*.sw?
|
|
22
|
+
|
|
23
|
+
# Environment
|
|
24
|
+
.env
|
|
25
|
+
.env.local
|
|
26
|
+
.env.*.local
|
|
27
|
+
*.local
|
|
28
|
+
|
|
29
|
+
# Logs
|
|
30
|
+
logs/
|
|
31
|
+
*.log
|
|
32
|
+
npm-debug.log*
|
|
33
|
+
yarn-debug.log*
|
|
34
|
+
yarn-error.log*
|
|
35
|
+
pnpm-debug.log*
|
|
36
|
+
lerna-debug.log*
|
|
37
|
+
|
|
38
|
+
# Python
|
|
39
|
+
__pycache__/
|
|
40
|
+
*.py[cod]
|
|
41
|
+
*$py.class
|
|
42
|
+
*.pyc
|
|
43
|
+
*.pyo
|
|
44
|
+
*.pyd
|
|
45
|
+
.pytest_cache/
|
|
46
|
+
.mypy_cache/
|
|
47
|
+
.ruff_cache/
|
|
48
|
+
.venv/
|
|
49
|
+
venv/
|
|
50
|
+
env/
|
|
51
|
+
ENV/
|
|
52
|
+
.python-version
|
|
53
|
+
*.egg-info/
|
|
54
|
+
dist-python/
|
|
55
|
+
build/
|
|
56
|
+
*.egg
|
|
57
|
+
.uv-cache
|
|
58
|
+
|
|
59
|
+
# Node.js / Frontend
|
|
60
|
+
node_modules/
|
|
61
|
+
dist/
|
|
62
|
+
dist-ssr/
|
|
63
|
+
.vite/
|
|
64
|
+
*.tsbuildinfo
|
|
65
|
+
.eslintcache
|
|
66
|
+
.npm
|
|
67
|
+
.yarn/cache
|
|
68
|
+
.yarn/unplugged
|
|
69
|
+
.yarn/build-state.yml
|
|
70
|
+
.yarn/install-state.gz
|
|
71
|
+
.pnp.*
|
|
72
|
+
|
|
73
|
+
# Archives
|
|
74
|
+
archive/
|
|
75
|
+
legacy/
|
|
76
|
+
|
|
77
|
+
# Local data
|
|
78
|
+
/mycode/server/static/
|
|
79
|
+
|
|
80
|
+
# Config with secrets (use config.example.json as template)
|
|
81
|
+
config.json
|
|
82
|
+
|
|
83
|
+
# AI Agents
|
|
84
|
+
CLAUDE.md
|
|
85
|
+
.claude/
|
|
86
|
+
GEMINI.md
|
|
87
|
+
.gemini/
|
|
88
|
+
.pi/
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# See https://pre-commit.com for more information
|
|
2
|
+
repos:
|
|
3
|
+
# General hooks
|
|
4
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
5
|
+
rev: v6.0.0
|
|
6
|
+
hooks:
|
|
7
|
+
- id: trailing-whitespace
|
|
8
|
+
- id: end-of-file-fixer
|
|
9
|
+
- id: check-yaml
|
|
10
|
+
- id: check-added-large-files
|
|
11
|
+
args: ["--maxkb=1000"]
|
|
12
|
+
- id: check-merge-conflict
|
|
13
|
+
- id: detect-private-key
|
|
14
|
+
|
|
15
|
+
# Python - Ruff (linter + formatter)
|
|
16
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
17
|
+
rev: v0.14.13
|
|
18
|
+
hooks:
|
|
19
|
+
- id: ruff-check
|
|
20
|
+
args: [--fix]
|
|
21
|
+
- id: ruff-format
|
|
22
|
+
|
|
23
|
+
# Frontend - Biome (linter + formatter)
|
|
24
|
+
- repo: https://github.com/biomejs/pre-commit
|
|
25
|
+
rev: v2.4.7
|
|
26
|
+
hooks:
|
|
27
|
+
- id: biome-check
|
|
28
|
+
additional_dependencies: ["@biomejs/biome@2.4.7"]
|
|
29
|
+
args: ["--config-path=biome.json"]
|
|
30
|
+
files: ^frontend/
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# mycode — Project Context
|
|
2
|
+
|
|
3
|
+
Authoritative context for agent runs. Keep in sync with the code. See `docs/` for detailed specs.
|
|
4
|
+
|
|
5
|
+
## Product
|
|
6
|
+
|
|
7
|
+
`mycode` is a personal minimal coding agent with a web UI and CLI.
|
|
8
|
+
|
|
9
|
+
Priorities: small readable core · one message model · one agent loop · append-only sessions · provider adapters at the boundary.
|
|
10
|
+
|
|
11
|
+
Not a general agent framework.
|
|
12
|
+
|
|
13
|
+
## Core Rules
|
|
14
|
+
|
|
15
|
+
- 4 built-in tools only: `read`, `write`, `edit`, `bash` — do not add more to core
|
|
16
|
+
- Provider-specific behavior stays inside adapters, never in the agent loop
|
|
17
|
+
- Prefer simple Python; add helpers only for real reuse or non-obvious logic
|
|
18
|
+
- Keep the runtime deterministic and easy to inspect
|
|
19
|
+
|
|
20
|
+
## Source Map
|
|
21
|
+
|
|
22
|
+
Core runtime (`mycode/core/`):
|
|
23
|
+
|
|
24
|
+
- `agent.py` — the only orchestration loop
|
|
25
|
+
- `messages.py` — internal message/block format
|
|
26
|
+
- `tools.py` — 4 built-in tools, executor, truncation, path resolution
|
|
27
|
+
- `session.py` — append-only JSONL session storage, compact/rewind events, interrupted tool repair
|
|
28
|
+
- `config.py` — layered config loading and provider resolution
|
|
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
|
|
32
|
+
- `providers/base.py` — ProviderAdapter abstract interface
|
|
33
|
+
- `providers/__init__.py` — adapter registry and provider lookup helpers
|
|
34
|
+
- `providers/anthropic_like.py` — adapters: `anthropic`, `moonshotai`, `minimax`
|
|
35
|
+
- `providers/gemini.py` — adapter: `google`
|
|
36
|
+
- `providers/openai_responses.py` — adapter: `openai`
|
|
37
|
+
- `providers/openai_chat.py` — adapters: `openai_chat`, `deepseek`, `zai`, `openrouter`
|
|
38
|
+
|
|
39
|
+
CLI (`mycode/cli/`):
|
|
40
|
+
|
|
41
|
+
- `main.py` — Typer entrypoint (commands: default, run, web, session)
|
|
42
|
+
- `chat.py` — TerminalChat interactive loop
|
|
43
|
+
- `render.py` — TerminalView rich rendering
|
|
44
|
+
- `runtime.py` — build_agent(), resolve_session()
|
|
45
|
+
|
|
46
|
+
Server (`mycode/server/`):
|
|
47
|
+
|
|
48
|
+
- `app.py` — FastAPI factory, static mount
|
|
49
|
+
- `routers/chat.py` — POST /api/chat, GET /api/runs/{id}/stream, POST /api/runs/{id}/cancel, GET /api/config
|
|
50
|
+
- `routers/sessions.py` — session CRUD
|
|
51
|
+
- `routers/workspaces.py` — directory browser
|
|
52
|
+
- `run_manager.py` — concurrent run management
|
|
53
|
+
- `schemas.py` — Pydantic request/response models
|
|
54
|
+
|
|
55
|
+
Frontend (`frontend/src/`):
|
|
56
|
+
|
|
57
|
+
- `hooks/useChat.ts` — chat state, SSE streaming, tool runtime
|
|
58
|
+
- `utils/messages.ts` — buildRenderMessages() — canonical blocks → UI messages
|
|
59
|
+
|
|
60
|
+
## Internal Message Model
|
|
61
|
+
|
|
62
|
+
Block-based JSON — single format used at runtime and persisted to sessions:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"role": "assistant",
|
|
67
|
+
"content": [
|
|
68
|
+
{"type": "thinking", "text": "...", "meta": {}},
|
|
69
|
+
{"type": "text", "text": "..."},
|
|
70
|
+
{"type": "tool_use", "id": "call_1", "name": "read", "input": {"path": "x.py"}}
|
|
71
|
+
],
|
|
72
|
+
"meta": {
|
|
73
|
+
"provider": "anthropic",
|
|
74
|
+
"model": "claude-sonnet-4-6",
|
|
75
|
+
"stop_reason": "tool_use",
|
|
76
|
+
"usage": {},
|
|
77
|
+
"native": {}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Block types: `text` · `image` · `thinking` · `tool_use` · `tool_result`
|
|
83
|
+
|
|
84
|
+
- `thinking` blocks are first-class session data — persisted and shown in UI
|
|
85
|
+
- Provider-specific extras: `meta.native` on messages, `block.meta.native` on blocks
|
|
86
|
+
- Tool results stored as a `user` message with `tool_result` blocks:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{"type": "tool_result", "tool_use_id": "call_1", "model_text": "ok", "display_text": "Wrote x.py", "is_error": false}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`model_text` is replayed to providers on later turns; `display_text` is shown to users.
|
|
93
|
+
`tool_result.content` may store structured `text` and `image` blocks.
|
|
94
|
+
- System prompt is runtime-only, not persisted
|
|
95
|
+
|
|
96
|
+
## Agent Loop
|
|
97
|
+
|
|
98
|
+
`mycode/core/agent.py` — per user turn:
|
|
99
|
+
|
|
100
|
+
1. Append user message to session
|
|
101
|
+
2. Call provider adapter → stream events to CLI/server
|
|
102
|
+
3. Persist assistant message to JSONL
|
|
103
|
+
4. Execute tool calls locally
|
|
104
|
+
5. Append `user` tool-result message
|
|
105
|
+
6. Repeat until no tool calls; `max_turns` defaults to unlimited
|
|
106
|
+
7. Optionally compact context when usage ≥ `compact_threshold` (default 0.8)
|
|
107
|
+
|
|
108
|
+
## Provider Adapters
|
|
109
|
+
|
|
110
|
+
See `docs/providers.md` for per-adapter details, env vars, and quirks.
|
|
111
|
+
|
|
112
|
+
| id | protocol | file |
|
|
113
|
+
| ------------- | ----------------------------- | --------------------- |
|
|
114
|
+
| `anthropic` | Anthropic Messages API | `anthropic_like.py` |
|
|
115
|
+
| `moonshotai` | Anthropic-compatible endpoint | `anthropic_like.py` |
|
|
116
|
+
| `minimax` | Anthropic-compatible endpoint | `anthropic_like.py` |
|
|
117
|
+
| `google` | Google genai SDK | `gemini.py` |
|
|
118
|
+
| `openai` | OpenAI Responses API | `openai_responses.py` |
|
|
119
|
+
| `openai_chat` | OpenAI Chat Completions | `openai_chat.py` |
|
|
120
|
+
| `deepseek` | OpenAI-compatible chat | `openai_chat.py` |
|
|
121
|
+
| `zai` | OpenAI-compatible chat | `openai_chat.py` |
|
|
122
|
+
| `openrouter` | OpenAI-compatible chat | `openai_chat.py` |
|
|
123
|
+
|
|
124
|
+
All adapters implement `ProviderAdapter.stream_turn()`. Message projection to provider wire format lives in `prepare_messages()`.
|
|
125
|
+
|
|
126
|
+
## SSE Contract
|
|
127
|
+
|
|
128
|
+
**Do not change event names or payload shapes without updating server, CLI, and frontend.**
|
|
129
|
+
|
|
130
|
+
| event | payload |
|
|
131
|
+
| ------------- | ------------------------------------------------------- |
|
|
132
|
+
| `reasoning` | `delta` |
|
|
133
|
+
| `text` | `delta` |
|
|
134
|
+
| `tool_start` | `tool_call: {id, name, input}` |
|
|
135
|
+
| `tool_output` | `tool_use_id`, `output` |
|
|
136
|
+
| `tool_done` | `tool_use_id`, `model_text`, `display_text`, `is_error` |
|
|
137
|
+
| `compact` | `message` |
|
|
138
|
+
| `error` | `message` |
|
|
139
|
+
|
|
140
|
+
## Detailed Docs
|
|
141
|
+
|
|
142
|
+
- `docs/api.md` — Server API endpoints, request/response schemas, SSE contract details
|
|
143
|
+
- `docs/config.md` — Config files, schema, API key resolution, reasoning effort, skills/instructions discovery
|
|
144
|
+
- `docs/providers.md` — Per-adapter details: SDK, base URL, env vars, reasoning effort mapping, quirks
|
|
145
|
+
- `docs/sessions.md` — Storage layout, JSONL record types, compact/rewind/repair, format version
|
|
146
|
+
- `docs/frontend.md` — Component structure, message state model, build process
|
|
147
|
+
|
|
148
|
+
## Interfaces
|
|
149
|
+
|
|
150
|
+
**CLI** — `mycode/cli/main.py`:
|
|
151
|
+
|
|
152
|
+
- `mycode` — interactive session (default)
|
|
153
|
+
- `mycode run "..."` — non-interactive single run
|
|
154
|
+
- `mycode web [--dev]` — web server; `--dev` serves API only (for Vite dev)
|
|
155
|
+
- `mycode session list` — list sessions
|
|
156
|
+
- Interactive CLI: `@path` attaches files; images become `image` blocks, text files become extra `text` blocks
|
|
157
|
+
- Slash commands: `/clear` `/new` `/resume` `/rewind` `/provider` `/model` `/effort` `/q`
|
|
158
|
+
|
|
159
|
+
**Server** — `mycode/server/routers/`:
|
|
160
|
+
|
|
161
|
+
- `POST /api/chat` — start a run from `message` or `input`; returns `{run, session}` JSON immediately
|
|
162
|
+
- `GET /api/runs/{run_id}/stream` — SSE stream for a run
|
|
163
|
+
- `POST /api/runs/{run_id}/cancel` — cancel a run
|
|
164
|
+
- `GET /api/config` — provider, reasoning, and image-input metadata for frontend
|
|
165
|
+
- Session CRUD at `/api/sessions`
|
|
166
|
+
- Workspace browser at `/api/workspaces`
|
|
167
|
+
|
|
168
|
+
## Dev Workflow
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
uv sync --dev # Python setup
|
|
172
|
+
uv run mycode # run CLI
|
|
173
|
+
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
|
|
177
|
+
uv build # build wheel + sdist
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Guardrails
|
|
181
|
+
|
|
182
|
+
Preserve unless explicitly asked to change:
|
|
183
|
+
|
|
184
|
+
- 4-tool core stays unchanged
|
|
185
|
+
- Append-only sessions stay human-inspectable
|
|
186
|
+
- CLI and server remain thin wrappers over `mycode.core`
|
|
187
|
+
- Provider-specific quirks stay in adapters
|
|
188
|
+
- No new abstraction layers unless they remove real complexity
|
|
189
|
+
|
|
190
|
+
When in doubt, prefer the simpler and more explicit design.
|
mycode_cli-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 LeGibet
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mycode-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Minimal coding agent with web UI
|
|
5
|
+
Project-URL: Homepage, https://github.com/legibet/mycode
|
|
6
|
+
Project-URL: Repository, https://github.com/legibet/mycode
|
|
7
|
+
Project-URL: Issues, https://github.com/legibet/mycode/issues
|
|
8
|
+
Author-email: LeGibet <legibetpeng@gmail.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: agent,cli,coding-agent,fastapi,llm
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Environment :: Web Environment
|
|
15
|
+
Classifier: Framework :: FastAPI
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Software Development
|
|
23
|
+
Requires-Python: >=3.12
|
|
24
|
+
Requires-Dist: anthropic>=0.74.0
|
|
25
|
+
Requires-Dist: fastapi>=0.115.0
|
|
26
|
+
Requires-Dist: google-genai>=1.68.0
|
|
27
|
+
Requires-Dist: openai>=2.11.0
|
|
28
|
+
Requires-Dist: prompt-toolkit>=3.0.52
|
|
29
|
+
Requires-Dist: rich>=14.2.0
|
|
30
|
+
Requires-Dist: typer>=0.24.1
|
|
31
|
+
Requires-Dist: uvicorn[standard]>=0.32.0
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# mycode
|
|
35
|
+
|
|
36
|
+
>There are many coding agents, but this one is mine.
|
|
37
|
+
|
|
38
|
+
A minimal coding agent. Inspired by [pi](https://github.com/badlogic/pi-mono).
|
|
39
|
+
|
|
40
|
+
- Minimal core (under 5k lines of code).
|
|
41
|
+
- Unified message format and robust cross-provider replay.
|
|
42
|
+
- 4 built-in tools: `read`, `write`, `edit`, `bash`, expanded via skills.
|
|
43
|
+
- Inspectable runtime, append-only JSONL sessions.
|
|
44
|
+
- Native image input.
|
|
45
|
+
- Mobile-friendly web UI.
|
|
46
|
+
|
|
47
|
+
## Quick Start
|
|
48
|
+
|
|
49
|
+
Requires Python 3.12+. Install via [uv](https://docs.astral.sh/uv/):
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
uv tool install mycode-cli
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Interactive terminal session:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
mycode
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Web UI (default at `http://localhost:8000`):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
mycode web (--port <port> --hostname <hostname>)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Single message, non-interactive:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
mycode run "explain how the session store works"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
API keys are discovered automatically from environment variables (see Providers & Models).
|
|
74
|
+
|
|
75
|
+
## Providers & Models
|
|
76
|
+
|
|
77
|
+
| Provider | id | Env var | Default models |
|
|
78
|
+
| ----------------- | ------------- | -------------------- | -------------------------------------------------- |
|
|
79
|
+
| Anthropic | `anthropic` | `ANTHROPIC_API_KEY` | `claude-sonnet-4-6`, `claude-opus-4-6` |
|
|
80
|
+
| OpenAI | `openai` | `OPENAI_API_KEY` | `gpt-5.4`, `gpt-5.4-mini` |
|
|
81
|
+
| Google Gemini | `google` | `GEMINI_API_KEY` | `gemini-3.1-pro-preview`, `gemini-3-flash-preview` |
|
|
82
|
+
| Moonshot | `moonshotai` | `MOONSHOT_API_KEY` | `kimi-k2.5` |
|
|
83
|
+
| MiniMax | `minimax` | `MINIMAX_API_KEY` | `MiniMax-M2.7`, `MiniMax-M2.7-highspeed` |
|
|
84
|
+
| DeepSeek | `deepseek` | `DEEPSEEK_API_KEY` | `deepseek-chat`, `deepseek-reasoner` |
|
|
85
|
+
| Z.AI | `zai` | `ZAI_API_KEY` | `glm-5.1`, `glm-5-turbo` |
|
|
86
|
+
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` |
|
|
87
|
+
| OpenAI-compatible | `openai_chat` | — | (configured per provider) |
|
|
88
|
+
|
|
89
|
+
## Configuration
|
|
90
|
+
|
|
91
|
+
No config file is required. It is only used for:
|
|
92
|
+
|
|
93
|
+
1. Setting default provider, model, and other options
|
|
94
|
+
2. Overriding built-in provider settings (e.g. changing the available model list)
|
|
95
|
+
3. Adding custom providers with any built-in provider type.
|
|
96
|
+
4. Customize model metadata for built-in and custom models.
|
|
97
|
+
|
|
98
|
+
Config is loaded from `~/.mycode/config.json` (global) and `<workspace>/.mycode/config.json` (project-specific, takes precedence).
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"default": {
|
|
103
|
+
"provider": "anthropic",
|
|
104
|
+
"model": "claude-sonnet-4-6",
|
|
105
|
+
"reasoning_effort": "medium"
|
|
106
|
+
},
|
|
107
|
+
"providers": {
|
|
108
|
+
"openrouter": {
|
|
109
|
+
"models": {
|
|
110
|
+
"deepseek/deepseek-v3.2": {},
|
|
111
|
+
"xiaomi/mimo-v2-pro": {}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"zhipu-coding-plan": {
|
|
115
|
+
"type": "zai",
|
|
116
|
+
"base_url": "https://open.bigmodel.cn/api/coding/paas/v4",
|
|
117
|
+
"api_key": "${ZHIPU_API_KEY}"
|
|
118
|
+
},
|
|
119
|
+
"custom-provider": {
|
|
120
|
+
"type": "openai_chat",
|
|
121
|
+
"base_url": "https://custom-endpoint.com/v1",
|
|
122
|
+
"api_key": "${CUSTOM_API_KEY}",
|
|
123
|
+
"models": {
|
|
124
|
+
"custom-model": {
|
|
125
|
+
"context_window": 128000,
|
|
126
|
+
"max_output_tokens": 16384,
|
|
127
|
+
"supports_reasoning": true,
|
|
128
|
+
"supports_image_input": false
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
- Built-in provider ids can be overridden by key without specifying `type`. Custom providers must set `type`.
|
|
137
|
+
- `reasoning_effort` controls extended thinking for supported models: `auto` (default) · `none` · `low` · `medium` · `high` · `xhigh`.
|
|
138
|
+
- API keys in config accept `${ENV_VAR}` references.
|
|
139
|
+
- Model metadata is sourced from models.dev and bundled — no manual config needed for built-in models.
|
|
140
|
+
|
|
141
|
+
> Built-in Moonshot, MiniMax, and Z.AI defaults use international endpoints. Override `base_url` in config for China endpoints.
|
|
142
|
+
|
|
143
|
+
## CLI Reference
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
mycode start interactive session (new)
|
|
147
|
+
mycode --continue resume the most recent session
|
|
148
|
+
mycode --session <id> resume a specific session
|
|
149
|
+
mycode run "..." send one message, non-interactive
|
|
150
|
+
mycode web start web server (default port 8000)
|
|
151
|
+
mycode web --dev API only, no static files
|
|
152
|
+
mycode session list list saved sessions
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Interactive slash commands: `/new` `/resume` `/provider` `/model` `/effort` `/clear` `/q`
|
|
156
|
+
|
|
157
|
+
## Development
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
git clone <repo> && cd mycode
|
|
161
|
+
uv sync --dev
|
|
162
|
+
uv run mycode
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Web development (backend + Vite dev server):
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
uv run mycode web --dev
|
|
169
|
+
pnpm --dir frontend install && pnpm --dir frontend dev
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Rebuild packaged frontend assets:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
uv run --no-project python scripts/build_frontend.py
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Build distributable artifacts:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
uv build
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## License
|
|
185
|
+
|
|
186
|
+
MIT
|