auto-coder-web 0.1.90__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.
Files changed (253) hide show
  1. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/PKG-INFO +2 -2
  2. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/completions_router.py +46 -52
  3. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/file_router.py +66 -0
  4. auto_coder_web-0.1.91/src/auto_coder_web/version.py +1 -0
  5. auto_coder_web-0.1.90/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
  6. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/main.js +295 -295
  7. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/index.html +1 -1
  8. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/PKG-INFO +2 -2
  9. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/SOURCES.txt +1 -1
  10. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/requires.txt +1 -1
  11. auto_coder_web-0.1.90/src/auto_coder_web/version.py +0 -1
  12. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/README.md +0 -0
  13. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/setup.cfg +0 -0
  14. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/setup.py +0 -0
  15. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/__init__.py +0 -0
  16. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/auto_coder_runner_wrapper.py +0 -0
  17. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/__init__.py +0 -0
  18. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/active_context_router.py +0 -0
  19. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/auto_coder_conf_router.py +0 -0
  20. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/chat_list_router.py +0 -0
  21. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/compiler_router.py +0 -0
  22. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/file_group_router.py +0 -0
  23. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/filecacher.py +0 -0
  24. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/common_router/model_router.py +0 -0
  25. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/expert_routers/__init__.py +0 -0
  26. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/expert_routers/history_router.py +0 -0
  27. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/file_cacher/__init__.py +0 -0
  28. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/file_cacher/filecacher.py +0 -0
  29. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/file_group.py +0 -0
  30. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/file_manager.py +0 -0
  31. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/init_project.py +0 -0
  32. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/json_file_storage.py +0 -0
  33. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/lang.py +0 -0
  34. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/proxy.py +0 -0
  35. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/__init__.py +0 -0
  36. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/auto_router.py +0 -0
  37. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/chat_router.py +0 -0
  38. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/coding_router.py +0 -0
  39. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/commit_router.py +0 -0
  40. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/config_router.py +0 -0
  41. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/direct_chat_router.py +0 -0
  42. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/editable_preview_router.py +0 -0
  43. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/index_router.py +0 -0
  44. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/mcp_router.py +0 -0
  45. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/rag_router.py +0 -0
  46. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/rules_router.py +0 -0
  47. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/settings_router.py +0 -0
  48. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/todo_router.py +0 -0
  49. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/routers/upload_router.py +0 -0
  50. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/terminal.py +0 -0
  51. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/types.py +0 -0
  52. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/HistoryPanel-B59ay4X7.js +0 -0
  53. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/abap-BrgZPUOV.js +0 -0
  54. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/apex-DyP6w7ZV.js +0 -0
  55. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/azcli-BaLxmfj-.js +0 -0
  56. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/bat-CFOPXBzS.js +0 -0
  57. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/bicep-BfEKNvv3.js +0 -0
  58. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cameligo-BFG1Mk7z.js +0 -0
  59. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/clojure-DTECt2xU.js +0 -0
  60. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/codicon-DCmgc-ay.ttf +0 -0
  61. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/coffee-CDGzqUPQ.js +0 -0
  62. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cpp-CLLBncYj.js +0 -0
  63. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/csharp-dUCx_-0o.js +0 -0
  64. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/csp-5Rap-vPy.js +0 -0
  65. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/css-D3h14YRZ.js +0 -0
  66. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cssMode-dfzmIRw_.js +0 -0
  67. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/cypher-DrQuvNYM.js +0 -0
  68. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/dart-CFKIUWau.js +0 -0
  69. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/dockerfile-Zznr-cwX.js +0 -0
  70. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/ecl-Ce3n6wWz.js +0 -0
  71. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/elixir-deUWdS0T.js +0 -0
  72. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/flow9-i9-g7ZhI.js +0 -0
  73. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/freemarker2-CD79_SV-.js +0 -0
  74. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/fsharp-CzKuDChf.js +0 -0
  75. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/go-Cphgjts3.js +0 -0
  76. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/graphql-Cg7bfA9N.js +0 -0
  77. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/handlebars-B_inQ7Ga.js +0 -0
  78. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/hcl-0cvrggvQ.js +0 -0
  79. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/html-s8IXsV2v.js +0 -0
  80. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/htmlMode-BNdCO4Um.js +0 -0
  81. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/ini-Drc7WvVn.js +0 -0
  82. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/java-B_fMsGYe.js +0 -0
  83. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/javascript-D_ZBRKl9.js +0 -0
  84. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/jsonMode-lWocgRYn.js +0 -0
  85. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/julia-Bqgm2twL.js +0 -0
  86. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/kotlin-BSkB5QuD.js +0 -0
  87. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/less-BsTHnhdd.js +0 -0
  88. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/lexon-YWi4-JPR.js +0 -0
  89. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/liquid-CPaH0eVF.js +0 -0
  90. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/lua-nf6ki56Z.js +0 -0
  91. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/m3-Cpb6xl2v.js +0 -0
  92. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/markdown-DSZPf7rp.js +0 -0
  93. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/mdx-DRx1b0qs.js +0 -0
  94. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/mips-B_c3zf-v.js +0 -0
  95. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/msdax-rUNN04Wq.js +0 -0
  96. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/mysql-DDwshQtU.js +0 -0
  97. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/objective-c-B5zXfXm9.js +0 -0
  98. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pascal-CXOwvkN_.js +0 -0
  99. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pascaligo-Bc-ZgV77.js +0 -0
  100. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/perl-CwNk8-XU.js +0 -0
  101. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pgsql-tGk8EFnU.js +0 -0
  102. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/php-CpIb_Oan.js +0 -0
  103. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pla-B03wrqEc.js +0 -0
  104. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/postiats-BKlk5iyT.js +0 -0
  105. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/powerquery-Bhzvs7bI.js +0 -0
  106. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/powershell-Dd3NCNK9.js +0 -0
  107. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/protobuf-COyEY5Pt.js +0 -0
  108. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/pug-BaJupSGV.js +0 -0
  109. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/python-5rTPwuda.js +0 -0
  110. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/qsharp-DXyYeYxl.js +0 -0
  111. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/r-CdQndTaG.js +0 -0
  112. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/razor-zn6WfQ9V.js +0 -0
  113. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/redis-CVwtpugi.js +0 -0
  114. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/redshift-25W9uPmb.js +0 -0
  115. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/restructuredtext-DfzH4Xui.js +0 -0
  116. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/ruby-Cp1zYvxS.js +0 -0
  117. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/rust-D5C2fndG.js +0 -0
  118. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sb-CDntyWJ8.js +0 -0
  119. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/scala-BoFRg7Ot.js +0 -0
  120. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/scheme-Bio4gycK.js +0 -0
  121. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/scss-4Ik7cdeQ.js +0 -0
  122. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/shell-CX-rkNHf.js +0 -0
  123. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/solidity-Tw7wswEv.js +0 -0
  124. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sophia-C5WLch3f.js +0 -0
  125. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sparql-DHaeiCBh.js +0 -0
  126. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/sql-CCSDG5nI.js +0 -0
  127. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/st-pnP8ivHi.js +0 -0
  128. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/swift-DwJ7jVG9.js +0 -0
  129. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/systemverilog-B9Xyijhd.js +0 -0
  130. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/tcl-DnHyzjbg.js +0 -0
  131. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/tsMode-CkhihvQ0.js +0 -0
  132. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/twig-CPajHgWi.js +0 -0
  133. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/typescript-DH2E4fY1.js +0 -0
  134. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/typespec-D-MeaMDU.js +0 -0
  135. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/vb-DgyLZaXg.js +0 -0
  136. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/wgsl-BIv9DU6q.js +0 -0
  137. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/xml-kipCCfsB.js +0 -0
  138. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/assets/yaml-BI9EB_1X.js +0 -0
  139. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/bridge.js +0 -0
  140. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/favicon.ico +0 -0
  141. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/logo192.png +0 -0
  142. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/logo512.png +0 -0
  143. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/manifest.json +0 -0
  144. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  145. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/base/worker/workerMain.js +0 -0
  146. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/abap/abap.js +0 -0
  147. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/apex/apex.js +0 -0
  148. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/azcli/azcli.js +0 -0
  149. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bat/bat.js +0 -0
  150. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bicep/bicep.js +0 -0
  151. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cameligo/cameligo.js +0 -0
  152. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/clojure/clojure.js +0 -0
  153. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/coffee/coffee.js +0 -0
  154. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cpp/cpp.js +0 -0
  155. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csharp/csharp.js +0 -0
  156. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csp/csp.js +0 -0
  157. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/css/css.js +0 -0
  158. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cypher/cypher.js +0 -0
  159. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dart/dart.js +0 -0
  160. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dockerfile/dockerfile.js +0 -0
  161. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ecl/ecl.js +0 -0
  162. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/elixir/elixir.js +0 -0
  163. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/flow9/flow9.js +0 -0
  164. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/freemarker2/freemarker2.js +0 -0
  165. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/fsharp/fsharp.js +0 -0
  166. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/go/go.js +0 -0
  167. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/graphql/graphql.js +0 -0
  168. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/handlebars/handlebars.js +0 -0
  169. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/hcl/hcl.js +0 -0
  170. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/html/html.js +0 -0
  171. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ini/ini.js +0 -0
  172. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/java/java.js +0 -0
  173. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/javascript/javascript.js +0 -0
  174. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/julia/julia.js +0 -0
  175. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/kotlin/kotlin.js +0 -0
  176. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/less/less.js +0 -0
  177. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lexon/lexon.js +0 -0
  178. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/liquid/liquid.js +0 -0
  179. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lua/lua.js +0 -0
  180. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/m3/m3.js +0 -0
  181. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/markdown/markdown.js +0 -0
  182. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mdx/mdx.js +0 -0
  183. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mips/mips.js +0 -0
  184. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/msdax/msdax.js +0 -0
  185. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mysql/mysql.js +0 -0
  186. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/objective-c/objective-c.js +0 -0
  187. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascal/pascal.js +0 -0
  188. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascaligo/pascaligo.js +0 -0
  189. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/perl/perl.js +0 -0
  190. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pgsql/pgsql.js +0 -0
  191. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/php/php.js +0 -0
  192. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pla/pla.js +0 -0
  193. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/postiats/postiats.js +0 -0
  194. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powerquery/powerquery.js +0 -0
  195. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powershell/powershell.js +0 -0
  196. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/protobuf/protobuf.js +0 -0
  197. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pug/pug.js +0 -0
  198. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/python/python.js +0 -0
  199. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/qsharp/qsharp.js +0 -0
  200. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/r/r.js +0 -0
  201. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/razor/razor.js +0 -0
  202. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redis/redis.js +0 -0
  203. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redshift/redshift.js +0 -0
  204. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/restructuredtext/restructuredtext.js +0 -0
  205. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ruby/ruby.js +0 -0
  206. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/rust/rust.js +0 -0
  207. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sb/sb.js +0 -0
  208. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scala/scala.js +0 -0
  209. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scheme/scheme.js +0 -0
  210. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scss/scss.js +0 -0
  211. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/shell/shell.js +0 -0
  212. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/solidity/solidity.js +0 -0
  213. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sophia/sophia.js +0 -0
  214. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sparql/sparql.js +0 -0
  215. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sql/sql.js +0 -0
  216. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/st/st.js +0 -0
  217. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/swift/swift.js +0 -0
  218. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/systemverilog/systemverilog.js +0 -0
  219. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/tcl/tcl.js +0 -0
  220. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/twig/twig.js +0 -0
  221. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typescript/typescript.js +0 -0
  222. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typespec/typespec.js +0 -0
  223. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/vb/vb.js +0 -0
  224. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/wgsl/wgsl.js +0 -0
  225. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/xml/xml.js +0 -0
  226. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/yaml/yaml.js +0 -0
  227. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.css +0 -0
  228. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.js +0 -0
  229. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssMode.js +0 -0
  230. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssWorker.js +0 -0
  231. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlMode.js +0 -0
  232. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlWorker.js +0 -0
  233. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonMode.js +0 -0
  234. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonWorker.js +0 -0
  235. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsMode.js +0 -0
  236. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsWorker.js +0 -0
  237. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/loader.js +0 -0
  238. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.de.js +0 -0
  239. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.es.js +0 -0
  240. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.fr.js +0 -0
  241. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.it.js +0 -0
  242. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ja.js +0 -0
  243. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ko.js +0 -0
  244. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ru.js +0 -0
  245. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-cn.js +0 -0
  246. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-tw.js +0 -0
  247. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/robots.txt +0 -0
  248. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/sounds/ding-dong.wav +0 -0
  249. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/sounds/gentle-notification.wav +0 -0
  250. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web/web/sounds/soft-chime.wav +0 -0
  251. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/dependency_links.txt +0 -0
  252. {auto_coder_web-0.1.90 → auto_coder_web-0.1.91}/src/auto_coder_web.egg-info/entry_points.txt +0 -0
  253. {auto_coder_web-0.1.90 → 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.90
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.359
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
- def should_exclude_path(path: str) -> bool:
46
- """检查路径是否应该被排除(路径中包含排除目录或以.开头的目录/文件)"""
47
- # 处理相对/绝对路径
48
- rel_path = path
49
- if os.path.isabs(path):
50
- try:
51
- rel_path = os.path.relpath(path, project_root)
52
- except ValueError:
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
- return [f for f in active_file_list if not should_exclude_path(f)]
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 should_exclude_path(file_path) and pattern in os.path.basename(file_path):
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
- # 2. 如果是通配符模式,使用glob
71
+
72
+ # 2. 使用DirectoryCache进行高效查询
73
+ cache_patterns = []
74
+ for pattern in patterns:
75
+ # 处理通配符模式
76
76
  if "*" in pattern or "?" in pattern:
77
- for file_path in glob.glob(pattern, recursive=True):
78
- if os.path.isfile(file_path) and not should_exclude_path(file_path):
79
- matched_files.add(os.path.abspath(file_path))
80
- continue
81
-
82
- # 3. 使用os.walk在文件系统中查找
83
- for root, dirs, files in os.walk(project_root, followlinks=True):
84
- # 过滤不需要遍历的目录
85
- dirs[:] = [d for d in dirs if d not in final_exclude_dirs and not d.startswith('.')]
86
-
87
- if should_exclude_path(root):
88
- continue
89
-
90
- # 查找匹配文件
91
- for file in files:
92
- if pattern in file:
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
- matches = await asyncio.to_thread(find_files_in_project, patterns,project_path)
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)
@@ -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"),
@@ -0,0 +1 @@
1
+ __version__ = "0.1.91"