auto-coder 0.1.267__tar.gz → 0.1.269__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.
Potentially problematic release.
This version of auto-coder might be problematic. Click here for more details.
- {auto_coder-0.1.267 → auto_coder-0.1.269}/PKG-INFO +2 -2
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/auto_coder.egg-info/PKG-INFO +2 -2
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/auto_coder.egg-info/SOURCES.txt +2 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/auto_coder.egg-info/requires.txt +2 -0
- auto_coder-0.1.267/src/autocoder/chat_auto_coder.py → auto_coder-0.1.269/src/autocoder/auto_coder_runner.py +28 -457
- auto_coder-0.1.269/src/autocoder/chat_auto_coder.py +488 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/commands/auto_command.py +34 -54
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/__init__.py +6 -2
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/auto_coder_lang.py +9 -1
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/auto_configure.py +41 -30
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/command_templates.py +2 -3
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/context_pruner.py +198 -15
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/conversation_pruner.py +11 -10
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/entry.py +42 -22
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/index.py +97 -38
- auto_coder-0.1.269/src/autocoder/utils/auto_project_type.py +120 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/model_provider_selector.py +23 -23
- auto_coder-0.1.269/src/autocoder/version.py +1 -0
- auto_coder-0.1.267/src/autocoder/version.py +0 -1
- {auto_coder-0.1.267 → auto_coder-0.1.269}/LICENSE +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/README.md +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/setup.cfg +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/setup.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_planner.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.267 → auto_coder-0.1.269}/tests/test_symbols_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: auto-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.269
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
@@ -58,7 +58,7 @@ Requires-Dist: pydub
|
|
|
58
58
|
Requires-Dist: youtube-transcript-api
|
|
59
59
|
Requires-Dist: SpeechRecognition
|
|
60
60
|
Requires-Dist: pathvalidate
|
|
61
|
-
Requires-Dist: mcp
|
|
61
|
+
Requires-Dist: mcp; python_version >= "3.10"
|
|
62
62
|
|
|
63
63
|
<p align="center">
|
|
64
64
|
<picture>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: auto-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.269
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
@@ -58,7 +58,7 @@ Requires-Dist: pydub
|
|
|
58
58
|
Requires-Dist: youtube-transcript-api
|
|
59
59
|
Requires-Dist: SpeechRecognition
|
|
60
60
|
Requires-Dist: pathvalidate
|
|
61
|
-
Requires-Dist: mcp
|
|
61
|
+
Requires-Dist: mcp; python_version >= "3.10"
|
|
62
62
|
|
|
63
63
|
<p align="center">
|
|
64
64
|
<picture>
|
|
@@ -12,6 +12,7 @@ src/autocoder/auto_coder.py
|
|
|
12
12
|
src/autocoder/auto_coder_rag.py
|
|
13
13
|
src/autocoder/auto_coder_rag_client_mcp.py
|
|
14
14
|
src/autocoder/auto_coder_rag_mcp.py
|
|
15
|
+
src/autocoder/auto_coder_runner.py
|
|
15
16
|
src/autocoder/auto_coder_server.py
|
|
16
17
|
src/autocoder/benchmark.py
|
|
17
18
|
src/autocoder/chat_auto_coder.py
|
|
@@ -148,6 +149,7 @@ src/autocoder/suffixproject/__init__.py
|
|
|
148
149
|
src/autocoder/tsproject/__init__.py
|
|
149
150
|
src/autocoder/utils/__init__.py
|
|
150
151
|
src/autocoder/utils/_markitdown.py
|
|
152
|
+
src/autocoder/utils/auto_project_type.py
|
|
151
153
|
src/autocoder/utils/conversation_store.py
|
|
152
154
|
src/autocoder/utils/llm_client_interceptors.py
|
|
153
155
|
src/autocoder/utils/llms.py
|
|
@@ -13,20 +13,11 @@ import time
|
|
|
13
13
|
import hashlib
|
|
14
14
|
from contextlib import contextmanager
|
|
15
15
|
from typing import List, Dict, Any, Optional
|
|
16
|
-
from prompt_toolkit import PromptSession
|
|
17
|
-
from prompt_toolkit.history import InMemoryHistory
|
|
18
|
-
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
|
|
19
|
-
from prompt_toolkit.styles import Style
|
|
20
|
-
from prompt_toolkit.formatted_text import FormattedText
|
|
21
|
-
from prompt_toolkit.key_binding import KeyBindings
|
|
22
|
-
from prompt_toolkit.completion import WordCompleter, Completer, Completion
|
|
23
|
-
from prompt_toolkit.shortcuts import confirm
|
|
24
16
|
from autocoder.common import AutoCoderArgs
|
|
25
|
-
from pydantic import
|
|
17
|
+
from pydantic import BaseModel
|
|
26
18
|
from autocoder.common.result_manager import ResultManager
|
|
27
19
|
from autocoder.version import __version__
|
|
28
20
|
from autocoder.auto_coder import main as auto_coder_main
|
|
29
|
-
from autocoder.common.command_completer import CommandTextParser
|
|
30
21
|
from autocoder.utils import get_last_yaml_file
|
|
31
22
|
from autocoder.index.symbols_utils import (
|
|
32
23
|
extract_symbols,
|
|
@@ -45,7 +36,6 @@ from byzerllm.utils.nontext import Image
|
|
|
45
36
|
import git
|
|
46
37
|
from autocoder.common import git_utils
|
|
47
38
|
from autocoder.chat_auto_coder_lang import get_message
|
|
48
|
-
from autocoder.utils import operate_config_api
|
|
49
39
|
from autocoder.agent.auto_guess_query import AutoGuessQuery
|
|
50
40
|
from autocoder.common.mcp_server import get_mcp_server, McpRequest, McpInstallRequest, McpRemoveRequest, McpListRequest, McpListRunningRequest, McpRefreshRequest
|
|
51
41
|
import byzerllm
|
|
@@ -56,7 +46,7 @@ import shlex
|
|
|
56
46
|
from autocoder.utils.llms import get_single_llm
|
|
57
47
|
import pkg_resources
|
|
58
48
|
from autocoder.common.printer import Printer
|
|
59
|
-
from autocoder.utils.thread_utils import
|
|
49
|
+
from autocoder.utils.thread_utils import run_in_raw_thread
|
|
60
50
|
from autocoder.common.command_completer import CommandCompleter,FileSystemModel as CCFileSystemModel,MemoryConfig as CCMemoryModel
|
|
61
51
|
from autocoder.common.conf_validator import ConfigValidator
|
|
62
52
|
|
|
@@ -65,39 +55,14 @@ class SymbolItem(BaseModel):
|
|
|
65
55
|
symbol_type: SymbolType
|
|
66
56
|
file_name: str
|
|
67
57
|
|
|
58
|
+
class InitializeSystemRequest(BaseModel):
|
|
59
|
+
product_mode: str
|
|
60
|
+
skip_provider_selection: bool
|
|
61
|
+
debug: bool
|
|
62
|
+
quick: bool
|
|
63
|
+
lite: bool
|
|
64
|
+
pro: bool
|
|
68
65
|
|
|
69
|
-
def parse_arguments():
|
|
70
|
-
import argparse
|
|
71
|
-
|
|
72
|
-
parser = argparse.ArgumentParser(description="Chat Auto Coder")
|
|
73
|
-
parser.add_argument("--debug", action="store_true",
|
|
74
|
-
help="Enable debug mode")
|
|
75
|
-
parser.add_argument(
|
|
76
|
-
"--quick",
|
|
77
|
-
action="store_true",
|
|
78
|
-
help="Enter the auto-coder.chat without initializing the system",
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
parser.add_argument(
|
|
82
|
-
"--skip_provider_selection",
|
|
83
|
-
action="store_true",
|
|
84
|
-
help="Skip the provider selection",
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
parser.add_argument(
|
|
88
|
-
"--product_mode",
|
|
89
|
-
type=str,
|
|
90
|
-
default="lite",
|
|
91
|
-
help="The mode of the auto-coder.chat, lite/pro default is lite",
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
parser.add_argument("--lite", action="store_true", help="Lite mode")
|
|
95
|
-
parser.add_argument("--pro", action="store_true", help="Pro mode")
|
|
96
|
-
|
|
97
|
-
return parser.parse_args()
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
ARGS = None
|
|
101
66
|
|
|
102
67
|
if platform.system() == "Windows":
|
|
103
68
|
from colorama import init
|
|
@@ -150,67 +115,17 @@ commands = [
|
|
|
150
115
|
"/exclude_dirs",
|
|
151
116
|
]
|
|
152
117
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
)
|
|
165
|
-
print(
|
|
166
|
-
f" \033[94m/remove_files\033[0m \033[93m<file1>,<file2> ...\033[0m - \033[92m{get_message('remove_files_desc')}\033[0m"
|
|
167
|
-
)
|
|
168
|
-
print(
|
|
169
|
-
f" \033[94m/chat\033[0m \033[93m<query>\033[0m - \033[92m{get_message('chat_desc')}\033[0m"
|
|
170
|
-
)
|
|
171
|
-
print(
|
|
172
|
-
f" \033[94m/coding\033[0m \033[93m<query>\033[0m - \033[92m{get_message('coding_desc')}\033[0m"
|
|
173
|
-
)
|
|
174
|
-
print(
|
|
175
|
-
f" \033[94m/ask\033[0m \033[93m<query>\033[0m - \033[92m{get_message('ask_desc')}\033[0m"
|
|
176
|
-
)
|
|
177
|
-
print(
|
|
178
|
-
f" \033[94m/summon\033[0m \033[93m<query>\033[0m - \033[92m{get_message('summon_desc')}\033[0m"
|
|
179
|
-
)
|
|
180
|
-
print(
|
|
181
|
-
f" \033[94m/revert\033[0m - \033[92m{get_message('revert_desc')}\033[0m")
|
|
182
|
-
print(
|
|
183
|
-
f" \033[94m/commit\033[0m - \033[92m{get_message('commit_desc')}\033[0m")
|
|
184
|
-
print(
|
|
185
|
-
f" \033[94m/conf\033[0m \033[93m<key>:<value>\033[0m - \033[92m{get_message('conf_desc')}\033[0m"
|
|
186
|
-
)
|
|
187
|
-
print(
|
|
188
|
-
f" \033[94m/index/query\033[0m \033[93m<args>\033[0m - \033[92m{get_message('index_query_desc')}\033[0m"
|
|
189
|
-
)
|
|
190
|
-
print(
|
|
191
|
-
f" \033[94m/index/build\033[0m - \033[92m{get_message('index_build_desc')}\033[0m"
|
|
192
|
-
)
|
|
193
|
-
print(
|
|
194
|
-
f" \033[94m/list_files\033[0m - \033[92m{get_message('list_files_desc')}\033[0m"
|
|
195
|
-
)
|
|
196
|
-
print(
|
|
197
|
-
f" \033[94m/help\033[0m - \033[92m{get_message('help_desc')}\033[0m")
|
|
198
|
-
print(
|
|
199
|
-
f" \033[94m/exclude_dirs\033[0m \033[93m<dir1>,<dir2> ...\033[0m - \033[92m{get_message('exclude_dirs_desc')}\033[0m"
|
|
200
|
-
)
|
|
201
|
-
print(
|
|
202
|
-
f" \033[94m/shell\033[0m \033[93m<command>\033[0m - \033[92m{get_message('shell_desc')}\033[0m"
|
|
203
|
-
)
|
|
204
|
-
print(
|
|
205
|
-
f" \033[94m/voice_input\033[0m - \033[92m{get_message('voice_input_desc')}\033[0m"
|
|
206
|
-
)
|
|
207
|
-
print(
|
|
208
|
-
f" \033[94m/mode\033[0m - \033[92m{get_message('mode_desc')}\033[0m")
|
|
209
|
-
print(f" \033[94m/lib\033[0m - \033[92m{get_message('lib_desc')}\033[0m")
|
|
210
|
-
print(f" \033[94m/models\033[0m - \033[92m{get_message('models_desc')}\033[0m")
|
|
211
|
-
print(
|
|
212
|
-
f" \033[94m/exit\033[0m - \033[92m{get_message('exit_desc')}\033[0m")
|
|
213
|
-
print()
|
|
118
|
+
def load_tokenizer():
|
|
119
|
+
from autocoder.rag.variable_holder import VariableHolder
|
|
120
|
+
from tokenizers import Tokenizer
|
|
121
|
+
try:
|
|
122
|
+
tokenizer_path = pkg_resources.resource_filename(
|
|
123
|
+
"autocoder", "data/tokenizer.json"
|
|
124
|
+
)
|
|
125
|
+
VariableHolder.TOKENIZER_PATH = tokenizer_path
|
|
126
|
+
VariableHolder.TOKENIZER_MODEL = Tokenizer.from_file(tokenizer_path)
|
|
127
|
+
except FileNotFoundError:
|
|
128
|
+
tokenizer_path = None
|
|
214
129
|
|
|
215
130
|
|
|
216
131
|
def configure_project_type():
|
|
@@ -267,7 +182,7 @@ def configure_project_type():
|
|
|
267
182
|
return project_type
|
|
268
183
|
|
|
269
184
|
|
|
270
|
-
def initialize_system(args):
|
|
185
|
+
def initialize_system(args:InitializeSystemRequest):
|
|
271
186
|
from autocoder.utils.model_provider_selector import ModelProviderSelector
|
|
272
187
|
from autocoder import models as models_module
|
|
273
188
|
print(f"\n\033[1;34m{get_message('initializing')}\033[0m")
|
|
@@ -649,7 +564,7 @@ def save_memory():
|
|
|
649
564
|
load_memory()
|
|
650
565
|
|
|
651
566
|
|
|
652
|
-
def load_memory():
|
|
567
|
+
def load_memory():
|
|
653
568
|
global memory
|
|
654
569
|
memory_path = os.path.join(base_persist_dir, "memory.json")
|
|
655
570
|
if os.path.exists(memory_path):
|
|
@@ -657,6 +572,10 @@ def load_memory():
|
|
|
657
572
|
memory = json.load(f)
|
|
658
573
|
completer.update_current_files(memory["current_files"]["files"])
|
|
659
574
|
|
|
575
|
+
def get_memory():
|
|
576
|
+
global memory
|
|
577
|
+
return memory
|
|
578
|
+
|
|
660
579
|
|
|
661
580
|
completer = CommandCompleter(commands,
|
|
662
581
|
file_system_model=CCFileSystemModel(project_root=project_root,
|
|
@@ -1507,7 +1426,7 @@ def coding(query: str):
|
|
|
1507
1426
|
"silence": conf.get("silence", "true") == "true",
|
|
1508
1427
|
"include_project_structure": conf.get("include_project_structure", "true")
|
|
1509
1428
|
== "true",
|
|
1510
|
-
"exclude_files":
|
|
1429
|
+
"exclude_files": memory.get("exclude_files", []),
|
|
1511
1430
|
}
|
|
1512
1431
|
|
|
1513
1432
|
yaml_config["context"] = ""
|
|
@@ -1636,7 +1555,7 @@ def chat(query: str):
|
|
|
1636
1555
|
"skip_build_index": conf.get("skip_build_index", "true") == "true",
|
|
1637
1556
|
"skip_confirm": conf.get("skip_confirm", "true") == "true",
|
|
1638
1557
|
"silence": conf.get("silence", "true") == "true",
|
|
1639
|
-
"exclude_files":
|
|
1558
|
+
"exclude_files": memory.get("exclude_files", []),
|
|
1640
1559
|
}
|
|
1641
1560
|
|
|
1642
1561
|
current_files = memory["current_files"]["files"] + get_llm_friendly_package_docs(
|
|
@@ -2714,351 +2633,3 @@ def auto_command(params,query: str):
|
|
|
2714
2633
|
border_style="blue",
|
|
2715
2634
|
padding=(1, 2)
|
|
2716
2635
|
))
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
def main():
|
|
2720
|
-
from autocoder.rag.variable_holder import VariableHolder
|
|
2721
|
-
from tokenizers import Tokenizer
|
|
2722
|
-
try:
|
|
2723
|
-
tokenizer_path = pkg_resources.resource_filename(
|
|
2724
|
-
"autocoder", "data/tokenizer.json"
|
|
2725
|
-
)
|
|
2726
|
-
VariableHolder.TOKENIZER_PATH = tokenizer_path
|
|
2727
|
-
VariableHolder.TOKENIZER_MODEL = Tokenizer.from_file(tokenizer_path)
|
|
2728
|
-
except FileNotFoundError:
|
|
2729
|
-
tokenizer_path = None
|
|
2730
|
-
|
|
2731
|
-
ARGS = parse_arguments()
|
|
2732
|
-
|
|
2733
|
-
if ARGS.lite:
|
|
2734
|
-
ARGS.product_mode = "lite"
|
|
2735
|
-
|
|
2736
|
-
if ARGS.pro:
|
|
2737
|
-
ARGS.product_mode = "pro"
|
|
2738
|
-
|
|
2739
|
-
if not ARGS.quick:
|
|
2740
|
-
initialize_system(ARGS)
|
|
2741
|
-
|
|
2742
|
-
load_memory()
|
|
2743
|
-
|
|
2744
|
-
configure(f"product_mode:{ARGS.product_mode}")
|
|
2745
|
-
|
|
2746
|
-
MODES = {
|
|
2747
|
-
"normal": "normal",
|
|
2748
|
-
"auto_detect": "nature language auto detect",
|
|
2749
|
-
"voice_input": "voice input",
|
|
2750
|
-
}
|
|
2751
|
-
|
|
2752
|
-
kb = KeyBindings()
|
|
2753
|
-
|
|
2754
|
-
@kb.add("c-c")
|
|
2755
|
-
def _(event):
|
|
2756
|
-
event.app.exit()
|
|
2757
|
-
|
|
2758
|
-
@kb.add("tab")
|
|
2759
|
-
def _(event):
|
|
2760
|
-
b = event.current_buffer
|
|
2761
|
-
if b.complete_state:
|
|
2762
|
-
b.complete_next()
|
|
2763
|
-
else:
|
|
2764
|
-
b.start_completion(select_first=False)
|
|
2765
|
-
|
|
2766
|
-
@kb.add("c-g")
|
|
2767
|
-
def _(event):
|
|
2768
|
-
transcription = voice_input()
|
|
2769
|
-
if transcription:
|
|
2770
|
-
event.app.current_buffer.insert_text(transcription)
|
|
2771
|
-
|
|
2772
|
-
@kb.add("c-k")
|
|
2773
|
-
def _(event):
|
|
2774
|
-
if "mode" not in memory:
|
|
2775
|
-
memory["mode"] = "auto_detect"
|
|
2776
|
-
|
|
2777
|
-
current_mode = memory["mode"]
|
|
2778
|
-
if current_mode == "normal":
|
|
2779
|
-
memory["mode"] = "auto_detect"
|
|
2780
|
-
elif current_mode == "auto_detect":
|
|
2781
|
-
memory["mode"] = "voice_input"
|
|
2782
|
-
else: # voice_input
|
|
2783
|
-
memory["mode"] = "normal"
|
|
2784
|
-
|
|
2785
|
-
event.app.invalidate()
|
|
2786
|
-
|
|
2787
|
-
@kb.add("c-n")
|
|
2788
|
-
def _(event):
|
|
2789
|
-
if "human_as_model" not in memory["conf"]:
|
|
2790
|
-
memory["conf"]["human_as_model"] = "false"
|
|
2791
|
-
|
|
2792
|
-
current_status = memory["conf"]["human_as_model"]
|
|
2793
|
-
new_status = "true" if current_status == "false" else "false"
|
|
2794
|
-
configure(f"human_as_model:{new_status}", skip_print=True)
|
|
2795
|
-
event.app.invalidate()
|
|
2796
|
-
|
|
2797
|
-
def get_bottom_toolbar():
|
|
2798
|
-
if "mode" not in memory:
|
|
2799
|
-
memory["mode"] = "auto_detect"
|
|
2800
|
-
mode = memory["mode"]
|
|
2801
|
-
human_as_model = memory["conf"].get("human_as_model", "false")
|
|
2802
|
-
if mode not in MODES:
|
|
2803
|
-
mode = "auto_detect"
|
|
2804
|
-
pwd = os.getcwd()
|
|
2805
|
-
pwd_parts = pwd.split(os.sep)
|
|
2806
|
-
if len(pwd_parts) > 3:
|
|
2807
|
-
pwd = os.sep.join(pwd_parts[-3:])
|
|
2808
|
-
return f"Current Dir: {pwd} \nMode: {MODES[mode]} | Human as Model: {human_as_model} "
|
|
2809
|
-
|
|
2810
|
-
session = PromptSession(
|
|
2811
|
-
history=InMemoryHistory(),
|
|
2812
|
-
auto_suggest=AutoSuggestFromHistory(),
|
|
2813
|
-
enable_history_search=False,
|
|
2814
|
-
completer=completer,
|
|
2815
|
-
complete_while_typing=True,
|
|
2816
|
-
key_bindings=kb,
|
|
2817
|
-
bottom_toolbar=get_bottom_toolbar,
|
|
2818
|
-
)
|
|
2819
|
-
print(
|
|
2820
|
-
f"""
|
|
2821
|
-
\033[1;32m ____ _ _ _ _ ____ _
|
|
2822
|
-
/ ___| |__ __ _| |_ / \ _ _| |_ ___ / ___|___ __| | ___ _ __
|
|
2823
|
-
| | | '_ \ / _` | __|____ / _ \| | | | __/ _ \ _____| | / _ \ / _` |/ _ \ '__|
|
|
2824
|
-
| |___| | | | (_| | ||_____/ ___ \ |_| | || (_) |_____| |__| (_) | (_| | __/ |
|
|
2825
|
-
\____|_| |_|\__,_|\__| /_/ \_\__,_|\__\___/ \____\___/ \__,_|\___|_|
|
|
2826
|
-
v{__version__}
|
|
2827
|
-
\033[0m"""
|
|
2828
|
-
)
|
|
2829
|
-
print("\033[1;34mType /help to see available commands.\033[0m\n")
|
|
2830
|
-
show_help()
|
|
2831
|
-
|
|
2832
|
-
style = Style.from_dict(
|
|
2833
|
-
{
|
|
2834
|
-
"username": "#884444",
|
|
2835
|
-
"at": "#00aa00",
|
|
2836
|
-
"colon": "#0000aa",
|
|
2837
|
-
"pound": "#00aa00",
|
|
2838
|
-
"host": "#00ffff bg:#444400",
|
|
2839
|
-
}
|
|
2840
|
-
)
|
|
2841
|
-
|
|
2842
|
-
new_prompt = ""
|
|
2843
|
-
|
|
2844
|
-
while True:
|
|
2845
|
-
try:
|
|
2846
|
-
prompt_message = [
|
|
2847
|
-
("class:username", "coding"),
|
|
2848
|
-
("class:at", "@"),
|
|
2849
|
-
("class:host", "auto-coder.chat"),
|
|
2850
|
-
("class:colon", ":"),
|
|
2851
|
-
("class:path", "~"),
|
|
2852
|
-
("class:dollar", "$ "),
|
|
2853
|
-
]
|
|
2854
|
-
|
|
2855
|
-
if new_prompt:
|
|
2856
|
-
user_input = session.prompt(
|
|
2857
|
-
FormattedText(prompt_message), default=new_prompt, style=style
|
|
2858
|
-
)
|
|
2859
|
-
else:
|
|
2860
|
-
user_input = session.prompt(
|
|
2861
|
-
FormattedText(prompt_message), style=style)
|
|
2862
|
-
new_prompt = ""
|
|
2863
|
-
|
|
2864
|
-
if "mode" not in memory:
|
|
2865
|
-
memory["mode"] = "auto_detect"
|
|
2866
|
-
|
|
2867
|
-
# 处理 user_input 的空格
|
|
2868
|
-
if user_input:
|
|
2869
|
-
temp_user_input = user_input.lstrip() # 去掉左侧空格
|
|
2870
|
-
if temp_user_input.startswith('/'):
|
|
2871
|
-
user_input = temp_user_input
|
|
2872
|
-
|
|
2873
|
-
if (
|
|
2874
|
-
memory["mode"] == "auto_detect"
|
|
2875
|
-
and user_input
|
|
2876
|
-
and not user_input.startswith("/")
|
|
2877
|
-
):
|
|
2878
|
-
auto_command(ARGS,user_input)
|
|
2879
|
-
|
|
2880
|
-
elif memory["mode"] == "voice_input" and not user_input.startswith("/"):
|
|
2881
|
-
text = voice_input()
|
|
2882
|
-
new_prompt = "/coding " + text
|
|
2883
|
-
|
|
2884
|
-
elif user_input.startswith("/voice_input"):
|
|
2885
|
-
text = voice_input()
|
|
2886
|
-
new_prompt = "/coding " + text
|
|
2887
|
-
|
|
2888
|
-
elif user_input.startswith("/add_files"):
|
|
2889
|
-
args = user_input[len("/add_files"):].strip().split()
|
|
2890
|
-
add_files(args)
|
|
2891
|
-
elif user_input.startswith("/remove_files"):
|
|
2892
|
-
file_names = user_input[len(
|
|
2893
|
-
"/remove_files"):].strip().split(",")
|
|
2894
|
-
remove_files(file_names)
|
|
2895
|
-
elif user_input.startswith("/index/query"):
|
|
2896
|
-
query = user_input[len("/index/query"):].strip()
|
|
2897
|
-
index_query(query)
|
|
2898
|
-
|
|
2899
|
-
elif user_input.startswith("/index/build"):
|
|
2900
|
-
index_build()
|
|
2901
|
-
|
|
2902
|
-
elif user_input.startswith("/index/export"):
|
|
2903
|
-
export_path = user_input[len("/index/export"):].strip()
|
|
2904
|
-
index_export(export_path)
|
|
2905
|
-
|
|
2906
|
-
elif user_input.startswith("/index/import"):
|
|
2907
|
-
import_path = user_input[len("/index/import"):].strip()
|
|
2908
|
-
index_import(import_path)
|
|
2909
|
-
|
|
2910
|
-
elif user_input.startswith("/list_files"):
|
|
2911
|
-
list_files()
|
|
2912
|
-
|
|
2913
|
-
elif user_input.startswith("/models"):
|
|
2914
|
-
query = user_input[len("/models"):].strip()
|
|
2915
|
-
if not query:
|
|
2916
|
-
print("Please enter your query.")
|
|
2917
|
-
else:
|
|
2918
|
-
manage_models(query)
|
|
2919
|
-
|
|
2920
|
-
elif user_input.startswith("/mode"):
|
|
2921
|
-
conf = user_input[len("/mode"):].strip()
|
|
2922
|
-
if not conf:
|
|
2923
|
-
print(memory["mode"])
|
|
2924
|
-
else:
|
|
2925
|
-
memory["mode"] = conf
|
|
2926
|
-
|
|
2927
|
-
elif user_input.startswith("/conf/export"):
|
|
2928
|
-
from autocoder.common.conf_import_export import export_conf
|
|
2929
|
-
export_path = user_input[len("/conf/export"):].strip()
|
|
2930
|
-
export_conf(os.getcwd(), export_path)
|
|
2931
|
-
|
|
2932
|
-
elif user_input.startswith("/conf/import"):
|
|
2933
|
-
from autocoder.common.conf_import_export import import_conf
|
|
2934
|
-
import_path = user_input[len("/conf/import"):].strip()
|
|
2935
|
-
import_conf(os.getcwd(), import_path)
|
|
2936
|
-
|
|
2937
|
-
elif user_input.startswith("/conf"):
|
|
2938
|
-
conf = user_input[len("/conf"):].strip()
|
|
2939
|
-
if not conf:
|
|
2940
|
-
print_conf(memory["conf"])
|
|
2941
|
-
else:
|
|
2942
|
-
configure(conf)
|
|
2943
|
-
elif user_input.startswith("/revert"):
|
|
2944
|
-
revert()
|
|
2945
|
-
elif user_input.startswith("/commit"):
|
|
2946
|
-
query = user_input[len("/commit"):].strip()
|
|
2947
|
-
commit(query)
|
|
2948
|
-
elif user_input.startswith("/help"):
|
|
2949
|
-
query = user_input[len("/help"):].strip()
|
|
2950
|
-
if not query:
|
|
2951
|
-
show_help()
|
|
2952
|
-
else:
|
|
2953
|
-
help(query)
|
|
2954
|
-
|
|
2955
|
-
elif user_input.startswith("/exclude_dirs"):
|
|
2956
|
-
dir_names = user_input[len(
|
|
2957
|
-
"/exclude_dirs"):].strip().split(",")
|
|
2958
|
-
exclude_dirs(dir_names)
|
|
2959
|
-
|
|
2960
|
-
elif user_input.startswith("/exclude_files"):
|
|
2961
|
-
query = user_input[len("/exclude_files"):].strip()
|
|
2962
|
-
exclude_files(query)
|
|
2963
|
-
|
|
2964
|
-
elif user_input.startswith("/ask"):
|
|
2965
|
-
query = user_input[len("/ask"):].strip()
|
|
2966
|
-
if not query:
|
|
2967
|
-
print("Please enter your question.")
|
|
2968
|
-
else:
|
|
2969
|
-
ask(query)
|
|
2970
|
-
|
|
2971
|
-
elif user_input.startswith("/exit"):
|
|
2972
|
-
raise EOFError()
|
|
2973
|
-
|
|
2974
|
-
elif user_input.startswith("/coding"):
|
|
2975
|
-
query = user_input[len("/coding"):].strip()
|
|
2976
|
-
if not query:
|
|
2977
|
-
print("\033[91mPlease enter your request.\033[0m")
|
|
2978
|
-
continue
|
|
2979
|
-
coding(query)
|
|
2980
|
-
elif user_input.startswith("/chat"):
|
|
2981
|
-
query = user_input[len("/chat"):].strip()
|
|
2982
|
-
if not query:
|
|
2983
|
-
print("\033[91mPlease enter your request.\033[0m")
|
|
2984
|
-
else:
|
|
2985
|
-
chat(query)
|
|
2986
|
-
|
|
2987
|
-
elif user_input.startswith("/design"):
|
|
2988
|
-
query = user_input[len("/design"):].strip()
|
|
2989
|
-
if not query:
|
|
2990
|
-
print("\033[91mPlease enter your design request.\033[0m")
|
|
2991
|
-
else:
|
|
2992
|
-
design(query)
|
|
2993
|
-
|
|
2994
|
-
elif user_input.startswith("/summon"):
|
|
2995
|
-
query = user_input[len("/summon"):].strip()
|
|
2996
|
-
if not query:
|
|
2997
|
-
print("\033[91mPlease enter your request.\033[0m")
|
|
2998
|
-
else:
|
|
2999
|
-
summon(query)
|
|
3000
|
-
|
|
3001
|
-
elif user_input.startswith("/lib"):
|
|
3002
|
-
args = user_input[len("/lib"):].strip().split()
|
|
3003
|
-
lib_command(args)
|
|
3004
|
-
|
|
3005
|
-
elif user_input.startswith("/mcp"):
|
|
3006
|
-
query = user_input[len("/mcp"):].strip()
|
|
3007
|
-
if not query:
|
|
3008
|
-
print("Please enter your query.")
|
|
3009
|
-
else:
|
|
3010
|
-
mcp(query)
|
|
3011
|
-
|
|
3012
|
-
elif user_input.startswith("/auto"):
|
|
3013
|
-
query = user_input[len("/auto"):].strip()
|
|
3014
|
-
auto_command(ARGS,query)
|
|
3015
|
-
elif user_input.startswith("/debug"):
|
|
3016
|
-
code = user_input[len("/debug"):].strip()
|
|
3017
|
-
try:
|
|
3018
|
-
result = eval(code)
|
|
3019
|
-
print(f"Debug result: {result}")
|
|
3020
|
-
except Exception as e:
|
|
3021
|
-
print(f"Debug error: {str(e)}")
|
|
3022
|
-
|
|
3023
|
-
# elif user_input.startswith("/shell"):
|
|
3024
|
-
else:
|
|
3025
|
-
command = user_input
|
|
3026
|
-
if user_input.startswith("/shell"):
|
|
3027
|
-
command = user_input[len("/shell"):].strip()
|
|
3028
|
-
if not command:
|
|
3029
|
-
print("Please enter a shell command to execute.")
|
|
3030
|
-
else:
|
|
3031
|
-
if command.startswith("/chat"):
|
|
3032
|
-
command = command[len("/chat"):].strip()
|
|
3033
|
-
gen_and_exec_shell_command(command)
|
|
3034
|
-
else:
|
|
3035
|
-
execute_shell_command(command)
|
|
3036
|
-
|
|
3037
|
-
except KeyboardInterrupt:
|
|
3038
|
-
continue
|
|
3039
|
-
except EOFError:
|
|
3040
|
-
try:
|
|
3041
|
-
save_memory()
|
|
3042
|
-
try:
|
|
3043
|
-
if get_mcp_server():
|
|
3044
|
-
get_mcp_server().stop()
|
|
3045
|
-
except Exception as e:
|
|
3046
|
-
pass
|
|
3047
|
-
except Exception as e:
|
|
3048
|
-
print(
|
|
3049
|
-
f"\033[91mAn error occurred while saving memory:\033[0m \033[93m{type(e).__name__}\033[0m - {str(e)}"
|
|
3050
|
-
)
|
|
3051
|
-
print("\n\033[93mExiting Chat Auto Coder...\033[0m")
|
|
3052
|
-
break
|
|
3053
|
-
except Exception as e:
|
|
3054
|
-
print(
|
|
3055
|
-
f"\033[91mAn error occurred:\033[0m \033[93m{type(e).__name__}\033[0m - {str(e)}"
|
|
3056
|
-
)
|
|
3057
|
-
if ARGS and ARGS.debug:
|
|
3058
|
-
import traceback
|
|
3059
|
-
|
|
3060
|
-
traceback.print_exc()
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
if __name__ == "__main__":
|
|
3064
|
-
main()
|