auto-coder-web 0.1.89__tar.gz → 0.1.91__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.
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/PKG-INFO +2 -2
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/completions_router.py +46 -52
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/file_router.py +66 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/proxy.py +3 -0
- auto_coder_web-0.1.91/src/auto_coder_web/version.py +1 -0
- auto_coder_web-0.1.89/src/auto_coder_web/web/assets/main-D9kwl53k.css → auto_coder_web-0.1.91/src/auto_coder_web/web/assets/main-edBorJ-r.css +1 -1
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/main.js +343 -343
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/index.html +1 -1
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/PKG-INFO +2 -2
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/SOURCES.txt +1 -1
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/requires.txt +1 -1
- auto_coder_web-0.1.89/src/auto_coder_web/version.py +0 -1
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/README.md +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/setup.cfg +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/setup.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/__init__.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/auto_coder_runner_wrapper.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/__init__.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/active_context_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/auto_coder_conf_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/chat_list_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/compiler_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/file_group_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/filecacher.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/model_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/expert_routers/__init__.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/expert_routers/history_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/file_cacher/__init__.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/file_cacher/filecacher.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/file_group.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/file_manager.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/init_project.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/json_file_storage.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/lang.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/__init__.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/auto_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/chat_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/coding_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/commit_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/config_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/direct_chat_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/editable_preview_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/index_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/mcp_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/rag_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/rules_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/settings_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/todo_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/upload_router.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/terminal.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/types.py +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/HistoryPanel-B59ay4X7.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/abap-BrgZPUOV.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/apex-DyP6w7ZV.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/azcli-BaLxmfj-.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/bat-CFOPXBzS.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/bicep-BfEKNvv3.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cameligo-BFG1Mk7z.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/clojure-DTECt2xU.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/codicon-DCmgc-ay.ttf +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/coffee-CDGzqUPQ.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cpp-CLLBncYj.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/csharp-dUCx_-0o.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/csp-5Rap-vPy.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/css-D3h14YRZ.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cssMode-dfzmIRw_.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cypher-DrQuvNYM.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/dart-CFKIUWau.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/dockerfile-Zznr-cwX.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/ecl-Ce3n6wWz.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/elixir-deUWdS0T.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/flow9-i9-g7ZhI.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/freemarker2-CD79_SV-.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/fsharp-CzKuDChf.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/go-Cphgjts3.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/graphql-Cg7bfA9N.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/handlebars-B_inQ7Ga.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/hcl-0cvrggvQ.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/html-s8IXsV2v.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/htmlMode-BNdCO4Um.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/ini-Drc7WvVn.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/java-B_fMsGYe.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/javascript-D_ZBRKl9.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/jsonMode-lWocgRYn.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/julia-Bqgm2twL.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/kotlin-BSkB5QuD.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/less-BsTHnhdd.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/lexon-YWi4-JPR.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/liquid-CPaH0eVF.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/lua-nf6ki56Z.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/m3-Cpb6xl2v.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/markdown-DSZPf7rp.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/mdx-DRx1b0qs.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/mips-B_c3zf-v.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/msdax-rUNN04Wq.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/mysql-DDwshQtU.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/objective-c-B5zXfXm9.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pascal-CXOwvkN_.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pascaligo-Bc-ZgV77.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/perl-CwNk8-XU.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pgsql-tGk8EFnU.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/php-CpIb_Oan.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pla-B03wrqEc.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/postiats-BKlk5iyT.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/powerquery-Bhzvs7bI.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/powershell-Dd3NCNK9.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/protobuf-COyEY5Pt.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pug-BaJupSGV.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/python-5rTPwuda.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/qsharp-DXyYeYxl.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/r-CdQndTaG.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/razor-zn6WfQ9V.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/redis-CVwtpugi.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/redshift-25W9uPmb.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/restructuredtext-DfzH4Xui.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/ruby-Cp1zYvxS.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/rust-D5C2fndG.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sb-CDntyWJ8.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/scala-BoFRg7Ot.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/scheme-Bio4gycK.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/scss-4Ik7cdeQ.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/shell-CX-rkNHf.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/solidity-Tw7wswEv.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sophia-C5WLch3f.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sparql-DHaeiCBh.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sql-CCSDG5nI.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/st-pnP8ivHi.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/swift-DwJ7jVG9.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/systemverilog-B9Xyijhd.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/tcl-DnHyzjbg.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/tsMode-CkhihvQ0.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/twig-CPajHgWi.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/typescript-DH2E4fY1.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/typespec-D-MeaMDU.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/vb-DgyLZaXg.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/wgsl-BIv9DU6q.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/xml-kipCCfsB.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/yaml-BI9EB_1X.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/bridge.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/favicon.ico +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/logo192.png +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/logo512.png +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/manifest.json +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/base/worker/workerMain.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/abap/abap.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/apex/apex.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/azcli/azcli.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bat/bat.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bicep/bicep.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cameligo/cameligo.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/clojure/clojure.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/coffee/coffee.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cpp/cpp.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csharp/csharp.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csp/csp.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/css/css.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cypher/cypher.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dart/dart.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dockerfile/dockerfile.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ecl/ecl.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/elixir/elixir.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/flow9/flow9.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/freemarker2/freemarker2.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/fsharp/fsharp.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/go/go.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/graphql/graphql.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/handlebars/handlebars.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/hcl/hcl.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/html/html.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ini/ini.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/java/java.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/javascript/javascript.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/julia/julia.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/kotlin/kotlin.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/less/less.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lexon/lexon.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/liquid/liquid.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lua/lua.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/m3/m3.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/markdown/markdown.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mdx/mdx.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mips/mips.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/msdax/msdax.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mysql/mysql.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/objective-c/objective-c.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascal/pascal.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascaligo/pascaligo.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/perl/perl.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pgsql/pgsql.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/php/php.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pla/pla.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/postiats/postiats.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powerquery/powerquery.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powershell/powershell.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/protobuf/protobuf.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pug/pug.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/python/python.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/qsharp/qsharp.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/r/r.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/razor/razor.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redis/redis.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redshift/redshift.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/restructuredtext/restructuredtext.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ruby/ruby.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/rust/rust.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sb/sb.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scala/scala.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scheme/scheme.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scss/scss.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/shell/shell.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/solidity/solidity.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sophia/sophia.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sparql/sparql.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sql/sql.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/st/st.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/swift/swift.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/systemverilog/systemverilog.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/tcl/tcl.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/twig/twig.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typescript/typescript.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typespec/typespec.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/vb/vb.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/wgsl/wgsl.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/xml/xml.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/yaml/yaml.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.css +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssMode.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssWorker.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlMode.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlWorker.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonMode.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonWorker.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsMode.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsWorker.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/loader.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.de.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.es.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.fr.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.it.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ja.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ko.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ru.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-cn.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-tw.js +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/robots.txt +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/sounds/ding-dong.wav +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/sounds/gentle-notification.wav +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/web/sounds/soft-chime.wav +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/dependency_links.txt +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/entry_points.txt +0 -0
- {auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/top_level.txt +0 -0
@@ -1,13 +1,13 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: auto_coder_web
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.91
|
4
4
|
Summary: auto-coder.web: A Python Project
|
5
5
|
Author: allwefantasy
|
6
6
|
Classifier: Programming Language :: Python :: 3.10
|
7
7
|
Classifier: Programming Language :: Python :: 3.11
|
8
8
|
Classifier: Programming Language :: Python :: 3.12
|
9
9
|
Description-Content-Type: text/markdown
|
10
|
-
Requires-Dist: auto-coder>=0.1.
|
10
|
+
Requires-Dist: auto-coder>=0.1.360
|
11
11
|
Requires-Dist: aiofiles
|
12
12
|
Requires-Dist: psutil
|
13
13
|
Requires-Dist: watchdog
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import os
|
2
2
|
import glob
|
3
3
|
import json
|
4
|
+
import fnmatch
|
4
5
|
from typing import List
|
5
6
|
from pydantic import BaseModel
|
6
7
|
from fastapi import APIRouter, Query, Request, Depends
|
@@ -13,12 +14,15 @@ from autocoder.index.symbols_utils import (
|
|
13
14
|
)
|
14
15
|
|
15
16
|
from autocoder.auto_coder_runner import get_memory
|
17
|
+
from autocoder.common.ignorefiles.ignore_file_utils import should_ignore
|
18
|
+
from autocoder.common.directory_cache.cache import DirectoryCache, initialize_cache
|
16
19
|
import json
|
17
20
|
import asyncio
|
18
21
|
import aiofiles
|
19
22
|
import aiofiles.os
|
23
|
+
import logging
|
20
24
|
|
21
|
-
|
25
|
+
logger = logging.getLogger(__name__)
|
22
26
|
router = APIRouter()
|
23
27
|
|
24
28
|
class SymbolItem(BaseModel):
|
@@ -35,67 +39,57 @@ async def get_project_path(request: Request):
|
|
35
39
|
"""获取项目路径作为依赖"""
|
36
40
|
return request.app.state.project_path
|
37
41
|
|
38
|
-
def find_files_in_project(patterns: List[str], project_path: str) -> List[str]:
|
42
|
+
async def find_files_in_project(patterns: List[str], project_path: str) -> List[str]:
|
39
43
|
memory = get_memory()
|
40
|
-
default_exclude_dirs = [".git", "node_modules", "dist", "build", "__pycache__", ".venv", ".auto-coder"]
|
41
44
|
active_file_list = memory["current_files"]["files"]
|
42
|
-
final_exclude_dirs = default_exclude_dirs + memory.get("exclude_dirs", [])
|
43
45
|
project_root = project_path
|
44
46
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
rel_path = path
|
54
|
-
|
55
|
-
# 检查文件或目录本身是否以.开头
|
56
|
-
if os.path.basename(rel_path).startswith('.'):
|
57
|
-
return True
|
58
|
-
|
59
|
-
# 检查路径中是否包含排除目录
|
60
|
-
path_parts = rel_path.split(os.sep)
|
61
|
-
return any(part in final_exclude_dirs or part.startswith('.') for part in path_parts)
|
62
|
-
|
47
|
+
# 确保目录缓存已初始化
|
48
|
+
try:
|
49
|
+
cache = DirectoryCache.get_instance(project_root)
|
50
|
+
except ValueError:
|
51
|
+
# 如果缓存未初始化,则初始化它
|
52
|
+
initialize_cache(project_root)
|
53
|
+
cache = DirectoryCache.get_instance()
|
54
|
+
|
63
55
|
# 如果没有提供有效模式,返回过滤后的活动文件列表
|
64
56
|
if not patterns or (len(patterns) == 1 and patterns[0] == ""):
|
65
|
-
|
57
|
+
# 使用缓存中的所有文件
|
58
|
+
all_files = await cache.query([])
|
59
|
+
# 合并活动文件列表和缓存文件
|
60
|
+
combined_files = set(all_files)
|
61
|
+
combined_files.update([f for f in active_file_list if not should_ignore(f)])
|
62
|
+
return list(combined_files)
|
66
63
|
|
67
64
|
matched_files = set() # 使用集合避免重复
|
68
|
-
|
65
|
+
|
66
|
+
# 1. 首先从活动文件列表中匹配,这通常是最近编辑的文件
|
69
67
|
for pattern in patterns:
|
70
|
-
# 1. 从活动文件列表中匹配
|
71
68
|
for file_path in active_file_list:
|
72
|
-
if not
|
69
|
+
if not should_ignore(file_path) and pattern.lower() in os.path.basename(file_path).lower():
|
73
70
|
matched_files.add(file_path)
|
74
|
-
|
75
|
-
|
71
|
+
|
72
|
+
# 2. 使用DirectoryCache进行高效查询
|
73
|
+
cache_patterns = []
|
74
|
+
for pattern in patterns:
|
75
|
+
# 处理通配符模式
|
76
76
|
if "*" in pattern or "?" in pattern:
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
file_path = os.path.join(root, file)
|
94
|
-
if not should_exclude_path(file_path):
|
95
|
-
matched_files.add(file_path)
|
96
|
-
|
97
|
-
# 4. 如果pattern本身是文件路径
|
98
|
-
if os.path.exists(pattern) and os.path.isfile(pattern) and not should_exclude_path(pattern):
|
77
|
+
cache_patterns.append(pattern)
|
78
|
+
else:
|
79
|
+
# 对于非通配符模式,我们添加一个通配符以进行部分匹配
|
80
|
+
cache_patterns.append(f"*{pattern}*")
|
81
|
+
|
82
|
+
# 执行缓存查询
|
83
|
+
if cache_patterns:
|
84
|
+
try:
|
85
|
+
cache_results = await cache.query(cache_patterns)
|
86
|
+
matched_files.update(cache_results)
|
87
|
+
except Exception as e:
|
88
|
+
logger.error(f"Error querying directory cache: {e}", exc_info=True)
|
89
|
+
|
90
|
+
# 3. 如果pattern本身是文件路径,直接添加
|
91
|
+
for pattern in patterns:
|
92
|
+
if os.path.exists(pattern) and os.path.isfile(pattern) and not should_ignore(pattern):
|
99
93
|
matched_files.add(os.path.abspath(pattern))
|
100
94
|
|
101
95
|
return list(matched_files)
|
@@ -153,11 +147,11 @@ async def get_file_completions(
|
|
153
147
|
):
|
154
148
|
"""获取文件名补全"""
|
155
149
|
patterns = [name]
|
156
|
-
|
150
|
+
# 直接调用异步函数,不需要使用asyncio.to_thread
|
151
|
+
matches = await find_files_in_project(patterns, project_path)
|
157
152
|
completions = []
|
158
153
|
project_root = project_path
|
159
154
|
for file_name in matches:
|
160
|
-
# path_parts = file_name.split(os.sep)
|
161
155
|
# 只显示最后三层路径,让显示更简洁
|
162
156
|
display_name = os.path.basename(file_name)
|
163
157
|
relative_path = os.path.relpath(file_name, project_root)
|
{auto_coder_web-0.1.89 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/file_router.py
RENAMED
@@ -14,6 +14,9 @@ import pathspec
|
|
14
14
|
|
15
15
|
router = APIRouter()
|
16
16
|
|
17
|
+
class CreateFileRequest(BaseModel):
|
18
|
+
content: str = ""
|
19
|
+
|
17
20
|
DEFAULT_IGNORED_DIRS = ['.git', '.auto-coder', 'node_modules', '.mvn', '.idea', '__pycache__', '.venv', 'venv', 'dist', 'build', '.gradle']
|
18
21
|
|
19
22
|
def load_ignore_spec(source_dir: str) -> Optional[pathspec.PathSpec]:
|
@@ -196,6 +199,69 @@ async def list_files_in_directory(
|
|
196
199
|
return result
|
197
200
|
|
198
201
|
|
202
|
+
@router.post("/api/file/{path:path}")
|
203
|
+
async def create_file(
|
204
|
+
path: str,
|
205
|
+
request: Request,
|
206
|
+
project_path: str = Depends(get_project_path)
|
207
|
+
):
|
208
|
+
"""
|
209
|
+
Create a new file at the specified path with optional initial content.
|
210
|
+
"""
|
211
|
+
try:
|
212
|
+
data = await request.json()
|
213
|
+
content = data.get("content", "")
|
214
|
+
|
215
|
+
full_path = os.path.join(project_path, path)
|
216
|
+
dir_path = os.path.dirname(full_path)
|
217
|
+
|
218
|
+
# Check if file already exists
|
219
|
+
if await aiofiles.os.path.exists(full_path):
|
220
|
+
raise HTTPException(status_code=409, detail=f"File already exists at {path}")
|
221
|
+
|
222
|
+
# Ensure the directory exists asynchronously
|
223
|
+
if not await aiofiles.os.path.exists(dir_path):
|
224
|
+
await aiofiles.os.makedirs(dir_path, exist_ok=True)
|
225
|
+
elif not await aiofiles.os.path.isdir(dir_path):
|
226
|
+
raise HTTPException(status_code=400, detail=f"Path conflict: {dir_path} exists but is not a directory.")
|
227
|
+
|
228
|
+
# Write the file content asynchronously
|
229
|
+
async with aiofiles.open(full_path, 'w', encoding='utf-8') as f:
|
230
|
+
await f.write(content)
|
231
|
+
|
232
|
+
return {"message": f"Successfully created {path}"}
|
233
|
+
except HTTPException as http_exc: # Re-raise HTTP exceptions
|
234
|
+
raise http_exc
|
235
|
+
except Exception as e:
|
236
|
+
raise HTTPException(status_code=500, detail=str(e))
|
237
|
+
|
238
|
+
@router.post("/api/directory/{path:path}")
|
239
|
+
async def create_directory(
|
240
|
+
path: str,
|
241
|
+
project_path: str = Depends(get_project_path)
|
242
|
+
):
|
243
|
+
"""
|
244
|
+
Create a new directory at the specified path.
|
245
|
+
"""
|
246
|
+
try:
|
247
|
+
full_path = os.path.join(project_path, path)
|
248
|
+
|
249
|
+
# Check if directory already exists
|
250
|
+
if await aiofiles.os.path.exists(full_path):
|
251
|
+
if await aiofiles.os.path.isdir(full_path):
|
252
|
+
return {"message": f"Directory already exists at {path}"}
|
253
|
+
else:
|
254
|
+
raise HTTPException(status_code=409, detail=f"A file already exists at {path}")
|
255
|
+
|
256
|
+
# Create the directory and any necessary parent directories
|
257
|
+
await aiofiles.os.makedirs(full_path, exist_ok=True)
|
258
|
+
|
259
|
+
return {"message": f"Successfully created directory {path}"}
|
260
|
+
except HTTPException as http_exc: # Re-raise HTTP exceptions
|
261
|
+
raise http_exc
|
262
|
+
except Exception as e:
|
263
|
+
raise HTTPException(status_code=500, detail=str(e))
|
264
|
+
|
199
265
|
@router.get("/api/search-in-files")
|
200
266
|
async def search_in_files(
|
201
267
|
query: str = Query(..., description="Search text"),
|
@@ -75,6 +75,9 @@ class ProxyServer:
|
|
75
75
|
self.app.mount(
|
76
76
|
"/monaco-editor", StaticFiles(directory=os.path.join(self.resource_dir, "monaco-editor")), name="monaco-editor")
|
77
77
|
|
78
|
+
self.app.mount(
|
79
|
+
"/sounds", StaticFiles(directory=os.path.join(self.resource_dir, "sounds")), name="sounds")
|
80
|
+
|
78
81
|
def setup_routes(self):
|
79
82
|
|
80
83
|
# Store project_path in app state for dependency injection
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.1.91"
|