auto-coder-web 0.1.16__tar.gz → 0.1.18__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.16 → auto_coder_web-0.1.18}/PKG-INFO +2 -2
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/auto_coder_runner.py +1 -46
- auto_coder_web-0.1.18/src/auto_coder_web/auto_coder_runner_wrapper.py +51 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/proxy.py +24 -10
- auto_coder_web-0.1.18/src/auto_coder_web/routers/__init__.py +3 -0
- auto_coder_web-0.1.18/src/auto_coder_web/routers/auto_router.py +281 -0
- auto_coder_web-0.1.18/src/auto_coder_web/routers/commit_router.py +647 -0
- auto_coder_web-0.1.18/src/auto_coder_web/version.py +1 -0
- auto_coder_web-0.1.18/src/auto_coder_web/web/asset-manifest.json +15 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/index.html +1 -1
- auto_coder_web-0.1.18/src/auto_coder_web/web/static/css/main.57a3bfdf.css +6 -0
- auto_coder_web-0.1.18/src/auto_coder_web/web/static/css/main.57a3bfdf.css.map +1 -0
- auto_coder_web-0.1.18/src/auto_coder_web/web/static/js/main.27be9d6e.js +3 -0
- auto_coder_web-0.1.16/src/auto_coder_web/web/static/js/main.8cc287dc.js.map → auto_coder_web-0.1.18/src/auto_coder_web/web/static/js/main.27be9d6e.js.map +1 -1
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web.egg-info/PKG-INFO +2 -2
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web.egg-info/SOURCES.txt +8 -5
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web.egg-info/requires.txt +1 -1
- auto_coder_web-0.1.16/src/auto_coder_web/routers/__init__.py +0 -0
- auto_coder_web-0.1.16/src/auto_coder_web/version.py +0 -1
- auto_coder_web-0.1.16/src/auto_coder_web/web/asset-manifest.json +0 -15
- auto_coder_web-0.1.16/src/auto_coder_web/web/static/css/main.3cb5c1ac.css +0 -6
- auto_coder_web-0.1.16/src/auto_coder_web/web/static/css/main.3cb5c1ac.css.map +0 -1
- auto_coder_web-0.1.16/src/auto_coder_web/web/static/js/main.8cc287dc.js +0 -3
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/README.md +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/setup.cfg +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/setup.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/__init__.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/file_group.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/file_manager.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/json_file_storage.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/routers/settings_router.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/routers/todo_router.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/terminal.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/types.py +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/favicon.ico +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/logo192.png +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/logo512.png +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/manifest.json +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/base/worker/workerMain.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/abap/abap.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/apex/apex.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/azcli/azcli.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bat/bat.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bicep/bicep.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cameligo/cameligo.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/clojure/clojure.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/coffee/coffee.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cpp/cpp.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csharp/csharp.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csp/csp.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/css/css.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cypher/cypher.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dart/dart.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dockerfile/dockerfile.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ecl/ecl.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/elixir/elixir.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/flow9/flow9.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/freemarker2/freemarker2.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/fsharp/fsharp.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/go/go.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/graphql/graphql.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/handlebars/handlebars.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/hcl/hcl.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/html/html.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ini/ini.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/java/java.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/javascript/javascript.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/julia/julia.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/kotlin/kotlin.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/less/less.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lexon/lexon.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/liquid/liquid.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lua/lua.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/m3/m3.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/markdown/markdown.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mdx/mdx.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mips/mips.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/msdax/msdax.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mysql/mysql.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/objective-c/objective-c.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascal/pascal.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascaligo/pascaligo.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/perl/perl.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pgsql/pgsql.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/php/php.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pla/pla.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/postiats/postiats.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powerquery/powerquery.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powershell/powershell.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/protobuf/protobuf.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pug/pug.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/python/python.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/qsharp/qsharp.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/r/r.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/razor/razor.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redis/redis.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redshift/redshift.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/restructuredtext/restructuredtext.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ruby/ruby.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/rust/rust.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sb/sb.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scala/scala.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scheme/scheme.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scss/scss.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/shell/shell.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/solidity/solidity.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sophia/sophia.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sparql/sparql.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sql/sql.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/st/st.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/swift/swift.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/systemverilog/systemverilog.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/tcl/tcl.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/twig/twig.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typescript/typescript.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typespec/typespec.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/vb/vb.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/wgsl/wgsl.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/xml/xml.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/yaml/yaml.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.css +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssMode.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssWorker.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlMode.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlWorker.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonMode.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonWorker.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsMode.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsWorker.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/loader.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.de.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.es.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.fr.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.it.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ja.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ko.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ru.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-cn.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-tw.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/robots.txt +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/static/js/453.d855a71b.chunk.js +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web/web/static/js/453.d855a71b.chunk.js.map +0 -0
- /auto_coder_web-0.1.16/src/auto_coder_web/web/static/js/main.8cc287dc.js.LICENSE.txt → /auto_coder_web-0.1.18/src/auto_coder_web/web/static/js/main.27be9d6e.js.LICENSE.txt +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web.egg-info/dependency_links.txt +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/src/auto_coder_web.egg-info/entry_points.txt +0 -0
- {auto_coder_web-0.1.16 → auto_coder_web-0.1.18}/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.18
|
4
4
|
Summary: auto-coder.web: A Python Project
|
5
5
|
Author: allwefantasy
|
6
6
|
Classifier: Programming Language :: Python :: 3.9
|
7
7
|
Classifier: Programming Language :: Python :: 3.10
|
8
8
|
Classifier: Programming Language :: Python :: 3.11
|
9
9
|
Description-Content-Type: text/markdown
|
10
|
-
Requires-Dist: auto-coder>=0.1.
|
10
|
+
Requires-Dist: auto-coder>=0.1.303
|
11
11
|
Requires-Dist: aiofiles
|
12
12
|
Requires-Dist: psutil
|
13
13
|
Requires-Dist: sse-starlette
|
@@ -833,49 +833,4 @@ query: |
|
|
833
833
|
"status": False,
|
834
834
|
"message": "No previous chat action found."
|
835
835
|
}
|
836
|
-
|
837
|
-
async def auto_command(self, query: str):
|
838
|
-
"""处理/auto指令"""
|
839
|
-
from autocoder.commands.auto_command import CommandAutoTuner, AutoCommandRequest, CommandConfig
|
840
|
-
args = self.get_final_config()
|
841
|
-
|
842
|
-
# 准备请求参数
|
843
|
-
request = AutoCommandRequest(
|
844
|
-
user_input=query
|
845
|
-
)
|
846
|
-
|
847
|
-
# 初始化调优器
|
848
|
-
llm = get_single_llm(args.chat_model or args.model, product_mode=args.product_mode)
|
849
|
-
tuner = CommandAutoTuner(llm,
|
850
|
-
args=args,
|
851
|
-
memory_config=MemoryConfig(memory=self.memory, save_memory_func=self.save_memory),
|
852
|
-
command_config=CommandConfig(
|
853
|
-
add_files=self.add_files,
|
854
|
-
remove_files=self.remove_files,
|
855
|
-
list_files=self.list_files,
|
856
|
-
conf=self.configure,
|
857
|
-
revert=self.revert,
|
858
|
-
commit=self.commit,
|
859
|
-
help=self.help,
|
860
|
-
exclude_dirs=self.exclude_dirs,
|
861
|
-
ask=self.ask,
|
862
|
-
chat=self.chat,
|
863
|
-
coding=self.coding,
|
864
|
-
design=self.design,
|
865
|
-
summon=self.summon,
|
866
|
-
lib=self.lib_command,
|
867
|
-
mcp=self.mcp,
|
868
|
-
models=self.manage_models,
|
869
|
-
index_build=self.index_build,
|
870
|
-
index_query=self.index_query,
|
871
|
-
execute_shell_command=self.execute_shell,
|
872
|
-
generate_shell_command=self.generate_shell_command
|
873
|
-
))
|
874
|
-
|
875
|
-
# 生成建议
|
876
|
-
response = await tuner.analyze(request)
|
877
|
-
|
878
|
-
return {
|
879
|
-
"suggestions": [s.dict() for s in response.suggestions],
|
880
|
-
"reasoning": response.reasoning
|
881
|
-
}
|
836
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
from typing import Dict,Any
|
2
|
+
from autocoder.auto_coder_runner import (
|
3
|
+
auto_command,
|
4
|
+
load_memory,
|
5
|
+
save_memory,
|
6
|
+
configure,
|
7
|
+
manage_models,
|
8
|
+
print_conf,
|
9
|
+
exclude_dirs,
|
10
|
+
exclude_files,
|
11
|
+
ask,
|
12
|
+
coding,
|
13
|
+
load_tokenizer,
|
14
|
+
initialize_system,
|
15
|
+
InitializeSystemRequest,
|
16
|
+
add_files,
|
17
|
+
remove_files,
|
18
|
+
index_query,
|
19
|
+
index_build,
|
20
|
+
index_export,
|
21
|
+
index_import,
|
22
|
+
list_files,
|
23
|
+
lib_command,
|
24
|
+
mcp,
|
25
|
+
revert,
|
26
|
+
commit,
|
27
|
+
design,
|
28
|
+
voice_input,
|
29
|
+
chat,
|
30
|
+
gen_and_exec_shell_command,
|
31
|
+
execute_shell_command,
|
32
|
+
get_mcp_server,
|
33
|
+
completer,
|
34
|
+
summon,
|
35
|
+
get_memory,
|
36
|
+
)
|
37
|
+
|
38
|
+
class AutoCoderRunnerWrapper:
|
39
|
+
def __init__(self, project_path: str, product_mode: str = "lite"):
|
40
|
+
load_memory()
|
41
|
+
load_tokenizer()
|
42
|
+
|
43
|
+
|
44
|
+
def auto_command_wrapper(self, command: str, params: Dict[str, Any]) -> Dict[str, str]:
|
45
|
+
return auto_command(command,params)
|
46
|
+
|
47
|
+
def configure_wrapper(self,conf: str, skip_print=False ):
|
48
|
+
return configure(conf, skip_print)
|
49
|
+
|
50
|
+
|
51
|
+
|
@@ -1,3 +1,8 @@
|
|
1
|
+
from autocoder.run_context import get_run_context,RunMode
|
2
|
+
|
3
|
+
# Set run mode to web
|
4
|
+
get_run_context().set_mode(RunMode.WEB)
|
5
|
+
|
1
6
|
from fastapi import FastAPI, Request, HTTPException, Response, Query
|
2
7
|
from fastapi.responses import HTMLResponse, JSONResponse
|
3
8
|
from fastapi import WebSocket
|
@@ -14,9 +19,9 @@ import asyncio
|
|
14
19
|
import pathlib
|
15
20
|
import time
|
16
21
|
import sys
|
17
|
-
from .file_group import FileGroupManager
|
18
|
-
from .file_manager import get_directory_tree
|
19
|
-
from .auto_coder_runner import AutoCoderRunner
|
22
|
+
from auto_coder_web.file_group import FileGroupManager
|
23
|
+
from auto_coder_web.file_manager import get_directory_tree
|
24
|
+
from auto_coder_web.auto_coder_runner import AutoCoderRunner
|
20
25
|
from autocoder.agent.auto_filegroup import AutoFileGroup
|
21
26
|
from .types import (
|
22
27
|
EventGetRequest,
|
@@ -49,8 +54,8 @@ import git
|
|
49
54
|
import hashlib
|
50
55
|
from datetime import datetime
|
51
56
|
from autocoder.utils import operate_config_api
|
52
|
-
from .routers import todo_router
|
53
|
-
|
57
|
+
from .routers import todo_router, settings_router, auto_router, commit_router
|
58
|
+
|
54
59
|
|
55
60
|
|
56
61
|
def check_environment():
|
@@ -325,11 +330,11 @@ class ProxyServer:
|
|
325
330
|
self.setup_middleware()
|
326
331
|
|
327
332
|
self.setup_static_files()
|
333
|
+
self.project_path = project_path
|
328
334
|
|
329
|
-
self.setup_routes()
|
330
|
-
|
335
|
+
self.setup_routes()
|
331
336
|
self.client = httpx.AsyncClient()
|
332
|
-
|
337
|
+
|
333
338
|
self.auto_coder_runner = AutoCoderRunner(project_path, product_mode=product_mode)
|
334
339
|
self.file_group_manager = FileGroupManager(self.auto_coder_runner)
|
335
340
|
|
@@ -347,13 +352,22 @@ class ProxyServer:
|
|
347
352
|
"auto_coder_web", "web/index.html")
|
348
353
|
self.resource_dir = os.path.dirname(self.index_html_path)
|
349
354
|
self.static_dir = os.path.join(self.resource_dir, "static")
|
355
|
+
|
350
356
|
self.app.mount(
|
351
357
|
"/static", StaticFiles(directory=self.static_dir), name="static")
|
358
|
+
|
359
|
+
self.app.mount(
|
360
|
+
"/monaco-editor", StaticFiles(directory=os.path.join(self.resource_dir, "monaco-editor")), name="monaco-editor")
|
352
361
|
|
353
362
|
def setup_routes(self):
|
354
363
|
|
355
364
|
self.app.include_router(todo_router.router)
|
356
365
|
self.app.include_router(settings_router.router)
|
366
|
+
self.app.include_router(auto_router.router)
|
367
|
+
self.app.include_router(commit_router.router)
|
368
|
+
|
369
|
+
# Store project_path in app state for dependency injection
|
370
|
+
self.app.state.project_path = self.project_path
|
357
371
|
|
358
372
|
@self.app.on_event("shutdown")
|
359
373
|
async def shutdown_event():
|
@@ -958,8 +972,8 @@ def main():
|
|
958
972
|
parser.add_argument(
|
959
973
|
"--product_mode",
|
960
974
|
type=str,
|
961
|
-
default="
|
962
|
-
help="The mode of the auto-coder.chat, lite/pro default is
|
975
|
+
default="lite",
|
976
|
+
help="The mode of the auto-coder.chat, lite/pro default is lite",
|
963
977
|
)
|
964
978
|
parser.add_argument(
|
965
979
|
"--lite",
|
@@ -0,0 +1,281 @@
|
|
1
|
+
import asyncio
|
2
|
+
import json
|
3
|
+
import os
|
4
|
+
from contextlib import contextmanager
|
5
|
+
from threading import Thread
|
6
|
+
from fastapi import APIRouter, HTTPException, Request, Depends
|
7
|
+
from fastapi.responses import StreamingResponse
|
8
|
+
from pydantic import BaseModel
|
9
|
+
from typing import Dict, Any, Optional, List
|
10
|
+
from auto_coder_web.auto_coder_runner_wrapper import AutoCoderRunnerWrapper
|
11
|
+
from autocoder.events.event_manager_singleton import get_event_manager,gengerate_event_file_path,get_event_file_path
|
12
|
+
from autocoder.events import event_content as EventContentCreator
|
13
|
+
from autocoder.events.event_types import EventType
|
14
|
+
from byzerllm.utils.langutil import asyncfy_with_semaphore
|
15
|
+
from loguru import logger
|
16
|
+
router = APIRouter()
|
17
|
+
|
18
|
+
|
19
|
+
class AutoCommandRequest(BaseModel):
|
20
|
+
command: str
|
21
|
+
|
22
|
+
class EventPollRequest(BaseModel):
|
23
|
+
event_file_id:str
|
24
|
+
|
25
|
+
|
26
|
+
class UserResponseRequest(BaseModel):
|
27
|
+
event_id: str
|
28
|
+
event_file_id: str
|
29
|
+
response: str
|
30
|
+
|
31
|
+
|
32
|
+
class TaskHistoryRequest(BaseModel):
|
33
|
+
query: str
|
34
|
+
event_file_id: str
|
35
|
+
messages: List[Dict[str, Any]]
|
36
|
+
status: str
|
37
|
+
timestamp: int
|
38
|
+
|
39
|
+
|
40
|
+
async def get_project_path(request: Request) -> str:
|
41
|
+
"""
|
42
|
+
从FastAPI请求上下文中获取项目路径
|
43
|
+
"""
|
44
|
+
return request.app.state.project_path
|
45
|
+
|
46
|
+
|
47
|
+
def ensure_task_dir(project_path: str) -> str:
|
48
|
+
"""确保任务历史目录存在"""
|
49
|
+
task_dir = os.path.join(project_path, ".auto-coder", "auto-coder.web", "tasks")
|
50
|
+
os.makedirs(task_dir, exist_ok=True)
|
51
|
+
return task_dir
|
52
|
+
|
53
|
+
|
54
|
+
@router.post("/api/auto-command")
|
55
|
+
async def auto_command(request: AutoCommandRequest, project_path: str = Depends(get_project_path)):
|
56
|
+
"""
|
57
|
+
执行auto_command命令
|
58
|
+
|
59
|
+
通过AutoCoderRunnerWrapper调用auto_command_wrapper方法,执行指定的命令
|
60
|
+
在单独的线程中运行,并返回一个唯一的UUID
|
61
|
+
"""
|
62
|
+
event_file,file_id = gengerate_event_file_path()
|
63
|
+
# 定义在线程中运行的函数
|
64
|
+
def run_command_in_thread():
|
65
|
+
try:
|
66
|
+
# 创建AutoCoderRunnerWrapper实例,使用从应用上下文获取的项目路径
|
67
|
+
wrapper = AutoCoderRunnerWrapper(project_path)
|
68
|
+
wrapper.configure_wrapper(f"event_file:{event_file}")
|
69
|
+
|
70
|
+
# 调用auto_command_wrapper方法
|
71
|
+
result = wrapper.auto_command_wrapper(request.command, {
|
72
|
+
"event_file_id": file_id
|
73
|
+
})
|
74
|
+
get_event_manager(event_file).write_completion(
|
75
|
+
EventContentCreator.create_completion(
|
76
|
+
"200", "completed", result).to_dict()
|
77
|
+
)
|
78
|
+
logger.info(f"Event file id: {file_id} completed successfully")
|
79
|
+
except Exception as e:
|
80
|
+
logger.error(f"Error executing auto command {file_id}: {str(e)}")
|
81
|
+
get_event_manager(event_file).write_error(
|
82
|
+
EventContentCreator.create_error("500", "error", str(e)).to_dict()
|
83
|
+
)
|
84
|
+
|
85
|
+
# 创建并启动线程
|
86
|
+
thread = Thread(target=run_command_in_thread)
|
87
|
+
thread.daemon = True # 设置为守护线程,这样当主程序退出时,线程也会退出
|
88
|
+
thread.start()
|
89
|
+
|
90
|
+
logger.info(f"Started command {file_id} in background thread")
|
91
|
+
return {"event_file_id": file_id}
|
92
|
+
|
93
|
+
|
94
|
+
@router.get("/api/auto-command/events")
|
95
|
+
async def poll_auto_command_events(event_file_id: str, project_path: str = Depends(get_project_path)):
|
96
|
+
async def event_stream():
|
97
|
+
event_file = get_event_file_path(event_file_id,project_path)
|
98
|
+
event_manager = get_event_manager(event_file)
|
99
|
+
while True:
|
100
|
+
try:
|
101
|
+
events = await asyncio.to_thread(event_manager.read_events, block=False)
|
102
|
+
|
103
|
+
if not events:
|
104
|
+
await asyncio.sleep(0.1) # 减少休眠时间,更频繁地检查
|
105
|
+
continue
|
106
|
+
|
107
|
+
current_event = None
|
108
|
+
for event in events:
|
109
|
+
current_event = event
|
110
|
+
# Convert event to JSON string
|
111
|
+
event_json = event.to_json()
|
112
|
+
# Format as SSE
|
113
|
+
yield f"data: {event_json}\n\n"
|
114
|
+
|
115
|
+
# 防止current_event为None导致的错误
|
116
|
+
if current_event is not None:
|
117
|
+
if current_event.event_type == EventType.ERROR:
|
118
|
+
logger.info("Breaking loop due to ERROR event")
|
119
|
+
break
|
120
|
+
|
121
|
+
if current_event.event_type == EventType.COMPLETION:
|
122
|
+
logger.info("Breaking loop due to COMPLETION event")
|
123
|
+
break
|
124
|
+
except Exception as e:
|
125
|
+
logger.error(f"Error in SSE stream: {str(e)}")
|
126
|
+
yield f"data: {{\"error\": \"{str(e)}\"}}\n\n"
|
127
|
+
break
|
128
|
+
|
129
|
+
return StreamingResponse(
|
130
|
+
event_stream(),
|
131
|
+
media_type="text/event-stream",
|
132
|
+
headers={
|
133
|
+
"Cache-Control": "no-cache, no-transform",
|
134
|
+
"Connection": "keep-alive",
|
135
|
+
"Content-Type": "text/event-stream",
|
136
|
+
"X-Accel-Buffering": "no",
|
137
|
+
"Transfer-Encoding": "chunked",
|
138
|
+
},
|
139
|
+
)
|
140
|
+
|
141
|
+
|
142
|
+
@router.post("/api/auto-command/response")
|
143
|
+
async def response_user(request: UserResponseRequest, project_path: str = Depends(get_project_path)):
|
144
|
+
"""
|
145
|
+
响应用户询问
|
146
|
+
|
147
|
+
接收用户对ASK_USER事件的回复,并将其传递给事件管理器
|
148
|
+
|
149
|
+
Args:
|
150
|
+
request: 包含event_id和response的请求对象
|
151
|
+
project_path: 项目路径
|
152
|
+
|
153
|
+
Returns:
|
154
|
+
响应结果
|
155
|
+
"""
|
156
|
+
try:
|
157
|
+
# 获取事件管理器
|
158
|
+
event_file = get_event_file_path(file_id=request.event_file_id,project_path=project_path)
|
159
|
+
event_manager = get_event_manager(event_file)
|
160
|
+
|
161
|
+
# 调用respond_to_user方法发送用户响应
|
162
|
+
response_event = event_manager.respond_to_user(
|
163
|
+
request.event_id, request.response)
|
164
|
+
|
165
|
+
# 返回成功响应
|
166
|
+
return {
|
167
|
+
"status": "success",
|
168
|
+
"message": "Response sent successfully",
|
169
|
+
"event_id": response_event.event_id
|
170
|
+
}
|
171
|
+
except Exception as e:
|
172
|
+
logger.error(f"Error sending user response: {str(e)}")
|
173
|
+
raise HTTPException(
|
174
|
+
status_code=500, detail=f"Failed to send user response: {str(e)}")
|
175
|
+
|
176
|
+
|
177
|
+
@router.post("/api/auto-command/save-history")
|
178
|
+
async def save_task_history(request: TaskHistoryRequest, project_path: str = Depends(get_project_path)):
|
179
|
+
"""
|
180
|
+
保存任务历史
|
181
|
+
|
182
|
+
将任务的查询、消息历史和事件文件ID保存到本地文件系统
|
183
|
+
|
184
|
+
Args:
|
185
|
+
request: 包含任务信息的请求对象
|
186
|
+
project_path: 项目路径
|
187
|
+
|
188
|
+
Returns:
|
189
|
+
保存结果
|
190
|
+
"""
|
191
|
+
try:
|
192
|
+
task_dir = ensure_task_dir(project_path)
|
193
|
+
task_file = os.path.join(task_dir, f"{request.event_file_id}.json")
|
194
|
+
task_data = request.model_dump()
|
195
|
+
|
196
|
+
# 写入文件
|
197
|
+
with open(task_file, 'w', encoding='utf-8') as f:
|
198
|
+
json.dump(task_data, f, ensure_ascii=False, indent=2)
|
199
|
+
|
200
|
+
return {
|
201
|
+
"status": "success",
|
202
|
+
"message": "Task history saved successfully",
|
203
|
+
"task_id": request.event_file_id
|
204
|
+
}
|
205
|
+
except Exception as e:
|
206
|
+
logger.error(f"Error saving task history: {str(e)}")
|
207
|
+
raise HTTPException(
|
208
|
+
status_code=500, detail=f"Failed to save task history: {str(e)}")
|
209
|
+
|
210
|
+
|
211
|
+
@router.get("/api/auto-command/history")
|
212
|
+
async def get_task_history(project_path: str = Depends(get_project_path)):
|
213
|
+
"""
|
214
|
+
获取任务历史列表
|
215
|
+
|
216
|
+
从本地文件系统读取所有保存的任务历史,返回原始JSON文件内容
|
217
|
+
|
218
|
+
Args:
|
219
|
+
project_path: 项目路径
|
220
|
+
|
221
|
+
Returns:
|
222
|
+
任务历史列表,包含完整的原始数据
|
223
|
+
"""
|
224
|
+
try:
|
225
|
+
task_dir = ensure_task_dir(project_path)
|
226
|
+
task_files = []
|
227
|
+
|
228
|
+
# 扫描目录下所有json文件
|
229
|
+
for filename in os.listdir(task_dir):
|
230
|
+
if filename.endswith('.json'):
|
231
|
+
file_path = os.path.join(task_dir, filename)
|
232
|
+
try:
|
233
|
+
with open(file_path, 'r', encoding='utf-8') as f:
|
234
|
+
task_data = json.load(f)
|
235
|
+
# 只添加文件名作为ID (不含扩展名)
|
236
|
+
task_id = os.path.splitext(filename)[0]
|
237
|
+
# 返回完整的原始数据,只添加ID
|
238
|
+
task_data["id"] = task_id
|
239
|
+
task_files.append(task_data)
|
240
|
+
except Exception as e:
|
241
|
+
logger.error(f"Error reading task file {filename}: {str(e)}")
|
242
|
+
|
243
|
+
# 按时间戳排序,最新的在前
|
244
|
+
task_files.sort(key=lambda x: x.get("timestamp", 0), reverse=True)
|
245
|
+
|
246
|
+
return {"tasks": task_files}
|
247
|
+
except Exception as e:
|
248
|
+
logger.error(f"Error getting task history: {str(e)}")
|
249
|
+
raise HTTPException(
|
250
|
+
status_code=500, detail=f"Failed to get task history: {str(e)}")
|
251
|
+
|
252
|
+
|
253
|
+
@router.get("/api/auto-command/history/{task_id}")
|
254
|
+
async def get_task_detail(task_id: str, project_path: str = Depends(get_project_path)):
|
255
|
+
"""
|
256
|
+
获取特定任务的详细信息
|
257
|
+
|
258
|
+
Args:
|
259
|
+
task_id: 任务ID (event_file_id)
|
260
|
+
project_path: 项目路径
|
261
|
+
|
262
|
+
Returns:
|
263
|
+
任务详细信息
|
264
|
+
"""
|
265
|
+
try:
|
266
|
+
task_dir = ensure_task_dir(project_path)
|
267
|
+
task_file = os.path.join(task_dir, f"{task_id}.json")
|
268
|
+
|
269
|
+
if not os.path.exists(task_file):
|
270
|
+
raise HTTPException(status_code=404, detail=f"Task {task_id} not found")
|
271
|
+
|
272
|
+
with open(task_file, 'r', encoding='utf-8') as f:
|
273
|
+
task_data = json.load(f)
|
274
|
+
|
275
|
+
return task_data
|
276
|
+
except HTTPException:
|
277
|
+
raise
|
278
|
+
except Exception as e:
|
279
|
+
logger.error(f"Error getting task detail for {task_id}: {str(e)}")
|
280
|
+
raise HTTPException(
|
281
|
+
status_code=500, detail=f"Failed to get task detail: {str(e)}")
|