auto-coder 0.1.277__tar.gz → 0.1.279__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.277 → auto_coder-0.1.279}/PKG-INFO +2 -2
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/auto_coder.egg-info/PKG-INFO +2 -2
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/auto_coder.egg-info/requires.txt +1 -1
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/commands/auto_command.py +4 -1
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/shells.py +78 -61
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/api_server.py +1 -3
- auto_coder-0.1.279/src/autocoder/rag/llm_wrapper.py +91 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/long_context_rag.py +172 -131
- auto_coder-0.1.279/src/autocoder/version.py +1 -0
- auto_coder-0.1.277/src/autocoder/rag/llm_wrapper.py +0 -61
- auto_coder-0.1.277/src/autocoder/version.py +0 -1
- {auto_coder-0.1.277 → auto_coder-0.1.279}/LICENSE +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/README.md +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/setup.cfg +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/setup.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/auto_coder.egg-info/SOURCES.txt +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/tests/test_planner.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.277 → auto_coder-0.1.279}/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.279
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
@@ -26,7 +26,7 @@ Requires-Dist: tabulate
|
|
|
26
26
|
Requires-Dist: jupyter_client
|
|
27
27
|
Requires-Dist: prompt-toolkit
|
|
28
28
|
Requires-Dist: tokenizers
|
|
29
|
-
Requires-Dist: byzerllm[saas]>=0.1.
|
|
29
|
+
Requires-Dist: byzerllm[saas]>=0.1.170
|
|
30
30
|
Requires-Dist: patch
|
|
31
31
|
Requires-Dist: diff_match_patch
|
|
32
32
|
Requires-Dist: GitPython
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: auto-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.279
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
@@ -26,7 +26,7 @@ Requires-Dist: tabulate
|
|
|
26
26
|
Requires-Dist: jupyter_client
|
|
27
27
|
Requires-Dist: prompt-toolkit
|
|
28
28
|
Requires-Dist: tokenizers
|
|
29
|
-
Requires-Dist: byzerllm[saas]>=0.1.
|
|
29
|
+
Requires-Dist: byzerllm[saas]>=0.1.170
|
|
30
30
|
Requires-Dist: patch
|
|
31
31
|
Requires-Dist: diff_match_patch
|
|
32
32
|
Requires-Dist: GitPython
|
|
@@ -23,6 +23,7 @@ from autocoder.rag.token_counter import count_tokens
|
|
|
23
23
|
from autocoder.common.global_cancel import global_cancel
|
|
24
24
|
from autocoder.common.auto_configure import config_readme
|
|
25
25
|
from autocoder.utils.auto_project_type import ProjectTypeAnalyzer
|
|
26
|
+
from rich.text import Text
|
|
26
27
|
|
|
27
28
|
class CommandMessage(BaseModel):
|
|
28
29
|
role: str
|
|
@@ -435,8 +436,10 @@ class CommandAutoTuner:
|
|
|
435
436
|
"command_execution_result",
|
|
436
437
|
action=action
|
|
437
438
|
)
|
|
439
|
+
# 转义内容,避免Rich将内容中的[]解释为markup语法
|
|
440
|
+
text_content = Text(truncated_content)
|
|
438
441
|
console.print(Panel(
|
|
439
|
-
|
|
442
|
+
text_content,
|
|
440
443
|
title=title,
|
|
441
444
|
border_style="blue",
|
|
442
445
|
padding=(1, 2)
|
|
@@ -11,6 +11,9 @@ from rich.panel import Panel
|
|
|
11
11
|
from rich.text import Text
|
|
12
12
|
from rich.live import Live
|
|
13
13
|
import getpass
|
|
14
|
+
from rich.markup import escape
|
|
15
|
+
import threading
|
|
16
|
+
import queue
|
|
14
17
|
|
|
15
18
|
from autocoder.common.result_manager import ResultManager
|
|
16
19
|
|
|
@@ -356,7 +359,7 @@ def _win_code_page_to_encoding(code_page: str) -> str:
|
|
|
356
359
|
|
|
357
360
|
def execute_shell_command(command: str):
|
|
358
361
|
"""
|
|
359
|
-
Execute a shell command with cross-platform encoding support.
|
|
362
|
+
Execute a shell command with cross-platform encoding support and streaming output.
|
|
360
363
|
|
|
361
364
|
Args:
|
|
362
365
|
command (str): The shell command to execute
|
|
@@ -446,81 +449,95 @@ set PYTHONIOENCODING=utf-8
|
|
|
446
449
|
encoding='utf-8', # 直接指定 UTF-8 编码
|
|
447
450
|
errors='replace', # 处理无法解码的字符
|
|
448
451
|
env=env, # 传递修改后的环境变量
|
|
449
|
-
startupinfo=startupinfo
|
|
452
|
+
startupinfo=startupinfo,
|
|
453
|
+
bufsize=1, # Line buffering for immediate flushing
|
|
454
|
+
universal_newlines=True # Use text mode to handle platform line endings
|
|
450
455
|
)
|
|
451
456
|
|
|
452
457
|
# Safe decoding helper (for binary output)
|
|
453
|
-
def safe_decode(
|
|
454
|
-
if isinstance(
|
|
455
|
-
return
|
|
458
|
+
def safe_decode(text, encoding):
|
|
459
|
+
if isinstance(text, str):
|
|
460
|
+
return text.strip()
|
|
456
461
|
try:
|
|
457
|
-
#
|
|
458
|
-
return
|
|
462
|
+
# Try UTF-8 first
|
|
463
|
+
return text.decode('utf-8').strip()
|
|
459
464
|
except UnicodeDecodeError:
|
|
460
465
|
try:
|
|
461
|
-
#
|
|
462
|
-
return
|
|
466
|
+
# If that fails, try GBK
|
|
467
|
+
return text.decode('gbk').strip()
|
|
463
468
|
except UnicodeDecodeError:
|
|
464
|
-
#
|
|
465
|
-
return
|
|
469
|
+
# Finally use replacement mode
|
|
470
|
+
return text.decode(encoding, errors='replace').strip()
|
|
466
471
|
|
|
467
472
|
output = []
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
473
|
+
# Use direct printing for streaming output, not a Live object
|
|
474
|
+
console.print(f"[bold blue]Running command:[/bold blue] {command}")
|
|
475
|
+
console.print("[bold blue]Output streaming:[/bold blue]")
|
|
476
|
+
|
|
477
|
+
output_queue = queue.Queue()
|
|
478
|
+
|
|
479
|
+
def read_stream(stream, stream_name):
|
|
480
|
+
"""Read data from stream and put in queue"""
|
|
481
|
+
for line in stream:
|
|
482
|
+
line = line.rstrip() if isinstance(line, str) else safe_decode(line, encoding)
|
|
483
|
+
prefix = "[ERROR] " if stream_name == "stderr" else ""
|
|
484
|
+
output_queue.put((stream_name, f"{prefix}{line}"))
|
|
485
|
+
output_queue.put((stream_name, None)) # Mark stream end
|
|
486
|
+
|
|
487
|
+
# Create threads to read stdout and stderr
|
|
488
|
+
stdout_thread = threading.Thread(target=read_stream, args=(process.stdout, "stdout"))
|
|
489
|
+
stderr_thread = threading.Thread(target=read_stream, args=(process.stderr, "stderr"))
|
|
490
|
+
stdout_thread.daemon = True
|
|
491
|
+
stderr_thread.daemon = True
|
|
492
|
+
stdout_thread.start()
|
|
493
|
+
stderr_thread.start()
|
|
494
|
+
|
|
495
|
+
# Track number of active streams
|
|
496
|
+
active_streams = 2
|
|
497
|
+
|
|
498
|
+
# Process output from queue
|
|
499
|
+
while active_streams > 0:
|
|
500
|
+
try:
|
|
501
|
+
stream_name, line = output_queue.get(timeout=0.1)
|
|
502
|
+
if line is None:
|
|
503
|
+
active_streams -= 1
|
|
504
|
+
continue
|
|
505
|
+
|
|
506
|
+
output.append(line)
|
|
507
|
+
# Print each line directly for true streaming output
|
|
508
|
+
if stream_name == "stderr":
|
|
509
|
+
console.print(f"[red]{line}[/red]")
|
|
510
|
+
else:
|
|
511
|
+
console.print(line)
|
|
512
|
+
|
|
513
|
+
except queue.Empty:
|
|
514
|
+
# Check if process is still running
|
|
515
|
+
if process.poll() is not None and active_streams == 2:
|
|
516
|
+
# If process ended but threads are still running, may have no output
|
|
500
517
|
break
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
if remaining_err:
|
|
507
|
-
output.append(f"ERROR: {safe_decode(remaining_err, encoding)}")
|
|
518
|
+
continue
|
|
519
|
+
|
|
520
|
+
# Wait for threads to finish
|
|
521
|
+
stdout_thread.join()
|
|
522
|
+
stderr_thread.join()
|
|
508
523
|
|
|
509
|
-
|
|
524
|
+
# Wait for process to end and get return code
|
|
525
|
+
return_code = process.wait()
|
|
526
|
+
|
|
527
|
+
# Compile results
|
|
528
|
+
result_content = "\n".join(output)
|
|
529
|
+
result_manager.add_result(content=result_content, meta={
|
|
510
530
|
"action": "execute_shell_command",
|
|
511
531
|
"input": {
|
|
512
532
|
"command": command
|
|
513
|
-
}
|
|
533
|
+
},
|
|
534
|
+
"return_code": return_code
|
|
514
535
|
})
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
border_style="blue",
|
|
521
|
-
subtitle=f"Encoding: {encoding} | OS: {sys.platform}"
|
|
522
|
-
)
|
|
523
|
-
)
|
|
536
|
+
|
|
537
|
+
# Show command completion info
|
|
538
|
+
completion_message = f"Command completed with return code: {return_code}"
|
|
539
|
+
style = "green" if return_code == 0 else "red"
|
|
540
|
+
console.print(f"[bold {style}]{escape(completion_message)}[/bold {style}]")
|
|
524
541
|
|
|
525
542
|
except FileNotFoundError:
|
|
526
543
|
result_manager.add_result(content=f"[bold red]Command not found:[/bold red] [yellow]{command}[/yellow]",meta={
|
|
@@ -103,9 +103,7 @@ async def create_chat_completion(
|
|
|
103
103
|
NOTE: Currently we do not support the following features:
|
|
104
104
|
- function_call (Users should implement this by themselves)
|
|
105
105
|
- logit_bias (to be supported by vLLM engine)
|
|
106
|
-
"""
|
|
107
|
-
# async with async_timeout.timeout(TIMEOUT):
|
|
108
|
-
|
|
106
|
+
"""
|
|
109
107
|
generator = await openai_serving_chat.create_chat_completion(body, request)
|
|
110
108
|
if isinstance(generator, ErrorResponse):
|
|
111
109
|
return JSONResponse(
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union, Callable
|
|
2
|
+
from byzerllm.utils.client.types import (
|
|
3
|
+
LLMFunctionCallResponse,
|
|
4
|
+
LLMClassResponse, LLMResponse
|
|
5
|
+
)
|
|
6
|
+
import pydantic
|
|
7
|
+
from byzerllm import ByzerLLM
|
|
8
|
+
from byzerllm.utils.client import LLMResponse
|
|
9
|
+
from byzerllm.utils.types import SingleOutputMeta
|
|
10
|
+
from autocoder.rag.simple_rag import SimpleRAG
|
|
11
|
+
from autocoder.rag.long_context_rag import LongContextRAG
|
|
12
|
+
from loguru import logger
|
|
13
|
+
from byzerllm.utils.langutil import asyncfy_with_semaphore
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class LLWrapper:
|
|
17
|
+
|
|
18
|
+
def __init__(self, llm: ByzerLLM, rag: Union[SimpleRAG, LongContextRAG]):
|
|
19
|
+
self.llm = llm
|
|
20
|
+
self.rag = rag
|
|
21
|
+
|
|
22
|
+
def chat_oai(self,
|
|
23
|
+
conversations,
|
|
24
|
+
tools: List[Union[Callable, str]] = [],
|
|
25
|
+
tool_choice: Optional[Union[Callable, str]] = None,
|
|
26
|
+
execute_tool: bool = False,
|
|
27
|
+
impl_func: Optional[Callable] = None,
|
|
28
|
+
execute_impl_func: bool = False,
|
|
29
|
+
impl_func_params: Optional[Dict[str, Any]] = None,
|
|
30
|
+
func_params: Optional[Dict[str, Any]] = None,
|
|
31
|
+
response_class: Optional[Union[pydantic.BaseModel, str]] = None,
|
|
32
|
+
response_after_chat: Optional[Union[pydantic.BaseModel, str]] = False,
|
|
33
|
+
enable_default_sys_message: bool = True,
|
|
34
|
+
model: Optional[str] = None,
|
|
35
|
+
role_mapping=None,
|
|
36
|
+
llm_config: Dict[str, Any] = {},
|
|
37
|
+
only_return_prompt: bool = False,
|
|
38
|
+
extra_request_params: Dict[str, Any] = {}
|
|
39
|
+
) -> Union[List[LLMResponse], List[LLMFunctionCallResponse], List[LLMClassResponse]]:
|
|
40
|
+
res, contexts = self.rag.stream_chat_oai(
|
|
41
|
+
conversations, llm_config=llm_config, extra_request_params=extra_request_params)
|
|
42
|
+
metadata = {"request_id":""}
|
|
43
|
+
output = ""
|
|
44
|
+
for chunk in res:
|
|
45
|
+
output += chunk[0]
|
|
46
|
+
metadata["input_tokens_count"] = chunk[1].input_tokens_count
|
|
47
|
+
metadata["generated_tokens_count"] = chunk[1].generated_tokens_count
|
|
48
|
+
metadata["reasoning_content"] = chunk[1].reasoning_content
|
|
49
|
+
metadata["finish_reason"] = chunk[1].finish_reason
|
|
50
|
+
metadata["first_token_time"] = chunk[1].first_token_time
|
|
51
|
+
|
|
52
|
+
return [LLMResponse(output=output, metadata=metadata, input="")]
|
|
53
|
+
|
|
54
|
+
def stream_chat_oai(self, conversations,
|
|
55
|
+
model: Optional[str] = None,
|
|
56
|
+
role_mapping=None,
|
|
57
|
+
delta_mode=False,
|
|
58
|
+
llm_config: Dict[str, Any] = {},
|
|
59
|
+
extra_request_params: Dict[str, Any] = {}
|
|
60
|
+
):
|
|
61
|
+
res, contexts = self.rag.stream_chat_oai(
|
|
62
|
+
conversations, llm_config=llm_config, extra_request_params=extra_request_params)
|
|
63
|
+
|
|
64
|
+
if isinstance(res, tuple):
|
|
65
|
+
for (t, metadata) in res:
|
|
66
|
+
yield (t, SingleOutputMeta(
|
|
67
|
+
input_tokens_count=metadata.get("input_tokens_count", 0),
|
|
68
|
+
generated_tokens_count=metadata.get(
|
|
69
|
+
"generated_tokens_count", 0),
|
|
70
|
+
reasoning_content=metadata.get("reasoning_content", ""),
|
|
71
|
+
finish_reason=metadata.get("finish_reason", "stop"),
|
|
72
|
+
first_token_time=metadata.get("first_token_time", 0)
|
|
73
|
+
))
|
|
74
|
+
else:
|
|
75
|
+
for t in res:
|
|
76
|
+
yield (t, SingleOutputMeta(0, 0))
|
|
77
|
+
|
|
78
|
+
async def async_stream_chat_oai(self, conversations,
|
|
79
|
+
model: Optional[str] = None,
|
|
80
|
+
role_mapping=None,
|
|
81
|
+
delta_mode=False,
|
|
82
|
+
llm_config: Dict[str, Any] = {},
|
|
83
|
+
extra_request_params: Dict[str, Any] = {}
|
|
84
|
+
):
|
|
85
|
+
res, contexts = await asyncfy_with_semaphore(lambda: self.rag.stream_chat_oai(conversations, llm_config=llm_config, extra_request_params=extra_request_params))()
|
|
86
|
+
# res,contexts = await self.llm.async_stream_chat_oai(conversations,llm_config=llm_config)
|
|
87
|
+
for t in res:
|
|
88
|
+
yield t
|
|
89
|
+
|
|
90
|
+
def __getattr__(self, name):
|
|
91
|
+
return getattr(self.llm, name)
|