auto-coder 0.1.273__tar.gz → 0.1.275__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.273 → auto_coder-0.1.275}/PKG-INFO +1 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/auto_coder.egg-info/PKG-INFO +1 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/auto_coder_rag.py +30 -5
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/auto_coder_runner.py +1 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/chat_auto_coder.py +3 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/commands/auto_command.py +3 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/__init__.py +1 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_merge.py +1 -2
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_merge_diff.py +1 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_merge_editblock.py +2 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_merge_strict_diff.py +3 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/command_generator.py +3 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/git_utils.py +7 -3
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/shells.py +23 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/index.py +81 -2
- auto_coder-0.1.275/src/autocoder/rag/cache/base_cache.py +29 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/cache/byzer_storage_cache.py +74 -47
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/utils.py +1 -1
- auto_coder-0.1.275/src/autocoder/version.py +1 -0
- auto_coder-0.1.273/src/autocoder/rag/cache/base_cache.py +0 -14
- auto_coder-0.1.273/src/autocoder/version.py +0 -1
- {auto_coder-0.1.273 → auto_coder-0.1.275}/LICENSE +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/README.md +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/setup.cfg +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/setup.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/auto_coder.egg-info/SOURCES.txt +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_planner.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.273 → auto_coder-0.1.275}/tests/test_symbols_utils.py +0 -0
|
@@ -17,6 +17,7 @@ import shlex
|
|
|
17
17
|
from rich.console import Console
|
|
18
18
|
from rich.table import Table
|
|
19
19
|
import os
|
|
20
|
+
import hashlib
|
|
20
21
|
from loguru import logger
|
|
21
22
|
import asyncio
|
|
22
23
|
from datetime import datetime
|
|
@@ -32,6 +33,21 @@ if platform.system() == "Windows":
|
|
|
32
33
|
init()
|
|
33
34
|
|
|
34
35
|
|
|
36
|
+
def generate_unique_name_from_path(path: str) -> str:
|
|
37
|
+
"""
|
|
38
|
+
Generate a unique name (MD5 hash) from a path after normalizing it.
|
|
39
|
+
For Linux/Unix systems, trailing path separators are removed.
|
|
40
|
+
"""
|
|
41
|
+
if not path:
|
|
42
|
+
return ""
|
|
43
|
+
|
|
44
|
+
# Normalize the path (resolve absolute path and remove trailing separators)
|
|
45
|
+
normalized_path = os.path.normpath(os.path.abspath(path))
|
|
46
|
+
|
|
47
|
+
# Generate MD5 hash from the normalized path
|
|
48
|
+
return hashlib.md5(normalized_path.encode("utf-8")).hexdigest()
|
|
49
|
+
|
|
50
|
+
|
|
35
51
|
def initialize_system(args):
|
|
36
52
|
if args.product_mode == "lite":
|
|
37
53
|
return
|
|
@@ -491,6 +507,10 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
491
507
|
}
|
|
492
508
|
)
|
|
493
509
|
|
|
510
|
+
# Generate unique name for RAG build if doc_dir exists
|
|
511
|
+
if server_args.doc_dir:
|
|
512
|
+
auto_coder_args.rag_build_name = generate_unique_name_from_path(server_args.doc_dir)
|
|
513
|
+
logger.info(f"Generated RAG build name: {auto_coder_args.rag_build_name}")
|
|
494
514
|
|
|
495
515
|
if auto_coder_args.enable_hybrid_index and args.product_mode == "lite":
|
|
496
516
|
raise Exception("Hybrid index is not supported in lite mode")
|
|
@@ -500,7 +520,7 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
500
520
|
try:
|
|
501
521
|
from byzerllm.apps.byzer_storage.simple_api import ByzerStorage
|
|
502
522
|
|
|
503
|
-
storage = ByzerStorage("byzerai_store", "rag",
|
|
523
|
+
storage = ByzerStorage("byzerai_store", "rag", auto_coder_args.rag_build_name)
|
|
504
524
|
storage.retrieval.cluster_info("byzerai_store")
|
|
505
525
|
except Exception as e:
|
|
506
526
|
logger.error(
|
|
@@ -611,6 +631,7 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
611
631
|
|
|
612
632
|
if server_args.doc_dir:
|
|
613
633
|
auto_coder_args.rag_type = "simple"
|
|
634
|
+
auto_coder_args.rag_build_name = generate_unique_name_from_path(server_args.doc_dir)
|
|
614
635
|
rag = RAGFactory.get_rag(
|
|
615
636
|
llm=llm,
|
|
616
637
|
args=auto_coder_args,
|
|
@@ -618,6 +639,7 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
618
639
|
tokenizer_path=server_args.tokenizer_path,
|
|
619
640
|
)
|
|
620
641
|
else:
|
|
642
|
+
auto_coder_args.rag_build_name = generate_unique_name_from_path("")
|
|
621
643
|
rag = RAGFactory.get_rag(llm=llm, args=auto_coder_args, path="")
|
|
622
644
|
|
|
623
645
|
llm_wrapper = LLWrapper(llm=llm, rag=rag)
|
|
@@ -636,10 +658,7 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
636
658
|
logger.warning(f"Failed to save service info: {str(e)}")
|
|
637
659
|
|
|
638
660
|
serve(llm=llm_wrapper, args=server_args)
|
|
639
|
-
elif args.command == "build_hybrid_index":
|
|
640
|
-
if not args.quick:
|
|
641
|
-
initialize_system()
|
|
642
|
-
|
|
661
|
+
elif args.command == "build_hybrid_index":
|
|
643
662
|
auto_coder_args = AutoCoderArgs(
|
|
644
663
|
**{
|
|
645
664
|
arg: getattr(args, arg)
|
|
@@ -648,6 +667,11 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
648
667
|
}
|
|
649
668
|
)
|
|
650
669
|
|
|
670
|
+
# Generate unique name for RAG build if doc_dir exists
|
|
671
|
+
if args.doc_dir:
|
|
672
|
+
auto_coder_args.rag_build_name = generate_unique_name_from_path(args.doc_dir)
|
|
673
|
+
logger.info(f"Generated RAG build name: {auto_coder_args.rag_build_name}")
|
|
674
|
+
|
|
651
675
|
auto_coder_args.enable_hybrid_index = True
|
|
652
676
|
auto_coder_args.rag_type = "simple"
|
|
653
677
|
|
|
@@ -675,6 +699,7 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
675
699
|
return
|
|
676
700
|
llm.setup_default_emb_model_name("emb")
|
|
677
701
|
|
|
702
|
+
auto_coder_args.rag_build_name = generate_unique_name_from_path(args.doc_dir)
|
|
678
703
|
rag = RAGFactory.get_rag(
|
|
679
704
|
llm=llm,
|
|
680
705
|
args=auto_coder_args,
|
|
@@ -1384,7 +1384,7 @@ def commit(query: str):
|
|
|
1384
1384
|
md5 = hashlib.md5(file_content.encode("utf-8")).hexdigest()
|
|
1385
1385
|
file_name = os.path.basename(execute_file)
|
|
1386
1386
|
commit_result = git_utils.commit_changes(
|
|
1387
|
-
".", f"
|
|
1387
|
+
".", f"{commit_message}\nauto_coder_{file_name}_{md5}"
|
|
1388
1388
|
)
|
|
1389
1389
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
1390
1390
|
if commit_message:
|
|
@@ -309,6 +309,9 @@ def main():
|
|
|
309
309
|
text = voice_input()
|
|
310
310
|
new_prompt = "/coding " + text
|
|
311
311
|
|
|
312
|
+
elif user_input.startswith("/clear") or user_input.startswith("/cls"):
|
|
313
|
+
print("\033c")
|
|
314
|
+
|
|
312
315
|
elif user_input.startswith("/add_files"):
|
|
313
316
|
args = user_input[len("/add_files"):].strip().split()
|
|
314
317
|
add_files(args)
|
|
@@ -175,6 +175,7 @@ class CommandAutoTuner:
|
|
|
175
175
|
Python版本: {{ env_info.python_version }}
|
|
176
176
|
终端类型: {{ env_info.shell_type }}
|
|
177
177
|
终端编码: {{ env_info.shell_encoding }}
|
|
178
|
+
当前用户: {{ current_user }}
|
|
178
179
|
|
|
179
180
|
{%- if shell_type %}
|
|
180
181
|
脚本类型:{{ shell_type }}
|
|
@@ -284,7 +285,8 @@ class CommandAutoTuner:
|
|
|
284
285
|
"shell_type": shell_type,
|
|
285
286
|
"shell_encoding": shells.get_terminal_encoding(),
|
|
286
287
|
"conversation_safe_zone_tokens": self.args.conversation_prune_safe_zone_tokens,
|
|
287
|
-
"os_distribution": shells.get_os_distribution()
|
|
288
|
+
"os_distribution": shells.get_os_distribution(),
|
|
289
|
+
"current_user": shells.get_current_username()
|
|
288
290
|
}
|
|
289
291
|
|
|
290
292
|
@byzerllm.prompt()
|
|
@@ -320,6 +320,7 @@ class AutoCoderArgs(pydantic.BaseModel):
|
|
|
320
320
|
|
|
321
321
|
monitor_mode: bool = False
|
|
322
322
|
enable_hybrid_index: bool = False
|
|
323
|
+
rag_build_name: Optional[str] = None
|
|
323
324
|
disable_auto_window: bool = False
|
|
324
325
|
filter_batch_size: Optional[int] = 5
|
|
325
326
|
disable_segment_reorder: bool = False
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
import os
|
|
3
2
|
from byzerllm.utils.client import code_utils
|
|
4
3
|
from autocoder.common import AutoCoderArgs, git_utils
|
|
@@ -197,5 +196,5 @@ class CodeAutoMerge:
|
|
|
197
196
|
|
|
198
197
|
self.printer.print_in_terminal("files_merged", total=total)
|
|
199
198
|
if not force_skip_git and not self.args.skip_commit:
|
|
200
|
-
commit_result = git_utils.commit_changes(self.args.source_dir, f"
|
|
199
|
+
commit_result = git_utils.commit_changes(self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}_{md5}")
|
|
201
200
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
@@ -579,7 +579,7 @@ class CodeAutoMergeDiff:
|
|
|
579
579
|
|
|
580
580
|
self.printer.print_in_terminal("files_merged_total", total=total)
|
|
581
581
|
if not force_skip_git and not self.args.skip_commit:
|
|
582
|
-
commit_result = git_utils.commit_changes(self.args.source_dir, f"
|
|
582
|
+
commit_result = git_utils.commit_changes(self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}_{md5}")
|
|
583
583
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
584
584
|
else:
|
|
585
585
|
# Print edits for review
|
|
@@ -425,7 +425,8 @@ class CodeAutoMergeEditBlock:
|
|
|
425
425
|
if not force_skip_git and not self.args.skip_commit:
|
|
426
426
|
try:
|
|
427
427
|
commit_result = git_utils.commit_changes(
|
|
428
|
-
self.args.source_dir,
|
|
428
|
+
self.args.source_dir,
|
|
429
|
+
f"{self.args.query}\nauto_coder_{file_name}_{md5}",
|
|
429
430
|
)
|
|
430
431
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
431
432
|
except Exception as e:
|
{auto_coder-0.1.273 → auto_coder-0.1.275}/src/autocoder/common/code_auto_merge_strict_diff.py
RENAMED
|
@@ -285,7 +285,9 @@ class CodeAutoMergeStrictDiff:
|
|
|
285
285
|
|
|
286
286
|
self.printer.print_in_terminal("files_merged_total", total=total)
|
|
287
287
|
if not force_skip_git and not self.args.skip_commit:
|
|
288
|
-
commit_result = git_utils.commit_changes(
|
|
288
|
+
commit_result = git_utils.commit_changes(
|
|
289
|
+
self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}_{md5}"
|
|
290
|
+
)
|
|
289
291
|
git_utils.print_commit_info(commit_result=commit_result)
|
|
290
292
|
else:
|
|
291
293
|
# Print diff blocks for review
|
|
@@ -16,6 +16,7 @@ def _generate_shell_script(user_input: str) -> str:
|
|
|
16
16
|
Python版本: {{ env_info.python_version }}
|
|
17
17
|
终端类型: {{ env_info.shell_type }}
|
|
18
18
|
终端编码: {{ env_info.shell_encoding }}
|
|
19
|
+
当前用户: {{ current_user }}
|
|
19
20
|
|
|
20
21
|
{%- if shell_type %}
|
|
21
22
|
脚本类型:{{ shell_type }}
|
|
@@ -51,7 +52,8 @@ def _generate_shell_script(user_input: str) -> str:
|
|
|
51
52
|
"env_info": env_info,
|
|
52
53
|
"shell_type": shell_type,
|
|
53
54
|
"shell_encoding": shells.get_terminal_encoding(),
|
|
54
|
-
"os_distribution": shells.get_os_distribution()
|
|
55
|
+
"os_distribution": shells.get_os_distribution(),
|
|
56
|
+
"current_user": shells.get_current_username()
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
|
|
@@ -118,7 +118,8 @@ def revert_changes(repo_path: str, message: str) -> bool:
|
|
|
118
118
|
return False
|
|
119
119
|
|
|
120
120
|
# 通过message定位到commit_hash
|
|
121
|
-
|
|
121
|
+
# --grep 默认只搜索第一行 -F 参数将搜索模式视为固定字符串而非正则表达式
|
|
122
|
+
commit = repo.git.log("--all", f"--grep={message}", "-F", "--format=%H", "-n", "1")
|
|
122
123
|
if not commit:
|
|
123
124
|
logger.warning(f"No commit found with message: {message}")
|
|
124
125
|
return False
|
|
@@ -170,7 +171,8 @@ def revert_change(repo_path: str, message: str) -> bool:
|
|
|
170
171
|
repo = get_repo(repo_path)
|
|
171
172
|
if repo is None:
|
|
172
173
|
return False
|
|
173
|
-
|
|
174
|
+
# --grep 默认只搜索第一行 -F 参数将搜索模式视为固定字符串而非正则表达式
|
|
175
|
+
commit = repo.git.log("--all", f"--grep={message}", "-F", "--format=%H", "-n", "1")
|
|
174
176
|
if commit:
|
|
175
177
|
repo.git.revert(commit, no_edit=True)
|
|
176
178
|
logger.info(f"Reverted changes with commit message: {message}")
|
|
@@ -618,7 +620,9 @@ def generate_commit_message(changes_report: str) -> str:
|
|
|
618
620
|
def get_commit_by_message(repo_path: str, message: str):
|
|
619
621
|
repo = get_repo(repo_path)
|
|
620
622
|
try:
|
|
621
|
-
commit_hash = repo.git.log(
|
|
623
|
+
commit_hash = repo.git.log(
|
|
624
|
+
"--all", f"--grep={message}", "-F", "--format=%H", "-n", "1"
|
|
625
|
+
)
|
|
622
626
|
if not commit_hash:
|
|
623
627
|
return None
|
|
624
628
|
return repo.commit(commit_hash.strip())
|
|
@@ -10,6 +10,7 @@ from rich.console import Console
|
|
|
10
10
|
from rich.panel import Panel
|
|
11
11
|
from rich.text import Text
|
|
12
12
|
from rich.live import Live
|
|
13
|
+
import getpass
|
|
13
14
|
|
|
14
15
|
from autocoder.common.result_manager import ResultManager
|
|
15
16
|
|
|
@@ -547,4 +548,25 @@ set PYTHONIOENCODING=utf-8
|
|
|
547
548
|
try:
|
|
548
549
|
os.unlink(temp_file.name)
|
|
549
550
|
except Exception:
|
|
550
|
-
pass
|
|
551
|
+
pass
|
|
552
|
+
|
|
553
|
+
def get_current_username():
|
|
554
|
+
"""
|
|
555
|
+
Get the current username across different operating systems.
|
|
556
|
+
|
|
557
|
+
Returns:
|
|
558
|
+
str: The current username.
|
|
559
|
+
"""
|
|
560
|
+
try:
|
|
561
|
+
# getpass.getuser() works on Windows, macOS, and Linux
|
|
562
|
+
username = getpass.getuser()
|
|
563
|
+
return username
|
|
564
|
+
except Exception:
|
|
565
|
+
# Fallback methods if getpass.getuser() fails
|
|
566
|
+
try:
|
|
567
|
+
if platform.system() == 'Windows':
|
|
568
|
+
return os.environ.get('USERNAME', '')
|
|
569
|
+
else: # macOS/Linux
|
|
570
|
+
return os.environ.get('USER', '')
|
|
571
|
+
except Exception:
|
|
572
|
+
return ''
|
|
@@ -157,6 +157,78 @@ class IndexManager:
|
|
|
157
157
|
3. 用途的长度不能超过100字符
|
|
158
158
|
4. 导入语句的分隔符为^^
|
|
159
159
|
|
|
160
|
+
一些根据指定条件需要遵守的特殊规则:
|
|
161
|
+
- 当你遇到文件.jsp文件, 导入语句中需要包含 jsp:include 标签中的文件
|
|
162
|
+
|
|
163
|
+
下面是一段示例:
|
|
164
|
+
|
|
165
|
+
## 输入
|
|
166
|
+
下列是文件 /test.py 的源码:
|
|
167
|
+
|
|
168
|
+
import os
|
|
169
|
+
import time
|
|
170
|
+
from loguru import logger
|
|
171
|
+
import byzerllm
|
|
172
|
+
|
|
173
|
+
a = ""
|
|
174
|
+
|
|
175
|
+
@byzerllm.prompt(render="jinja")
|
|
176
|
+
def auto_implement_function_template(instruction:str, content:str)->str:
|
|
177
|
+
|
|
178
|
+
## 输出
|
|
179
|
+
用途:主要用于提供自动实现函数模板的功能。
|
|
180
|
+
函数:auto_implement_function_template
|
|
181
|
+
变量:a
|
|
182
|
+
类:
|
|
183
|
+
导入语句:import os^^import time^^from loguru import logger^^import byzerllm
|
|
184
|
+
|
|
185
|
+
现在,让我们开始一个新的任务:
|
|
186
|
+
|
|
187
|
+
## 输入
|
|
188
|
+
下列是文件 {{ path }} 的源码:
|
|
189
|
+
|
|
190
|
+
{{ code }}
|
|
191
|
+
|
|
192
|
+
## 输出
|
|
193
|
+
"""
|
|
194
|
+
|
|
195
|
+
@byzerllm.prompt()
|
|
196
|
+
def jsp_get_all_file_symbols(self, path: str, code: str) -> str:
|
|
197
|
+
"""
|
|
198
|
+
你的目标是从给定的jsp代码中获取代码里的符号,需要获取的符号类型包括:
|
|
199
|
+
|
|
200
|
+
1. 函数
|
|
201
|
+
2. 类
|
|
202
|
+
3. 变量
|
|
203
|
+
4. 所有导入语句
|
|
204
|
+
|
|
205
|
+
如果没有任何符号,返回空字符串就行。
|
|
206
|
+
如果有符号,按如下格式返回:
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
用途:主要用于提供自动实现函数模板的功能。
|
|
210
|
+
{符号类型}: {符号名称}, {符号名称}, ...
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
注意:
|
|
214
|
+
1. 直接输出结果,不要尝试使用任何代码
|
|
215
|
+
2. 不要分析代码的内容和目的
|
|
216
|
+
3. 用途的长度不能超过100字符
|
|
217
|
+
4. 导入语句的分隔符为^^
|
|
218
|
+
5. 导入语句中需要包含 jsp:include 整个标签,类似 <jsp:include page="/jspf/prelude.jspf" />
|
|
219
|
+
6. 导入语句中需要包含 form 标签,类似 <form name="ActionPlanLinkedForm" action="/ri/ActionPlanController.do" method="post">
|
|
220
|
+
7. 导入语句中需要包含 有 src 属性的 script 标签。比如 <script language="script" src="xxx">
|
|
221
|
+
8. 导入语句中需要包含 有 src 属性的 link 标签。 比如 <link rel="stylesheet" type="text/css" href="/ri/ui/styles/xptheme.css">
|
|
222
|
+
9. 导入语句中需要包含 ajax 请求里的url,比如 $.ajax({
|
|
223
|
+
type : "post",
|
|
224
|
+
url : "admWorkingDay!updateAdmWorkingDayList.action", 中,那么对应的为 <ajax method="post" url="admWorkingDay!updateAdmWorkingDayList.action">
|
|
225
|
+
10. 导入语句中需要包含超连接,比如 <a href="admRiskLimits!queryAdmRiskLimitsById.action?admRiskLimits.id=${fn:escapeXml(item.id)}">${fn:escapeXml(item.classification)}, 对应的为 <a href="admRiskLimits!queryAdmRiskLimitsById.action"}
|
|
226
|
+
11. 导入语句中需要包含一些js函数里的值,比如 window.onbeforeunload = function() {
|
|
227
|
+
var actionType = document.ap_ActionPlanForm.action.value;
|
|
228
|
+
if(typeof(window.opener.reloadApCount)!="undefined"&&(actionType&&actionType!='Discard')){
|
|
229
|
+
}
|
|
230
|
+
} 对应为 <window.onbeforeunload url="from 表单名字为ap_ActionPlanForm的action的值">
|
|
231
|
+
|
|
160
232
|
下面是一段示例:
|
|
161
233
|
|
|
162
234
|
## 输入
|
|
@@ -291,8 +363,15 @@ class IndexManager:
|
|
|
291
363
|
symbols = "\n".join(symbols)
|
|
292
364
|
else:
|
|
293
365
|
meta_holder = byzerllm.MetaHolder()
|
|
294
|
-
|
|
295
|
-
|
|
366
|
+
ext = os.path.splitext(file_path)[1].lower()
|
|
367
|
+
## 需要有特殊prompt
|
|
368
|
+
if ext == ".jsp":
|
|
369
|
+
symbols = self.jsp_get_all_file_symbols.with_llm(
|
|
370
|
+
self.index_llm).with_meta(meta_holder).run(source.module_name, source_code)
|
|
371
|
+
else:
|
|
372
|
+
symbols = self.get_all_file_symbols.with_llm(
|
|
373
|
+
self.index_llm).with_meta(meta_holder).run(source.module_name, source_code)
|
|
374
|
+
|
|
296
375
|
time.sleep(self.anti_quota_limit)
|
|
297
376
|
|
|
298
377
|
if meta_holder.get_meta():
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from pydantic import BaseModel
|
|
2
|
+
from typing import List, Tuple,Dict,Optional,Any
|
|
3
|
+
from abc import ABC, abstractmethod
|
|
4
|
+
|
|
5
|
+
# New model class for file information
|
|
6
|
+
class FileInfo(BaseModel):
|
|
7
|
+
file_path: str
|
|
8
|
+
relative_path: str
|
|
9
|
+
modify_time: float
|
|
10
|
+
file_md5: str
|
|
11
|
+
|
|
12
|
+
# New model class for cache items
|
|
13
|
+
class CacheItem(BaseModel):
|
|
14
|
+
file_path: str
|
|
15
|
+
relative_path: str
|
|
16
|
+
content: List[Dict[str, Any]] # Serialized SourceCode objects
|
|
17
|
+
modify_time: float
|
|
18
|
+
md5: str
|
|
19
|
+
|
|
20
|
+
class DeleteEvent(BaseModel):
|
|
21
|
+
file_paths: List[str]
|
|
22
|
+
|
|
23
|
+
class AddOrUpdateEvent(BaseModel):
|
|
24
|
+
file_infos: List[FileInfo]
|
|
25
|
+
|
|
26
|
+
class BaseCacheManager(ABC):
|
|
27
|
+
@abstractmethod
|
|
28
|
+
def get_cache(self,options:Optional[Dict[str,Any]]=None) -> Dict[str, Dict]:
|
|
29
|
+
pass
|