auto-coder 0.1.252__tar.gz → 0.1.255__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.252 → auto_coder-0.1.255}/PKG-INFO +1 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/auto_coder.egg-info/PKG-INFO +1 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/auto_coder.egg-info/SOURCES.txt +2 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/auto_coder.py +11 -8
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/chat_auto_coder.py +74 -28
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/chat_auto_coder_lang.py +2 -2
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/__init__.py +1 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/auto_coder_lang.py +9 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_merge.py +1 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_merge_diff.py +1 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_merge_editblock.py +1 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_merge_strict_diff.py +1 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/command_completer.py +5 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/mcp_server.py +3 -4
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +1 -1
- auto_coder-0.1.255/src/autocoder/common/model_speed_test.py +392 -0
- auto_coder-0.1.255/src/autocoder/data/byzerllm.md +1549 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/entry.py +9 -2
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/filter/quick_filter.py +58 -23
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/models.py +1 -4
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/doc_filter.py +3 -2
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/long_context_rag.py +2 -15
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +28 -16
- auto_coder-0.1.255/src/autocoder/version.py +1 -0
- auto_coder-0.1.252/src/autocoder/version.py +0 -1
- {auto_coder-0.1.252 → auto_coder-0.1.255}/LICENSE +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/README.md +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/setup.cfg +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/setup.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/tests/test_planner.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.252 → auto_coder-0.1.255}/tests/test_symbols_utils.py +0 -0
|
@@ -65,6 +65,7 @@ src/autocoder/common/mcp_hub.py
|
|
|
65
65
|
src/autocoder/common/mcp_server.py
|
|
66
66
|
src/autocoder/common/mcp_tools.py
|
|
67
67
|
src/autocoder/common/memory_manager.py
|
|
68
|
+
src/autocoder/common/model_speed_test.py
|
|
68
69
|
src/autocoder/common/printer.py
|
|
69
70
|
src/autocoder/common/recall_validation.py
|
|
70
71
|
src/autocoder/common/screenshots.py
|
|
@@ -77,6 +78,7 @@ src/autocoder/common/types.py
|
|
|
77
78
|
src/autocoder/common/utils_code_auto_generate.py
|
|
78
79
|
src/autocoder/common/mcp_servers/__init__.py
|
|
79
80
|
src/autocoder/common/mcp_servers/mcp_server_perplexity.py
|
|
81
|
+
src/autocoder/data/byzerllm.md
|
|
80
82
|
src/autocoder/data/tokenizer.json
|
|
81
83
|
src/autocoder/db/__init__.py
|
|
82
84
|
src/autocoder/db/store.py
|
|
@@ -256,11 +256,13 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
256
256
|
libs_dir = os.path.join(auto_coder_dir, "storage", "libs")
|
|
257
257
|
code_search_path = None
|
|
258
258
|
if os.path.exists(libs_dir):
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
259
|
+
latest_retrieval_lib_dir = get_latest_byzer_retrieval_lib(libs_dir)
|
|
260
|
+
if latest_retrieval_lib_dir :
|
|
261
|
+
retrieval_libs_dir = os.path.join(
|
|
262
|
+
libs_dir, latest_retrieval_lib_dir
|
|
263
|
+
)
|
|
264
|
+
if os.path.exists(retrieval_libs_dir):
|
|
265
|
+
code_search_path = [retrieval_libs_dir]
|
|
264
266
|
|
|
265
267
|
try:
|
|
266
268
|
init_options = {}
|
|
@@ -1109,8 +1111,7 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
1109
1111
|
return
|
|
1110
1112
|
|
|
1111
1113
|
elif raw_args.agent_command == "chat":
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
+
|
|
1114
1115
|
memory_dir = os.path.join(args.source_dir, ".auto-coder", "memory")
|
|
1115
1116
|
os.makedirs(memory_dir, exist_ok=True)
|
|
1116
1117
|
memory_file = os.path.join(memory_dir, "chat_history.json")
|
|
@@ -1335,6 +1336,7 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
1335
1336
|
start_time = time.time()
|
|
1336
1337
|
|
|
1337
1338
|
if "rag" in args.action:
|
|
1339
|
+
from autocoder.rag.rag_entry import RAGFactory
|
|
1338
1340
|
args.enable_rag_search = True
|
|
1339
1341
|
args.enable_rag_context = False
|
|
1340
1342
|
rag = RAGFactory.get_rag(llm=chat_llm, args=args, path="")
|
|
@@ -1348,7 +1350,8 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
1348
1350
|
response = mcp_server.send_request(
|
|
1349
1351
|
McpRequest(
|
|
1350
1352
|
query=args.query,
|
|
1351
|
-
model=args.inference_model or args.model
|
|
1353
|
+
model=args.inference_model or args.model,
|
|
1354
|
+
product_mode=args.product_mode
|
|
1352
1355
|
)
|
|
1353
1356
|
)
|
|
1354
1357
|
v = [[response.result,None]]
|
|
@@ -49,7 +49,7 @@ from autocoder.common.mcp_server import get_mcp_server, McpRequest, McpInstallRe
|
|
|
49
49
|
import byzerllm
|
|
50
50
|
from byzerllm.utils import format_str_jinja2
|
|
51
51
|
from autocoder.common.memory_manager import get_global_memory_file_paths
|
|
52
|
-
from autocoder import models
|
|
52
|
+
from autocoder import models as models_module
|
|
53
53
|
import shlex
|
|
54
54
|
from autocoder.utils.llms import get_single_llm
|
|
55
55
|
import pkg_resources
|
|
@@ -1539,11 +1539,12 @@ def mcp(query: str):
|
|
|
1539
1539
|
if os.path.exists(temp_yaml):
|
|
1540
1540
|
os.remove(temp_yaml)
|
|
1541
1541
|
|
|
1542
|
-
mcp_server = get_mcp_server()
|
|
1542
|
+
mcp_server = get_mcp_server()
|
|
1543
1543
|
response = mcp_server.send_request(
|
|
1544
1544
|
McpRequest(
|
|
1545
1545
|
query=query,
|
|
1546
|
-
model=args.inference_model or args.model
|
|
1546
|
+
model=args.inference_model or args.model,
|
|
1547
|
+
product_mode=args.product_mode
|
|
1547
1548
|
)
|
|
1548
1549
|
)
|
|
1549
1550
|
|
|
@@ -1564,19 +1565,19 @@ def mcp(query: str):
|
|
|
1564
1565
|
file_path = os.path.join(mcp_dir, f"{timestamp}.md")
|
|
1565
1566
|
|
|
1566
1567
|
# Format response as markdown
|
|
1567
|
-
markdown_content =
|
|
1568
|
+
markdown_content = response.result
|
|
1568
1569
|
|
|
1569
1570
|
# Save to file
|
|
1570
1571
|
with open(file_path, "w", encoding="utf-8") as f:
|
|
1571
1572
|
f.write(markdown_content)
|
|
1572
1573
|
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1574
|
+
console = Console()
|
|
1575
|
+
console.print(
|
|
1576
|
+
Panel(
|
|
1577
|
+
Markdown(markdown_content, justify="left"),
|
|
1578
|
+
title=printer.get_message_from_key('mcp_response_title'),
|
|
1579
|
+
border_style="green"
|
|
1580
|
+
)
|
|
1580
1581
|
)
|
|
1581
1582
|
|
|
1582
1583
|
|
|
@@ -1741,7 +1742,7 @@ def commit(query: str):
|
|
|
1741
1742
|
md5 = hashlib.md5(file_content.encode("utf-8")).hexdigest()
|
|
1742
1743
|
file_name = os.path.basename(execute_file)
|
|
1743
1744
|
commit_result = git_utils.commit_changes(
|
|
1744
|
-
".", f"auto_coder_{file_name}_{md5}"
|
|
1745
|
+
".", f"auto_coder_{file_name}_{md5}\n{commit_message}"
|
|
1745
1746
|
)
|
|
1746
1747
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
1747
1748
|
if commit_message:
|
|
@@ -2173,7 +2174,7 @@ def manage_models(params, query: str):
|
|
|
2173
2174
|
printer.print_in_terminal("models_lite_only", style="red")
|
|
2174
2175
|
return
|
|
2175
2176
|
|
|
2176
|
-
models_data =
|
|
2177
|
+
models_data = models_module.load_models()
|
|
2177
2178
|
subcmd = ""
|
|
2178
2179
|
if "/list" in query:
|
|
2179
2180
|
subcmd = "/list"
|
|
@@ -2196,24 +2197,49 @@ def manage_models(params, query: str):
|
|
|
2196
2197
|
subcmd = "/remove"
|
|
2197
2198
|
query = query.replace("/remove", "", 1).strip()
|
|
2198
2199
|
|
|
2200
|
+
if "/speed-test" in query:
|
|
2201
|
+
subcmd = "/speed-test"
|
|
2202
|
+
query = query.replace("/speed-test", "", 1).strip()
|
|
2203
|
+
|
|
2204
|
+
if "/speed_test" in query:
|
|
2205
|
+
subcmd = "/speed-test"
|
|
2206
|
+
query = query.replace("/speed_test", "", 1).strip()
|
|
2207
|
+
|
|
2208
|
+
if "input_price" in query:
|
|
2209
|
+
subcmd = "/input_price"
|
|
2210
|
+
query = query.replace("/input_price", "", 1).strip()
|
|
2211
|
+
|
|
2212
|
+
if "output_price" in query:
|
|
2213
|
+
subcmd = "/output_price"
|
|
2214
|
+
query = query.replace("/output_price", "", 1).strip()
|
|
2215
|
+
|
|
2216
|
+
if "/speed" in query:
|
|
2217
|
+
subcmd = "/speed"
|
|
2218
|
+
query = query.replace("/speed", "", 1).strip()
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2199
2222
|
if not subcmd:
|
|
2200
|
-
printer.print_in_terminal("models_usage")
|
|
2201
|
-
return
|
|
2223
|
+
printer.print_in_terminal("models_usage")
|
|
2202
2224
|
|
|
2203
2225
|
if subcmd == "/list":
|
|
2204
2226
|
if models_data:
|
|
2227
|
+
# Sort models by speed (average_speed)
|
|
2228
|
+
sorted_models = sorted(models_data, key=lambda x: float(x.get('average_speed', 0)))
|
|
2229
|
+
sorted_models.reverse()
|
|
2230
|
+
|
|
2205
2231
|
table = Table(
|
|
2206
2232
|
title=printer.get_message_from_key("models_title"),
|
|
2207
2233
|
expand=True,
|
|
2208
2234
|
show_lines=True
|
|
2209
2235
|
)
|
|
2210
|
-
table.add_column("Name", style="cyan", width=
|
|
2211
|
-
table.add_column("Model Name", style="magenta", width=30, overflow="fold")
|
|
2212
|
-
table.add_column("Base URL", style="white", width=
|
|
2213
|
-
table.add_column("Input Price (M)", style="magenta", width=15)
|
|
2214
|
-
table.add_column("Output Price (M)", style="magenta", width=15)
|
|
2215
|
-
table.add_column("Speed (s/req)", style="blue", width=15)
|
|
2216
|
-
for m in
|
|
2236
|
+
table.add_column("Name", style="cyan", width=30, overflow="fold", no_wrap=False)
|
|
2237
|
+
table.add_column("Model Name", style="magenta", width=30, overflow="fold", no_wrap=False)
|
|
2238
|
+
table.add_column("Base URL", style="white", width=40, overflow="fold", no_wrap=False)
|
|
2239
|
+
table.add_column("Input Price (M)", style="magenta", width=15, overflow="fold", no_wrap=False)
|
|
2240
|
+
table.add_column("Output Price (M)", style="magenta", width=15, overflow="fold", no_wrap=False)
|
|
2241
|
+
table.add_column("Speed (s/req)", style="blue", width=15, overflow="fold", no_wrap=False)
|
|
2242
|
+
for m in sorted_models:
|
|
2217
2243
|
# Check if api_key_path exists and file exists
|
|
2218
2244
|
is_api_key_set = "api_key" in m
|
|
2219
2245
|
name = m.get("name", "")
|
|
@@ -2241,7 +2267,7 @@ def manage_models(params, query: str):
|
|
|
2241
2267
|
name = args[0]
|
|
2242
2268
|
try:
|
|
2243
2269
|
price = float(args[1])
|
|
2244
|
-
if
|
|
2270
|
+
if models_module.update_model_input_price(name, price):
|
|
2245
2271
|
printer.print_in_terminal("models_input_price_updated", style="green", name=name, price=price)
|
|
2246
2272
|
else:
|
|
2247
2273
|
printer.print_in_terminal("models_not_found", style="red", name=name)
|
|
@@ -2256,7 +2282,7 @@ def manage_models(params, query: str):
|
|
|
2256
2282
|
name = args[0]
|
|
2257
2283
|
try:
|
|
2258
2284
|
price = float(args[1])
|
|
2259
|
-
if
|
|
2285
|
+
if models_module.update_model_output_price(name, price):
|
|
2260
2286
|
printer.print_in_terminal("models_output_price_updated", style="green", name=name, price=price)
|
|
2261
2287
|
else:
|
|
2262
2288
|
printer.print_in_terminal("models_not_found", style="red", name=name)
|
|
@@ -2271,7 +2297,7 @@ def manage_models(params, query: str):
|
|
|
2271
2297
|
name = args[0]
|
|
2272
2298
|
try:
|
|
2273
2299
|
speed = float(args[1])
|
|
2274
|
-
if
|
|
2300
|
+
if models_module.update_model_speed(name, speed):
|
|
2275
2301
|
printer.print_in_terminal("models_speed_updated", style="green", name=name, speed=speed)
|
|
2276
2302
|
else:
|
|
2277
2303
|
printer.print_in_terminal("models_not_found", style="red", name=name)
|
|
@@ -2280,13 +2306,33 @@ def manage_models(params, query: str):
|
|
|
2280
2306
|
else:
|
|
2281
2307
|
printer.print_in_terminal("models_speed_usage", style="red")
|
|
2282
2308
|
|
|
2309
|
+
elif subcmd == "/speed-test":
|
|
2310
|
+
from autocoder.common.model_speed_test import render_speed_test_in_terminal
|
|
2311
|
+
test_rounds = 1 # 默认测试轮数
|
|
2312
|
+
|
|
2313
|
+
enable_long_context = False
|
|
2314
|
+
if "/long_context" in query:
|
|
2315
|
+
enable_long_context = True
|
|
2316
|
+
query = query.replace("/long_context", "", 1).strip()
|
|
2317
|
+
|
|
2318
|
+
if "/long-context" in query:
|
|
2319
|
+
enable_long_context = True
|
|
2320
|
+
query = query.replace("/long-context", "", 1).strip()
|
|
2321
|
+
|
|
2322
|
+
# 解析可选的测试轮数参数
|
|
2323
|
+
args = query.strip().split()
|
|
2324
|
+
if args and args[0].isdigit():
|
|
2325
|
+
test_rounds = int(args[0])
|
|
2326
|
+
|
|
2327
|
+
render_speed_test_in_terminal(params.product_mode, test_rounds,enable_long_context=enable_long_context)
|
|
2328
|
+
|
|
2283
2329
|
elif subcmd == "/add":
|
|
2284
2330
|
# Support both simplified and legacy formats
|
|
2285
2331
|
args = query.strip().split(" ")
|
|
2286
2332
|
if len(args) == 2:
|
|
2287
2333
|
# Simplified: /models /add <name> <api_key>
|
|
2288
2334
|
name, api_key = args[0], args[1]
|
|
2289
|
-
result =
|
|
2335
|
+
result = models_module.update_model_with_api_key(name, api_key)
|
|
2290
2336
|
if result:
|
|
2291
2337
|
printer.print_in_terminal("models_added", style="green", name=name)
|
|
2292
2338
|
else:
|
|
@@ -2328,7 +2374,7 @@ def manage_models(params, query: str):
|
|
|
2328
2374
|
}
|
|
2329
2375
|
|
|
2330
2376
|
models_data.append(final_model)
|
|
2331
|
-
|
|
2377
|
+
models_module.save_models(models_data)
|
|
2332
2378
|
printer.print_in_terminal("models_add_model_success", style="green", name=data_dict["name"])
|
|
2333
2379
|
|
|
2334
2380
|
elif subcmd == "/remove":
|
|
@@ -2341,7 +2387,7 @@ def manage_models(params, query: str):
|
|
|
2341
2387
|
if len(filtered_models) == len(models_data):
|
|
2342
2388
|
printer.print_in_terminal("models_add_model_remove", style="yellow", name=name)
|
|
2343
2389
|
return
|
|
2344
|
-
|
|
2390
|
+
models_module.save_models(filtered_models)
|
|
2345
2391
|
printer.print_in_terminal("models_add_model_removed", style="green", name=name)
|
|
2346
2392
|
|
|
2347
2393
|
else:
|
|
@@ -85,7 +85,7 @@ MESSAGES = {
|
|
|
85
85
|
"design_desc": "Generate SVG image based on the provided description",
|
|
86
86
|
"commit_desc": "Auto generate yaml file and commit changes based on user's manual changes",
|
|
87
87
|
"models_desc": "Manage model configurations, only available in lite mode",
|
|
88
|
-
"models_usage": "Usage: /models /list
|
|
88
|
+
"models_usage": "Usage: /models <command>\nAvailable subcommands:\n /list - List all models\n /add <name> <api_key> - Add a built-in model\n /add_model - Add a custom model\n /remove <name> - Remove a model\n /input_price <name> <value> - Set model input price\n /output_price <name> <value> - Set model output price\n /speed <name> <value> - Set model speed\n /speed-test - Test models speed\n /speed-test-long - Test models speed with long context",
|
|
89
89
|
"models_added": "Added/Updated model '{{name}}' successfully.",
|
|
90
90
|
"models_add_failed": "Failed to add model '{{name}}'. Model not found in defaults.",
|
|
91
91
|
"models_add_usage": "Usage: /models /add <name> <api_key> or\n/models /add <name> <model_type> <model_name> <base_url> <api_key_path> [description]",
|
|
@@ -213,7 +213,7 @@ MESSAGES = {
|
|
|
213
213
|
"conf_value": "值",
|
|
214
214
|
"conf_title": "配置设置",
|
|
215
215
|
"conf_subtitle": "使用 /conf <key>:<value> 修改这些设置",
|
|
216
|
-
"models_usage": "用法: /models /list
|
|
216
|
+
"models_usage": "用法: /models <命令>\n可用的子命令:\n /list - 列出所有模型\n /add <名称> <API密钥> - 添加内置模型\n /add_model - 添加自定义模型\n /remove <名称> - 移除模型\n /input_price <名称> <价格> - 设置模型输入价格\n /output_price <名称> <价格> - 设置模型输出价格\n /speed <名称> <速度> - 设置模型速度\n /speed-test - 测试模型速度\n /speed-test-long - 使用长文本上下文测试模型速度",
|
|
217
217
|
"models_added": "成功添加/更新模型 '{{name}}'。",
|
|
218
218
|
"models_add_failed": "添加模型 '{{name}}' 失败。在默认模型中未找到该模型。",
|
|
219
219
|
"models_add_usage": "用法: /models /add <name> <api_key> 或\n/models /add <name> <model_type> <model_name> <base_url> <api_key_path> [description]",
|
|
@@ -3,6 +3,11 @@ from byzerllm.utils import format_str_jinja2
|
|
|
3
3
|
|
|
4
4
|
MESSAGES = {
|
|
5
5
|
"en": {
|
|
6
|
+
"models_no_active": "No active models found",
|
|
7
|
+
"models_speed_test_results": "Model Speed Test Results",
|
|
8
|
+
"models_testing": "Testing model: {{name}}...",
|
|
9
|
+
"models_testing_start": "Starting speed test for all active models...",
|
|
10
|
+
"models_testing_progress": "Testing progress: {{ completed }}/{{ total }} models",
|
|
6
11
|
"generation_cancelled": "[Interrupted] Generation cancelled",
|
|
7
12
|
"model_not_found": "Model {{model_name}} not found",
|
|
8
13
|
"generating_shell_script": "Generating Shell Script",
|
|
@@ -92,6 +97,10 @@ MESSAGES = {
|
|
|
92
97
|
"estimated_input_tokens_in_generate": "Estimated input tokens in generate ({{ generate_mode }}): {{ estimated_input_tokens }}",
|
|
93
98
|
},
|
|
94
99
|
"zh": {
|
|
100
|
+
"models_no_active": "未找到激活的模型",
|
|
101
|
+
"models_speed_test_results": "模型速度测试结果",
|
|
102
|
+
"models_testing": "正在测试模型: {{name}}...",
|
|
103
|
+
"models_testing_start": "开始对所有激活的模型进行速度测试...",
|
|
95
104
|
"generation_cancelled": "[已中断] 生成已取消",
|
|
96
105
|
"model_not_found": "未找到模型: {{model_name}}",
|
|
97
106
|
"generating_shell_script": "正在生成 Shell 脚本",
|
|
@@ -177,5 +177,5 @@ class CodeAutoMerge:
|
|
|
177
177
|
|
|
178
178
|
self.printer.print_in_terminal("files_merged", total=total)
|
|
179
179
|
if not force_skip_git:
|
|
180
|
-
commit_result = git_utils.commit_changes(self.args.source_dir, f"auto_coder_{file_name}_{md5}")
|
|
180
|
+
commit_result = git_utils.commit_changes(self.args.source_dir, f"auto_coder_{file_name}_{md5}\n{self.args.query}")
|
|
181
181
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
@@ -523,5 +523,5 @@ class CodeAutoMergeDiff:
|
|
|
523
523
|
|
|
524
524
|
self.printer.print_in_terminal("files_merged_total", total=total)
|
|
525
525
|
if not force_skip_git:
|
|
526
|
-
commit_result = git_utils.commit_changes(self.args.source_dir, f"auto_coder_{file_name}_{md5}")
|
|
526
|
+
commit_result = git_utils.commit_changes(self.args.source_dir, f"auto_coder_{file_name}_{md5}\n{self.args.query}")
|
|
527
527
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
@@ -403,7 +403,7 @@ class CodeAutoMergeEditBlock:
|
|
|
403
403
|
if not force_skip_git:
|
|
404
404
|
try:
|
|
405
405
|
commit_result = git_utils.commit_changes(
|
|
406
|
-
self.args.source_dir, f"auto_coder_{file_name}_{md5}"
|
|
406
|
+
self.args.source_dir, f"auto_coder_{file_name}_{md5}\n{self.args.query}"
|
|
407
407
|
)
|
|
408
408
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
409
409
|
except Exception as e:
|
{auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/code_auto_merge_strict_diff.py
RENAMED
|
@@ -233,7 +233,7 @@ class CodeAutoMergeStrictDiff:
|
|
|
233
233
|
|
|
234
234
|
self.printer.print_in_terminal("files_merged_total", total=total)
|
|
235
235
|
if not force_skip_git:
|
|
236
|
-
commit_result = git_utils.commit_changes(self.args.source_dir, f"auto_coder_{file_name}_{md5}")
|
|
236
|
+
commit_result = git_utils.commit_changes(self.args.source_dir, f"auto_coder_{file_name}_{md5}\n{self.args.query}")
|
|
237
237
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
238
238
|
|
|
239
239
|
@byzerllm.prompt(render="jinja2")
|
|
@@ -3,7 +3,6 @@ from asyncio import Queue as AsyncQueue
|
|
|
3
3
|
import threading
|
|
4
4
|
from typing import List, Dict, Any, Optional
|
|
5
5
|
from dataclasses import dataclass
|
|
6
|
-
import byzerllm
|
|
7
6
|
from autocoder.common.mcp_hub import McpHub
|
|
8
7
|
from autocoder.common.mcp_tools import McpExecutor
|
|
9
8
|
from autocoder.common.mcp_hub import MCP_BUILD_IN_SERVERS
|
|
@@ -13,12 +12,13 @@ import time
|
|
|
13
12
|
from pydantic import BaseModel
|
|
14
13
|
import sys
|
|
15
14
|
from loguru import logger
|
|
15
|
+
from autocoder.utils.llms import get_single_llm
|
|
16
16
|
|
|
17
17
|
@dataclass
|
|
18
18
|
class McpRequest:
|
|
19
19
|
query: str
|
|
20
20
|
model: Optional[str] = None
|
|
21
|
-
|
|
21
|
+
product_mode: Optional[str] = None
|
|
22
22
|
|
|
23
23
|
@dataclass
|
|
24
24
|
class McpInstallRequest:
|
|
@@ -279,8 +279,7 @@ class McpServer:
|
|
|
279
279
|
await self._response_queue.put(McpResponse(result="", error=f"Failed to refresh MCP servers: {str(e)}"))
|
|
280
280
|
|
|
281
281
|
else:
|
|
282
|
-
llm =
|
|
283
|
-
model=request.model)
|
|
282
|
+
llm = get_single_llm(request.model,product_mode=request.product_mode)
|
|
284
283
|
mcp_executor = McpExecutor(hub, llm)
|
|
285
284
|
conversations = [
|
|
286
285
|
{"role": "user", "content": request.query}]
|
{auto_coder-0.1.252 → auto_coder-0.1.255}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py
RENAMED
|
@@ -55,7 +55,7 @@ async def handle_list_tools() -> list[types.Tool]:
|
|
|
55
55
|
# Commenting out larger models,which have higher risks of timing out,
|
|
56
56
|
# until Claude Desktop can handle long-running tasks effectively.
|
|
57
57
|
# "llama-3.1-sonar-large-128k-online",
|
|
58
|
-
"
|
|
58
|
+
"sonar-reasoning-pro",
|
|
59
59
|
],
|
|
60
60
|
},
|
|
61
61
|
"messages": {
|